From aa7578beac473bd3d7e60c2cf35c1a7539249f55 Mon Sep 17 00:00:00 2001 From: leancloud-bot Date: Mon, 25 Sep 2023 11:05:15 +0000 Subject: [PATCH] Deploy docs and demos to Github Pages [skip ci] --- demo/leaderboard/index.html | 67 + demo/leaderboard/leaderboard.css | 167 + demo/leaderboard/leaderboard.js | 185 + demo/live-query/app.js | 304 + demo/live-query/index.html | 168 + demo/settings/index.html | 76 + dist/av-core-min.js | 8 + dist/av-core-min.js.map | 1 + dist/av-core.js | 25183 +++++++++ dist/av-core.js.map | 1 + dist/av-live-query-core-min.js | 24 + dist/av-live-query-core-min.js.map | 1 + dist/av-live-query-core.js | 42416 +++++++++++++++ dist/av-live-query-core.js.map | 1 + dist/av-live-query-min.js | 38 + dist/av-live-query-min.js.map | 1 + dist/av-live-query-weapp-min.js | 24 + dist/av-live-query-weapp-min.js.map | 1 + dist/av-live-query-weapp.js | 44010 ++++++++++++++++ dist/av-live-query-weapp.js.map | 1 + dist/av-live-query.js | 45865 +++++++++++++++++ dist/av-live-query.js.map | 1 + dist/av-min.js | 22 + dist/av-min.js.map | 1 + dist/av-weapp-min.js | 8 + dist/av-weapp-min.js.map | 1 + dist/av-weapp.js | 27605 ++++++++++ dist/av-weapp.js.map | 1 + dist/av.js | 28817 +++++++++++ dist/av.js.map | 1 + docs/AV.ACL.html | 2093 + docs/AV.Captcha.html | 1495 + docs/AV.Cloud.html | 1936 + docs/AV.Conversation.html | 1955 + docs/AV.Error.html | 3350 ++ docs/AV.File.html | 3466 ++ docs/AV.Friendship.html | 969 + docs/AV.GeoPoint.html | 859 + docs/AV.InboxQuery.html | 803 + docs/AV.Insight.JobQuery.html | 714 + docs/AV.Insight.html | 525 + docs/AV.Leaderboard.html | 4422 ++ docs/AV.LiveQuery.html | 1225 + docs/AV.Object.html | 6807 +++ docs/AV.Push.html | 632 + docs/AV.Query.html | 8576 +++ docs/AV.Relation.html | 942 + docs/AV.Role.html | 732 + docs/AV.SearchQuery.html | 2383 + docs/AV.SearchSortBuilder.html | 905 + docs/AV.Status.html | 2105 + docs/AV.User.html | 13902 +++++ docs/AV.debug.html | 298 + docs/AV.html | 2394 + docs/Statistic.html | 380 + docs/acl.js.html | 321 + docs/av.js.html | 463 + docs/captcha.js.html | 207 + docs/cloudfunction.js.html | 214 + docs/conversation.js.html | 236 + docs/error.js.html | 415 + docs/event.js.html | 209 + docs/file.js.html | 744 + docs/friendship.js.html | 189 + docs/geopoint.js.html | 232 + docs/global.html | 1404 + docs/index.html | 133 + docs/index.js.html | 116 + docs/init.js.html | 277 + docs/insight.js.html | 197 + docs/leaderboard.js.html | 533 + docs/live-query.js.html | 232 + docs/object.js.html | 1833 + docs/op.js.html | 768 + docs/push.js.html | 118 + docs/query.js.html | 1208 + docs/relation.js.html | 180 + docs/request.js.html | 254 + docs/role.js.html | 192 + docs/scripts/linenumber.js | 25 + docs/scripts/prettify/Apache-License-2.0.txt | 202 + docs/scripts/prettify/lang-css.js | 2 + docs/scripts/prettify/prettify.js | 28 + docs/search.js.html | 411 + docs/status.js.html | 488 + docs/styles/jsdoc.css | 652 + docs/styles/prettify.css | 79 + docs/uploader_qiniu.js.html | 389 + docs/user.js.html | 1995 + 89 files changed, 293813 insertions(+) create mode 100644 demo/leaderboard/index.html create mode 100644 demo/leaderboard/leaderboard.css create mode 100644 demo/leaderboard/leaderboard.js create mode 100644 demo/live-query/app.js create mode 100644 demo/live-query/index.html create mode 100644 demo/settings/index.html create mode 100644 dist/av-core-min.js create mode 100644 dist/av-core-min.js.map create mode 100644 dist/av-core.js create mode 100644 dist/av-core.js.map create mode 100644 dist/av-live-query-core-min.js create mode 100644 dist/av-live-query-core-min.js.map create mode 100644 dist/av-live-query-core.js create mode 100644 dist/av-live-query-core.js.map create mode 100644 dist/av-live-query-min.js create mode 100644 dist/av-live-query-min.js.map create mode 100644 dist/av-live-query-weapp-min.js create mode 100644 dist/av-live-query-weapp-min.js.map create mode 100644 dist/av-live-query-weapp.js create mode 100644 dist/av-live-query-weapp.js.map create mode 100644 dist/av-live-query.js create mode 100644 dist/av-live-query.js.map create mode 100644 dist/av-min.js create mode 100644 dist/av-min.js.map create mode 100644 dist/av-weapp-min.js create mode 100644 dist/av-weapp-min.js.map create mode 100644 dist/av-weapp.js create mode 100644 dist/av-weapp.js.map create mode 100644 dist/av.js create mode 100644 dist/av.js.map create mode 100644 docs/AV.ACL.html create mode 100644 docs/AV.Captcha.html create mode 100644 docs/AV.Cloud.html create mode 100644 docs/AV.Conversation.html create mode 100644 docs/AV.Error.html create mode 100644 docs/AV.File.html create mode 100644 docs/AV.Friendship.html create mode 100644 docs/AV.GeoPoint.html create mode 100644 docs/AV.InboxQuery.html create mode 100644 docs/AV.Insight.JobQuery.html create mode 100644 docs/AV.Insight.html create mode 100644 docs/AV.Leaderboard.html create mode 100644 docs/AV.LiveQuery.html create mode 100644 docs/AV.Object.html create mode 100644 docs/AV.Push.html create mode 100644 docs/AV.Query.html create mode 100644 docs/AV.Relation.html create mode 100644 docs/AV.Role.html create mode 100644 docs/AV.SearchQuery.html create mode 100644 docs/AV.SearchSortBuilder.html create mode 100644 docs/AV.Status.html create mode 100644 docs/AV.User.html create mode 100644 docs/AV.debug.html create mode 100644 docs/AV.html create mode 100644 docs/Statistic.html create mode 100644 docs/acl.js.html create mode 100644 docs/av.js.html create mode 100644 docs/captcha.js.html create mode 100644 docs/cloudfunction.js.html create mode 100644 docs/conversation.js.html create mode 100644 docs/error.js.html create mode 100644 docs/event.js.html create mode 100644 docs/file.js.html create mode 100644 docs/friendship.js.html create mode 100644 docs/geopoint.js.html create mode 100644 docs/global.html create mode 100644 docs/index.html create mode 100644 docs/index.js.html create mode 100644 docs/init.js.html create mode 100644 docs/insight.js.html create mode 100644 docs/leaderboard.js.html create mode 100644 docs/live-query.js.html create mode 100644 docs/object.js.html create mode 100644 docs/op.js.html create mode 100644 docs/push.js.html create mode 100644 docs/query.js.html create mode 100644 docs/relation.js.html create mode 100644 docs/request.js.html create mode 100644 docs/role.js.html create mode 100644 docs/scripts/linenumber.js create mode 100644 docs/scripts/prettify/Apache-License-2.0.txt create mode 100644 docs/scripts/prettify/lang-css.js create mode 100644 docs/scripts/prettify/prettify.js create mode 100644 docs/search.js.html create mode 100644 docs/status.js.html create mode 100644 docs/styles/jsdoc.css create mode 100644 docs/styles/prettify.css create mode 100644 docs/uploader_qiniu.js.html create mode 100644 docs/user.js.html diff --git a/demo/leaderboard/index.html b/demo/leaderboard/index.html new file mode 100644 index 000000000..6631fe8f2 --- /dev/null +++ b/demo/leaderboard/index.html @@ -0,0 +1,67 @@ + + + + + LeanCloud Leaderboard Demo + + + + + + + +
+
+
+ + +
+   + +
+
+
+
+
+ + {{ score || '🎲' }} + + + 新纪录 + +
+
+ +
  • + {{ranking.rank + 1}}.  + {{ranking.user.username}} + (你) + + + + +
  • +
    + +
    +
    下次重置时间:{{ nextResetAt }} + + +
    +
    + Powered by LeanCloud + + 源码 + + {{user.username}}(注销 +
    +
    + +
    + + + + + + + diff --git a/demo/leaderboard/leaderboard.css b/demo/leaderboard/leaderboard.css new file mode 100644 index 000000000..5bfaccdd9 --- /dev/null +++ b/demo/leaderboard/leaderboard.css @@ -0,0 +1,167 @@ +body, +html { + background: linear-gradient(320deg, #581b98, #9c1de7); + height: 100vh; + width: 100vw; + margin: 0; + color: white; + font-family: radikal, sans-serif; +} + +a, +a:active, +a:visited { + color: white; + text-decoration: none; +} + +#app { + height: 100%; + display: flex; + flex-direction: column; +} + +[v-cloak] { + display: none; +} + +.center { + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + position: fixed; + z-index: 1000; +} + +#dice-wrapper { + height: 8.5rem; + width: 8.5rem; +} + +.dice { + background: #fefefe; + border-radius: 10px; + box-shadow: 4px 3px 12px 2px #333; + height: 100%; + width: 100%; + cursor: pointer; + display: inline-block; + text-align: center; +} + +.dice .score { + color: black; + line-height: 8.5rem; + font-size: 4rem; +} + +.new-high-score { + position: absolute; + top: -2em; + width: 100%; + left: 0; +} + +.ranking-list { + height: 100%; + flex: 1; + margin: 0; + padding: 0; + list-style: none; + display: flex; + flex-direction: column; + font-size: 1.4em; + overflow: auto; +} + +.ranking { + background: linear-gradient(320deg, #581b98, #9c1de7); + height: 100%; + max-height: 8.333%; + min-height: 44px; + flex: 1; + display: flex; + align-items: center; + padding: 0 10px; + transition: all 1s; + position: relative; +} + +.ranking-list-move { + transition: transform 1s; +} + +.ranking-list-enter, +.ranking-list-leave-to { + opacity: 0; + transform: translateY(-30px); +} +.ranking-list-leave-active { + position: absolute; +} + +.ranking:nth-child(1) { + color: gold; +} +.ranking:nth-child(2) { + color: lightgray; +} +.ranking:nth-child(3) { + color: sandybrown; +} + +.username { + width: 100%; + flex: 1; +} +.ranking .score { + max-width: 44px; + overflow: hidden; +} + +.operations { + padding: 6px 0; + text-align: center; + color: #ddd; +} + +.operations .separator { + display: inline-block; + margin: 0 0.4em; +} + +#overlay { + width: 100%; + background: rgba(0, 0, 0, 0.8); +} +#login { + width: 300px; + margin: 0 auto; + padding: 14px 0 18px; + display: flex; + flex-direction: column; +} + +#login input { + box-sizing: border-box; + width: 100%; + background: transparent; + border: 1px solid #ffffff99; + border-width: 0 0 2px 0; + border-radius: 0; + color: white; + font-size: 20px; + text-align: center; + padding: 10px 6px 14px; + margin: 0 0 4px; +} +#login input:hover { + background: #ffffff18; +} +#login input:focus { + background: #ffffff28; +} + +.control { + display: flex; +} diff --git a/demo/leaderboard/leaderboard.js b/demo/leaderboard/leaderboard.js new file mode 100644 index 000000000..0b87dd2a1 --- /dev/null +++ b/demo/leaderboard/leaderboard.js @@ -0,0 +1,185 @@ +let configs; +try { + configs = JSON.parse(localStorage.getItem('js-sdk-demo/configs')) || { + appId: 'FNHw86LIu6lnFToIEDemKCQl-gzGzoHsz', + appKey: 'DyvpOorH5HK1CVLDqDhb4gNT', + serverURLs: 'https://fnhw86li.lc-cn-n1-shared.com', + }; +} catch (e) {} + +AV.init(configs); + +const MAX_RESULTS_COUNT = 12; + +const leaderboard = AV.Leaderboard.createWithoutData('score'); + +Vue.component('animated-integer', { + template: '{{ tweeningValue }}', + props: { + value: { + type: Number, + required: true, + }, + }, + data: function() { + return { + tweeningValue: this.value, + }; + }, + watch: { + value: function(newValue, oldValue) { + this.tween(oldValue, newValue); + }, + }, + methods: { + tween: function(startValue, endValue) { + var vm = this; + function animate() { + if (TWEEN.update()) { + requestAnimationFrame(animate); + } + } + + new TWEEN.Tween({ tweeningValue: startValue }) + .to({ tweeningValue: endValue }, 500) + .onUpdate(function(object) { + vm.tweeningValue = object.tweeningValue.toFixed(0); + }) + .start(); + + animate(); + }, + }, +}); + +var app = new Vue({ + data: { + rankings: [], + score: null, + highScore: 0, + newHighScore: false, + username: '', + password: '', + user: {}, + rolling: false, + nextResetAt: null, + }, + + created: function() { + var user = AV.User.current(); + if (user) { + this.user = user.toJSON(); + } else { + this.fetchResults(); + } + leaderboard + .fetch() + .then( + () => (this.nextResetAt = leaderboard.nextResetAt.toLocaleString()) + ); + }, + + watch: { + 'user.objectId': { + handler: function(id) { + this.fetchResults(); + if (!id) { + this.score = null; + this.highScore = 0; + this.newHighScore = false; + } + }, + }, + }, + + methods: { + roll() { + if (this.rolling) return; + this.rolling = true; + this.newHighScore = false; + setTimeout(() => { + this.score = Math.ceil(Math.pow(Math.random(), 2) * 1000); + if (this.score > this.highScore) { + this.newHighScore = true; + this.highScore = this.score; + this.updateScore(this.score); + } + this.rolling = false; + }, 1000); + }, + + updateScore(score) { + AV.Leaderboard.updateStatistics(AV.User.current(), { + score, + }) + .then(this.fetchResults.bind(this)) + .catch(alert); + }, + + fetchResults: function() { + console.log('fetch results'); + Promise.all([ + leaderboard.getResults({ + limit: MAX_RESULTS_COUNT, + selectUserKeys: ['username'], + }), + Promise.resolve(AV.User.current()).then(currentUser => + currentUser + ? leaderboard.getResultsAroundUser(currentUser, { + limit: 3, + selectUserKeys: ['username'], + }) + : [] + ), + ]) + .then(([topRankings, [beforeUserRankings, userRanking]]) => { + console.log(topRankings, [beforeUserRankings, userRanking]); + let rankings; + if (userRanking && userRanking.rank >= MAX_RESULTS_COUNT) { + rankings = [ + ...topRankings.slice(0, -2), + beforeUserRankings, + userRanking, + ]; + } else { + rankings = topRankings; + } + this.rankings = JSON.parse(JSON.stringify(rankings)); + if (userRanking) { + this.highScore = userRanking.value; + } + }) + .catch(console.error); + }, + + login: function() { + AV.User.logIn(this.username, this.password) + .then( + function(user) { + this.user = user.toJSON(); + this.username = this.password = ''; + }.bind(this) + ) + .catch(alert); + }, + + signup: function() { + AV.User.signUp(this.username, this.password) + .then( + function(user) { + this.user = user.toJSON(); + this.username = this.password = ''; + }.bind(this) + ) + .catch(alert); + }, + + logout: function() { + AV.User.logOut(); + this.user = {}; + }, + }, +}); + +// mount +app.$mount('#app'); diff --git a/demo/live-query/app.js b/demo/live-query/app.js new file mode 100644 index 000000000..a6d61c8aa --- /dev/null +++ b/demo/live-query/app.js @@ -0,0 +1,304 @@ +let configs; +try { + configs = JSON.parse(localStorage.getItem('js-sdk-demo/configs')) || { + appId: 'FNHw86LIu6lnFToIEDemKCQl-gzGzoHsz', + appKey: 'DyvpOorH5HK1CVLDqDhb4gNT', + serverURLs: 'https://fnhw86li.lc-cn-n1-shared.com', + }; +} catch (e) {} + +AV.init(configs); + +var Todo = AV.Object.extend('Todo'); + +// visibility filters +var filters = { + all: function(todos) { + return todos; + }, + active: function(todos) { + return todos.filter(function(todo) { + return !todo.done; + }); + }, + completed: function(todos) { + return todos.filter(function(todo) { + return todo.done; + }); + }, +}; + +var bind = (subscription, initialStats, onChange) => { + let stats = [...initialStats]; + const remove = value => { + stats = stats.filter(target => target.id !== value.id); + return onChange(stats); + }; + const upsert = value => { + let existed = false; + stats = stats.map(target => + target.id === value.id ? ((existed = true), value) : target + ); + if (!existed) stats = [value, ...stats]; + return onChange(stats); + }; + subscription.on('create', upsert); + subscription.on('update', upsert); + subscription.on('enter', upsert); + subscription.on('leave', remove); + subscription.on('delete', remove); + return () => { + subscription.off('create', upsert); + subscription.off('update', upsert); + subscription.off('enter', upsert); + subscription.off('leave', remove); + subscription.off('delete', remove); + }; +}; + +// app Vue instance +var app = new Vue({ + // app initial state + data: { + todos: [], + newTodo: '', + editedTodo: null, + visibility: 'all', + username: '', + password: '', + user: null, + }, + + created: function() { + var user = AV.User.current(); + if (user) { + this.user = user.toJSON(); + } + }, + + watch: { + 'user.objectId': { + handler: function(id) { + if (id) { + this.fetchTodos(id); + } else { + this.todos = []; + } + }, + }, + }, + + // computed properties + // https://vuejs.org/guide/computed.html + computed: { + filteredTodos: function() { + return filters[this.visibility](this.todos); + }, + remaining: function() { + return filters.active(this.todos).length; + }, + allDone: { + get: function() { + return this.remaining === 0; + }, + set: function(done) { + AV.Object.saveAll( + filters[done ? 'active' : 'completed'](this.todos).map(function( + todo + ) { + todo.done = done; + return AV.Object.createWithoutData('Todo', todo.objectId).set( + 'done', + done + ); + }) + ); + }, + }, + }, + + filters: { + pluralize: function(n) { + return n === 1 ? 'item' : 'items'; + }, + }, + + // methods that implement data logic. + // note there's no DOM manipulation here at all. + methods: { + fetchTodos: function(id) { + const query = new AV.Query(Todo) + .equalTo('user', AV.Object.createWithoutData('User', id)) + .descending('createdAt'); + const updateTodos = this.updateTodos.bind(this); + return AV.Promise.all([query.find().then(updateTodos), query.subscribe()]) + .then( + function([todos, subscription]) { + this.subscription = subscription; + this.unbind = bind(subscription, todos, updateTodos); + }.bind(this) + ) + .catch(error => { + console.error(error); + alert(error.message); + }); + }, + + login: function() { + AV.User.logIn(this.username, this.password) + .then( + function(user) { + this.user = user.toJSON(); + this.username = this.password = ''; + }.bind(this) + ) + .catch(error => { + console.error(error); + alert(error.message); + }); + }, + + signup: function() { + AV.User.signUp(this.username, this.password) + .then( + function(user) { + this.user = user.toJSON(); + this.username = this.password = ''; + }.bind(this) + ) + .catch(error => { + console.error(error); + alert(error.message); + }); + }, + + logout: function() { + AV.User.logOut(); + this.user = null; + this.subscription.unsubscribe(); + this.unbind(); + }, + + updateTodos: function(todos) { + this.todos = todos.map(function(todo) { + return todo.toJSON(); + }); + return todos; + }, + + addTodo: function() { + var value = this.newTodo && this.newTodo.trim(); + if (!value) { + return; + } + var acl = new AV.ACL(); + acl.setPublicReadAccess(false); + acl.setPublicWriteAccess(false); + acl.setReadAccess(AV.User.current(), true); + acl.setWriteAccess(AV.User.current(), true); + new Todo({ + content: value, + done: false, + user: AV.User.current(), + }) + .setACL(acl) + .save() + .then( + function(todo) { + this.todos.push(todo.toJSON()); + }.bind(this) + ) + .catch(error => { + console.error(error); + alert(error.message); + }); + this.newTodo = ''; + }, + + removeTodo: function(todo) { + AV.Object.createWithoutData('Todo', todo.objectId) + .destroy() + .then( + function() { + this.todos.splice(this.todos.indexOf(todo), 1); + }.bind(this) + ) + .catch(error => { + console.error(error); + alert(error.message); + }); + }, + + editTodo: function(todo) { + this.beforeEditCache = todo.content; + this.editedTodo = todo; + }, + + doneEdit: function(todo) { + this.editedTodo = null; + todo.content = todo.content.trim(); + AV.Object.createWithoutData('Todo', todo.objectId) + .save({ + content: todo.content, + done: todo.done, + }) + .catch(error => { + console.error(error); + alert(error.message); + }); + if (!todo.content) { + this.removeTodo(todo); + } + }, + + cancelEdit: function(todo) { + this.editedTodo = null; + todo.content = this.beforeEditCache; + }, + + removeCompleted: function() { + AV.Object.destroyAll( + filters.completed(this.todos).map(function(todo) { + return AV.Object.createWithoutData('Todo', todo.objectId); + }) + ) + .then( + function() { + this.todos = filters.active(this.todos); + }.bind(this) + ) + .catch(error => { + console.error(error); + alert(error.message); + }); + }, + }, + + // a custom directive to wait for the DOM to be updated + // before focusing on the input field. + // https://vuejs.org/guide/custom-directive.html + directives: { + 'todo-focus': function(el, value) { + if (value) { + el.focus(); + } + }, + }, +}); + +// handle routing +function onHashChange() { + var visibility = window.location.hash.replace(/#\/?/, ''); + if (filters[visibility]) { + app.visibility = visibility; + } else { + window.location.hash = ''; + app.visibility = 'all'; + } +} + +window.addEventListener('hashchange', onHashChange); +onHashChange(); + +// mount +app.$mount('.todoapp'); diff --git a/demo/live-query/index.html b/demo/live-query/index.html new file mode 100644 index 000000000..f71d02daf --- /dev/null +++ b/demo/live-query/index.html @@ -0,0 +1,168 @@ + + + + + LeanTodo • Vue.js + + + + +
    +

    LeanTodo

    +
    + + +
    + + +
    +
    + +
    + + Fork me on GitHub + + + + + diff --git a/demo/settings/index.html b/demo/settings/index.html new file mode 100644 index 000000000..db426eaa2 --- /dev/null +++ b/demo/settings/index.html @@ -0,0 +1,76 @@ + + + + + + +
    +
    +
    + +
    +
    + +
    +
    + +
    +
    + Presets: +
    + +
    +
    +
    + + + + + diff --git a/dist/av-core-min.js b/dist/av-core-min.js new file mode 100644 index 000000000..ca92ae2e4 --- /dev/null +++ b/dist/av-core-min.js @@ -0,0 +1,8 @@ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.AV=e():t.AV=e()}("undefined"!=typeof self?self:this,function(){return function(t){function e(r){if(n[r])return n[r].exports;var i=n[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,e),i.l=!0,i.exports}var n={};return e.m=t,e.c=n,e.d=function(t,n,r){e.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:r})},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,"a",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=236)}([function(t,e,n){"use strict";var r=n(9),i=n(62),o=n(6),a=n(7),u=n(64).f,s=n(142),c=n(13),f=n(50),l=n(36),d=n(14),h=function(t){var e=function(n,r,o){if(this instanceof e){switch(arguments.length){case 0:return new t;case 1:return new t(n);case 2:return new t(n,r)}return new t(n,r,o)}return i(t,this,arguments)};return e.prototype=t.prototype,e};t.exports=function(t,e){var n,i,p,v,_,b,g,m,y,O=t.target,w=t.global,j=t.stat,A=t.proto,x=w?r:j?r[O]:(r[O]||{}).prototype,S=w?c:c[O]||l(c,O,{})[O],E=S.prototype;for(v in e)n=s(w?v:O+(j?".":"#")+v,t.forced),i=!n&&x&&d(x,v),b=S[v],i&&(t.dontCallGetSet?(y=u(x,v),g=y&&y.value):g=x[v]),_=i&&g?g:e[v],i&&typeof b==typeof _||(m=t.bind&&i?f(_,r):t.wrap&&i?h(_):A&&a(_)?o(_):_,(t.sham||_&&_.sham||b&&b.sham)&&l(m,"sham",!0),l(S,v,m),A&&(p=O+"Prototype",d(c,p)||l(c,p,{}),l(c[p],v,_),t.real&&E&&!E[v]&&l(E,v,_)))}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(279);n.d(e,"default",function(){return r.a});var i=n(120);n.d(e,"VERSION",function(){return i.VERSION}),n.d(e,"restArguments",function(){return i.restArguments}),n.d(e,"isObject",function(){return i.isObject}),n.d(e,"isNull",function(){return i.isNull}),n.d(e,"isUndefined",function(){return i.isUndefined}),n.d(e,"isBoolean",function(){return i.isBoolean}),n.d(e,"isElement",function(){return i.isElement}),n.d(e,"isString",function(){return i.isString}),n.d(e,"isNumber",function(){return i.isNumber}),n.d(e,"isDate",function(){return i.isDate}),n.d(e,"isRegExp",function(){return i.isRegExp}),n.d(e,"isError",function(){return i.isError}),n.d(e,"isSymbol",function(){return i.isSymbol}),n.d(e,"isArrayBuffer",function(){return i.isArrayBuffer}),n.d(e,"isDataView",function(){return i.isDataView}),n.d(e,"isArray",function(){return i.isArray}),n.d(e,"isFunction",function(){return i.isFunction}),n.d(e,"isArguments",function(){return i.isArguments}),n.d(e,"isFinite",function(){return i.isFinite}),n.d(e,"isNaN",function(){return i.isNaN}),n.d(e,"isTypedArray",function(){return i.isTypedArray}),n.d(e,"isEmpty",function(){return i.isEmpty}),n.d(e,"isMatch",function(){return i.isMatch}),n.d(e,"isEqual",function(){return i.isEqual}),n.d(e,"isMap",function(){return i.isMap}),n.d(e,"isWeakMap",function(){return i.isWeakMap}),n.d(e,"isSet",function(){return i.isSet}),n.d(e,"isWeakSet",function(){return i.isWeakSet}),n.d(e,"keys",function(){return i.keys}),n.d(e,"allKeys",function(){return i.allKeys}),n.d(e,"values",function(){return i.values}),n.d(e,"pairs",function(){return i.pairs}),n.d(e,"invert",function(){return i.invert}),n.d(e,"functions",function(){return i.functions}),n.d(e,"methods",function(){return i.methods}),n.d(e,"extend",function(){return i.extend}),n.d(e,"extendOwn",function(){return i.extendOwn}),n.d(e,"assign",function(){return i.assign}),n.d(e,"defaults",function(){return i.defaults}),n.d(e,"create",function(){return i.create}),n.d(e,"clone",function(){return i.clone}),n.d(e,"tap",function(){return i.tap}),n.d(e,"get",function(){return i.get}),n.d(e,"has",function(){return i.has}),n.d(e,"mapObject",function(){return i.mapObject}),n.d(e,"identity",function(){return i.identity}),n.d(e,"constant",function(){return i.constant}),n.d(e,"noop",function(){return i.noop}),n.d(e,"toPath",function(){return i.toPath}),n.d(e,"property",function(){return i.property}),n.d(e,"propertyOf",function(){return i.propertyOf}),n.d(e,"matcher",function(){return i.matcher}),n.d(e,"matches",function(){return i.matches}),n.d(e,"times",function(){return i.times}),n.d(e,"random",function(){return i.random}),n.d(e,"now",function(){return i.now}),n.d(e,"escape",function(){return i.escape}),n.d(e,"unescape",function(){return i.unescape}),n.d(e,"templateSettings",function(){return i.templateSettings}),n.d(e,"template",function(){return i.template}),n.d(e,"result",function(){return i.result}),n.d(e,"uniqueId",function(){return i.uniqueId}),n.d(e,"chain",function(){return i.chain}),n.d(e,"iteratee",function(){return i.iteratee}),n.d(e,"partial",function(){return i.partial}),n.d(e,"bind",function(){return i.bind}),n.d(e,"bindAll",function(){return i.bindAll}),n.d(e,"memoize",function(){return i.memoize}),n.d(e,"delay",function(){return i.delay}),n.d(e,"defer",function(){return i.defer}),n.d(e,"throttle",function(){return i.throttle}),n.d(e,"debounce",function(){return i.debounce}),n.d(e,"wrap",function(){return i.wrap}),n.d(e,"negate",function(){return i.negate}),n.d(e,"compose",function(){return i.compose}),n.d(e,"after",function(){return i.after}),n.d(e,"before",function(){return i.before}),n.d(e,"once",function(){return i.once}),n.d(e,"findKey",function(){return i.findKey}),n.d(e,"findIndex",function(){return i.findIndex}),n.d(e,"findLastIndex",function(){return i.findLastIndex}),n.d(e,"sortedIndex",function(){return i.sortedIndex}),n.d(e,"indexOf",function(){return i.indexOf}),n.d(e,"lastIndexOf",function(){return i.lastIndexOf}),n.d(e,"find",function(){return i.find}),n.d(e,"detect",function(){return i.detect}),n.d(e,"findWhere",function(){return i.findWhere}),n.d(e,"each",function(){return i.each}),n.d(e,"forEach",function(){return i.forEach}),n.d(e,"map",function(){return i.map}),n.d(e,"collect",function(){return i.collect}),n.d(e,"reduce",function(){return i.reduce}),n.d(e,"foldl",function(){return i.foldl}),n.d(e,"inject",function(){return i.inject}),n.d(e,"reduceRight",function(){return i.reduceRight}),n.d(e,"foldr",function(){return i.foldr}),n.d(e,"filter",function(){return i.filter}),n.d(e,"select",function(){return i.select}),n.d(e,"reject",function(){return i.reject}),n.d(e,"every",function(){return i.every}),n.d(e,"all",function(){return i.all}),n.d(e,"some",function(){return i.some}),n.d(e,"any",function(){return i.any}),n.d(e,"contains",function(){return i.contains}),n.d(e,"includes",function(){return i.includes}),n.d(e,"include",function(){return i.include}),n.d(e,"invoke",function(){return i.invoke}),n.d(e,"pluck",function(){return i.pluck}),n.d(e,"where",function(){return i.where}),n.d(e,"max",function(){return i.max}),n.d(e,"min",function(){return i.min}),n.d(e,"shuffle",function(){return i.shuffle}),n.d(e,"sample",function(){return i.sample}),n.d(e,"sortBy",function(){return i.sortBy}),n.d(e,"groupBy",function(){return i.groupBy}),n.d(e,"indexBy",function(){return i.indexBy}),n.d(e,"countBy",function(){return i.countBy}),n.d(e,"partition",function(){return i.partition}),n.d(e,"toArray",function(){return i.toArray}),n.d(e,"size",function(){return i.size}),n.d(e,"pick",function(){return i.pick}),n.d(e,"omit",function(){return i.omit}),n.d(e,"first",function(){return i.first}),n.d(e,"head",function(){return i.head}),n.d(e,"take",function(){return i.take}),n.d(e,"initial",function(){return i.initial}),n.d(e,"last",function(){return i.last}),n.d(e,"rest",function(){return i.rest}),n.d(e,"tail",function(){return i.tail}),n.d(e,"drop",function(){return i.drop}),n.d(e,"compact",function(){return i.compact}),n.d(e,"flatten",function(){return i.flatten}),n.d(e,"without",function(){return i.without}),n.d(e,"uniq",function(){return i.uniq}),n.d(e,"unique",function(){return i.unique}),n.d(e,"union",function(){return i.union}),n.d(e,"intersection",function(){return i.intersection}),n.d(e,"difference",function(){return i.difference}),n.d(e,"unzip",function(){return i.unzip}),n.d(e,"transpose",function(){return i.transpose}),n.d(e,"zip",function(){return i.zip}),n.d(e,"object",function(){return i.object}),n.d(e,"range",function(){return i.range}),n.d(e,"chunk",function(){return i.chunk}),n.d(e,"mixin",function(){return i.mixin})},function(t,e){function n(t){return t&&t.__esModule?t:{default:t}}t.exports=n,t.exports.__esModule=!0,t.exports.default=t.exports},function(t,e,n){"use strict";(function(t){n.d(e,"e",function(){return r}),n.d(e,"p",function(){return i}),n.d(e,"a",function(){return o}),n.d(e,"c",function(){return a}),n.d(e,"d",function(){return u}),n.d(e,"o",function(){return s}),n.d(e,"q",function(){return c}),n.d(e,"t",function(){return f}),n.d(e,"i",function(){return l}),n.d(e,"r",function(){return d}),n.d(e,"s",function(){return h}),n.d(e,"k",function(){return p}),n.d(e,"m",function(){return v}),n.d(e,"j",function(){return _}),n.d(e,"l",function(){return b}),n.d(e,"g",function(){return g}),n.d(e,"f",function(){return m}),n.d(e,"h",function(){return y}),n.d(e,"n",function(){return O}),n.d(e,"b",function(){return w});var r="1.12.1",i="object"==typeof self&&self.self===self&&self||"object"==typeof t&&t.global===t&&t||Function("return this")()||{},o=Array.prototype,a=Object.prototype,u="undefined"!=typeof Symbol?Symbol.prototype:null,s=o.push,c=o.slice,f=a.toString,l=a.hasOwnProperty,d="undefined"!=typeof ArrayBuffer,h="undefined"!=typeof DataView,p=Array.isArray,v=Object.keys,_=Object.create,b=d&&ArrayBuffer.isView,g=isNaN,m=isFinite,y=!{toString:null}.propertyIsEnumerable("toString"),O=["valueOf","isPrototypeOf","toString","propertyIsEnumerable","hasOwnProperty","toLocaleString"],w=Math.pow(2,53)-1}).call(e,n(105))},function(t,e){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,e,n){var r=n(13),i=n(14),o=n(136),a=n(32).f;t.exports=function(t){var e=r.Symbol||(r.Symbol={});i(e,t)||a(e,t,{value:o.f(t)})}},function(t,e,n){var r=n(63),i=Function.prototype,o=i.bind,a=i.call,u=r&&o.bind(a,a);t.exports=r?function(t){return t&&u(t)}:function(t){return t&&function(){return a.apply(t,arguments)}}},function(t,e){t.exports=function(t){return"function"==typeof t}},function(t,e,n){var r=n(9),i=n(67),o=n(14),a=n(109),u=n(49),s=n(140),c=i("wks"),f=r.Symbol,l=f&&f.for,d=s?f:f&&f.withoutSetter||a;t.exports=function(t){if(!o(c,t)||!u&&"string"!=typeof c[t]){var e="Symbol."+t;u&&o(f,t)?c[t]=f[t]:c[t]=s&&l?l(e):d(e)}return c[t]}},function(t,e,n){(function(e){var n=function(t){return t&&t.Math==Math&&t};t.exports=n("object"==typeof globalThis&&globalThis)||n("object"==typeof window&&window)||n("object"==typeof self&&self)||n("object"==typeof e&&e)||function(){return this}()||Function("return this")()}).call(e,n(105))},function(t,e,n){t.exports=n(238)},function(t,e,n){var r=n(63),i=Function.prototype.call;t.exports=r?i.bind(i):function(){return i.apply(i,arguments)}},function(t,e,n){"use strict";function r(t){if(!Object(i.a)(t))return[];if(o.m)return Object(o.m)(t);var e=[];for(var n in t)Object(a.a)(t,n)&&e.push(n);return o.h&&Object(u.a)(t,e),e}e.a=r;var i=n(45),o=n(3),a=n(37),u=n(172)},function(t,e){t.exports={}},function(t,e,n){var r=n(6),i=n(35),o=r({}.hasOwnProperty);t.exports=Object.hasOwn||function(t,e){return o(i(t),e)}},function(t,e,n){"use strict";function r(t){var e="[object "+t+"]";return function(t){return i.t.call(t)===e}}e.a=r;var i=n(3)},function(t,e,n){var r=n(13),i=n(9),o=n(7),a=function(t){return o(t)?t:void 0};t.exports=function(t,e){return arguments.length<2?a(r[t])||a(i[t]):r[t]&&r[t][e]||i[t]&&i[t][e]}},function(t,e,n){var r=n(7);t.exports=function(t){return"object"==typeof t?null!==t:r(t)}},function(t,e,n){"use strict";function r(t,e,n){return i.a.iteratee!==a.a?i.a.iteratee(t,e):Object(o.a)(t,e,n)}e.a=r;var i=n(23),o=n(182),a=n(183)},function(t,e,n){var r=n(4);t.exports=!r(function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]})},function(t,e,n){var r=n(6);t.exports=r({}.isPrototypeOf)},function(t,e,n){var r=n(17),i=String,o=TypeError;t.exports=function(t){if(r(t))return t;throw o(i(t)+" is not an object")}},function(t,e,n){"use strict";function r(t,e){return e=null==e?t.length-1:+e,function(){for(var n=Math.max(arguments.length-e,0),r=Array(n),i=0;i0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1?arguments[1]:void 0,n={"X-LC-Id":f.applicationId,"Content-Type":"application/json;charset=UTF-8"},r=!1;return"boolean"==typeof t.useMasterKey?r=t.useMasterKey:"boolean"==typeof f._config.useMasterKey&&(r=f._config.useMasterKey),r?f.masterKey?e?n["X-LC-Sign"]=v(f.masterKey,!0):n["X-LC-Key"]="".concat(f.masterKey,",master"):(console.warn("masterKey is not set, fall back to use appKey"),_(n,e)):_(n,e),f.hookKey&&(n["X-LC-Hook-Key"]=f.hookKey),null!==f._config.production&&(n["X-LC-Prod"]=String(f._config.production)),n["X-LC-UA"]=f._sharedConfig.userAgent,o.default.resolve().then(function(){var e=h(t);if(e)n["X-LC-Session"]=e;else if(!f._config.disableCurrentUser)return f.User.currentAsync().then(function(t){return t&&t._sessionToken&&(n["X-LC-Session"]=t._sessionToken),n});return n})},g=function(t){var e=t.service,n=void 0===e?"api":e,r=t.version,i=void 0===r?"1.1":r,o=t.path,a=f._config.serverURLs[n];if(!a)throw new Error("undefined server URL for ".concat(n));return"/"!==a.charAt(a.length-1)&&(a+="/"),a+=i,o&&(a+=o),a},m=function(t){var e=t.service,n=t.version,r=t.method,o=t.path,u=t.query,s=t.data,c=t.authOptions,d=t.signKey,h=void 0===d||d;if(!f.applicationId||!f.applicationKey&&!f.masterKey)throw new Error("Not initialized");f._appRouter&&f._appRouter.refresh();var v=f._config.requestTimeout,_=g({service:e,path:o,version:n});return b(c,h).then(function(t){return p({method:r,url:_,query:u,data:s,headers:t,timeout:v}).catch(function(t){var e={code:t.code||-1,error:t.message||t.responseText};if(t.response&&t.response.code)e=t.response;else if(t.responseText)try{e=JSON.parse(t.responseText)}catch(t){}if(e.rawMessage=e.rawMessage||e.error,!f._sharedConfig.keepErrorRawMessage){var n,o;e.error+=(0,i.default)(n=(0,i.default)(o=" [".concat(t.statusCode||"N/A"," ")).call(o,r," ")).call(n,_,"]")}var u=new l(e.code,e.error);throw delete e.error,a.extend(u,e)})})},y=function(t,e,n,r,i,o,a){var u="";if(t&&(u+="/".concat(t)),e&&(u+="/".concat(e)),n&&(u+="/".concat(n)),i&&i._fetchWhenSave)throw new Error("_fetchWhenSave should be in the query");if(i&&i._where)throw new Error("_where should be in the query");return r&&"get"===r.toLowerCase()&&(a=c({},a,i),i=null),m({method:r,path:u,query:a,data:i,authOptions:o})};f.request=m,t.exports={_request:y,request:m}},function(t,e,n){"use strict";var r=n(15),i=n(3),o=Object(r.a)("Function"),a=i.p.document&&i.p.document.childNodes;"function"!=typeof/./&&"object"!=typeof Int8Array&&"function"!=typeof a&&(o=function(t){return"function"==typeof t||!1}),e.a=o},function(t,e,n){"use strict";var r=n(171);e.a=Object(r.a)("length")},function(t,e,n){"use strict";var r=n(2),i=r(n(48)),o=r(n(215)),a=r(n(10)),u=n(1),s=function(t){return u.isNull(t)||u.isUndefined(t)},c=function(t){return u.isArray(t)?t:void 0===t||null===t?[]:[t]},f=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=(0,i.default)(t),n=t.include,r=t.includeACL,o={};return e&&(o.keys=c(e).join(",")),n&&(o.include=c(n).join(",")),r&&(o.returnACL=r),o},l=function(t){return t.sessionToken?t.sessionToken:t.user&&"function"==typeof t.user.getSessionToken?t.user.getSessionToken():void 0},d=function(t){return function(e){return t(e),e}},h=function(){},p=function(t,e,n){var r;return r=e&&e.hasOwnProperty("constructor")?e.constructor:function(){t.apply(this,arguments)},u.extend(r,t),h.prototype=t.prototype,r.prototype=new h,e&&u.extend(r.prototype,e),n&&u.extend(r,n),r.prototype.constructor=r,r.__super__=t.prototype,r},v="undefined"==typeof wx?function(t){return new Date(t)}:function(t){return new Date(Date.parse(t))},_=function(t,e,n){var r=e.split("."),i=r.pop(),o=t;return r.forEach(function(t){void 0===o[t]&&(o[t]={}),o=o[t]}),o[i]=n,t},b=function(t,e){for(var n=e.split("."),r=n[0],i=n.pop(),o=t,a=0;a"+t+"<\/script>"},p=function(t){t.write(h("")),t.close();var e=t.parentWindow.Object;return t=null,e},v=function(){var t,e=c("iframe");return e.style.display="none",s.appendChild(e),e.src=String("javascript:"),t=e.contentWindow.document,t.open(),t.write(h("document.F=Object")),t.close(),t.F},_=function(){try{r=new ActiveXObject("htmlfile")}catch(t){}_="undefined"!=typeof document?document.domain&&r?p(r):v():p(r);for(var t=a.length;t--;)delete _.prototype[a[t]];return _()};u[l]=!0,t.exports=Object.create||function(t,e){var n;return null!==t?(d.prototype=i(t),n=new d,d.prototype=null,n[l]=t):n=_(),void 0===e?n:o.f(n,e)}},function(t,e){t.exports={}},function(t,e,n){var r=n(117),i=n(7),o=n(65),a=n(8),u=a("toStringTag"),s=Object,c="Arguments"==o(function(){return arguments}()),f=function(t,e){try{return t[e]}catch(t){}};t.exports=r?o:function(t){var e,n,r;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=f(e=s(t),u))?n:c?o(e):"Object"==(r=o(e))&&i(e.callee)?"Arguments":r}},function(t,e,n){var r=n(117),i=n(32).f,o=n(36),a=n(14),u=n(257),s=n(8),c=s("toStringTag");t.exports=function(t,e,n,s){if(t){var f=n?t:t.prototype;a(f,c)||i(f,c,{configurable:!0,value:e}),s&&!r&&o(f,"toString",u)}}},function(t,e,n){var r=n(9);t.exports=r.Promise},function(t,e,n){"use strict";function r(t){for(var e=Object(i.a)(t),n=e.length,r=Array(n),o=0;o1)r(d,e-1,n,s),c=s.length;else for(var h=0,p=d.length;h0&&void 0!==arguments[0]?arguments[0]:O._getAVPath("subscriptionId"),e=O._subscriptionId=d();return O.localStorage.setItemAsync(t,e).then(function(){return e})},O._getSubscriptionId=function(){if(O._subscriptionId)return i.default.resolve(O._subscriptionId);var t=O._getAVPath("subscriptionId");return O.localStorage.getItemAsync(t).then(function(e){return O._subscriptionId=e,O._subscriptionId||(e=O._refreshSubscriptionId(t)),e})},O._parseDate=_,O._extend=function(t,e){var n=v(this,t,e);return n.extend=this.extend,n},O._encode=function(t,e,n){var r=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];if(t instanceof O.Object){if(n)throw new Error("AV.Objects not allowed here");return e&&!l.include(e,t)&&t._hasData?t._toFullJSON((0,o.default)(e).call(e,t),r):t._toPointer()}if(t instanceof O.ACL)return t.toJSON();if(l.isDate(t))return r?{__type:"Date",iso:t.toJSON()}:t.toJSON();if(t instanceof O.GeoPoint)return t.toJSON();if(l.isArray(t))return(0,a.default)(l).call(l,t,function(t){return O._encode(t,e,n,r)});if(l.isRegExp(t))return t.source;if(t instanceof O.Relation)return t.toJSON();if(t instanceof O.Op)return t.toJSON();if(t instanceof O.File){if(!t.url()&&!t.id)throw new Error("Tried to save an object containing an unsaved file.");return t._toFullJSON(e,r)}return l.isObject(t)?l.mapObject(t,function(t,i){return O._encode(t,e,n,r)}):t},O._decode=function(t,e){if(!l.isObject(t)||l.isDate(t))return t;if(l.isArray(t))return(0,a.default)(l).call(l,t,function(t){return O._decode(t)});if(t instanceof O.Object)return t;if(t instanceof O.File)return t;if(t instanceof O.Op)return t;if(t instanceof O.GeoPoint)return t;if(t instanceof O.ACL)return t;if("ACL"===e)return new O.ACL(t);if(t.__op)return O.Op._decode(t);var n;if("Pointer"===t.__type){n=t.className;var r=O.Object._create(n);if((0,u.default)(t).length>3){var i=l.clone(t);delete i.__type,delete i.className,r._finishFetch(i,!0)}else r._finishFetch({objectId:t.objectId},!1);return r}if("Object"===t.__type){n=t.className;var o=l.clone(t);delete o.__type,delete o.className;var s=O.Object._create(n);return s._finishFetch(o,!0),s}if("Date"===t.__type)return O._parseDate(t.iso);if("GeoPoint"===t.__type)return new O.GeoPoint({latitude:t.latitude,longitude:t.longitude});if("Relation"===t.__type){if(!e)throw new Error("key missing decoding a Relation");var c=new O.Relation(null,e);return c.targetClassName=t.className,c}if("File"===t.__type){var f=new O.File(t.name),d=l.clone(t);return delete d.__type,f._finishFetch(d),f}return l.mapObject(t,O._decode)},O.parseJSON=O._decode,O.parse=function(t){return O.parseJSON(JSON.parse(t))},O.stringify=function(t){return(0,s.default)(O._encode(t,[],!1,!0))},O._encodeObjectOrArray=function(t){var e=function(t){return t&&t._toFullJSON&&(t=t._toFullJSON([])),l.mapObject(t,function(t){return O._encode(t,[])})};return l.isArray(t)?(0,a.default)(t).call(t,function(t){return e(t)}):e(t)},O._arrayEach=l.each,O._traverse=function(t,e,n){if(t instanceof O.Object){if(n=n||[],(0,c.default)(l).call(l,n,t)>=0)return;return n.push(t),O._traverse(t.attributes,e,n),e(t)}return t instanceof O.Relation||t instanceof O.File?e(t):l.isArray(t)?(l.each(t,function(r,i){var o=O._traverse(r,e,n);o&&(t[i]=o)}),e(t)):l.isObject(t)?(O._each(t,function(r,i){var o=O._traverse(r,e,n);o&&(t[i]=o)}),e(t)):e(t)},O._objectEach=O._each=function(t,e){l.isObject(t)?l.each((0,f.default)(l).call(l,t),function(n){e(t[n],n)}):l.each(t,e)},O.debug={enable:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"leancloud*";return h.enable(t)},disable:h.disable},O.setAdapters=m,t.exports=O}).call(e,n(105))},function(t,e,n){"use strict";function r(t){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function i(){return!("undefined"==typeof window||!window.process||"renderer"!==window.process.type&&!window.process.__nwjs)||("undefined"==typeof navigator||!navigator.userAgent||!navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))&&("undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/))}function o(e){if(e[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+e[0]+(this.useColors?"%c ":" ")+"+"+t.exports.humanize(this.diff),this.useColors){var n="color: "+this.color;e.splice(1,0,n,"color: inherit");var r=0,i=0;e[0].replace(/%[a-zA-Z%]/g,function(t){"%%"!==t&&(r++,"%c"===t&&(i=r))}),e.splice(i,0,n)}}function a(){var t;return"object"===("undefined"==typeof console?"undefined":r(console))&&console.log&&(t=console).log.apply(t,arguments)}function u(t){try{t?e.storage.setItem("debug",t):e.storage.removeItem("debug")}catch(t){}}function s(){var t;try{t=e.storage.getItem("debug")}catch(t){}return!t&&"undefined"!=typeof process&&"env"in process&&(t=process.env.DEBUG),t}e.log=a,e.formatArgs=o,e.save=u,e.load=s,e.useColors=i,e.storage=function(){try{return localStorage}catch(t){}}(),e.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"],t.exports=n(375)(e),t.exports.formatters.j=function(t){try{return JSON.stringify(t)}catch(t){return"[UnexpectedJSONParseError]: "+t.message}}},function(t,e,n){"use strict";var r=n(2),i=r(n(48)),o=n(1),a=n(218),u=n(28),s=u.inherits,c=s(a,{constructor:function(){a.apply(this),this._adapters={}},getAdapter:function(t){var e=this._adapters[t];if(void 0===e)throw new Error("".concat(t," adapter is not configured"));return e},setAdapters:function(t){var e=this;o.extend(this._adapters,t),(0,i.default)(o).call(o,t).forEach(function(n){return e.emit(n,t[n])})}}),f=new c;t.exports={getAdapter:f.getAdapter.bind(f),setAdapters:f.setAdapters.bind(f),adapterManager:f}},function(t,e,n){var r=n(63),i=Function.prototype,o=i.apply,a=i.call;t.exports="object"==typeof Reflect&&Reflect.apply||(r?a.bind(o):function(){return a.apply(o,arguments)})},function(t,e,n){var r=n(4);t.exports=!r(function(){var t=function(){}.bind();return"function"!=typeof t||t.hasOwnProperty("prototype")})},function(t,e,n){var r=n(19),i=n(11),o=n(138),a=n(41),u=n(33),s=n(82),c=n(14),f=n(141),l=Object.getOwnPropertyDescriptor;e.f=r?l:function(t,e){if(t=u(t),e=s(e),f)try{return l(t,e)}catch(t){}if(c(t,e))return a(!i(o.f,t,e),t[e])}},function(t,e,n){var r=n(6),i=r({}.toString),o=r("".slice);t.exports=function(t){return o(i(t),8,-1)}},function(t,e){var n=String;t.exports=function(t){try{return n(t)}catch(t){return"Object"}}},function(t,e,n){var r=n(31),i=n(108);(t.exports=function(t,e){return i[t]||(i[t]=void 0!==e?e:{})})("versions",[]).push({version:"3.23.3",mode:r?"pure":"global",copyright:"© 2014-2022 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.23.3/LICENSE",source:"https://github.com/zloirock/core-js"})},function(t,e,n){var r=n(50),i=n(11),o=n(21),a=n(66),u=n(149),s=n(42),c=n(20),f=n(150),l=n(90),d=n(151),h=TypeError,p=function(t,e){this.stopped=t,this.result=e},v=p.prototype;t.exports=function(t,e,n){var _,b,g,m,y,O,w,j=n&&n.that,A=!(!n||!n.AS_ENTRIES),x=!(!n||!n.IS_ITERATOR),S=!(!n||!n.INTERRUPTED),E=r(e,j),C=function(t){return _&&d(_,"normal",t),new p(!0,t)},T=function(t){return A?(o(t),S?E(t[0],t[1],C):E(t[0],t[1])):S?E(t,C):E(t)};if(x)_=t;else{if(!(b=l(t)))throw h(a(t)+" is not iterable");if(u(b)){for(g=0,m=s(t);m>g;g++)if((y=T(t[g]))&&c(v,y))return y;return new p(!1)}_=f(t,b)}for(O=_.next;!(w=i(O,_)).done;){try{y=T(w.value)}catch(t){d(_,"throw",t)}if("object"==typeof y&&y&&c(v,y))return y}return new p(!1)}},function(t,e,n){var r=n(53),i=String;t.exports=function(t){if("Symbol"===r(t))throw TypeError("Cannot convert a Symbol value to a string");return i(t)}},function(t,e,n){"use strict";var r=n(33),i=n(152),o=n(52),a=n(91),u=n(32).f,s=n(153),c=n(31),f=n(19),l=a.set,d=a.getterFor("Array Iterator");t.exports=s(Array,"Array",function(t,e){l(this,{type:"Array Iterator",target:r(t),index:0,kind:e})},function(){var t=d(this),e=t.target,n=t.kind,r=t.index++;return!e||r>=e.length?(t.target=void 0,{value:void 0,done:!0}):"keys"==n?{value:r,done:!1}:"values"==n?{value:e[r],done:!1}:{value:[r,e[r]],done:!1}},"values");var h=o.Arguments=o.Array;if(i("keys"),i("values"),i("entries"),!c&&f&&"values"!==h.name)try{u(h,"name",{value:"values"})}catch(t){}},function(t,e){t.exports=function(t){try{return{error:!1,value:t()}}catch(t){return{error:!0,value:t}}}},function(t,e,n){var r=n(9),i=n(55),o=n(7),a=n(142),u=n(118),s=n(8),c=n(268),f=n(31),l=n(84),d=i&&i.prototype,h=s("species"),p=!1,v=o(r.PromiseRejectionEvent),_=a("Promise",function(){var t=u(i),e=t!==String(i);if(!e&&66===l)return!0;if(f&&(!d.catch||!d.finally))return!0;if(l>=51&&/native code/.test(t))return!1;var n=new i(function(t){t(1)}),r=function(t){t(function(){},function(){})},o=n.constructor={};return o[h]=r,!(p=n.then(function(){})instanceof r)||!e&&c&&!v});t.exports={CONSTRUCTOR:_,REJECTION_EVENT:v,SUBCLASSING:p}},function(t,e,n){n(70);var r=n(278),i=n(9),o=n(53),a=n(36),u=n(52),s=n(8),c=s("toStringTag");for(var f in r){var l=i[f],d=l&&l.prototype;d&&o(d)!==c&&a(d,c,f),u[f]=u.Array}},function(t,e,n){"use strict";n.d(e,"a",function(){return o}),n.d(e,"b",function(){return a});var r=n(3),i=n(285),o=r.s&&Object(i.a)(new DataView(new ArrayBuffer(8))),a="undefined"!=typeof Map&&Object(i.a)(new Map)},function(t,e,n){"use strict";function r(t){if(!Object(i.a)(t))return[];var e=[];for(var n in t)e.push(n);return o.h&&Object(a.a)(t,e),e}e.a=r;var i=n(45),o=n(3),a=n(172)},function(t,e,n){"use strict";function r(t){return i.a.toPath(t)}e.a=r;var i=n(23);n(181)},function(t,e,n){"use strict";function r(t,e,n){if(void 0===e)return t;switch(null==n?3:n){case 1:return function(n){return t.call(e,n)};case 3:return function(n,r,i){return t.call(e,n,r,i)};case 4:return function(n,r,i,o){return t.call(e,n,r,i,o)}}return function(){return t.apply(e,arguments)}}e.a=r},function(t,e,n){"use strict";function r(t,e,n){var r=[];return e=Object(i.a)(e,n),Object(o.a)(t,function(t,n,i){e(t,n,i)&&r.push(t)}),r}e.a=r;var i=n(18),o=n(47)},function(t,e,n){"use strict";function r(t,e,n,r){return Object(i.a)(t)||(t=Object(o.a)(t)),("number"!=typeof n||r)&&(n=0),Object(a.a)(t,e,n)>=0}e.a=r;var i=n(24),o=n(56),a=n(197)},function(t,e,n){var r=n(65);t.exports=Array.isArray||function(t){return"Array"==r(t)}},function(t,e,n){t.exports=n(222)},function(t,e,n){var r=n(242),i=n(83);t.exports=function(t){var e=r(t,"string");return i(e)?e:e+""}},function(t,e,n){var r=n(16),i=n(7),o=n(20),a=n(140),u=Object;t.exports=a?function(t){return"symbol"==typeof t}:function(t){var e=r("Symbol");return i(e)&&o(e.prototype,u(t))}},function(t,e,n){var r,i,o=n(9),a=n(85),u=o.process,s=o.Deno,c=u&&u.versions||s&&s.version,f=c&&c.v8;f&&(r=f.split("."),i=r[0]>0&&r[0]<4?1:+(r[0]+r[1])),!i&&a&&(!(r=a.match(/Edge\/(\d+)/))||r[1]>=74)&&(r=a.match(/Chrome\/(\d+)/))&&(i=+r[1]),t.exports=i},function(t,e,n){var r=n(16);t.exports=r("navigator","userAgent")||""},function(t,e,n){var r=n(14),i=n(7),o=n(35),a=n(87),u=n(144),s=a("IE_PROTO"),c=Object,f=c.prototype;t.exports=u?c.getPrototypeOf:function(t){var e=o(t);if(r(e,s))return e[s];var n=e.constructor;return i(n)&&e instanceof n?n.prototype:e instanceof c?f:null}},function(t,e,n){var r=n(67),i=n(109),o=r("keys");t.exports=function(t){return o[t]||(o[t]=i(t))}},function(t,e,n){var r=n(6),i=n(21),o=n(245);t.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var t,e=!1,n={};try{t=r(Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set),t(n,[]),e=n instanceof Array}catch(t){}return function(n,r){return i(n),o(r),e?t(n,r):n.__proto__=r,n}}():void 0)},function(t,e){t.exports={}},function(t,e,n){var r=n(53),i=n(107),o=n(52),a=n(8),u=a("iterator");t.exports=function(t){if(void 0!=t)return i(t,u)||i(t,"@@iterator")||o[r(t)]}},function(t,e,n){var r,i,o,a=n(254),u=n(9),s=n(6),c=n(17),f=n(36),l=n(14),d=n(108),h=n(87),p=n(89),v=u.TypeError,_=u.WeakMap,b=function(t){return o(t)?i(t):r(t,{})},g=function(t){return function(e){var n;if(!c(e)||(n=i(e)).type!==t)throw v("Incompatible receiver, "+t+" required");return n}};if(a||d.state){var m=d.state||(d.state=new _),y=s(m.get),O=s(m.has),w=s(m.set);r=function(t,e){if(O(m,t))throw new v("Object already initialized");return e.facade=t,w(m,t,e),e},i=function(t){return y(m,t)||{}},o=function(t){return O(m,t)}}else{var j=h("state");p[j]=!0,r=function(t,e){if(l(t,j))throw new v("Object already initialized");return e.facade=t,f(t,j,e),e},i=function(t){return l(t,j)?t[j]:{}},o=function(t){return l(t,j)}}t.exports={set:r,get:i,has:o,enforce:b,getterFor:g}},function(t,e){},function(t,e,n){var r=n(6),i=n(4),o=n(7),a=n(53),u=n(16),s=n(118),c=function(){},f=[],l=u("Reflect","construct"),d=/^\s*(?:class|function)\b/,h=r(d.exec),p=!d.exec(c),v=function(t){if(!o(t))return!1;try{return l(c,f,t),!0}catch(t){return!1}},_=function(t){if(!o(t))return!1;switch(a(t)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return p||!!h(d,s(t))}catch(t){return!0}};_.sham=!0,t.exports=!l||i(function(){var t;return v(v.call)||!v(Object)||!v(function(){t=!0})||t})?_:v},function(t,e,n){var r=n(6);t.exports=r([].slice)},function(t,e,n){"use strict";var r=n(277).charAt,i=n(69),o=n(91),a=n(153),u=o.set,s=o.getterFor("String Iterator");a(String,"String",function(t){u(this,{type:"String Iterator",string:i(t),index:0})},function(){var t,e=s(this),n=e.string,i=e.index;return i>=n.length?{value:void 0,done:!0}:(t=r(n,i),e.index+=t.length,{value:t,done:!1})})},function(t,e,n){"use strict";function r(t){return t=Object(i.a)({},t),function(e){return Object(o.a)(e,t)}}e.a=r;var i=n(127),o=n(173)},function(t,e,n){"use strict";var r=n(22),i=n(189),o=n(23),a=Object(r.a)(function(t,e){var n=a.placeholder,r=function(){for(var o=0,a=e.length,u=Array(a),s=0;s=51||!r(function(){var e=[],n=e.constructor={};return n[a]=function(){return{foo:1}},1!==e[t](Boolean).foo})}},function(t,e,n){var r=n(50),i=n(6),o=n(139),a=n(35),u=n(42),s=n(211),c=i([].push),f=function(t){var e=1==t,n=2==t,i=3==t,f=4==t,l=6==t,d=7==t,h=5==t||l;return function(p,v,_,b){for(var g,m,y=a(p),O=o(y),w=r(v,_),j=u(O),A=0,x=b||s,S=e?x(p,j):n||d?x(p,0):void 0;j>A;A++)if((h||A in O)&&(g=O[A],m=w(g,A,y),t))if(e)S[A]=m;else if(m)switch(t){case 3:return!0;case 5:return g;case 6:return A;case 2:c(S,g)}else switch(t){case 4:return!1;case 7:c(S,g)}return l?-1:i||f?f:S}};t.exports={forEach:f(0),map:f(1),filter:f(2),some:f(3),every:f(4),find:f(5),findIndex:f(6),filterReject:f(7)}},function(t,e,n){t.exports=n(365)},function(t,e,n){"use strict";var r=n(2),i=r(n(135)),o=r(n(430)),a=r(n(39)),u=r(n(212)),s=r(n(34)),c=r(n(29)),f=(n(1),n(435)),l=f.timeout,d=n(60),h=d("leancloud:request"),p=d("leancloud:request:error"),v=n(61),_=v.getAdapter,b=0,g=function(t){var e=t.method,n=t.url,r=t.query,f=t.data,v=t.headers,g=void 0===v?{}:v,m=t.timeout,y=t.onprogress;if(r){var O,w,j,A=(0,o.default)(O=(0,a.default)(w=(0,u.default)(r)).call(w,function(t){var e,n=r[t];if(void 0!==n){var o="object"===(0,i.default)(n)?(0,s.default)(n):n;return(0,c.default)(e="".concat(encodeURIComponent(t),"=")).call(e,encodeURIComponent(o))}})).call(O,function(t){return t}).join("&");n=(0,c.default)(j="".concat(n,"?")).call(j,A)}var x=b++;h("request(%d) %s %s %o %o %o",x,e,n,r,f,g);var S=_("request"),E=S(n,{method:e,headers:g,data:f,onprogress:y}).then(function(t){if(h("response(%d) %d %O %o",x,t.status,t.data||t.text,t.header),!1===t.ok){var e=new Error;throw e.response=t,e}return t.data}).catch(function(t){throw t.response&&(d.enabled("leancloud:request")||p("request(%d) %s %s %o %o %o",x,e,n,r,f,g),p("response(%d) %d %O %o",x,t.response.status,t.response.data||t.response.text,t.response.header),t.statusCode=t.response.status,t.responseText=t.response.text,t.response=t.response.data),t});return m?l(E,m):E};t.exports=g},function(t,e,n){t.exports=n(440)},function(t,e){var n;n=function(){return this}();try{n=n||Function("return this")()||(0,eval)("this")}catch(t){"object"==typeof window&&(n=window)}t.exports=n},function(t,e){var n=TypeError;t.exports=function(t){if(void 0==t)throw n("Can't call method on "+t);return t}},function(t,e,n){var r=n(30);t.exports=function(t,e){var n=t[e];return null==n?void 0:r(n)}},function(t,e,n){var r=n(9),i=n(244),o=r["__core-js_shared__"]||i("__core-js_shared__",{});t.exports=o},function(t,e,n){var r=n(6),i=0,o=Math.random(),a=r(1..toString);t.exports=function(t){return"Symbol("+(void 0===t?"":t)+")_"+a(++i+o,36)}},function(t,e,n){var r=n(9),i=n(17),o=r.document,a=i(o)&&i(o.createElement);t.exports=function(t){return a?o.createElement(t):{}}},function(t,e,n){var r=n(145),i=n(114),o=i.concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return r(t,o)}},function(t,e,n){var r=n(113),i=Math.max,o=Math.min;t.exports=function(t,e){var n=r(t);return n<0?i(n+e,0):o(n,e)}},function(t,e,n){var r=n(248);t.exports=function(t){var e=+t;return e!==e||0===e?0:r(e)}},function(t,e){t.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},function(t,e){e.f=Object.getOwnPropertySymbols},function(t,e,n){var r=n(145),i=n(114);t.exports=Object.keys||function(t){return r(t,i)}},function(t,e,n){var r=n(8),i=r("toStringTag"),o={};o[i]="z",t.exports="[object z]"===String(o)},function(t,e,n){var r=n(6),i=n(7),o=n(108),a=r(Function.toString);i(o.inspectSource)||(o.inspectSource=function(t){return a(t)}),t.exports=o.inspectSource},function(t,e,n){var r=n(65),i=n(9);t.exports="process"==r(i.process)},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(3);n.d(e,"VERSION",function(){return r.e});var i=n(22);n.d(e,"restArguments",function(){return i.a});var o=n(45);n.d(e,"isObject",function(){return o.a});var a=n(280);n.d(e,"isNull",function(){return a.a});var u=n(162);n.d(e,"isUndefined",function(){return u.a});var s=n(163);n.d(e,"isBoolean",function(){return s.a});var c=n(281);n.d(e,"isElement",function(){return c.a});var f=n(121);n.d(e,"isString",function(){return f.a});var l=n(164);n.d(e,"isNumber",function(){return l.a});var d=n(282);n.d(e,"isDate",function(){return d.a});var h=n(283);n.d(e,"isRegExp",function(){return h.a});var p=n(284);n.d(e,"isError",function(){return p.a});var v=n(165);n.d(e,"isSymbol",function(){return v.a});var _=n(166);n.d(e,"isArrayBuffer",function(){return _.a});var b=n(122);n.d(e,"isDataView",function(){return b.a});var g=n(46);n.d(e,"isArray",function(){return g.a});var m=n(26);n.d(e,"isFunction",function(){return m.a});var y=n(123);n.d(e,"isArguments",function(){return y.a});var O=n(286);n.d(e,"isFinite",function(){return O.a});var w=n(167);n.d(e,"isNaN",function(){return w.a});var j=n(168);n.d(e,"isTypedArray",function(){return j.a});var A=n(288);n.d(e,"isEmpty",function(){return A.a});var x=n(173);n.d(e,"isMatch",function(){return x.a});var S=n(289);n.d(e,"isEqual",function(){return S.a});var E=n(291);n.d(e,"isMap",function(){return E.a});var C=n(292);n.d(e,"isWeakMap",function(){return C.a});var T=n(293);n.d(e,"isSet",function(){return T.a});var N=n(294);n.d(e,"isWeakSet",function(){return N.a});var I=n(12);n.d(e,"keys",function(){return I.a});var U=n(75);n.d(e,"allKeys",function(){return U.a});var k=n(56);n.d(e,"values",function(){return k.a});var P=n(295);n.d(e,"pairs",function(){return P.a});var R=n(174);n.d(e,"invert",function(){return R.a});var D=n(175);n.d(e,"functions",function(){return D.a}),n.d(e,"methods",function(){return D.a});var M=n(176);n.d(e,"extend",function(){return M.a});var L=n(127);n.d(e,"extendOwn",function(){return L.a}),n.d(e,"assign",function(){return L.a});var F=n(177);n.d(e,"defaults",function(){return F.a});var q=n(296);n.d(e,"create",function(){return q.a});var W=n(179);n.d(e,"clone",function(){return W.a});var B=n(297);n.d(e,"tap",function(){return B.a});var V=n(180);n.d(e,"get",function(){return V.a});var Q=n(298);n.d(e,"has",function(){return Q.a});var K=n(299);n.d(e,"mapObject",function(){return K.a});var z=n(129);n.d(e,"identity",function(){return z.a});var J=n(169);n.d(e,"constant",function(){return J.a});var G=n(184);n.d(e,"noop",function(){return G.a});var H=n(181);n.d(e,"toPath",function(){return H.a});var $=n(130);n.d(e,"property",function(){return $.a});var Y=n(300);n.d(e,"propertyOf",function(){return Y.a});var X=n(96);n.d(e,"matcher",function(){return X.a}),n.d(e,"matches",function(){return X.a});var Z=n(301);n.d(e,"times",function(){return Z.a});var tt=n(185);n.d(e,"random",function(){return tt.a});var et=n(131);n.d(e,"now",function(){return et.a});var nt=n(302);n.d(e,"escape",function(){return nt.a});var rt=n(303);n.d(e,"unescape",function(){return rt.a});var it=n(188);n.d(e,"templateSettings",function(){return it.a});var ot=n(305);n.d(e,"template",function(){return ot.a});var at=n(306);n.d(e,"result",function(){return at.a});var ut=n(307);n.d(e,"uniqueId",function(){return ut.a});var st=n(308);n.d(e,"chain",function(){return st.a});var ct=n(183);n.d(e,"iteratee",function(){return ct.a});var ft=n(97);n.d(e,"partial",function(){return ft.a});var lt=n(190);n.d(e,"bind",function(){return lt.a});var dt=n(309);n.d(e,"bindAll",function(){return dt.a});var ht=n(310);n.d(e,"memoize",function(){return ht.a});var pt=n(191);n.d(e,"delay",function(){return pt.a});var vt=n(311);n.d(e,"defer",function(){return vt.a});var _t=n(312);n.d(e,"throttle",function(){return _t.a});var bt=n(313);n.d(e,"debounce",function(){return bt.a});var gt=n(314);n.d(e,"wrap",function(){return gt.a});var mt=n(132);n.d(e,"negate",function(){return mt.a});var yt=n(315);n.d(e,"compose",function(){return yt.a});var Ot=n(316);n.d(e,"after",function(){return Ot.a});var wt=n(192);n.d(e,"before",function(){return wt.a});var jt=n(317);n.d(e,"once",function(){return jt.a});var At=n(193);n.d(e,"findKey",function(){return At.a});var xt=n(133);n.d(e,"findIndex",function(){return xt.a});var St=n(195);n.d(e,"findLastIndex",function(){return St.a});var Et=n(196);n.d(e,"sortedIndex",function(){return Et.a});var Ct=n(197);n.d(e,"indexOf",function(){return Ct.a});var Tt=n(318);n.d(e,"lastIndexOf",function(){return Tt.a});var Nt=n(199);n.d(e,"find",function(){return Nt.a}),n.d(e,"detect",function(){return Nt.a});var It=n(319);n.d(e,"findWhere",function(){return It.a});var Ut=n(47);n.d(e,"each",function(){return Ut.a}),n.d(e,"forEach",function(){return Ut.a});var kt=n(58);n.d(e,"map",function(){return kt.a}),n.d(e,"collect",function(){return kt.a});var Pt=n(320);n.d(e,"reduce",function(){return Pt.a}),n.d(e,"foldl",function(){return Pt.a}),n.d(e,"inject",function(){return Pt.a});var Rt=n(321);n.d(e,"reduceRight",function(){return Rt.a}),n.d(e,"foldr",function(){return Rt.a});var Dt=n(78);n.d(e,"filter",function(){return Dt.a}),n.d(e,"select",function(){return Dt.a});var Mt=n(322);n.d(e,"reject",function(){return Mt.a});var Lt=n(323);n.d(e,"every",function(){return Lt.a}),n.d(e,"all",function(){return Lt.a});var Ft=n(324);n.d(e,"some",function(){return Ft.a}),n.d(e,"any",function(){return Ft.a});var qt=n(79);n.d(e,"contains",function(){return qt.a}),n.d(e,"includes",function(){return qt.a}),n.d(e,"include",function(){return qt.a});var Wt=n(325);n.d(e,"invoke",function(){return Wt.a});var Bt=n(134);n.d(e,"pluck",function(){return Bt.a});var Vt=n(326);n.d(e,"where",function(){return Vt.a});var Qt=n(201);n.d(e,"max",function(){return Qt.a});var Kt=n(327);n.d(e,"min",function(){return Kt.a});var zt=n(328);n.d(e,"shuffle",function(){return zt.a});var Jt=n(202);n.d(e,"sample",function(){return Jt.a});var Gt=n(329);n.d(e,"sortBy",function(){return Gt.a});var Ht=n(330);n.d(e,"groupBy",function(){return Ht.a});var $t=n(331);n.d(e,"indexBy",function(){return $t.a});var Yt=n(332);n.d(e,"countBy",function(){return Yt.a});var Xt=n(333);n.d(e,"partition",function(){return Xt.a});var Zt=n(334);n.d(e,"toArray",function(){return Zt.a});var te=n(335);n.d(e,"size",function(){return te.a});var ee=n(203);n.d(e,"pick",function(){return ee.a});var ne=n(337);n.d(e,"omit",function(){return ne.a});var re=n(338);n.d(e,"first",function(){return re.a}),n.d(e,"head",function(){return re.a}),n.d(e,"take",function(){return re.a});var ie=n(204);n.d(e,"initial",function(){return ie.a});var oe=n(339);n.d(e,"last",function(){return oe.a});var ae=n(205);n.d(e,"rest",function(){return ae.a}),n.d(e,"tail",function(){return ae.a}),n.d(e,"drop",function(){return ae.a});var ue=n(340);n.d(e,"compact",function(){return ue.a});var se=n(341);n.d(e,"flatten",function(){return se.a});var ce=n(342);n.d(e,"without",function(){return ce.a});var fe=n(207);n.d(e,"uniq",function(){return fe.a}),n.d(e,"unique",function(){return fe.a});var le=n(343);n.d(e,"union",function(){return le.a});var de=n(344);n.d(e,"intersection",function(){return de.a});var he=n(206);n.d(e,"difference",function(){return he.a});var pe=n(208);n.d(e,"unzip",function(){return pe.a}),n.d(e,"transpose",function(){return pe.a});var ve=n(345);n.d(e,"zip",function(){return ve.a});var _e=n(346);n.d(e,"object",function(){return _e.a});var be=n(347);n.d(e,"range",function(){return be.a});var ge=n(348);n.d(e,"chunk",function(){return ge.a});var me=n(349);n.d(e,"mixin",function(){return me.a});var ye=n(350);n.d(e,"default",function(){return ye.a})},function(t,e,n){"use strict";var r=n(15);e.a=Object(r.a)("String")},function(t,e,n){"use strict";function r(t){return null!=t&&Object(o.a)(t.getInt8)&&Object(a.a)(t.buffer)}var i=n(15),o=n(26),a=n(166),u=n(74),s=Object(i.a)("DataView");e.a=u.a?r:s},function(t,e,n){"use strict";var r=n(15),i=n(37),o=Object(r.a)("Arguments");!function(){o(arguments)||(o=function(t){return Object(i.a)(t,"callee")})}(),e.a=o},function(t,e,n){"use strict";var r=n(171);e.a=Object(r.a)("byteLength")},function(t,e,n){"use strict";function r(t){var e=Object(i.a)(t);return function(n){if(null==n)return!1;var r=Object(a.a)(n);if(Object(i.a)(r))return!1;for(var s=0;sc;)i(r,n=e[c++])&&(~a(f,n)||s(f,n));return f}},function(t,e,n){var r=n(33),i=n(112),o=n(42),a=function(t){return function(e,n,a){var u,s=r(e),c=o(s),f=i(a,c);if(t&&n!=n){for(;c>f;)if((u=s[f++])!=u)return!0}else for(;c>f;f++)if((t||f in s)&&s[f]===n)return t||f||0;return!t&&-1}};t.exports={includes:a(!0),indexOf:a(!1)}},function(t,e,n){var r=n(19),i=n(143),o=n(32),a=n(21),u=n(33),s=n(116);e.f=r&&!i?Object.defineProperties:function(t,e){a(t);for(var n,r=u(e),i=s(e),c=i.length,f=0;c>f;)o.f(t,n=i[f++],r[n]);return t}},function(t,e,n){var r=n(16);t.exports=r("document","documentElement")},function(t,e,n){var r=n(8),i=n(52),o=r("iterator"),a=Array.prototype;t.exports=function(t){return void 0!==t&&(i.Array===t||a[o]===t)}},function(t,e,n){var r=n(11),i=n(30),o=n(21),a=n(66),u=n(90),s=TypeError;t.exports=function(t,e){var n=arguments.length<2?u(t):e;if(i(n))return o(r(n,t));throw s(a(t)+" is not iterable")}},function(t,e,n){var r=n(11),i=n(21),o=n(107);t.exports=function(t,e,n){var a,u;i(t);try{if(!(a=o(t,"return"))){if("throw"===e)throw n;return n}a=r(a,t)}catch(t){u=!0,a=t}if("throw"===e)throw n;if(u)throw a;return i(a),n}},function(t,e){t.exports=function(){}},function(t,e,n){"use strict";var r=n(0),i=n(11),o=n(31),a=n(255),u=n(7),s=n(256),c=n(86),f=n(88),l=n(54),d=n(36),h=n(43),p=n(8),v=n(52),_=n(154),b=a.PROPER,g=a.CONFIGURABLE,m=_.IteratorPrototype,y=_.BUGGY_SAFARI_ITERATORS,O=p("iterator"),w=function(){return this};t.exports=function(t,e,n,a,p,_,j){s(n,e,a);var A,x,S,E=function(t){if(t===p&&U)return U;if(!y&&t in N)return N[t];switch(t){case"keys":case"values":case"entries":return function(){return new n(this,t)}}return function(){return new n(this)}},C=e+" Iterator",T=!1,N=t.prototype,I=N[O]||N["@@iterator"]||p&&N[p],U=!y&&I||E(p),k="Array"==e?N.entries||I:I;if(k&&(A=c(k.call(new t)))!==Object.prototype&&A.next&&(o||c(A)===m||(f?f(A,m):u(A[O])||h(A,O,w)),l(A,C,!0,!0),o&&(v[C]=w)),b&&"values"==p&&I&&"values"!==I.name&&(!o&&g?d(N,"name","values"):(T=!0,U=function(){return i(I,this)})),p)if(x={values:E("values"),keys:_?U:E("keys"),entries:E("entries")},j)for(S in x)!y&&!T&&S in N||h(N,S,x[S]);else r({target:e,proto:!0,forced:y||T},x);return o&&!j||N[O]===U||h(N,O,U,{name:p}),v[e]=U,x}},function(t,e,n){"use strict";var r,i,o,a=n(4),u=n(7),s=n(51),c=n(86),f=n(43),l=n(8),d=n(31),h=l("iterator"),p=!1;[].keys&&(o=[].keys(),"next"in o?(i=c(c(o)))!==Object.prototype&&(r=i):p=!0),void 0==r||a(function(){var t={};return r[h].call(t)!==t})?r={}:d&&(r=s(r)),u(r[h])||f(r,h,function(){return this}),t.exports={IteratorPrototype:r,BUGGY_SAFARI_ITERATORS:p}},function(t,e,n){var r=n(21),i=n(156),o=n(8),a=o("species");t.exports=function(t,e){var n,o=r(t).constructor;return void 0===o||void 0==(n=r(o)[a])?e:i(n)}},function(t,e,n){var r=n(93),i=n(66),o=TypeError;t.exports=function(t){if(r(t))return t;throw o(i(t)+" is not a constructor")}},function(t,e,n){var r,i,o,a,u=n(9),s=n(62),c=n(50),f=n(7),l=n(14),d=n(4),h=n(148),p=n(94),v=n(110),_=n(262),b=n(158),g=n(119),m=u.setImmediate,y=u.clearImmediate,O=u.process,w=u.Dispatch,j=u.Function,A=u.MessageChannel,x=u.String,S=0,E={};try{r=u.location}catch(t){}var C=function(t){if(l(E,t)){var e=E[t];delete E[t],e()}},T=function(t){return function(){C(t)}},N=function(t){C(t.data)},I=function(t){u.postMessage(x(t),r.protocol+"//"+r.host)};m&&y||(m=function(t){_(arguments.length,1);var e=f(t)?t:j(t),n=p(arguments,1);return E[++S]=function(){s(e,void 0,n)},i(S),S},y=function(t){delete E[t]},g?i=function(t){O.nextTick(T(t))}:w&&w.now?i=function(t){w.now(T(t))}:A&&!b?(o=new A,a=o.port2,o.port1.onmessage=N,i=c(a.postMessage,a)):u.addEventListener&&f(u.postMessage)&&!u.importScripts&&r&&"file:"!==r.protocol&&!d(I)?(i=I,u.addEventListener("message",N,!1)):i="onreadystatechange"in v("script")?function(t){h.appendChild(v("script")).onreadystatechange=function(){h.removeChild(this),C(t)}}:function(t){setTimeout(T(t),0)}),t.exports={set:m,clear:y}},function(t,e,n){var r=n(85);t.exports=/(?:ipad|iphone|ipod).*applewebkit/i.test(r)},function(t,e,n){var r=n(55),i=n(160),o=n(72).CONSTRUCTOR;t.exports=o||!i(function(t){r.all(t).then(void 0,function(){})})},function(t,e,n){var r=n(8),i=r("iterator"),o=!1;try{var a=0,u={next:function(){return{done:!!a++}},return:function(){o=!0}};u[i]=function(){return this},Array.from(u,function(){throw 2})}catch(t){}t.exports=function(t,e){if(!e&&!o)return!1;var n=!1;try{var r={};r[i]=function(){return{next:function(){return{done:n=!0}}}},t(r)}catch(t){}return n}},function(t,e,n){var r=n(21),i=n(17),o=n(44);t.exports=function(t,e){if(r(t),i(e)&&e.constructor===t)return e;var n=o.f(t);return(0,n.resolve)(e),n.promise}},function(t,e,n){"use strict";function r(t){return void 0===t}e.a=r},function(t,e,n){"use strict";function r(t){return!0===t||!1===t||"[object Boolean]"===i.t.call(t)}e.a=r;var i=n(3)},function(t,e,n){"use strict";var r=n(15);e.a=Object(r.a)("Number")},function(t,e,n){"use strict";var r=n(15);e.a=Object(r.a)("Symbol")},function(t,e,n){"use strict";var r=n(15);e.a=Object(r.a)("ArrayBuffer")},function(t,e,n){"use strict";function r(t){return Object(o.a)(t)&&Object(i.g)(t)}e.a=r;var i=n(3),o=n(164)},function(t,e,n){"use strict";function r(t){return i.l?Object(i.l)(t)&&!Object(o.a)(t):Object(u.a)(t)&&s.test(i.t.call(t))}var i=n(3),o=n(122),a=n(169),u=n(287),s=/\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/;e.a=i.r?r:Object(a.a)(!1)},function(t,e,n){"use strict";function r(t){return function(){return t}}e.a=r},function(t,e,n){"use strict";function r(t){return function(e){var n=t(e);return"number"==typeof n&&n>=0&&n<=i.b}}e.a=r;var i=n(3)},function(t,e,n){"use strict";function r(t){return function(e){return null==e?void 0:e[t]}}e.a=r},function(t,e,n){"use strict";function r(t){for(var e={},n=t.length,r=0;r":">",'"':""","'":"'","`":"`"}},function(t,e,n){"use strict";var r=n(23);e.a=r.a.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g}},function(t,e,n){"use strict";function r(t,e,n,r,a){if(!(r instanceof e))return t.apply(n,a);var u=Object(i.a)(t.prototype),s=t.apply(u,a);return Object(o.a)(s)?s:u}e.a=r;var i=n(178),o=n(45)},function(t,e,n){"use strict";var r=n(22),i=n(26),o=n(189);e.a=Object(r.a)(function(t,e,n){if(!Object(i.a)(t))throw new TypeError("Bind must be called on a function");var a=Object(r.a)(function(r){return Object(o.a)(t,a,e,this,n.concat(r))});return a})},function(t,e,n){"use strict";var r=n(22);e.a=Object(r.a)(function(t,e,n){return setTimeout(function(){return t.apply(null,n)},e)})},function(t,e,n){"use strict";function r(t,e){var n;return function(){return--t>0&&(n=e.apply(this,arguments)),t<=1&&(e=null),n}}e.a=r},function(t,e,n){"use strict";function r(t,e,n){e=Object(i.a)(e,n);for(var r,a=Object(o.a)(t),u=0,s=a.length;u0?0:a-1;u>=0&&u0?c=s>=0?s:Math.max(s+f,c):f=s>=0?Math.min(s+1,f):s+f+1;else if(n&&s&&f)return s=n(r,u),r[s]===u?s:-1;if(u!==u)return s=e(o.q.call(r,c,f),a.a),s>=0?s+c:-1;for(s=t>0?c:f-1;s>=0&&s0?0:s-1;for(a||(r=e[u?u[c]:c],c+=t);c>=0&&c=3;return e(t,Object(a.a)(n,i,4),r,o)}}e.a=r;var i=n(24),o=n(12),a=n(77)},function(t,e,n){"use strict";function r(t,e,n){var r,s,c=-1/0,f=-1/0;if(null==e||"number"==typeof e&&"object"!=typeof t[0]&&null!=t){t=Object(i.a)(t)?t:Object(o.a)(t);for(var l=0,d=t.length;lc&&(c=r)}else e=Object(a.a)(e,n),Object(u.a)(t,function(t,n,r){((s=e(t,n,r))>f||s===-1/0&&c===-1/0)&&(c=t,f=s)});return c}e.a=r;var i=n(24),o=n(56),a=n(18),u=n(47)},function(t,e,n){"use strict";function r(t,e,n){if(null==e||n)return Object(i.a)(t)||(t=Object(a.a)(t)),t[Object(s.a)(t.length-1)];var r=Object(i.a)(t)?Object(o.a)(t):Object(a.a)(t),c=Object(u.a)(r);e=Math.max(Math.min(e,c),0);for(var f=c-1,l=0;l1&&(r=Object(o.a)(r,e[1])),e=Object(a.a)(t)):(r=u.a,e=Object(s.a)(e,!1,!1),t=Object(t));for(var c=0,f=e.length;c=51||!i(function(){var t=[];return t[v]=!1,t.concat()[0]!==t}),b=d("concat"),g=function(t){if(!a(t))return!1;var e=t[v];return void 0!==e?!!e:o(t)};r({target:"Array",proto:!0,arity:1,forced:!_||!b},{concat:function(t){var e,n,r,i,o,a=u(this),d=l(a,0),h=0;for(e=-1,r=arguments.length;e2?arguments[2]:void 0,u=i(O,this);a?n=a(new g,u?o(this):O):(n=u?this:s(O),c(n,b,"Error")),void 0!==e&&c(n,"message",p(e)),_&&c(n,"stack",l(n.stack,1)),d(n,r);var f=[];return h(t,m,{that:f}),c(n,"errors",f),n};a?a(y,g):u(y,g,{name:!0});var O=y.prototype=s(g.prototype,{constructor:f(1,y),message:f(1,""),name:f(1,"AggregateError")});r({global:!0,constructor:!0,arity:2},{AggregateError:y})},function(t,e,n){var r=n(11),i=n(17),o=n(83),a=n(107),u=n(243),s=n(8),c=TypeError,f=s("toPrimitive");t.exports=function(t,e){if(!i(t)||o(t))return t;var n,s=a(t,f);if(s){if(void 0===e&&(e="default"),n=r(s,t,e),!i(n)||o(n))return n;throw c("Can't convert object to primitive value")}return void 0===e&&(e="number"),u(t,e)}},function(t,e,n){var r=n(11),i=n(7),o=n(17),a=TypeError;t.exports=function(t,e){var n,u;if("string"===e&&i(n=t.toString)&&!o(u=r(n,t)))return u;if(i(n=t.valueOf)&&!o(u=r(n,t)))return u;if("string"!==e&&i(n=t.toString)&&!o(u=r(n,t)))return u;throw a("Can't convert object to primitive value")}},function(t,e,n){var r=n(9),i=Object.defineProperty;t.exports=function(t,e){try{i(r,t,{value:e,configurable:!0,writable:!0})}catch(n){r[t]=e}return e}},function(t,e,n){var r=n(7),i=String,o=TypeError;t.exports=function(t){if("object"==typeof t||r(t))return t;throw o("Can't set "+i(t)+" as a prototype")}},function(t,e,n){var r=n(14),i=n(247),o=n(64),a=n(32);t.exports=function(t,e,n){for(var u=i(e),s=a.f,c=o.f,f=0;f0?r:n)(e)}},function(t,e,n){var r=n(113),i=Math.min;t.exports=function(t){return t>0?i(r(t),9007199254740991):0}},function(t,e,n){var r=n(6),i=Error,o=r("".replace),a=function(t){return String(i("zxcasd").stack)}(),u=/\n\s*at [^:]*:[^\n]*/,s=u.test(a);t.exports=function(t,e){if(s&&"string"==typeof t&&!i.prepareStackTrace)for(;e--;)t=o(t,u,"");return t}},function(t,e,n){var r=n(17),i=n(36);t.exports=function(t,e){r(e)&&"cause"in e&&i(t,"cause",e.cause)}},function(t,e,n){var r=n(69);t.exports=function(t,e){return void 0===t?arguments.length<2?"":e:r(t)}},function(t,e,n){var r=n(4),i=n(41);t.exports=!r(function(){var t=Error("a");return!("stack"in t)||(Object.defineProperty(t,"stack",i(1,7)),7!==t.stack)})},function(t,e,n){var r=n(9),i=n(7),o=n(118),a=r.WeakMap;t.exports=i(a)&&/native code/.test(o(a))},function(t,e,n){var r=n(19),i=n(14),o=Function.prototype,a=r&&Object.getOwnPropertyDescriptor,u=i(o,"name"),s=u&&"something"===function(){}.name,c=u&&(!r||r&&a(o,"name").configurable);t.exports={EXISTS:u,PROPER:s,CONFIGURABLE:c}},function(t,e,n){"use strict";var r=n(154).IteratorPrototype,i=n(51),o=n(41),a=n(54),u=n(52),s=function(){return this};t.exports=function(t,e,n,c){var f=e+" Iterator";return t.prototype=i(r,{next:o(+!c,n)}),a(t,f,!1,!0),u[f]=s,t}},function(t,e,n){"use strict";var r=n(117),i=n(53);t.exports=r?{}.toString:function(){return"[object "+i(this)+"]"}},function(t,e,n){n(259),n(269),n(270),n(271),n(272),n(273)},function(t,e,n){"use strict";var r,i,o,a=n(0),u=n(31),s=n(119),c=n(9),f=n(11),l=n(43),d=n(88),h=n(54),p=n(260),v=n(30),_=n(7),b=n(17),g=n(261),m=n(155),y=n(157).set,O=n(263),w=n(266),j=n(71),A=n(267),x=n(91),S=n(55),E=n(72),C=n(44),T=E.CONSTRUCTOR,N=E.REJECTION_EVENT,I=E.SUBCLASSING,U=x.getterFor("Promise"),k=x.set,P=S&&S.prototype,R=S,D=P,M=c.TypeError,L=c.document,F=c.process,q=C.f,W=q,B=!!(L&&L.createEvent&&c.dispatchEvent),V=function(t){var e;return!(!b(t)||!_(e=t.then))&&e},Q=function(t,e){var n,r,i,o=e.value,a=1==e.state,u=a?t.ok:t.fail,s=t.resolve,c=t.reject,l=t.domain;try{u?(a||(2===e.rejection&&H(e),e.rejection=1),!0===u?n=o:(l&&l.enter(),n=u(o),l&&(l.exit(),i=!0)),n===t.promise?c(M("Promise-chain cycle")):(r=V(n))?f(r,n,s,c):s(n)):c(o)}catch(t){l&&!i&&l.exit(),c(t)}},K=function(t,e){t.notified||(t.notified=!0,O(function(){for(var n,r=t.reactions;n=r.get();)Q(n,t);t.notified=!1,e&&!t.rejection&&J(t)}))},z=function(t,e,n){var r,i;B?(r=L.createEvent("Event"),r.promise=e,r.reason=n,r.initEvent(t,!1,!0),c.dispatchEvent(r)):r={promise:e,reason:n},!N&&(i=c["on"+t])?i(r):"unhandledrejection"===t&&w("Unhandled promise rejection",n)},J=function(t){f(y,c,function(){var e,n=t.facade,r=t.value,i=G(t);if(i&&(e=j(function(){s?F.emit("unhandledRejection",r,n):z("unhandledrejection",n,r)}),t.rejection=s||G(t)?2:1,e.error))throw e.value})},G=function(t){return 1!==t.rejection&&!t.parent},H=function(t){f(y,c,function(){var e=t.facade;s?F.emit("rejectionHandled",e):z("rejectionhandled",e,t.value)})},$=function(t,e,n){return function(r){t(e,r,n)}},Y=function(t,e,n){t.done||(t.done=!0,n&&(t=n),t.value=e,t.state=2,K(t,!0))},X=function(t,e,n){if(!t.done){t.done=!0,n&&(t=n);try{if(t.facade===e)throw M("Promise can't be resolved itself");var r=V(e);r?O(function(){var n={done:!1};try{f(r,e,$(X,n,t),$(Y,n,t))}catch(e){Y(n,e,t)}}):(t.value=e,t.state=1,K(t,!1))}catch(e){Y({done:!1},e,t)}}};if(T&&(R=function(t){g(this,D),v(t),f(r,this);var e=U(this);try{t($(X,e),$(Y,e))}catch(t){Y(e,t)}},D=R.prototype,r=function(t){k(this,{type:"Promise",done:!1,notified:!1,parent:!1,reactions:new A,rejection:!1,state:0,value:void 0})},r.prototype=l(D,"then",function(t,e){var n=U(this),r=q(m(this,R));return n.parent=!0,r.ok=!_(t)||t,r.fail=_(e)&&e,r.domain=s?F.domain:void 0,0==n.state?n.reactions.add(r):O(function(){Q(r,n)}),r.promise}),i=function(){var t=new r,e=U(t);this.promise=t,this.resolve=$(X,e),this.reject=$(Y,e)},C.f=q=function(t){return t===R||void 0===t?new i(t):W(t)},!u&&_(S)&&P!==Object.prototype)){o=P.then,I||l(P,"then",function(t,e){var n=this;return new R(function(t,e){f(o,n,t,e)}).then(t,e)},{unsafe:!0});try{delete P.constructor}catch(t){}d&&d(P,D)}a({global:!0,constructor:!0,wrap:!0,forced:T},{Promise:R}),h(R,"Promise",!1,!0),p("Promise")},function(t,e,n){"use strict";var r=n(16),i=n(32),o=n(8),a=n(19),u=o("species");t.exports=function(t){var e=r(t),n=i.f;a&&e&&!e[u]&&n(e,u,{configurable:!0,get:function(){return this}})}},function(t,e,n){var r=n(20),i=TypeError;t.exports=function(t,e){if(r(e,t))return t;throw i("Incorrect invocation")}},function(t,e){var n=TypeError;t.exports=function(t,e){if(t=h?t?"":void 0:(r=s(l,d),r<55296||r>56319||d+1===h||(f=s(l,d+1))<56320||f>57343?t?u(l,d):r:t?c(l,d,d+2):f-56320+(r-55296<<10)+65536)}};t.exports={codeAt:f(!1),charAt:f(!0)}},function(t,e){t.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}},function(t,e,n){"use strict";var r=n(120),i=Object(r.mixin)(r);i._=i,e.a=i},function(t,e,n){"use strict";function r(t){return null===t}e.a=r},function(t,e,n){"use strict";function r(t){return!(!t||1!==t.nodeType)}e.a=r},function(t,e,n){"use strict";var r=n(15);e.a=Object(r.a)("Date")},function(t,e,n){"use strict";var r=n(15);e.a=Object(r.a)("RegExp")},function(t,e,n){"use strict";var r=n(15);e.a=Object(r.a)("Error")},function(t,e,n){"use strict";var r=n(15);e.a=Object(r.a)("Object")},function(t,e,n){"use strict";function r(t){return!Object(o.a)(t)&&Object(i.f)(t)&&!isNaN(parseFloat(t))}e.a=r;var i=n(3),o=n(165)},function(t,e,n){"use strict";var r=n(170),i=n(124);e.a=Object(r.a)(i.a)},function(t,e,n){"use strict";function r(t){if(null==t)return!0;var e=Object(i.a)(t);return"number"==typeof e&&(Object(o.a)(t)||Object(a.a)(t)||Object(u.a)(t))?0===e:0===Object(i.a)(Object(s.a)(t))}e.a=r;var i=n(27),o=n(46),a=n(121),u=n(123),s=n(12)},function(t,e,n){"use strict";function r(t,e,n,r){if(t===e)return 0!==t||1/t==1/e;if(null==t||null==e)return!1;if(t!==t)return e!==e;var o=typeof t;return("function"===o||"object"===o||"object"==typeof e)&&i(t,e,n,r)}function i(t,e,n,o){t instanceof a.a&&(t=t._wrapped),e instanceof a.a&&(e=e._wrapped);var b=u.t.call(t);if(b!==u.t.call(e))return!1;if(l.a&&"[object Object]"==b&&Object(d.a)(t)){if(!Object(d.a)(e))return!1;b=_}switch(b){case"[object RegExp]":case"[object String]":return""+t==""+e;case"[object Number]":return+t!=+t?+e!=+e:0==+t?1/+t==1/e:+t==+e;case"[object Date]":case"[object Boolean]":return+t==+e;case"[object Symbol]":return u.d.valueOf.call(t)===u.d.valueOf.call(e);case"[object ArrayBuffer]":case _:return i(Object(v.a)(t),Object(v.a)(e),n,o)}var g="[object Array]"===b;if(!g&&Object(c.a)(t)){if(Object(s.a)(t)!==Object(s.a)(e))return!1;if(t.buffer===e.buffer&&t.byteOffset===e.byteOffset)return!0;g=!0}if(!g){if("object"!=typeof t||"object"!=typeof e)return!1;var m=t.constructor,y=e.constructor;if(m!==y&&!(Object(f.a)(m)&&m instanceof m&&Object(f.a)(y)&&y instanceof y)&&"constructor"in t&&"constructor"in e)return!1}n=n||[],o=o||[];for(var O=n.length;O--;)if(n[O]===t)return o[O]===e;if(n.push(t),o.push(e),g){if((O=t.length)!==e.length)return!1;for(;O--;)if(!r(t[O],e[O],n,o))return!1}else{var w,j=Object(h.a)(t);if(O=j.length,Object(h.a)(e).length!==O)return!1;for(;O--;)if(w=j[O],!Object(p.a)(e,w)||!r(t[w],e[w],n,o))return!1}return n.pop(),o.pop(),!0}function o(t,e){return r(t,e)}e.a=o;var a=n(23),u=n(3),s=n(124),c=n(168),f=n(26),l=n(74),d=n(122),h=n(12),p=n(37),v=n(290),_="[object DataView]"},function(t,e,n){"use strict";function r(t){return new Uint8Array(t.buffer||t,t.byteOffset||0,Object(i.a)(t))}e.a=r;var i=n(124)},function(t,e,n){"use strict";var r=n(15),i=n(74),o=n(125);e.a=i.b?Object(o.a)(o.b):Object(r.a)("Map")},function(t,e,n){"use strict";var r=n(15),i=n(74),o=n(125);e.a=i.b?Object(o.a)(o.d):Object(r.a)("WeakMap")},function(t,e,n){"use strict";var r=n(15),i=n(74),o=n(125);e.a=i.b?Object(o.a)(o.c):Object(r.a)("Set")},function(t,e,n){"use strict";var r=n(15);e.a=Object(r.a)("WeakSet")},function(t,e,n){"use strict";function r(t){for(var e=Object(i.a)(t),n=e.length,r=Array(n),o=0;oe?(r&&(clearTimeout(r),r=null),s=f,u=t.apply(o,a),r||(o=a=null)):r||!1===n.trailing||(r=setTimeout(c,l)),u};return f.cancel=function(){clearTimeout(r),s=0,r=o=a=null},f}e.a=r;var i=n(131)},function(t,e,n){"use strict";function r(t,e,n){var r,a,u,s,c,f=function(){var i=Object(o.a)()-a;e>i?r=setTimeout(f,e-i):(r=null,n||(s=t.apply(c,u)),r||(u=c=null))},l=Object(i.a)(function(i){return c=this,u=i,a=Object(o.a)(),r||(r=setTimeout(f,e),n&&(s=t.apply(c,u))),s});return l.cancel=function(){clearTimeout(r),r=u=c=null},l}e.a=r;var i=n(22),o=n(131)},function(t,e,n){"use strict";function r(t,e){return Object(i.a)(e,t)}e.a=r;var i=n(97)},function(t,e,n){"use strict";function r(){var t=arguments,e=t.length-1;return function(){for(var n=e,r=t[e].apply(this,arguments);n--;)r=t[n].call(this,r);return r}}e.a=r},function(t,e,n){"use strict";function r(t,e){return function(){if(--t<1)return e.apply(this,arguments)}}e.a=r},function(t,e,n){"use strict";var r=n(97),i=n(192);e.a=Object(r.a)(i.a,2)},function(t,e,n){"use strict";var r=n(195),i=n(198);e.a=Object(i.a)(-1,r.a)},function(t,e,n){"use strict";function r(t,e){return Object(i.a)(t,Object(o.a)(e))}e.a=r;var i=n(199),o=n(96)},function(t,e,n){"use strict";var r=n(200);e.a=Object(r.a)(1)},function(t,e,n){"use strict";var r=n(200);e.a=Object(r.a)(-1)},function(t,e,n){"use strict";function r(t,e,n){return Object(i.a)(t,Object(o.a)(Object(a.a)(e)),n)}e.a=r;var i=n(78),o=n(132),a=n(18)},function(t,e,n){"use strict";function r(t,e,n){e=Object(i.a)(e,n);for(var r=!Object(o.a)(t)&&Object(a.a)(t),u=(r||t).length,s=0;sr||void 0===n)return 1;if(n1&&(n=e[1])):(e=Object(a.a)(Object(u.a)(e,!1,!1),String),r=function(t,n){return!Object(s.a)(e,n)}),Object(c.a)(t,r,n)})},function(t,e,n){"use strict";function r(t,e,n){return null==t||t.length<1?null==e||n?void 0:[]:null==e||n?t[0]:Object(i.a)(t,t.length-e)}e.a=r;var i=n(204)},function(t,e,n){"use strict";function r(t,e,n){return null==t||t.length<1?null==e||n?void 0:[]:null==e||n?t[t.length-1]:Object(i.a)(t,Math.max(0,t.length-e))}e.a=r;var i=n(205)},function(t,e,n){"use strict";function r(t){return Object(i.a)(t,Boolean)}e.a=r;var i=n(78)},function(t,e,n){"use strict";function r(t,e){return Object(i.a)(t,e,!1)}e.a=r;var i=n(57)},function(t,e,n){"use strict";var r=n(22),i=n(206);e.a=Object(r.a)(function(t,e){return Object(i.a)(t,e)})},function(t,e,n){"use strict";var r=n(22),i=n(207),o=n(57);e.a=Object(r.a)(function(t){return Object(i.a)(Object(o.a)(t,!0,!0))})},function(t,e,n){"use strict";function r(t){for(var e=[],n=arguments.length,r=0,a=Object(i.a)(t);r9007199254740991)throw n("Maximum allowed index exceeded");return t}},function(t,e,n){var r=n(80),i=n(93),o=n(17),a=n(8),u=a("species"),s=Array;t.exports=function(t){var e;return r(t)&&(e=t.constructor,i(e)&&(e===s||r(e.prototype))?e=void 0:o(e)&&null===(e=e[u])&&(e=void 0)),void 0===e?s:e}},function(t,e,n){var r=n(357);t.exports=r},function(t,e,n){var r=n(20),i=n(358),o=Array.prototype;t.exports=function(t){var e=t.map;return t===o||r(o,t)&&e===o.map?i:e}},function(t,e,n){n(359);var r=n(38);t.exports=r("Array").map},function(t,e,n){"use strict";var r=n(0),i=n(101).map;r({target:"Array",proto:!0,forced:!n(100)("map")},{map:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0)}})},function(t,e,n){var r=n(361);t.exports=r},function(t,e,n){n(362);var r=n(13);t.exports=r.Object.keys},function(t,e,n){var r=n(0),i=n(35),o=n(116);r({target:"Object",stat:!0,forced:n(4)(function(){o(1)})},{keys:function(t){return o(i(t))}})},function(t,e,n){var r=n(364);t.exports=r},function(t,e,n){n(213);var r=n(13),i=n(62);r.JSON||(r.JSON={stringify:JSON.stringify}),t.exports=function(t,e,n){return i(r.JSON.stringify,null,arguments)}},function(t,e,n){var r=n(366);t.exports=r},function(t,e,n){var r=n(20),i=n(367),o=Array.prototype;t.exports=function(t){var e=t.indexOf;return t===o||r(o,t)&&e===o.indexOf?i:e}},function(t,e,n){n(368);var r=n(38);t.exports=r("Array").indexOf},function(t,e,n){"use strict";var r=n(0),i=n(6),o=n(146).indexOf,a=n(369),u=i([].indexOf),s=!!u&&1/u([1],1,-0)<0,c=a("indexOf");r({target:"Array",proto:!0,forced:s||!c},{indexOf:function(t){var e=arguments.length>1?arguments[1]:void 0;return s?u(this,t,e)||0:o(this,t,e)}})},function(t,e,n){"use strict";var r=n(4);t.exports=function(t,e){var n=[][t];return!!n&&r(function(){n.call(null,e||function(){return 1},1)})}},function(t,e,n){n(73);var r=n(53),i=n(14),o=n(20),a=n(371),u=Array.prototype,s={DOMTokenList:!0,NodeList:!0};t.exports=function(t){var e=t.keys;return t===u||o(u,t)&&e===u.keys||i(s,r(t))?a:e}},function(t,e,n){var r=n(372);t.exports=r},function(t,e,n){n(70),n(92);var r=n(38);t.exports=r("Array").keys},function(t,e){var n="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||"undefined"!=typeof msCrypto&&"function"==typeof window.msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto);if(n){var r=new Uint8Array(16);t.exports=function(){return n(r),r}}else{var i=new Array(16);t.exports=function(){for(var t,e=0;e<16;e++)0==(3&e)&&(t=4294967296*Math.random()),i[e]=t>>>((3&e)<<3)&255;return i}}},function(t,e){function n(t,e){var n=e||0,i=r;return[i[t[n++]],i[t[n++]],i[t[n++]],i[t[n++]],"-",i[t[n++]],i[t[n++]],"-",i[t[n++]],i[t[n++]],"-",i[t[n++]],i[t[n++]],"-",i[t[n++]],i[t[n++]],i[t[n++]],i[t[n++]],i[t[n++]],i[t[n++]]].join("")}for(var r=[],i=0;i<256;++i)r[i]=(i+256).toString(16).substr(1);t.exports=n},function(t,e,n){"use strict";function r(t){function e(t){for(var e=0,n=0;n100)){var e=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(t);if(e){var n=parseFloat(e[1]);switch((e[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return n*l;case"weeks":case"week":case"w":return n*f;case"days":case"day":case"d":return n*c;case"hours":case"hour":case"hrs":case"hr":case"h":return n*s;case"minutes":case"minute":case"mins":case"min":case"m":return n*u;case"seconds":case"second":case"secs":case"sec":case"s":return n*a;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return n;default:return}}}}function r(t){var e=Math.abs(t);return e>=c?Math.round(t/c)+"d":e>=s?Math.round(t/s)+"h":e>=u?Math.round(t/u)+"m":e>=a?Math.round(t/a)+"s":t+"ms"}function i(t){var e=Math.abs(t);return e>=c?o(t,e,c,"day"):e>=s?o(t,e,s,"hour"):e>=u?o(t,e,u,"minute"):e>=a?o(t,e,a,"second"):t+" ms"}function o(t,e,n,r){var i=e>=1.5*n;return Math.round(t/n)+" "+r+(i?"s":"")}var a=1e3,u=60*a,s=60*u,c=24*s,f=7*c,l=365.25*c;t.exports=function(t,e){e=e||{};var o=typeof t;if("string"===o&&t.length>0)return n(t);if("number"===o&&isFinite(t))return e.long?i(t):r(t);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(t))}},function(t,e,n){n(378);var r=n(13);t.exports=r.Object.getPrototypeOf},function(t,e,n){var r=n(0),i=n(4),o=n(35),a=n(86),u=n(144);r({target:"Object",stat:!0,forced:i(function(){a(1)}),sham:!u},{getPrototypeOf:function(t){return a(o(t))}})},function(t,e,n){t.exports=n(221)},function(t,e,n){n(381);var r=n(13);t.exports=r.Object.setPrototypeOf},function(t,e,n){n(0)({target:"Object",stat:!0},{setPrototypeOf:n(88)})},function(t,e,n){"use strict";function r(t){var e,n,r,i,u;if(_(t))return{};var s=(0,o.default)(t).call(t,0,8).toLowerCase(),c="lncldglobal.com";return{push:(0,a.default)(e="https://".concat(s,".push.")).call(e,c),stats:(0,a.default)(n="https://".concat(s,".stats.")).call(n,c),engine:(0,a.default)(r="https://".concat(s,".engine.")).call(r,c),api:(0,a.default)(i="https://".concat(s,".api.")).call(i,c),rtm:(0,a.default)(u="https://".concat(s,".rtm.")).call(u,c)}}var i=n(2),o=i(n(81)),a=i(n(29)),u=i(n(223)),s=n(59),c=n(388),f=n(28),l=f.isNullOrUndefined,d=n(1),h=d.extend,p=d.isObject,v=d.isEmpty,_=function(t){return"-MdYXbMMI"!==(0,o.default)(t).call(t,-9)},b=function(t){return{push:t,stats:t,engine:t,api:t,rtm:t}},g=!1,m=!1;s.init=function(t){if(!p(t))return s.init({appId:t,appKey:arguments.length<=1?void 0:arguments[1],masterKey:arguments.length<=2?void 0:arguments[2]});var e=t.appId,n=t.appKey,i=t.masterKey,o=t.hookKey,a=t.serverURL,u=t.serverURLs,f=void 0===u?a:u,d=t.disableCurrentUser,y=t.production,O=t.realtime;if(m&&console.warn("Initializing LeanCloud Storage SDK which has already been initialized. Reinitializing the SDK might cause problems like unexpected cross-app data writing and invalid relations."),!e)throw new TypeError("appId must be a string");if(!n)throw new TypeError("appKey must be a string");if(i&&console.warn("MasterKey is not supposed to be used at client side."),_(e)&&!f&&v(s._config.serverURLs))throw new TypeError("serverURL option is required for apps from CN region");e!==s._config.applicationId?(s._config.masterKey=i,s._config.hookKey=o):(i&&(s._config.masterKey=i),o&&(s._config.hookKey=o)),s._config.applicationId=e,s._config.applicationKey=n,l(y)||s.setProduction(y),void 0!==d&&(s._config.disableCurrentUser=d);var w=g||void 0!==f;if(w||(s._appRouter=new c(s)),s._setServerURLs(h({},r(e),s._config.serverURLs,"string"==typeof f?b(f):f),w),O)s._config.realtime=O;else if(s._sharedConfig.liveQueryRealtime){var j=s._config.serverURLs,A=j.api,x=j.rtm;s._config.realtime=new s._sharedConfig.liveQueryRealtime({appId:e,appKey:n,server:{api:A,RTMRouter:x}})}m=!0},s.setProduction=function(t){l(t)?s._config.production=null:s._config.production=t?1:0},s._setServerURLs=function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];"string"!=typeof t?h(s._config.serverURLs,t):s._config.serverURLs=b(t),e&&(s._appRouter?s._appRouter.disable():g=!0)},s.setServerURL=function(t){return s._setServerURLs(t)},s.setServerURLs=s.setServerURL,s.keepErrorRawMessage=function(t){s._sharedConfig.keepErrorRawMessage=t},s.setRequestTimeout=function(t){s._config.requestTimeout=t},s.initialize=s.init,["applicationId","applicationKey","masterKey","hookKey"].forEach(function(t){return(0,u.default)(s,t,{get:function(){return s._config[t]},set:function(e){s._config[t]=e}})})},function(t,e,n){var r=n(20),i=n(384),o=Array.prototype;t.exports=function(t){var e=t.slice;return t===o||r(o,t)&&e===o.slice?i:e}},function(t,e,n){n(385);var r=n(38);t.exports=r("Array").slice},function(t,e,n){"use strict";var r=n(0),i=n(80),o=n(93),a=n(17),u=n(112),s=n(42),c=n(33),f=n(99),l=n(8),d=n(100),h=n(94),p=d("slice"),v=l("species"),_=Array,b=Math.max;r({target:"Array",proto:!0,forced:!p},{slice:function(t,e){var n,r,l,d=c(this),p=s(d),g=u(t,p),m=u(void 0===e?p:e,p);if(i(d)&&(n=d.constructor,o(n)&&(n===_||i(n.prototype))?n=void 0:a(n)&&null===(n=n[v])&&(n=void 0),n===_||void 0===n))return h(d,g,m);for(r=new(void 0===n?_:n)(b(m-g,0)),l=0;g1?arguments[1]:void 0)}})},function(t,e,n){"use strict";var r;t.exports.timeout=function(t,e){var n,i=new r;return Promise.race([t,new Promise(function(t,r){n=setTimeout(function(){r(i)},e)})]).then(function(t){return clearTimeout(n),t},function(t){throw clearTimeout(n),t})};r=t.exports.TimeoutError=function(){Error.call(this),this.stack=Error().stack,this.message="Timeout"},r.prototype=Object.create(Error.prototype),r.prototype.name="TimeoutError"},function(t,e,n){"use strict";var r=n(2),i=r(n(81)),o=r(n(48)),a=r(n(29)),u=n(1);t.exports=function(t){var e=/\s+/,n=(0,i.default)(Array.prototype);t.Events={on:function(t,n,r){var i,o,a,u,s;if(!n)return this;for(t=t.split(e),i=this._callbacks||(this._callbacks={}),o=t.shift();o;)s=i[o],a=s?s.tail:{},a.next=u={},a.context=r,a.callback=n,i[o]={tail:u,next:s?s.next:a},o=t.shift();return this},off:function(t,n,r){var i,a,s,c,f,l;if(a=this._callbacks){if(!(t||n||r))return delete this._callbacks,this;for(t=t?t.split(e):(0,o.default)(u).call(u,a),i=t.shift();i;)if(s=a[i],delete a[i],s&&(n||r)){for(c=s.tail,s=s.next;s!==c;)f=s.callback,l=s.context,(n&&f!==n||r&&l!==r)&&this.on(i,f,l),s=s.next;i=t.shift()}return this}},trigger:function(t){var r,i,o,u,s,c,f;if(!(o=this._callbacks))return this;for(c=o.all,t=t.split(e),f=n.call(arguments,1),r=t.shift();r;){if(i=o[r])for(u=i.tail;(i=i.next)!==u;)i.callback.apply(i.context||this,f);if(i=c){var l;for(u=i.tail,s=(0,a.default)(l=[r]).call(l,f);(i=i.next)!==u;)i.callback.apply(i.context||this,s)}r=t.shift()}return this}},t.Events.bind=t.Events.on,t.Events.unbind=t.Events.off}},function(t,e,n){"use strict";var r=n(2),i=r(n(10)),o=n(1);t.exports=function(t){t.GeoPoint=function(e,n){o.isArray(e)?(t.GeoPoint._validate(e[0],e[1]),this.latitude=e[0],this.longitude=e[1]):o.isObject(e)?(t.GeoPoint._validate(e.latitude,e.longitude),this.latitude=e.latitude,this.longitude=e.longitude):o.isNumber(e)&&o.isNumber(n)?(t.GeoPoint._validate(e,n),this.latitude=e,this.longitude=n):(this.latitude=0,this.longitude=0);var r=this;this.__defineGetter__&&this.__defineSetter__&&(this._latitude=this.latitude,this._longitude=this.longitude,this.__defineGetter__("latitude",function(){return r._latitude}),this.__defineGetter__("longitude",function(){return r._longitude}),this.__defineSetter__("latitude",function(e){t.GeoPoint._validate(e,r.longitude),r._latitude=e}),this.__defineSetter__("longitude",function(e){t.GeoPoint._validate(r.latitude,e),r._longitude=e}))},t.GeoPoint._validate=function(t,e){if(t<-90)throw new Error("AV.GeoPoint latitude "+t+" < -90.0.");if(t>90)throw new Error("AV.GeoPoint latitude "+t+" > 90.0.");if(e<-180)throw new Error("AV.GeoPoint longitude "+e+" < -180.0.");if(e>180)throw new Error("AV.GeoPoint longitude "+e+" > 180.0.")},t.GeoPoint.current=function(){return new i.default(function(e,n){navigator.geolocation.getCurrentPosition(function(n){e(new t.GeoPoint({latitude:n.coords.latitude,longitude:n.coords.longitude}))},n)})},o.extend(t.GeoPoint.prototype,{toJSON:function(){return t.GeoPoint._validate(this.latitude,this.longitude),{__type:"GeoPoint",latitude:this.latitude,longitude:this.longitude}},radiansTo:function(t){var e=Math.PI/180,n=this.latitude*e,r=this.longitude*e,i=t.latitude*e,o=t.longitude*e,a=n-i,u=r-o,s=Math.sin(a/2),c=Math.sin(u/2),f=s*s+Math.cos(n)*Math.cos(i)*c*c;return f=Math.min(1,f),2*Math.asin(Math.sqrt(f))},kilometersTo:function(t){return 6371*this.radiansTo(t)},milesTo:function(t){return 3958.8*this.radiansTo(t)}})}},function(t,e,n){"use strict";var r=n(1);t.exports=function(t){t.ACL=function(e){var n=this;if(n.permissionsById={},r.isObject(e))if(e instanceof t.User)n.setReadAccess(e,!0),n.setWriteAccess(e,!0);else{if(r.isFunction(e))throw new Error("AV.ACL() called with a function. Did you forget ()?");t._objectEach(e,function(e,i){if(!r.isString(i))throw new Error("Tried to create an ACL with an invalid userId.");n.permissionsById[i]={},t._objectEach(e,function(t,e){if("read"!==e&&"write"!==e)throw new Error("Tried to create an ACL with an invalid permission type.");if(!r.isBoolean(t))throw new Error("Tried to create an ACL with an invalid permission value.");n.permissionsById[i][e]=t})})}},t.ACL.prototype.toJSON=function(){return r.clone(this.permissionsById)},t.ACL.prototype._setAccess=function(e,n,i){if(n instanceof t.User?n=n.id:n instanceof t.Role&&(n="role:"+n.getName()),!r.isString(n))throw new Error("userId must be a string.");if(!r.isBoolean(i))throw new Error("allowed must be either true or false.");var o=this.permissionsById[n];if(!o){if(!i)return;o={},this.permissionsById[n]=o}i?this.permissionsById[n][e]=!0:(delete o[e],r.isEmpty(o)&&delete this.permissionsById[n])},t.ACL.prototype._getAccess=function(e,n){n instanceof t.User?n=n.id:n instanceof t.Role&&(n="role:"+n.getName());var r=this.permissionsById[n];return!!r&&!!r[e]},t.ACL.prototype.setReadAccess=function(t,e){this._setAccess("read",t,e)},t.ACL.prototype.getReadAccess=function(t){return this._getAccess("read",t)},t.ACL.prototype.setWriteAccess=function(t,e){this._setAccess("write",t,e)},t.ACL.prototype.getWriteAccess=function(t){return this._getAccess("write",t)},t.ACL.prototype.setPublicReadAccess=function(t){this.setReadAccess("*",t)},t.ACL.prototype.getPublicReadAccess=function(){return this.getReadAccess("*")},t.ACL.prototype.setPublicWriteAccess=function(t){this.setWriteAccess("*",t)},t.ACL.prototype.getPublicWriteAccess=function(){return this.getWriteAccess("*")},t.ACL.prototype.getRoleReadAccess=function(e){if(e instanceof t.Role&&(e=e.getName()),r.isString(e))return this.getReadAccess("role:"+e);throw new Error("role must be a AV.Role or a String")},t.ACL.prototype.getRoleWriteAccess=function(e){if(e instanceof t.Role&&(e=e.getName()),r.isString(e))return this.getWriteAccess("role:"+e);throw new Error("role must be a AV.Role or a String")},t.ACL.prototype.setRoleReadAccess=function(e,n){if(e instanceof t.Role&&(e=e.getName()),r.isString(e))return void this.setReadAccess("role:"+e,n);throw new Error("role must be a AV.Role or a String")},t.ACL.prototype.setRoleWriteAccess=function(e,n){if(e instanceof t.Role&&(e=e.getName()),r.isString(e))return void this.setWriteAccess("role:"+e,n);throw new Error("role must be a AV.Role or a String")}}},function(t,e,n){"use strict";var r=n(2),i=r(n(29)),o=r(n(104)),a=r(n(102)),u=r(n(39)),s=n(1);t.exports=function(t){t.Op=function(){this._initialize.apply(this,arguments)},s.extend(t.Op.prototype,{_initialize:function(){}}),s.extend(t.Op,{_extend:t._extend,_opDecoderMap:{},_registerDecoder:function(e,n){t.Op._opDecoderMap[e]=n},_decode:function(e){var n=t.Op._opDecoderMap[e.__op];return n?n(e):void 0}}),t.Op._registerDecoder("Batch",function(e){var n=null;return t._arrayEach(e.ops,function(e){e=t.Op._decode(e),n=e._mergeWithPrevious(n)}),n}),t.Op.Set=t.Op._extend({_initialize:function(t){this._value=t},value:function(){return this._value},toJSON:function(){return t._encode(this.value())},_mergeWithPrevious:function(t){return this},_estimate:function(t){return this.value()}}),t.Op._UNSET={},t.Op.Unset=t.Op._extend({toJSON:function(){return{__op:"Delete"}},_mergeWithPrevious:function(t){return this},_estimate:function(e){return t.Op._UNSET}}),t.Op._registerDecoder("Delete",function(e){return new t.Op.Unset}),t.Op.Increment=t.Op._extend({_initialize:function(t){this._amount=t},amount:function(){return this._amount},toJSON:function(){return{__op:"Increment",amount:this._amount}},_mergeWithPrevious:function(e){if(e){if(e instanceof t.Op.Unset)return new t.Op.Set(this.amount());if(e instanceof t.Op.Set)return new t.Op.Set(e.value()+this.amount());if(e instanceof t.Op.Increment)return new t.Op.Increment(this.amount()+e.amount());throw new Error("Op is invalid after previous op.")}return this},_estimate:function(t){return t?t+this.amount():this.amount()}}),t.Op._registerDecoder("Increment",function(e){return new t.Op.Increment(e.amount)}),t.Op.BitAnd=t.Op._extend({_initialize:function(t){this._value=t},value:function(){return this._value},toJSON:function(){return{__op:"BitAnd",value:this.value()}},_mergeWithPrevious:function(e){if(e){if(e instanceof t.Op.Unset)return new t.Op.Set(0);if(e instanceof t.Op.Set)return new t.Op.Set(e.value()&this.value());throw new Error("Op is invalid after previous op.")}return this},_estimate:function(t){return t&this.value()}}),t.Op._registerDecoder("BitAnd",function(e){return new t.Op.BitAnd(e.value)}),t.Op.BitOr=t.Op._extend({_initialize:function(t){this._value=t},value:function(){return this._value},toJSON:function(){return{__op:"BitOr",value:this.value()}},_mergeWithPrevious:function(e){if(e){if(e instanceof t.Op.Unset)return new t.Op.Set(this.value());if(e instanceof t.Op.Set)return new t.Op.Set(e.value()|this.value());throw new Error("Op is invalid after previous op.")}return this},_estimate:function(t){return t|this.value()}}),t.Op._registerDecoder("BitOr",function(e){return new t.Op.BitOr(e.value)}),t.Op.BitXor=t.Op._extend({_initialize:function(t){this._value=t},value:function(){return this._value},toJSON:function(){return{__op:"BitXor",value:this.value()}},_mergeWithPrevious:function(e){if(e){if(e instanceof t.Op.Unset)return new t.Op.Set(this.value());if(e instanceof t.Op.Set)return new t.Op.Set(e.value()^this.value());throw new Error("Op is invalid after previous op.")}return this},_estimate:function(t){return t^this.value()}}),t.Op._registerDecoder("BitXor",function(e){return new t.Op.BitXor(e.value)}),t.Op.Add=t.Op._extend({_initialize:function(t){this._objects=t},objects:function(){return this._objects},toJSON:function(){return{__op:"Add",objects:t._encode(this.objects())}},_mergeWithPrevious:function(e){if(e){if(e instanceof t.Op.Unset)return new t.Op.Set(this.objects());if(e instanceof t.Op.Set)return new t.Op.Set(this._estimate(e.value()));if(e instanceof t.Op.Add){var n;return new t.Op.Add((0,i.default)(n=e.objects()).call(n,this.objects()))}throw new Error("Op is invalid after previous op.")}return this},_estimate:function(t){return t?(0,i.default)(t).call(t,this.objects()):s.clone(this.objects())}}),t.Op._registerDecoder("Add",function(e){return new t.Op.Add(t._decode(e.objects))}),t.Op.AddUnique=t.Op._extend({_initialize:function(t){this._objects=s.uniq(t)},objects:function(){return this._objects},toJSON:function(){return{__op:"AddUnique",objects:t._encode(this.objects())}},_mergeWithPrevious:function(e){if(e){if(e instanceof t.Op.Unset)return new t.Op.Set(this.objects());if(e instanceof t.Op.Set)return new t.Op.Set(this._estimate(e.value()));if(e instanceof t.Op.AddUnique)return new t.Op.AddUnique(this._estimate(e.objects()));throw new Error("Op is invalid after previous op.")}return this},_estimate:function(e){if(e){var n=s.clone(e);return t._arrayEach(this.objects(),function(e){if(e instanceof t.Object&&e.id){var r=(0,o.default)(s).call(s,n,function(n){return n instanceof t.Object&&n.id===e.id});if(r){var i=(0,a.default)(s).call(s,n,r);n[i]=e}else n.push(e)}else s.contains(n,e)||n.push(e)}),n}return s.clone(this.objects())}}),t.Op._registerDecoder("AddUnique",function(e){return new t.Op.AddUnique(t._decode(e.objects))}),t.Op.Remove=t.Op._extend({_initialize:function(t){this._objects=s.uniq(t)},objects:function(){return this._objects},toJSON:function(){return{__op:"Remove",objects:t._encode(this.objects())}},_mergeWithPrevious:function(e){if(e){if(e instanceof t.Op.Unset)return e;if(e instanceof t.Op.Set)return new t.Op.Set(this._estimate(e.value()));if(e instanceof t.Op.Remove)return new t.Op.Remove(s.union(e.objects(),this.objects()));throw new Error("Op is invalid after previous op.")}return this},_estimate:function(e){if(e){var n=s.difference(e,this.objects());return t._arrayEach(this.objects(),function(e){e instanceof t.Object&&e.id&&(n=s.reject(n,function(n){return n instanceof t.Object&&n.id===e.id}))}),n}return[]}}),t.Op._registerDecoder("Remove",function(e){return new t.Op.Remove(t._decode(e.objects))}),t.Op.Relation=t.Op._extend({_initialize:function(e,n){this._targetClassName=null;var r=this,i=function(e){if(e instanceof t.Object){if(!e.id)throw new Error("You can't add an unsaved AV.Object to a relation.");if(r._targetClassName||(r._targetClassName=e.className),r._targetClassName!==e.className)throw new Error("Tried to create a AV.Relation with 2 different types: "+r._targetClassName+" and "+e.className+".");return e.id}return e};this.relationsToAdd=s.uniq((0,u.default)(s).call(s,e,i)),this.relationsToRemove=s.uniq((0,u.default)(s).call(s,n,i))},added:function(){var e=this;return(0,u.default)(s).call(s,this.relationsToAdd,function(n){var r=t.Object._create(e._targetClassName);return r.id=n,r})},removed:function(){var e=this;return(0,u.default)(s).call(s,this.relationsToRemove,function(n){var r=t.Object._create(e._targetClassName);return r.id=n,r})},toJSON:function(){var t=null,e=null,n=this,r=function(t){return{__type:"Pointer",className:n._targetClassName,objectId:t}},i=null;return this.relationsToAdd.length>0&&(i=(0,u.default)(s).call(s,this.relationsToAdd,r),t={__op:"AddRelation",objects:i}),this.relationsToRemove.length>0&&(i=(0,u.default)(s).call(s,this.relationsToRemove,r),e={__op:"RemoveRelation",objects:i}),t&&e?{__op:"Batch",ops:[t,e]}:t||e||{}},_mergeWithPrevious:function(e){if(e){if(e instanceof t.Op.Unset)throw new Error("You can't modify a relation after deleting it.");if(e instanceof t.Op.Relation){if(e._targetClassName&&e._targetClassName!==this._targetClassName)throw new Error("Related object must be of class "+e._targetClassName+", but "+this._targetClassName+" was passed in.");var n=s.union(s.difference(e.relationsToAdd,this.relationsToRemove),this.relationsToAdd),r=s.union(s.difference(e.relationsToRemove,this.relationsToAdd),this.relationsToRemove),i=new t.Op.Relation(n,r);return i._targetClassName=this._targetClassName,i}throw new Error("Op is invalid after previous op.")}return this},_estimate:function(e,n,r){if(e){if(e instanceof t.Relation){if(this._targetClassName)if(e.targetClassName){if(e.targetClassName!==this._targetClassName)throw new Error("Related object must be a "+e.targetClassName+", but a "+this._targetClassName+" was passed in.")}else e.targetClassName=this._targetClassName;return e}throw new Error("Op is invalid after previous op.")}new t.Relation(n,r).targetClassName=this._targetClassName}}),t.Op._registerDecoder("AddRelation",function(e){return new t.Op.Relation(t._decode(e.objects),[])}),t.Op._registerDecoder("RemoveRelation",function(e){return new t.Op.Relation([],t._decode(e.objects))})}},function(t,e,n){var r=n(441);t.exports=r},function(t,e,n){var r=n(20),i=n(442),o=Array.prototype;t.exports=function(t){var e=t.find;return t===o||r(o,t)&&e===o.find?i:e}},function(t,e,n){n(443);var r=n(38);t.exports=r("Array").find},function(t,e,n){"use strict";var r=n(0),i=n(101).find,o=n(152),a=!0;"find"in[]&&Array(1).find(function(){a=!1}),r({target:"Array",proto:!0,forced:a},{find:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0)}}),o("find")},function(t,e,n){"use strict";var r=n(1);t.exports=function(t){t.Relation=function(t,e){if(!r.isString(e))throw new TypeError("key must be a string");this.parent=t,this.key=e,this.targetClassName=null},t.Relation.reverseQuery=function(e,n,r){var i=new t.Query(e);return i.equalTo(n,r._toPointer()),i},r.extend(t.Relation.prototype,{_ensureParentAndKey:function(t,e){if(this.parent=this.parent||t,this.key=this.key||e,this.parent!==t)throw new Error("Internal Error. Relation retrieved from two different Objects.");if(this.key!==e)throw new Error("Internal Error. Relation retrieved from two different keys.")},add:function(e){r.isArray(e)||(e=[e]);var n=new t.Op.Relation(e,[]);this.parent.set(this.key,n),this.targetClassName=n._targetClassName},remove:function(e){r.isArray(e)||(e=[e]);var n=new t.Op.Relation([],e);this.parent.set(this.key,n),this.targetClassName=n._targetClassName},toJSON:function(){return{__type:"Relation",className:this.targetClassName}},query:function(){var e,n;return this.targetClassName?(e=t.Object._getSubclass(this.targetClassName),n=new t.Query(e)):(e=t.Object._getSubclass(this.parent.className),n=new t.Query(e),n._defaultParams.redirectClassNameForKey=this.key),n._addCondition("$relatedTo","object",this.parent._toPointer()),n._addCondition("$relatedTo","key",this.key),n}})}},function(t,e,n){"use strict";var r=n(2),i=r(n(10)),o=n(1),a=n(446),u=n(447),s=n(495),c=n(40),f=n(25),l=f.request,d=f._request,h=n(28),p=h.tap,v=h.transformFetchOptions,_=n(60)("leancloud:file"),b=n(499);t.exports=function(t){var e=function(t){return o.isString(t)?t.match(/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/)[4]:""},n=function(t){if(t<26)return String.fromCharCode(65+t);if(t<52)return String.fromCharCode(t-26+97);if(t<62)return String.fromCharCode(t-52+48);if(62===t)return"+";if(63===t)return"/";throw new Error("Tried to encode large digit "+t+" in base64.")},r=function(t){var e=[];return e.length=Math.ceil(t.length/3),o.times(e.length,function(r){var i=t[3*r],o=t[3*r+1]||0,a=t[3*r+2]||0,u=3*r+1>2&63),n(i<<4&48|o>>4&15),u?n(o<<2&60|a>>6&3):"=",s?n(63&a):"="].join("")}),e.join("")};t.File=function(n,i,a){if(this.attributes={name:n,url:"",metaData:{},base64:""},o.isString(i))throw new TypeError("Creating an AV.File from a String is not yet supported.");o.isArray(i)&&(this.attributes.metaData.size=i.length,i={base64:r(i)}),this._extName="",this._data=i,this._uploadHeaders={},i&&i.blob&&"string"==typeof i.blob.uri&&(this._extName=e(i.blob.uri)),"undefined"!=typeof Blob&&i instanceof Blob&&(i.size&&(this.attributes.metaData.size=i.size),i.name&&(this._extName=e(i.name)));var u;if(i&&i.owner)u=i.owner;else if(!t._config.disableCurrentUser)try{u=t.User.current()}catch(t){if("SYNC_API_NOT_AVAILABLE"!==t.code)throw t}this.attributes.metaData.owner=u?u.id:"unknown",this.set("mime_type",a)},t.File.withURL=function(e,n,r,i){if(!e||!n)throw new Error("Please provide file name and url");var o=new t.File(e,null,i);if(r)for(var a in r)o.attributes.metaData[a]||(o.attributes.metaData[a]=r[a]);return o.attributes.url=n,o.attributes.metaData.__source="external",o.attributes.metaData.size=0,o},t.File.createWithoutData=function(e){if(!e)throw new TypeError("The objectId must be provided");var n=new t.File;return n.id=e,n},t.File.censor=function(e){if(!t._config.masterKey)throw new Error("Cannot censor a file without masterKey");return l({method:"POST",path:"/files/".concat(e,"/censor"),authOptions:{useMasterKey:!0}}).then(function(t){return t.censorResult})},o.extend(t.File.prototype,{className:"_File",_toFullJSON:function(e){var n=this,r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=o.clone(this.attributes);return t._objectEach(i,function(n,o){i[o]=t._encode(n,e,void 0,r)}),t._objectEach(this._operations,function(t,e){i[e]=t}),o.has(this,"id")&&(i.objectId=this.id),["createdAt","updatedAt"].forEach(function(t){if(o.has(n,t)){var e=n[t];i[t]=o.isDate(e)?e.toJSON():e}}),r&&(i.__type="File"),i},toFullJSON:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return this._toFullJSON(t)},toJSON:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[this];return this._toFullJSON(n,!1)},_toPointer:function(){return{__type:"Pointer",className:this.className,objectId:this.id}},getACL:function(){return this._acl},setACL:function(e){return e instanceof t.ACL?(this._acl=e,this):new c(c.OTHER_CAUSE,"ACL must be a AV.ACL.")},name:function(){return this.get("name")},url:function(){return this.get("url")},get:function(t){switch(t){case"objectId":return this.id;case"url":case"name":case"mime_type":case"metaData":case"createdAt":case"updatedAt":return this.attributes[t];default:return this.attributes.metaData[t]}},set:function(){for(var t=this,e=function(e,n){switch(e){case"name":case"url":case"mime_type":case"base64":case"metaData":t.attributes[e]=n;break;default:t.attributes.metaData[e]=n}},n=arguments.length,r=new Array(n),i=0;i2&&void 0!==arguments[2]?arguments[2]:100,r=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:"png",o=this.attributes.url;if(!o)throw new Error("Invalid url.");if(!t||!e||t<=0||e<=0)throw new Error("Invalid width or height value.");if(n<=0||n>100)throw new Error("Invalid quality value.");return o+"?imageView/"+(r?2:1)+"/w/"+t+"/h/"+e+"/q/"+n+"/format/"+i},size:function(){return this.metaData().size},ownerId:function(){return this.metaData().owner},destroy:function(t){return this.id?d("files",null,this.id,"DELETE",null,t):i.default.reject(new Error("The file id does not eixst."))},_fileToken:function(t,n){var r=this.attributes.name,i=e(r);!i&&this._extName&&(r+=this._extName,i=this._extName);var o={name:r,keep_file_name:n.keepFileName,key:n.key,ACL:this._acl,mime_type:t,metaData:this.attributes.metaData};return d("fileTokens",null,null,"POST",o,n)},save:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(this.id)throw new Error("File is already saved.");if(!this._previousSave)if(this._data){var n=this.get("mime_type");this._previousSave=this._fileToken(n,e).then(function(r){return r.mime_type&&(n=r.mime_type,t.set("mime_type",n)),t._token=r.token,i.default.resolve().then(function(){var e=t._data;if(e&&e.base64)return b(e.base64,n);if(e&&e.blob)return!e.blob.type&&n&&(e.blob.type=n),e.blob.name||(e.blob.name=t.get("name")),e.blob;if("undefined"!=typeof Blob&&e instanceof Blob)return e;throw new TypeError("malformed file data")}).then(function(n){var i=o.extend({},e);switch(e.onprogress&&(i.onprogress=function(t){if("download"!==t.direction)return e.onprogress(t)}),r.provider){case"s3":return s(r,n,t,i);case"qcloud":return a(r,n,t,i);case"qiniu":default:return u(r,n,t,i)}}).then(p(function(){return t._callback(!0)}),function(e){throw t._callback(!1),e})})}else if(this.attributes.url&&"external"===this.attributes.metaData.__source){var r={name:this.attributes.name,ACL:this._acl,metaData:this.attributes.metaData,mime_type:this.mimeType,url:this.attributes.url};this._previousSave=d("files",null,null,"post",r,e).then(function(e){return t.id=e.objectId,t})}return this._previousSave},_callback:function(t){d("fileCallback",null,null,"post",{token:this._token,result:t}).catch(_),delete this._token,delete this._data},fetch:function(t,e){if(!this.id)throw new Error("Cannot fetch unsaved file");return d("files",null,this.id,"GET",v(t),e).then(this._finishFetch.bind(this))},_finishFetch:function(e){var n=t.Object.prototype.parse(e);return n.attributes={name:n.name,url:n.url,mime_type:n.mime_type,bucket:n.bucket},n.attributes.metaData=n.metaData||{},n.id=n.objectId,delete n.objectId,delete n.metaData,delete n.url,delete n.name,delete n.mime_type,delete n.bucket,o.extend(this,n),this},censor:function(){if(!this.id)throw new Error("Cannot censor an unsaved file");return t.File.censor(this.id)}})}},function(t,e,n){"use strict";var r=n(61),i=r.getAdapter,o=n(60)("cos");t.exports=function(t,e,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},a=t.upload_url+"?sign="+encodeURIComponent(t.token),u={field:"fileContent",data:e,name:n.attributes.name},s={headers:n._uploadHeaders,data:{op:"upload"},onprogress:r.onprogress};return o("url: %s, file: %o, options: %o",a,u,s),i("upload")(a,u,s).then(function(e){if(o(e.status,e.data),!1===e.ok){var r=new Error(e.status);throw r.response=e,r}return n.attributes.url=t.url,n._bucket=t.bucket,n.id=t.objectId,n},function(t){var e=t.response;throw e&&(o(e.status,e.data),t.statusCode=e.status,t.response=e.data),t})}},function(t,e,n){"use strict";function r(t){var e=i();return function(){var n,r=(0,m.default)(t);if(e){var i=(0,m.default)(this).constructor;n=v(r,arguments,i)}else n=r.apply(this,arguments);return(0,g.default)(this,n)}}function i(){if("undefined"==typeof Reflect||!v)return!1;if(v.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(v(Boolean,[],function(){})),!0}catch(t){return!1}}function o(t,e){var n=void 0!==h&&p(t)||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=a(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,u=!0,s=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return u=t.done,t},e:function(t){s=!0,o=t},f:function(){try{u||null==n.return||n.return()}finally{if(s)throw o}}}}function a(t,e){var n;if(t){if("string"==typeof t)return u(t,e);var r=l(n=Object.prototype.toString.call(t)).call(n,8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?d(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?u(t,e):void 0}}function u(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n3&&void 0!==arguments[3]?arguments[3]:{},i=t.token,o=t.upload_url||"https://upload.qiniup.com",a={field:"file",data:e,name:n.attributes.name},u={headers:n._uploadHeaders,data:{name:n.attributes.name,key:t.key,token:i},onprogress:r.onprogress};return C("url: %s, file: %o, options: %o",o,a,u),E("upload")(o,a,u).then(function(e){if(C(e.status,e.data),!1===e.ok){var r=e.status;e.data&&(r=e.data.error?e.data.error:(0,w.default)(e.data));var i=new Error(r);throw i.response=e,i}return n.attributes.url=t.url,n._bucket=t.bucket,n.id=t.objectId,n},function(t){var e=t.response;throw e&&(C(e.status,e.data),t.statusCode=e.status,t.response=e.data),t})}function c(t){var e,n=N(unescape(encodeURIComponent(t))),r="",i=o(n);try{for(i.s();!(e=i.n()).done;){var a=e.value;switch(a){case"+":r+="-";break;case"/":r+="_";break;default:r+=a}}}catch(t){i.e(t)}finally{i.f()}return r}function f(t){return"undefined"!=typeof Blob&&t instanceof Blob}var l=n(81),d=n(448),h=n(453),p=n(231),v=n(459),_=n(2),b=_(n(463)),g=_(n(485)),m=_(n(487)),y=_(n(492)),O=_(n(493)),w=_(n(34)),j=_(n(29)),A=_(n(10)),x=_(n(81)),S=n(61),E=S.getAdapter,C=n(60)("leancloud:qiniu"),T=n(103),N=n(494),I=16777216,U=function(){function t(e,n,r,i){var o,a,u=this;(0,y.default)(this,t),this.uploadInfo=e,this.data=n,this.file=r,this.size=void 0,this.offset=0,this.uploadedChunks=0;var s=c(e.key),f=e.upload_url||"https://upload.qiniup.com";this.baseURL=(0,j.default)(o=(0,j.default)(a="".concat(f,"/buckets/")).call(a,e.bucket,"/objects/")).call(o,s,"/uploads"),this.upToken="UpToken "+e.token,this.uploaded=0,i&&i.onprogress&&(this.onProgress=function(t){var e=t.loaded;(e+=u.uploadedChunks*I)<=u.uploaded||(u.size?i.onprogress({loaded:e,total:u.size,percent:e/u.size*100}):i.onprogress({loaded:e}),u.uploaded=e)})}return(0,O.default)(t,[{key:"getUploadId",value:function(){return T({method:"POST",url:this.baseURL,headers:{Authorization:this.upToken}}).then(function(t){return t.uploadId})}},{key:"getChunk",value:function(){throw new Error("Not implemented")}},{key:"uploadPart",value:function(t,e,n){var r,i;return T({method:"PUT",url:(0,j.default)(r=(0,j.default)(i="".concat(this.baseURL,"/")).call(i,t,"/")).call(r,e),headers:{Authorization:this.upToken},data:n,onprogress:this.onProgress}).then(function(t){var n=t.etag;return{partNumber:e,etag:n}})}},{key:"stopUpload",value:function(t){var e;return T({method:"DELETE",url:(0,j.default)(e="".concat(this.baseURL,"/")).call(e,t),headers:{Authorization:this.upToken}})}},{key:"upload",value:function(){var t=this,e=[];return this.getUploadId().then(function(n){return function r(){return A.default.resolve(t.getChunk()).then(function(i){if(i){var o=e.length+1;return t.uploadPart(n,o,i).then(function(n){return e.push(n),t.uploadedChunks++,r()})}}).catch(function(e){return t.stopUpload(n).then(function(){return A.default.reject(e)})})}().then(function(){var r;return T({method:"POST",url:(0,j.default)(r="".concat(t.baseURL,"/")).call(r,n),headers:{Authorization:t.upToken},data:{parts:e,fname:t.file.attributes.name,mimeType:t.file.attributes.mime_type}})})}).then(function(){return t.file.attributes.url=t.uploadInfo.url,t.file._bucket=t.uploadInfo.bucket,t.file.id=t.uploadInfo.objectId,t.file})}}]),t}(),k=function(t){function e(t,r,i,o){var a;return(0,y.default)(this,e),a=n.call(this,t,r,i,o),a.size=r.size,a}(0,b.default)(e,t);var n=r(e);return(0,O.default)(e,[{key:"getChunk",value:function(){var t;if(this.offset>=this.size)return null;var e=(0,x.default)(t=this.data).call(t,this.offset,this.offset+I);return this.offset+=e.size,e}}]),e}(U);t.exports=function(t,e,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return f(e)&&e.size>=67108864?new k(t,e,n,r).upload():s(t,e,n,r)}},function(t,e,n){t.exports=n(230)},function(t,e,n){n(95),n(450);var r=n(13);t.exports=r.Array.from},function(t,e,n){var r=n(0),i=n(451);r({target:"Array",stat:!0,forced:!n(160)(function(t){Array.from(t)})},{from:i})},function(t,e,n){"use strict";var r=n(50),i=n(11),o=n(35),a=n(452),u=n(149),s=n(93),c=n(42),f=n(99),l=n(150),d=n(90),h=Array;t.exports=function(t){var e=o(t),n=s(this),p=arguments.length,v=p>1?arguments[1]:void 0,_=void 0!==v;_&&(v=r(v,p>2?arguments[2]:void 0));var b,g,m,y,O,w,j=d(e),A=0;if(!j||this===h&&u(j))for(b=c(e),g=n?new this(b):h(b);b>A;A++)w=_?v(e[A],A):e[A],f(g,A,w);else for(y=l(e,j),O=y.next,g=n?new this:[];!(m=i(O,y)).done;A++)w=_?a(y,v,[m.value,A],!0):m.value,f(g,A,w);return g.length=A,g}},function(t,e,n){var r=n(21),i=n(151);t.exports=function(t,e,n,o){try{return o?e(r(n)[0],n[1]):e(n)}catch(e){i(t,"throw",e)}}},function(t,e,n){t.exports=n(226)},function(t,e,n){t.exports=n(455)},function(t,e,n){var r=n(456);t.exports=r},function(t,e,n){var r=n(457);t.exports=r},function(t,e,n){var r=n(458);n(73),t.exports=r},function(t,e,n){n(70),n(95);var r=n(90);t.exports=r},function(t,e,n){t.exports=n(460)},function(t,e,n){var r=n(461);t.exports=r},function(t,e,n){n(462);var r=n(13);t.exports=r.Reflect.construct},function(t,e,n){var r=n(0),i=n(16),o=n(62),a=n(232),u=n(156),s=n(21),c=n(17),f=n(51),l=n(4),d=i("Reflect","construct"),h=Object.prototype,p=[].push,v=l(function(){function t(){}return!(d(function(){},[],t)instanceof t)}),_=!l(function(){d(function(){})}),b=v||_;r({target:"Reflect",stat:!0,forced:b,sham:b},{construct:function(t,e){u(t),s(e);var n=arguments.length<3?t:u(arguments[2]);if(_&&!v)return d(t,e,n);if(t==n){switch(e.length){case 0:return new t;case 1:return new t(e[0]);case 2:return new t(e[0],e[1]);case 3:return new t(e[0],e[1],e[2]);case 4:return new t(e[0],e[1],e[2],e[3])}var r=[null];return o(p,r,e),new(o(a,t,r))}var i=n.prototype,l=f(c(i)?i:h),b=o(t,l,e);return c(b)?b:l}})},function(t,e,n){function r(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=i(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),o(t,"prototype",{writable:!1}),e&&a(t,e)}var i=n(464),o=n(137),a=n(474);t.exports=r,t.exports.__esModule=!0,t.exports.default=t.exports},function(t,e,n){t.exports=n(465)},function(t,e,n){t.exports=n(466)},function(t,e,n){var r=n(467);t.exports=r},function(t,e,n){var r=n(468);t.exports=r},function(t,e,n){var r=n(469);t.exports=r},function(t,e,n){n(470);var r=n(13),i=r.Object;t.exports=function(t,e){return i.create(t,e)}},function(t,e,n){n(0)({target:"Object",stat:!0,sham:!n(19)},{create:n(51)})},function(t,e,n){t.exports=n(472)},function(t,e,n){var r=n(473);t.exports=r},function(t,e,n){var r=n(224);t.exports=r},function(t,e,n){function r(e,n){var a;return t.exports=r=i?o(a=i).call(a):function(t,e){return t.__proto__=e,t},t.exports.__esModule=!0,t.exports.default=t.exports,r(e,n)}var i=n(233),o=n(234);t.exports=r,t.exports.__esModule=!0,t.exports.default=t.exports},function(t,e,n){t.exports=n(476)},function(t,e,n){var r=n(477);t.exports=r},function(t,e,n){var r=n(221);t.exports=r},function(t,e,n){t.exports=n(479)},function(t,e,n){var r=n(480);t.exports=r},function(t,e,n){var r=n(481);t.exports=r},function(t,e,n){var r=n(482);t.exports=r},function(t,e,n){var r=n(20),i=n(483),o=Function.prototype;t.exports=function(t){var e=t.bind;return t===o||r(o,t)&&e===o.bind?i:e}},function(t,e,n){n(484);var r=n(38);t.exports=r("Function").bind},function(t,e,n){var r=n(0),i=n(232);r({target:"Function",proto:!0,forced:Function.bind!==i},{bind:i})},function(t,e,n){function r(t,e){if(e&&("object"===i(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return o(t)}var i=n(135).default,o=n(486);t.exports=r,t.exports.__esModule=!0,t.exports.default=t.exports},function(t,e){function n(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}t.exports=n,t.exports.__esModule=!0,t.exports.default=t.exports},function(t,e,n){function r(e){var n;return t.exports=r=i?o(n=a).call(n):function(t){return t.__proto__||a(t)},t.exports.__esModule=!0,t.exports.default=t.exports,r(e)}var i=n(233),o=n(234),a=n(488);t.exports=r,t.exports.__esModule=!0,t.exports.default=t.exports},function(t,e,n){t.exports=n(489)},function(t,e,n){t.exports=n(490)},function(t,e,n){var r=n(491);t.exports=r},function(t,e,n){var r=n(216);t.exports=r},function(t,e){function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}t.exports=n,t.exports.__esModule=!0,t.exports.default=t.exports},function(t,e,n){function r(t,e){for(var n=0;n255||a>255||u>255)throw new TypeError("Failed to encode base64: The string to be encoded contains characters outside of the Latin1 range.");var s=r<<16|a<<8|u;e+=o.charAt(s>>18&63)+o.charAt(s>>12&63)+o.charAt(s>>6&63)+o.charAt(63&s)}var c=t.length%3;return c?(0,i.default)(e).call(e,0,c-3)+"===".substring(c):e}},function(t,e,n){"use strict";var r=n(1),i=n(103);t.exports=function(t,e,n){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return i({url:t.upload_url,method:"PUT",data:e,headers:r.extend({"Content-Type":n.get("mime_type"),"Cache-Control":"public, max-age=31536000"},n._uploadHeaders),onprogress:o.onprogress}).then(function(){return n.attributes.url=t.url,n._bucket=t.bucket,n.id=t.objectId,n})}},function(t,e,n){!function(){var e=n(497),r=n(235).utf8,i=n(498),o=n(235).bin,a=function(t,n){t.constructor==String?t=n&&"binary"===n.encoding?o.stringToBytes(t):r.stringToBytes(t):i(t)?t=Array.prototype.slice.call(t,0):Array.isArray(t)||(t=t.toString());for(var u=e.bytesToWords(t),s=8*t.length,c=1732584193,f=-271733879,l=-1732584194,d=271733878,h=0;h>>24)|4278255360&(u[h]<<24|u[h]>>>8);u[s>>>5]|=128<>>9<<4)]=s;for(var p=a._ff,v=a._gg,_=a._hh,b=a._ii,h=0;h>>0,f=f+m>>>0,l=l+y>>>0,d=d+O>>>0}return e.endian([c,f,l,d])};a._ff=function(t,e,n,r,i,o,a){var u=t+(e&n|~e&r)+(i>>>0)+a;return(u<>>32-o)+e},a._gg=function(t,e,n,r,i,o,a){var u=t+(e&r|n&~r)+(i>>>0)+a;return(u<>>32-o)+e},a._hh=function(t,e,n,r,i,o,a){var u=t+(e^n^r)+(i>>>0)+a;return(u<>>32-o)+e},a._ii=function(t,e,n,r,i,o,a){var u=t+(n^(e|~r))+(i>>>0)+a;return(u<>>32-o)+e},a._blocksize=16,a._digestsize=16,t.exports=function(t,n){if(void 0===t||null===t)throw new Error("Illegal argument "+t);var r=e.wordsToBytes(a(t,n));return n&&n.asBytes?r:n&&n.asString?o.bytesToString(r):e.bytesToHex(r)}}()},function(t,e){!function(){var e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",n={rotl:function(t,e){return t<>>32-e},rotr:function(t,e){return t<<32-e|t>>>e},endian:function(t){if(t.constructor==Number)return 16711935&n.rotl(t,8)|4278255360&n.rotl(t,24);for(var e=0;e0;t--)e.push(Math.floor(256*Math.random()));return e},bytesToWords:function(t){for(var e=[],n=0,r=0;n>>5]|=t[n]<<24-r%32;return e},wordsToBytes:function(t){for(var e=[],n=0;n<32*t.length;n+=8)e.push(t[n>>>5]>>>24-n%32&255);return e},bytesToHex:function(t){for(var e=[],n=0;n>>4).toString(16)),e.push((15&t[n]).toString(16));return e.join("")},hexToBytes:function(t){for(var e=[],n=0;n>>6*(3-o)&63)):n.push("=");return n.join("")},base64ToBytes:function(t){t=t.replace(/[^A-Z0-9+\/]/gi,"");for(var n=[],r=0,i=0;r>>6-2*i);return n}};t.exports=n}()},function(t,e){function n(t){return!!t.constructor&&"function"==typeof t.constructor.isBuffer&&t.constructor.isBuffer(t)}function r(t){return"function"==typeof t.readFloatLE&&"function"==typeof t.slice&&n(t.slice(0,0))}/*! + * Determine if an object is a Buffer + * + * @author Feross Aboukhadijeh + * @license MIT + */ +t.exports=function(t){return null!=t&&(n(t)||r(t)||!!t._isBuffer)}},function(t,e,n){"use strict";var r=n(2),i=r(n(102)),o=function(t,e){var n,r;(0,i.default)(t).call(t,"base64")<0?r=atob(t):(0,i.default)(n=t.split(",")[0]).call(n,"base64")>=0?(e=e||t.split(",")[0].split(":")[1].split(";")[0],r=atob(t.split(",")[1])):r=unescape(t.split(",")[1]);for(var o=new Uint8Array(r.length),a=0;a2&&void 0!==arguments[2]?arguments[2]:[];return this._toFullJSON(n,!1)},toFullJSON:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return this._toFullJSON(t)},_toFullJSON:function(e){var n=this,r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=v.clone(this.attributes);if(v.isArray(e))var o=(0,f.default)(e).call(e,this);return t._objectEach(i,function(e,n){i[n]=t._encode(e,o,void 0,r)}),t._objectEach(this._operations,function(t,e){i[e]=t}),v.has(this,"id")&&(i.objectId=this.id),["createdAt","updatedAt"].forEach(function(t){if(v.has(n,t)){var e=n[t];i[t]=v.isDate(e)?e.toJSON():e}}),r&&(i.__type="Object",v.isArray(e)&&e.length&&(i.__type="Pointer"),i.className=this.className),i},_refreshCache:function(){var e=this;e._refreshingCache||(e._refreshingCache=!0,t._objectEach(this.attributes,function(n,r){n instanceof t.Object?n._refreshCache():v.isObject(n)&&e._resetCacheForKey(r)&&e.set(r,new t.Op.Set(n),{silent:!0})}),delete e._refreshingCache)},dirty:function(t){this._refreshCache();var e=v.last(this._opSetQueue);return t?!!e[t]:!this.id||(0,l.default)(v).call(v,e).length>0},dirtyKeys:function(){this._refreshCache();var t=v.last(this._opSetQueue);return(0,l.default)(v).call(v,t)},_toPointer:function(){return{__type:"Pointer",className:this.className,objectId:this.id}},get:function(t){switch(t){case"objectId":return this.id;case"createdAt":case"updatedAt":return this[t];default:return this.attributes[t]}},relation:function(e){var n=this.get(e);if(n){if(!(n instanceof t.Relation))throw new Error("Called relation() on non-relation field "+e);return n._ensureParentAndKey(this,e),n}return new t.Relation(this,e)},escape:function(t){var e=this._escapedAttributes[t];if(e)return e;var n,r=this.attributes[t];return n=y(r)?"":v.escape(r.toString()),this._escapedAttributes[t]=n,n},has:function(t){return!y(this.attributes[t])},_mergeMagicFields:function(e){var n=this,r=["objectId","createdAt","updatedAt"];return t._arrayEach(r,function(r){e[r]&&("objectId"===r?n.id=e[r]:"createdAt"!==r&&"updatedAt"!==r||v.isDate(e[r])?n[r]=e[r]:n[r]=t._parseDate(e[r]),delete e[r])}),e},_startSave:function(){this._opSetQueue.push({})},_cancelSave:function(){var e=v.first(this._opSetQueue);this._opSetQueue=v.rest(this._opSetQueue);var n=v.first(this._opSetQueue);t._objectEach(e,function(t,r){var i=e[r],o=n[r];i&&o?n[r]=o._mergeWithPrevious(i):i&&(n[r]=i)}),this._saving=this._saving-1},_finishSave:function(e){var n,r={};t._traverse(this.attributes,function(e){e instanceof t.Object&&e.id&&e._hasData&&(r[e.id]=e)});var i=v.first(this._opSetQueue);this._opSetQueue=v.rest(this._opSetQueue),this._applyOpSet(i,this._serverData),this._mergeMagicFields(e);var o=this;t._objectEach(e,function(e,n){o._serverData[n]=t._decode(e,n);var i=t._traverse(o._serverData[n],function(e){if(e instanceof t.Object&&r[e.id])return r[e.id]});i&&(o._serverData[n]=i)}),this._rebuildAllEstimatedData();var u=(0,a.default)(n=this._opSetQueue).call(n,v.clone);this._refreshCache(),this._opSetQueue=u,this._saving=this._saving-1},_finishFetch:function(e,n){this._opSetQueue=[{}],this._mergeMagicFields(e);var r=this;t._objectEach(e,function(e,n){r._serverData[n]=t._decode(e,n)}),this._rebuildAllEstimatedData(),this._refreshCache(),this._opSetQueue=[{}],this._hasData=n},_applyOpSet:function(e,n){var r=this;t._objectEach(e,function(e,i){var a=A(n,i),u=(0,o.default)(a,3),s=u[0],c=u[1],f=u[2];j(n,i,e._estimate(s,r,i)),c&&c[f]===t.Op._UNSET&&delete c[f]})},_resetCacheForKey:function(e){var n=this.attributes[e];if(v.isObject(n)&&!(n instanceof t.Object)&&!(n instanceof t.File)){var r=(0,d.default)(E(n));if(this._hashedJSON[e]!==r){var i=!!this._hashedJSON[e];return this._hashedJSON[e]=r,i}}return!1},_rebuildEstimatedDataForKey:function(e){var n=this;delete this.attributes[e],this._serverData[e]&&(this.attributes[e]=this._serverData[e]),t._arrayEach(this._opSetQueue,function(r){var i=r[e];if(i){var a=A(n.attributes,e),u=(0,o.default)(a,4),s=u[0],c=u[1],f=u[2],l=u[3];j(n.attributes,e,i._estimate(s,n,e)),c&&c[f]===t.Op._UNSET&&delete c[f],n._resetCacheForKey(l)}})},_rebuildAllEstimatedData:function(){var e=this,n=v.clone(this.attributes);this.attributes=v.clone(this._serverData),t._arrayEach(this._opSetQueue,function(n){e._applyOpSet(n,e.attributes),t._objectEach(n,function(t,n){e._resetCacheForKey(n)})}),t._objectEach(n,function(t,n){e.attributes[n]!==t&&e.trigger("change:"+n,e,e.attributes[n],{})}),t._objectEach(this.attributes,function(t,r){v.has(n,r)||e.trigger("change:"+r,e,t,{})})},set:function(e,n,r){var i;if(v.isObject(e)||y(e)?(i=v.mapObject(e,function(e,n){return T(n),t._decode(e,n)}),r=n):(i={},T(e),i[e]=t._decode(n,e)),r=r||{},!i)return this;i instanceof t.Object&&(i=i.attributes),r.unset&&t._objectEach(i,function(e,n){i[n]=new t.Op.Unset});var o=v.clone(i),a=this;t._objectEach(o,function(e,n){e instanceof t.Op&&(o[n]=e._estimate(a.attributes[n],a,n),o[n]===t.Op._UNSET&&delete o[n])}),this._validate(i,r),r.changes={};var u=this._escapedAttributes;return t._arrayEach((0,l.default)(v).call(v,i),function(e){var n=i[e];n instanceof t.Relation&&(n.parent=a),n instanceof t.Op||(n=new t.Op.Set(n));var o=!0;n instanceof t.Op.Set&&v.isEqual(a.attributes[e],n.value)&&(o=!1),o&&(delete u[e],r.silent?a._silent[e]=!0:r.changes[e]=!0);var s=v.last(a._opSetQueue);s[e]=n._mergeWithPrevious(s[e]),a._rebuildEstimatedDataForKey(e),o?(a.changed[e]=a.attributes[e],r.silent||(a._pending[e]=!0)):(delete a.changed[e],delete a._pending[e])}),r.silent||this.change(r),this},unset:function(t,e){return e=e||{},e.unset=!0,this.set(t,null,e)},increment:function(e,n){return(v.isUndefined(n)||v.isNull(n))&&(n=1),this.set(e,new t.Op.Increment(n))},add:function(e,n){return this.set(e,new t.Op.Add(O(n)))},addUnique:function(e,n){return this.set(e,new t.Op.AddUnique(O(n)))},remove:function(e,n){return this.set(e,new t.Op.Remove(O(n)))},bitAnd:function(e,n){return this.set(e,new t.Op.BitAnd(n))},bitOr:function(e,n){return this.set(e,new t.Op.BitOr(n))},bitXor:function(e,n){return this.set(e,new t.Op.BitXor(n))},op:function(t){return v.last(this._opSetQueue)[t]},clear:function(t){t=t||{},t.unset=!0;var e=v.extend(this.attributes,this._operations);return this.set(e,t)},revert:function(t){var e=v.last(this._opSetQueue);return O(t||(0,l.default)(v).call(v,e)).forEach(function(t){delete e[t]}),this._rebuildAllEstimatedData(),this},_getSaveJSON:function(){var e=v.clone(v.first(this._opSetQueue));return t._objectEach(e,function(t,n){e[n]=t.toJSON()}),e},_canBeSerialized:function(){return t.Object._canBeSerializedAsValue(this.attributes)},fetch:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1?arguments[1]:void 0;if(!this.id)throw new Error("Cannot fetch unsaved object");var n=this;return g("classes",this.className,this.id,"GET",w(t),e).then(function(e){var r=n.parse(e);return n._cleanupUnsetKeys(r,(0,l.default)(t)?O((0,l.default)(t)).join(",").split(","):void 0),n._finishFetch(r,!0),n})},_cleanupUnsetKeys:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:(0,l.default)(v).call(v,this._serverData);v.forEach(n,function(n){void 0===t[n]&&delete e._serverData[n]})},save:function(e,n,r){var i,o,a;v.isObject(e)||y(e)?(i=e,a=n):(i={},i[e]=n,a=r),a=v.clone(a)||{},a.wait&&(o=v.clone(this.attributes));var u=v.clone(a)||{};u.wait&&(u.silent=!0),i&&this.set(i,u);var s=this,f=[],l=[];return t.Object._findUnsavedChildren(s,f,l),f.length+l.length>1?t.Object._deepSaveAsync(this,s,a):(this._startSave(),this._saving=(this._saving||0)+1,this._allPreviousSaves=this._allPreviousSaves||c.default.resolve(),this._allPreviousSaves=this._allPreviousSaves.catch(function(t){}).then(function(){var t=s.id?"PUT":"POST",e=s._getSaveJSON(),n={};if((s._fetchWhenSave||a.fetchWhenSave)&&(n.new="true"),a._failOnNotExist&&(n.failOnNotExist="true"),a.query){var r;if("function"==typeof a.query._getParams&&(r=a.query._getParams())&&(n.where=r.where),!n.where){throw new Error("options.query is not an AV.Query")}}v.extend(e,s._flags);var c="classes",f=s.className;"_User"!==s.className||s.id||(c="users",f=null);var l=a._makeRequest||g,d=l(c,f,s.id,t,e,a,n);return d=d.then(function(t){var e=s.parse(t);return a.wait&&(e=v.extend(i||{},e)),s._finishSave(e),a.wait&&s.set(o,u),s},function(t){throw s._cancelSave(),t})}),this._allPreviousSaves)},destroy:function(t){t=t||{};var e=this,n=function(){e.trigger("destroy",e,e.collection,t)};return this.id?(t.wait||n(),g("classes",this.className,this.id,"DELETE",this._flags,t).then(function(){return t.wait&&n(),e})):n()},parse:function(e){var n=v.clone(e);return["createdAt","updatedAt"].forEach(function(e){n[e]&&(n[e]=t._parseDate(n[e]))}),n.createdAt&&!n.updatedAt&&(n.updatedAt=n.createdAt),n},clone:function(){return new this.constructor(this.attributes)},isNew:function(){return!this.id},change:function(e){e=e||{};var n=this._changing;this._changing=!0;var r=this;t._objectEach(this._silent,function(t){r._pending[t]=!0});var i=v.extend({},e.changes,this._silent);if(this._silent={},t._objectEach(i,function(t,n){r.trigger("change:"+n,r,r.get(n),e)}),n)return this;for(var o=function(t,e){r._pending[e]||r._silent[e]||delete r.changed[e]};!v.isEmpty(this._pending);)this._pending={},this.trigger("change",this,e),t._objectEach(this.changed,o),r._previousAttributes=v.clone(this.attributes);return this._changing=!1,this},previous:function(t){return arguments.length&&this._previousAttributes?this._previousAttributes[t]:null},previousAttributes:function(){return v.clone(this._previousAttributes)},isValid:function(){try{this.validate(this.attributes)}catch(t){return!1}return!0},validate:function(e){if(v.has(e,"ACL")&&!(e.ACL instanceof t.ACL))throw new _(_.OTHER_CAUSE,"ACL must be a AV.ACL.")},_validate:function(t,e){!e.silent&&this.validate&&(t=v.extend({},this.attributes,t),this.validate(t))},getACL:function(){return this.get("ACL")},setACL:function(t,e){return this.set("ACL",t,e)},disableBeforeHook:function(){this.ignoreHook("beforeSave"),this.ignoreHook("beforeUpdate"),this.ignoreHook("beforeDelete")},disableAfterHook:function(){this.ignoreHook("afterSave"),this.ignoreHook("afterUpdate"),this.ignoreHook("afterDelete")},ignoreHook:function(e){if(!v.contains(["beforeSave","afterSave","beforeUpdate","afterUpdate","beforeDelete","afterDelete"],e))throw new Error("Unsupported hookName: "+e);if(!t.hookKey)throw new Error("ignoreHook required hookKey");this._flags.__ignore_hooks||(this._flags.__ignore_hooks=[]),this._flags.__ignore_hooks.push(e)}}),t.Object.createWithoutData=function(e,n,r){var i;if(v.isString(e))i=t.Object._getSubclass(e);else{if(!(e.prototype&&e.prototype instanceof t.Object))throw new Error("class must be a string or a subclass of AV.Object.");i=e}if(!n)throw new TypeError("The objectId must be provided");var o=new i;return o.id=n,o._hasData=r,o},t.Object.destroyAll=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!t||0===t.length)return c.default.resolve();var n=v.groupBy(t,function(t){return(0,d.default)({className:t.className,flags:t._flags})}),r={requests:(0,a.default)(v).call(v,n,function(t){var e,n=(0,a.default)(v).call(v,t,"id").join(",");return{method:"DELETE",path:(0,f.default)(e="/1.1/classes/".concat(t[0].className,"/")).call(e,n),body:t[0]._flags}})};return g("batch",null,null,"POST",r,e).then(function(t){var e=(0,s.default)(v).call(v,t,function(t){return!t.success});if(e)throw new _(e.error.code,e.error.error)})},t.Object._getSubclass=function(e){if(!v.isString(e))throw new Error("AV.Object._getSubclass requires a string argument.");var n=t.Object._classMap[e];return n||(n=t.Object.extend(e),t.Object._classMap[e]=n),n},t.Object._create=function(e,n,r){return new(t.Object._getSubclass(e))(n,r)},t.Object._classMap={},t.Object._extend=t._extend,t.Object.new=function(e,n){return new t.Object(e,n)},t.Object.extend=function(e,n,r){if(!v.isString(e)){if(e&&v.has(e,"className"))return t.Object.extend(e.className,e,n);throw new Error("AV.Object.extend's first argument should be the className.")}"User"===e&&(e="_User");var i=null;if(v.has(t.Object._classMap,e)){var o=t.Object._classMap[e];if(!n&&!r)return o;i=o._extend(n,r)}else n=n||{},n._className=e,i=this._extend(n,r);return i.extend=function(n){var r;if(v.isString(n)||n&&v.has(n,"className"))return t.Object.extend.apply(i,arguments);var o=(0,f.default)(r=[e]).call(r,v.toArray(arguments));return t.Object.extend.apply(i,o)},(0,h.default)(i,"query",(0,p.default)(t.Object,"query")),i.new=function(t,e){return new i(t,e)},t.Object._classMap[e]=i,i},(0,h.default)(t.Object.prototype,"className",{get:function(){var t=this._className||this.constructor._LCClassName||this.constructor.name;return"User"===t?"_User":t}}),t.Object.register=function(e,n){if(!(e.prototype instanceof t.Object))throw new Error("registered class is not a subclass of AV.Object");var r=n||e.name;if(!r.length)throw new Error("registered class must be named");n&&(e._LCClassName=n),t.Object._classMap[r]=e},(0,h.default)(t.Object,"query",{get:function(){return new t.Query(this.prototype.className)}}),t.Object._findUnsavedChildren=function(e,n,r){t._traverse(e,function(e){return e instanceof t.Object?void(e.dirty()&&n.push(e)):e instanceof t.File?void(e.id||r.push(e)):void 0})},t.Object._canBeSerializedAsValue=function(e){var n=!0;return e instanceof t.Object||e instanceof t.File?n=!!e.id:v.isArray(e)?t._arrayEach(e,function(e){t.Object._canBeSerializedAsValue(e)||(n=!1)}):v.isObject(e)&&t._objectEach(e,function(e){t.Object._canBeSerializedAsValue(e)||(n=!1)}),n},t.Object._deepSaveAsync=function(e,n,r){var i=[],o=[];t.Object._findUnsavedChildren(e,i,o),o=v.uniq(o);var u=c.default.resolve();v.each(o,function(t){u=u.then(function(){return t.save()})});var s=v.uniq(i),f=v.uniq(s);return u.then(function(){return S(function(){return f.length>0},function(){var e=[],n=[];if(t._arrayEach(f,function(t){t._canBeSerialized()?e.push(t):n.push(t)}),f=n,0===e.length)return c.default.reject(new _(_.OTHER_CAUSE,"Tried to save a batch with a cycle."));var i=c.default.resolve((0,a.default)(v).call(v,e,function(t){return t._allPreviousSaves||c.default.resolve()})),o=i.then(function(){return g("batch",null,null,"POST",{requests:(0,a.default)(v).call(v,e,function(t){var e=t.id?"PUT":"POST",n=t._getSaveJSON();v.extend(n,t._flags);var i=t.className,o="/".concat("classes","/").concat(i);"_User"!==t.className||t.id||(o="/users");var o="/1.1".concat(o);return t.id&&(o=o+"/"+t.id),t._startSave(),{method:e,path:o,body:n,params:r&&r.fetchWhenSave?{fetchWhenSave:!0}:void 0}})},r).then(function(t){var n=(0,a.default)(v).call(v,e,function(e,n){return t[n].success?(e._finishSave(e.parse(t[n].success)),e):(e._cancelSave(),new _(t[n].error.code,t[n].error.error))});return N(n)})});return t._arrayEach(e,function(t){t._allPreviousSaves=o}),o})}).then(function(){return e})}}},function(t,e,n){function r(t,e){return i(t)||o(t,e)||a(t,e)||u()}var i=n(502),o=n(510),a=n(511),u=n(521);t.exports=r,t.exports.__esModule=!0,t.exports.default=t.exports},function(t,e,n){function r(t){if(i(t))return t}var i=n(503);t.exports=r,t.exports.__esModule=!0,t.exports.default=t.exports},function(t,e,n){t.exports=n(504)},function(t,e,n){t.exports=n(505)},function(t,e,n){var r=n(506);t.exports=r},function(t,e,n){var r=n(507);t.exports=r},function(t,e,n){var r=n(508);t.exports=r},function(t,e,n){n(509);var r=n(13);t.exports=r.Array.isArray},function(t,e,n){n(0)({target:"Array",stat:!0},{isArray:n(80)})},function(t,e,n){function r(t,e){var n=null==t?null:void 0!==i&&o(t)||t["@@iterator"];if(null!=n){var r,a,u=[],s=!0,c=!1;try{for(n=n.call(t);!(s=(r=n.next()).done)&&(u.push(r.value),!e||u.length!==e);s=!0);}catch(t){c=!0,a=t}finally{try{s||null==n.return||n.return()}finally{if(c)throw a}}return u}}var i=n(225),o=n(231);t.exports=r,t.exports.__esModule=!0,t.exports.default=t.exports},function(t,e,n){function r(t,e){var n;if(t){if("string"==typeof t)return a(t,e);var r=i(n=Object.prototype.toString.call(t)).call(n,8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?o(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?a(t,e):void 0}}var i=n(512),o=n(516),a=n(520);t.exports=r,t.exports.__esModule=!0,t.exports.default=t.exports},function(t,e,n){t.exports=n(513)},function(t,e,n){t.exports=n(514)},function(t,e,n){var r=n(515);t.exports=r},function(t,e,n){var r=n(222);t.exports=r},function(t,e,n){t.exports=n(517)},function(t,e,n){t.exports=n(518)},function(t,e,n){var r=n(519);t.exports=r},function(t,e,n){var r=n(230);t.exports=r},function(t,e){function n(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n0&&void 0!==arguments[0]?arguments[0]:"weixin";return function(e,n){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=r.unionIdPlatform,o=void 0===i?t:i,a=r.asMainAccount,u=void 0!==a&&a;if("string"!=typeof n)throw new l(l.OTHER_CAUSE,"unionId is not a string");if("string"!=typeof o)throw new l(l.OTHER_CAUSE,"unionIdPlatform is not a string");return c.extend({},e,{platform:o,unionid:n,main_account:Boolean(u)})}};t.exports=function(t){t.User=t.Object.extend("_User",{_isCurrentUser:!1,_mergeMagicFields:function(e){return e.sessionToken&&(this._sessionToken=e.sessionToken,delete e.sessionToken),t.User.__super__._mergeMagicFields.call(this,e)},_cleanupAuthData:function(){if(this.isCurrent()){var e=this.get("authData");e&&t._objectEach(this.get("authData"),function(t,n){e[n]||delete e[n]})}},_synchronizeAllAuthData:function(){if(this.get("authData")){var e=this;t._objectEach(this.get("authData"),function(t,n){e._synchronizeAuthData(n)})}},_synchronizeAuthData:function(e){if(this.isCurrent()){var n;c.isString(e)?(n=e,e=t.User._authProviders[n]):n=e.getAuthType();var r=this.get("authData");if(r&&e){e.restoreAuthentication(r[n])||this.dissociateAuthData(e)}}},_handleSaveResult:function(e){return e&&!t._config.disableCurrentUser&&(this._isCurrentUser=!0),this._cleanupAuthData(),this._synchronizeAllAuthData(),delete this._serverData.password,this._rebuildEstimatedDataForKey("password"),this._refreshCache(),!e&&!this.isCurrent()||t._config.disableCurrentUser?o.default.resolve():o.default.resolve(t.User._saveCurrentUser(this))},_linkWith:function(e,n){var r,o=this,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},u=a.failOnNotExist,s=void 0!==u&&u,f=a.useMasterKey,l=a.sessionToken,d=a.user;return c.isString(e)?(r=e,e=t.User._authProviders[e]):r=e.getAuthType(),n?this.save({authData:(0,i.default)({},r,n)},{useMasterKey:f,sessionToken:l,user:d,fetchWhenSave:!!this.get("authData"),_failOnNotExist:s}).then(function(t){return t._handleSaveResult(!0).then(function(){return t})}):e.authenticate().then(function(t){return o._linkWith(e,t)})},associateWithAuthData:function(t,e){return this._linkWith(e,t)},associateWithAuthDataAndUnionId:function(t,e,n,r){return this._linkWith(e,b()(t,n,r))},associateWithMiniApp:function(t,e){var n=this;if(void 0===t){return _("getAuthInfo")().then(function(t){return n._linkWith(t.provider,t.authData,e)})}return this._linkWith(t.provider,t.authData,e)},associateWithQQApp:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e.preferUnionId,r=void 0!==n&&n,i=e.unionIdPlatform,o=void 0===i?"qq":i,a=e.asMainAccount,u=void 0===a||a;return _("getAuthInfo")({preferUnionId:r,asMainAccount:u,platform:o}).then(function(e){return e.provider="lc_qqapp",t.associateWithMiniApp(e)})},associateWithWeapp:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e.preferUnionId,r=void 0!==n&&n,i=e.unionIdPlatform,o=void 0===i?"weixin":i,a=e.asMainAccount,u=void 0===a||a;return _("getAuthInfo")({preferUnionId:r,asMainAccount:u,platform:o}).then(function(e){return t.associateWithMiniApp(e)})},linkWithWeapp:function(t){return console.warn("DEPRECATED: User#linkWithWeapp 已废弃,请使用 User#associateWithWeapp 代替"),this.associateWithWeapp(t)},associateWithQQAppWithUnionId:function(e){var n=this,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=r.unionIdPlatform,o=void 0===i?"qq":i,a=r.asMainAccount,u=void 0!==a&&a;return _("getAuthInfo")({platform:o}).then(function(r){return r=t.User.mergeUnionId(r,e,{asMainAccount:u}),r.provider="lc_qqapp",n.associateWithMiniApp(r)})},associateWithWeappWithUnionId:function(e){var n=this,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=r.unionIdPlatform,o=void 0===i?"weixin":i,a=r.asMainAccount,u=void 0!==a&&a;return _("getAuthInfo")({platform:o}).then(function(r){return r=t.User.mergeUnionId(r,e,{asMainAccount:u}),n.associateWithMiniApp(r)})},dissociateAuthData:function(t){return this.unset("authData.".concat(t)),this.save().then(function(t){return t._handleSaveResult(!0).then(function(){return t})})},_unlinkFrom:function(t){return console.warn("DEPRECATED: User#_unlinkFrom 已废弃,请使用 User#dissociateAuthData 代替"),this.dissociateAuthData(t)},_isLinked:function(t){var e;return e=c.isString(t)?t:t.getAuthType(),!!(this.get("authData")||{})[e]},isAnonymous:function(){return this._isLinked("anonymous")},logOut:function(){this._logOutWithAll(),this._isCurrentUser=!1},_logOutWithAll:function(){if(this.get("authData")){var e=this;t._objectEach(this.get("authData"),function(t,n){e._logOutWith(n)})}},_logOutWith:function(e){this.isCurrent()&&(c.isString(e)&&(e=t.User._authProviders[e]),e&&e.deauthenticate&&e.deauthenticate())},signUp:function(t,e){var n=t&&t.username||this.get("username");if(!n||""===n)throw new l(l.OTHER_CAUSE,"Cannot sign up user with an empty name.");var r=t&&t.password||this.get("password");if(!r||""===r)throw new l(l.OTHER_CAUSE,"Cannot sign up user with an empty password.");return this.save(t,e).then(function(t){return t.isAnonymous()&&(t.unset("authData.".concat("anonymous")),t._opSetQueue=[{}]),t._handleSaveResult(!0).then(function(){return t})})},signUpOrlogInWithMobilePhone:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t&&t.mobilePhoneNumber||this.get("mobilePhoneNumber");if(!n||""===n)throw new l(l.OTHER_CAUSE,"Cannot sign up or login user by mobilePhoneNumber with an empty mobilePhoneNumber.");var r=t&&t.smsCode||this.get("smsCode");if(!r||""===r)throw new l(l.OTHER_CAUSE,"Cannot sign up or login user by mobilePhoneNumber with an empty smsCode.");return e._makeRequest=function(t,e,n,r,i){return h("usersByMobilePhone",null,null,"POST",i)},this.save(t,e).then(function(t){return delete t.attributes.smsCode,delete t._serverData.smsCode,t._handleSaveResult(!0).then(function(){return t})})},loginWithAuthData:function(t,e,n){return this._linkWith(e,t,n)},loginWithAuthDataAndUnionId:function(t,e,n,r){return this.loginWithAuthData(b()(t,n,r),e,r)},loginWithWeapp:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e.preferUnionId,r=void 0!==n&&n,i=e.unionIdPlatform,o=void 0===i?"weixin":i,a=e.asMainAccount,u=void 0===a||a,s=e.failOnNotExist,c=void 0!==s&&s,f=e.useMasterKey,l=e.sessionToken,d=e.user;return _("getAuthInfo")({preferUnionId:r,asMainAccount:u,platform:o}).then(function(e){return t.loginWithMiniApp(e,{failOnNotExist:c,useMasterKey:f,sessionToken:l,user:d})})},loginWithWeappWithUnionId:function(e){var n=this,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=r.unionIdPlatform,o=void 0===i?"weixin":i,a=r.asMainAccount,u=void 0!==a&&a,s=r.failOnNotExist,c=void 0!==s&&s,f=r.useMasterKey,l=r.sessionToken,d=r.user;return _("getAuthInfo")({platform:o}).then(function(r){return r=t.User.mergeUnionId(r,e,{asMainAccount:u}),n.loginWithMiniApp(r,{failOnNotExist:c,useMasterKey:f,sessionToken:l,user:d})})},loginWithQQApp:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e.preferUnionId,r=void 0!==n&&n,i=e.unionIdPlatform,o=void 0===i?"qq":i,a=e.asMainAccount,u=void 0===a||a,s=e.failOnNotExist,c=void 0!==s&&s,f=e.useMasterKey,l=e.sessionToken,d=e.user;return _("getAuthInfo")({preferUnionId:r,asMainAccount:u,platform:o}).then(function(e){return e.provider="lc_qqapp",t.loginWithMiniApp(e,{failOnNotExist:c,useMasterKey:f,sessionToken:l,user:d})})},loginWithQQAppWithUnionId:function(e){var n=this,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=r.unionIdPlatform,o=void 0===i?"qq":i,a=r.asMainAccount,u=void 0!==a&&a,s=r.failOnNotExist,c=void 0!==s&&s,f=r.useMasterKey,l=r.sessionToken,d=r.user;return _("getAuthInfo")({platform:o}).then(function(r){return r=t.User.mergeUnionId(r,e,{asMainAccount:u}),r.provider="lc_qqapp",n.loginWithMiniApp(r,{failOnNotExist:c,useMasterKey:f,sessionToken:l,user:d})})},loginWithMiniApp:function(t,e){var n=this;if(void 0===t){return _("getAuthInfo")().then(function(t){return n.loginWithAuthData(t.authData,t.provider,e)})}return this.loginWithAuthData(t.authData,t.provider,e)},logIn:function(){var t=this;return h("login",null,null,"POST",this.toJSON()).then(function(e){var n=t.parse(e);return t._finishFetch(n),t._handleSaveResult(!0).then(function(){return n.smsCode||delete t.attributes.smsCode,t})})},save:function(e,n,r){var i,o;return c.isObject(e)||c.isNull(e)||c.isUndefined(e)?(i=e,o=n):(i={},i[e]=n,o=r),o=o||{},t.Object.prototype.save.call(this,i,o).then(function(t){return t._handleSaveResult(!1).then(function(){return t})})},follow:function(e,n){if(!this.id)throw new Error("Please signin.");var r,i;e.user?(r=e.user,i=e.attributes):r=e;var o=c.isString(r)?r:r.id;if(!o)throw new Error("Invalid target user.");var a="users/"+this.id+"/friendship/"+o;return h(a,null,null,"POST",t._encode(i),n)},unfollow:function(t,e){if(!this.id)throw new Error("Please signin.");var n;n=t.user?t.user:t;var r=c.isString(n)?n:n.id;if(!r)throw new Error("Invalid target user.");var i="users/"+this.id+"/friendship/"+r;return h(i,null,null,"DELETE",null,e)},getFollowersAndFollowees:function(e,n){if(!this.id)throw new Error("Please signin.");return p({method:"GET",path:"/users/".concat(this.id,"/followersAndFollowees"),query:{skip:e&&e.skip,limit:e&&e.limit,include:"follower,followee",keys:"follower,followee"},authOptions:n}).then(function(e){var n=e.followers,r=e.followees;return{followers:(0,a.default)(n).call(n,function(e){var n=e.follower;return t._decode(n)}),followees:(0,a.default)(r).call(r,function(e){var n=e.followee;return t._decode(n)})}})},followerQuery:function(){return t.User.followerQuery(this.id)},followeeQuery:function(){return t.User.followeeQuery(this.id)},fetch:function(e,n){return t.Object.prototype.fetch.call(this,e,n).then(function(t){return t._handleSaveResult(!1).then(function(){return t})})},updatePassword:function(t,e,n){var r=this,i="users/"+this.id+"/updatePassword";return h(i,null,null,"PUT",{old_password:t,new_password:e},n).then(function(t){return r._finishFetch(r.parse(t)),r._handleSaveResult(!0).then(function(){return t})})},isCurrent:function(){return this._isCurrentUser},getUsername:function(){return this.get("username")},getMobilePhoneNumber:function(){return this.get("mobilePhoneNumber")},setMobilePhoneNumber:function(t,e){return this.set("mobilePhoneNumber",t,e)},setUsername:function(t,e){return this.set("username",t,e)},setPassword:function(t,e){return this.set("password",t,e)},getEmail:function(){return this.get("email")},setEmail:function(t,e){return this.set("email",t,e)},authenticated:function(){return console.warn("DEPRECATED: 如果要判断当前用户的登录状态是否有效,请使用 currentUser.isAuthenticated().then(),如果要判断该用户是否是当前登录用户,请使用 user.id === currentUser.id。"),!!this._sessionToken&&!t._config.disableCurrentUser&&t.User.current()&&t.User.current().id===this.id},isAuthenticated:function(){var e=this;return o.default.resolve().then(function(){return!!e._sessionToken&&t.User._fetchUserBySessionToken(e._sessionToken).then(function(){return!0},function(t){if(211===t.code)return!1;throw t})})},getSessionToken:function(){return this._sessionToken},refreshSessionToken:function(t){var e=this;return h("users/".concat(this.id,"/refreshSessionToken"),null,null,"PUT",null,t).then(function(t){return e._finishFetch(t),e._handleSaveResult(!0).then(function(){return e})})},getRoles:function(e){var n;return(0,u.default)(n=t.Relation.reverseQuery("_Role","users",this)).call(n,e)}},{_currentUser:null,_currentUserMatchesDisk:!1,_CURRENT_USER_KEY:"currentUser",_authProviders:{},signUp:function(e,n,r,i){return r=r||{},r.username=e,r.password=n,t.Object._create("_User").signUp(r,i)},logIn:function(e,n){var r=t.Object._create("_User");return r._finishFetch({username:e,password:n}),r.logIn()},become:function(t){return this._fetchUserBySessionToken(t).then(function(t){return t._handleSaveResult(!0).then(function(){return t})})},_fetchUserBySessionToken:function(e){if(void 0===e)return o.default.reject(new Error("The sessionToken cannot be undefined"));var n=t.Object._create("_User");return p({method:"GET",path:"/users/me",authOptions:{sessionToken:e}}).then(function(t){var e=n.parse(t);return n._finishFetch(e),n})},logInWithMobilePhoneSmsCode:function(e,n){var r=t.Object._create("_User");return r._finishFetch({mobilePhoneNumber:e,smsCode:n}),r.logIn()},signUpOrlogInWithMobilePhone:function(e,n,r,i){return r=r||{},r.mobilePhoneNumber=e,r.smsCode=n,t.Object._create("_User").signUpOrlogInWithMobilePhone(r,i)},logInWithMobilePhone:function(e,n){var r=t.Object._create("_User");return r._finishFetch({mobilePhoneNumber:e,password:n}),r.logIn()},loginWithEmail:function(e,n){var r=t.Object._create("_User");return r._finishFetch({email:e,password:n}),r.logIn()},loginWithAuthData:function(e,n,r){return t.User._logInWith(n,e,r)},signUpOrlogInWithAuthData:function(){return console.warn("DEPRECATED: User.signUpOrlogInWithAuthData 已废弃,请使用 User#loginWithAuthData 代替"),this.loginWithAuthData.apply(this,arguments)},loginWithAuthDataAndUnionId:function(t,e,n,r){return this.loginWithAuthData(b()(t,n,r),e,r)},signUpOrlogInWithAuthDataAndUnionId:function(){return console.warn("DEPRECATED: User.signUpOrlogInWithAuthDataAndUnionId 已废弃,请使用 User#loginWithAuthDataAndUnionId 代替"),this.loginWithAuthDataAndUnionId.apply(this,arguments)},mergeUnionId:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=n.asMainAccount,i=void 0!==r&&r;t=JSON.parse((0,s.default)(t));var o=t,a=o.authData,u=o.platform;return a.platform=u,a.main_account=i,a.unionid=e,t},loginWithWeapp:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e.preferUnionId,r=void 0!==n&&n,i=e.unionIdPlatform,o=void 0===i?"weixin":i,a=e.asMainAccount,u=void 0===a||a,s=e.failOnNotExist,c=void 0!==s&&s,f=e.useMasterKey,l=e.sessionToken,d=e.user;return _("getAuthInfo")({preferUnionId:r,asMainAccount:u,platform:o}).then(function(e){return t.loginWithMiniApp(e,{failOnNotExist:c,useMasterKey:f,sessionToken:l,user:d})})},loginWithWeappWithUnionId:function(e){var n=this,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=r.unionIdPlatform,o=void 0===i?"weixin":i,a=r.asMainAccount,u=void 0!==a&&a,s=r.failOnNotExist,c=void 0!==s&&s,f=r.useMasterKey,l=r.sessionToken,d=r.user;return _("getAuthInfo")({platform:o}).then(function(r){return r=t.User.mergeUnionId(r,e,{asMainAccount:u}),n.loginWithMiniApp(r,{failOnNotExist:c,useMasterKey:f,sessionToken:l,user:d})})},loginWithQQApp:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e.preferUnionId,r=void 0!==n&&n,i=e.unionIdPlatform,o=void 0===i?"qq":i,a=e.asMainAccount,u=void 0===a||a,s=e.failOnNotExist,c=void 0!==s&&s,f=e.useMasterKey,l=e.sessionToken,d=e.user;return _("getAuthInfo")({preferUnionId:r,asMainAccount:u,platform:o}).then(function(e){return e.provider="lc_qqapp",t.loginWithMiniApp(e,{failOnNotExist:c,useMasterKey:f,sessionToken:l,user:d})})},loginWithQQAppWithUnionId:function(e){var n=this,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=r.unionIdPlatform,o=void 0===i?"qq":i,a=r.asMainAccount,u=void 0!==a&&a,s=r.failOnNotExist,c=void 0!==s&&s,f=r.useMasterKey,l=r.sessionToken,d=r.user;return _("getAuthInfo")({platform:o}).then(function(r){return r=t.User.mergeUnionId(r,e,{asMainAccount:u}),r.provider="lc_qqapp",n.loginWithMiniApp(r,{failOnNotExist:c,useMasterKey:f,sessionToken:l,user:d})})},loginWithMiniApp:function(t,e){var n=this;if(void 0===t){return _("getAuthInfo")().then(function(t){return n.loginWithAuthData(t.authData,t.provider,e)})}return this.loginWithAuthData(t.authData,t.provider,e)},_genId:function(){return f()},loginAnonymously:function(){return this.loginWithAuthData({id:t.User._genId()},"anonymous")},associateWithAuthData:function(t,e,n){return console.warn("DEPRECATED: User.associateWithAuthData 已废弃,请使用 User#associateWithAuthData 代替"),t._linkWith(e,n)},logOut:function(){return t._config.disableCurrentUser?(console.warn("AV.User.current() was disabled in multi-user environment, call logOut() from user object instead https://leancloud.cn/docs/leanengine-node-sdk-upgrade-1.html"),o.default.resolve(null)):(null!==t.User._currentUser&&(t.User._currentUser._logOutWithAll(),t.User._currentUser._isCurrentUser=!1),t.User._currentUserMatchesDisk=!0,t.User._currentUser=null,t.localStorage.removeItemAsync(t._getAVPath(t.User._CURRENT_USER_KEY)).then(function(){return t._refreshSubscriptionId()}))},followerQuery:function(e){if(!e||!c.isString(e))throw new Error("Invalid user object id.");var n=new t.FriendShipQuery("_Follower");return n._friendshipTag="follower",n.equalTo("user",t.Object.createWithoutData("_User",e)),n},followeeQuery:function(e){if(!e||!c.isString(e))throw new Error("Invalid user object id.");var n=new t.FriendShipQuery("_Followee");return n._friendshipTag="followee",n.equalTo("user",t.Object.createWithoutData("_User",e)),n},requestPasswordReset:function(t){return h("requestPasswordReset",null,null,"POST",{email:t})},requestEmailVerify:function(t){return h("requestEmailVerify",null,null,"POST",{email:t})},requestMobilePhoneVerify:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n={mobilePhoneNumber:t};return e.validateToken&&(n.validate_token=e.validateToken),h("requestMobilePhoneVerify",null,null,"POST",n,e)},requestPasswordResetBySmsCode:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n={mobilePhoneNumber:t};return e.validateToken&&(n.validate_token=e.validateToken),h("requestPasswordResetBySmsCode",null,null,"POST",n,e)},requestChangePhoneNumber:function(t,e,n){var r={mobilePhoneNumber:t};return e&&(r.ttl=n.ttl),n&&n.validateToken&&(r.validate_token=n.validateToken),h("requestChangePhoneNumber",null,null,"POST",r,n)},changePhoneNumber:function(t,e){return h("changePhoneNumber",null,null,"POST",{mobilePhoneNumber:t,code:e})},resetPasswordBySmsCode:function(t,e){return h("resetPasswordBySmsCode",null,t,"PUT",{password:e})},verifyMobilePhone:function(t){return h("verifyMobilePhone",null,t,"POST",null)},requestLoginSmsCode:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n={mobilePhoneNumber:t};return e.validateToken&&(n.validate_token=e.validateToken),h("requestLoginSmsCode",null,null,"POST",n,e)},currentAsync:function(){return t._config.disableCurrentUser?(console.warn("AV.User.currentAsync() was disabled in multi-user environment, access user from request instead https://leancloud.cn/docs/leanengine-node-sdk-upgrade-1.html"),o.default.resolve(null)):t.User._currentUser?o.default.resolve(t.User._currentUser):t.User._currentUserMatchesDisk?o.default.resolve(t.User._currentUser):t.localStorage.getItemAsync(t._getAVPath(t.User._CURRENT_USER_KEY)).then(function(e){if(!e)return null;t.User._currentUserMatchesDisk=!0,t.User._currentUser=t.Object._create("_User"),t.User._currentUser._isCurrentUser=!0;var n=JSON.parse(e);return t.User._currentUser.id=n._id,delete n._id,t.User._currentUser._sessionToken=n._sessionToken,delete n._sessionToken,t.User._currentUser._finishFetch(n),t.User._currentUser._synchronizeAllAuthData(),t.User._currentUser._refreshCache(),t.User._currentUser._opSetQueue=[{}],t.User._currentUser})},current:function(){if(t._config.disableCurrentUser)return console.warn("AV.User.current() was disabled in multi-user environment, access user from request instead https://leancloud.cn/docs/leanengine-node-sdk-upgrade-1.html"),null;if(t.localStorage.async){var e=new Error("Synchronous API User.current() is not available in this runtime. Use User.currentAsync() instead.");throw e.code="SYNC_API_NOT_AVAILABLE",e}if(t.User._currentUser)return t.User._currentUser;if(t.User._currentUserMatchesDisk)return t.User._currentUser;t.User._currentUserMatchesDisk=!0;var n=t.localStorage.getItem(t._getAVPath(t.User._CURRENT_USER_KEY));if(!n)return null;t.User._currentUser=t.Object._create("_User"),t.User._currentUser._isCurrentUser=!0;var r=JSON.parse(n);return t.User._currentUser.id=r._id,delete r._id,t.User._currentUser._sessionToken=r._sessionToken,delete r._sessionToken,t.User._currentUser._finishFetch(r),t.User._currentUser._synchronizeAllAuthData(),t.User._currentUser._refreshCache(),t.User._currentUser._opSetQueue=[{}],t.User._currentUser},_saveCurrentUser:function(e){var n;return n=t.User._currentUser!==e?t.User.logOut():o.default.resolve(),n.then(function(){e._isCurrentUser=!0,t.User._currentUser=e;var n=e._toFullJSON();return n._id=e.id,n._sessionToken=e._sessionToken,t.localStorage.setItemAsync(t._getAVPath(t.User._CURRENT_USER_KEY),(0,s.default)(n)).then(function(){return t.User._currentUserMatchesDisk=!0,t._refreshSubscriptionId()})})},_registerAuthenticationProvider:function(e){t.User._authProviders[e.getAuthType()]=e,!t._config.disableCurrentUser&&t.User.current()&&t.User.current()._synchronizeAuthData(e.getAuthType())},_logInWith:function(e,n,r){return t.Object._create("_User")._linkWith(e,n,r)}})}},function(t,e,n){function r(t,e,n){return e in t?i(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}var i=n(137);t.exports=r,t.exports.__esModule=!0,t.exports.default=t.exports},function(t,e,n){"use strict";var r=n(2),i=r(n(39)),o=r(n(10)),a=r(n(48)),u=r(n(34)),s=r(n(104)),c=r(n(29)),f=n(1),l=n(60)("leancloud:query"),d=n(40),h=n(25),p=h._request,v=h.request,_=n(28),b=_.ensureArray,g=_.transformFetchOptions,m=_.continueWhile,y=function(t,e){if(void 0===t)throw new Error(e)};t.exports=function(t){t.Query=function(e){f.isString(e)&&(e=t.Object._getSubclass(e)),this.objectClass=e,this.className=e.prototype.className,this._where={},this._include=[],this._select=[],this._limit=-1,this._skip=0,this._defaultParams={}},t.Query.or=function(){var e=f.toArray(arguments),n=null;t._arrayEach(e,function(t){if(f.isNull(n)&&(n=t.className),n!==t.className)throw new Error("All queries must be for the same class")});var r=new t.Query(n);return r._orQuery(e),r},t.Query.and=function(){var e=f.toArray(arguments),n=null;t._arrayEach(e,function(t){if(f.isNull(n)&&(n=t.className),n!==t.className)throw new Error("All queries must be for the same class")});var r=new t.Query(n);return r._andQuery(e),r},t.Query.doCloudQuery=function(e,n,r){var o={cql:e};return f.isArray(n)?o.pvalues=n:r=n,p("cloudQuery",null,null,"GET",o,r).then(function(e){var n=new t.Query(e.className);return{results:(0,i.default)(f).call(f,e.results,function(t){var r=n._newObject(e);return r._finishFetch&&r._finishFetch(n._processResult(t),!0),r}),count:e.count,className:e.className}})},t.Query.fromJSON=function(e){var n=e.className,r=e.where,i=e.include,o=e.select,a=e.includeACL,u=e.limit,s=e.skip,c=e.order;if("string"!=typeof n)throw new TypeError("Invalid Query JSON, className must be a String.");var l=new t.Query(n);return f.extend(l,{_where:r,_include:i,_select:o,_includeACL:a,_limit:u,_skip:s,_order:c}),l},t.Query._extend=t._extend,f.extend(t.Query.prototype,{_processResult:function(t){return t},get:function(t,e){if(!f.isString(t))throw new Error("objectId must be a string");if(""===t)return o.default.reject(new d(d.OBJECT_NOT_FOUND,"Object not found."));var n=this._newObject();n.id=t;var r=this._getParams(),i={};return(0,a.default)(r)&&(i.keys=(0,a.default)(r)),r.include&&(i.include=r.include),r.includeACL&&(i.includeACL=r.includeACL),p("classes",this.className,t,"GET",g(i),e).then(function(t){if(f.isEmpty(t))throw new d(d.OBJECT_NOT_FOUND,"Object not found.");return n._finishFetch(n.parse(t),!0),n})},toJSON:function(){return{className:this.className,where:this._where,include:this._include,select:this._select,includeACL:this._includeACL,limit:this._limit,skip:this._skip,order:this._order}},_getParams:function(){var t=f.extend({},this._defaultParams,{where:this._where});return this._include.length>0&&(t.include=this._include.join(",")),this._select.length>0&&(t.keys=this._select.join(",")),void 0!==this._includeACL&&(t.returnACL=this._includeACL),this._limit>=0&&(t.limit=this._limit),this._skip>0&&(t.skip=this._skip),void 0!==this._order&&(t.order=this._order),t},_newObject:function(e){return e&&e.className?new t.Object(e.className):new this.objectClass},_createRequest:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this._getParams(),e=arguments.length>1?arguments[1]:void 0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"/classes/".concat(this.className);if(encodeURIComponent((0,u.default)(t)).length>2e3){var r={requests:[{method:"GET",path:"/1.1".concat(n),params:t}]};return v({path:"/batch",method:"POST",data:r,authOptions:e}).then(function(t){var e=t[0];if(e.success)return e.success;throw new d(e.error.code,e.error.error||"Unknown batch error")})}return v({method:"GET",path:n,query:t,authOptions:e})},_parseResponse:function(t){var e=this;return(0,i.default)(f).call(f,t.results,function(n){var r=e._newObject(t);return r._finishFetch&&r._finishFetch(e._processResult(n),!0),r})},find:function(t){return this._createRequest(void 0,t).then(this._parseResponse.bind(this))},findAndCount:function(t){var e=this,n=this._getParams();return n.count=1,this._createRequest(n,t).then(function(t){return[e._parseResponse(t),t.count]})},scan:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e.orderedBy,r=e.batchSize,i=arguments.length>1?arguments[1]:void 0,a=this._getParams();l("scan %O",a),a.order&&(console.warn("The order of the query is ignored for Query#scan. Checkout the orderedBy option of Query#scan."),delete a.order),a.skip&&(console.warn("The skip option of the query is ignored for Query#scan."),delete a.skip),a.limit&&(console.warn("The limit option of the query is ignored for Query#scan."),delete a.limit),n&&(a.scan_key=n),r&&(a.limit=r);var u,s=[];return{next:function(){return s.length?o.default.resolve({done:!1,value:s.shift()}):null===u?o.default.resolve({done:!0}):p("scan/classes",t.className,null,"GET",u?f.extend({},a,{cursor:u}):a,i).then(function(e){if(u=e.cursor,e.results.length){t._parseResponse(e).forEach(function(t){return s.push(t)})}return null===u&&0===s.length?{done:!0}:{done:!1,value:s.shift()}})}}},destroyAll:function(e){var n=this;return(0,s.default)(n).call(n,e).then(function(n){return t.Object.destroyAll(n,e)})},count:function(t){var e=this._getParams();return e.limit=0,e.count=1,this._createRequest(e,t).then(function(t){return t.count})},first:function(t){var e=this,n=this._getParams();return n.limit=1,this._createRequest(n,t).then(function(t){return(0,i.default)(f).call(f,t.results,function(t){var n=e._newObject();return n._finishFetch&&n._finishFetch(e._processResult(t),!0),n})[0]})},skip:function(t){return y(t,"undefined is not a valid skip value"),this._skip=t,this},limit:function(t){return y(t,"undefined is not a valid limit value"),this._limit=t,this},equalTo:function(e,n){return y(e,"undefined is not a valid key"),y(n,"undefined is not a valid value"),this._where[e]=t._encode(n),this},_addCondition:function(e,n,r){return y(e,"undefined is not a valid condition key"),y(n,"undefined is not a valid condition"),y(r,"undefined is not a valid condition value"),this._where[e]||(this._where[e]={}),this._where[e][n]=t._encode(r),this},sizeEqualTo:function(t,e){return this._addCondition(t,"$size",e),this},notEqualTo:function(t,e){return this._addCondition(t,"$ne",e),this},lessThan:function(t,e){return this._addCondition(t,"$lt",e),this},greaterThan:function(t,e){return this._addCondition(t,"$gt",e),this},lessThanOrEqualTo:function(t,e){return this._addCondition(t,"$lte",e),this},greaterThanOrEqualTo:function(t,e){return this._addCondition(t,"$gte",e),this},containedIn:function(t,e){return this._addCondition(t,"$in",e),this},notContainedIn:function(t,e){return this._addCondition(t,"$nin",e),this},containsAll:function(t,e){return this._addCondition(t,"$all",e),this},exists:function(t){return this._addCondition(t,"$exists",!0),this},doesNotExist:function(t){return this._addCondition(t,"$exists",!1),this},matches:function(t,e,n){return this._addCondition(t,"$regex",e),n||(n=""),e.ignoreCase&&(n+="i"),e.multiline&&(n+="m"),n&&n.length&&this._addCondition(t,"$options",n),this},matchesQuery:function(t,e){var n=e._getParams();return n.className=e.className,this._addCondition(t,"$inQuery",n),this},doesNotMatchQuery:function(t,e){var n=e._getParams();return n.className=e.className,this._addCondition(t,"$notInQuery",n),this},matchesKeyInQuery:function(t,e,n){var r=n._getParams();return r.className=n.className,this._addCondition(t,"$select",{key:e,query:r}),this},doesNotMatchKeyInQuery:function(t,e,n){var r=n._getParams();return r.className=n.className,this._addCondition(t,"$dontSelect",{key:e,query:r}),this},_orQuery:function(t){var e=(0,i.default)(f).call(f,t,function(t){return t._getParams().where});return this._where.$or=e,this},_andQuery:function(t){var e=(0,i.default)(f).call(f,t,function(t){return t._getParams().where});return this._where.$and=e,this},_quote:function(t){return"\\Q"+t.replace("\\E","\\E\\\\E\\Q")+"\\E"},contains:function(t,e){return this._addCondition(t,"$regex",this._quote(e)),this},startsWith:function(t,e){return this._addCondition(t,"$regex","^"+this._quote(e)),this},endsWith:function(t,e){return this._addCondition(t,"$regex",this._quote(e)+"$"),this},ascending:function(t){return y(t,"undefined is not a valid key"),this._order=t,this},addAscending:function(t){return y(t,"undefined is not a valid key"),this._order?this._order+=","+t:this._order=t,this},descending:function(t){return y(t,"undefined is not a valid key"),this._order="-"+t,this},addDescending:function(t){return y(t,"undefined is not a valid key"),this._order?this._order+=",-"+t:this._order="-"+t,this},near:function(e,n){return n instanceof t.GeoPoint||(n=new t.GeoPoint(n)),this._addCondition(e,"$nearSphere",n),this},withinRadians:function(t,e,n){return this.near(t,e),this._addCondition(t,"$maxDistance",n),this},withinMiles:function(t,e,n){return this.withinRadians(t,e,n/3958.8)},withinKilometers:function(t,e,n){return this.withinRadians(t,e,n/6371)},withinGeoBox:function(e,n,r){return n instanceof t.GeoPoint||(n=new t.GeoPoint(n)),r instanceof t.GeoPoint||(r=new t.GeoPoint(r)),this._addCondition(e,"$within",{$box:[n,r]}),this},include:function(t){var e=this;return y(t,"undefined is not a valid key"),f.forEach(arguments,function(t){var n;e._include=(0,c.default)(n=e._include).call(n,b(t))}),this},includeACL:function(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return this._includeACL=t,this},select:function(t){var e=this;return y(t,"undefined is not a valid key"),f.forEach(arguments,function(t){var n;e._select=(0,c.default)(n=e._select).call(n,b(t))}),this},each:function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(this._order||this._skip||this._limit>=0){var r=new Error("Cannot iterate on a query with sort, skip, or limit.");return o.default.reject(r)}var i=new t.Query(this.objectClass);i._limit=n.batchSize||100,i._where=f.clone(this._where),i._include=f.clone(this._include),i.ascending("objectId");var a=!1;return m(function(){return!a},function(){return(0,s.default)(i).call(i,n).then(function(t){var n=o.default.resolve();return f.each(t,function(t){n=n.then(function(){return e(t)})}),n.then(function(){t.length>=i._limit?i.greaterThan("objectId",t[t.length-1].id):a=!0})})})},subscribe:function(e){return t.LiveQuery.init(this,e)}}),t.FriendShipQuery=t.Query._extend({_newObject:function(){return new(t.Object._getSubclass("_User"))},_processResult:function(t){if(t&&t[this._friendshipTag]){var e=t[this._friendshipTag];return"Pointer"===e.__type&&"_User"===e.className&&(delete e.__type,delete e.className),e}return null}})}},function(t,e,n){"use strict";var r=n(2),i=r(n(10)),o=r(n(48)),a=n(1),u=n(218),s=n(28),c=s.inherits,f=n(25),l=f.request,d=function(t,e){return l({method:"POST",path:"/LiveQuery/subscribe",data:{query:t,id:e}})};t.exports=function(t){var e=function(){if(!t._config.realtime)throw new Error("LiveQuery not supported. Please use the LiveQuery bundle. https://url.leanapp.cn/enable-live-query")};t.LiveQuery=c(u,{constructor:function(t,e,n,r){var i=this;u.apply(this),this.id=t,this._client=e,this._client.register(this),this._queryJSON=n,this._subscriptionId=r,this._onMessage=this._dispatch.bind(this),this._onReconnect=function(){d(i._queryJSON,i._subscriptionId).catch(function(t){return console.error("LiveQuery resubscribe error: ".concat(t.message))})},e.on("message",this._onMessage),e.on("reconnect",this._onReconnect)},_dispatch:function(e){var n=this;e.forEach(function(e){var r=e.op,i=e.object,o=e.query_id,u=e.updatedKeys;if(o===n.id){var s=t.parseJSON(a.extend({__type:"_File"===i.className?"File":"Object"},i));u?n.emit(r,s,u):n.emit(r,s)}})},unsubscribe:function(){var t=this._client;return t.off("message",this._onMessage),t.off("reconnect",this._onReconnect),t.deregister(this),l({method:"POST",path:"/LiveQuery/unsubscribe",data:{id:t.id,query_id:this.id}})}},{init:function(n){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=r.subscriptionId,u=void 0===a?t._getSubscriptionId():a;if(e(),!(n instanceof t.Query))throw new TypeError("LiveQuery must be inited with a Query");return i.default.resolve(u).then(function(e){return t._config.realtime.createLiveQueryClient(e).then(function(r){var i=n._getParams(),a=i.where,u=(0,o.default)(i),s=i.returnACL,c={where:a,keys:u,returnACL:s,className:n.className},f=d(c,e).then(function(n){var i=n.query_id;return new t.LiveQuery(i,r,c,e)}).finally(function(){r.deregister(f)});return r.register(f),f})})},pause:function(){return e(),t._config.realtime.pause()},resume:function(){return e(),t._config.realtime.resume()}})}},function(t,e,n){"use strict";var r=n(1),i=n(28),o=i.tap;t.exports=function(t){t.Captcha=function(t,e){this._options=t,this._authOptions=e,this.url=void 0,this.captchaToken=void 0,this.validateToken=void 0},t.Captcha.prototype.refresh=function(){var e=this;return t.Cloud._requestCaptcha(this._options,this._authOptions).then(function(t){var n=t.captchaToken,i=t.url;return r.extend(e,{captchaToken:n,url:i}),i})},t.Captcha.prototype.verify=function(e){var n=this;return t.Cloud.verifyCaptcha(e,this.captchaToken).then(o(function(t){return n.validateToken=t}))},t.Captcha.request=function(e,n){var r=new t.Captcha(e,n);return r.refresh().then(function(){return r})}}},function(t,e,n){"use strict";var r=n(2),i=r(n(10)),o=n(1),a=n(25),u=a._request,s=a.request;t.exports=function(t){t.Cloud=t.Cloud||{},o.extend(t.Cloud,{run:function(e,n,r){return s({service:"engine",method:"POST",path:"/functions/".concat(e),data:t._encode(n,null,!0),authOptions:r}).then(function(e){return t._decode(e).result})},rpc:function(e,n,r){return o.isArray(n)?i.default.reject(new Error("Can't pass Array as the param of rpc function in JavaScript SDK.")):s({service:"engine",method:"POST",path:"/call/".concat(e),data:t._encodeObjectOrArray(n),authOptions:r}).then(function(e){return t._decode(e).result})},getServerDate:function(){return u("date",null,null,"GET").then(function(e){return t._decode(e)})},requestSmsCode:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(o.isString(t)&&(t={mobilePhoneNumber:t}),!t.mobilePhoneNumber)throw new Error("Missing mobilePhoneNumber.");return e.validateToken&&(t=o.extend({},t,{validate_token:e.validateToken})),u("requestSmsCode",null,null,"POST",t,e)},verifySmsCode:function(t,e){if(!t)throw new Error("Missing sms code.");var n={};return o.isString(e)&&(n.mobilePhoneNumber=e),u("verifySmsCode",t,null,"POST",n)},_requestCaptcha:function(t,e){return u("requestCaptcha",null,null,"GET",t,e).then(function(t){var e=t.captcha_url;return{captchaToken:t.captcha_token,url:e}})},requestCaptcha:t.Captcha.request,verifyCaptcha:function(t,e){return u("verifyCaptcha",null,null,"POST",{captcha_code:t,captcha_token:e}).then(function(t){return t.validate_token})}})}},function(t,e,n){"use strict";var r=n(25).request;t.exports=function(t){t.Installation=t.Object.extend("_Installation"),t.Push=t.Push||{},t.Push.send=function(t,e){if(t.where&&(t.where=t.where._getParams().where),t.where&&t.cql)throw new Error("Both where and cql can't be set");if(t.push_time&&(t.push_time=t.push_time.toJSON()),t.expiration_time&&(t.expiration_time=t.expiration_time.toJSON()),t.expiration_time&&t.expiration_interval)throw new Error("Both expiration_time and expiration_interval can't be set");return r({service:"push",method:"POST",path:"/push",data:t,authOptions:e})}}},function(t,e,n){"use strict";var r=n(2),i=r(n(10)),o=r(n(135)),a=n(1),u=n(25)._request,s=n(28),c=s.getSessionToken;t.exports=function(t){var e=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return c(e)?t.User._fetchUserBySessionToken(c(e)):t.User.currentAsync()},n=function(n){return e(n).then(function(e){return t.Object.createWithoutData("_User",e.id)._toPointer()})};t.Status=function(t,e){return this.data={},this.inboxType="default",this.query=null,t&&"object"===(0,o.default)(t)?this.data=t:(t&&(this.data.image=t),e&&(this.data.message=e)),this},a.extend(t.Status.prototype,{get:function(t){return this.data[t]},set:function(t,e){return this.data[t]=e,this},destroy:function(t){return this.id?u("statuses",null,this.id,"DELETE",t):i.default.reject(new Error("The status id is not exists."))},toObject:function(){return this.id?t.Object.createWithoutData("_Status",this.id):null},_getDataJSON:function(){var e=a.clone(this.data);return t._encode(e)},send:function(){var e=this,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!c(r)&&!t.User.current())throw new Error("Please signin an user.");return this.query?n(r).then(function(t){var n=e.query._getParams();n.className=e.query.className;var i={};return i.query=n,e.data=e.data||{},e.data.source=e.data.source||t,i.data=e._getDataJSON(),i.inboxType=e.inboxType||"default",u("statuses",null,null,"POST",i,r)}).then(function(n){return e.id=n.objectId,e.createdAt=t._parseDate(n.createdAt),e}):t.Status.sendStatusToFollowers(this,r)},_finishFetch:function(e){this.id=e.objectId,this.createdAt=t._parseDate(e.createdAt),this.updatedAt=t._parseDate(e.updatedAt),this.messageId=e.messageId,delete e.messageId,delete e.objectId,delete e.createdAt,delete e.updatedAt,this.data=t._decode(e)}}),t.Status.sendStatusToFollowers=function(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!c(r)&&!t.User.current())throw new Error("Please signin an user.");return n(r).then(function(n){var i={};i.className="_Follower",i.keys="follower",i.where={user:n};var o={};return o.query=i,e.data=e.data||{},e.data.source=e.data.source||n,o.data=e._getDataJSON(),o.inboxType=e.inboxType||"default",u("statuses",null,null,"POST",o,r).then(function(n){return e.id=n.objectId,e.createdAt=t._parseDate(n.createdAt),e})})},t.Status.sendPrivateStatus=function(e,r){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!c(i)&&!t.User.current())throw new Error("Please signin an user.");if(!r)throw new Error("Invalid target user.");var o=a.isString(r)?r:r.id;if(!o)throw new Error("Invalid target user.");return n(i).then(function(n){var r={};r.className="_User",r.where={objectId:o};var a={};return a.query=r,e.data=e.data||{},e.data.source=e.data.source||n,a.data=e._getDataJSON(),a.inboxType="private",e.inboxType="private",u("statuses",null,null,"POST",a,i).then(function(n){return e.id=n.objectId,e.createdAt=t._parseDate(n.createdAt),e})})},t.Status.countUnreadStatuses=function(n){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"default",o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(a.isString(r)||(o=r),!c(o)&&null==n&&!t.User.current())throw new Error("Please signin an user or pass the owner objectId.");return i.default.resolve(n||e(o)).then(function(e){var n={};return n.inboxType=t._encode(r),n.owner=t._encode(e),u("subscribe/statuses/count",null,null,"GET",n,o)})},t.Status.resetUnreadCount=function(n){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"default",o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(a.isString(r)||(o=r),!c(o)&&null==n&&!t.User.current())throw new Error("Please signin an user or pass the owner objectId.");return i.default.resolve(n||e(o)).then(function(e){var n={};return n.inboxType=t._encode(r),n.owner=t._encode(e),u("subscribe/statuses/resetUnreadCount",null,null,"POST",n,o)})},t.Status.statusQuery=function(e){var n=new t.Query("_Status");return e&&n.equalTo("source",e),n},t.InboxQuery=t.Query._extend({_objectClass:t.Status,_sinceId:0,_maxId:0,_inboxType:"default",_owner:null,_newObject:function(){return new t.Status},_createRequest:function(e,n){return t.InboxQuery.__super__._createRequest.call(this,e,n,"/subscribe/statuses")},sinceId:function(t){return this._sinceId=t,this},maxId:function(t){return this._maxId=t,this},owner:function(t){return this._owner=t,this},inboxType:function(t){return this._inboxType=t,this},_getParams:function(){var e=t.InboxQuery.__super__._getParams.call(this);return e.owner=t._encode(this._owner),e.inboxType=t._encode(this._inboxType),e.sinceId=t._encode(this._sinceId),e.maxId=t._encode(this._maxId),e}}),t.Status.inboxQuery=function(e,n){var r=new t.InboxQuery(t.Status);return e&&(r._owner=e),n&&(r._inboxType=n),r}}},function(t,e,n){"use strict";var r=n(2),i=r(n(34)),o=r(n(39)),a=n(1),u=n(25)._request;t.exports=function(t){t.SearchSortBuilder=function(){this._sortFields=[]},a.extend(t.SearchSortBuilder.prototype,{_addField:function(t,e,n,r){var i={};return i[t]={order:e||"asc",mode:n||"avg",missing:"_"+(r||"last")},this._sortFields.push(i),this},ascending:function(t,e,n){return this._addField(t,"asc",e,n)},descending:function(t,e,n){return this._addField(t,"desc",e,n)},whereNear:function(t,e,n){n=n||{};var r={},i={lat:e.latitude,lon:e.longitude},o={order:n.order||"asc",mode:n.mode||"avg",unit:n.unit||"km"};return o[t]=i,r._geo_distance=o,this._sortFields.push(r),this},build:function(){return(0,i.default)(t._encode(this._sortFields))}}),t.SearchQuery=t.Query._extend({_sid:null,_hits:0,_queryString:null,_highlights:null,_sortBuilder:null,_clazz:null,constructor:function(e){e?this._clazz=e:e="__INVALID_CLASS",t.Query.call(this,e)},_createRequest:function(t,e){return u("search/select",null,null,"GET",t||this._getParams(),e)},sid:function(t){return this._sid=t,this},queryString:function(t){return this._queryString=t,this},highlights:function(t){var e;return e=t&&a.isString(t)?a.toArray(arguments):t,this._highlights=e,this},sortBy:function(t){return this._sortBuilder=t,this},hits:function(){return this._hits||(this._hits=0),this._hits},_processResult:function(t){return delete t.className,delete t._app_url,delete t._deeplink,t},hasMore:function(){return!this._hitEnd},reset:function(){this._hitEnd=!1,this._sid=null,this._hits=0},find:function(t){var e=this;return this._createRequest(void 0,t).then(function(t){return t.sid?(e._oldSid=e._sid,e._sid=t.sid):(e._sid=null,e._hitEnd=!0),e._hits=t.hits||0,(0,o.default)(a).call(a,t.results,function(n){n.className&&(t.className=n.className);var r=e._newObject(t);return r.appURL=n._app_url,r._finishFetch(e._processResult(n),!0),r})})},_getParams:function(){var e=t.SearchQuery.__super__._getParams.call(this);if(delete e.where,this._clazz&&(e.clazz=this.className),this._sid&&(e.sid=this._sid),!this._queryString)throw new Error("Please set query string.");if(e.q=this._queryString,this._highlights&&(e.highlights=this._highlights.join(",")),this._sortBuilder&&e.order)throw new Error("sort and order can not be set at same time.");return this._sortBuilder&&(e.sort=this._sortBuilder.build()),e}})}},function(t,e,n){"use strict";var r=n(2),i=r(n(10)),o=n(1),a=n(40),u=n(25),s=u.request;t.exports=function(t){t.Insight=t.Insight||{},o.extend(t.Insight,{startJob:function(e,n){if(!e||!e.sql)throw new Error("Please provide the sql to run the job.");var r={jobConfig:e,appId:t.applicationId};return s({path:"/bigquery/jobs",method:"POST",data:t._encode(r,null,!0),authOptions:n,signKey:!1}).then(function(e){return t._decode(e).id})},on:function(t,e){}}),t.Insight.JobQuery=function(t,e){if(!t)throw new Error("Please provide the job id.");this.id=t,this.className=e,this._skip=0,this._limit=100},o.extend(t.Insight.JobQuery.prototype,{skip:function(t){return this._skip=t,this},limit:function(t){return this._limit=t,this},find:function(t){var e={skip:this._skip,limit:this._limit};return s({path:"/bigquery/jobs/".concat(this.id),method:"GET",query:e,authOptions:t,signKey:!1}).then(function(t){return t.error?i.default.reject(new a(t.code,t.error)):i.default.resolve(t)})}})}},function(t,e,n){"use strict";var r=n(2),i=r(n(10)),o=n(1),a=n(25),u=a.request,s=n(28),c=s.getSessionToken;t.exports=function(t){var e=function(e){if(e.user){if(!e.user._sessionToken)throw new Error("authOptions.user is not signed in.");return i.default.resolve(e.user)}return e.sessionToken?t.User._fetchUserBySessionToken(e.sessionToken):t.User.currentAsync()},n=function(e){var n=c(e);return n?i.default.resolve(n):t.User.currentAsync().then(function(t){if(t)return t.getSessionToken()})};t.Friendship={request:function(n){var r,i,a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};n.friend?(r=n.friend,i=n.attributes):r=n;var s=o.isString(r)?t.Object.createWithoutData("_User",r):r;return e(a).then(function(t){if(!t)throw new Error("Please signin an user.");return u({method:"POST",path:"/users/friendshipRequests",data:{user:t._toPointer(),friend:s._toPointer(),friendship:i},authOptions:a})})},acceptRequest:function(e){var r,i,a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};e.request?(r=e.request,i=e.attributes):r=e;var s=o.isString(r)?r:r.id;return n(a).then(function(e){if(!e)throw new Error("Please signin an user.");return u({method:"PUT",path:"/users/friendshipRequests/"+s+"/accept",data:{friendship:t._encode(i)},authOptions:a})})},declineRequest:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=o.isString(t)?t:t.id;return n(e).then(function(t){if(!t)throw new Error("Please signin an user.");return u({method:"PUT",path:"/users/friendshipRequests/"+r+"/decline",authOptions:e})})}}}},function(t,e,n){"use strict";var r=n(2),i=r(n(34)),o=n(1),a=n(25),u=a._request,s=n(59),c=function(t){return"string"==typeof t?t:"function"==typeof t.getPayload?(0,i.default)(t.getPayload()):(0,i.default)(t)};t.exports=s.Object.extend("_Conversation",{constructor:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};s.Object.prototype.constructor.call(this,null,null),this.set("name",t),void 0!==e.isSystem&&this.set("sys",!!e.isSystem),void 0!==e.isTransient&&this.set("tr",!!e.isTransient)},getCreator:function(){return this.get("c")},getLastMessageAt:function(){return this.get("lm")},getMembers:function(){return this.get("m")},addMember:function(t){return this.add("m",t)},getMutedMembers:function(){return this.get("mu")},getName:function(){return this.get("name")},isTransient:function(){return this.get("tr")},isSystem:function(){return this.get("sys")},send:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},i={from_peer:t,conv_id:this.id,transient:!1,message:c(e)};return void 0!==n.toClients&&(i.to_peers=n.toClients),void 0!==n.transient&&(i.transient=!!n.transient),void 0!==n.pushData&&(i.push_data=n.pushData),u("rtm","messages",null,"POST",i,r)},broadcast:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},i={from_peer:t,conv_id:this.id,message:c(e)};if(void 0!==n.pushData&&(i.push=n.pushData),void 0!==n.validTill){var a=n.validTill;o.isDate(a)&&(a=a.getTime()),n.valid_till=a}return u("rtm","broadcast",null,"POST",i,r)}})},function(t,e,n){"use strict";function r(t){var e=t.name,n=t.value,r=t.version;this.name=e,this.value=n,this.version=r}var i=n(2),o=i(n(10)),a=i(n(39)),u=i(n(29)),s=n(1),c=n(25),f=c.request,l=n(28),d=l.ensureArray,h=l.parseDate,p=n(59);p.LeaderboardVersionChangeInterval={NEVER:"never",DAY:"day",WEEK:"week",MONTH:"month"},p.LeaderboardOrder={ASCENDING:"ascending",DESCENDING:"descending"},p.LeaderboardUpdateStrategy={BETTER:"better",LAST:"last",SUM:"sum"};var v=function(t){var e=p._decode(t);return new r({name:e.statisticName,value:e.statisticValue,version:e.version})};p.Leaderboard=function(t){this.statisticName=t,this.order=void 0,this.updateStrategy=void 0,this.versionChangeInterval=void 0,this.version=void 0,this.nextResetAt=void 0,this.createdAt=void 0};var _=p.Leaderboard;p.Leaderboard.createWithoutData=function(t){return new _(t)},p.Leaderboard.createLeaderboard=function(t,e){var n=t.statisticName,r=t.order,i=t.versionChangeInterval,o=t.updateStrategy;return f({method:"POST",path:"/leaderboard/leaderboards",data:{statisticName:n,order:r,versionChangeInterval:i,updateStrategy:o},authOptions:e}).then(function(t){return new _(n)._finishFetch(t)})},p.Leaderboard.getLeaderboard=function(t,e){return _.createWithoutData(t).fetch(e)},p.Leaderboard.getStatistics=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e.statisticNames,r=arguments.length>2?arguments[2]:void 0;return o.default.resolve().then(function(){if(!t||!t.id)throw new Error("user must be an AV.User");return f({method:"GET",path:"/leaderboard/users/".concat(t.id,"/statistics"),query:{statistics:n?d(n).join(","):void 0},authOptions:r}).then(function(t){var e=t.results;return(0,a.default)(e).call(e,v)})})},p.Leaderboard.updateStatistics=function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return o.default.resolve().then(function(){if(!t||!t.id)throw new Error("user must be an AV.User");var r=(0,a.default)(s).call(s,e,function(t,e){return{statisticName:e,statisticValue:t}}),i=n.overwrite;return f({method:"POST",path:"/leaderboard/users/".concat(t.id,"/statistics"),query:{overwrite:i?1:void 0},data:r,authOptions:n}).then(function(t){var e=t.results;return(0,a.default)(e).call(e,v)})})},p.Leaderboard.deleteStatistics=function(t,e,n){return o.default.resolve().then(function(){if(!t||!t.id)throw new Error("user must be an AV.User");return f({method:"DELETE",path:"/leaderboard/users/".concat(t.id,"/statistics"),query:{statistics:d(e).join(",")},authOptions:n}).then(function(){})})},s.extend(_.prototype,{_finishFetch:function(t){var e=this;return s.forEach(t,function(t,n){"updatedAt"!==n&&"objectId"!==n&&("expiredAt"===n&&(n="nextResetAt"),"createdAt"===n&&(t=h(t)),t&&"Date"===t.__type&&(t=h(t.iso)),e[n]=t)}),this},fetch:function(t){var e=this;return f({method:"GET",path:"/leaderboard/leaderboards/".concat(this.statisticName),authOptions:t}).then(function(t){return e._finishFetch(t)})},count:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.version,n=arguments.length>1?arguments[1]:void 0;return f({method:"GET",path:"/leaderboard/leaderboards/".concat(this.statisticName,"/ranks"),query:{count:1,limit:0,version:e},authOptions:n}).then(function(t){return t.count})},_getResults:function(t,e,n){var r,i=t.skip,o=t.limit,c=t.selectUserKeys,l=t.includeUserKeys,h=t.includeStatistics,_=t.version;return f({method:"GET",path:(0,u.default)(r="/leaderboard/leaderboards/".concat(this.statisticName,"/ranks")).call(r,n?"/".concat(n):""),query:{skip:i,limit:o,selectUserKeys:s.union(d(c),d(l)).join(",")||void 0,includeUser:l?d(l).join(","):void 0,includeStatistics:h?d(h).join(","):void 0,version:_},authOptions:e}).then(function(t){var e=t.results;return(0,a.default)(e).call(e,function(t){var e=p._decode(t),n=e.user,r=e.statisticValue,i=e.rank,o=e.statistics,u=void 0===o?[]:o;return{user:n,value:r,rank:i,includedStatistics:(0,a.default)(u).call(u,v)}})})},getResults:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.skip,n=t.limit,r=t.selectUserKeys,i=t.includeUserKeys,o=t.includeStatistics,a=t.version,u=arguments.length>1?arguments[1]:void 0;return this._getResults({skip:e,limit:n,selectUserKeys:r,includeUserKeys:i,includeStatistics:o,version:a},u)},getResultsAroundUser:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2?arguments[2]:void 0;if(t&&"string"!=typeof t.id)return this.getResultsAroundUser(void 0,t,e);var r=e.limit,i=e.selectUserKeys,o=e.includeUserKeys,a=e.includeStatistics,u=e.version;return this._getResults({limit:r,selectUserKeys:i,includeUserKeys:o,includeStatistics:a,version:u},n,t?t.id:"self")},_update:function(t,e){var n=this;return f({method:"PUT",path:"/leaderboard/leaderboards/".concat(this.statisticName),data:t,authOptions:e}).then(function(t){return n._finishFetch(t)})},updateVersionChangeInterval:function(t,e){return this._update({versionChangeInterval:t},e)},updateUpdateStrategy:function(t,e){return this._update({updateStrategy:t},e)},reset:function(t){var e=this;return f({method:"PUT",path:"/leaderboard/leaderboards/".concat(this.statisticName,"/incrementVersion"),authOptions:t}).then(function(t){return e._finishFetch(t)})},destroy:function(t){return p.request({method:"DELETE",path:"/leaderboard/leaderboards/".concat(this.statisticName),authOptions:t}).then(function(){})},getArchives:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e.skip,r=e.limit,i=arguments.length>1?arguments[1]:void 0;return f({method:"GET",path:"/leaderboard/leaderboards/".concat(this.statisticName,"/archives"),query:{skip:n,limit:r},authOptions:i}).then(function(e){var n=e.results;return(0,a.default)(n).call(n,function(e){var n=e.version,r=e.status,i=e.url,o=e.activatedAt,a=e.deactivatedAt;return{statisticName:t.statisticName,version:n,status:r,url:i,activatedAt:h(o.iso),deactivatedAt:h(a.iso)}})})}})}])}); +//# sourceMappingURL=av-core-min.js.map \ No newline at end of file diff --git a/dist/av-core-min.js.map b/dist/av-core-min.js.map new file mode 100644 index 000000000..f5acecb94 --- /dev/null +++ b/dist/av-core-min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap f5e1032ccd19ab85d8cf","webpack:///av-core-min.js","webpack:///./node_modules/core-js-pure/internals/export.js","webpack:///./node_modules/underscore/modules/index-all.js","webpack:///./node_modules/@babel/runtime-corejs3/helpers/interopRequireDefault.js","webpack:///./node_modules/underscore/modules/_setup.js","webpack:///./node_modules/core-js-pure/internals/fails.js","webpack:///./node_modules/core-js-pure/internals/define-well-known-symbol.js","webpack:///./node_modules/core-js-pure/internals/function-uncurry-this.js","webpack:///./node_modules/core-js-pure/internals/is-callable.js","webpack:///./node_modules/core-js-pure/internals/well-known-symbol.js","webpack:///./node_modules/core-js-pure/internals/global.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js-stable/promise.js","webpack:///./node_modules/core-js-pure/internals/function-call.js","webpack:///./node_modules/underscore/modules/keys.js","webpack:///./node_modules/core-js-pure/internals/path.js","webpack:///./node_modules/core-js-pure/internals/has-own-property.js","webpack:///./node_modules/underscore/modules/_tagTester.js","webpack:///./node_modules/core-js-pure/internals/get-built-in.js","webpack:///./node_modules/core-js-pure/internals/is-object.js","webpack:///./node_modules/underscore/modules/_cb.js","webpack:///./node_modules/core-js-pure/internals/descriptors.js","webpack:///./node_modules/core-js-pure/internals/object-is-prototype-of.js","webpack:///./node_modules/core-js-pure/internals/an-object.js","webpack:///./node_modules/underscore/modules/restArguments.js","webpack:///./node_modules/underscore/modules/underscore.js","webpack:///./node_modules/underscore/modules/_isArrayLike.js","webpack:///./src/request.js","webpack:///./node_modules/underscore/modules/isFunction.js","webpack:///./node_modules/underscore/modules/_getLength.js","webpack:///./src/utils/index.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js-stable/instance/concat.js","webpack:///./node_modules/core-js-pure/internals/a-callable.js","webpack:///./node_modules/core-js-pure/internals/is-pure.js","webpack:///./node_modules/core-js-pure/internals/object-define-property.js","webpack:///./node_modules/core-js-pure/internals/to-indexed-object.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js-stable/json/stringify.js","webpack:///./node_modules/core-js-pure/internals/to-object.js","webpack:///./node_modules/core-js-pure/internals/create-non-enumerable-property.js","webpack:///./node_modules/underscore/modules/_has.js","webpack:///./node_modules/core-js-pure/internals/entry-virtual.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js-stable/instance/map.js","webpack:///./src/error.js","webpack:///./node_modules/core-js-pure/internals/create-property-descriptor.js","webpack:///./node_modules/core-js-pure/internals/length-of-array-like.js","webpack:///./node_modules/core-js-pure/internals/define-built-in.js","webpack:///./node_modules/core-js-pure/internals/new-promise-capability.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/@babel/runtime-corejs3/core-js-stable/instance/keys.js","webpack:///./node_modules/core-js-pure/internals/native-symbol.js","webpack:///./node_modules/core-js-pure/internals/function-bind-context.js","webpack:///./node_modules/core-js-pure/internals/object-create.js","webpack:///./node_modules/core-js-pure/internals/iterators.js","webpack:///./node_modules/core-js-pure/internals/classof.js","webpack:///./node_modules/core-js-pure/internals/set-to-string-tag.js","webpack:///./node_modules/core-js-pure/internals/promise-native-constructor.js","webpack:///./node_modules/underscore/modules/values.js","webpack:///./node_modules/underscore/modules/_flatten.js","webpack:///./node_modules/underscore/modules/map.js","webpack:///./src/av.js","webpack:///./node_modules/debug/src/browser.js","webpack:///./src/adapter.js","webpack:///./node_modules/core-js-pure/internals/function-apply.js","webpack:///./node_modules/core-js-pure/internals/function-bind-native.js","webpack:///./node_modules/core-js-pure/internals/object-get-own-property-descriptor.js","webpack:///./node_modules/core-js-pure/internals/classof-raw.js","webpack:///./node_modules/core-js-pure/internals/try-to-string.js","webpack:///./node_modules/core-js-pure/internals/shared.js","webpack:///./node_modules/core-js-pure/internals/iterate.js","webpack:///./node_modules/core-js-pure/internals/to-string.js","webpack:///./node_modules/core-js-pure/modules/es.array.iterator.js","webpack:///./node_modules/core-js-pure/internals/perform.js","webpack:///./node_modules/core-js-pure/internals/promise-constructor-detection.js","webpack:///./node_modules/core-js-pure/modules/web.dom-collections.iterator.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-pure/internals/is-array.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js-stable/instance/slice.js","webpack:///./node_modules/core-js-pure/internals/to-property-key.js","webpack:///./node_modules/core-js-pure/internals/is-symbol.js","webpack:///./node_modules/core-js-pure/internals/engine-v8-version.js","webpack:///./node_modules/core-js-pure/internals/engine-user-agent.js","webpack:///./node_modules/core-js-pure/internals/object-get-prototype-of.js","webpack:///./node_modules/core-js-pure/internals/shared-key.js","webpack:///./node_modules/core-js-pure/internals/object-set-prototype-of.js","webpack:///./node_modules/core-js-pure/internals/hidden-keys.js","webpack:///./node_modules/core-js-pure/internals/get-iterator-method.js","webpack:///./node_modules/core-js-pure/internals/internal-state.js","webpack:///./node_modules/core-js-pure/internals/is-constructor.js","webpack:///./node_modules/core-js-pure/internals/array-slice.js","webpack:///./node_modules/core-js-pure/modules/es.string.iterator.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-pure/internals/create-property.js","webpack:///./node_modules/core-js-pure/internals/array-method-has-species-support.js","webpack:///./node_modules/core-js-pure/internals/array-iteration.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js-stable/instance/index-of.js","webpack:///./src/utils/ajax.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js-stable/instance/find.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/core-js-pure/internals/require-object-coercible.js","webpack:///./node_modules/core-js-pure/internals/get-method.js","webpack:///./node_modules/core-js-pure/internals/shared-store.js","webpack:///./node_modules/core-js-pure/internals/uid.js","webpack:///./node_modules/core-js-pure/internals/document-create-element.js","webpack:///./node_modules/core-js-pure/internals/object-get-own-property-names.js","webpack:///./node_modules/core-js-pure/internals/to-absolute-index.js","webpack:///./node_modules/core-js-pure/internals/to-integer-or-infinity.js","webpack:///./node_modules/core-js-pure/internals/enum-bug-keys.js","webpack:///./node_modules/core-js-pure/internals/object-get-own-property-symbols.js","webpack:///./node_modules/core-js-pure/internals/object-keys.js","webpack:///./node_modules/core-js-pure/internals/to-string-tag-support.js","webpack:///./node_modules/core-js-pure/internals/inspect-source.js","webpack:///./node_modules/core-js-pure/internals/engine-is-node.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-corejs3/helpers/typeof.js","webpack:///./node_modules/core-js-pure/internals/well-known-symbol-wrapped.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js/object/define-property.js","webpack:///./node_modules/core-js-pure/internals/object-property-is-enumerable.js","webpack:///./node_modules/core-js-pure/internals/indexed-object.js","webpack:///./node_modules/core-js-pure/internals/use-symbol-as-uid.js","webpack:///./node_modules/core-js-pure/internals/ie8-dom-define.js","webpack:///./node_modules/core-js-pure/internals/is-forced.js","webpack:///./node_modules/core-js-pure/internals/v8-prototype-define-bug.js","webpack:///./node_modules/core-js-pure/internals/correct-prototype-getter.js","webpack:///./node_modules/core-js-pure/internals/object-keys-internal.js","webpack:///./node_modules/core-js-pure/internals/array-includes.js","webpack:///./node_modules/core-js-pure/internals/object-define-properties.js","webpack:///./node_modules/core-js-pure/internals/html.js","webpack:///./node_modules/core-js-pure/internals/is-array-iterator-method.js","webpack:///./node_modules/core-js-pure/internals/get-iterator.js","webpack:///./node_modules/core-js-pure/internals/iterator-close.js","webpack:///./node_modules/core-js-pure/internals/add-to-unscopables.js","webpack:///./node_modules/core-js-pure/internals/define-iterator.js","webpack:///./node_modules/core-js-pure/internals/iterators-core.js","webpack:///./node_modules/core-js-pure/internals/species-constructor.js","webpack:///./node_modules/core-js-pure/internals/a-constructor.js","webpack:///./node_modules/core-js-pure/internals/task.js","webpack:///./node_modules/core-js-pure/internals/engine-is-ios.js","webpack:///./node_modules/core-js-pure/internals/promise-statics-incorrect-iteration.js","webpack:///./node_modules/core-js-pure/internals/check-correctness-of-iteration.js","webpack:///./node_modules/core-js-pure/internals/promise-resolve.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/core-js-pure/modules/es.array.concat.js","webpack:///./node_modules/core-js-pure/internals/array-species-create.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js-stable/object/keys.js","webpack:///./node_modules/core-js-pure/modules/es.json.stringify.js","webpack:///./node_modules/uuid/v4.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js-stable/object/get-prototype-of.js","webpack:///./node_modules/core-js-pure/stable/object/get-prototype-of.js","webpack:///./src/version.js","webpack:///./node_modules/eventemitter3/index.js","webpack:///./src/localstorage.js","webpack:///./src/cache.js","webpack:///./node_modules/core-js-pure/stable/object/set-prototype-of.js","webpack:///./node_modules/core-js-pure/stable/instance/slice.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js-stable/object/define-property.js","webpack:///./node_modules/core-js-pure/stable/object/define-property.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js/symbol.js","webpack:///./node_modules/core-js-pure/stable/symbol/index.js","webpack:///./node_modules/core-js-pure/internals/symbol-define-to-primitive.js","webpack:///./node_modules/core-js-pure/internals/native-symbol-registry.js","webpack:///./node_modules/core-js-pure/modules/es.symbol.iterator.js","webpack:///./node_modules/core-js-pure/stable/array/from.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js/get-iterator-method.js","webpack:///./node_modules/core-js-pure/internals/function-bind.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js/object/set-prototype-of.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js/instance/bind.js","webpack:///./node_modules/charenc/charenc.js","webpack:///./src/entry/core.js","webpack:///./src/index.js","webpack:///./node_modules/core-js-pure/stable/promise/index.js","webpack:///./node_modules/core-js-pure/es/promise/index.js","webpack:///./node_modules/core-js-pure/modules/es.aggregate-error.js","webpack:///./node_modules/core-js-pure/modules/es.aggregate-error.constructor.js","webpack:///./node_modules/core-js-pure/internals/to-primitive.js","webpack:///./node_modules/core-js-pure/internals/ordinary-to-primitive.js","webpack:///./node_modules/core-js-pure/internals/define-global-property.js","webpack:///./node_modules/core-js-pure/internals/a-possible-prototype.js","webpack:///./node_modules/core-js-pure/internals/copy-constructor-properties.js","webpack:///./node_modules/core-js-pure/internals/own-keys.js","webpack:///./node_modules/core-js-pure/internals/math-trunc.js","webpack:///./node_modules/core-js-pure/internals/to-length.js","webpack:///./node_modules/core-js-pure/internals/clear-error-stack.js","webpack:///./node_modules/core-js-pure/internals/install-error-cause.js","webpack:///./node_modules/core-js-pure/internals/normalize-string-argument.js","webpack:///./node_modules/core-js-pure/internals/error-stack-installable.js","webpack:///./node_modules/core-js-pure/internals/native-weak-map.js","webpack:///./node_modules/core-js-pure/internals/function-name.js","webpack:///./node_modules/core-js-pure/internals/create-iterator-constructor.js","webpack:///./node_modules/core-js-pure/internals/object-to-string.js","webpack:///./node_modules/core-js-pure/modules/es.promise.js","webpack:///./node_modules/core-js-pure/modules/es.promise.constructor.js","webpack:///./node_modules/core-js-pure/internals/set-species.js","webpack:///./node_modules/core-js-pure/internals/an-instance.js","webpack:///./node_modules/core-js-pure/internals/validate-arguments-length.js","webpack:///./node_modules/core-js-pure/internals/microtask.js","webpack:///./node_modules/core-js-pure/internals/engine-is-ios-pebble.js","webpack:///./node_modules/core-js-pure/internals/engine-is-webos-webkit.js","webpack:///./node_modules/core-js-pure/internals/host-report-errors.js","webpack:///./node_modules/core-js-pure/internals/queue.js","webpack:///./node_modules/core-js-pure/internals/engine-is-browser.js","webpack:///./node_modules/core-js-pure/modules/es.promise.all.js","webpack:///./node_modules/core-js-pure/modules/es.promise.catch.js","webpack:///./node_modules/core-js-pure/modules/es.promise.race.js","webpack:///./node_modules/core-js-pure/modules/es.promise.reject.js","webpack:///./node_modules/core-js-pure/modules/es.promise.resolve.js","webpack:///./node_modules/core-js-pure/modules/es.promise.all-settled.js","webpack:///./node_modules/core-js-pure/modules/es.promise.any.js","webpack:///./node_modules/core-js-pure/modules/es.promise.finally.js","webpack:///./node_modules/core-js-pure/internals/string-multibyte.js","webpack:///./node_modules/core-js-pure/internals/dom-iterables.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-pure/stable/instance/concat.js","webpack:///./node_modules/core-js-pure/es/instance/concat.js","webpack:///./node_modules/core-js-pure/es/array/virtual/concat.js","webpack:///./node_modules/core-js-pure/internals/does-not-exceed-safe-integer.js","webpack:///./node_modules/core-js-pure/internals/array-species-constructor.js","webpack:///./node_modules/core-js-pure/stable/instance/map.js","webpack:///./node_modules/core-js-pure/es/instance/map.js","webpack:///./node_modules/core-js-pure/es/array/virtual/map.js","webpack:///./node_modules/core-js-pure/modules/es.array.map.js","webpack:///./node_modules/core-js-pure/stable/object/keys.js","webpack:///./node_modules/core-js-pure/es/object/keys.js","webpack:///./node_modules/core-js-pure/modules/es.object.keys.js","webpack:///./node_modules/core-js-pure/stable/json/stringify.js","webpack:///./node_modules/core-js-pure/es/json/stringify.js","webpack:///./node_modules/core-js-pure/stable/instance/index-of.js","webpack:///./node_modules/core-js-pure/es/instance/index-of.js","webpack:///./node_modules/core-js-pure/es/array/virtual/index-of.js","webpack:///./node_modules/core-js-pure/modules/es.array.index-of.js","webpack:///./node_modules/core-js-pure/internals/array-method-is-strict.js","webpack:///./node_modules/core-js-pure/stable/instance/keys.js","webpack:///./node_modules/core-js-pure/stable/array/virtual/keys.js","webpack:///./node_modules/core-js-pure/es/array/virtual/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-pure/es/object/get-prototype-of.js","webpack:///./node_modules/core-js-pure/modules/es.object.get-prototype-of.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js-stable/object/set-prototype-of.js","webpack:///./node_modules/core-js-pure/es/object/set-prototype-of.js","webpack:///./node_modules/core-js-pure/modules/es.object.set-prototype-of.js","webpack:///./src/init.js","webpack:///./node_modules/core-js-pure/es/instance/slice.js","webpack:///./node_modules/core-js-pure/es/array/virtual/slice.js","webpack:///./node_modules/core-js-pure/modules/es.array.slice.js","webpack:///./node_modules/core-js-pure/es/object/define-property.js","webpack:///./node_modules/core-js-pure/modules/es.object.define-property.js","webpack:///./src/app-router.js","webpack:///./node_modules/core-js-pure/features/symbol/index.js","webpack:///./node_modules/core-js-pure/full/symbol/index.js","webpack:///./node_modules/core-js-pure/actual/symbol/index.js","webpack:///./node_modules/core-js-pure/es/symbol/index.js","webpack:///./node_modules/core-js-pure/modules/es.symbol.js","webpack:///./node_modules/core-js-pure/modules/es.symbol.constructor.js","webpack:///./node_modules/core-js-pure/internals/object-get-own-property-names-external.js","webpack:///./node_modules/core-js-pure/internals/array-slice-simple.js","webpack:///./node_modules/core-js-pure/modules/es.symbol.for.js","webpack:///./node_modules/core-js-pure/modules/es.symbol.key-for.js","webpack:///./node_modules/core-js-pure/modules/es.object.get-own-property-symbols.js","webpack:///./node_modules/core-js-pure/modules/es.symbol.async-iterator.js","webpack:///./node_modules/core-js-pure/modules/es.symbol.has-instance.js","webpack:///./node_modules/core-js-pure/modules/es.symbol.is-concat-spreadable.js","webpack:///./node_modules/core-js-pure/modules/es.symbol.match.js","webpack:///./node_modules/core-js-pure/modules/es.symbol.match-all.js","webpack:///./node_modules/core-js-pure/modules/es.symbol.replace.js","webpack:///./node_modules/core-js-pure/modules/es.symbol.search.js","webpack:///./node_modules/core-js-pure/modules/es.symbol.species.js","webpack:///./node_modules/core-js-pure/modules/es.symbol.split.js","webpack:///./node_modules/core-js-pure/modules/es.symbol.to-primitive.js","webpack:///./node_modules/core-js-pure/modules/es.symbol.to-string-tag.js","webpack:///./node_modules/core-js-pure/modules/es.symbol.unscopables.js","webpack:///./node_modules/core-js-pure/modules/es.json.to-string-tag.js","webpack:///./node_modules/core-js-pure/modules/esnext.symbol.async-dispose.js","webpack:///./node_modules/core-js-pure/modules/esnext.symbol.dispose.js","webpack:///./node_modules/core-js-pure/modules/esnext.symbol.matcher.js","webpack:///./node_modules/core-js-pure/modules/esnext.symbol.metadata-key.js","webpack:///./node_modules/core-js-pure/modules/esnext.symbol.observable.js","webpack:///./node_modules/core-js-pure/modules/esnext.symbol.metadata.js","webpack:///./node_modules/core-js-pure/modules/esnext.symbol.pattern-match.js","webpack:///./node_modules/core-js-pure/modules/esnext.symbol.replace-all.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js/symbol/iterator.js","webpack:///./node_modules/core-js-pure/features/symbol/iterator.js","webpack:///./node_modules/core-js-pure/full/symbol/iterator.js","webpack:///./node_modules/core-js-pure/actual/symbol/iterator.js","webpack:///./node_modules/core-js-pure/stable/symbol/iterator.js","webpack:///./node_modules/core-js-pure/es/symbol/iterator.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js-stable/instance/filter.js","webpack:///./node_modules/core-js-pure/stable/instance/filter.js","webpack:///./node_modules/core-js-pure/es/instance/filter.js","webpack:///./node_modules/core-js-pure/es/array/virtual/filter.js","webpack:///./node_modules/core-js-pure/modules/es.array.filter.js","webpack:///./node_modules/promise-timeout/index.js","webpack:///./src/event.js","webpack:///./src/geopoint.js","webpack:///./src/acl.js","webpack:///./src/op.js","webpack:///./node_modules/core-js-pure/stable/instance/find.js","webpack:///./node_modules/core-js-pure/es/instance/find.js","webpack:///./node_modules/core-js-pure/es/array/virtual/find.js","webpack:///./node_modules/core-js-pure/modules/es.array.find.js","webpack:///./src/relation.js","webpack:///./src/file.js","webpack:///./src/uploader/cos.js","webpack:///./src/uploader/qiniu.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js-stable/array/from.js","webpack:///./node_modules/core-js-pure/es/array/from.js","webpack:///./node_modules/core-js-pure/modules/es.array.from.js","webpack:///./node_modules/core-js-pure/internals/array-from.js","webpack:///./node_modules/core-js-pure/internals/call-with-safe-iteration-closing.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js-stable/symbol.js","webpack:///./node_modules/core-js-pure/features/get-iterator-method.js","webpack:///./node_modules/core-js-pure/full/get-iterator-method.js","webpack:///./node_modules/core-js-pure/actual/get-iterator-method.js","webpack:///./node_modules/core-js-pure/stable/get-iterator-method.js","webpack:///./node_modules/core-js-pure/es/get-iterator-method.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js-stable/reflect/construct.js","webpack:///./node_modules/core-js-pure/stable/reflect/construct.js","webpack:///./node_modules/core-js-pure/es/reflect/construct.js","webpack:///./node_modules/core-js-pure/modules/es.reflect.construct.js","webpack:///./node_modules/@babel/runtime-corejs3/helpers/inherits.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js/object/create.js","webpack:///./node_modules/core-js-pure/features/object/create.js","webpack:///./node_modules/core-js-pure/full/object/create.js","webpack:///./node_modules/core-js-pure/actual/object/create.js","webpack:///./node_modules/core-js-pure/stable/object/create.js","webpack:///./node_modules/core-js-pure/es/object/create.js","webpack:///./node_modules/core-js-pure/modules/es.object.create.js","webpack:///./node_modules/core-js-pure/features/object/define-property.js","webpack:///./node_modules/core-js-pure/full/object/define-property.js","webpack:///./node_modules/core-js-pure/actual/object/define-property.js","webpack:///./node_modules/@babel/runtime-corejs3/helpers/setPrototypeOf.js","webpack:///./node_modules/core-js-pure/features/object/set-prototype-of.js","webpack:///./node_modules/core-js-pure/full/object/set-prototype-of.js","webpack:///./node_modules/core-js-pure/actual/object/set-prototype-of.js","webpack:///./node_modules/core-js-pure/features/instance/bind.js","webpack:///./node_modules/core-js-pure/full/instance/bind.js","webpack:///./node_modules/core-js-pure/actual/instance/bind.js","webpack:///./node_modules/core-js-pure/stable/instance/bind.js","webpack:///./node_modules/core-js-pure/es/instance/bind.js","webpack:///./node_modules/core-js-pure/es/function/virtual/bind.js","webpack:///./node_modules/core-js-pure/modules/es.function.bind.js","webpack:///./node_modules/@babel/runtime-corejs3/helpers/possibleConstructorReturn.js","webpack:///./node_modules/@babel/runtime-corejs3/helpers/assertThisInitialized.js","webpack:///./node_modules/@babel/runtime-corejs3/helpers/getPrototypeOf.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js/object/get-prototype-of.js","webpack:///./node_modules/core-js-pure/features/object/get-prototype-of.js","webpack:///./node_modules/core-js-pure/full/object/get-prototype-of.js","webpack:///./node_modules/core-js-pure/actual/object/get-prototype-of.js","webpack:///./node_modules/@babel/runtime-corejs3/helpers/classCallCheck.js","webpack:///./node_modules/@babel/runtime-corejs3/helpers/createClass.js","webpack:///./src/utils/btoa.js","webpack:///./src/uploader/s3.js","webpack:///./node_modules/md5/md5.js","webpack:///./node_modules/crypt/crypt.js","webpack:///./node_modules/is-buffer/index.js","webpack:///./src/utils/parse-base64-browser.js","webpack:///./src/object.js","webpack:///./node_modules/@babel/runtime-corejs3/helpers/slicedToArray.js","webpack:///./node_modules/@babel/runtime-corejs3/helpers/arrayWithHoles.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js/array/is-array.js","webpack:///./node_modules/core-js-pure/features/array/is-array.js","webpack:///./node_modules/core-js-pure/full/array/is-array.js","webpack:///./node_modules/core-js-pure/actual/array/is-array.js","webpack:///./node_modules/core-js-pure/stable/array/is-array.js","webpack:///./node_modules/core-js-pure/es/array/is-array.js","webpack:///./node_modules/core-js-pure/modules/es.array.is-array.js","webpack:///./node_modules/@babel/runtime-corejs3/helpers/iterableToArrayLimit.js","webpack:///./node_modules/@babel/runtime-corejs3/helpers/unsupportedIterableToArray.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js/instance/slice.js","webpack:///./node_modules/core-js-pure/features/instance/slice.js","webpack:///./node_modules/core-js-pure/full/instance/slice.js","webpack:///./node_modules/core-js-pure/actual/instance/slice.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js/array/from.js","webpack:///./node_modules/core-js-pure/features/array/from.js","webpack:///./node_modules/core-js-pure/full/array/from.js","webpack:///./node_modules/core-js-pure/actual/array/from.js","webpack:///./node_modules/@babel/runtime-corejs3/helpers/arrayLikeToArray.js","webpack:///./node_modules/@babel/runtime-corejs3/helpers/nonIterableRest.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor.js","webpack:///./node_modules/core-js-pure/stable/object/get-own-property-descriptor.js","webpack:///./node_modules/core-js-pure/es/object/get-own-property-descriptor.js","webpack:///./node_modules/core-js-pure/modules/es.object.get-own-property-descriptor.js","webpack:///./src/role.js","webpack:///./src/user.js","webpack:///./node_modules/@babel/runtime-corejs3/helpers/defineProperty.js","webpack:///./src/query.js","webpack:///./src/live-query.js","webpack:///./src/captcha.js","webpack:///./src/cloudfunction.js","webpack:///./src/push.js","webpack:///./src/status.js","webpack:///./src/search.js","webpack:///./src/insight.js","webpack:///./src/friendship.js","webpack:///./src/conversation.js","webpack:///./src/leaderboard.js"],"names":["root","factory","exports","module","define","amd","self","this","__webpack_require__","moduleId","installedModules","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","global","apply","uncurryThis","isCallable","getOwnPropertyDescriptor","f","isForced","path","bind","createNonEnumerableProperty","hasOwn","wrapConstructor","NativeConstructor","Wrapper","a","b","arguments","length","options","source","FORCED","USE_NATIVE","VIRTUAL_PROTOTYPE","key","sourceProperty","targetProperty","nativeProperty","resultProperty","descriptor","TARGET","target","GLOBAL","STATIC","stat","PROTO","proto","nativeSource","targetPrototype","forced","dontCallGetSet","value","wrap","sham","real","__webpack_exports__","_interopRequireDefault","obj","VERSION","Function","ArrayProto","Array","ObjProto","SymbolProto","Symbol","push","slice","toString","supportsArrayBuffer","ArrayBuffer","supportsDataView","DataView","nativeIsArray","isArray","nativeKeys","keys","nativeCreate","create","nativeIsView","isView","_isNaN","isNaN","_isFinite","isFinite","hasEnumBug","propertyIsEnumerable","nonEnumerableProps","MAX_ARRAY_INDEX","Math","pow","exec","error","wrappedWellKnownSymbolModule","NAME","NATIVE_BIND","FunctionPrototype","fn","argument","shared","uid","NATIVE_SYMBOL","USE_SYMBOL_AS_UID","WellKnownSymbolsStore","symbolFor","createWellKnownSymbol","withoutSetter","description","it","check","globalThis","window","toObject","tagTester","tag","aFunction","variable","undefined","namespace","method","cb","context","argCount","iteratee","fails","isPrototypeOf","isObject","$String","String","$TypeError","TypeError","restArguments","func","startIndex","max","rest","index","args","_","_wrapped","valueOf","toJSON","_concat","_promise","require","md5","extend","AV","AVError","getSessionToken","ajax","sign","isMasterKey","now","Date","getTime","signature","setAppKey","headers","signKey","applicationKey","setHeaders","authOptions","applicationId","useMasterKey","_config","masterKey","console","warn","hookKey","production","_sharedConfig","userAgent","resolve","then","sessionToken","disableCurrentUser","User","currentAsync","currentUser","_sessionToken","createApiUrl","service","version","apiURL","serverURLs","Error","charAt","request","query","data","_appRouter","refresh","timeout","requestTimeout","url","catch","errorJSON","code","message","responseText","response","JSON","parse","e","rawMessage","keepErrorRawMessage","statusCode","err","_request","route","className","objectId","_fetchWhenSave","_where","toLowerCase","isFunction","nodelist","document","childNodes","Int8Array","_keys","_getPrototypeOf","isNullOrUndefined","x","isNull","isUndefined","ensureArray","transformFetchOptions","include","includeACL","fetchOptions","join","returnACL","user","tap","interceptor","EmptyConstructor","inherits","parent","protoProps","staticProps","child","constructor","__super__","parseDate","wx","iso8601","setValue","segs","split","lastSeg","pop","currentTarget","forEach","seg","findValue","firstSeg","isPlainObject","continueWhile","predicate","asyncFunction","tryToString","DESCRIPTORS","IE8_DOM_DEFINE","V8_PROTOTYPE_DEFINE_BUG","anObject","toPropertyKey","$defineProperty","$getOwnPropertyDescriptor","O","P","Attributes","current","writable","IndexedObject","requireObjectCoercible","$Object","definePropertyModule","createPropertyDescriptor","has","CONSTRUCTOR","_setPrototypeOf","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","bitmap","toLength","aCallable","PromiseCapability","C","reject","promise","$$resolve","$$reject","type","each","V8_VERSION","getOwnPropertySymbols","symbol","that","activeXDocument","definePropertiesModule","enumBugKeys","hiddenKeys","html","documentCreateElement","sharedKey","IE_PROTO","scriptTag","content","LT","NullProtoObjectViaActiveX","write","close","temp","parentWindow","NullProtoObjectViaIFrame","iframeDocument","iframe","style","display","appendChild","src","contentWindow","open","F","NullProtoObject","ActiveXObject","domain","Properties","result","TO_STRING_TAG_SUPPORT","classofRaw","wellKnownSymbol","TO_STRING_TAG","CORRECT_ARGUMENTS","tryGet","callee","TAG","SET_METHOD","Promise","values","flatten","input","depth","strict","output","concat","Infinity","idx","j","len","map","results","currentKey","_map","_stringify","_indexOf","_keys2","uuid","debug","setAdapters","adapterManager","realtime","initialUserAgent","liveQueryRealtime","on","platformInfo","ua","comments","extra","_getAVPath","isString","substring","_installationId","_getInstallationId","localStorage","getItemAsync","setItemAsync","_subscriptionId","_refreshSubscriptionId","subscriptionId","_getSubscriptionId","_parseDate","_extend","classProps","_encode","seenObjects","disallowObjects","full","_hasData","_toFullJSON","_toPointer","ACL","isDate","__type","iso","GeoPoint","isRegExp","Relation","Op","File","id","mapObject","v","k","_decode","__op","pointer","_create","clone","_finishFetch","latitude","longitude","relation","targetClassName","file","parseJSON","text","stringify","_encodeObjectOrArray","encodeAVObject","_arrayEach","_traverse","seen","attributes","newChild","_each","_objectEach","callback","enable","namespaces","disable","_typeof","iterator","useColors","process","__nwjs","navigator","match","documentElement","WebkitAppearance","firebug","exception","table","parseInt","RegExp","$1","formatArgs","humanize","diff","color","splice","lastC","replace","log","_console","save","storage","setItem","removeItem","load","r","getItem","env","DEBUG","colors","formatters","EventEmitter","AdapterManager","_adapters","getAdapter","adapter","newAdapters","emit","Reflect","test","propertyIsEnumerableModule","toIndexedObject","stringSlice","IS_PURE","store","mode","copyright","license","isArrayIteratorMethod","lengthOfArrayLike","getIterator","getIteratorMethod","iteratorClose","Result","stopped","ResultPrototype","iterable","unboundFunction","iterFn","next","step","AS_ENTRIES","IS_ITERATOR","INTERRUPTED","stop","condition","callFn","done","classof","addToUnscopables","Iterators","InternalStateModule","defineIterator","setInternalState","set","getInternalState","getterFor","iterated","kind","state","Arguments","NativePromiseConstructor","inspectSource","IS_BROWSER","NativePromisePrototype","SPECIES","SUBCLASSING","NATIVE_PROMISE_REJECTION_EVENT","PromiseRejectionEvent","FORCED_PROMISE_CONSTRUCTOR","PROMISE_CONSTRUCTOR_SOURCE","GLOBAL_CORE_JS_PROMISE","FakePromise","REJECTION_EVENT","DOMIterables","COLLECTION_NAME","Collection","CollectionPrototype","hasStringTagBug","isIE11","Map","allKeys","toPath","optimizeCb","collection","accumulator","filter","list","contains","item","fromIndex","guard","toPrimitive","isSymbol","getBuiltIn","$Symbol","Deno","versions","v8","CORRECT_PROTOTYPE_GETTER","ObjectPrototype","getPrototypeOf","aPossiblePrototype","setPrototypeOf","setter","CORRECT_SETTER","__proto__","getMethod","ITERATOR","NATIVE_WEAK_MAP","WeakMap","enforce","TYPE","wmget","wmhas","wmset","metadata","facade","STATE","noop","empty","construct","constructorRegExp","INCORRECT_TO_STRING","isConstructorModern","isConstructorLegacy","called","string","point","matcher","attrs","partial","boundArgs","placeholder","bound","position","group","behavior","partition","propertyKey","METHOD_NAME","array","foo","Boolean","arraySpeciesCreate","createMethod","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","IS_FILTER_REJECT","NO_HOLES","$this","callbackfn","specificCreate","boundFunction","some","every","find","findIndex","filterReject","_typeof2","_filter","debugRequest","debugRequestError","requestsCount","time","onprogress","queryString","encodeURIComponent","qs","count","status","header","ok","enabled","g","eval","V","defineGlobalProperty","postfix","random","EXISTS","createElement","internalObjectKeys","getOwnPropertyNames","toIntegerOrInfinity","min","integer","trunc","number","functionToString","ie10IsDataView","getInt8","buffer","isDataView","isArguments","ie11fingerprint","methods","weakMapMethods","forEachName","commonInit","mapTail","mapMethods","setMethods","createAssigner","keysFunc","defaults","deepGet","identity","negate","pluck","_Symbol","_Symbol$iterator","$propertyIsEnumerable","NASHORN_BUG","1","replacement","feature","detection","normalize","POLYFILL","NATIVE","indexOf","names","toAbsoluteIndex","IS_INCLUDES","el","includes","objectKeys","defineProperties","props","ArrayPrototype","usingIterator","iteratorMethod","innerResult","innerError","$","FunctionName","createIteratorConstructor","setToStringTag","defineBuiltIn","IteratorsCore","PROPER_FUNCTION_NAME","PROPER","CONFIGURABLE_FUNCTION_NAME","CONFIGURABLE","IteratorPrototype","BUGGY_SAFARI_ITERATORS","returnThis","Iterable","IteratorConstructor","DEFAULT","IS_SET","CurrentIteratorPrototype","KEY","getIterationMethod","KIND","defaultIterator","IterablePrototype","INCORRECT_VALUES_NAME","nativeIterator","anyNativeIterator","entries","PrototypeOfArrayIteratorPrototype","arrayIterator","aConstructor","defaultConstructor","S","isConstructor","location","defer","channel","port","arraySlice","validateArgumentsLength","IS_IOS","IS_NODE","setImmediate","clear","clearImmediate","Dispatch","MessageChannel","counter","queue","run","runner","listener","event","post","postMessage","protocol","host","handler","nextTick","port2","port1","onmessage","addEventListener","importScripts","removeChild","setTimeout","checkCorrectnessOfIteration","all","SAFE_CLOSING","iteratorWithReturn","from","SKIP_CLOSING","ITERATION_SUPPORT","newPromiseCapability","promiseCapability","isBoolean","isTypedArray","typedArrayPattern","constant","createSizePropertyCheck","getSizeProperty","sizeProperty","shallowProperty","emulatedSet","hash","collectNonEnumProps","nonEnumIdx","prop","isMatch","invert","functions","sort","ctor","baseCreate","Ctor","defaultValue","baseIteratee","floor","createEscaper","escaper","testRegexp","replaceRegexp","templateSettings","evaluate","interpolate","escape","executeBound","sourceFunc","boundFunc","callingContext","callArgs","wait","before","times","memo","findKey","createPredicateIndexFinder","dir","sortedIndex","low","high","mid","createIndexFinder","predicateFind","keyFinder","createReduce","reducer","initial","computed","lastComputed","sample","last","rand","uniq","isSorted","unzip","chainResult","instance","_chain","chain","doesNotExceedSafeInteger","createProperty","arrayMethodHasSpeciesSupport","IS_CONCAT_SPREADABLE","IS_CONCAT_SPREADABLE_SUPPORT","SPECIES_SUPPORT","isConcatSpreadable","spreadable","arity","arg","E","A","arraySpeciesConstructor","originalArray","$stringify","charCodeAt","numberToString","tester","hi","WRONG_SYMBOLS_CONVERSION","ILL_FORMED_UNICODE","stringifyWithSymbolsFix","replacer","$replacer","fixIllFormed","offset","prev","space","v4","buf","rnds","rng","ii","bytesToUuid","Events","EE","once","_events","_eventsCount","prefix","eventNames","events","listeners","exists","evt","available","ee","a1","a2","a3","a4","a5","removeListener","removeAllListeners","off","addListener","setMaxListeners","prefixed","syncApiNames","async","apiName","removeAsync","removeItemAsync","getCacheData","cacheData","expiredAt","getAsync","cache","setAsync","ttl","SymbolPrototype","TO_PRIMITIVE","hint","keyFor","$Function","factories","argsLength","Prototype","partArgs","charenc","utf8","stringToBytes","str","bin","unescape","bytesToString","bytes","decodeURIComponent","fromCharCode","Cache","Conversation","copyConstructorProperties","clearErrorStack","installErrorCause","iterate","normalizeStringArgument","ERROR_STACK_INSTALLABLE","$Error","$AggregateError","errors","isInstance","AggregateErrorPrototype","stack","errorsArray","AggregateError","ordinaryToPrimitive","pref","exoticToPrim","val","ownKeys","getOwnPropertyDescriptorModule","exceptions","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","ceil","TEST","V8_OR_CHAKRA_STACK_ENTRY","IS_V8_OR_CHAKRA_STACK","dropEntries","prepareStackTrace","cause","$default","getDescriptor","ENUMERABLE_NEXT","Internal","OwnPromiseCapability","nativeThen","setSpecies","anInstance","speciesConstructor","task","microtask","hostReportErrors","perform","Queue","PromiseConstructorDetection","newPromiseCapabilityModule","NATIVE_PROMISE_SUBCLASSING","getInternalPromiseState","PromiseConstructor","PromisePrototype","newGenericPromiseCapability","DISPATCH_EVENT","createEvent","dispatchEvent","isThenable","callReaction","reaction","exited","fail","rejection","onHandleUnhandled","enter","exit","notify","isReject","notified","reactions","onUnhandled","reason","initEvent","IS_UNHANDLED","isUnhandled","unwrap","internalReject","internalResolve","wrapper","executor","onFulfilled","onRejected","add","PromiseWrapper","unsafe","CONSTRUCTOR_NAME","Constructor","passed","required","flush","head","toggle","node","macrotask","IS_IOS_PEBBLE","IS_WEBOS_WEBKIT","MutationObserver","WebKitMutationObserver","queueMicrotaskDescriptor","queueMicrotask","createTextNode","observe","characterData","Pebble","tail","entry","capability","$promiseResolve","remaining","alreadyCalled","race","promiseResolve","PromiseConstructorWrapper","CHECK_WRAPPER","allSettled","any","alreadyResolved","alreadyRejected","onFinally","CONVERT_TO_STRING","pos","first","second","size","codeAt","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","isElement","nodeType","parseFloat","isEmpty","eq","aStack","bStack","deepEq","tagDataView","areArrays","byteOffset","aCtor","bCtor","isEqual","toBufferView","bufferSource","Uint8Array","pairs","propertyOf","accum","escapeChar","escapes","template","settings","oldSettings","noMatch","escapeRegExp","bareIdentifier","render","fallback","uniqueId","idCounter","memoize","hasher","address","throttle","previous","later","leading","throttled","_now","clearTimeout","trailing","cancel","debounce","immediate","debounced","_args","compose","start","after","findWhere","contextPath","where","shuffle","sortBy","criteria","left","right","pass","toArray","reStrSymbol","keyInObj","compact","otherArrays","arrays","intersection","range","chunk","mixin","own","entryVirtual","$Array","$map","$IndexOf","arrayMethodIsStrict","un$IndexOf","NEGATIVE_ZERO","STRICT_METHOD","searchElement","getRandomValues","crypto","msCrypto","rnds8","bth","byteToHex","substr","setup","selectColor","createDebug","abs","_len","_key","curr","Number","ms","prevTime","coerce","unshift","format","formatter","destroy","init","instances","delimiter","skips","default","y","w","h","fmtShort","msAbs","round","fmtLong","plural","isPlural","long","nativeGetPrototypeOf","getDefaultServerURLs","appId","isCNApp","stats","engine","api","rtm","_slice","_defineProperty","AppRouter","fillServerURLs","_disableAppRouter","_initialized","appKey","serverURL","setProduction","disableAppRouter","_setServerURLs","server","RTMRouter","urls","setServerURL","setServerURLs","setRequestTimeout","initialize","un$Slice","HAS_SPECIES_SUPPORT","end","fin","desc","lockedUntil","disabled","lock","servers","push_server","stats_server","engine_server","api_server","$toString","nativeObjectCreate","getOwnPropertyNamesExternal","defineWellKnownSymbol","defineSymbolToPrimitive","$forEach","HIDDEN","QObject","nativeGetOwnPropertyDescriptor","nativeDefineProperty","nativeGetOwnPropertyNames","nativePropertyIsEnumerable","AllSymbols","ObjectPrototypeSymbols","USE_SETTER","findChild","setSymbolDescriptor","ObjectPrototypeDescriptor","$defineProperties","properties","$getOwnPropertySymbols","$create","$getOwnPropertyNames","IS_OBJECT_PROTOTYPE","useSetter","useSimple","windowNames","getWindowNames","NATIVE_SYMBOL_REGISTRY","StringToSymbolRegistry","SymbolToStringRegistry","sym","WrappedWellKnownSymbolModule","$filter","TimeoutError","timeoutMillis","eventSplitter","calls","_callbacks","shift","ctx","trigger","unbind","arg1","arg2","_validate","isNumber","__defineGetter__","__defineSetter__","_latitude","_longitude","geolocation","getCurrentPosition","coords","radiansTo","d2r","PI","lat1rad","long1rad","lat2rad","long2rad","deltaLat","deltaLong","sinDeltaLatDiv2","sin","sinDeltaLongDiv2","cos","asin","sqrt","kilometersTo","milesTo","permissionsById","setReadAccess","setWriteAccess","accessList","userId","allowed","permission","_setAccess","accessType","Role","getName","permissions","_getAccess","getReadAccess","getWriteAccess","setPublicReadAccess","getPublicReadAccess","setPublicWriteAccess","getPublicWriteAccess","getRoleReadAccess","role","getRoleWriteAccess","setRoleReadAccess","setRoleWriteAccess","_find","_initialize","_opDecoderMap","_registerDecoder","opName","decoder","json","op","ops","nextOp","_mergeWithPrevious","Set","_value","_estimate","oldValue","_UNSET","Unset","Increment","amount","_amount","BitAnd","BitOr","BitXor","Add","objects","_objects","AddUnique","newValue","matchingObj","anObj","Remove","union","difference","other","adds","removes","_targetClassName","pointerToId","relationsToAdd","relationsToRemove","added","removed","idToPointer","pointers","newAdd","newRemove","newRelation","$find","SKIPS_HOLES","reverseQuery","parentClass","relationKey","Query","equalTo","_ensureParentAndKey","change","remove","targetClass","_getSubclass","_defaultParams","redirectClassNameForKey","_addCondition","qiniu","s3","AVRequest","parseBase64","extname","b64Digit","encodeBase64","chunks","b1","b2","b3","has2","has3","mimeType","metaData","base64","_extName","_data","_uploadHeaders","blob","uri","Blob","owner","withURL","__source","createWithoutData","censor","res","censorResult","_operations","toFullJSON","holder","getACL","_acl","setACL","acl","attrName","setUploadHeader","attr","thumbnailURL","width","height","quality","scaleToFit","fmt","ownerId","_fileToken","extName","keep_file_name","keepFileName","mime_type","_previousSave","uploadInfo","_token","token","_options","direction","provider","_callback","success","fetch","bucket","saveOptions","upload_url","fileFormData","field","_bucket","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","Super","_getPrototypeOf2","NewTarget","_Reflect$construct","_possibleConstructorReturn2","Proxy","_createForOfIteratorHelper","allowArrayLike","_getIteratorMethod","_unsupportedIterableToArray","_e","normalCompletion","didErr","_e2","return","minLen","_context8","_arrayLikeToArray","_sliceInstanceProperty2","_Array$from","arr","arr2","upload","uptoken","urlSafeBase64","btoa","ch","isBlob","_inherits2","_classCallCheck2","_createClass2","CHUNK_SIZE","ShardUploader","uploadedChunks","uploadURL","baseURL","upToken","uploaded","onProgress","loaded","total","percent","Authorization","uploadId","partNumber","etag","parts","getUploadId","uploadPart","getChunk","part","stopUpload","fname","BlobUploader","_ShardUploader","_super","callWithSafeIterationClosing","arrayLike","IS_CONSTRUCTOR","argumentsLength","mapfn","mapping","ENTRIES","nativeConstruct","NEW_TARGET_BUG","ARGS_BUG","Target","newTarget","$args","_inherits","subClass","superClass","_Object$create","_Object$defineProperty","D","_context","_Object$setPrototypeOf","_bindInstanceProperty","_possibleConstructorReturn","assertThisInitialized","_assertThisInitialized","ReferenceError","_Object$getPrototypeOf","_classCallCheck","_defineProperties","_createClass","b64","crypt","isBuffer","encoding","bytesToWords","FF","_ff","GG","_gg","HH","_hh","II","_ii","aa","bb","cc","dd","endian","t","_blocksize","_digestsize","digestbytes","wordsToBytes","asBytes","asString","bytesToHex","base64map","rotl","rotr","randomBytes","words","hex","hexToBytes","bytesToBase64","triplet","base64ToBytes","imod4","isSlowBuffer","readFloatLE","_isBuffer","dataURItoBlob","dataURI","byteString","atob","ia","getValue","_slicedToArray2","_getOwnPropertyDescriptor","recursiveToPointer","RESERVED_KEYS","checkReservedKey","handleBatchResults","firstError","_mergeMagicFields","_serverData","_opSetQueue","_flags","_hashedJSON","_escapedAttributes","cid","changed","_silent","_pending","silent","_previousAttributes","saveAll","_deepSaveAsync","fetchAll","requests","dirty","fetchedAttrs","_cleanupUnsetKeys","fetchWhenSave","getObjectId","getCreatedAt","createdAt","getUpdatedAt","updatedAt","newSeenObjects","_refreshCache","_refreshingCache","_resetCacheForKey","currentChanges","dirtyKeys","escaped","model","specialFields","_startSave","_cancelSave","failedChanges","nextChanges","op1","op2","_saving","_finishSave","serverData","fetchedObjects","savedChanges","_applyOpSet","fetched","_rebuildAllEstimatedData","opSetQueue","hasData","opSet","actualTarget","actualKey","wasSet","_rebuildEstimatedDataForKey","firstKey","previousAttributes","unset","unused_value","dataToValidate","changes","isRealChange","increment","addUnique","bitAnd","bitOr","bitXor","keysToClear","revert","lastOp","_getSaveJSON","_canBeSerialized","_canBeSerializedAsValue","fetchedKeys","arg3","setOptions","unsavedChildren","unsavedFiles","_findUnsavedChildren","_allPreviousSaves","_failOnNotExist","failOnNotExist","queryParams","_getParams","makeRequest","_makeRequest","requestPromise","resp","serverAttrs","triggerDestroy","isNew","changing","_changing","deleteChanged","isValid","validate","disableBeforeHook","ignoreHook","disableAfterHook","hookName","__ignore_hooks","klass","_klass","destroyAll","objectsByClassNameAndFlags","groupBy","flags","body","ids","ObjectClass","_classMap","NewClassObject","OldClassObject","_className","arg0","newArguments","_LCClassName","register","children","files","canBeSerializedAsValue","batch","newRemaining","readyToStart","bathSavePromise","params","_slicedToArray","arrayWithHoles","iterableToArrayLimit","unsupportedIterableToArray","nonIterableRest","_arrayWithHoles","_Array$isArray","_iterableToArrayLimit","_i","_s","_arr","_n","_d","arrayLikeToArray","_sliceInstanceProperty","_nonIterableRest","FAILS_ON_PRIMITIVES","setName","getUsers","getRoles","newName","_defineProperty2","mergeUnionDataIntoAuthData","defaultUnionIdPlatform","authData","unionId","unionIdPlatform","asMainAccount","platform","unionid","main_account","_isCurrentUser","_cleanupAuthData","isCurrent","_synchronizeAllAuthData","_synchronizeAuthData","authType","_authProviders","getAuthType","restoreAuthentication","dissociateAuthData","_handleSaveResult","makeCurrent","password","_saveCurrentUser","_linkWith","authenticate","associateWithAuthData","associateWithAuthDataAndUnionId","unionOptions","associateWithMiniApp","authInfo","option","associateWithQQApp","preferUnionId","associateWithWeapp","linkWithWeapp","associateWithQQAppWithUnionId","mergeUnionId","associateWithWeappWithUnionId","_unlinkFrom","_isLinked","isAnonymous","logOut","_logOutWithAll","_logOutWith","deauthenticate","signUp","username","signUpOrlogInWithMobilePhone","mobilePhoneNumber","smsCode","loginWithAuthData","loginWithAuthDataAndUnionId","unionLoginOptions","loginWithWeapp","loginWithMiniApp","loginWithWeappWithUnionId","loginWithQQApp","loginWithQQAppWithUnionId","logIn","follow","userObjectId","unfollow","getFollowersAndFollowees","skip","limit","followers","followees","follower","followee","followerQuery","followeeQuery","updatePassword","oldPassword","newPassword","old_password","new_password","getUsername","getMobilePhoneNumber","setMobilePhoneNumber","phone","setUsername","setPassword","getEmail","setEmail","email","authenticated","isAuthenticated","_fetchUserBySessionToken","refreshSessionToken","_currentUser","_currentUserMatchesDisk","_CURRENT_USER_KEY","become","logInWithMobilePhoneSmsCode","mobilePhone","logInWithMobilePhone","loginWithEmail","_logInWith","signUpOrlogInWithAuthData","signUpOrlogInWithAuthDataAndUnionId","_genId","loginAnonymously","userObj","FriendShipQuery","_friendshipTag","requestPasswordReset","requestEmailVerify","requestMobilePhoneVerify","validateToken","validate_token","requestPasswordResetBySmsCode","requestChangePhoneNumber","changePhoneNumber","resetPasswordBySmsCode","verifyMobilePhone","requestLoginSmsCode","userData","_id","_registerAuthenticationProvider","requires","objectClass","_include","_select","_limit","_skip","or","queries","q","_orQuery","and","_andQuery","doCloudQuery","cql","pvalues","_newObject","_processResult","fromJSON","select","order","_includeACL","_order","queryJSON","_createRequest","_parseResponse","findAndCount","scan","orderedBy","batchSize","scan_key","cursor","remainResults","sizeEqualTo","notEqualTo","lessThan","greaterThan","lessThanOrEqualTo","greaterThanOrEqualTo","containedIn","notContainedIn","containsAll","doesNotExist","matches","regex","modifiers","ignoreCase","multiline","matchesQuery","doesNotMatchQuery","matchesKeyInQuery","queryKey","doesNotMatchKeyInQuery","$or","$and","_quote","startsWith","endsWith","ascending","addAscending","descending","addDescending","near","withinRadians","distance","withinMiles","withinKilometers","withinGeoBox","southwest","northeast","$box","finished","callbacksDone","subscribe","LiveQuery","requireRealtime","client","_client","_queryJSON","_onMessage","_dispatch","_onReconnect","queryId","query_id","updatedKeys","unsubscribe","deregister","userDefinedSubscriptionId","createLiveQueryClient","liveQueryClient","finally","pause","resume","Captcha","_authOptions","captchaToken","Cloud","_requestCaptcha","verify","verifyCaptcha","captcha","rpc","getServerDate","requestSmsCode","verifySmsCode","captcha_url","captcha_token","requestCaptcha","captcha_code","Installation","Push","send","push_time","expiration_time","expiration_interval","getUser","getUserPointer","currUser","Status","imageUrl","inboxType","image","_getDataJSON","sendStatusToFollowers","messageId","sendPrivateStatus","countUnreadStatuses","resetUnreadCount","statusQuery","InboxQuery","_objectClass","_sinceId","_maxId","_inboxType","_owner","sinceId","maxId","inboxQuery","SearchSortBuilder","_sortFields","_addField","missing","whereNear","geo","lat","lon","unit","build","SearchQuery","_sid","_hits","_queryString","_highlights","_sortBuilder","_clazz","sid","highlights","builder","hits","hasMore","_hitEnd","reset","_oldSid","appURL","clazz","Insight","startJob","jobConfig","sql","JobQuery","LCRequest","getUserWithSessionToken","getSessionTokenAsync","Friendship","friend","friendObj","friendship","acceptRequest","requestId","declineRequest","serializeMessage","getPayload","isSystem","isTransient","getCreator","getLastMessageAt","getMembers","addMember","member","getMutedMembers","fromClient","from_peer","conv_id","transient","toClients","to_peers","pushData","push_data","broadcast","validTill","ts","valid_till","Statistic","LeaderboardVersionChangeInterval","NEVER","DAY","WEEK","MONTH","LeaderboardOrder","ASCENDING","DESCENDING","LeaderboardUpdateStrategy","BETTER","LAST","SUM","parseStatisticData","statisticData","statisticName","statisticValue","Leaderboard","updateStrategy","versionChangeInterval","nextResetAt","createLeaderboard","getLeaderboard","getStatistics","statisticNames","statistics","updateStatistics","overwrite","deleteStatistics","_getResults","selectUserKeys","includeUserKeys","includeStatistics","includeUser","rankings","rankingData","rank","includedStatistics","getResults","getResultsAroundUser","_update","updateVersionChangeInterval","updateUpdateStrategy","getArchives","activatedAt","deactivatedAt"],"mappings":"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","file":"av-core-min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"AV\"] = factory();\n\telse\n\t\troot[\"AV\"] = factory();\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 236);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap f5e1032ccd19ab85d8cf","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"AV\"] = factory();\n\telse\n\t\troot[\"AV\"] = factory();\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 236);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar global = __webpack_require__(9);\nvar apply = __webpack_require__(62);\nvar uncurryThis = __webpack_require__(6);\nvar isCallable = __webpack_require__(7);\nvar getOwnPropertyDescriptor = __webpack_require__(64).f;\nvar isForced = __webpack_require__(142);\nvar path = __webpack_require__(13);\nvar bind = __webpack_require__(50);\nvar createNonEnumerableProperty = __webpack_require__(36);\nvar hasOwn = __webpack_require__(14);\n\nvar wrapConstructor = function (NativeConstructor) {\n var Wrapper = function (a, b, c) {\n if (this instanceof Wrapper) {\n switch (arguments.length) {\n case 0: return new NativeConstructor();\n case 1: return new NativeConstructor(a);\n case 2: return new NativeConstructor(a, b);\n } return new NativeConstructor(a, b, c);\n } return apply(NativeConstructor, this, arguments);\n };\n Wrapper.prototype = NativeConstructor.prototype;\n return Wrapper;\n};\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.dontCallGetSet - prevent calling a getter on target\n options.name - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var PROTO = options.proto;\n\n var nativeSource = GLOBAL ? global : STATIC ? global[TARGET] : (global[TARGET] || {}).prototype;\n\n var target = GLOBAL ? path : path[TARGET] || createNonEnumerableProperty(path, TARGET, {})[TARGET];\n var targetPrototype = target.prototype;\n\n var FORCED, USE_NATIVE, VIRTUAL_PROTOTYPE;\n var key, sourceProperty, targetProperty, nativeProperty, resultProperty, descriptor;\n\n for (key in source) {\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contains in native\n USE_NATIVE = !FORCED && nativeSource && hasOwn(nativeSource, key);\n\n targetProperty = target[key];\n\n if (USE_NATIVE) if (options.dontCallGetSet) {\n descriptor = getOwnPropertyDescriptor(nativeSource, key);\n nativeProperty = descriptor && descriptor.value;\n } else nativeProperty = nativeSource[key];\n\n // export native or implementation\n sourceProperty = (USE_NATIVE && nativeProperty) ? nativeProperty : source[key];\n\n if (USE_NATIVE && typeof targetProperty == typeof sourceProperty) continue;\n\n // bind timers to global for call from export context\n if (options.bind && USE_NATIVE) resultProperty = bind(sourceProperty, global);\n // wrap global constructors for prevent changs in this version\n else if (options.wrap && USE_NATIVE) resultProperty = wrapConstructor(sourceProperty);\n // make static versions for prototype methods\n else if (PROTO && isCallable(sourceProperty)) resultProperty = uncurryThis(sourceProperty);\n // default case\n else resultProperty = sourceProperty;\n\n // add a flag to not completely full polyfills\n if (options.sham || (sourceProperty && sourceProperty.sham) || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(resultProperty, 'sham', true);\n }\n\n createNonEnumerableProperty(target, key, resultProperty);\n\n if (PROTO) {\n VIRTUAL_PROTOTYPE = TARGET + 'Prototype';\n if (!hasOwn(path, VIRTUAL_PROTOTYPE)) {\n createNonEnumerableProperty(path, VIRTUAL_PROTOTYPE, {});\n }\n // export virtual prototype methods\n createNonEnumerableProperty(path[VIRTUAL_PROTOTYPE], key, sourceProperty);\n // export real prototype methods\n if (options.real && targetPrototype && !targetPrototype[key]) {\n createNonEnumerableProperty(targetPrototype, key, sourceProperty);\n }\n }\n }\n};\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__index_default_js__ = __webpack_require__(279);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return __WEBPACK_IMPORTED_MODULE_0__index_default_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__index_js__ = __webpack_require__(120);\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"VERSION\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"VERSION\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"restArguments\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"restArguments\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"isObject\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"isObject\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"isNull\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"isNull\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"isUndefined\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"isUndefined\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"isBoolean\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"isBoolean\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"isElement\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"isElement\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"isString\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"isString\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"isNumber\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"isNumber\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"isDate\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"isDate\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"isRegExp\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"isRegExp\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"isError\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"isError\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"isSymbol\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"isSymbol\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"isArrayBuffer\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"isArrayBuffer\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"isDataView\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"isDataView\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"isArray\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"isArray\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"isFunction\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"isFunction\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"isArguments\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"isArguments\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"isFinite\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"isFinite\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"isNaN\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"isNaN\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"isTypedArray\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"isTypedArray\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"isEmpty\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"isEmpty\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"isMatch\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"isMatch\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"isEqual\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"isEqual\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"isMap\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"isMap\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"isWeakMap\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"isWeakMap\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"isSet\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"isSet\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"isWeakSet\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"isWeakSet\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"keys\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"keys\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"allKeys\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"allKeys\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"values\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"values\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"pairs\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"pairs\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"invert\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"invert\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"functions\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"functions\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"methods\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"methods\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"extend\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"extend\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"extendOwn\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"extendOwn\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"assign\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"assign\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"defaults\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"defaults\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"create\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"create\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"clone\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"clone\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"tap\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"tap\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"get\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"get\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"has\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"has\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"mapObject\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"mapObject\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"identity\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"identity\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"constant\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"constant\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"noop\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"noop\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"toPath\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"toPath\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"property\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"property\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"propertyOf\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"propertyOf\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"matcher\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"matcher\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"matches\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"matches\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"times\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"times\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"random\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"random\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"now\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"now\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"escape\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"escape\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"unescape\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"unescape\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"templateSettings\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"templateSettings\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"template\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"template\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"result\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"result\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"uniqueId\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"uniqueId\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"chain\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"chain\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"iteratee\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"iteratee\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"partial\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"partial\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"bind\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"bind\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"bindAll\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"bindAll\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"memoize\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"memoize\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"delay\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"delay\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"defer\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"defer\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"throttle\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"throttle\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"debounce\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"debounce\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"wrap\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"wrap\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"negate\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"negate\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"compose\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"compose\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"after\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"after\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"before\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"before\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"once\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"once\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"findKey\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"findKey\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"findIndex\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"findIndex\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"findLastIndex\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"findLastIndex\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"sortedIndex\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"sortedIndex\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"indexOf\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"indexOf\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"lastIndexOf\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"lastIndexOf\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"find\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"find\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"detect\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"detect\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"findWhere\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"findWhere\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"each\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"each\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"forEach\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"forEach\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"map\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"map\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"collect\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"collect\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"reduce\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"reduce\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"foldl\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"foldl\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"inject\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"inject\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"reduceRight\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"reduceRight\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"foldr\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"foldr\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"filter\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"filter\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"select\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"select\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"reject\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"reject\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"every\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"every\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"all\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"all\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"some\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"some\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"any\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"any\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"contains\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"contains\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"includes\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"includes\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"include\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"include\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"invoke\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"invoke\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"pluck\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"pluck\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"where\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"where\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"max\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"max\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"min\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"min\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"shuffle\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"shuffle\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"sample\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"sample\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"sortBy\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"sortBy\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"groupBy\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"groupBy\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"indexBy\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"indexBy\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"countBy\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"countBy\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"partition\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"partition\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"toArray\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"toArray\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"size\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"size\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"pick\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"pick\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"omit\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"omit\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"first\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"first\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"head\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"head\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"take\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"take\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"initial\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"initial\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"last\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"last\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"rest\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"rest\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"tail\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"tail\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"drop\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"drop\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"compact\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"compact\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"flatten\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"flatten\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"without\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"without\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"uniq\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"uniq\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"unique\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"unique\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"union\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"union\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"intersection\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"intersection\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"difference\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"difference\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"unzip\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"unzip\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"transpose\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"transpose\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"zip\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"zip\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"object\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"object\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"range\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"range\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"chunk\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"chunk\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"mixin\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"mixin\"]; });\n// ESM Exports\n// ===========\n// This module is the package entry point for ES module users. In other words,\n// it is the module they are interfacing with when they import from the whole\n// package instead of from a submodule, like this:\n//\n// ```js\n// import { map } from 'underscore';\n// ```\n//\n// The difference with `./index-default`, which is the package entry point for\n// CommonJS, AMD and UMD users, is purely technical. In ES modules, named and\n// default exports are considered to be siblings, so when you have a default\n// export, its properties are not automatically available as named exports. For\n// this reason, we re-export the named exports in addition to providing the same\n// default export as in `./index-default`.\n\n\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports) {\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n/***/ }),\n/* 3 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(global) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"e\", function() { return VERSION; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"p\", function() { return root; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return ArrayProto; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return ObjProto; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"d\", function() { return SymbolProto; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"o\", function() { return push; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"q\", function() { return slice; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"t\", function() { return toString; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"i\", function() { return hasOwnProperty; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"r\", function() { return supportsArrayBuffer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"s\", function() { return supportsDataView; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"k\", function() { return nativeIsArray; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"m\", function() { return nativeKeys; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"j\", function() { return nativeCreate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"l\", function() { return nativeIsView; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"g\", function() { return _isNaN; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"f\", function() { return _isFinite; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"h\", function() { return hasEnumBug; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"n\", function() { return nonEnumerableProps; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return MAX_ARRAY_INDEX; });\n// Current version.\nvar VERSION = '1.12.1';\n\n// Establish the root object, `window` (`self`) in the browser, `global`\n// on the server, or `this` in some virtual machines. We use `self`\n// instead of `window` for `WebWorker` support.\nvar root = typeof self == 'object' && self.self === self && self ||\n typeof global == 'object' && global.global === global && global ||\n Function('return this')() ||\n {};\n\n// Save bytes in the minified (but not gzipped) version:\nvar ArrayProto = Array.prototype, ObjProto = Object.prototype;\nvar SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null;\n\n// Create quick reference variables for speed access to core prototypes.\nvar push = ArrayProto.push,\n slice = ArrayProto.slice,\n toString = ObjProto.toString,\n hasOwnProperty = ObjProto.hasOwnProperty;\n\n// Modern feature detection.\nvar supportsArrayBuffer = typeof ArrayBuffer !== 'undefined',\n supportsDataView = typeof DataView !== 'undefined';\n\n// All **ECMAScript 5+** native function implementations that we hope to use\n// are declared here.\nvar nativeIsArray = Array.isArray,\n nativeKeys = Object.keys,\n nativeCreate = Object.create,\n nativeIsView = supportsArrayBuffer && ArrayBuffer.isView;\n\n// Create references to these builtin functions because we override them.\nvar _isNaN = isNaN,\n _isFinite = isFinite;\n\n// Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed.\nvar hasEnumBug = !{toString: null}.propertyIsEnumerable('toString');\nvar nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString',\n 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString'];\n\n// The largest integer that can be represented exactly.\nvar MAX_ARRAY_INDEX = Math.pow(2, 53) - 1;\n\n/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(105)))\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports) {\n\nmodule.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar path = __webpack_require__(13);\nvar hasOwn = __webpack_require__(14);\nvar wrappedWellKnownSymbolModule = __webpack_require__(136);\nvar defineProperty = __webpack_require__(32).f;\n\nmodule.exports = function (NAME) {\n var Symbol = path.Symbol || (path.Symbol = {});\n if (!hasOwn(Symbol, NAME)) defineProperty(Symbol, NAME, {\n value: wrappedWellKnownSymbolModule.f(NAME)\n });\n};\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar NATIVE_BIND = __webpack_require__(63);\n\nvar FunctionPrototype = Function.prototype;\nvar bind = FunctionPrototype.bind;\nvar call = FunctionPrototype.call;\nvar uncurryThis = NATIVE_BIND && bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? function (fn) {\n return fn && uncurryThis(fn);\n} : function (fn) {\n return fn && function () {\n return call.apply(fn, arguments);\n };\n};\n\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports) {\n\n// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\nmodule.exports = function (argument) {\n return typeof argument == 'function';\n};\n\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(9);\nvar shared = __webpack_require__(67);\nvar hasOwn = __webpack_require__(14);\nvar uid = __webpack_require__(109);\nvar NATIVE_SYMBOL = __webpack_require__(49);\nvar USE_SYMBOL_AS_UID = __webpack_require__(140);\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar symbolFor = Symbol && Symbol['for'];\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!hasOwn(WellKnownSymbolsStore, name) || !(NATIVE_SYMBOL || typeof WellKnownSymbolsStore[name] == 'string')) {\n var description = 'Symbol.' + name;\n if (NATIVE_SYMBOL && hasOwn(Symbol, name)) {\n WellKnownSymbolsStore[name] = Symbol[name];\n } else if (USE_SYMBOL_AS_UID && symbolFor) {\n WellKnownSymbolsStore[name] = symbolFor(description);\n } else {\n WellKnownSymbolsStore[name] = createWellKnownSymbol(description);\n }\n } return WellKnownSymbolsStore[name];\n};\n\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global) {var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es-x/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(105)))\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(238);\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar NATIVE_BIND = __webpack_require__(63);\n\nvar call = Function.prototype.call;\n\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n return call.apply(call, arguments);\n};\n\n\n/***/ }),\n/* 12 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = keys;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__isObject_js__ = __webpack_require__(45);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__setup_js__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__has_js__ = __webpack_require__(37);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__collectNonEnumProps_js__ = __webpack_require__(172);\n\n\n\n\n\n// Retrieve the names of an object's own properties.\n// Delegates to **ECMAScript 5**'s native `Object.keys`.\nfunction keys(obj) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_0__isObject_js__[\"a\" /* default */])(obj)) return [];\n if (__WEBPACK_IMPORTED_MODULE_1__setup_js__[\"m\" /* nativeKeys */]) return Object(__WEBPACK_IMPORTED_MODULE_1__setup_js__[\"m\" /* nativeKeys */])(obj);\n var keys = [];\n for (var key in obj) if (Object(__WEBPACK_IMPORTED_MODULE_2__has_js__[\"a\" /* default */])(obj, key)) keys.push(key);\n // Ahem, IE < 9.\n if (__WEBPACK_IMPORTED_MODULE_1__setup_js__[\"h\" /* hasEnumBug */]) Object(__WEBPACK_IMPORTED_MODULE_3__collectNonEnumProps_js__[\"a\" /* default */])(obj, keys);\n return keys;\n}\n\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports) {\n\nmodule.exports = {};\n\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar uncurryThis = __webpack_require__(6);\nvar toObject = __webpack_require__(35);\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\n// eslint-disable-next-line es-x/no-object-hasown -- safe\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty(toObject(it), key);\n};\n\n\n/***/ }),\n/* 15 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = tagTester;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__setup_js__ = __webpack_require__(3);\n\n\n// Internal function for creating a `toString`-based type tester.\nfunction tagTester(name) {\n var tag = '[object ' + name + ']';\n return function(obj) {\n return __WEBPACK_IMPORTED_MODULE_0__setup_js__[\"t\" /* toString */].call(obj) === tag;\n };\n}\n\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar path = __webpack_require__(13);\nvar global = __webpack_require__(9);\nvar isCallable = __webpack_require__(7);\n\nvar aFunction = function (variable) {\n return isCallable(variable) ? variable : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])\n : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];\n};\n\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isCallable = __webpack_require__(7);\n\nmodule.exports = function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it);\n};\n\n\n/***/ }),\n/* 18 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = cb;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__underscore_js__ = __webpack_require__(23);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__baseIteratee_js__ = __webpack_require__(182);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__iteratee_js__ = __webpack_require__(183);\n\n\n\n\n// The function we call internally to generate a callback. It invokes\n// `_.iteratee` if overridden, otherwise `baseIteratee`.\nfunction cb(value, context, argCount) {\n if (__WEBPACK_IMPORTED_MODULE_0__underscore_js__[\"a\" /* default */].iteratee !== __WEBPACK_IMPORTED_MODULE_2__iteratee_js__[\"a\" /* default */]) return __WEBPACK_IMPORTED_MODULE_0__underscore_js__[\"a\" /* default */].iteratee(value, context);\n return Object(__WEBPACK_IMPORTED_MODULE_1__baseIteratee_js__[\"a\" /* default */])(value, context, argCount);\n}\n\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar fails = __webpack_require__(4);\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es-x/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar uncurryThis = __webpack_require__(6);\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(17);\n\nvar $String = String;\nvar $TypeError = TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n if (isObject(argument)) return argument;\n throw $TypeError($String(argument) + ' is not an object');\n};\n\n\n/***/ }),\n/* 22 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = restArguments;\n// Some functions take a variable number of arguments, or a few expected\n// arguments at the beginning and then a variable number of values to operate\n// on. This helper accumulates all remaining arguments past the function’s\n// argument length (or an explicit `startIndex`), into an array that becomes\n// the last argument. Similar to ES6’s \"rest parameter\".\nfunction restArguments(func, startIndex) {\n startIndex = startIndex == null ? func.length - 1 : +startIndex;\n return function() {\n var length = Math.max(arguments.length - startIndex, 0),\n rest = Array(length),\n index = 0;\n for (; index < length; index++) {\n rest[index] = arguments[index + startIndex];\n }\n switch (startIndex) {\n case 0: return func.call(this, rest);\n case 1: return func.call(this, arguments[0], rest);\n case 2: return func.call(this, arguments[0], arguments[1], rest);\n }\n var args = Array(startIndex + 1);\n for (index = 0; index < startIndex; index++) {\n args[index] = arguments[index];\n }\n args[startIndex] = rest;\n return func.apply(this, args);\n };\n}\n\n\n/***/ }),\n/* 23 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = _;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__setup_js__ = __webpack_require__(3);\n\n\n// If Underscore is called as a function, it returns a wrapped object that can\n// be used OO-style. This wrapper holds altered versions of all functions added\n// through `_.mixin`. Wrapped objects may be chained.\nfunction _(obj) {\n if (obj instanceof _) return obj;\n if (!(this instanceof _)) return new _(obj);\n this._wrapped = obj;\n}\n\n_.VERSION = __WEBPACK_IMPORTED_MODULE_0__setup_js__[\"e\" /* VERSION */];\n\n// Extracts the result from a wrapped and chained object.\n_.prototype.value = function() {\n return this._wrapped;\n};\n\n// Provide unwrapping proxies for some methods used in engine operations\n// such as arithmetic and JSON stringification.\n_.prototype.valueOf = _.prototype.toJSON = _.prototype.value;\n\n_.prototype.toString = function() {\n return String(this._wrapped);\n};\n\n\n/***/ }),\n/* 24 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__createSizePropertyCheck_js__ = __webpack_require__(170);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__getLength_js__ = __webpack_require__(27);\n\n\n\n// Internal helper for collection methods to determine whether a collection\n// should be iterated as an array or as an object.\n// Related: https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength\n// Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__createSizePropertyCheck_js__[\"a\" /* default */])(__WEBPACK_IMPORTED_MODULE_1__getLength_js__[\"a\" /* default */]));\n\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(2);\n\nvar _concat = _interopRequireDefault(__webpack_require__(29));\n\nvar _promise = _interopRequireDefault(__webpack_require__(10));\n\nvar _ = __webpack_require__(1);\n\nvar md5 = __webpack_require__(496);\n\nvar _require = __webpack_require__(1),\n extend = _require.extend;\n\nvar AV = __webpack_require__(59);\n\nvar AVError = __webpack_require__(40);\n\nvar _require2 = __webpack_require__(28),\n getSessionToken = _require2.getSessionToken;\n\nvar ajax = __webpack_require__(103); // 计算 X-LC-Sign 的签名方法\n\n\nvar sign = function sign(key, isMasterKey) {\n var _context2;\n\n var now = new Date().getTime();\n var signature = md5(now + key);\n\n if (isMasterKey) {\n var _context;\n\n return (0, _concat.default)(_context = \"\".concat(signature, \",\")).call(_context, now, \",master\");\n }\n\n return (0, _concat.default)(_context2 = \"\".concat(signature, \",\")).call(_context2, now);\n};\n\nvar setAppKey = function setAppKey(headers, signKey) {\n if (signKey) {\n headers['X-LC-Sign'] = sign(AV.applicationKey);\n } else {\n headers['X-LC-Key'] = AV.applicationKey;\n }\n};\n\nvar setHeaders = function setHeaders() {\n var authOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var signKey = arguments.length > 1 ? arguments[1] : undefined;\n var headers = {\n 'X-LC-Id': AV.applicationId,\n 'Content-Type': 'application/json;charset=UTF-8'\n };\n var useMasterKey = false;\n\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\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'] = \"\".concat(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\n if (AV.hookKey) {\n headers['X-LC-Hook-Key'] = AV.hookKey;\n }\n\n if (AV._config.production !== null) {\n headers['X-LC-Prod'] = String(AV._config.production);\n }\n\n headers[undefined === 'NODE_JS' ? 'User-Agent' : 'X-LC-UA'] = AV._sharedConfig.userAgent;\n return _promise.default.resolve().then(function () {\n // Pass the session token\n var sessionToken = getSessionToken(authOptions);\n\n if (sessionToken) {\n headers['X-LC-Session'] = sessionToken;\n } else if (!AV._config.disableCurrentUser) {\n return AV.User.currentAsync().then(function (currentUser) {\n if (currentUser && currentUser._sessionToken) {\n headers['X-LC-Session'] = currentUser._sessionToken;\n }\n\n return headers;\n });\n }\n\n return headers;\n });\n};\n\nvar createApiUrl = function createApiUrl(_ref) {\n var _ref$service = _ref.service,\n service = _ref$service === void 0 ? 'api' : _ref$service,\n _ref$version = _ref.version,\n version = _ref$version === void 0 ? '1.1' : _ref$version,\n path = _ref.path;\n var apiURL = AV._config.serverURLs[service];\n if (!apiURL) throw new Error(\"undefined server URL for \".concat(service));\n\n if (apiURL.charAt(apiURL.length - 1) !== '/') {\n apiURL += '/';\n }\n\n apiURL += version;\n\n if (path) {\n apiURL += path;\n }\n\n return apiURL;\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 */\n\n\nvar request = function request(_ref2) {\n var service = _ref2.service,\n version = _ref2.version,\n method = _ref2.method,\n path = _ref2.path,\n query = _ref2.query,\n data = _ref2.data,\n authOptions = _ref2.authOptions,\n _ref2$signKey = _ref2.signKey,\n signKey = _ref2$signKey === void 0 ? true : _ref2$signKey;\n\n if (!(AV.applicationId && (AV.applicationKey || AV.masterKey))) {\n throw new Error('Not initialized');\n }\n\n if (AV._appRouter) {\n AV._appRouter.refresh();\n }\n\n var timeout = AV._config.requestTimeout;\n var url = createApiUrl({\n service: service,\n path: path,\n version: version\n });\n return setHeaders(authOptions, signKey).then(function (headers) {\n return ajax({\n method: method,\n url: url,\n query: query,\n data: data,\n headers: headers,\n timeout: timeout\n }).catch(function (error) {\n var errorJSON = {\n code: error.code || -1,\n error: error.message || error.responseText\n };\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) {// If we fail to parse the error text, that's okay.\n }\n }\n\n errorJSON.rawMessage = errorJSON.rawMessage || errorJSON.error;\n\n if (!AV._sharedConfig.keepErrorRawMessage) {\n var _context3, _context4;\n\n errorJSON.error += (0, _concat.default)(_context3 = (0, _concat.default)(_context4 = \" [\".concat(error.statusCode || 'N/A', \" \")).call(_context4, method, \" \")).call(_context3, url, \"]\");\n } // Transform the error into an instance of AVError by trying to parse\n // the error string as JSON.\n\n\n var err = new AVError(errorJSON.code, errorJSON.error);\n delete errorJSON.error;\n throw _.extend(err, errorJSON);\n });\n });\n}; // lagecy request\n\n\nvar _request = function _request(route, className, objectId, method, data, authOptions, query) {\n var path = '';\n if (route) path += \"/\".concat(route);\n if (className) path += \"/\".concat(className);\n if (objectId) path += \"/\".concat(objectId); // for migeration\n\n if (data && data._fetchWhenSave) throw new Error('_fetchWhenSave should be in the query');\n if (data && data._where) throw new Error('_where should be in the query');\n\n if (method && method.toLowerCase() === 'get') {\n query = extend({}, query, data);\n data = null;\n }\n\n return request({\n method: method,\n path: path,\n query: query,\n data: data,\n authOptions: authOptions\n });\n};\n\nAV.request = request;\nmodule.exports = {\n _request: _request,\n request: request\n};\n\n/***/ }),\n/* 26 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__tagTester_js__ = __webpack_require__(15);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__setup_js__ = __webpack_require__(3);\n\n\n\nvar isFunction = Object(__WEBPACK_IMPORTED_MODULE_0__tagTester_js__[\"a\" /* default */])('Function');\n\n// Optimize `isFunction` if appropriate. Work around some `typeof` bugs in old\n// v8, IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236).\nvar nodelist = __WEBPACK_IMPORTED_MODULE_1__setup_js__[\"p\" /* root */].document && __WEBPACK_IMPORTED_MODULE_1__setup_js__[\"p\" /* root */].document.childNodes;\nif (typeof /./ != 'function' && typeof Int8Array != 'object' && typeof nodelist != 'function') {\n isFunction = function(obj) {\n return typeof obj == 'function' || false;\n };\n}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (isFunction);\n\n\n/***/ }),\n/* 27 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__shallowProperty_js__ = __webpack_require__(171);\n\n\n// Internal helper to obtain the `length` property of an object.\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__shallowProperty_js__[\"a\" /* default */])('length'));\n\n\n/***/ }),\n/* 28 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(2);\n\nvar _keys = _interopRequireDefault(__webpack_require__(48));\n\nvar _getPrototypeOf = _interopRequireDefault(__webpack_require__(215));\n\nvar _promise = _interopRequireDefault(__webpack_require__(10));\n\nvar _ = __webpack_require__(1); // Helper function to check null or undefined.\n\n\nvar isNullOrUndefined = function isNullOrUndefined(x) {\n return _.isNull(x) || _.isUndefined(x);\n};\n\nvar ensureArray = function ensureArray(target) {\n if (_.isArray(target)) {\n return target;\n }\n\n if (target === undefined || target === null) {\n return [];\n }\n\n return [target];\n};\n\nvar transformFetchOptions = function transformFetchOptions() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n keys = (0, _keys.default)(_ref),\n include = _ref.include,\n includeACL = _ref.includeACL;\n\n var fetchOptions = {};\n\n if (keys) {\n fetchOptions.keys = ensureArray(keys).join(',');\n }\n\n if (include) {\n fetchOptions.include = ensureArray(include).join(',');\n }\n\n if (includeACL) {\n fetchOptions.returnACL = includeACL;\n }\n\n return fetchOptions;\n};\n\nvar getSessionToken = function getSessionToken(authOptions) {\n if (authOptions.sessionToken) {\n return authOptions.sessionToken;\n }\n\n if (authOptions.user && typeof authOptions.user.getSessionToken === 'function') {\n return authOptions.user.getSessionToken();\n }\n};\n\nvar tap = function tap(interceptor) {\n return function (value) {\n return interceptor(value), value;\n };\n}; // Shared empty constructor function to aid in prototype-chain creation.\n\n\nvar EmptyConstructor = function EmptyConstructor() {}; // 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.\n\n\nvar inherits = function inherits(parent, protoProps, staticProps) {\n var child; // 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\n if (protoProps && protoProps.hasOwnProperty('constructor')) {\n child = protoProps.constructor;\n } else {\n /** @ignore */\n child = function child() {\n parent.apply(this, arguments);\n };\n } // Inherit class (static) properties from parent.\n\n\n _.extend(child, parent); // Set the prototype chain to inherit from `parent`, without calling\n // `parent`'s constructor function.\n\n\n EmptyConstructor.prototype = parent.prototype;\n child.prototype = new EmptyConstructor(); // Add prototype properties (instance properties) to the subclass,\n // if supplied.\n\n if (protoProps) {\n _.extend(child.prototype, protoProps);\n } // Add static properties to the constructor function, if supplied.\n\n\n if (staticProps) {\n _.extend(child, staticProps);\n } // Correctly set child's `prototype.constructor`.\n\n\n child.prototype.constructor = child; // Set a convenience property in case the parent's prototype is\n // needed later.\n\n child.__super__ = parent.prototype;\n return child;\n}; // Suppress the date string format warning in Weixin DevTools\n// Link: https://developers.weixin.qq.com/community/minihome/doc/00080c6f244718053550067736b401\n\n\nvar parseDate = typeof wx === 'undefined' ? function (iso8601) {\n return new Date(iso8601);\n} : function (iso8601) {\n return new Date(Date.parse(iso8601));\n};\n\nvar setValue = function setValue(target, key, value) {\n // '.' is not allowed in Class keys, escaping is not in concern now.\n var segs = key.split('.');\n var lastSeg = segs.pop();\n var currentTarget = target;\n segs.forEach(function (seg) {\n if (currentTarget[seg] === undefined) currentTarget[seg] = {};\n currentTarget = currentTarget[seg];\n });\n currentTarget[lastSeg] = value;\n return target;\n};\n\nvar findValue = function findValue(target, key) {\n var segs = key.split('.');\n var firstSeg = segs[0];\n var lastSeg = segs.pop();\n var currentTarget = target;\n\n for (var i = 0; i < segs.length; i++) {\n currentTarget = currentTarget[segs[i]];\n\n if (currentTarget === undefined) {\n return [undefined, undefined, lastSeg];\n }\n }\n\n var value = currentTarget[lastSeg];\n return [value, currentTarget, lastSeg, firstSeg];\n};\n\nvar isPlainObject = function isPlainObject(obj) {\n return _.isObject(obj) && (0, _getPrototypeOf.default)(obj) === Object.prototype;\n};\n\nvar continueWhile = function continueWhile(predicate, asyncFunction) {\n if (predicate()) {\n return asyncFunction().then(function () {\n return continueWhile(predicate, asyncFunction);\n });\n }\n\n return _promise.default.resolve();\n};\n\nmodule.exports = {\n isNullOrUndefined: isNullOrUndefined,\n ensureArray: ensureArray,\n transformFetchOptions: transformFetchOptions,\n getSessionToken: getSessionToken,\n tap: tap,\n inherits: inherits,\n parseDate: parseDate,\n setValue: setValue,\n findValue: findValue,\n isPlainObject: isPlainObject,\n continueWhile: continueWhile\n};\n\n/***/ }),\n/* 29 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(351);\n\n/***/ }),\n/* 30 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isCallable = __webpack_require__(7);\nvar tryToString = __webpack_require__(66);\n\nvar $TypeError = TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n if (isCallable(argument)) return argument;\n throw $TypeError(tryToString(argument) + ' is not a function');\n};\n\n\n/***/ }),\n/* 31 */\n/***/ (function(module, exports) {\n\nmodule.exports = true;\n\n\n/***/ }),\n/* 32 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(19);\nvar IE8_DOM_DEFINE = __webpack_require__(141);\nvar V8_PROTOTYPE_DEFINE_BUG = __webpack_require__(143);\nvar anObject = __webpack_require__(21);\nvar toPropertyKey = __webpack_require__(82);\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es-x/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n var current = $getOwnPropertyDescriptor(O, P);\n if (current && current[WRITABLE]) {\n O[P] = Attributes.value;\n Attributes = {\n configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n writable: false\n };\n }\n } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* 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/* 33 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = __webpack_require__(139);\nvar requireObjectCoercible = __webpack_require__(106);\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n\n\n/***/ }),\n/* 34 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(363);\n\n/***/ }),\n/* 35 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar requireObjectCoercible = __webpack_require__(106);\n\nvar $Object = Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return $Object(requireObjectCoercible(argument));\n};\n\n\n/***/ }),\n/* 36 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(19);\nvar definePropertyModule = __webpack_require__(32);\nvar createPropertyDescriptor = __webpack_require__(41);\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n\n\n/***/ }),\n/* 37 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = has;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__setup_js__ = __webpack_require__(3);\n\n\n// Internal function to check whether `key` is an own property name of `obj`.\nfunction has(obj, key) {\n return obj != null && __WEBPACK_IMPORTED_MODULE_0__setup_js__[\"i\" /* hasOwnProperty */].call(obj, key);\n}\n\n\n/***/ }),\n/* 38 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar path = __webpack_require__(13);\n\nmodule.exports = function (CONSTRUCTOR) {\n return path[CONSTRUCTOR + 'Prototype'];\n};\n\n\n/***/ }),\n/* 39 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(356);\n\n/***/ }),\n/* 40 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(2);\n\nvar _setPrototypeOf = _interopRequireDefault(__webpack_require__(379));\n\nvar _getPrototypeOf = _interopRequireDefault(__webpack_require__(215));\n\nvar _ = __webpack_require__(1);\n/**\n * @class AV.Error\n */\n\n\nfunction AVError(code, message) {\n if (this instanceof AVError ? this.constructor : void 0) {\n var error = new Error(message);\n (0, _setPrototypeOf.default)(error, (0, _getPrototypeOf.default)(this));\n error.code = code;\n return error;\n }\n\n return new AVError(code, message);\n}\n\nAVError.prototype = Object.create(Error.prototype, {\n constructor: {\n value: Error,\n enumerable: false,\n writable: true,\n configurable: true\n }\n});\n(0, _setPrototypeOf.default)(AVError, Error);\n\n_.extend(AVError,\n/** @lends AV.Error */\n{\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.\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 * @constant\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 /**\n * Error code indicating a real error code is unavailable because\n * we had to use an XDomainRequest object to allow CORS requests in\n * Internet Explorer, which strips the body from HTTP responses that have\n * a non-2XX status code.\n * @constant\n */\n X_DOMAIN_REQUEST: 602\n});\n\nmodule.exports = AVError;\n\n/***/ }),\n/* 41 */\n/***/ (function(module, exports) {\n\nmodule.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n\n\n/***/ }),\n/* 42 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toLength = __webpack_require__(249);\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n return toLength(obj.length);\n};\n\n\n/***/ }),\n/* 43 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar createNonEnumerableProperty = __webpack_require__(36);\n\nmodule.exports = function (target, key, value, options) {\n if (options && options.enumerable) target[key] = value;\n else createNonEnumerableProperty(target, key, value);\n return target;\n};\n\n\n/***/ }),\n/* 44 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar aCallable = __webpack_require__(30);\n\nvar PromiseCapability = function (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 = aCallable(resolve);\n this.reject = aCallable(reject);\n};\n\n// `NewPromiseCapability` abstract operation\n// https://tc39.es/ecma262/#sec-newpromisecapability\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n\n\n/***/ }),\n/* 45 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = isObject;\n// Is a given variable an object?\nfunction isObject(obj) {\n var type = typeof obj;\n return type === 'function' || type === 'object' && !!obj;\n}\n\n\n/***/ }),\n/* 46 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__setup_js__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__tagTester_js__ = __webpack_require__(15);\n\n\n\n// Is a given value an array?\n// Delegates to ECMA5's native `Array.isArray`.\n/* harmony default export */ __webpack_exports__[\"a\"] = (__WEBPACK_IMPORTED_MODULE_0__setup_js__[\"k\" /* nativeIsArray */] || Object(__WEBPACK_IMPORTED_MODULE_1__tagTester_js__[\"a\" /* default */])('Array'));\n\n\n/***/ }),\n/* 47 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = each;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__optimizeCb_js__ = __webpack_require__(77);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__isArrayLike_js__ = __webpack_require__(24);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__keys_js__ = __webpack_require__(12);\n\n\n\n\n// The cornerstone for collection functions, an `each`\n// implementation, aka `forEach`.\n// Handles raw objects in addition to array-likes. Treats all\n// sparse array-likes as if they were dense.\nfunction each(obj, iteratee, context) {\n iteratee = Object(__WEBPACK_IMPORTED_MODULE_0__optimizeCb_js__[\"a\" /* default */])(iteratee, context);\n var i, length;\n if (Object(__WEBPACK_IMPORTED_MODULE_1__isArrayLike_js__[\"a\" /* default */])(obj)) {\n for (i = 0, length = obj.length; i < length; i++) {\n iteratee(obj[i], i, obj);\n }\n } else {\n var _keys = Object(__WEBPACK_IMPORTED_MODULE_2__keys_js__[\"a\" /* default */])(obj);\n for (i = 0, length = _keys.length; i < length; i++) {\n iteratee(obj[_keys[i]], _keys[i], obj);\n }\n }\n return obj;\n}\n\n\n/***/ }),\n/* 48 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(370);\n\n/***/ }),\n/* 49 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* eslint-disable es-x/no-symbol -- required for testing */\nvar V8_VERSION = __webpack_require__(84);\nvar fails = __webpack_require__(4);\n\n// eslint-disable-next-line es-x/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol();\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n return !String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n\n\n/***/ }),\n/* 50 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar uncurryThis = __webpack_require__(6);\nvar aCallable = __webpack_require__(30);\nvar NATIVE_BIND = __webpack_require__(63);\n\nvar bind = uncurryThis(uncurryThis.bind);\n\n// optional / simple context binding\nmodule.exports = function (fn, that) {\n aCallable(fn);\n return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n\n\n/***/ }),\n/* 51 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* global ActiveXObject -- old IE, WSH */\nvar anObject = __webpack_require__(21);\nvar definePropertiesModule = __webpack_require__(147);\nvar enumBugKeys = __webpack_require__(114);\nvar hiddenKeys = __webpack_require__(89);\nvar html = __webpack_require__(148);\nvar documentCreateElement = __webpack_require__(110);\nvar sharedKey = __webpack_require__(87);\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n activeXDocument = null; // avoid memory leak\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n activeXDocument = new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = typeof document != 'undefined'\n ? document.domain && activeXDocument\n ? NullProtoObjectViaActiveX(activeXDocument) // old IE\n : NullProtoObjectViaIFrame()\n : NullProtoObjectViaActiveX(activeXDocument); // WSH\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\n// eslint-disable-next-line es-x/no-object-create -- safe\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : definePropertiesModule.f(result, Properties);\n};\n\n\n/***/ }),\n/* 52 */\n/***/ (function(module, exports) {\n\nmodule.exports = {};\n\n\n/***/ }),\n/* 53 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar TO_STRING_TAG_SUPPORT = __webpack_require__(117);\nvar isCallable = __webpack_require__(7);\nvar classofRaw = __webpack_require__(65);\nvar wellKnownSymbol = __webpack_require__(8);\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar $Object = Object;\n\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(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 (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n};\n\n\n/***/ }),\n/* 54 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar TO_STRING_TAG_SUPPORT = __webpack_require__(117);\nvar defineProperty = __webpack_require__(32).f;\nvar createNonEnumerableProperty = __webpack_require__(36);\nvar hasOwn = __webpack_require__(14);\nvar toString = __webpack_require__(257);\nvar wellKnownSymbol = __webpack_require__(8);\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC, SET_METHOD) {\n if (it) {\n var target = STATIC ? it : it.prototype;\n if (!hasOwn(target, TO_STRING_TAG)) {\n defineProperty(target, TO_STRING_TAG, { configurable: true, value: TAG });\n }\n if (SET_METHOD && !TO_STRING_TAG_SUPPORT) {\n createNonEnumerableProperty(target, 'toString', toString);\n }\n }\n};\n\n\n/***/ }),\n/* 55 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(9);\n\nmodule.exports = global.Promise;\n\n\n/***/ }),\n/* 56 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = values;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__keys_js__ = __webpack_require__(12);\n\n\n// Retrieve the values of an object's properties.\nfunction values(obj) {\n var _keys = Object(__WEBPACK_IMPORTED_MODULE_0__keys_js__[\"a\" /* default */])(obj);\n var length = _keys.length;\n var values = Array(length);\n for (var i = 0; i < length; i++) {\n values[i] = obj[_keys[i]];\n }\n return values;\n}\n\n\n/***/ }),\n/* 57 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = flatten;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__getLength_js__ = __webpack_require__(27);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__isArrayLike_js__ = __webpack_require__(24);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__isArray_js__ = __webpack_require__(46);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__isArguments_js__ = __webpack_require__(123);\n\n\n\n\n\n// Internal implementation of a recursive `flatten` function.\nfunction flatten(input, depth, strict, output) {\n output = output || [];\n if (!depth && depth !== 0) {\n depth = Infinity;\n } else if (depth <= 0) {\n return output.concat(input);\n }\n var idx = output.length;\n for (var i = 0, length = Object(__WEBPACK_IMPORTED_MODULE_0__getLength_js__[\"a\" /* default */])(input); i < length; i++) {\n var value = input[i];\n if (Object(__WEBPACK_IMPORTED_MODULE_1__isArrayLike_js__[\"a\" /* default */])(value) && (Object(__WEBPACK_IMPORTED_MODULE_2__isArray_js__[\"a\" /* default */])(value) || Object(__WEBPACK_IMPORTED_MODULE_3__isArguments_js__[\"a\" /* default */])(value))) {\n // Flatten current level of array or arguments object.\n if (depth > 1) {\n flatten(value, depth - 1, strict, output);\n idx = output.length;\n } else {\n var j = 0, len = value.length;\n while (j < len) output[idx++] = value[j++];\n }\n } else if (!strict) {\n output[idx++] = value;\n }\n }\n return output;\n}\n\n\n/***/ }),\n/* 58 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = map;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__cb_js__ = __webpack_require__(18);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__isArrayLike_js__ = __webpack_require__(24);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__keys_js__ = __webpack_require__(12);\n\n\n\n\n// Return the results of applying the iteratee to each element.\nfunction map(obj, iteratee, context) {\n iteratee = Object(__WEBPACK_IMPORTED_MODULE_0__cb_js__[\"a\" /* default */])(iteratee, context);\n var _keys = !Object(__WEBPACK_IMPORTED_MODULE_1__isArrayLike_js__[\"a\" /* default */])(obj) && Object(__WEBPACK_IMPORTED_MODULE_2__keys_js__[\"a\" /* default */])(obj),\n length = (_keys || obj).length,\n results = Array(length);\n for (var index = 0; index < length; index++) {\n var currentKey = _keys ? _keys[index] : index;\n results[index] = iteratee(obj[currentKey], currentKey, obj);\n }\n return results;\n}\n\n\n/***/ }),\n/* 59 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(global) {\n\nvar _interopRequireDefault = __webpack_require__(2);\n\nvar _promise = _interopRequireDefault(__webpack_require__(10));\n\nvar _concat = _interopRequireDefault(__webpack_require__(29));\n\nvar _map = _interopRequireDefault(__webpack_require__(39));\n\nvar _keys = _interopRequireDefault(__webpack_require__(212));\n\nvar _stringify = _interopRequireDefault(__webpack_require__(34));\n\nvar _indexOf = _interopRequireDefault(__webpack_require__(102));\n\nvar _keys2 = _interopRequireDefault(__webpack_require__(48));\n\nvar _ = __webpack_require__(1);\n\nvar uuid = __webpack_require__(214);\n\nvar debug = __webpack_require__(60);\n\nvar _require = __webpack_require__(28),\n inherits = _require.inherits,\n parseDate = _require.parseDate;\n\nvar version = __webpack_require__(217);\n\nvar _require2 = __webpack_require__(61),\n setAdapters = _require2.setAdapters,\n adapterManager = _require2.adapterManager;\n\nvar AV = global.AV || {}; // All internal configuration items\n\nAV._config = {\n serverURLs: {},\n useMasterKey: false,\n production: null,\n realtime: null,\n requestTimeout: null\n};\nvar initialUserAgent = \"LeanCloud-JS-SDK/\".concat(version); // configs shared by all AV instances\n\nAV._sharedConfig = {\n userAgent: initialUserAgent,\n liveQueryRealtime: null\n};\nadapterManager.on('platformInfo', function (platformInfo) {\n var ua = initialUserAgent;\n\n if (platformInfo) {\n if (platformInfo.userAgent) {\n ua = platformInfo.userAgent;\n } else {\n var comments = platformInfo.name;\n\n if (platformInfo.version) {\n comments += \"/\".concat(platformInfo.version);\n }\n\n if (platformInfo.extra) {\n comments += \"; \".concat(platformInfo.extra);\n }\n\n ua += \" (\".concat(comments, \")\");\n }\n }\n\n AV._sharedConfig.userAgent = ua;\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 */\n\nAV._getAVPath = function (path) {\n if (!AV.applicationId) {\n throw new Error('You need to call AV.initialize before using AV.');\n }\n\n if (!path) {\n path = '';\n }\n\n if (!_.isString(path)) {\n throw new Error(\"Tried to get a localStorage path that wasn't a String.\");\n }\n\n if (path[0] === '/') {\n path = path.substring(1);\n }\n\n return 'AV/' + AV.applicationId + '/' + path;\n};\n/**\n * Returns the unique string for this app on this machine.\n * Gets reset when localStorage is cleared.\n * @private\n */\n\n\nAV._installationId = null;\n\nAV._getInstallationId = function () {\n // See if it's cached in RAM.\n if (AV._installationId) {\n return _promise.default.resolve(AV._installationId);\n } // Try to get it from localStorage.\n\n\n var path = AV._getAVPath('installationId');\n\n return AV.localStorage.getItemAsync(path).then(function (_installationId) {\n AV._installationId = _installationId;\n\n if (!AV._installationId) {\n // It wasn't in localStorage, so create a new one.\n AV._installationId = _installationId = uuid();\n return AV.localStorage.setItemAsync(path, _installationId).then(function () {\n return _installationId;\n });\n }\n\n return _installationId;\n });\n};\n\nAV._subscriptionId = null;\n\nAV._refreshSubscriptionId = function () {\n var path = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : AV._getAVPath('subscriptionId');\n var subscriptionId = AV._subscriptionId = uuid();\n return AV.localStorage.setItemAsync(path, subscriptionId).then(function () {\n return subscriptionId;\n });\n};\n\nAV._getSubscriptionId = function () {\n // See if it's cached in RAM.\n if (AV._subscriptionId) {\n return _promise.default.resolve(AV._subscriptionId);\n } // Try to get it from localStorage.\n\n\n var path = AV._getAVPath('subscriptionId');\n\n return AV.localStorage.getItemAsync(path).then(function (_subscriptionId) {\n AV._subscriptionId = _subscriptionId;\n\n if (!AV._subscriptionId) {\n // It wasn't in localStorage, so create a new one.\n _subscriptionId = AV._refreshSubscriptionId(path);\n }\n\n return _subscriptionId;\n });\n};\n\nAV._parseDate = parseDate; // A self-propagating extend function.\n\nAV._extend = function (protoProps, classProps) {\n var child = inherits(this, protoProps, classProps);\n child.extend = this.extend;\n return child;\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 \n * is set, then none of the AV Objects that are serialized can be dirty.\n * @private\n */\n\n\nAV._encode = function (value, seenObjects, disallowObjects) {\n var full = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n\n if (value instanceof AV.Object) {\n if (disallowObjects) {\n throw new Error('AV.Objects not allowed here');\n }\n\n if (!seenObjects || _.include(seenObjects, value) || !value._hasData) {\n return value._toPointer();\n }\n\n return value._toFullJSON((0, _concat.default)(seenObjects).call(seenObjects, value), full);\n }\n\n if (value instanceof AV.ACL) {\n return value.toJSON();\n }\n\n if (_.isDate(value)) {\n return full ? {\n __type: 'Date',\n iso: value.toJSON()\n } : value.toJSON();\n }\n\n if (value instanceof AV.GeoPoint) {\n return value.toJSON();\n }\n\n if (_.isArray(value)) {\n return (0, _map.default)(_).call(_, value, function (x) {\n return AV._encode(x, seenObjects, disallowObjects, full);\n });\n }\n\n if (_.isRegExp(value)) {\n return value.source;\n }\n\n if (value instanceof AV.Relation) {\n return value.toJSON();\n }\n\n if (value instanceof AV.Op) {\n return value.toJSON();\n }\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\n return value._toFullJSON(seenObjects, full);\n }\n\n if (_.isObject(value)) {\n return _.mapObject(value, function (v, k) {\n return AV._encode(v, seenObjects, disallowObjects, full);\n });\n }\n\n return value;\n};\n/**\n * The inverse function of AV._encode.\n * @private\n */\n\n\nAV._decode = function (value, key) {\n if (!_.isObject(value) || _.isDate(value)) {\n return value;\n }\n\n if (_.isArray(value)) {\n return (0, _map.default)(_).call(_, value, function (v) {\n return AV._decode(v);\n });\n }\n\n if (value instanceof AV.Object) {\n return value;\n }\n\n if (value instanceof AV.File) {\n return value;\n }\n\n if (value instanceof AV.Op) {\n return value;\n }\n\n if (value instanceof AV.GeoPoint) {\n return value;\n }\n\n if (value instanceof AV.ACL) {\n return value;\n }\n\n if (key === 'ACL') {\n return new AV.ACL(value);\n }\n\n if (value.__op) {\n return AV.Op._decode(value);\n }\n\n var className;\n\n if (value.__type === 'Pointer') {\n className = value.className;\n\n var pointer = AV.Object._create(className);\n\n if ((0, _keys.default)(value).length > 3) {\n var v = _.clone(value);\n\n delete v.__type;\n delete v.className;\n\n pointer._finishFetch(v, true);\n } else {\n pointer._finishFetch({\n objectId: value.objectId\n }, false);\n }\n\n return pointer;\n }\n\n if (value.__type === 'Object') {\n // It's an Object included in a query result.\n className = value.className;\n\n var _v = _.clone(value);\n\n delete _v.__type;\n delete _v.className;\n\n var object = AV.Object._create(className);\n\n object._finishFetch(_v, true);\n\n return object;\n }\n\n if (value.__type === 'Date') {\n return AV._parseDate(value.iso);\n }\n\n if (value.__type === 'GeoPoint') {\n return new AV.GeoPoint({\n latitude: value.latitude,\n longitude: value.longitude\n });\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\n if (value.__type === 'File') {\n var file = new AV.File(value.name);\n\n var _v2 = _.clone(value);\n\n delete _v2.__type;\n\n file._finishFetch(_v2);\n\n return file;\n }\n\n return _.mapObject(value, AV._decode);\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 */\n\n\nAV.parseJSON = AV._decode;\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 */\n\nAV.parse = function (text) {\n return AV.parseJSON(JSON.parse(text));\n};\n/**\n * Serialize a target containing AV.Object, similar to JSON.stringify.\n * Inverse to {@link AV.parse}\n * @since 3.14.0\n * @return {string}\n */\n\n\nAV.stringify = function (target) {\n return (0, _stringify.default)(AV._encode(target, [], false, true));\n};\n\nAV._encodeObjectOrArray = function (value) {\n var encodeAVObject = function encodeAVObject(object) {\n if (object && object._toFullJSON) {\n object = object._toFullJSON([]);\n }\n\n return _.mapObject(object, function (value) {\n return AV._encode(value, []);\n });\n };\n\n if (_.isArray(value)) {\n return (0, _map.default)(value).call(value, function (object) {\n return encodeAVObject(object);\n });\n } else {\n return encodeAVObject(value);\n }\n};\n\nAV._arrayEach = _.each;\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 */\n\nAV._traverse = function (object, func, seen) {\n if (object instanceof AV.Object) {\n seen = seen || [];\n\n if ((0, _indexOf.default)(_).call(_, seen, object) >= 0) {\n // We've already visited this object in this call.\n return;\n }\n\n seen.push(object);\n\n AV._traverse(object.attributes, func, seen);\n\n return func(object);\n }\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\n if (_.isArray(object)) {\n _.each(object, function (child, index) {\n var newChild = AV._traverse(child, func, seen);\n\n if (newChild) {\n object[index] = newChild;\n }\n });\n\n return func(object);\n }\n\n if (_.isObject(object)) {\n AV._each(object, function (child, key) {\n var newChild = AV._traverse(child, func, seen);\n\n if (newChild) {\n object[key] = newChild;\n }\n });\n\n return func(object);\n }\n\n return func(object);\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 */\n\n\nAV._objectEach = AV._each = function (obj, callback) {\n if (_.isObject(obj)) {\n _.each((0, _keys2.default)(_).call(_, obj), function (key) {\n callback(obj[key], key);\n });\n } else {\n _.each(obj, callback);\n }\n};\n/**\n * @namespace\n * @since 3.14.0\n */\n\n\nAV.debug = {\n /**\n * Enable debug\n */\n enable: function enable() {\n var namespaces = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'leancloud*';\n return debug.enable(namespaces);\n },\n\n /**\n * Disable debug\n */\n disable: debug.disable\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 */\n\nAV.setAdapters = setAdapters;\nmodule.exports = AV;\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(105)))\n\n/***/ }),\n/* 60 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\n/**\n * Colors.\n */\n\nexports.colors = ['#0000CC', '#0000FF', '#0033CC', '#0033FF', '#0066CC', '#0066FF', '#0099CC', '#0099FF', '#00CC00', '#00CC33', '#00CC66', '#00CC99', '#00CCCC', '#00CCFF', '#3300CC', '#3300FF', '#3333CC', '#3333FF', '#3366CC', '#3366FF', '#3399CC', '#3399FF', '#33CC00', '#33CC33', '#33CC66', '#33CC99', '#33CCCC', '#33CCFF', '#6600CC', '#6600FF', '#6633CC', '#6633FF', '#66CC00', '#66CC33', '#9900CC', '#9900FF', '#9933CC', '#9933FF', '#99CC00', '#99CC33', '#CC0000', '#CC0033', '#CC0066', '#CC0099', '#CC00CC', '#CC00FF', '#CC3300', '#CC3333', '#CC3366', '#CC3399', '#CC33CC', '#CC33FF', '#CC6600', '#CC6633', '#CC9900', '#CC9933', '#CCCC00', '#CCCC33', '#FF0000', '#FF0033', '#FF0066', '#FF0099', '#FF00CC', '#FF00FF', '#FF3300', '#FF3333', '#FF3366', '#FF3399', '#FF33CC', '#FF33FF', '#FF6600', '#FF6633', '#FF9900', '#FF9933', '#FFCC00', '#FFCC33'];\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n// eslint-disable-next-line complexity\n\nfunction useColors() {\n // NB: In an Electron preload script, document will be defined but not fully\n // initialized. Since we know we're in Chrome, we'll just detect this case\n // explicitly\n if (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n return true;\n } // Internet Explorer and Edge do not support colors.\n\n\n if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n return false;\n } // Is webkit? http://stackoverflow.com/a/16459606/376773\n // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\n\n return typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || // Is firebug? http://stackoverflow.com/a/398120/376773\n typeof window !== 'undefined' && window.console && (window.console.firebug || window.console.exception && window.console.table) || // Is firefox >= v31?\n // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31 || // Double check webkit in userAgent just in case we are in a worker\n typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/);\n}\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\n\nfunction formatArgs(args) {\n args[0] = (this.useColors ? '%c' : '') + this.namespace + (this.useColors ? ' %c' : ' ') + args[0] + (this.useColors ? '%c ' : ' ') + '+' + module.exports.humanize(this.diff);\n\n if (!this.useColors) {\n return;\n }\n\n var c = 'color: ' + this.color;\n args.splice(1, 0, c, 'color: inherit'); // The final \"%c\" is somewhat tricky, because there could be other\n // arguments passed either before or after the %c, so we need to\n // figure out the correct index to insert the CSS into\n\n var index = 0;\n var lastC = 0;\n args[0].replace(/%[a-zA-Z%]/g, function (match) {\n if (match === '%%') {\n return;\n }\n\n index++;\n\n if (match === '%c') {\n // We only are interested in the *last* %c\n // (the user may have provided their own)\n lastC = index;\n }\n });\n args.splice(lastC, 0, c);\n}\n/**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\n\n\nfunction log() {\n var _console;\n\n // This hackery is required for IE8/9, where\n // the `console.log` function doesn't have 'apply'\n return (typeof console === \"undefined\" ? \"undefined\" : _typeof(console)) === 'object' && console.log && (_console = console).log.apply(_console, arguments);\n}\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\n\nfunction save(namespaces) {\n try {\n if (namespaces) {\n exports.storage.setItem('debug', namespaces);\n } else {\n exports.storage.removeItem('debug');\n }\n } catch (error) {// Swallow\n // XXX (@Qix-) should we be logging these?\n }\n}\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\n\nfunction load() {\n var r;\n\n try {\n r = exports.storage.getItem('debug');\n } catch (error) {} // Swallow\n // XXX (@Qix-) should we be logging these?\n // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\n\n if (!r && typeof process !== 'undefined' && 'env' in process) {\n r = process.env.DEBUG;\n }\n\n return r;\n}\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\n\nfunction localstorage() {\n try {\n // TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n // The Browser also has localStorage in the global context.\n return localStorage;\n } catch (error) {// Swallow\n // XXX (@Qix-) should we be logging these?\n }\n}\n\nmodule.exports = __webpack_require__(375)(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/* 61 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(2);\n\nvar _keys = _interopRequireDefault(__webpack_require__(48));\n\nvar _ = __webpack_require__(1);\n\nvar EventEmitter = __webpack_require__(218);\n\nvar _require = __webpack_require__(28),\n inherits = _require.inherits;\n\nvar AdapterManager = inherits(EventEmitter, {\n constructor: function constructor() {\n EventEmitter.apply(this);\n this._adapters = {};\n },\n getAdapter: function getAdapter(name) {\n var adapter = this._adapters[name];\n\n if (adapter === undefined) {\n throw new Error(\"\".concat(name, \" adapter is not configured\"));\n }\n\n return adapter;\n },\n setAdapters: function setAdapters(newAdapters) {\n var _this = this;\n\n _.extend(this._adapters, newAdapters);\n\n (0, _keys.default)(_).call(_, newAdapters).forEach(function (name) {\n return _this.emit(name, newAdapters[name]);\n });\n }\n});\nvar adapterManager = new AdapterManager();\nmodule.exports = {\n getAdapter: adapterManager.getAdapter.bind(adapterManager),\n setAdapters: adapterManager.setAdapters.bind(adapterManager),\n adapterManager: adapterManager\n};\n\n/***/ }),\n/* 62 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar NATIVE_BIND = __webpack_require__(63);\n\nvar FunctionPrototype = Function.prototype;\nvar apply = FunctionPrototype.apply;\nvar call = FunctionPrototype.call;\n\n// eslint-disable-next-line es-x/no-reflect -- safe\nmodule.exports = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function () {\n return call.apply(apply, arguments);\n});\n\n\n/***/ }),\n/* 63 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar fails = __webpack_require__(4);\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es-x/no-function-prototype-bind -- safe\n var test = (function () { /* empty */ }).bind();\n // eslint-disable-next-line no-prototype-builtins -- safe\n return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n\n\n/***/ }),\n/* 64 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(19);\nvar call = __webpack_require__(11);\nvar propertyIsEnumerableModule = __webpack_require__(138);\nvar createPropertyDescriptor = __webpack_require__(41);\nvar toIndexedObject = __webpack_require__(33);\nvar toPropertyKey = __webpack_require__(82);\nvar hasOwn = __webpack_require__(14);\nvar IE8_DOM_DEFINE = __webpack_require__(141);\n\n// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPropertyKey(P);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n\n\n/***/ }),\n/* 65 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar uncurryThis = __webpack_require__(6);\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n return stringSlice(toString(it), 8, -1);\n};\n\n\n/***/ }),\n/* 66 */\n/***/ (function(module, exports) {\n\nvar $String = String;\n\nmodule.exports = function (argument) {\n try {\n return $String(argument);\n } catch (error) {\n return 'Object';\n }\n};\n\n\n/***/ }),\n/* 67 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar IS_PURE = __webpack_require__(31);\nvar store = __webpack_require__(108);\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.23.3',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2014-2022 Denis Pushkarev (zloirock.ru)',\n license: 'https://github.com/zloirock/core-js/blob/v3.23.3/LICENSE',\n source: 'https://github.com/zloirock/core-js'\n});\n\n\n/***/ }),\n/* 68 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar bind = __webpack_require__(50);\nvar call = __webpack_require__(11);\nvar anObject = __webpack_require__(21);\nvar tryToString = __webpack_require__(66);\nvar isArrayIteratorMethod = __webpack_require__(149);\nvar lengthOfArrayLike = __webpack_require__(42);\nvar isPrototypeOf = __webpack_require__(20);\nvar getIterator = __webpack_require__(150);\nvar getIteratorMethod = __webpack_require__(90);\nvar iteratorClose = __webpack_require__(151);\n\nvar $TypeError = TypeError;\n\nvar Result = function (stopped, result) {\n this.stopped = stopped;\n this.result = result;\n};\n\nvar ResultPrototype = Result.prototype;\n\nmodule.exports = function (iterable, unboundFunction, options) {\n var that = options && options.that;\n var AS_ENTRIES = !!(options && options.AS_ENTRIES);\n var IS_ITERATOR = !!(options && options.IS_ITERATOR);\n var INTERRUPTED = !!(options && options.INTERRUPTED);\n var fn = bind(unboundFunction, that);\n var iterator, iterFn, index, length, result, next, step;\n\n var stop = function (condition) {\n if (iterator) iteratorClose(iterator, 'normal', condition);\n return new Result(true, condition);\n };\n\n var callFn = function (value) {\n if (AS_ENTRIES) {\n anObject(value);\n return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);\n } return INTERRUPTED ? fn(value, stop) : fn(value);\n };\n\n if (IS_ITERATOR) {\n iterator = iterable;\n } else {\n iterFn = getIteratorMethod(iterable);\n if (!iterFn) throw $TypeError(tryToString(iterable) + ' is not iterable');\n // optimisation for array iterators\n if (isArrayIteratorMethod(iterFn)) {\n for (index = 0, length = lengthOfArrayLike(iterable); length > index; index++) {\n result = callFn(iterable[index]);\n if (result && isPrototypeOf(ResultPrototype, result)) return result;\n } return new Result(false);\n }\n iterator = getIterator(iterable, iterFn);\n }\n\n next = iterator.next;\n while (!(step = call(next, iterator)).done) {\n try {\n result = callFn(step.value);\n } catch (error) {\n iteratorClose(iterator, 'throw', error);\n }\n if (typeof result == 'object' && result && isPrototypeOf(ResultPrototype, result)) return result;\n } return new Result(false);\n};\n\n\n/***/ }),\n/* 69 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar classof = __webpack_require__(53);\n\nvar $String = String;\n\nmodule.exports = function (argument) {\n if (classof(argument) === 'Symbol') throw TypeError('Cannot convert a Symbol value to a string');\n return $String(argument);\n};\n\n\n/***/ }),\n/* 70 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar toIndexedObject = __webpack_require__(33);\nvar addToUnscopables = __webpack_require__(152);\nvar Iterators = __webpack_require__(52);\nvar InternalStateModule = __webpack_require__(91);\nvar defineProperty = __webpack_require__(32).f;\nvar defineIterator = __webpack_require__(153);\nvar IS_PURE = __webpack_require__(31);\nvar DESCRIPTORS = __webpack_require__(19);\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.es/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.es/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.es/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.es/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n setInternalState(this, {\n type: ARRAY_ITERATOR,\n target: toIndexedObject(iterated), // target\n index: 0, // next index\n kind: kind // kind\n });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n var state = getInternalState(this);\n var target = state.target;\n var kind = state.kind;\n var index = state.index++;\n if (!target || index >= target.length) {\n state.target = undefined;\n return { value: undefined, done: true };\n }\n if (kind == 'keys') return { value: index, done: false };\n if (kind == 'values') return { value: target[index], done: false };\n return { value: [index, target[index]], done: false };\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.es/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.es/ecma262/#sec-createmappedargumentsobject\nvar values = Iterators.Arguments = Iterators.Array;\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n// V8 ~ Chrome 45- bug\nif (!IS_PURE && DESCRIPTORS && values.name !== 'values') try {\n defineProperty(values, 'name', { value: 'values' });\n} catch (error) { /* empty */ }\n\n\n/***/ }),\n/* 71 */\n/***/ (function(module, exports) {\n\nmodule.exports = function (exec) {\n try {\n return { error: false, value: exec() };\n } catch (error) {\n return { error: true, value: error };\n }\n};\n\n\n/***/ }),\n/* 72 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(9);\nvar NativePromiseConstructor = __webpack_require__(55);\nvar isCallable = __webpack_require__(7);\nvar isForced = __webpack_require__(142);\nvar inspectSource = __webpack_require__(118);\nvar wellKnownSymbol = __webpack_require__(8);\nvar IS_BROWSER = __webpack_require__(268);\nvar IS_PURE = __webpack_require__(31);\nvar V8_VERSION = __webpack_require__(84);\n\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\nvar SPECIES = wellKnownSymbol('species');\nvar SUBCLASSING = false;\nvar NATIVE_PROMISE_REJECTION_EVENT = isCallable(global.PromiseRejectionEvent);\n\nvar FORCED_PROMISE_CONSTRUCTOR = isForced('Promise', function () {\n var PROMISE_CONSTRUCTOR_SOURCE = inspectSource(NativePromiseConstructor);\n var GLOBAL_CORE_JS_PROMISE = PROMISE_CONSTRUCTOR_SOURCE !== String(NativePromiseConstructor);\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 if (!GLOBAL_CORE_JS_PROMISE && V8_VERSION === 66) return true;\n // We need Promise#{ catch, finally } in the pure version for preventing prototype pollution\n if (IS_PURE && !(NativePromisePrototype['catch'] && NativePromisePrototype['finally'])) return true;\n // We can't use @@species feature detection in V8 since it causes\n // deoptimization and performance degradation\n // https://github.com/zloirock/core-js/issues/679\n if (V8_VERSION >= 51 && /native code/.test(PROMISE_CONSTRUCTOR_SOURCE)) return false;\n // Detect correctness of subclassing with @@species support\n var promise = new NativePromiseConstructor(function (resolve) { resolve(1); });\n var FakePromise = function (exec) {\n exec(function () { /* empty */ }, function () { /* empty */ });\n };\n var constructor = promise.constructor = {};\n constructor[SPECIES] = FakePromise;\n SUBCLASSING = promise.then(function () { /* empty */ }) instanceof FakePromise;\n if (!SUBCLASSING) return true;\n // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return !GLOBAL_CORE_JS_PROMISE && IS_BROWSER && !NATIVE_PROMISE_REJECTION_EVENT;\n});\n\nmodule.exports = {\n CONSTRUCTOR: FORCED_PROMISE_CONSTRUCTOR,\n REJECTION_EVENT: NATIVE_PROMISE_REJECTION_EVENT,\n SUBCLASSING: SUBCLASSING\n};\n\n\n/***/ }),\n/* 73 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(70);\nvar DOMIterables = __webpack_require__(278);\nvar global = __webpack_require__(9);\nvar classof = __webpack_require__(53);\nvar createNonEnumerableProperty = __webpack_require__(36);\nvar Iterators = __webpack_require__(52);\nvar wellKnownSymbol = __webpack_require__(8);\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nfor (var COLLECTION_NAME in DOMIterables) {\n var Collection = global[COLLECTION_NAME];\n var CollectionPrototype = Collection && Collection.prototype;\n if (CollectionPrototype && classof(CollectionPrototype) !== TO_STRING_TAG) {\n createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\n }\n Iterators[COLLECTION_NAME] = Iterators.Array;\n}\n\n\n/***/ }),\n/* 74 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return hasStringTagBug; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return isIE11; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__setup_js__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__hasObjectTag_js__ = __webpack_require__(285);\n\n\n\n// In IE 10 - Edge 13, `DataView` has string tag `'[object Object]'`.\n// In IE 11, the most common among them, this problem also applies to\n// `Map`, `WeakMap` and `Set`.\nvar hasStringTagBug = (\n __WEBPACK_IMPORTED_MODULE_0__setup_js__[\"s\" /* supportsDataView */] && Object(__WEBPACK_IMPORTED_MODULE_1__hasObjectTag_js__[\"a\" /* default */])(new DataView(new ArrayBuffer(8)))\n ),\n isIE11 = (typeof Map !== 'undefined' && Object(__WEBPACK_IMPORTED_MODULE_1__hasObjectTag_js__[\"a\" /* default */])(new Map));\n\n\n/***/ }),\n/* 75 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = allKeys;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__isObject_js__ = __webpack_require__(45);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__setup_js__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__collectNonEnumProps_js__ = __webpack_require__(172);\n\n\n\n\n// Retrieve all the enumerable property names of an object.\nfunction allKeys(obj) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_0__isObject_js__[\"a\" /* default */])(obj)) return [];\n var keys = [];\n for (var key in obj) keys.push(key);\n // Ahem, IE < 9.\n if (__WEBPACK_IMPORTED_MODULE_1__setup_js__[\"h\" /* hasEnumBug */]) Object(__WEBPACK_IMPORTED_MODULE_2__collectNonEnumProps_js__[\"a\" /* default */])(obj, keys);\n return keys;\n}\n\n\n/***/ }),\n/* 76 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = toPath;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__underscore_js__ = __webpack_require__(23);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__toPath_js__ = __webpack_require__(181);\n\n\n\n// Internal wrapper for `_.toPath` to enable minification.\n// Similar to `cb` for `_.iteratee`.\nfunction toPath(path) {\n return __WEBPACK_IMPORTED_MODULE_0__underscore_js__[\"a\" /* default */].toPath(path);\n}\n\n\n/***/ }),\n/* 77 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = optimizeCb;\n// Internal function that returns an efficient (for current engines) version\n// of the passed-in callback, to be repeatedly applied in other Underscore\n// functions.\nfunction optimizeCb(func, context, argCount) {\n if (context === void 0) return func;\n switch (argCount == null ? 3 : argCount) {\n case 1: return function(value) {\n return func.call(context, value);\n };\n // The 2-argument case is omitted because we’re not using it.\n case 3: return function(value, index, collection) {\n return func.call(context, value, index, collection);\n };\n case 4: return function(accumulator, value, index, collection) {\n return func.call(context, accumulator, value, index, collection);\n };\n }\n return function() {\n return func.apply(context, arguments);\n };\n}\n\n\n/***/ }),\n/* 78 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = filter;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__cb_js__ = __webpack_require__(18);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__each_js__ = __webpack_require__(47);\n\n\n\n// Return all the elements that pass a truth test.\nfunction filter(obj, predicate, context) {\n var results = [];\n predicate = Object(__WEBPACK_IMPORTED_MODULE_0__cb_js__[\"a\" /* default */])(predicate, context);\n Object(__WEBPACK_IMPORTED_MODULE_1__each_js__[\"a\" /* default */])(obj, function(value, index, list) {\n if (predicate(value, index, list)) results.push(value);\n });\n return results;\n}\n\n\n/***/ }),\n/* 79 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = contains;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__isArrayLike_js__ = __webpack_require__(24);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__values_js__ = __webpack_require__(56);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__indexOf_js__ = __webpack_require__(197);\n\n\n\n\n// Determine if the array or object contains a given item (using `===`).\nfunction contains(obj, item, fromIndex, guard) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_0__isArrayLike_js__[\"a\" /* default */])(obj)) obj = Object(__WEBPACK_IMPORTED_MODULE_1__values_js__[\"a\" /* default */])(obj);\n if (typeof fromIndex != 'number' || guard) fromIndex = 0;\n return Object(__WEBPACK_IMPORTED_MODULE_2__indexOf_js__[\"a\" /* default */])(obj, item, fromIndex) >= 0;\n}\n\n\n/***/ }),\n/* 80 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar classof = __webpack_require__(65);\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es-x/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(argument) {\n return classof(argument) == 'Array';\n};\n\n\n/***/ }),\n/* 81 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(222);\n\n/***/ }),\n/* 82 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toPrimitive = __webpack_require__(242);\nvar isSymbol = __webpack_require__(83);\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n var key = toPrimitive(argument, 'string');\n return isSymbol(key) ? key : key + '';\n};\n\n\n/***/ }),\n/* 83 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar getBuiltIn = __webpack_require__(16);\nvar isCallable = __webpack_require__(7);\nvar isPrototypeOf = __webpack_require__(20);\nvar USE_SYMBOL_AS_UID = __webpack_require__(140);\n\nvar $Object = Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\n};\n\n\n/***/ }),\n/* 84 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(9);\nvar userAgent = __webpack_require__(85);\n\nvar process = global.process;\nvar Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n // but their correct versions are not interesting for us\n version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = +match[1];\n }\n}\n\nmodule.exports = version;\n\n\n/***/ }),\n/* 85 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar getBuiltIn = __webpack_require__(16);\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n\n\n/***/ }),\n/* 86 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar hasOwn = __webpack_require__(14);\nvar isCallable = __webpack_require__(7);\nvar toObject = __webpack_require__(35);\nvar sharedKey = __webpack_require__(87);\nvar CORRECT_PROTOTYPE_GETTER = __webpack_require__(144);\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar $Object = Object;\nvar ObjectPrototype = $Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n// eslint-disable-next-line es-x/no-object-getprototypeof -- safe\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function (O) {\n var object = toObject(O);\n if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];\n var constructor = object.constructor;\n if (isCallable(constructor) && object instanceof constructor) {\n return constructor.prototype;\n } return object instanceof $Object ? ObjectPrototype : null;\n};\n\n\n/***/ }),\n/* 87 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar shared = __webpack_require__(67);\nvar uid = __webpack_require__(109);\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n\n\n/***/ }),\n/* 88 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* eslint-disable no-proto -- safe */\nvar uncurryThis = __webpack_require__(6);\nvar anObject = __webpack_require__(21);\nvar aPossiblePrototype = __webpack_require__(245);\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es-x/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n // eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\n setter = uncurryThis(Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set);\n setter(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n anObject(O);\n aPossiblePrototype(proto);\n if (CORRECT_SETTER) setter(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n\n\n/***/ }),\n/* 89 */\n/***/ (function(module, exports) {\n\nmodule.exports = {};\n\n\n/***/ }),\n/* 90 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar classof = __webpack_require__(53);\nvar getMethod = __webpack_require__(107);\nvar Iterators = __webpack_require__(52);\nvar wellKnownSymbol = __webpack_require__(8);\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (it != undefined) return getMethod(it, ITERATOR)\n || getMethod(it, '@@iterator')\n || Iterators[classof(it)];\n};\n\n\n/***/ }),\n/* 91 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar NATIVE_WEAK_MAP = __webpack_require__(254);\nvar global = __webpack_require__(9);\nvar uncurryThis = __webpack_require__(6);\nvar isObject = __webpack_require__(17);\nvar createNonEnumerableProperty = __webpack_require__(36);\nvar hasOwn = __webpack_require__(14);\nvar shared = __webpack_require__(108);\nvar sharedKey = __webpack_require__(87);\nvar hiddenKeys = __webpack_require__(89);\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = global.TypeError;\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n var store = shared.state || (shared.state = new WeakMap());\n var wmget = uncurryThis(store.get);\n var wmhas = uncurryThis(store.has);\n var wmset = uncurryThis(store.set);\n set = function (it, metadata) {\n if (wmhas(store, it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n wmset(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget(store, it) || {};\n };\n has = function (it) {\n return wmhas(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return hasOwn(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return hasOwn(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n\n\n/***/ }),\n/* 92 */\n/***/ (function(module, exports) {\n\n// empty\n\n\n/***/ }),\n/* 93 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar uncurryThis = __webpack_require__(6);\nvar fails = __webpack_require__(4);\nvar isCallable = __webpack_require__(7);\nvar classof = __webpack_require__(53);\nvar getBuiltIn = __webpack_require__(16);\nvar inspectSource = __webpack_require__(118);\n\nvar noop = function () { /* empty */ };\nvar empty = [];\nvar construct = getBuiltIn('Reflect', 'construct');\nvar constructorRegExp = /^\\s*(?:class|function)\\b/;\nvar exec = uncurryThis(constructorRegExp.exec);\nvar INCORRECT_TO_STRING = !constructorRegExp.exec(noop);\n\nvar isConstructorModern = function isConstructor(argument) {\n if (!isCallable(argument)) return false;\n try {\n construct(noop, empty, argument);\n return true;\n } catch (error) {\n return false;\n }\n};\n\nvar isConstructorLegacy = function isConstructor(argument) {\n if (!isCallable(argument)) return false;\n switch (classof(argument)) {\n case 'AsyncFunction':\n case 'GeneratorFunction':\n case 'AsyncGeneratorFunction': return false;\n }\n try {\n // we can't check .prototype since constructors produced by .bind haven't it\n // `Function#toString` throws on some built-it function in some legacy engines\n // (for example, `DOMQuad` and similar in FF41-)\n return INCORRECT_TO_STRING || !!exec(constructorRegExp, inspectSource(argument));\n } catch (error) {\n return true;\n }\n};\n\nisConstructorLegacy.sham = true;\n\n// `IsConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-isconstructor\nmodule.exports = !construct || fails(function () {\n var called;\n return isConstructorModern(isConstructorModern.call)\n || !isConstructorModern(Object)\n || !isConstructorModern(function () { called = true; })\n || called;\n}) ? isConstructorLegacy : isConstructorModern;\n\n\n/***/ }),\n/* 94 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar uncurryThis = __webpack_require__(6);\n\nmodule.exports = uncurryThis([].slice);\n\n\n/***/ }),\n/* 95 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar charAt = __webpack_require__(277).charAt;\nvar toString = __webpack_require__(69);\nvar InternalStateModule = __webpack_require__(91);\nvar defineIterator = __webpack_require__(153);\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n setInternalState(this, {\n type: STRING_ITERATOR,\n string: toString(iterated),\n index: 0\n });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n var state = getInternalState(this);\n var string = state.string;\n var index = state.index;\n var point;\n if (index >= string.length) return { value: undefined, done: true };\n point = charAt(string, index);\n state.index += point.length;\n return { value: point, done: false };\n});\n\n\n/***/ }),\n/* 96 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = matcher;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__extendOwn_js__ = __webpack_require__(127);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__isMatch_js__ = __webpack_require__(173);\n\n\n\n// Returns a predicate for checking whether an object has a given set of\n// `key:value` pairs.\nfunction matcher(attrs) {\n attrs = Object(__WEBPACK_IMPORTED_MODULE_0__extendOwn_js__[\"a\" /* default */])({}, attrs);\n return function(obj) {\n return Object(__WEBPACK_IMPORTED_MODULE_1__isMatch_js__[\"a\" /* default */])(obj, attrs);\n };\n}\n\n\n/***/ }),\n/* 97 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__restArguments_js__ = __webpack_require__(22);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__executeBound_js__ = __webpack_require__(189);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__underscore_js__ = __webpack_require__(23);\n\n\n\n\n// Partially apply a function by creating a version that has had some of its\n// arguments pre-filled, without changing its dynamic `this` context. `_` acts\n// as a placeholder by default, allowing any combination of arguments to be\n// pre-filled. Set `_.partial.placeholder` for a custom placeholder argument.\nvar partial = Object(__WEBPACK_IMPORTED_MODULE_0__restArguments_js__[\"a\" /* default */])(function(func, boundArgs) {\n var placeholder = partial.placeholder;\n var bound = function() {\n var position = 0, length = boundArgs.length;\n var args = Array(length);\n for (var i = 0; i < length; i++) {\n args[i] = boundArgs[i] === placeholder ? arguments[position++] : boundArgs[i];\n }\n while (position < arguments.length) args.push(arguments[position++]);\n return Object(__WEBPACK_IMPORTED_MODULE_1__executeBound_js__[\"a\" /* default */])(func, bound, this, this, args);\n };\n return bound;\n});\n\npartial.placeholder = __WEBPACK_IMPORTED_MODULE_2__underscore_js__[\"a\" /* default */];\n/* harmony default export */ __webpack_exports__[\"a\"] = (partial);\n\n\n/***/ }),\n/* 98 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = group;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__cb_js__ = __webpack_require__(18);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__each_js__ = __webpack_require__(47);\n\n\n\n// An internal function used for aggregate \"group by\" operations.\nfunction group(behavior, partition) {\n return function(obj, iteratee, context) {\n var result = partition ? [[], []] : {};\n iteratee = Object(__WEBPACK_IMPORTED_MODULE_0__cb_js__[\"a\" /* default */])(iteratee, context);\n Object(__WEBPACK_IMPORTED_MODULE_1__each_js__[\"a\" /* default */])(obj, function(value, index) {\n var key = iteratee(value, index, obj);\n behavior(result, value, key);\n });\n return result;\n };\n}\n\n\n/***/ }),\n/* 99 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar toPropertyKey = __webpack_require__(82);\nvar definePropertyModule = __webpack_require__(32);\nvar createPropertyDescriptor = __webpack_require__(41);\n\nmodule.exports = function (object, key, value) {\n var propertyKey = toPropertyKey(key);\n if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n else object[propertyKey] = value;\n};\n\n\n/***/ }),\n/* 100 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar fails = __webpack_require__(4);\nvar wellKnownSymbol = __webpack_require__(8);\nvar V8_VERSION = __webpack_require__(84);\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n // We can't use this feature detection in V8 since it causes\n // deoptimization and serious performance degradation\n // https://github.com/zloirock/core-js/issues/677\n return V8_VERSION >= 51 || !fails(function () {\n var array = [];\n var constructor = array.constructor = {};\n constructor[SPECIES] = function () {\n return { foo: 1 };\n };\n return array[METHOD_NAME](Boolean).foo !== 1;\n });\n};\n\n\n/***/ }),\n/* 101 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar bind = __webpack_require__(50);\nvar uncurryThis = __webpack_require__(6);\nvar IndexedObject = __webpack_require__(139);\nvar toObject = __webpack_require__(35);\nvar lengthOfArrayLike = __webpack_require__(42);\nvar arraySpeciesCreate = __webpack_require__(211);\n\nvar push = uncurryThis([].push);\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterReject }` methods implementation\nvar createMethod = function (TYPE) {\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 IS_FILTER_REJECT = TYPE == 7;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n return function ($this, callbackfn, that, specificCreate) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var boundFunction = bind(callbackfn, that);\n var length = lengthOfArrayLike(self);\n var index = 0;\n var create = specificCreate || arraySpeciesCreate;\n var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_REJECT ? create($this, 0) : undefined;\n var value, result;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n value = self[index];\n result = boundFunction(value, index, O);\n if (TYPE) {\n if (IS_MAP) target[index] = result; // map\n else if (result) switch (TYPE) {\n case 3: return true; // some\n case 5: return value; // find\n case 6: return index; // findIndex\n case 2: push(target, value); // filter\n } else switch (TYPE) {\n case 4: return false; // every\n case 7: push(target, value); // filterReject\n }\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.forEach` method\n // https://tc39.es/ecma262/#sec-array.prototype.foreach\n forEach: createMethod(0),\n // `Array.prototype.map` method\n // https://tc39.es/ecma262/#sec-array.prototype.map\n map: createMethod(1),\n // `Array.prototype.filter` method\n // https://tc39.es/ecma262/#sec-array.prototype.filter\n filter: createMethod(2),\n // `Array.prototype.some` method\n // https://tc39.es/ecma262/#sec-array.prototype.some\n some: createMethod(3),\n // `Array.prototype.every` method\n // https://tc39.es/ecma262/#sec-array.prototype.every\n every: createMethod(4),\n // `Array.prototype.find` method\n // https://tc39.es/ecma262/#sec-array.prototype.find\n find: createMethod(5),\n // `Array.prototype.findIndex` method\n // https://tc39.es/ecma262/#sec-array.prototype.findIndex\n findIndex: createMethod(6),\n // `Array.prototype.filterReject` method\n // https://github.com/tc39/proposal-array-filtering\n filterReject: createMethod(7)\n};\n\n\n/***/ }),\n/* 102 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(365);\n\n/***/ }),\n/* 103 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(2);\n\nvar _typeof2 = _interopRequireDefault(__webpack_require__(135));\n\nvar _filter = _interopRequireDefault(__webpack_require__(430));\n\nvar _map = _interopRequireDefault(__webpack_require__(39));\n\nvar _keys = _interopRequireDefault(__webpack_require__(212));\n\nvar _stringify = _interopRequireDefault(__webpack_require__(34));\n\nvar _concat = _interopRequireDefault(__webpack_require__(29));\n\nvar _ = __webpack_require__(1);\n\nvar _require = __webpack_require__(435),\n timeout = _require.timeout;\n\nvar debug = __webpack_require__(60);\n\nvar debugRequest = debug('leancloud:request');\nvar debugRequestError = debug('leancloud:request:error');\n\nvar _require2 = __webpack_require__(61),\n getAdapter = _require2.getAdapter;\n\nvar requestsCount = 0;\n\nvar ajax = function ajax(_ref) {\n var method = _ref.method,\n url = _ref.url,\n query = _ref.query,\n data = _ref.data,\n _ref$headers = _ref.headers,\n headers = _ref$headers === void 0 ? {} : _ref$headers,\n time = _ref.timeout,\n onprogress = _ref.onprogress;\n\n if (query) {\n var _context, _context2, _context4;\n\n var queryString = (0, _filter.default)(_context = (0, _map.default)(_context2 = (0, _keys.default)(query)).call(_context2, function (key) {\n var _context3;\n\n var value = query[key];\n if (value === undefined) return undefined;\n var v = (0, _typeof2.default)(value) === 'object' ? (0, _stringify.default)(value) : value;\n return (0, _concat.default)(_context3 = \"\".concat(encodeURIComponent(key), \"=\")).call(_context3, encodeURIComponent(v));\n })).call(_context, function (qs) {\n return qs;\n }).join('&');\n url = (0, _concat.default)(_context4 = \"\".concat(url, \"?\")).call(_context4, queryString);\n }\n\n var count = requestsCount++;\n debugRequest('request(%d) %s %s %o %o %o', count, method, url, query, data, headers);\n var request = getAdapter('request');\n var promise = request(url, {\n method: method,\n headers: headers,\n data: data,\n onprogress: onprogress\n }).then(function (response) {\n debugRequest('response(%d) %d %O %o', count, response.status, response.data || response.text, response.header);\n\n if (response.ok === false) {\n var error = new Error();\n error.response = response;\n throw error;\n }\n\n return response.data;\n }).catch(function (error) {\n if (error.response) {\n if (!debug.enabled('leancloud:request')) {\n debugRequestError('request(%d) %s %s %o %o %o', count, method, url, query, data, headers);\n }\n\n debugRequestError('response(%d) %d %O %o', count, error.response.status, error.response.data || error.response.text, error.response.header);\n error.statusCode = error.response.status;\n error.responseText = error.response.text;\n error.response = error.response.data;\n }\n\n throw error;\n });\n return time ? timeout(promise, time) : promise;\n};\n\nmodule.exports = ajax;\n\n/***/ }),\n/* 104 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(440);\n\n/***/ }),\n/* 105 */\n/***/ (function(module, exports) {\n\nvar g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n/***/ }),\n/* 106 */\n/***/ (function(module, exports) {\n\nvar $TypeError = TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw $TypeError(\"Can't call method on \" + it);\n return it;\n};\n\n\n/***/ }),\n/* 107 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar aCallable = __webpack_require__(30);\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n var func = V[P];\n return func == null ? undefined : aCallable(func);\n};\n\n\n/***/ }),\n/* 108 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(9);\nvar defineGlobalProperty = __webpack_require__(244);\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || defineGlobalProperty(SHARED, {});\n\nmodule.exports = store;\n\n\n/***/ }),\n/* 109 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar uncurryThis = __webpack_require__(6);\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n\n\n/***/ }),\n/* 110 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(9);\nvar isObject = __webpack_require__(17);\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n\n\n/***/ }),\n/* 111 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar internalObjectKeys = __webpack_require__(145);\nvar enumBugKeys = __webpack_require__(114);\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es-x/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n\n\n/***/ }),\n/* 112 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toIntegerOrInfinity = __webpack_require__(113);\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toIntegerOrInfinity(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n\n\n/***/ }),\n/* 113 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar trunc = __webpack_require__(248);\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n var number = +argument;\n // eslint-disable-next-line no-self-compare -- NaN check\n return number !== number || number === 0 ? 0 : trunc(number);\n};\n\n\n/***/ }),\n/* 114 */\n/***/ (function(module, exports) {\n\n// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n\n\n/***/ }),\n/* 115 */\n/***/ (function(module, exports) {\n\n// eslint-disable-next-line es-x/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n\n\n/***/ }),\n/* 116 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar internalObjectKeys = __webpack_require__(145);\nvar enumBugKeys = __webpack_require__(114);\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es-x/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n\n\n/***/ }),\n/* 117 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar wellKnownSymbol = __webpack_require__(8);\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n\n\n/***/ }),\n/* 118 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar uncurryThis = __webpack_require__(6);\nvar isCallable = __webpack_require__(7);\nvar store = __webpack_require__(108);\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n store.inspectSource = function (it) {\n return functionToString(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n\n\n/***/ }),\n/* 119 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar classof = __webpack_require__(65);\nvar global = __webpack_require__(9);\n\nmodule.exports = classof(global.process) == 'process';\n\n\n/***/ }),\n/* 120 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__setup_js__ = __webpack_require__(3);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"VERSION\", function() { return __WEBPACK_IMPORTED_MODULE_0__setup_js__[\"e\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__restArguments_js__ = __webpack_require__(22);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"restArguments\", function() { return __WEBPACK_IMPORTED_MODULE_1__restArguments_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__isObject_js__ = __webpack_require__(45);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isObject\", function() { return __WEBPACK_IMPORTED_MODULE_2__isObject_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__isNull_js__ = __webpack_require__(280);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isNull\", function() { return __WEBPACK_IMPORTED_MODULE_3__isNull_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__isUndefined_js__ = __webpack_require__(162);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isUndefined\", function() { return __WEBPACK_IMPORTED_MODULE_4__isUndefined_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__isBoolean_js__ = __webpack_require__(163);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isBoolean\", function() { return __WEBPACK_IMPORTED_MODULE_5__isBoolean_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__isElement_js__ = __webpack_require__(281);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isElement\", function() { return __WEBPACK_IMPORTED_MODULE_6__isElement_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__isString_js__ = __webpack_require__(121);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isString\", function() { return __WEBPACK_IMPORTED_MODULE_7__isString_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__isNumber_js__ = __webpack_require__(164);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isNumber\", function() { return __WEBPACK_IMPORTED_MODULE_8__isNumber_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__isDate_js__ = __webpack_require__(282);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isDate\", function() { return __WEBPACK_IMPORTED_MODULE_9__isDate_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__isRegExp_js__ = __webpack_require__(283);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isRegExp\", function() { return __WEBPACK_IMPORTED_MODULE_10__isRegExp_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__isError_js__ = __webpack_require__(284);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isError\", function() { return __WEBPACK_IMPORTED_MODULE_11__isError_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__isSymbol_js__ = __webpack_require__(165);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isSymbol\", function() { return __WEBPACK_IMPORTED_MODULE_12__isSymbol_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_13__isArrayBuffer_js__ = __webpack_require__(166);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isArrayBuffer\", function() { return __WEBPACK_IMPORTED_MODULE_13__isArrayBuffer_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_14__isDataView_js__ = __webpack_require__(122);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isDataView\", function() { return __WEBPACK_IMPORTED_MODULE_14__isDataView_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_15__isArray_js__ = __webpack_require__(46);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isArray\", function() { return __WEBPACK_IMPORTED_MODULE_15__isArray_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_16__isFunction_js__ = __webpack_require__(26);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isFunction\", function() { return __WEBPACK_IMPORTED_MODULE_16__isFunction_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_17__isArguments_js__ = __webpack_require__(123);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isArguments\", function() { return __WEBPACK_IMPORTED_MODULE_17__isArguments_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_18__isFinite_js__ = __webpack_require__(286);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isFinite\", function() { return __WEBPACK_IMPORTED_MODULE_18__isFinite_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_19__isNaN_js__ = __webpack_require__(167);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isNaN\", function() { return __WEBPACK_IMPORTED_MODULE_19__isNaN_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_20__isTypedArray_js__ = __webpack_require__(168);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isTypedArray\", function() { return __WEBPACK_IMPORTED_MODULE_20__isTypedArray_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_21__isEmpty_js__ = __webpack_require__(288);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isEmpty\", function() { return __WEBPACK_IMPORTED_MODULE_21__isEmpty_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_22__isMatch_js__ = __webpack_require__(173);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isMatch\", function() { return __WEBPACK_IMPORTED_MODULE_22__isMatch_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_23__isEqual_js__ = __webpack_require__(289);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isEqual\", function() { return __WEBPACK_IMPORTED_MODULE_23__isEqual_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_24__isMap_js__ = __webpack_require__(291);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isMap\", function() { return __WEBPACK_IMPORTED_MODULE_24__isMap_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_25__isWeakMap_js__ = __webpack_require__(292);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isWeakMap\", function() { return __WEBPACK_IMPORTED_MODULE_25__isWeakMap_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_26__isSet_js__ = __webpack_require__(293);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isSet\", function() { return __WEBPACK_IMPORTED_MODULE_26__isSet_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_27__isWeakSet_js__ = __webpack_require__(294);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isWeakSet\", function() { return __WEBPACK_IMPORTED_MODULE_27__isWeakSet_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_28__keys_js__ = __webpack_require__(12);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"keys\", function() { return __WEBPACK_IMPORTED_MODULE_28__keys_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_29__allKeys_js__ = __webpack_require__(75);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"allKeys\", function() { return __WEBPACK_IMPORTED_MODULE_29__allKeys_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_30__values_js__ = __webpack_require__(56);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"values\", function() { return __WEBPACK_IMPORTED_MODULE_30__values_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_31__pairs_js__ = __webpack_require__(295);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"pairs\", function() { return __WEBPACK_IMPORTED_MODULE_31__pairs_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_32__invert_js__ = __webpack_require__(174);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"invert\", function() { return __WEBPACK_IMPORTED_MODULE_32__invert_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_33__functions_js__ = __webpack_require__(175);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"functions\", function() { return __WEBPACK_IMPORTED_MODULE_33__functions_js__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"methods\", function() { return __WEBPACK_IMPORTED_MODULE_33__functions_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_34__extend_js__ = __webpack_require__(176);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"extend\", function() { return __WEBPACK_IMPORTED_MODULE_34__extend_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_35__extendOwn_js__ = __webpack_require__(127);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"extendOwn\", function() { return __WEBPACK_IMPORTED_MODULE_35__extendOwn_js__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"assign\", function() { return __WEBPACK_IMPORTED_MODULE_35__extendOwn_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_36__defaults_js__ = __webpack_require__(177);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"defaults\", function() { return __WEBPACK_IMPORTED_MODULE_36__defaults_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_37__create_js__ = __webpack_require__(296);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"create\", function() { return __WEBPACK_IMPORTED_MODULE_37__create_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_38__clone_js__ = __webpack_require__(179);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"clone\", function() { return __WEBPACK_IMPORTED_MODULE_38__clone_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_39__tap_js__ = __webpack_require__(297);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"tap\", function() { return __WEBPACK_IMPORTED_MODULE_39__tap_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_40__get_js__ = __webpack_require__(180);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"get\", function() { return __WEBPACK_IMPORTED_MODULE_40__get_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_41__has_js__ = __webpack_require__(298);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"has\", function() { return __WEBPACK_IMPORTED_MODULE_41__has_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_42__mapObject_js__ = __webpack_require__(299);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"mapObject\", function() { return __WEBPACK_IMPORTED_MODULE_42__mapObject_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_43__identity_js__ = __webpack_require__(129);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"identity\", function() { return __WEBPACK_IMPORTED_MODULE_43__identity_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_44__constant_js__ = __webpack_require__(169);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"constant\", function() { return __WEBPACK_IMPORTED_MODULE_44__constant_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_45__noop_js__ = __webpack_require__(184);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"noop\", function() { return __WEBPACK_IMPORTED_MODULE_45__noop_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_46__toPath_js__ = __webpack_require__(181);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"toPath\", function() { return __WEBPACK_IMPORTED_MODULE_46__toPath_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_47__property_js__ = __webpack_require__(130);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"property\", function() { return __WEBPACK_IMPORTED_MODULE_47__property_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_48__propertyOf_js__ = __webpack_require__(300);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"propertyOf\", function() { return __WEBPACK_IMPORTED_MODULE_48__propertyOf_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_49__matcher_js__ = __webpack_require__(96);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"matcher\", function() { return __WEBPACK_IMPORTED_MODULE_49__matcher_js__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"matches\", function() { return __WEBPACK_IMPORTED_MODULE_49__matcher_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_50__times_js__ = __webpack_require__(301);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"times\", function() { return __WEBPACK_IMPORTED_MODULE_50__times_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_51__random_js__ = __webpack_require__(185);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"random\", function() { return __WEBPACK_IMPORTED_MODULE_51__random_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_52__now_js__ = __webpack_require__(131);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"now\", function() { return __WEBPACK_IMPORTED_MODULE_52__now_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_53__escape_js__ = __webpack_require__(302);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"escape\", function() { return __WEBPACK_IMPORTED_MODULE_53__escape_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_54__unescape_js__ = __webpack_require__(303);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"unescape\", function() { return __WEBPACK_IMPORTED_MODULE_54__unescape_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_55__templateSettings_js__ = __webpack_require__(188);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"templateSettings\", function() { return __WEBPACK_IMPORTED_MODULE_55__templateSettings_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_56__template_js__ = __webpack_require__(305);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"template\", function() { return __WEBPACK_IMPORTED_MODULE_56__template_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_57__result_js__ = __webpack_require__(306);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"result\", function() { return __WEBPACK_IMPORTED_MODULE_57__result_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_58__uniqueId_js__ = __webpack_require__(307);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"uniqueId\", function() { return __WEBPACK_IMPORTED_MODULE_58__uniqueId_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_59__chain_js__ = __webpack_require__(308);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"chain\", function() { return __WEBPACK_IMPORTED_MODULE_59__chain_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_60__iteratee_js__ = __webpack_require__(183);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"iteratee\", function() { return __WEBPACK_IMPORTED_MODULE_60__iteratee_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_61__partial_js__ = __webpack_require__(97);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"partial\", function() { return __WEBPACK_IMPORTED_MODULE_61__partial_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_62__bind_js__ = __webpack_require__(190);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"bind\", function() { return __WEBPACK_IMPORTED_MODULE_62__bind_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_63__bindAll_js__ = __webpack_require__(309);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"bindAll\", function() { return __WEBPACK_IMPORTED_MODULE_63__bindAll_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_64__memoize_js__ = __webpack_require__(310);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"memoize\", function() { return __WEBPACK_IMPORTED_MODULE_64__memoize_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_65__delay_js__ = __webpack_require__(191);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"delay\", function() { return __WEBPACK_IMPORTED_MODULE_65__delay_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_66__defer_js__ = __webpack_require__(311);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"defer\", function() { return __WEBPACK_IMPORTED_MODULE_66__defer_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_67__throttle_js__ = __webpack_require__(312);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"throttle\", function() { return __WEBPACK_IMPORTED_MODULE_67__throttle_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_68__debounce_js__ = __webpack_require__(313);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"debounce\", function() { return __WEBPACK_IMPORTED_MODULE_68__debounce_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_69__wrap_js__ = __webpack_require__(314);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"wrap\", function() { return __WEBPACK_IMPORTED_MODULE_69__wrap_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_70__negate_js__ = __webpack_require__(132);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"negate\", function() { return __WEBPACK_IMPORTED_MODULE_70__negate_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_71__compose_js__ = __webpack_require__(315);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"compose\", function() { return __WEBPACK_IMPORTED_MODULE_71__compose_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_72__after_js__ = __webpack_require__(316);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"after\", function() { return __WEBPACK_IMPORTED_MODULE_72__after_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_73__before_js__ = __webpack_require__(192);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"before\", function() { return __WEBPACK_IMPORTED_MODULE_73__before_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_74__once_js__ = __webpack_require__(317);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"once\", function() { return __WEBPACK_IMPORTED_MODULE_74__once_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_75__findKey_js__ = __webpack_require__(193);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"findKey\", function() { return __WEBPACK_IMPORTED_MODULE_75__findKey_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_76__findIndex_js__ = __webpack_require__(133);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"findIndex\", function() { return __WEBPACK_IMPORTED_MODULE_76__findIndex_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_77__findLastIndex_js__ = __webpack_require__(195);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"findLastIndex\", function() { return __WEBPACK_IMPORTED_MODULE_77__findLastIndex_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_78__sortedIndex_js__ = __webpack_require__(196);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"sortedIndex\", function() { return __WEBPACK_IMPORTED_MODULE_78__sortedIndex_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_79__indexOf_js__ = __webpack_require__(197);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"indexOf\", function() { return __WEBPACK_IMPORTED_MODULE_79__indexOf_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_80__lastIndexOf_js__ = __webpack_require__(318);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"lastIndexOf\", function() { return __WEBPACK_IMPORTED_MODULE_80__lastIndexOf_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_81__find_js__ = __webpack_require__(199);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"find\", function() { return __WEBPACK_IMPORTED_MODULE_81__find_js__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"detect\", function() { return __WEBPACK_IMPORTED_MODULE_81__find_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_82__findWhere_js__ = __webpack_require__(319);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"findWhere\", function() { return __WEBPACK_IMPORTED_MODULE_82__findWhere_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_83__each_js__ = __webpack_require__(47);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"each\", function() { return __WEBPACK_IMPORTED_MODULE_83__each_js__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"forEach\", function() { return __WEBPACK_IMPORTED_MODULE_83__each_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_84__map_js__ = __webpack_require__(58);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"map\", function() { return __WEBPACK_IMPORTED_MODULE_84__map_js__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"collect\", function() { return __WEBPACK_IMPORTED_MODULE_84__map_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_85__reduce_js__ = __webpack_require__(320);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"reduce\", function() { return __WEBPACK_IMPORTED_MODULE_85__reduce_js__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"foldl\", function() { return __WEBPACK_IMPORTED_MODULE_85__reduce_js__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"inject\", function() { return __WEBPACK_IMPORTED_MODULE_85__reduce_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_86__reduceRight_js__ = __webpack_require__(321);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"reduceRight\", function() { return __WEBPACK_IMPORTED_MODULE_86__reduceRight_js__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"foldr\", function() { return __WEBPACK_IMPORTED_MODULE_86__reduceRight_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_87__filter_js__ = __webpack_require__(78);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"filter\", function() { return __WEBPACK_IMPORTED_MODULE_87__filter_js__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"select\", function() { return __WEBPACK_IMPORTED_MODULE_87__filter_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_88__reject_js__ = __webpack_require__(322);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"reject\", function() { return __WEBPACK_IMPORTED_MODULE_88__reject_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_89__every_js__ = __webpack_require__(323);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"every\", function() { return __WEBPACK_IMPORTED_MODULE_89__every_js__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"all\", function() { return __WEBPACK_IMPORTED_MODULE_89__every_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_90__some_js__ = __webpack_require__(324);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"some\", function() { return __WEBPACK_IMPORTED_MODULE_90__some_js__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"any\", function() { return __WEBPACK_IMPORTED_MODULE_90__some_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_91__contains_js__ = __webpack_require__(79);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"contains\", function() { return __WEBPACK_IMPORTED_MODULE_91__contains_js__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"includes\", function() { return __WEBPACK_IMPORTED_MODULE_91__contains_js__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"include\", function() { return __WEBPACK_IMPORTED_MODULE_91__contains_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_92__invoke_js__ = __webpack_require__(325);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"invoke\", function() { return __WEBPACK_IMPORTED_MODULE_92__invoke_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_93__pluck_js__ = __webpack_require__(134);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"pluck\", function() { return __WEBPACK_IMPORTED_MODULE_93__pluck_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_94__where_js__ = __webpack_require__(326);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"where\", function() { return __WEBPACK_IMPORTED_MODULE_94__where_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_95__max_js__ = __webpack_require__(201);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"max\", function() { return __WEBPACK_IMPORTED_MODULE_95__max_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_96__min_js__ = __webpack_require__(327);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"min\", function() { return __WEBPACK_IMPORTED_MODULE_96__min_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_97__shuffle_js__ = __webpack_require__(328);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"shuffle\", function() { return __WEBPACK_IMPORTED_MODULE_97__shuffle_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_98__sample_js__ = __webpack_require__(202);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"sample\", function() { return __WEBPACK_IMPORTED_MODULE_98__sample_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_99__sortBy_js__ = __webpack_require__(329);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"sortBy\", function() { return __WEBPACK_IMPORTED_MODULE_99__sortBy_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_100__groupBy_js__ = __webpack_require__(330);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"groupBy\", function() { return __WEBPACK_IMPORTED_MODULE_100__groupBy_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_101__indexBy_js__ = __webpack_require__(331);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"indexBy\", function() { return __WEBPACK_IMPORTED_MODULE_101__indexBy_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_102__countBy_js__ = __webpack_require__(332);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"countBy\", function() { return __WEBPACK_IMPORTED_MODULE_102__countBy_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_103__partition_js__ = __webpack_require__(333);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"partition\", function() { return __WEBPACK_IMPORTED_MODULE_103__partition_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_104__toArray_js__ = __webpack_require__(334);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"toArray\", function() { return __WEBPACK_IMPORTED_MODULE_104__toArray_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_105__size_js__ = __webpack_require__(335);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"size\", function() { return __WEBPACK_IMPORTED_MODULE_105__size_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_106__pick_js__ = __webpack_require__(203);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"pick\", function() { return __WEBPACK_IMPORTED_MODULE_106__pick_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_107__omit_js__ = __webpack_require__(337);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"omit\", function() { return __WEBPACK_IMPORTED_MODULE_107__omit_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_108__first_js__ = __webpack_require__(338);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"first\", function() { return __WEBPACK_IMPORTED_MODULE_108__first_js__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"head\", function() { return __WEBPACK_IMPORTED_MODULE_108__first_js__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"take\", function() { return __WEBPACK_IMPORTED_MODULE_108__first_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_109__initial_js__ = __webpack_require__(204);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"initial\", function() { return __WEBPACK_IMPORTED_MODULE_109__initial_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_110__last_js__ = __webpack_require__(339);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"last\", function() { return __WEBPACK_IMPORTED_MODULE_110__last_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_111__rest_js__ = __webpack_require__(205);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"rest\", function() { return __WEBPACK_IMPORTED_MODULE_111__rest_js__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"tail\", function() { return __WEBPACK_IMPORTED_MODULE_111__rest_js__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"drop\", function() { return __WEBPACK_IMPORTED_MODULE_111__rest_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_112__compact_js__ = __webpack_require__(340);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"compact\", function() { return __WEBPACK_IMPORTED_MODULE_112__compact_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_113__flatten_js__ = __webpack_require__(341);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"flatten\", function() { return __WEBPACK_IMPORTED_MODULE_113__flatten_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_114__without_js__ = __webpack_require__(342);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"without\", function() { return __WEBPACK_IMPORTED_MODULE_114__without_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_115__uniq_js__ = __webpack_require__(207);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"uniq\", function() { return __WEBPACK_IMPORTED_MODULE_115__uniq_js__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"unique\", function() { return __WEBPACK_IMPORTED_MODULE_115__uniq_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_116__union_js__ = __webpack_require__(343);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"union\", function() { return __WEBPACK_IMPORTED_MODULE_116__union_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_117__intersection_js__ = __webpack_require__(344);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"intersection\", function() { return __WEBPACK_IMPORTED_MODULE_117__intersection_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_118__difference_js__ = __webpack_require__(206);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"difference\", function() { return __WEBPACK_IMPORTED_MODULE_118__difference_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_119__unzip_js__ = __webpack_require__(208);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"unzip\", function() { return __WEBPACK_IMPORTED_MODULE_119__unzip_js__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"transpose\", function() { return __WEBPACK_IMPORTED_MODULE_119__unzip_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_120__zip_js__ = __webpack_require__(345);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"zip\", function() { return __WEBPACK_IMPORTED_MODULE_120__zip_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_121__object_js__ = __webpack_require__(346);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"object\", function() { return __WEBPACK_IMPORTED_MODULE_121__object_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_122__range_js__ = __webpack_require__(347);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"range\", function() { return __WEBPACK_IMPORTED_MODULE_122__range_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_123__chunk_js__ = __webpack_require__(348);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"chunk\", function() { return __WEBPACK_IMPORTED_MODULE_123__chunk_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_124__mixin_js__ = __webpack_require__(349);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"mixin\", function() { return __WEBPACK_IMPORTED_MODULE_124__mixin_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_125__underscore_array_methods_js__ = __webpack_require__(350);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return __WEBPACK_IMPORTED_MODULE_125__underscore_array_methods_js__[\"a\"]; });\n// Named Exports\n// =============\n\n// Underscore.js 1.12.1\n// https://underscorejs.org\n// (c) 2009-2020 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n// Underscore may be freely distributed under the MIT license.\n\n// Baseline setup.\n\n\n\n// Object Functions\n// ----------------\n// Our most fundamental functions operate on any JavaScript object.\n// Most functions in Underscore depend on at least one function in this section.\n\n// A group of functions that check the types of core JavaScript values.\n// These are often informally referred to as the \"isType\" functions.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n// Functions that treat an object as a dictionary of key-value pairs.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n// Utility Functions\n// -----------------\n// A bit of a grab bag: Predicate-generating functions for use with filters and\n// loops, string escaping and templating, create random numbers and unique ids,\n// and functions that facilitate Underscore's chaining and iteration conventions.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n// Function (ahem) Functions\n// -------------------------\n// These functions take a function as an argument and return a new function\n// as the result. Also known as higher-order functions.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n// Finders\n// -------\n// Functions that extract (the position of) a single element from an object\n// or array based on some criterion.\n\n\n\n\n\n\n\n\n\n// Collection Functions\n// --------------------\n// Functions that work on any collection of elements: either an array, or\n// an object of key-value pairs.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n// `_.pick` and `_.omit` are actually object functions, but we put\n// them here in order to create a more natural reading order in the\n// monolithic build as they depend on `_.contains`.\n\n\n\n// Array Functions\n// ---------------\n// Functions that operate on arrays (and array-likes) only, because they’re\n// expressed in terms of operations on an ordered list of values.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n// OOP\n// ---\n// These modules support the \"object-oriented\" calling style. See also\n// `underscore.js` and `index-default.js`.\n\n\n\n\n/***/ }),\n/* 121 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__tagTester_js__ = __webpack_require__(15);\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__tagTester_js__[\"a\" /* default */])('String'));\n\n\n/***/ }),\n/* 122 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__tagTester_js__ = __webpack_require__(15);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__isFunction_js__ = __webpack_require__(26);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__isArrayBuffer_js__ = __webpack_require__(166);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__stringTagBug_js__ = __webpack_require__(74);\n\n\n\n\n\nvar isDataView = Object(__WEBPACK_IMPORTED_MODULE_0__tagTester_js__[\"a\" /* default */])('DataView');\n\n// In IE 10 - Edge 13, we need a different heuristic\n// to determine whether an object is a `DataView`.\nfunction ie10IsDataView(obj) {\n return obj != null && Object(__WEBPACK_IMPORTED_MODULE_1__isFunction_js__[\"a\" /* default */])(obj.getInt8) && Object(__WEBPACK_IMPORTED_MODULE_2__isArrayBuffer_js__[\"a\" /* default */])(obj.buffer);\n}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (__WEBPACK_IMPORTED_MODULE_3__stringTagBug_js__[\"a\" /* hasStringTagBug */] ? ie10IsDataView : isDataView);\n\n\n/***/ }),\n/* 123 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__tagTester_js__ = __webpack_require__(15);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__has_js__ = __webpack_require__(37);\n\n\n\nvar isArguments = Object(__WEBPACK_IMPORTED_MODULE_0__tagTester_js__[\"a\" /* default */])('Arguments');\n\n// Define a fallback version of the method in browsers (ahem, IE < 9), where\n// there isn't any inspectable \"Arguments\" type.\n(function() {\n if (!isArguments(arguments)) {\n isArguments = function(obj) {\n return Object(__WEBPACK_IMPORTED_MODULE_1__has_js__[\"a\" /* default */])(obj, 'callee');\n };\n }\n}());\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (isArguments);\n\n\n/***/ }),\n/* 124 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__shallowProperty_js__ = __webpack_require__(171);\n\n\n// Internal helper to obtain the `byteLength` property of an object.\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__shallowProperty_js__[\"a\" /* default */])('byteLength'));\n\n\n/***/ }),\n/* 125 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = ie11fingerprint;\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return mapMethods; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"d\", function() { return weakMapMethods; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return setMethods; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__getLength_js__ = __webpack_require__(27);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__isFunction_js__ = __webpack_require__(26);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__allKeys_js__ = __webpack_require__(75);\n\n\n\n\n// Since the regular `Object.prototype.toString` type tests don't work for\n// some types in IE 11, we use a fingerprinting heuristic instead, based\n// on the methods. It's not great, but it's the best we got.\n// The fingerprint method lists are defined below.\nfunction ie11fingerprint(methods) {\n var length = Object(__WEBPACK_IMPORTED_MODULE_0__getLength_js__[\"a\" /* default */])(methods);\n return function(obj) {\n if (obj == null) return false;\n // `Map`, `WeakMap` and `Set` have no enumerable keys.\n var keys = Object(__WEBPACK_IMPORTED_MODULE_2__allKeys_js__[\"a\" /* default */])(obj);\n if (Object(__WEBPACK_IMPORTED_MODULE_0__getLength_js__[\"a\" /* default */])(keys)) return false;\n for (var i = 0; i < length; i++) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_1__isFunction_js__[\"a\" /* default */])(obj[methods[i]])) return false;\n }\n // If we are testing against `WeakMap`, we need to ensure that\n // `obj` doesn't have a `forEach` method in order to distinguish\n // it from a regular `Map`.\n return methods !== weakMapMethods || !Object(__WEBPACK_IMPORTED_MODULE_1__isFunction_js__[\"a\" /* default */])(obj[forEachName]);\n };\n}\n\n// In the interest of compact minification, we write\n// each string in the fingerprints only once.\nvar forEachName = 'forEach',\n hasName = 'has',\n commonInit = ['clear', 'delete'],\n mapTail = ['get', hasName, 'set'];\n\n// `Map`, `WeakMap` and `Set` each have slightly different\n// combinations of the above sublists.\nvar mapMethods = commonInit.concat(forEachName, mapTail),\n weakMapMethods = commonInit.concat(mapTail),\n setMethods = ['add'].concat(commonInit, forEachName, hasName);\n\n\n/***/ }),\n/* 126 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = createAssigner;\n// An internal function for creating assigner functions.\nfunction createAssigner(keysFunc, defaults) {\n return function(obj) {\n var length = arguments.length;\n if (defaults) obj = Object(obj);\n if (length < 2 || obj == null) return obj;\n for (var index = 1; index < length; index++) {\n var source = arguments[index],\n keys = keysFunc(source),\n l = keys.length;\n for (var i = 0; i < l; i++) {\n var key = keys[i];\n if (!defaults || obj[key] === void 0) obj[key] = source[key];\n }\n }\n return obj;\n };\n}\n\n\n/***/ }),\n/* 127 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__createAssigner_js__ = __webpack_require__(126);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__keys_js__ = __webpack_require__(12);\n\n\n\n// Assigns a given object with all the own properties in the passed-in\n// object(s).\n// (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign)\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__createAssigner_js__[\"a\" /* default */])(__WEBPACK_IMPORTED_MODULE_1__keys_js__[\"a\" /* default */]));\n\n\n/***/ }),\n/* 128 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = deepGet;\n// Internal function to obtain a nested property in `obj` along `path`.\nfunction deepGet(obj, path) {\n var length = path.length;\n for (var i = 0; i < length; i++) {\n if (obj == null) return void 0;\n obj = obj[path[i]];\n }\n return length ? obj : void 0;\n}\n\n\n/***/ }),\n/* 129 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = identity;\n// Keep the identity function around for default iteratees.\nfunction identity(value) {\n return value;\n}\n\n\n/***/ }),\n/* 130 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = property;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__deepGet_js__ = __webpack_require__(128);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__toPath_js__ = __webpack_require__(76);\n\n\n\n// Creates a function that, when passed an object, will traverse that object’s\n// properties down the given `path`, specified as an array of keys or indices.\nfunction property(path) {\n path = Object(__WEBPACK_IMPORTED_MODULE_1__toPath_js__[\"a\" /* default */])(path);\n return function(obj) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__deepGet_js__[\"a\" /* default */])(obj, path);\n };\n}\n\n\n/***/ }),\n/* 131 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n// A (possibly faster) way to get the current timestamp as an integer.\n/* harmony default export */ __webpack_exports__[\"a\"] = (Date.now || function() {\n return new Date().getTime();\n});\n\n\n/***/ }),\n/* 132 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = negate;\n// Returns a negated version of the passed-in predicate.\nfunction negate(predicate) {\n return function() {\n return !predicate.apply(this, arguments);\n };\n}\n\n\n/***/ }),\n/* 133 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__createPredicateIndexFinder_js__ = __webpack_require__(194);\n\n\n// Returns the first index on an array-like that passes a truth test.\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__createPredicateIndexFinder_js__[\"a\" /* default */])(1));\n\n\n/***/ }),\n/* 134 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = pluck;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__map_js__ = __webpack_require__(58);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__property_js__ = __webpack_require__(130);\n\n\n\n// Convenience version of a common use case of `_.map`: fetching a property.\nfunction pluck(obj, key) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__map_js__[\"a\" /* default */])(obj, Object(__WEBPACK_IMPORTED_MODULE_1__property_js__[\"a\" /* default */])(key));\n}\n\n\n/***/ }),\n/* 135 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar _Symbol = __webpack_require__(225);\n\nvar _Symbol$iterator = __webpack_require__(424);\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _typeof = \"function\" == typeof _Symbol && \"symbol\" == typeof _Symbol$iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof _Symbol && obj.constructor === _Symbol && obj !== _Symbol.prototype ? \"symbol\" : typeof obj;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(obj);\n}\n\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n/***/ }),\n/* 136 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar wellKnownSymbol = __webpack_require__(8);\n\nexports.f = wellKnownSymbol;\n\n\n/***/ }),\n/* 137 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(471);\n\n/***/ }),\n/* 138 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n\n\n/***/ }),\n/* 139 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar uncurryThis = __webpack_require__(6);\nvar fails = __webpack_require__(4);\nvar classof = __webpack_require__(65);\n\nvar $Object = Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !$Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split(it, '') : $Object(it);\n} : $Object;\n\n\n/***/ }),\n/* 140 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* eslint-disable es-x/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = __webpack_require__(49);\n\nmodule.exports = NATIVE_SYMBOL\n && !Symbol.sham\n && typeof Symbol.iterator == 'symbol';\n\n\n/***/ }),\n/* 141 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(19);\nvar fails = __webpack_require__(4);\nvar createElement = __webpack_require__(110);\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es-x/no-object-defineproperty -- required for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n\n\n/***/ }),\n/* 142 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar fails = __webpack_require__(4);\nvar isCallable = __webpack_require__(7);\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : isCallable(detection) ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n\n\n/***/ }),\n/* 143 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(19);\nvar fails = __webpack_require__(4);\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n // eslint-disable-next-line es-x/no-object-defineproperty -- required for testing\n return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n value: 42,\n writable: false\n }).prototype != 42;\n});\n\n\n/***/ }),\n/* 144 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar fails = __webpack_require__(4);\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n // eslint-disable-next-line es-x/no-object-getprototypeof -- required for testing\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n\n\n/***/ }),\n/* 145 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar uncurryThis = __webpack_require__(6);\nvar hasOwn = __webpack_require__(14);\nvar toIndexedObject = __webpack_require__(33);\nvar indexOf = __webpack_require__(146).indexOf;\nvar hiddenKeys = __webpack_require__(89);\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (hasOwn(O, key = names[i++])) {\n ~indexOf(result, key) || push(result, key);\n }\n return result;\n};\n\n\n/***/ }),\n/* 146 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toIndexedObject = __webpack_require__(33);\nvar toAbsoluteIndex = __webpack_require__(112);\nvar lengthOfArrayLike = __webpack_require__(42);\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = lengthOfArrayLike(O);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n\n\n/***/ }),\n/* 147 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(19);\nvar V8_PROTOTYPE_DEFINE_BUG = __webpack_require__(143);\nvar definePropertyModule = __webpack_require__(32);\nvar anObject = __webpack_require__(21);\nvar toIndexedObject = __webpack_require__(33);\nvar objectKeys = __webpack_require__(116);\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es-x/no-object-defineproperties -- safe\nexports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var props = toIndexedObject(Properties);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);\n return O;\n};\n\n\n/***/ }),\n/* 148 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar getBuiltIn = __webpack_require__(16);\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n\n\n/***/ }),\n/* 149 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar wellKnownSymbol = __webpack_require__(8);\nvar Iterators = __webpack_require__(52);\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n\n\n/***/ }),\n/* 150 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar call = __webpack_require__(11);\nvar aCallable = __webpack_require__(30);\nvar anObject = __webpack_require__(21);\nvar tryToString = __webpack_require__(66);\nvar getIteratorMethod = __webpack_require__(90);\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument, usingIterator) {\n var iteratorMethod = arguments.length < 2 ? getIteratorMethod(argument) : usingIterator;\n if (aCallable(iteratorMethod)) return anObject(call(iteratorMethod, argument));\n throw $TypeError(tryToString(argument) + ' is not iterable');\n};\n\n\n/***/ }),\n/* 151 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar call = __webpack_require__(11);\nvar anObject = __webpack_require__(21);\nvar getMethod = __webpack_require__(107);\n\nmodule.exports = function (iterator, kind, value) {\n var innerResult, innerError;\n anObject(iterator);\n try {\n innerResult = getMethod(iterator, 'return');\n if (!innerResult) {\n if (kind === 'throw') throw value;\n return value;\n }\n innerResult = call(innerResult, iterator);\n } catch (error) {\n innerError = true;\n innerResult = error;\n }\n if (kind === 'throw') throw value;\n if (innerError) throw innerResult;\n anObject(innerResult);\n return value;\n};\n\n\n/***/ }),\n/* 152 */\n/***/ (function(module, exports) {\n\nmodule.exports = function () { /* empty */ };\n\n\n/***/ }),\n/* 153 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(0);\nvar call = __webpack_require__(11);\nvar IS_PURE = __webpack_require__(31);\nvar FunctionName = __webpack_require__(255);\nvar isCallable = __webpack_require__(7);\nvar createIteratorConstructor = __webpack_require__(256);\nvar getPrototypeOf = __webpack_require__(86);\nvar setPrototypeOf = __webpack_require__(88);\nvar setToStringTag = __webpack_require__(54);\nvar createNonEnumerableProperty = __webpack_require__(36);\nvar defineBuiltIn = __webpack_require__(43);\nvar wellKnownSymbol = __webpack_require__(8);\nvar Iterators = __webpack_require__(52);\nvar IteratorsCore = __webpack_require__(154);\n\nvar PROPER_FUNCTION_NAME = FunctionName.PROPER;\nvar CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE;\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n createIteratorConstructor(IteratorConstructor, NAME, next);\n\n var getIterationMethod = function (KIND) {\n if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n switch (KIND) {\n case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n } return function () { return new IteratorConstructor(this); };\n };\n\n var TO_STRING_TAG = NAME + ' Iterator';\n var INCORRECT_VALUES_NAME = false;\n var IterablePrototype = Iterable.prototype;\n var nativeIterator = IterablePrototype[ITERATOR]\n || IterablePrototype['@@iterator']\n || DEFAULT && IterablePrototype[DEFAULT];\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n var CurrentIteratorPrototype, methods, KEY;\n\n // fix native\n if (anyNativeIterator) {\n CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n if (CurrentIteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n if (setPrototypeOf) {\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n } else if (!isCallable(CurrentIteratorPrototype[ITERATOR])) {\n defineBuiltIn(CurrentIteratorPrototype, ITERATOR, returnThis);\n }\n }\n // Set @@toStringTag to native iterators\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n }\n }\n\n // fix Array.prototype.{ values, @@iterator }.name in V8 / FF\n if (PROPER_FUNCTION_NAME && DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n if (!IS_PURE && CONFIGURABLE_FUNCTION_NAME) {\n createNonEnumerableProperty(IterablePrototype, 'name', VALUES);\n } else {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values() { return call(nativeIterator, this); };\n }\n }\n\n // export additional methods\n if (DEFAULT) {\n methods = {\n values: getIterationMethod(VALUES),\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n entries: getIterationMethod(ENTRIES)\n };\n if (FORCED) for (KEY in methods) {\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n defineBuiltIn(IterablePrototype, KEY, methods[KEY]);\n }\n } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n }\n\n // define iterator\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n defineBuiltIn(IterablePrototype, ITERATOR, defaultIterator, { name: DEFAULT });\n }\n Iterators[NAME] = defaultIterator;\n\n return methods;\n};\n\n\n/***/ }),\n/* 154 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar fails = __webpack_require__(4);\nvar isCallable = __webpack_require__(7);\nvar create = __webpack_require__(51);\nvar getPrototypeOf = __webpack_require__(86);\nvar defineBuiltIn = __webpack_require__(43);\nvar wellKnownSymbol = __webpack_require__(8);\nvar IS_PURE = __webpack_require__(31);\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\n// `%IteratorPrototype%` object\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\n/* eslint-disable es-x/no-array-prototype-keys -- safe */\nif ([].keys) {\n arrayIterator = [].keys();\n // Safari 8 has buggy iterators w/o `next`\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\n\nvar NEW_ITERATOR_PROTOTYPE = IteratorPrototype == undefined || fails(function () {\n var test = {};\n // FF44- legacy iterators case\n return IteratorPrototype[ITERATOR].call(test) !== test;\n});\n\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\nelse if (IS_PURE) IteratorPrototype = create(IteratorPrototype);\n\n// `%IteratorPrototype%[@@iterator]()` method\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator\nif (!isCallable(IteratorPrototype[ITERATOR])) {\n defineBuiltIn(IteratorPrototype, ITERATOR, function () {\n return this;\n });\n}\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n\n\n/***/ }),\n/* 155 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar anObject = __webpack_require__(21);\nvar aConstructor = __webpack_require__(156);\nvar wellKnownSymbol = __webpack_require__(8);\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aConstructor(S);\n};\n\n\n/***/ }),\n/* 156 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isConstructor = __webpack_require__(93);\nvar tryToString = __webpack_require__(66);\n\nvar $TypeError = TypeError;\n\n// `Assert: IsConstructor(argument) is true`\nmodule.exports = function (argument) {\n if (isConstructor(argument)) return argument;\n throw $TypeError(tryToString(argument) + ' is not a constructor');\n};\n\n\n/***/ }),\n/* 157 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(9);\nvar apply = __webpack_require__(62);\nvar bind = __webpack_require__(50);\nvar isCallable = __webpack_require__(7);\nvar hasOwn = __webpack_require__(14);\nvar fails = __webpack_require__(4);\nvar html = __webpack_require__(148);\nvar arraySlice = __webpack_require__(94);\nvar createElement = __webpack_require__(110);\nvar validateArgumentsLength = __webpack_require__(262);\nvar IS_IOS = __webpack_require__(158);\nvar IS_NODE = __webpack_require__(119);\n\nvar set = global.setImmediate;\nvar clear = global.clearImmediate;\nvar process = global.process;\nvar Dispatch = global.Dispatch;\nvar Function = global.Function;\nvar MessageChannel = global.MessageChannel;\nvar String = global.String;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar location, defer, channel, port;\n\ntry {\n // Deno throws a ReferenceError on `location` access without `--location` flag\n location = global.location;\n} catch (error) { /* empty */ }\n\nvar run = function (id) {\n if (hasOwn(queue, id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\n\nvar runner = function (id) {\n return function () {\n run(id);\n };\n};\n\nvar listener = function (event) {\n run(event.data);\n};\n\nvar post = function (id) {\n // old engines have not location.origin\n global.postMessage(String(id), location.protocol + '//' + location.host);\n};\n\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!set || !clear) {\n set = function setImmediate(handler) {\n validateArgumentsLength(arguments.length, 1);\n var fn = isCallable(handler) ? handler : Function(handler);\n var args = arraySlice(arguments, 1);\n queue[++counter] = function () {\n apply(fn, undefined, args);\n };\n defer(counter);\n return counter;\n };\n clear = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (IS_NODE) {\n defer = function (id) {\n process.nextTick(runner(id));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(runner(id));\n };\n // Browsers with MessageChannel, includes WebWorkers\n // except iOS - https://github.com/zloirock/core-js/issues/624\n } else if (MessageChannel && !IS_IOS) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = bind(port.postMessage, port);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (\n global.addEventListener &&\n isCallable(global.postMessage) &&\n !global.importScripts &&\n location && location.protocol !== 'file:' &&\n !fails(post)\n ) {\n defer = post;\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in createElement('script')) {\n defer = function (id) {\n html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(runner(id), 0);\n };\n }\n}\n\nmodule.exports = {\n set: set,\n clear: clear\n};\n\n\n/***/ }),\n/* 158 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar userAgent = __webpack_require__(85);\n\nmodule.exports = /(?:ipad|iphone|ipod).*applewebkit/i.test(userAgent);\n\n\n/***/ }),\n/* 159 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar NativePromiseConstructor = __webpack_require__(55);\nvar checkCorrectnessOfIteration = __webpack_require__(160);\nvar FORCED_PROMISE_CONSTRUCTOR = __webpack_require__(72).CONSTRUCTOR;\n\nmodule.exports = FORCED_PROMISE_CONSTRUCTOR || !checkCorrectnessOfIteration(function (iterable) {\n NativePromiseConstructor.all(iterable).then(undefined, function () { /* empty */ });\n});\n\n\n/***/ }),\n/* 160 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar wellKnownSymbol = __webpack_require__(8);\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function () {\n return { done: !!called++ };\n },\n 'return': function () {\n SAFE_CLOSING = true;\n }\n };\n iteratorWithReturn[ITERATOR] = function () {\n return this;\n };\n // eslint-disable-next-line es-x/no-array-from, no-throw-literal -- required for testing\n Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n object[ITERATOR] = function () {\n return {\n next: function () {\n return { done: ITERATION_SUPPORT = true };\n }\n };\n };\n exec(object);\n } catch (error) { /* empty */ }\n return ITERATION_SUPPORT;\n};\n\n\n/***/ }),\n/* 161 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar anObject = __webpack_require__(21);\nvar isObject = __webpack_require__(17);\nvar newPromiseCapability = __webpack_require__(44);\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/* 162 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = isUndefined;\n// Is a given variable undefined?\nfunction isUndefined(obj) {\n return obj === void 0;\n}\n\n\n/***/ }),\n/* 163 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = isBoolean;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__setup_js__ = __webpack_require__(3);\n\n\n// Is a given value a boolean?\nfunction isBoolean(obj) {\n return obj === true || obj === false || __WEBPACK_IMPORTED_MODULE_0__setup_js__[\"t\" /* toString */].call(obj) === '[object Boolean]';\n}\n\n\n/***/ }),\n/* 164 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__tagTester_js__ = __webpack_require__(15);\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__tagTester_js__[\"a\" /* default */])('Number'));\n\n\n/***/ }),\n/* 165 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__tagTester_js__ = __webpack_require__(15);\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__tagTester_js__[\"a\" /* default */])('Symbol'));\n\n\n/***/ }),\n/* 166 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__tagTester_js__ = __webpack_require__(15);\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__tagTester_js__[\"a\" /* default */])('ArrayBuffer'));\n\n\n/***/ }),\n/* 167 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = isNaN;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__setup_js__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__isNumber_js__ = __webpack_require__(164);\n\n\n\n// Is the given value `NaN`?\nfunction isNaN(obj) {\n return Object(__WEBPACK_IMPORTED_MODULE_1__isNumber_js__[\"a\" /* default */])(obj) && Object(__WEBPACK_IMPORTED_MODULE_0__setup_js__[\"g\" /* _isNaN */])(obj);\n}\n\n\n/***/ }),\n/* 168 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__setup_js__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__isDataView_js__ = __webpack_require__(122);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constant_js__ = __webpack_require__(169);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__isBufferLike_js__ = __webpack_require__(287);\n\n\n\n\n\n// Is a given value a typed array?\nvar typedArrayPattern = /\\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\\]/;\nfunction isTypedArray(obj) {\n // `ArrayBuffer.isView` is the most future-proof, so use it when available.\n // Otherwise, fall back on the above regular expression.\n return __WEBPACK_IMPORTED_MODULE_0__setup_js__[\"l\" /* nativeIsView */] ? (Object(__WEBPACK_IMPORTED_MODULE_0__setup_js__[\"l\" /* nativeIsView */])(obj) && !Object(__WEBPACK_IMPORTED_MODULE_1__isDataView_js__[\"a\" /* default */])(obj)) :\n Object(__WEBPACK_IMPORTED_MODULE_3__isBufferLike_js__[\"a\" /* default */])(obj) && typedArrayPattern.test(__WEBPACK_IMPORTED_MODULE_0__setup_js__[\"t\" /* toString */].call(obj));\n}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (__WEBPACK_IMPORTED_MODULE_0__setup_js__[\"r\" /* supportsArrayBuffer */] ? isTypedArray : Object(__WEBPACK_IMPORTED_MODULE_2__constant_js__[\"a\" /* default */])(false));\n\n\n/***/ }),\n/* 169 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = constant;\n// Predicate-generating function. Often useful outside of Underscore.\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\n\n/***/ }),\n/* 170 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = createSizePropertyCheck;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__setup_js__ = __webpack_require__(3);\n\n\n// Common internal logic for `isArrayLike` and `isBufferLike`.\nfunction createSizePropertyCheck(getSizeProperty) {\n return function(collection) {\n var sizeProperty = getSizeProperty(collection);\n return typeof sizeProperty == 'number' && sizeProperty >= 0 && sizeProperty <= __WEBPACK_IMPORTED_MODULE_0__setup_js__[\"b\" /* MAX_ARRAY_INDEX */];\n }\n}\n\n\n/***/ }),\n/* 171 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = shallowProperty;\n// Internal helper to generate a function to obtain property `key` from `obj`.\nfunction shallowProperty(key) {\n return function(obj) {\n return obj == null ? void 0 : obj[key];\n };\n}\n\n\n/***/ }),\n/* 172 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = collectNonEnumProps;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__setup_js__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__isFunction_js__ = __webpack_require__(26);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__has_js__ = __webpack_require__(37);\n\n\n\n\n// Internal helper to create a simple lookup structure.\n// `collectNonEnumProps` used to depend on `_.contains`, but this led to\n// circular imports. `emulatedSet` is a one-off solution that only works for\n// arrays of strings.\nfunction emulatedSet(keys) {\n var hash = {};\n for (var l = keys.length, i = 0; i < l; ++i) hash[keys[i]] = true;\n return {\n contains: function(key) { return hash[key]; },\n push: function(key) {\n hash[key] = true;\n return keys.push(key);\n }\n };\n}\n\n// Internal helper. Checks `keys` for the presence of keys in IE < 9 that won't\n// be iterated by `for key in ...` and thus missed. Extends `keys` in place if\n// needed.\nfunction collectNonEnumProps(obj, keys) {\n keys = emulatedSet(keys);\n var nonEnumIdx = __WEBPACK_IMPORTED_MODULE_0__setup_js__[\"n\" /* nonEnumerableProps */].length;\n var constructor = obj.constructor;\n var proto = Object(__WEBPACK_IMPORTED_MODULE_1__isFunction_js__[\"a\" /* default */])(constructor) && constructor.prototype || __WEBPACK_IMPORTED_MODULE_0__setup_js__[\"c\" /* ObjProto */];\n\n // Constructor is a special case.\n var prop = 'constructor';\n if (Object(__WEBPACK_IMPORTED_MODULE_2__has_js__[\"a\" /* default */])(obj, prop) && !keys.contains(prop)) keys.push(prop);\n\n while (nonEnumIdx--) {\n prop = __WEBPACK_IMPORTED_MODULE_0__setup_js__[\"n\" /* nonEnumerableProps */][nonEnumIdx];\n if (prop in obj && obj[prop] !== proto[prop] && !keys.contains(prop)) {\n keys.push(prop);\n }\n }\n}\n\n\n/***/ }),\n/* 173 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = isMatch;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__keys_js__ = __webpack_require__(12);\n\n\n// Returns whether an object has a given set of `key:value` pairs.\nfunction isMatch(object, attrs) {\n var _keys = Object(__WEBPACK_IMPORTED_MODULE_0__keys_js__[\"a\" /* default */])(attrs), length = _keys.length;\n if (object == null) return !length;\n var obj = Object(object);\n for (var i = 0; i < length; i++) {\n var key = _keys[i];\n if (attrs[key] !== obj[key] || !(key in obj)) return false;\n }\n return true;\n}\n\n\n/***/ }),\n/* 174 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = invert;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__keys_js__ = __webpack_require__(12);\n\n\n// Invert the keys and values of an object. The values must be serializable.\nfunction invert(obj) {\n var result = {};\n var _keys = Object(__WEBPACK_IMPORTED_MODULE_0__keys_js__[\"a\" /* default */])(obj);\n for (var i = 0, length = _keys.length; i < length; i++) {\n result[obj[_keys[i]]] = _keys[i];\n }\n return result;\n}\n\n\n/***/ }),\n/* 175 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = functions;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__isFunction_js__ = __webpack_require__(26);\n\n\n// Return a sorted list of the function names available on the object.\nfunction functions(obj) {\n var names = [];\n for (var key in obj) {\n if (Object(__WEBPACK_IMPORTED_MODULE_0__isFunction_js__[\"a\" /* default */])(obj[key])) names.push(key);\n }\n return names.sort();\n}\n\n\n/***/ }),\n/* 176 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__createAssigner_js__ = __webpack_require__(126);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__allKeys_js__ = __webpack_require__(75);\n\n\n\n// Extend a given object with all the properties in passed-in object(s).\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__createAssigner_js__[\"a\" /* default */])(__WEBPACK_IMPORTED_MODULE_1__allKeys_js__[\"a\" /* default */]));\n\n\n/***/ }),\n/* 177 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__createAssigner_js__ = __webpack_require__(126);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__allKeys_js__ = __webpack_require__(75);\n\n\n\n// Fill in a given object with default properties.\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__createAssigner_js__[\"a\" /* default */])(__WEBPACK_IMPORTED_MODULE_1__allKeys_js__[\"a\" /* default */], true));\n\n\n/***/ }),\n/* 178 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = baseCreate;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__isObject_js__ = __webpack_require__(45);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__setup_js__ = __webpack_require__(3);\n\n\n\n// Create a naked function reference for surrogate-prototype-swapping.\nfunction ctor() {\n return function(){};\n}\n\n// An internal function for creating a new object that inherits from another.\nfunction baseCreate(prototype) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_0__isObject_js__[\"a\" /* default */])(prototype)) return {};\n if (__WEBPACK_IMPORTED_MODULE_1__setup_js__[\"j\" /* nativeCreate */]) return Object(__WEBPACK_IMPORTED_MODULE_1__setup_js__[\"j\" /* nativeCreate */])(prototype);\n var Ctor = ctor();\n Ctor.prototype = prototype;\n var result = new Ctor;\n Ctor.prototype = null;\n return result;\n}\n\n\n/***/ }),\n/* 179 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = clone;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__isObject_js__ = __webpack_require__(45);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__isArray_js__ = __webpack_require__(46);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__extend_js__ = __webpack_require__(176);\n\n\n\n\n// Create a (shallow-cloned) duplicate of an object.\nfunction clone(obj) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_0__isObject_js__[\"a\" /* default */])(obj)) return obj;\n return Object(__WEBPACK_IMPORTED_MODULE_1__isArray_js__[\"a\" /* default */])(obj) ? obj.slice() : Object(__WEBPACK_IMPORTED_MODULE_2__extend_js__[\"a\" /* default */])({}, obj);\n}\n\n\n/***/ }),\n/* 180 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = get;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__toPath_js__ = __webpack_require__(76);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__deepGet_js__ = __webpack_require__(128);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__isUndefined_js__ = __webpack_require__(162);\n\n\n\n\n// Get the value of the (deep) property on `path` from `object`.\n// If any property in `path` does not exist or if the value is\n// `undefined`, return `defaultValue` instead.\n// The `path` is normalized through `_.toPath`.\nfunction get(object, path, defaultValue) {\n var value = Object(__WEBPACK_IMPORTED_MODULE_1__deepGet_js__[\"a\" /* default */])(object, Object(__WEBPACK_IMPORTED_MODULE_0__toPath_js__[\"a\" /* default */])(path));\n return Object(__WEBPACK_IMPORTED_MODULE_2__isUndefined_js__[\"a\" /* default */])(value) ? defaultValue : value;\n}\n\n\n/***/ }),\n/* 181 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = toPath;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__underscore_js__ = __webpack_require__(23);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__isArray_js__ = __webpack_require__(46);\n\n\n\n// Normalize a (deep) property `path` to array.\n// Like `_.iteratee`, this function can be customized.\nfunction toPath(path) {\n return Object(__WEBPACK_IMPORTED_MODULE_1__isArray_js__[\"a\" /* default */])(path) ? path : [path];\n}\n__WEBPACK_IMPORTED_MODULE_0__underscore_js__[\"a\" /* default */].toPath = toPath;\n\n\n/***/ }),\n/* 182 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = baseIteratee;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__identity_js__ = __webpack_require__(129);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__isFunction_js__ = __webpack_require__(26);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__isObject_js__ = __webpack_require__(45);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__isArray_js__ = __webpack_require__(46);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__matcher_js__ = __webpack_require__(96);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__property_js__ = __webpack_require__(130);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__optimizeCb_js__ = __webpack_require__(77);\n\n\n\n\n\n\n\n\n// An internal function to generate callbacks that can be applied to each\n// element in a collection, returning the desired result — either `_.identity`,\n// an arbitrary callback, a property matcher, or a property accessor.\nfunction baseIteratee(value, context, argCount) {\n if (value == null) return __WEBPACK_IMPORTED_MODULE_0__identity_js__[\"a\" /* default */];\n if (Object(__WEBPACK_IMPORTED_MODULE_1__isFunction_js__[\"a\" /* default */])(value)) return Object(__WEBPACK_IMPORTED_MODULE_6__optimizeCb_js__[\"a\" /* default */])(value, context, argCount);\n if (Object(__WEBPACK_IMPORTED_MODULE_2__isObject_js__[\"a\" /* default */])(value) && !Object(__WEBPACK_IMPORTED_MODULE_3__isArray_js__[\"a\" /* default */])(value)) return Object(__WEBPACK_IMPORTED_MODULE_4__matcher_js__[\"a\" /* default */])(value);\n return Object(__WEBPACK_IMPORTED_MODULE_5__property_js__[\"a\" /* default */])(value);\n}\n\n\n/***/ }),\n/* 183 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = iteratee;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__underscore_js__ = __webpack_require__(23);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__baseIteratee_js__ = __webpack_require__(182);\n\n\n\n// External wrapper for our callback generator. Users may customize\n// `_.iteratee` if they want additional predicate/iteratee shorthand styles.\n// This abstraction hides the internal-only `argCount` argument.\nfunction iteratee(value, context) {\n return Object(__WEBPACK_IMPORTED_MODULE_1__baseIteratee_js__[\"a\" /* default */])(value, context, Infinity);\n}\n__WEBPACK_IMPORTED_MODULE_0__underscore_js__[\"a\" /* default */].iteratee = iteratee;\n\n\n/***/ }),\n/* 184 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = noop;\n// Predicate-generating function. Often useful outside of Underscore.\nfunction noop(){}\n\n\n/***/ }),\n/* 185 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = random;\n// Return a random integer between `min` and `max` (inclusive).\nfunction random(min, max) {\n if (max == null) {\n max = min;\n min = 0;\n }\n return min + Math.floor(Math.random() * (max - min + 1));\n}\n\n\n/***/ }),\n/* 186 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = createEscaper;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__keys_js__ = __webpack_require__(12);\n\n\n// Internal helper to generate functions for escaping and unescaping strings\n// to/from HTML interpolation.\nfunction createEscaper(map) {\n var escaper = function(match) {\n return map[match];\n };\n // Regexes for identifying a key that needs to be escaped.\n var source = '(?:' + Object(__WEBPACK_IMPORTED_MODULE_0__keys_js__[\"a\" /* default */])(map).join('|') + ')';\n var testRegexp = RegExp(source);\n var replaceRegexp = RegExp(source, 'g');\n return function(string) {\n string = string == null ? '' : '' + string;\n return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string;\n };\n}\n\n\n/***/ }),\n/* 187 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n// Internal list of HTML entities for escaping.\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '`': '`'\n});\n\n\n/***/ }),\n/* 188 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__underscore_js__ = __webpack_require__(23);\n\n\n// By default, Underscore uses ERB-style template delimiters. Change the\n// following template settings to use alternative delimiters.\n/* harmony default export */ __webpack_exports__[\"a\"] = (__WEBPACK_IMPORTED_MODULE_0__underscore_js__[\"a\" /* default */].templateSettings = {\n evaluate: /<%([\\s\\S]+?)%>/g,\n interpolate: /<%=([\\s\\S]+?)%>/g,\n escape: /<%-([\\s\\S]+?)%>/g\n});\n\n\n/***/ }),\n/* 189 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = executeBound;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__baseCreate_js__ = __webpack_require__(178);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__isObject_js__ = __webpack_require__(45);\n\n\n\n// Internal function to execute `sourceFunc` bound to `context` with optional\n// `args`. Determines whether to execute a function as a constructor or as a\n// normal function.\nfunction executeBound(sourceFunc, boundFunc, context, callingContext, args) {\n if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args);\n var self = Object(__WEBPACK_IMPORTED_MODULE_0__baseCreate_js__[\"a\" /* default */])(sourceFunc.prototype);\n var result = sourceFunc.apply(self, args);\n if (Object(__WEBPACK_IMPORTED_MODULE_1__isObject_js__[\"a\" /* default */])(result)) return result;\n return self;\n}\n\n\n/***/ }),\n/* 190 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__restArguments_js__ = __webpack_require__(22);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__isFunction_js__ = __webpack_require__(26);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__executeBound_js__ = __webpack_require__(189);\n\n\n\n\n// Create a function bound to a given object (assigning `this`, and arguments,\n// optionally).\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__restArguments_js__[\"a\" /* default */])(function(func, context, args) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_1__isFunction_js__[\"a\" /* default */])(func)) throw new TypeError('Bind must be called on a function');\n var bound = Object(__WEBPACK_IMPORTED_MODULE_0__restArguments_js__[\"a\" /* default */])(function(callArgs) {\n return Object(__WEBPACK_IMPORTED_MODULE_2__executeBound_js__[\"a\" /* default */])(func, bound, context, this, args.concat(callArgs));\n });\n return bound;\n}));\n\n\n/***/ }),\n/* 191 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__restArguments_js__ = __webpack_require__(22);\n\n\n// Delays a function for the given number of milliseconds, and then calls\n// it with the arguments supplied.\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__restArguments_js__[\"a\" /* default */])(function(func, wait, args) {\n return setTimeout(function() {\n return func.apply(null, args);\n }, wait);\n}));\n\n\n/***/ }),\n/* 192 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = before;\n// Returns a function that will only be executed up to (but not including) the\n// Nth call.\nfunction before(times, func) {\n var memo;\n return function() {\n if (--times > 0) {\n memo = func.apply(this, arguments);\n }\n if (times <= 1) func = null;\n return memo;\n };\n}\n\n\n/***/ }),\n/* 193 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = findKey;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__cb_js__ = __webpack_require__(18);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__keys_js__ = __webpack_require__(12);\n\n\n\n// Returns the first key on an object that passes a truth test.\nfunction findKey(obj, predicate, context) {\n predicate = Object(__WEBPACK_IMPORTED_MODULE_0__cb_js__[\"a\" /* default */])(predicate, context);\n var _keys = Object(__WEBPACK_IMPORTED_MODULE_1__keys_js__[\"a\" /* default */])(obj), key;\n for (var i = 0, length = _keys.length; i < length; i++) {\n key = _keys[i];\n if (predicate(obj[key], key, obj)) return key;\n }\n}\n\n\n/***/ }),\n/* 194 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = createPredicateIndexFinder;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__cb_js__ = __webpack_require__(18);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__getLength_js__ = __webpack_require__(27);\n\n\n\n// Internal function to generate `_.findIndex` and `_.findLastIndex`.\nfunction createPredicateIndexFinder(dir) {\n return function(array, predicate, context) {\n predicate = Object(__WEBPACK_IMPORTED_MODULE_0__cb_js__[\"a\" /* default */])(predicate, context);\n var length = Object(__WEBPACK_IMPORTED_MODULE_1__getLength_js__[\"a\" /* default */])(array);\n var index = dir > 0 ? 0 : length - 1;\n for (; index >= 0 && index < length; index += dir) {\n if (predicate(array[index], index, array)) return index;\n }\n return -1;\n };\n}\n\n\n/***/ }),\n/* 195 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__createPredicateIndexFinder_js__ = __webpack_require__(194);\n\n\n// Returns the last index on an array-like that passes a truth test.\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__createPredicateIndexFinder_js__[\"a\" /* default */])(-1));\n\n\n/***/ }),\n/* 196 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = sortedIndex;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__cb_js__ = __webpack_require__(18);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__getLength_js__ = __webpack_require__(27);\n\n\n\n// Use a comparator function to figure out the smallest index at which\n// an object should be inserted so as to maintain order. Uses binary search.\nfunction sortedIndex(array, obj, iteratee, context) {\n iteratee = Object(__WEBPACK_IMPORTED_MODULE_0__cb_js__[\"a\" /* default */])(iteratee, context, 1);\n var value = iteratee(obj);\n var low = 0, high = Object(__WEBPACK_IMPORTED_MODULE_1__getLength_js__[\"a\" /* default */])(array);\n while (low < high) {\n var mid = Math.floor((low + high) / 2);\n if (iteratee(array[mid]) < value) low = mid + 1; else high = mid;\n }\n return low;\n}\n\n\n/***/ }),\n/* 197 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__sortedIndex_js__ = __webpack_require__(196);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__findIndex_js__ = __webpack_require__(133);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__createIndexFinder_js__ = __webpack_require__(198);\n\n\n\n\n// Return the position of the first occurrence of an item in an array,\n// or -1 if the item is not included in the array.\n// If the array is large and already in sort order, pass `true`\n// for **isSorted** to use binary search.\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_2__createIndexFinder_js__[\"a\" /* default */])(1, __WEBPACK_IMPORTED_MODULE_1__findIndex_js__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_0__sortedIndex_js__[\"a\" /* default */]));\n\n\n/***/ }),\n/* 198 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = createIndexFinder;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__getLength_js__ = __webpack_require__(27);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__setup_js__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__isNaN_js__ = __webpack_require__(167);\n\n\n\n\n// Internal function to generate the `_.indexOf` and `_.lastIndexOf` functions.\nfunction createIndexFinder(dir, predicateFind, sortedIndex) {\n return function(array, item, idx) {\n var i = 0, length = Object(__WEBPACK_IMPORTED_MODULE_0__getLength_js__[\"a\" /* default */])(array);\n if (typeof idx == 'number') {\n if (dir > 0) {\n i = idx >= 0 ? idx : Math.max(idx + length, i);\n } else {\n length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1;\n }\n } else if (sortedIndex && idx && length) {\n idx = sortedIndex(array, item);\n return array[idx] === item ? idx : -1;\n }\n if (item !== item) {\n idx = predicateFind(__WEBPACK_IMPORTED_MODULE_1__setup_js__[\"q\" /* slice */].call(array, i, length), __WEBPACK_IMPORTED_MODULE_2__isNaN_js__[\"a\" /* default */]);\n return idx >= 0 ? idx + i : -1;\n }\n for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) {\n if (array[idx] === item) return idx;\n }\n return -1;\n };\n}\n\n\n/***/ }),\n/* 199 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = find;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__isArrayLike_js__ = __webpack_require__(24);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__findIndex_js__ = __webpack_require__(133);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__findKey_js__ = __webpack_require__(193);\n\n\n\n\n// Return the first value which passes a truth test.\nfunction find(obj, predicate, context) {\n var keyFinder = Object(__WEBPACK_IMPORTED_MODULE_0__isArrayLike_js__[\"a\" /* default */])(obj) ? __WEBPACK_IMPORTED_MODULE_1__findIndex_js__[\"a\" /* default */] : __WEBPACK_IMPORTED_MODULE_2__findKey_js__[\"a\" /* default */];\n var key = keyFinder(obj, predicate, context);\n if (key !== void 0 && key !== -1) return obj[key];\n}\n\n\n/***/ }),\n/* 200 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = createReduce;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__isArrayLike_js__ = __webpack_require__(24);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__keys_js__ = __webpack_require__(12);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__optimizeCb_js__ = __webpack_require__(77);\n\n\n\n\n// Internal helper to create a reducing function, iterating left or right.\nfunction createReduce(dir) {\n // Wrap code that reassigns argument variables in a separate function than\n // the one that accesses `arguments.length` to avoid a perf hit. (#1991)\n var reducer = function(obj, iteratee, memo, initial) {\n var _keys = !Object(__WEBPACK_IMPORTED_MODULE_0__isArrayLike_js__[\"a\" /* default */])(obj) && Object(__WEBPACK_IMPORTED_MODULE_1__keys_js__[\"a\" /* default */])(obj),\n length = (_keys || obj).length,\n index = dir > 0 ? 0 : length - 1;\n if (!initial) {\n memo = obj[_keys ? _keys[index] : index];\n index += dir;\n }\n for (; index >= 0 && index < length; index += dir) {\n var currentKey = _keys ? _keys[index] : index;\n memo = iteratee(memo, obj[currentKey], currentKey, obj);\n }\n return memo;\n };\n\n return function(obj, iteratee, memo, context) {\n var initial = arguments.length >= 3;\n return reducer(obj, Object(__WEBPACK_IMPORTED_MODULE_2__optimizeCb_js__[\"a\" /* default */])(iteratee, context, 4), memo, initial);\n };\n}\n\n\n/***/ }),\n/* 201 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = max;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__isArrayLike_js__ = __webpack_require__(24);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__values_js__ = __webpack_require__(56);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__cb_js__ = __webpack_require__(18);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__each_js__ = __webpack_require__(47);\n\n\n\n\n\n// Return the maximum element (or element-based computation).\nfunction max(obj, iteratee, context) {\n var result = -Infinity, lastComputed = -Infinity,\n value, computed;\n if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) {\n obj = Object(__WEBPACK_IMPORTED_MODULE_0__isArrayLike_js__[\"a\" /* default */])(obj) ? obj : Object(__WEBPACK_IMPORTED_MODULE_1__values_js__[\"a\" /* default */])(obj);\n for (var i = 0, length = obj.length; i < length; i++) {\n value = obj[i];\n if (value != null && value > result) {\n result = value;\n }\n }\n } else {\n iteratee = Object(__WEBPACK_IMPORTED_MODULE_2__cb_js__[\"a\" /* default */])(iteratee, context);\n Object(__WEBPACK_IMPORTED_MODULE_3__each_js__[\"a\" /* default */])(obj, function(v, index, list) {\n computed = iteratee(v, index, list);\n if (computed > lastComputed || computed === -Infinity && result === -Infinity) {\n result = v;\n lastComputed = computed;\n }\n });\n }\n return result;\n}\n\n\n/***/ }),\n/* 202 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = sample;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__isArrayLike_js__ = __webpack_require__(24);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__clone_js__ = __webpack_require__(179);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__values_js__ = __webpack_require__(56);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__getLength_js__ = __webpack_require__(27);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__random_js__ = __webpack_require__(185);\n\n\n\n\n\n\n// Sample **n** random values from a collection using the modern version of the\n// [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher–Yates_shuffle).\n// If **n** is not specified, returns a single random element.\n// The internal `guard` argument allows it to work with `_.map`.\nfunction sample(obj, n, guard) {\n if (n == null || guard) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_0__isArrayLike_js__[\"a\" /* default */])(obj)) obj = Object(__WEBPACK_IMPORTED_MODULE_2__values_js__[\"a\" /* default */])(obj);\n return obj[Object(__WEBPACK_IMPORTED_MODULE_4__random_js__[\"a\" /* default */])(obj.length - 1)];\n }\n var sample = Object(__WEBPACK_IMPORTED_MODULE_0__isArrayLike_js__[\"a\" /* default */])(obj) ? Object(__WEBPACK_IMPORTED_MODULE_1__clone_js__[\"a\" /* default */])(obj) : Object(__WEBPACK_IMPORTED_MODULE_2__values_js__[\"a\" /* default */])(obj);\n var length = Object(__WEBPACK_IMPORTED_MODULE_3__getLength_js__[\"a\" /* default */])(sample);\n n = Math.max(Math.min(n, length), 0);\n var last = length - 1;\n for (var index = 0; index < n; index++) {\n var rand = Object(__WEBPACK_IMPORTED_MODULE_4__random_js__[\"a\" /* default */])(index, last);\n var temp = sample[index];\n sample[index] = sample[rand];\n sample[rand] = temp;\n }\n return sample.slice(0, n);\n}\n\n\n/***/ }),\n/* 203 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__restArguments_js__ = __webpack_require__(22);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__isFunction_js__ = __webpack_require__(26);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__optimizeCb_js__ = __webpack_require__(77);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__allKeys_js__ = __webpack_require__(75);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__keyInObj_js__ = __webpack_require__(336);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__flatten_js__ = __webpack_require__(57);\n\n\n\n\n\n\n\n// Return a copy of the object only containing the allowed properties.\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__restArguments_js__[\"a\" /* default */])(function(obj, keys) {\n var result = {}, iteratee = keys[0];\n if (obj == null) return result;\n if (Object(__WEBPACK_IMPORTED_MODULE_1__isFunction_js__[\"a\" /* default */])(iteratee)) {\n if (keys.length > 1) iteratee = Object(__WEBPACK_IMPORTED_MODULE_2__optimizeCb_js__[\"a\" /* default */])(iteratee, keys[1]);\n keys = Object(__WEBPACK_IMPORTED_MODULE_3__allKeys_js__[\"a\" /* default */])(obj);\n } else {\n iteratee = __WEBPACK_IMPORTED_MODULE_4__keyInObj_js__[\"a\" /* default */];\n keys = Object(__WEBPACK_IMPORTED_MODULE_5__flatten_js__[\"a\" /* default */])(keys, false, false);\n obj = Object(obj);\n }\n for (var i = 0, length = keys.length; i < length; i++) {\n var key = keys[i];\n var value = obj[key];\n if (iteratee(value, key, obj)) result[key] = value;\n }\n return result;\n}));\n\n\n/***/ }),\n/* 204 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = initial;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__setup_js__ = __webpack_require__(3);\n\n\n// Returns everything but the last entry of the array. Especially useful on\n// the arguments object. Passing **n** will return all the values in\n// the array, excluding the last N.\nfunction initial(array, n, guard) {\n return __WEBPACK_IMPORTED_MODULE_0__setup_js__[\"q\" /* slice */].call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n)));\n}\n\n\n/***/ }),\n/* 205 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = rest;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__setup_js__ = __webpack_require__(3);\n\n\n// Returns everything but the first entry of the `array`. Especially useful on\n// the `arguments` object. Passing an **n** will return the rest N values in the\n// `array`.\nfunction rest(array, n, guard) {\n return __WEBPACK_IMPORTED_MODULE_0__setup_js__[\"q\" /* slice */].call(array, n == null || guard ? 1 : n);\n}\n\n\n/***/ }),\n/* 206 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__restArguments_js__ = __webpack_require__(22);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__flatten_js__ = __webpack_require__(57);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__filter_js__ = __webpack_require__(78);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__contains_js__ = __webpack_require__(79);\n\n\n\n\n\n// Take the difference between one array and a number of other arrays.\n// Only the elements present in just the first array will remain.\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__restArguments_js__[\"a\" /* default */])(function(array, rest) {\n rest = Object(__WEBPACK_IMPORTED_MODULE_1__flatten_js__[\"a\" /* default */])(rest, true, true);\n return Object(__WEBPACK_IMPORTED_MODULE_2__filter_js__[\"a\" /* default */])(array, function(value){\n return !Object(__WEBPACK_IMPORTED_MODULE_3__contains_js__[\"a\" /* default */])(rest, value);\n });\n}));\n\n\n/***/ }),\n/* 207 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = uniq;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__isBoolean_js__ = __webpack_require__(163);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__cb_js__ = __webpack_require__(18);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__getLength_js__ = __webpack_require__(27);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__contains_js__ = __webpack_require__(79);\n\n\n\n\n\n// Produce a duplicate-free version of the array. If the array has already\n// been sorted, you have the option of using a faster algorithm.\n// The faster algorithm will not work with an iteratee if the iteratee\n// is not a one-to-one function, so providing an iteratee will disable\n// the faster algorithm.\nfunction uniq(array, isSorted, iteratee, context) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_0__isBoolean_js__[\"a\" /* default */])(isSorted)) {\n context = iteratee;\n iteratee = isSorted;\n isSorted = false;\n }\n if (iteratee != null) iteratee = Object(__WEBPACK_IMPORTED_MODULE_1__cb_js__[\"a\" /* default */])(iteratee, context);\n var result = [];\n var seen = [];\n for (var i = 0, length = Object(__WEBPACK_IMPORTED_MODULE_2__getLength_js__[\"a\" /* default */])(array); i < length; i++) {\n var value = array[i],\n computed = iteratee ? iteratee(value, i, array) : value;\n if (isSorted && !iteratee) {\n if (!i || seen !== computed) result.push(value);\n seen = computed;\n } else if (iteratee) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_3__contains_js__[\"a\" /* default */])(seen, computed)) {\n seen.push(computed);\n result.push(value);\n }\n } else if (!Object(__WEBPACK_IMPORTED_MODULE_3__contains_js__[\"a\" /* default */])(result, value)) {\n result.push(value);\n }\n }\n return result;\n}\n\n\n/***/ }),\n/* 208 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = unzip;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__max_js__ = __webpack_require__(201);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__getLength_js__ = __webpack_require__(27);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__pluck_js__ = __webpack_require__(134);\n\n\n\n\n// Complement of zip. Unzip accepts an array of arrays and groups\n// each array's elements on shared indices.\nfunction unzip(array) {\n var length = array && Object(__WEBPACK_IMPORTED_MODULE_0__max_js__[\"a\" /* default */])(array, __WEBPACK_IMPORTED_MODULE_1__getLength_js__[\"a\" /* default */]).length || 0;\n var result = Array(length);\n\n for (var index = 0; index < length; index++) {\n result[index] = Object(__WEBPACK_IMPORTED_MODULE_2__pluck_js__[\"a\" /* default */])(array, index);\n }\n return result;\n}\n\n\n/***/ }),\n/* 209 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = chainResult;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__underscore_js__ = __webpack_require__(23);\n\n\n// Helper function to continue chaining intermediate results.\nfunction chainResult(instance, obj) {\n return instance._chain ? Object(__WEBPACK_IMPORTED_MODULE_0__underscore_js__[\"a\" /* default */])(obj).chain() : obj;\n}\n\n\n/***/ }),\n/* 210 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(0);\nvar fails = __webpack_require__(4);\nvar isArray = __webpack_require__(80);\nvar isObject = __webpack_require__(17);\nvar toObject = __webpack_require__(35);\nvar lengthOfArrayLike = __webpack_require__(42);\nvar doesNotExceedSafeInteger = __webpack_require__(354);\nvar createProperty = __webpack_require__(99);\nvar arraySpeciesCreate = __webpack_require__(211);\nvar arrayMethodHasSpeciesSupport = __webpack_require__(100);\nvar wellKnownSymbol = __webpack_require__(8);\nvar V8_VERSION = __webpack_require__(84);\n\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\n\n// We can't use this feature detection in V8 since it causes\n// deoptimization and serious performance degradation\n// https://github.com/zloirock/core-js/issues/679\nvar IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () {\n var array = [];\n array[IS_CONCAT_SPREADABLE] = false;\n return array.concat()[0] !== array;\n});\n\nvar SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat');\n\nvar isConcatSpreadable = function (O) {\n if (!isObject(O)) return false;\n var spreadable = O[IS_CONCAT_SPREADABLE];\n return spreadable !== undefined ? !!spreadable : isArray(O);\n};\n\nvar FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT;\n\n// `Array.prototype.concat` method\n// https://tc39.es/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\n$({ target: 'Array', proto: true, arity: 1, forced: FORCED }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n concat: function concat(arg) {\n var O = toObject(this);\n var A = arraySpeciesCreate(O, 0);\n var n = 0;\n var i, k, length, len, E;\n for (i = -1, length = arguments.length; i < length; i++) {\n E = i === -1 ? O : arguments[i];\n if (isConcatSpreadable(E)) {\n len = lengthOfArrayLike(E);\n doesNotExceedSafeInteger(n + len);\n for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n } else {\n doesNotExceedSafeInteger(n + 1);\n createProperty(A, n++, E);\n }\n }\n A.length = n;\n return A;\n }\n});\n\n\n/***/ }),\n/* 211 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar arraySpeciesConstructor = __webpack_require__(355);\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length);\n};\n\n\n/***/ }),\n/* 212 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(360);\n\n/***/ }),\n/* 213 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(0);\nvar getBuiltIn = __webpack_require__(16);\nvar apply = __webpack_require__(62);\nvar call = __webpack_require__(11);\nvar uncurryThis = __webpack_require__(6);\nvar fails = __webpack_require__(4);\nvar isArray = __webpack_require__(80);\nvar isCallable = __webpack_require__(7);\nvar isObject = __webpack_require__(17);\nvar isSymbol = __webpack_require__(83);\nvar arraySlice = __webpack_require__(94);\nvar NATIVE_SYMBOL = __webpack_require__(49);\n\nvar $stringify = getBuiltIn('JSON', 'stringify');\nvar exec = uncurryThis(/./.exec);\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar replace = uncurryThis(''.replace);\nvar numberToString = uncurryThis(1.0.toString);\n\nvar tester = /[\\uD800-\\uDFFF]/g;\nvar low = /^[\\uD800-\\uDBFF]$/;\nvar hi = /^[\\uDC00-\\uDFFF]$/;\n\nvar WRONG_SYMBOLS_CONVERSION = !NATIVE_SYMBOL || fails(function () {\n var symbol = getBuiltIn('Symbol')();\n // MS Edge converts symbol values to JSON as {}\n return $stringify([symbol]) != '[null]'\n // WebKit converts symbol values to JSON as null\n || $stringify({ a: symbol }) != '{}'\n // V8 throws on boxed symbols\n || $stringify(Object(symbol)) != '{}';\n});\n\n// https://github.com/tc39/proposal-well-formed-stringify\nvar ILL_FORMED_UNICODE = fails(function () {\n return $stringify('\\uDF06\\uD834') !== '\"\\\\udf06\\\\ud834\"'\n || $stringify('\\uDEAD') !== '\"\\\\udead\"';\n});\n\nvar stringifyWithSymbolsFix = function (it, replacer) {\n var args = arraySlice(arguments);\n var $replacer = replacer;\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (isCallable($replacer)) value = call($replacer, this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return apply($stringify, null, args);\n};\n\nvar fixIllFormed = function (match, offset, string) {\n var prev = charAt(string, offset - 1);\n var next = charAt(string, offset + 1);\n if ((exec(low, match) && !exec(hi, next)) || (exec(hi, match) && !exec(low, prev))) {\n return '\\\\u' + numberToString(charCodeAt(match, 0), 16);\n } return match;\n};\n\nif ($stringify) {\n // `JSON.stringify` method\n // https://tc39.es/ecma262/#sec-json.stringify\n $({ target: 'JSON', stat: true, arity: 3, forced: WRONG_SYMBOLS_CONVERSION || ILL_FORMED_UNICODE }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n stringify: function stringify(it, replacer, space) {\n var args = arraySlice(arguments);\n var result = apply(WRONG_SYMBOLS_CONVERSION ? stringifyWithSymbolsFix : $stringify, null, args);\n return ILL_FORMED_UNICODE && typeof result == 'string' ? replace(result, tester, fixIllFormed) : result;\n }\n });\n}\n\n\n/***/ }),\n/* 214 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar rng = __webpack_require__(373);\nvar bytesToUuid = __webpack_require__(374);\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/* 215 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(216);\n\n/***/ }),\n/* 216 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(377);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 217 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = '4.15.1';\n\n/***/ }),\n/* 218 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @api private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {Mixed} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @api private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @api public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @api public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Boolean} exists Only check if there are listeners.\n * @returns {Array|Boolean}\n * @api public\n */\nEventEmitter.prototype.listeners = function listeners(event, exists) {\n var evt = prefix ? prefix + event : event\n , available = this._events[evt];\n\n if (exists) return !!available;\n if (!available) return [];\n if (available.fn) return [available.fn];\n\n for (var i = 0, l = available.length, ee = new Array(l); i < l; i++) {\n ee[i] = available[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @api public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn The listener function.\n * @param {Mixed} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n var listener = new EE(fn, context || this)\n , evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;\n else if (!this._events[evt].fn) this._events[evt].push(listener);\n else this._events[evt] = [this._events[evt], listener];\n\n return this;\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn The listener function.\n * @param {Mixed} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n var listener = new EE(fn, context || this, true)\n , evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;\n else if (!this._events[evt].fn) this._events[evt].push(listener);\n else this._events[evt] = [this._events[evt], listener];\n\n return this;\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {Mixed} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn\n && (!once || listeners.once)\n && (!context || listeners.context === context)\n ) {\n if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn\n || (once && !listeners[i].once)\n || (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {String|Symbol} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) {\n if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n }\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// This function doesn't apply anymore.\n//\nEventEmitter.prototype.setMaxListeners = function setMaxListeners() {\n return this;\n};\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif (true) {\n module.exports = EventEmitter;\n}\n\n\n/***/ }),\n/* 219 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(2);\n\nvar _promise = _interopRequireDefault(__webpack_require__(10));\n\nvar _require = __webpack_require__(61),\n getAdapter = _require.getAdapter;\n\nvar syncApiNames = ['getItem', 'setItem', 'removeItem', 'clear'];\nvar localStorage = {\n get async() {\n return getAdapter('storage').async;\n }\n\n}; // wrap sync apis with async ones.\n\nsyncApiNames.forEach(function (apiName) {\n localStorage[apiName + 'Async'] = function () {\n var storage = getAdapter('storage');\n return _promise.default.resolve(storage[apiName].apply(storage, arguments));\n };\n\n localStorage[apiName] = function () {\n var storage = getAdapter('storage');\n\n if (!storage.async) {\n return storage[apiName].apply(storage, arguments);\n }\n\n var error = new Error('Synchronous API [' + apiName + '] is not available in this runtime.');\n error.code = 'SYNC_API_NOT_AVAILABLE';\n throw error;\n };\n});\nmodule.exports = localStorage;\n\n/***/ }),\n/* 220 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(2);\n\nvar _concat = _interopRequireDefault(__webpack_require__(29));\n\nvar _stringify = _interopRequireDefault(__webpack_require__(34));\n\nvar storage = __webpack_require__(219);\n\nvar AV = __webpack_require__(59);\n\nvar removeAsync = exports.removeAsync = storage.removeItemAsync.bind(storage);\n\nvar getCacheData = function getCacheData(cacheData, key) {\n try {\n cacheData = JSON.parse(cacheData);\n } catch (e) {\n return null;\n }\n\n if (cacheData) {\n var expired = cacheData.expiredAt && cacheData.expiredAt < Date.now();\n\n if (!expired) {\n return cacheData.value;\n }\n\n return removeAsync(key).then(function () {\n return null;\n });\n }\n\n return null;\n};\n\nexports.getAsync = function (key) {\n var _context;\n\n key = (0, _concat.default)(_context = \"AV/\".concat(AV.applicationId, \"/\")).call(_context, key);\n return storage.getItemAsync(key).then(function (cache) {\n return getCacheData(cache, key);\n });\n};\n\nexports.setAsync = function (key, value, ttl) {\n var _context2;\n\n var cache = {\n value: value\n };\n\n if (typeof ttl === 'number') {\n cache.expiredAt = Date.now() + ttl;\n }\n\n return storage.setItemAsync((0, _concat.default)(_context2 = \"AV/\".concat(AV.applicationId, \"/\")).call(_context2, key), (0, _stringify.default)(cache));\n};\n\n/***/ }),\n/* 221 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(380);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 222 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(383);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 223 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(224);\n\n/***/ }),\n/* 224 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(386);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 225 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(389);\n\n/***/ }),\n/* 226 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(392);\n__webpack_require__(73);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 227 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar call = __webpack_require__(11);\nvar getBuiltIn = __webpack_require__(16);\nvar wellKnownSymbol = __webpack_require__(8);\nvar defineBuiltIn = __webpack_require__(43);\n\nmodule.exports = function () {\n var Symbol = getBuiltIn('Symbol');\n var SymbolPrototype = Symbol && Symbol.prototype;\n var valueOf = SymbolPrototype && SymbolPrototype.valueOf;\n var TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n if (SymbolPrototype && !SymbolPrototype[TO_PRIMITIVE]) {\n // `Symbol.prototype[@@toPrimitive]` method\n // https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\n // eslint-disable-next-line no-unused-vars -- required for .length\n defineBuiltIn(SymbolPrototype, TO_PRIMITIVE, function (hint) {\n return call(valueOf, this);\n }, { arity: 1 });\n }\n};\n\n\n/***/ }),\n/* 228 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar NATIVE_SYMBOL = __webpack_require__(49);\n\n/* eslint-disable es-x/no-symbol -- safe */\nmodule.exports = NATIVE_SYMBOL && !!Symbol['for'] && !!Symbol.keyFor;\n\n\n/***/ }),\n/* 229 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar defineWellKnownSymbol = __webpack_require__(5);\n\n// `Symbol.iterator` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.iterator\ndefineWellKnownSymbol('iterator');\n\n\n/***/ }),\n/* 230 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(449);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 231 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(454);\n\n/***/ }),\n/* 232 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar uncurryThis = __webpack_require__(6);\nvar aCallable = __webpack_require__(30);\nvar isObject = __webpack_require__(17);\nvar hasOwn = __webpack_require__(14);\nvar arraySlice = __webpack_require__(94);\nvar NATIVE_BIND = __webpack_require__(63);\n\nvar $Function = Function;\nvar concat = uncurryThis([].concat);\nvar join = uncurryThis([].join);\nvar factories = {};\n\nvar construct = function (C, argsLength, args) {\n if (!hasOwn(factories, argsLength)) {\n for (var list = [], i = 0; i < argsLength; i++) list[i] = 'a[' + i + ']';\n factories[argsLength] = $Function('C,a', 'return new C(' + join(list, ',') + ')');\n } return factories[argsLength](C, args);\n};\n\n// `Function.prototype.bind` method implementation\n// https://tc39.es/ecma262/#sec-function.prototype.bind\nmodule.exports = NATIVE_BIND ? $Function.bind : function bind(that /* , ...args */) {\n var F = aCallable(this);\n var Prototype = F.prototype;\n var partArgs = arraySlice(arguments, 1);\n var boundFunction = function bound(/* args... */) {\n var args = concat(partArgs, arraySlice(arguments));\n return this instanceof boundFunction ? construct(F, args.length, args) : F.apply(that, args);\n };\n if (isObject(Prototype)) boundFunction.prototype = Prototype;\n return boundFunction;\n};\n\n\n/***/ }),\n/* 233 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(475);\n\n/***/ }),\n/* 234 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(478);\n\n/***/ }),\n/* 235 */\n/***/ (function(module, exports) {\n\nvar charenc = {\n // UTF-8 encoding\n utf8: {\n // Convert a string to a byte array\n stringToBytes: function(str) {\n return charenc.bin.stringToBytes(unescape(encodeURIComponent(str)));\n },\n\n // Convert a byte array to a string\n bytesToString: function(bytes) {\n return decodeURIComponent(escape(charenc.bin.bytesToString(bytes)));\n }\n },\n\n // Binary encoding\n bin: {\n // Convert a string to a byte array\n stringToBytes: function(str) {\n for (var bytes = [], i = 0; i < str.length; i++)\n bytes.push(str.charCodeAt(i) & 0xFF);\n return bytes;\n },\n\n // Convert a byte array to a string\n bytesToString: function(bytes) {\n for (var str = [], i = 0; i < bytes.length; i++)\n str.push(String.fromCharCode(bytes[i]));\n return str.join('');\n }\n }\n};\n\nmodule.exports = charenc;\n\n\n/***/ }),\n/* 236 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = __webpack_require__(237);\n\n/***/ }),\n/* 237 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(2);\n\nvar _promise = _interopRequireDefault(__webpack_require__(10));\n\n/*!\n * LeanCloud JavaScript SDK\n * https://leancloud.cn\n *\n * Copyright 2016 LeanCloud.cn, Inc.\n * The LeanCloud JavaScript SDK is freely distributable under the MIT license.\n */\nvar _ = __webpack_require__(1);\n\nvar AV = __webpack_require__(59);\n\nAV._ = _;\nAV.version = __webpack_require__(217);\nAV.Promise = _promise.default;\nAV.localStorage = __webpack_require__(219);\nAV.Cache = __webpack_require__(220);\nAV.Error = __webpack_require__(40);\n\n__webpack_require__(382);\n\n__webpack_require__(436)(AV);\n\n__webpack_require__(437)(AV);\n\n__webpack_require__(438)(AV);\n\n__webpack_require__(439)(AV);\n\n__webpack_require__(444)(AV);\n\n__webpack_require__(445)(AV);\n\n__webpack_require__(500)(AV);\n\n__webpack_require__(526)(AV);\n\n__webpack_require__(527)(AV);\n\n__webpack_require__(529)(AV);\n\n__webpack_require__(530)(AV);\n\n__webpack_require__(531)(AV);\n\n__webpack_require__(532)(AV);\n\n__webpack_require__(533)(AV);\n\n__webpack_require__(534)(AV);\n\n__webpack_require__(535)(AV);\n\n__webpack_require__(536)(AV);\n\n__webpack_require__(537)(AV);\n\nAV.Conversation = __webpack_require__(538);\n\n__webpack_require__(539);\n\nmodule.exports = AV;\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/* 238 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(239);\n__webpack_require__(73);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 239 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(240);\n__webpack_require__(70);\n__webpack_require__(92);\n__webpack_require__(258);\n__webpack_require__(274);\n__webpack_require__(275);\n__webpack_require__(276);\n__webpack_require__(95);\nvar path = __webpack_require__(13);\n\nmodule.exports = path.Promise;\n\n\n/***/ }),\n/* 240 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// TODO: Remove this module from `core-js@4` since it's replaced to module below\n__webpack_require__(241);\n\n\n/***/ }),\n/* 241 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(0);\nvar isPrototypeOf = __webpack_require__(20);\nvar getPrototypeOf = __webpack_require__(86);\nvar setPrototypeOf = __webpack_require__(88);\nvar copyConstructorProperties = __webpack_require__(246);\nvar create = __webpack_require__(51);\nvar createNonEnumerableProperty = __webpack_require__(36);\nvar createPropertyDescriptor = __webpack_require__(41);\nvar clearErrorStack = __webpack_require__(250);\nvar installErrorCause = __webpack_require__(251);\nvar iterate = __webpack_require__(68);\nvar normalizeStringArgument = __webpack_require__(252);\nvar wellKnownSymbol = __webpack_require__(8);\nvar ERROR_STACK_INSTALLABLE = __webpack_require__(253);\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar $Error = Error;\nvar push = [].push;\n\nvar $AggregateError = function AggregateError(errors, message /* , options */) {\n var options = arguments.length > 2 ? arguments[2] : undefined;\n var isInstance = isPrototypeOf(AggregateErrorPrototype, this);\n var that;\n if (setPrototypeOf) {\n that = setPrototypeOf(new $Error(), isInstance ? getPrototypeOf(this) : AggregateErrorPrototype);\n } else {\n that = isInstance ? this : create(AggregateErrorPrototype);\n createNonEnumerableProperty(that, TO_STRING_TAG, 'Error');\n }\n if (message !== undefined) createNonEnumerableProperty(that, 'message', normalizeStringArgument(message));\n if (ERROR_STACK_INSTALLABLE) createNonEnumerableProperty(that, 'stack', clearErrorStack(that.stack, 1));\n installErrorCause(that, options);\n var errorsArray = [];\n iterate(errors, push, { that: errorsArray });\n createNonEnumerableProperty(that, 'errors', errorsArray);\n return that;\n};\n\nif (setPrototypeOf) setPrototypeOf($AggregateError, $Error);\nelse copyConstructorProperties($AggregateError, $Error, { name: true });\n\nvar AggregateErrorPrototype = $AggregateError.prototype = create($Error.prototype, {\n constructor: createPropertyDescriptor(1, $AggregateError),\n message: createPropertyDescriptor(1, ''),\n name: createPropertyDescriptor(1, 'AggregateError')\n});\n\n// `AggregateError` constructor\n// https://tc39.es/ecma262/#sec-aggregate-error-constructor\n$({ global: true, constructor: true, arity: 2 }, {\n AggregateError: $AggregateError\n});\n\n\n/***/ }),\n/* 242 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar call = __webpack_require__(11);\nvar isObject = __webpack_require__(17);\nvar isSymbol = __webpack_require__(83);\nvar getMethod = __webpack_require__(107);\nvar ordinaryToPrimitive = __webpack_require__(243);\nvar wellKnownSymbol = __webpack_require__(8);\n\nvar $TypeError = TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n var result;\n if (exoticToPrim) {\n if (pref === undefined) pref = 'default';\n result = call(exoticToPrim, input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw $TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n\n\n/***/ }),\n/* 243 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar call = __webpack_require__(11);\nvar isCallable = __webpack_require__(7);\nvar isObject = __webpack_require__(17);\n\nvar $TypeError = TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n var fn, val;\n if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n throw $TypeError(\"Can't convert object to primitive value\");\n};\n\n\n/***/ }),\n/* 244 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(9);\n\n// eslint-disable-next-line es-x/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n try {\n defineProperty(global, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n global[key] = value;\n } return value;\n};\n\n\n/***/ }),\n/* 245 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isCallable = __webpack_require__(7);\n\nvar $String = String;\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument) {\n if (typeof argument == 'object' || isCallable(argument)) return argument;\n throw $TypeError(\"Can't set \" + $String(argument) + ' as a prototype');\n};\n\n\n/***/ }),\n/* 246 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar hasOwn = __webpack_require__(14);\nvar ownKeys = __webpack_require__(247);\nvar getOwnPropertyDescriptorModule = __webpack_require__(64);\nvar definePropertyModule = __webpack_require__(32);\n\nmodule.exports = function (target, source, exceptions) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\n defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n }\n};\n\n\n/***/ }),\n/* 247 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar getBuiltIn = __webpack_require__(16);\nvar uncurryThis = __webpack_require__(6);\nvar getOwnPropertyNamesModule = __webpack_require__(111);\nvar getOwnPropertySymbolsModule = __webpack_require__(115);\nvar anObject = __webpack_require__(21);\n\nvar concat = uncurryThis([].concat);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n\n\n/***/ }),\n/* 248 */\n/***/ (function(module, exports) {\n\nvar ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `Math.trunc` method\n// https://tc39.es/ecma262/#sec-math.trunc\n// eslint-disable-next-line es-x/no-math-trunc -- safe\nmodule.exports = Math.trunc || function trunc(x) {\n var n = +x;\n return (n > 0 ? floor : ceil)(n);\n};\n\n\n/***/ }),\n/* 249 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toIntegerOrInfinity = __webpack_require__(113);\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n\n\n/***/ }),\n/* 250 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar uncurryThis = __webpack_require__(6);\n\nvar $Error = Error;\nvar replace = uncurryThis(''.replace);\n\nvar TEST = (function (arg) { return String($Error(arg).stack); })('zxcasd');\nvar V8_OR_CHAKRA_STACK_ENTRY = /\\n\\s*at [^:]*:[^\\n]*/;\nvar IS_V8_OR_CHAKRA_STACK = V8_OR_CHAKRA_STACK_ENTRY.test(TEST);\n\nmodule.exports = function (stack, dropEntries) {\n if (IS_V8_OR_CHAKRA_STACK && typeof stack == 'string' && !$Error.prepareStackTrace) {\n while (dropEntries--) stack = replace(stack, V8_OR_CHAKRA_STACK_ENTRY, '');\n } return stack;\n};\n\n\n/***/ }),\n/* 251 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(17);\nvar createNonEnumerableProperty = __webpack_require__(36);\n\n// `InstallErrorCause` abstract operation\n// https://tc39.es/proposal-error-cause/#sec-errorobjects-install-error-cause\nmodule.exports = function (O, options) {\n if (isObject(options) && 'cause' in options) {\n createNonEnumerableProperty(O, 'cause', options.cause);\n }\n};\n\n\n/***/ }),\n/* 252 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toString = __webpack_require__(69);\n\nmodule.exports = function (argument, $default) {\n return argument === undefined ? arguments.length < 2 ? '' : $default : toString(argument);\n};\n\n\n/***/ }),\n/* 253 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar fails = __webpack_require__(4);\nvar createPropertyDescriptor = __webpack_require__(41);\n\nmodule.exports = !fails(function () {\n var error = Error('a');\n if (!('stack' in error)) return true;\n // eslint-disable-next-line es-x/no-object-defineproperty -- safe\n Object.defineProperty(error, 'stack', createPropertyDescriptor(1, 7));\n return error.stack !== 7;\n});\n\n\n/***/ }),\n/* 254 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(9);\nvar isCallable = __webpack_require__(7);\nvar inspectSource = __webpack_require__(118);\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(inspectSource(WeakMap));\n\n\n/***/ }),\n/* 255 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(19);\nvar hasOwn = __webpack_require__(14);\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n EXISTS: EXISTS,\n PROPER: PROPER,\n CONFIGURABLE: CONFIGURABLE\n};\n\n\n/***/ }),\n/* 256 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar IteratorPrototype = __webpack_require__(154).IteratorPrototype;\nvar create = __webpack_require__(51);\nvar createPropertyDescriptor = __webpack_require__(41);\nvar setToStringTag = __webpack_require__(54);\nvar Iterators = __webpack_require__(52);\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next, ENUMERABLE_NEXT) {\n var TO_STRING_TAG = NAME + ' Iterator';\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(+!ENUMERABLE_NEXT, next) });\n setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n Iterators[TO_STRING_TAG] = returnThis;\n return IteratorConstructor;\n};\n\n\n/***/ }),\n/* 257 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar TO_STRING_TAG_SUPPORT = __webpack_require__(117);\nvar classof = __webpack_require__(53);\n\n// `Object.prototype.toString` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n return '[object ' + classof(this) + ']';\n};\n\n\n/***/ }),\n/* 258 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// TODO: Remove this module from `core-js@4` since it's split to modules listed below\n__webpack_require__(259);\n__webpack_require__(269);\n__webpack_require__(270);\n__webpack_require__(271);\n__webpack_require__(272);\n__webpack_require__(273);\n\n\n/***/ }),\n/* 259 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(0);\nvar IS_PURE = __webpack_require__(31);\nvar IS_NODE = __webpack_require__(119);\nvar global = __webpack_require__(9);\nvar call = __webpack_require__(11);\nvar defineBuiltIn = __webpack_require__(43);\nvar setPrototypeOf = __webpack_require__(88);\nvar setToStringTag = __webpack_require__(54);\nvar setSpecies = __webpack_require__(260);\nvar aCallable = __webpack_require__(30);\nvar isCallable = __webpack_require__(7);\nvar isObject = __webpack_require__(17);\nvar anInstance = __webpack_require__(261);\nvar speciesConstructor = __webpack_require__(155);\nvar task = __webpack_require__(157).set;\nvar microtask = __webpack_require__(263);\nvar hostReportErrors = __webpack_require__(266);\nvar perform = __webpack_require__(71);\nvar Queue = __webpack_require__(267);\nvar InternalStateModule = __webpack_require__(91);\nvar NativePromiseConstructor = __webpack_require__(55);\nvar PromiseConstructorDetection = __webpack_require__(72);\nvar newPromiseCapabilityModule = __webpack_require__(44);\n\nvar PROMISE = 'Promise';\nvar FORCED_PROMISE_CONSTRUCTOR = PromiseConstructorDetection.CONSTRUCTOR;\nvar NATIVE_PROMISE_REJECTION_EVENT = PromiseConstructorDetection.REJECTION_EVENT;\nvar NATIVE_PROMISE_SUBCLASSING = PromiseConstructorDetection.SUBCLASSING;\nvar getInternalPromiseState = InternalStateModule.getterFor(PROMISE);\nvar setInternalState = InternalStateModule.set;\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\nvar PromiseConstructor = NativePromiseConstructor;\nvar PromisePrototype = NativePromisePrototype;\nvar TypeError = global.TypeError;\nvar document = global.document;\nvar process = global.process;\nvar newPromiseCapability = newPromiseCapabilityModule.f;\nvar newGenericPromiseCapability = newPromiseCapability;\n\nvar DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent);\nvar UNHANDLED_REJECTION = 'unhandledrejection';\nvar REJECTION_HANDLED = 'rejectionhandled';\nvar PENDING = 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\nvar HANDLED = 1;\nvar UNHANDLED = 2;\n\nvar Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && isCallable(then = it.then) ? then : false;\n};\n\nvar callReaction = function (reaction, state) {\n var value = state.value;\n var ok = state.state == FULFILLED;\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 (state.rejection === UNHANDLED) onHandleUnhandled(state);\n state.rejection = HANDLED;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // can 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 call(then, result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (error) {\n if (domain && !exited) domain.exit();\n reject(error);\n }\n};\n\nvar notify = function (state, isReject) {\n if (state.notified) return;\n state.notified = true;\n microtask(function () {\n var reactions = state.reactions;\n var reaction;\n while (reaction = reactions.get()) {\n callReaction(reaction, state);\n }\n state.notified = false;\n if (isReject && !state.rejection) onUnhandled(state);\n });\n};\n\nvar dispatchEvent = function (name, promise, reason) {\n var event, handler;\n if (DISPATCH_EVENT) {\n event = document.createEvent('Event');\n event.promise = promise;\n event.reason = reason;\n event.initEvent(name, false, true);\n global.dispatchEvent(event);\n } else event = { promise: promise, reason: reason };\n if (!NATIVE_PROMISE_REJECTION_EVENT && (handler = global['on' + name])) handler(event);\n else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason);\n};\n\nvar onUnhandled = function (state) {\n call(task, global, function () {\n var promise = state.facade;\n var value = state.value;\n var IS_UNHANDLED = isUnhandled(state);\n var result;\n if (IS_UNHANDLED) {\n result = perform(function () {\n if (IS_NODE) {\n process.emit('unhandledRejection', value, promise);\n } else dispatchEvent(UNHANDLED_REJECTION, promise, value);\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED;\n if (result.error) throw result.value;\n }\n });\n};\n\nvar isUnhandled = function (state) {\n return state.rejection !== HANDLED && !state.parent;\n};\n\nvar onHandleUnhandled = function (state) {\n call(task, global, function () {\n var promise = state.facade;\n if (IS_NODE) {\n process.emit('rejectionHandled', promise);\n } else dispatchEvent(REJECTION_HANDLED, promise, state.value);\n });\n};\n\nvar bind = function (fn, state, unwrap) {\n return function (value) {\n fn(state, value, unwrap);\n };\n};\n\nvar internalReject = function (state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n state.value = value;\n state.state = REJECTED;\n notify(state, true);\n};\n\nvar internalResolve = function (state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n try {\n if (state.facade === value) throw TypeError(\"Promise can't be resolved itself\");\n var then = isThenable(value);\n if (then) {\n microtask(function () {\n var wrapper = { done: false };\n try {\n call(then, value,\n bind(internalResolve, wrapper, state),\n bind(internalReject, wrapper, state)\n );\n } catch (error) {\n internalReject(wrapper, error, state);\n }\n });\n } else {\n state.value = value;\n state.state = FULFILLED;\n notify(state, false);\n }\n } catch (error) {\n internalReject({ done: false }, error, state);\n }\n};\n\n// constructor polyfill\nif (FORCED_PROMISE_CONSTRUCTOR) {\n // 25.4.3.1 Promise(executor)\n PromiseConstructor = function Promise(executor) {\n anInstance(this, PromisePrototype);\n aCallable(executor);\n call(Internal, this);\n var state = getInternalPromiseState(this);\n try {\n executor(bind(internalResolve, state), bind(internalReject, state));\n } catch (error) {\n internalReject(state, error);\n }\n };\n\n PromisePrototype = PromiseConstructor.prototype;\n\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n Internal = function Promise(executor) {\n setInternalState(this, {\n type: PROMISE,\n done: false,\n notified: false,\n parent: false,\n reactions: new Queue(),\n rejection: false,\n state: PENDING,\n value: undefined\n });\n };\n\n // `Promise.prototype.then` method\n // https://tc39.es/ecma262/#sec-promise.prototype.then\n Internal.prototype = defineBuiltIn(PromisePrototype, 'then', function then(onFulfilled, onRejected) {\n var state = getInternalPromiseState(this);\n var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor));\n state.parent = true;\n reaction.ok = isCallable(onFulfilled) ? onFulfilled : true;\n reaction.fail = isCallable(onRejected) && onRejected;\n reaction.domain = IS_NODE ? process.domain : undefined;\n if (state.state == PENDING) state.reactions.add(reaction);\n else microtask(function () {\n callReaction(reaction, state);\n });\n return reaction.promise;\n });\n\n OwnPromiseCapability = function () {\n var promise = new Internal();\n var state = getInternalPromiseState(promise);\n this.promise = promise;\n this.resolve = bind(internalResolve, state);\n this.reject = bind(internalReject, state);\n };\n\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === PromiseConstructor || C === PromiseWrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n\n if (!IS_PURE && isCallable(NativePromiseConstructor) && NativePromisePrototype !== Object.prototype) {\n nativeThen = NativePromisePrototype.then;\n\n if (!NATIVE_PROMISE_SUBCLASSING) {\n // make `Promise#then` return a polyfilled `Promise` for native promise-based APIs\n defineBuiltIn(NativePromisePrototype, 'then', function then(onFulfilled, onRejected) {\n var that = this;\n return new PromiseConstructor(function (resolve, reject) {\n call(nativeThen, that, resolve, reject);\n }).then(onFulfilled, onRejected);\n // https://github.com/zloirock/core-js/issues/640\n }, { unsafe: true });\n }\n\n // make `.constructor === Promise` work for native promise-based APIs\n try {\n delete NativePromisePrototype.constructor;\n } catch (error) { /* empty */ }\n\n // make `instanceof Promise` work for native promise-based APIs\n if (setPrototypeOf) {\n setPrototypeOf(NativePromisePrototype, PromisePrototype);\n }\n }\n}\n\n$({ global: true, constructor: true, wrap: true, forced: FORCED_PROMISE_CONSTRUCTOR }, {\n Promise: PromiseConstructor\n});\n\nsetToStringTag(PromiseConstructor, PROMISE, false, true);\nsetSpecies(PROMISE);\n\n\n/***/ }),\n/* 260 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar getBuiltIn = __webpack_require__(16);\nvar definePropertyModule = __webpack_require__(32);\nvar wellKnownSymbol = __webpack_require__(8);\nvar DESCRIPTORS = __webpack_require__(19);\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n var defineProperty = definePropertyModule.f;\n\n if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n defineProperty(Constructor, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n }\n};\n\n\n/***/ }),\n/* 261 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isPrototypeOf = __webpack_require__(20);\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (it, Prototype) {\n if (isPrototypeOf(Prototype, it)) return it;\n throw $TypeError('Incorrect invocation');\n};\n\n\n/***/ }),\n/* 262 */\n/***/ (function(module, exports) {\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (passed, required) {\n if (passed < required) throw $TypeError('Not enough arguments');\n return passed;\n};\n\n\n/***/ }),\n/* 263 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(9);\nvar bind = __webpack_require__(50);\nvar getOwnPropertyDescriptor = __webpack_require__(64).f;\nvar macrotask = __webpack_require__(157).set;\nvar IS_IOS = __webpack_require__(158);\nvar IS_IOS_PEBBLE = __webpack_require__(264);\nvar IS_WEBOS_WEBKIT = __webpack_require__(265);\nvar IS_NODE = __webpack_require__(119);\n\nvar MutationObserver = global.MutationObserver || global.WebKitMutationObserver;\nvar document = global.document;\nvar process = global.process;\nvar Promise = global.Promise;\n// Node.js 11 shows ExperimentalWarning on getting `queueMicrotask`\nvar queueMicrotaskDescriptor = getOwnPropertyDescriptor(global, 'queueMicrotask');\nvar queueMicrotask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value;\n\nvar flush, head, last, notify, toggle, node, promise, then;\n\n// modern engines have queueMicrotask method\nif (!queueMicrotask) {\n flush = function () {\n var parent, fn;\n if (IS_NODE && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (error) {\n if (head) notify();\n else last = undefined;\n throw error;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339\n // also except WebOS Webkit https://github.com/zloirock/core-js/issues/898\n if (!IS_IOS && !IS_NODE && !IS_WEBOS_WEBKIT && MutationObserver && document) {\n toggle = true;\n node = document.createTextNode('');\n new MutationObserver(flush).observe(node, { characterData: true });\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (!IS_IOS_PEBBLE && Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n promise = Promise.resolve(undefined);\n // workaround of WebKit ~ iOS Safari 10.1 bug\n promise.constructor = Promise;\n then = bind(promise.then, promise);\n notify = function () {\n then(flush);\n };\n // Node.js without promises\n } else if (IS_NODE) {\n notify = function () {\n process.nextTick(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessage\n // - onreadystatechange\n // - setTimeout\n } else {\n // strange IE + webpack dev server bug - use .bind(global)\n macrotask = bind(macrotask, global);\n notify = function () {\n macrotask(flush);\n };\n }\n}\n\nmodule.exports = queueMicrotask || 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/* 264 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar userAgent = __webpack_require__(85);\nvar global = __webpack_require__(9);\n\nmodule.exports = /ipad|iphone|ipod/i.test(userAgent) && global.Pebble !== undefined;\n\n\n/***/ }),\n/* 265 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar userAgent = __webpack_require__(85);\n\nmodule.exports = /web0s(?!.*chrome)/i.test(userAgent);\n\n\n/***/ }),\n/* 266 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(9);\n\nmodule.exports = function (a, b) {\n var console = global.console;\n if (console && console.error) {\n arguments.length == 1 ? console.error(a) : console.error(a, b);\n }\n};\n\n\n/***/ }),\n/* 267 */\n/***/ (function(module, exports) {\n\nvar Queue = function () {\n this.head = null;\n this.tail = null;\n};\n\nQueue.prototype = {\n add: function (item) {\n var entry = { item: item, next: null };\n if (this.head) this.tail.next = entry;\n else this.head = entry;\n this.tail = entry;\n },\n get: function () {\n var entry = this.head;\n if (entry) {\n this.head = entry.next;\n if (this.tail === entry) this.tail = null;\n return entry.item;\n }\n }\n};\n\nmodule.exports = Queue;\n\n\n/***/ }),\n/* 268 */\n/***/ (function(module, exports) {\n\nmodule.exports = typeof window == 'object' && typeof Deno != 'object';\n\n\n/***/ }),\n/* 269 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(0);\nvar call = __webpack_require__(11);\nvar aCallable = __webpack_require__(30);\nvar newPromiseCapabilityModule = __webpack_require__(44);\nvar perform = __webpack_require__(71);\nvar iterate = __webpack_require__(68);\nvar PROMISE_STATICS_INCORRECT_ITERATION = __webpack_require__(159);\n\n// `Promise.all` method\n// https://tc39.es/ecma262/#sec-promise.all\n$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, {\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapabilityModule.f(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aCallable(C.resolve);\n var values = [];\n var counter = 0;\n var remaining = 1;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyCalled = false;\n remaining++;\n call($promiseResolve, C, 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.error) reject(result.value);\n return capability.promise;\n }\n});\n\n\n/***/ }),\n/* 270 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(0);\nvar IS_PURE = __webpack_require__(31);\nvar FORCED_PROMISE_CONSTRUCTOR = __webpack_require__(72).CONSTRUCTOR;\nvar NativePromiseConstructor = __webpack_require__(55);\nvar getBuiltIn = __webpack_require__(16);\nvar isCallable = __webpack_require__(7);\nvar defineBuiltIn = __webpack_require__(43);\n\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\n\n// `Promise.prototype.catch` method\n// https://tc39.es/ecma262/#sec-promise.prototype.catch\n$({ target: 'Promise', proto: true, forced: FORCED_PROMISE_CONSTRUCTOR, real: true }, {\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n});\n\n// makes sure that native promise-based APIs `Promise#catch` properly works with patched `Promise#then`\nif (!IS_PURE && isCallable(NativePromiseConstructor)) {\n var method = getBuiltIn('Promise').prototype['catch'];\n if (NativePromisePrototype['catch'] !== method) {\n defineBuiltIn(NativePromisePrototype, 'catch', method, { unsafe: true });\n }\n}\n\n\n/***/ }),\n/* 271 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(0);\nvar call = __webpack_require__(11);\nvar aCallable = __webpack_require__(30);\nvar newPromiseCapabilityModule = __webpack_require__(44);\nvar perform = __webpack_require__(71);\nvar iterate = __webpack_require__(68);\nvar PROMISE_STATICS_INCORRECT_ITERATION = __webpack_require__(159);\n\n// `Promise.race` method\n// https://tc39.es/ecma262/#sec-promise.race\n$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, {\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapabilityModule.f(C);\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aCallable(C.resolve);\n iterate(iterable, function (promise) {\n call($promiseResolve, C, promise).then(capability.resolve, reject);\n });\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n\n\n/***/ }),\n/* 272 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(0);\nvar call = __webpack_require__(11);\nvar newPromiseCapabilityModule = __webpack_require__(44);\nvar FORCED_PROMISE_CONSTRUCTOR = __webpack_require__(72).CONSTRUCTOR;\n\n// `Promise.reject` method\n// https://tc39.es/ecma262/#sec-promise.reject\n$({ target: 'Promise', stat: true, forced: FORCED_PROMISE_CONSTRUCTOR }, {\n reject: function reject(r) {\n var capability = newPromiseCapabilityModule.f(this);\n call(capability.reject, undefined, r);\n return capability.promise;\n }\n});\n\n\n/***/ }),\n/* 273 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(0);\nvar getBuiltIn = __webpack_require__(16);\nvar IS_PURE = __webpack_require__(31);\nvar NativePromiseConstructor = __webpack_require__(55);\nvar FORCED_PROMISE_CONSTRUCTOR = __webpack_require__(72).CONSTRUCTOR;\nvar promiseResolve = __webpack_require__(161);\n\nvar PromiseConstructorWrapper = getBuiltIn('Promise');\nvar CHECK_WRAPPER = IS_PURE && !FORCED_PROMISE_CONSTRUCTOR;\n\n// `Promise.resolve` method\n// https://tc39.es/ecma262/#sec-promise.resolve\n$({ target: 'Promise', stat: true, forced: IS_PURE || FORCED_PROMISE_CONSTRUCTOR }, {\n resolve: function resolve(x) {\n return promiseResolve(CHECK_WRAPPER && this === PromiseConstructorWrapper ? NativePromiseConstructor : this, x);\n }\n});\n\n\n/***/ }),\n/* 274 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(0);\nvar call = __webpack_require__(11);\nvar aCallable = __webpack_require__(30);\nvar newPromiseCapabilityModule = __webpack_require__(44);\nvar perform = __webpack_require__(71);\nvar iterate = __webpack_require__(68);\n\n// `Promise.allSettled` method\n// https://tc39.es/ecma262/#sec-promise.allsettled\n$({ target: 'Promise', stat: true }, {\n allSettled: function allSettled(iterable) {\n var C = this;\n var capability = newPromiseCapabilityModule.f(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var promiseResolve = aCallable(C.resolve);\n var values = [];\n var counter = 0;\n var remaining = 1;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyCalled = false;\n remaining++;\n call(promiseResolve, C, promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[index] = { status: 'fulfilled', value: value };\n --remaining || resolve(values);\n }, function (error) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[index] = { status: 'rejected', reason: error };\n --remaining || resolve(values);\n });\n });\n --remaining || resolve(values);\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n\n\n/***/ }),\n/* 275 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(0);\nvar call = __webpack_require__(11);\nvar aCallable = __webpack_require__(30);\nvar getBuiltIn = __webpack_require__(16);\nvar newPromiseCapabilityModule = __webpack_require__(44);\nvar perform = __webpack_require__(71);\nvar iterate = __webpack_require__(68);\n\nvar PROMISE_ANY_ERROR = 'No one promise resolved';\n\n// `Promise.any` method\n// https://tc39.es/ecma262/#sec-promise.any\n$({ target: 'Promise', stat: true }, {\n any: function any(iterable) {\n var C = this;\n var AggregateError = getBuiltIn('AggregateError');\n var capability = newPromiseCapabilityModule.f(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var promiseResolve = aCallable(C.resolve);\n var errors = [];\n var counter = 0;\n var remaining = 1;\n var alreadyResolved = false;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyRejected = false;\n remaining++;\n call(promiseResolve, C, promise).then(function (value) {\n if (alreadyRejected || alreadyResolved) return;\n alreadyResolved = true;\n resolve(value);\n }, function (error) {\n if (alreadyRejected || alreadyResolved) return;\n alreadyRejected = true;\n errors[index] = error;\n --remaining || reject(new AggregateError(errors, PROMISE_ANY_ERROR));\n });\n });\n --remaining || reject(new AggregateError(errors, PROMISE_ANY_ERROR));\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n\n\n/***/ }),\n/* 276 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(0);\nvar IS_PURE = __webpack_require__(31);\nvar NativePromiseConstructor = __webpack_require__(55);\nvar fails = __webpack_require__(4);\nvar getBuiltIn = __webpack_require__(16);\nvar isCallable = __webpack_require__(7);\nvar speciesConstructor = __webpack_require__(155);\nvar promiseResolve = __webpack_require__(161);\nvar defineBuiltIn = __webpack_require__(43);\n\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\n\n// Safari bug https://bugs.webkit.org/show_bug.cgi?id=200829\nvar NON_GENERIC = !!NativePromiseConstructor && fails(function () {\n // eslint-disable-next-line unicorn/no-thenable -- required for testing\n NativePromisePrototype['finally'].call({ then: function () { /* empty */ } }, function () { /* empty */ });\n});\n\n// `Promise.prototype.finally` method\n// https://tc39.es/ecma262/#sec-promise.prototype.finally\n$({ target: 'Promise', proto: true, real: true, forced: NON_GENERIC }, {\n 'finally': function (onFinally) {\n var C = speciesConstructor(this, getBuiltIn('Promise'));\n var isFunction = isCallable(onFinally);\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// makes sure that native promise-based APIs `Promise#finally` properly works with patched `Promise#then`\nif (!IS_PURE && isCallable(NativePromiseConstructor)) {\n var method = getBuiltIn('Promise').prototype['finally'];\n if (NativePromisePrototype['finally'] !== method) {\n defineBuiltIn(NativePromisePrototype, 'finally', method, { unsafe: true });\n }\n}\n\n\n/***/ }),\n/* 277 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar uncurryThis = __webpack_require__(6);\nvar toIntegerOrInfinity = __webpack_require__(113);\nvar toString = __webpack_require__(69);\nvar requireObjectCoercible = __webpack_require__(106);\n\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar stringSlice = uncurryThis(''.slice);\n\nvar createMethod = function (CONVERT_TO_STRING) {\n return function ($this, pos) {\n var S = toString(requireObjectCoercible($this));\n var position = toIntegerOrInfinity(pos);\n var size = S.length;\n var first, second;\n if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n first = charCodeAt(S, position);\n return first < 0xD800 || first > 0xDBFF || position + 1 === size\n || (second = charCodeAt(S, position + 1)) < 0xDC00 || second > 0xDFFF\n ? CONVERT_TO_STRING\n ? charAt(S, position)\n : first\n : CONVERT_TO_STRING\n ? stringSlice(S, position, position + 2)\n : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n };\n};\n\nmodule.exports = {\n // `String.prototype.codePointAt` method\n // https://tc39.es/ecma262/#sec-string.prototype.codepointat\n codeAt: createMethod(false),\n // `String.prototype.at` method\n // https://github.com/mathiasbynens/String.prototype.at\n charAt: createMethod(true)\n};\n\n\n/***/ }),\n/* 278 */\n/***/ (function(module, exports) {\n\n// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n CSSRuleList: 0,\n CSSStyleDeclaration: 0,\n CSSValueList: 0,\n ClientRectList: 0,\n DOMRectList: 0,\n DOMStringList: 0,\n DOMTokenList: 1,\n DataTransferItemList: 0,\n FileList: 0,\n HTMLAllCollection: 0,\n HTMLCollection: 0,\n HTMLFormElement: 0,\n HTMLSelectElement: 0,\n MediaList: 0,\n MimeTypeArray: 0,\n NamedNodeMap: 0,\n NodeList: 1,\n PaintRequestList: 0,\n Plugin: 0,\n PluginArray: 0,\n SVGLengthList: 0,\n SVGNumberList: 0,\n SVGPathSegList: 0,\n SVGPointList: 0,\n SVGStringList: 0,\n SVGTransformList: 0,\n SourceBufferList: 0,\n StyleSheetList: 0,\n TextTrackCueList: 0,\n TextTrackList: 0,\n TouchList: 0\n};\n\n\n/***/ }),\n/* 279 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__index_js__ = __webpack_require__(120);\n// Default Export\n// ==============\n// In this module, we mix our bundled exports into the `_` object and export\n// the result. This is analogous to setting `module.exports = _` in CommonJS.\n// Hence, this module is also the entry point of our UMD bundle and the package\n// entry point for CommonJS and AMD users. In other words, this is (the source\n// of) the module you are interfacing with when you do any of the following:\n//\n// ```js\n// // CommonJS\n// var _ = require('underscore');\n//\n// // AMD\n// define(['underscore'], function(_) {...});\n//\n// // UMD in the browser\n// // _ is available as a global variable\n// ```\n\n\n\n// Add all of the Underscore functions to the wrapper object.\nvar _ = Object(__WEBPACK_IMPORTED_MODULE_0__index_js__[\"mixin\"])(__WEBPACK_IMPORTED_MODULE_0__index_js__);\n// Legacy Node.js API.\n_._ = _;\n// Export the Underscore API.\n/* harmony default export */ __webpack_exports__[\"a\"] = (_);\n\n\n/***/ }),\n/* 280 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = isNull;\n// Is a given value equal to null?\nfunction isNull(obj) {\n return obj === null;\n}\n\n\n/***/ }),\n/* 281 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = isElement;\n// Is a given value a DOM element?\nfunction isElement(obj) {\n return !!(obj && obj.nodeType === 1);\n}\n\n\n/***/ }),\n/* 282 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__tagTester_js__ = __webpack_require__(15);\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__tagTester_js__[\"a\" /* default */])('Date'));\n\n\n/***/ }),\n/* 283 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__tagTester_js__ = __webpack_require__(15);\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__tagTester_js__[\"a\" /* default */])('RegExp'));\n\n\n/***/ }),\n/* 284 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__tagTester_js__ = __webpack_require__(15);\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__tagTester_js__[\"a\" /* default */])('Error'));\n\n\n/***/ }),\n/* 285 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__tagTester_js__ = __webpack_require__(15);\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__tagTester_js__[\"a\" /* default */])('Object'));\n\n\n/***/ }),\n/* 286 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = isFinite;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__setup_js__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__isSymbol_js__ = __webpack_require__(165);\n\n\n\n// Is a given object a finite number?\nfunction isFinite(obj) {\n return !Object(__WEBPACK_IMPORTED_MODULE_1__isSymbol_js__[\"a\" /* default */])(obj) && Object(__WEBPACK_IMPORTED_MODULE_0__setup_js__[\"f\" /* _isFinite */])(obj) && !isNaN(parseFloat(obj));\n}\n\n\n/***/ }),\n/* 287 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__createSizePropertyCheck_js__ = __webpack_require__(170);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__getByteLength_js__ = __webpack_require__(124);\n\n\n\n// Internal helper to determine whether we should spend extensive checks against\n// `ArrayBuffer` et al.\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__createSizePropertyCheck_js__[\"a\" /* default */])(__WEBPACK_IMPORTED_MODULE_1__getByteLength_js__[\"a\" /* default */]));\n\n\n/***/ }),\n/* 288 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = isEmpty;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__getLength_js__ = __webpack_require__(27);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__isArray_js__ = __webpack_require__(46);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__isString_js__ = __webpack_require__(121);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__isArguments_js__ = __webpack_require__(123);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__keys_js__ = __webpack_require__(12);\n\n\n\n\n\n\n// Is a given array, string, or object empty?\n// An \"empty\" object has no enumerable own-properties.\nfunction isEmpty(obj) {\n if (obj == null) return true;\n // Skip the more expensive `toString`-based type checks if `obj` has no\n // `.length`.\n var length = Object(__WEBPACK_IMPORTED_MODULE_0__getLength_js__[\"a\" /* default */])(obj);\n if (typeof length == 'number' && (\n Object(__WEBPACK_IMPORTED_MODULE_1__isArray_js__[\"a\" /* default */])(obj) || Object(__WEBPACK_IMPORTED_MODULE_2__isString_js__[\"a\" /* default */])(obj) || Object(__WEBPACK_IMPORTED_MODULE_3__isArguments_js__[\"a\" /* default */])(obj)\n )) return length === 0;\n return Object(__WEBPACK_IMPORTED_MODULE_0__getLength_js__[\"a\" /* default */])(Object(__WEBPACK_IMPORTED_MODULE_4__keys_js__[\"a\" /* default */])(obj)) === 0;\n}\n\n\n/***/ }),\n/* 289 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = isEqual;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__underscore_js__ = __webpack_require__(23);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__setup_js__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__getByteLength_js__ = __webpack_require__(124);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__isTypedArray_js__ = __webpack_require__(168);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__isFunction_js__ = __webpack_require__(26);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__stringTagBug_js__ = __webpack_require__(74);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__isDataView_js__ = __webpack_require__(122);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__keys_js__ = __webpack_require__(12);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__has_js__ = __webpack_require__(37);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__toBufferView_js__ = __webpack_require__(290);\n\n\n\n\n\n\n\n\n\n\n\n// We use this string twice, so give it a name for minification.\nvar tagDataView = '[object DataView]';\n\n// Internal recursive comparison function for `_.isEqual`.\nfunction eq(a, b, aStack, bStack) {\n // Identical objects are equal. `0 === -0`, but they aren't identical.\n // See the [Harmony `egal` proposal](https://wiki.ecmascript.org/doku.php?id=harmony:egal).\n if (a === b) return a !== 0 || 1 / a === 1 / b;\n // `null` or `undefined` only equal to itself (strict comparison).\n if (a == null || b == null) return false;\n // `NaN`s are equivalent, but non-reflexive.\n if (a !== a) return b !== b;\n // Exhaust primitive checks\n var type = typeof a;\n if (type !== 'function' && type !== 'object' && typeof b != 'object') return false;\n return deepEq(a, b, aStack, bStack);\n}\n\n// Internal recursive comparison function for `_.isEqual`.\nfunction deepEq(a, b, aStack, bStack) {\n // Unwrap any wrapped objects.\n if (a instanceof __WEBPACK_IMPORTED_MODULE_0__underscore_js__[\"a\" /* default */]) a = a._wrapped;\n if (b instanceof __WEBPACK_IMPORTED_MODULE_0__underscore_js__[\"a\" /* default */]) b = b._wrapped;\n // Compare `[[Class]]` names.\n var className = __WEBPACK_IMPORTED_MODULE_1__setup_js__[\"t\" /* toString */].call(a);\n if (className !== __WEBPACK_IMPORTED_MODULE_1__setup_js__[\"t\" /* toString */].call(b)) return false;\n // Work around a bug in IE 10 - Edge 13.\n if (__WEBPACK_IMPORTED_MODULE_5__stringTagBug_js__[\"a\" /* hasStringTagBug */] && className == '[object Object]' && Object(__WEBPACK_IMPORTED_MODULE_6__isDataView_js__[\"a\" /* default */])(a)) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_6__isDataView_js__[\"a\" /* default */])(b)) return false;\n className = tagDataView;\n }\n switch (className) {\n // These types are compared by value.\n case '[object RegExp]':\n // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i')\n case '[object String]':\n // Primitives and their corresponding object wrappers are equivalent; thus, `\"5\"` is\n // equivalent to `new String(\"5\")`.\n return '' + a === '' + b;\n case '[object Number]':\n // `NaN`s are equivalent, but non-reflexive.\n // Object(NaN) is equivalent to NaN.\n if (+a !== +a) return +b !== +b;\n // An `egal` comparison is performed for other numeric values.\n return +a === 0 ? 1 / +a === 1 / b : +a === +b;\n case '[object Date]':\n case '[object Boolean]':\n // Coerce dates and booleans to numeric primitive values. Dates are compared by their\n // millisecond representations. Note that invalid dates with millisecond representations\n // of `NaN` are not equivalent.\n return +a === +b;\n case '[object Symbol]':\n return __WEBPACK_IMPORTED_MODULE_1__setup_js__[\"d\" /* SymbolProto */].valueOf.call(a) === __WEBPACK_IMPORTED_MODULE_1__setup_js__[\"d\" /* SymbolProto */].valueOf.call(b);\n case '[object ArrayBuffer]':\n case tagDataView:\n // Coerce to typed array so we can fall through.\n return deepEq(Object(__WEBPACK_IMPORTED_MODULE_9__toBufferView_js__[\"a\" /* default */])(a), Object(__WEBPACK_IMPORTED_MODULE_9__toBufferView_js__[\"a\" /* default */])(b), aStack, bStack);\n }\n\n var areArrays = className === '[object Array]';\n if (!areArrays && Object(__WEBPACK_IMPORTED_MODULE_3__isTypedArray_js__[\"a\" /* default */])(a)) {\n var byteLength = Object(__WEBPACK_IMPORTED_MODULE_2__getByteLength_js__[\"a\" /* default */])(a);\n if (byteLength !== Object(__WEBPACK_IMPORTED_MODULE_2__getByteLength_js__[\"a\" /* default */])(b)) return false;\n if (a.buffer === b.buffer && a.byteOffset === b.byteOffset) return true;\n areArrays = true;\n }\n if (!areArrays) {\n if (typeof a != 'object' || typeof b != 'object') return false;\n\n // Objects with different constructors are not equivalent, but `Object`s or `Array`s\n // from different frames are.\n var aCtor = a.constructor, bCtor = b.constructor;\n if (aCtor !== bCtor && !(Object(__WEBPACK_IMPORTED_MODULE_4__isFunction_js__[\"a\" /* default */])(aCtor) && aCtor instanceof aCtor &&\n Object(__WEBPACK_IMPORTED_MODULE_4__isFunction_js__[\"a\" /* default */])(bCtor) && bCtor instanceof bCtor)\n && ('constructor' in a && 'constructor' in b)) {\n return false;\n }\n }\n // Assume equality for cyclic structures. The algorithm for detecting cyclic\n // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.\n\n // Initializing stack of traversed objects.\n // It's done here since we only need them for objects and arrays comparison.\n aStack = aStack || [];\n bStack = bStack || [];\n var length = aStack.length;\n while (length--) {\n // Linear search. Performance is inversely proportional to the number of\n // unique nested structures.\n if (aStack[length] === a) return bStack[length] === b;\n }\n\n // Add the first object to the stack of traversed objects.\n aStack.push(a);\n bStack.push(b);\n\n // Recursively compare objects and arrays.\n if (areArrays) {\n // Compare array lengths to determine if a deep comparison is necessary.\n length = a.length;\n if (length !== b.length) return false;\n // Deep compare the contents, ignoring non-numeric properties.\n while (length--) {\n if (!eq(a[length], b[length], aStack, bStack)) return false;\n }\n } else {\n // Deep compare objects.\n var _keys = Object(__WEBPACK_IMPORTED_MODULE_7__keys_js__[\"a\" /* default */])(a), key;\n length = _keys.length;\n // Ensure that both objects contain the same number of properties before comparing deep equality.\n if (Object(__WEBPACK_IMPORTED_MODULE_7__keys_js__[\"a\" /* default */])(b).length !== length) return false;\n while (length--) {\n // Deep compare each member\n key = _keys[length];\n if (!(Object(__WEBPACK_IMPORTED_MODULE_8__has_js__[\"a\" /* default */])(b, key) && eq(a[key], b[key], aStack, bStack))) return false;\n }\n }\n // Remove the first object from the stack of traversed objects.\n aStack.pop();\n bStack.pop();\n return true;\n}\n\n// Perform a deep comparison to check if two objects are equal.\nfunction isEqual(a, b) {\n return eq(a, b);\n}\n\n\n/***/ }),\n/* 290 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = toBufferView;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__getByteLength_js__ = __webpack_require__(124);\n\n\n// Internal function to wrap or shallow-copy an ArrayBuffer,\n// typed array or DataView to a new view, reusing the buffer.\nfunction toBufferView(bufferSource) {\n return new Uint8Array(\n bufferSource.buffer || bufferSource,\n bufferSource.byteOffset || 0,\n Object(__WEBPACK_IMPORTED_MODULE_0__getByteLength_js__[\"a\" /* default */])(bufferSource)\n );\n}\n\n\n/***/ }),\n/* 291 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__tagTester_js__ = __webpack_require__(15);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__stringTagBug_js__ = __webpack_require__(74);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__methodFingerprint_js__ = __webpack_require__(125);\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (__WEBPACK_IMPORTED_MODULE_1__stringTagBug_js__[\"b\" /* isIE11 */] ? Object(__WEBPACK_IMPORTED_MODULE_2__methodFingerprint_js__[\"a\" /* ie11fingerprint */])(__WEBPACK_IMPORTED_MODULE_2__methodFingerprint_js__[\"b\" /* mapMethods */]) : Object(__WEBPACK_IMPORTED_MODULE_0__tagTester_js__[\"a\" /* default */])('Map'));\n\n\n/***/ }),\n/* 292 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__tagTester_js__ = __webpack_require__(15);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__stringTagBug_js__ = __webpack_require__(74);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__methodFingerprint_js__ = __webpack_require__(125);\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (__WEBPACK_IMPORTED_MODULE_1__stringTagBug_js__[\"b\" /* isIE11 */] ? Object(__WEBPACK_IMPORTED_MODULE_2__methodFingerprint_js__[\"a\" /* ie11fingerprint */])(__WEBPACK_IMPORTED_MODULE_2__methodFingerprint_js__[\"d\" /* weakMapMethods */]) : Object(__WEBPACK_IMPORTED_MODULE_0__tagTester_js__[\"a\" /* default */])('WeakMap'));\n\n\n/***/ }),\n/* 293 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__tagTester_js__ = __webpack_require__(15);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__stringTagBug_js__ = __webpack_require__(74);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__methodFingerprint_js__ = __webpack_require__(125);\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (__WEBPACK_IMPORTED_MODULE_1__stringTagBug_js__[\"b\" /* isIE11 */] ? Object(__WEBPACK_IMPORTED_MODULE_2__methodFingerprint_js__[\"a\" /* ie11fingerprint */])(__WEBPACK_IMPORTED_MODULE_2__methodFingerprint_js__[\"c\" /* setMethods */]) : Object(__WEBPACK_IMPORTED_MODULE_0__tagTester_js__[\"a\" /* default */])('Set'));\n\n\n/***/ }),\n/* 294 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__tagTester_js__ = __webpack_require__(15);\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__tagTester_js__[\"a\" /* default */])('WeakSet'));\n\n\n/***/ }),\n/* 295 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = pairs;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__keys_js__ = __webpack_require__(12);\n\n\n// Convert an object into a list of `[key, value]` pairs.\n// The opposite of `_.object` with one argument.\nfunction pairs(obj) {\n var _keys = Object(__WEBPACK_IMPORTED_MODULE_0__keys_js__[\"a\" /* default */])(obj);\n var length = _keys.length;\n var pairs = Array(length);\n for (var i = 0; i < length; i++) {\n pairs[i] = [_keys[i], obj[_keys[i]]];\n }\n return pairs;\n}\n\n\n/***/ }),\n/* 296 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = create;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__baseCreate_js__ = __webpack_require__(178);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__extendOwn_js__ = __webpack_require__(127);\n\n\n\n// Creates an object that inherits from the given prototype object.\n// If additional properties are provided then they will be added to the\n// created object.\nfunction create(prototype, props) {\n var result = Object(__WEBPACK_IMPORTED_MODULE_0__baseCreate_js__[\"a\" /* default */])(prototype);\n if (props) Object(__WEBPACK_IMPORTED_MODULE_1__extendOwn_js__[\"a\" /* default */])(result, props);\n return result;\n}\n\n\n/***/ }),\n/* 297 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = tap;\n// Invokes `interceptor` with the `obj` and then returns `obj`.\n// The primary purpose of this method is to \"tap into\" a method chain, in\n// order to perform operations on intermediate results within the chain.\nfunction tap(obj, interceptor) {\n interceptor(obj);\n return obj;\n}\n\n\n/***/ }),\n/* 298 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = has;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__has_js__ = __webpack_require__(37);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__toPath_js__ = __webpack_require__(76);\n\n\n\n// Shortcut function for checking if an object has a given property directly on\n// itself (in other words, not on a prototype). Unlike the internal `has`\n// function, this public version can also traverse nested properties.\nfunction has(obj, path) {\n path = Object(__WEBPACK_IMPORTED_MODULE_1__toPath_js__[\"a\" /* default */])(path);\n var length = path.length;\n for (var i = 0; i < length; i++) {\n var key = path[i];\n if (!Object(__WEBPACK_IMPORTED_MODULE_0__has_js__[\"a\" /* default */])(obj, key)) return false;\n obj = obj[key];\n }\n return !!length;\n}\n\n\n/***/ }),\n/* 299 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = mapObject;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__cb_js__ = __webpack_require__(18);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__keys_js__ = __webpack_require__(12);\n\n\n\n// Returns the results of applying the `iteratee` to each element of `obj`.\n// In contrast to `_.map` it returns an object.\nfunction mapObject(obj, iteratee, context) {\n iteratee = Object(__WEBPACK_IMPORTED_MODULE_0__cb_js__[\"a\" /* default */])(iteratee, context);\n var _keys = Object(__WEBPACK_IMPORTED_MODULE_1__keys_js__[\"a\" /* default */])(obj),\n length = _keys.length,\n results = {};\n for (var index = 0; index < length; index++) {\n var currentKey = _keys[index];\n results[currentKey] = iteratee(obj[currentKey], currentKey, obj);\n }\n return results;\n}\n\n\n/***/ }),\n/* 300 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = propertyOf;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__noop_js__ = __webpack_require__(184);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__get_js__ = __webpack_require__(180);\n\n\n\n// Generates a function for a given object that returns a given property.\nfunction propertyOf(obj) {\n if (obj == null) return __WEBPACK_IMPORTED_MODULE_0__noop_js__[\"a\" /* default */];\n return function(path) {\n return Object(__WEBPACK_IMPORTED_MODULE_1__get_js__[\"a\" /* default */])(obj, path);\n };\n}\n\n\n/***/ }),\n/* 301 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = times;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__optimizeCb_js__ = __webpack_require__(77);\n\n\n// Run a function **n** times.\nfunction times(n, iteratee, context) {\n var accum = Array(Math.max(0, n));\n iteratee = Object(__WEBPACK_IMPORTED_MODULE_0__optimizeCb_js__[\"a\" /* default */])(iteratee, context, 1);\n for (var i = 0; i < n; i++) accum[i] = iteratee(i);\n return accum;\n}\n\n\n/***/ }),\n/* 302 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__createEscaper_js__ = __webpack_require__(186);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__escapeMap_js__ = __webpack_require__(187);\n\n\n\n// Function for escaping strings to HTML interpolation.\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__createEscaper_js__[\"a\" /* default */])(__WEBPACK_IMPORTED_MODULE_1__escapeMap_js__[\"a\" /* default */]));\n\n\n/***/ }),\n/* 303 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__createEscaper_js__ = __webpack_require__(186);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__unescapeMap_js__ = __webpack_require__(304);\n\n\n\n// Function for unescaping strings from HTML interpolation.\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__createEscaper_js__[\"a\" /* default */])(__WEBPACK_IMPORTED_MODULE_1__unescapeMap_js__[\"a\" /* default */]));\n\n\n/***/ }),\n/* 304 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__invert_js__ = __webpack_require__(174);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__escapeMap_js__ = __webpack_require__(187);\n\n\n\n// Internal list of HTML entities for unescaping.\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__invert_js__[\"a\" /* default */])(__WEBPACK_IMPORTED_MODULE_1__escapeMap_js__[\"a\" /* default */]));\n\n\n/***/ }),\n/* 305 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = template;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__defaults_js__ = __webpack_require__(177);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__underscore_js__ = __webpack_require__(23);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__templateSettings_js__ = __webpack_require__(188);\n\n\n\n\n// When customizing `_.templateSettings`, if you don't want to define an\n// interpolation, evaluation or escaping regex, we need one that is\n// guaranteed not to match.\nvar noMatch = /(.)^/;\n\n// Certain characters need to be escaped so that they can be put into a\n// string literal.\nvar escapes = {\n \"'\": \"'\",\n '\\\\': '\\\\',\n '\\r': 'r',\n '\\n': 'n',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n};\n\nvar escapeRegExp = /\\\\|'|\\r|\\n|\\u2028|\\u2029/g;\n\nfunction escapeChar(match) {\n return '\\\\' + escapes[match];\n}\n\nvar bareIdentifier = /^\\s*(\\w|\\$)+\\s*$/;\n\n// JavaScript micro-templating, similar to John Resig's implementation.\n// Underscore templating handles arbitrary delimiters, preserves whitespace,\n// and correctly escapes quotes within interpolated code.\n// NB: `oldSettings` only exists for backwards compatibility.\nfunction template(text, settings, oldSettings) {\n if (!settings && oldSettings) settings = oldSettings;\n settings = Object(__WEBPACK_IMPORTED_MODULE_0__defaults_js__[\"a\" /* default */])({}, settings, __WEBPACK_IMPORTED_MODULE_1__underscore_js__[\"a\" /* default */].templateSettings);\n\n // Combine delimiters into one regular expression via alternation.\n var matcher = RegExp([\n (settings.escape || noMatch).source,\n (settings.interpolate || noMatch).source,\n (settings.evaluate || noMatch).source\n ].join('|') + '|$', 'g');\n\n // Compile the template source, escaping string literals appropriately.\n var index = 0;\n var source = \"__p+='\";\n text.replace(matcher, function(match, escape, interpolate, evaluate, offset) {\n source += text.slice(index, offset).replace(escapeRegExp, escapeChar);\n index = offset + match.length;\n\n if (escape) {\n source += \"'+\\n((__t=(\" + escape + \"))==null?'':_.escape(__t))+\\n'\";\n } else if (interpolate) {\n source += \"'+\\n((__t=(\" + interpolate + \"))==null?'':__t)+\\n'\";\n } else if (evaluate) {\n source += \"';\\n\" + evaluate + \"\\n__p+='\";\n }\n\n // Adobe VMs need the match returned to produce the correct offset.\n return match;\n });\n source += \"';\\n\";\n\n var argument = settings.variable;\n if (argument) {\n if (!bareIdentifier.test(argument)) throw new Error(argument);\n } else {\n // If a variable is not specified, place data values in local scope.\n source = 'with(obj||{}){\\n' + source + '}\\n';\n argument = 'obj';\n }\n\n source = \"var __t,__p='',__j=Array.prototype.join,\" +\n \"print=function(){__p+=__j.call(arguments,'');};\\n\" +\n source + 'return __p;\\n';\n\n var render;\n try {\n render = new Function(argument, '_', source);\n } catch (e) {\n e.source = source;\n throw e;\n }\n\n var template = function(data) {\n return render.call(this, data, __WEBPACK_IMPORTED_MODULE_1__underscore_js__[\"a\" /* default */]);\n };\n\n // Provide the compiled source as a convenience for precompilation.\n template.source = 'function(' + argument + '){\\n' + source + '}';\n\n return template;\n}\n\n\n/***/ }),\n/* 306 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = result;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__isFunction_js__ = __webpack_require__(26);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__toPath_js__ = __webpack_require__(76);\n\n\n\n// Traverses the children of `obj` along `path`. If a child is a function, it\n// is invoked with its parent as context. Returns the value of the final\n// child, or `fallback` if any child is undefined.\nfunction result(obj, path, fallback) {\n path = Object(__WEBPACK_IMPORTED_MODULE_1__toPath_js__[\"a\" /* default */])(path);\n var length = path.length;\n if (!length) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__isFunction_js__[\"a\" /* default */])(fallback) ? fallback.call(obj) : fallback;\n }\n for (var i = 0; i < length; i++) {\n var prop = obj == null ? void 0 : obj[path[i]];\n if (prop === void 0) {\n prop = fallback;\n i = length; // Ensure we don't continue iterating.\n }\n obj = Object(__WEBPACK_IMPORTED_MODULE_0__isFunction_js__[\"a\" /* default */])(prop) ? prop.call(obj) : prop;\n }\n return obj;\n}\n\n\n/***/ }),\n/* 307 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = uniqueId;\n// Generate a unique integer id (unique within the entire client session).\n// Useful for temporary DOM ids.\nvar idCounter = 0;\nfunction uniqueId(prefix) {\n var id = ++idCounter + '';\n return prefix ? prefix + id : id;\n}\n\n\n/***/ }),\n/* 308 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = chain;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__underscore_js__ = __webpack_require__(23);\n\n\n// Start chaining a wrapped Underscore object.\nfunction chain(obj) {\n var instance = Object(__WEBPACK_IMPORTED_MODULE_0__underscore_js__[\"a\" /* default */])(obj);\n instance._chain = true;\n return instance;\n}\n\n\n/***/ }),\n/* 309 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__restArguments_js__ = __webpack_require__(22);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__flatten_js__ = __webpack_require__(57);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__bind_js__ = __webpack_require__(190);\n\n\n\n\n// Bind a number of an object's methods to that object. Remaining arguments\n// are the method names to be bound. Useful for ensuring that all callbacks\n// defined on an object belong to it.\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__restArguments_js__[\"a\" /* default */])(function(obj, keys) {\n keys = Object(__WEBPACK_IMPORTED_MODULE_1__flatten_js__[\"a\" /* default */])(keys, false, false);\n var index = keys.length;\n if (index < 1) throw new Error('bindAll must be passed function names');\n while (index--) {\n var key = keys[index];\n obj[key] = Object(__WEBPACK_IMPORTED_MODULE_2__bind_js__[\"a\" /* default */])(obj[key], obj);\n }\n return obj;\n}));\n\n\n/***/ }),\n/* 310 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = memoize;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__has_js__ = __webpack_require__(37);\n\n\n// Memoize an expensive function by storing its results.\nfunction memoize(func, hasher) {\n var memoize = function(key) {\n var cache = memoize.cache;\n var address = '' + (hasher ? hasher.apply(this, arguments) : key);\n if (!Object(__WEBPACK_IMPORTED_MODULE_0__has_js__[\"a\" /* default */])(cache, address)) cache[address] = func.apply(this, arguments);\n return cache[address];\n };\n memoize.cache = {};\n return memoize;\n}\n\n\n/***/ }),\n/* 311 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__partial_js__ = __webpack_require__(97);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__delay_js__ = __webpack_require__(191);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__underscore_js__ = __webpack_require__(23);\n\n\n\n\n// Defers a function, scheduling it to run after the current call stack has\n// cleared.\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__partial_js__[\"a\" /* default */])(__WEBPACK_IMPORTED_MODULE_1__delay_js__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_2__underscore_js__[\"a\" /* default */], 1));\n\n\n/***/ }),\n/* 312 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = throttle;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__now_js__ = __webpack_require__(131);\n\n\n// Returns a function, that, when invoked, will only be triggered at most once\n// during a given window of time. Normally, the throttled function will run\n// as much as it can, without ever going more than once per `wait` duration;\n// but if you'd like to disable the execution on the leading edge, pass\n// `{leading: false}`. To disable execution on the trailing edge, ditto.\nfunction throttle(func, wait, options) {\n var timeout, context, args, result;\n var previous = 0;\n if (!options) options = {};\n\n var later = function() {\n previous = options.leading === false ? 0 : Object(__WEBPACK_IMPORTED_MODULE_0__now_js__[\"a\" /* default */])();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n };\n\n var throttled = function() {\n var _now = Object(__WEBPACK_IMPORTED_MODULE_0__now_js__[\"a\" /* default */])();\n if (!previous && options.leading === false) previous = _now;\n var remaining = wait - (_now - previous);\n context = this;\n args = arguments;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = _now;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\n\n throttled.cancel = function() {\n clearTimeout(timeout);\n previous = 0;\n timeout = context = args = null;\n };\n\n return throttled;\n}\n\n\n/***/ }),\n/* 313 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = debounce;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__restArguments_js__ = __webpack_require__(22);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__now_js__ = __webpack_require__(131);\n\n\n\n// When a sequence of calls of the returned function ends, the argument\n// function is triggered. The end of a sequence is defined by the `wait`\n// parameter. If `immediate` is passed, the argument function will be\n// triggered at the beginning of the sequence instead of at the end.\nfunction debounce(func, wait, immediate) {\n var timeout, previous, args, result, context;\n\n var later = function() {\n var passed = Object(__WEBPACK_IMPORTED_MODULE_1__now_js__[\"a\" /* default */])() - previous;\n if (wait > passed) {\n timeout = setTimeout(later, wait - passed);\n } else {\n timeout = null;\n if (!immediate) result = func.apply(context, args);\n // This check is needed because `func` can recursively invoke `debounced`.\n if (!timeout) args = context = null;\n }\n };\n\n var debounced = Object(__WEBPACK_IMPORTED_MODULE_0__restArguments_js__[\"a\" /* default */])(function(_args) {\n context = this;\n args = _args;\n previous = Object(__WEBPACK_IMPORTED_MODULE_1__now_js__[\"a\" /* default */])();\n if (!timeout) {\n timeout = setTimeout(later, wait);\n if (immediate) result = func.apply(context, args);\n }\n return result;\n });\n\n debounced.cancel = function() {\n clearTimeout(timeout);\n timeout = args = context = null;\n };\n\n return debounced;\n}\n\n\n/***/ }),\n/* 314 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = wrap;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__partial_js__ = __webpack_require__(97);\n\n\n// Returns the first function passed as an argument to the second,\n// allowing you to adjust arguments, run code before and after, and\n// conditionally execute the original function.\nfunction wrap(func, wrapper) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__partial_js__[\"a\" /* default */])(wrapper, func);\n}\n\n\n/***/ }),\n/* 315 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = compose;\n// Returns a function that is the composition of a list of functions, each\n// consuming the return value of the function that follows.\nfunction compose() {\n var args = arguments;\n var start = args.length - 1;\n return function() {\n var i = start;\n var result = args[start].apply(this, arguments);\n while (i--) result = args[i].call(this, result);\n return result;\n };\n}\n\n\n/***/ }),\n/* 316 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = after;\n// Returns a function that will only be executed on and after the Nth call.\nfunction after(times, func) {\n return function() {\n if (--times < 1) {\n return func.apply(this, arguments);\n }\n };\n}\n\n\n/***/ }),\n/* 317 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__partial_js__ = __webpack_require__(97);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__before_js__ = __webpack_require__(192);\n\n\n\n// Returns a function that will be executed at most one time, no matter how\n// often you call it. Useful for lazy initialization.\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__partial_js__[\"a\" /* default */])(__WEBPACK_IMPORTED_MODULE_1__before_js__[\"a\" /* default */], 2));\n\n\n/***/ }),\n/* 318 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__findLastIndex_js__ = __webpack_require__(195);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__createIndexFinder_js__ = __webpack_require__(198);\n\n\n\n// Return the position of the last occurrence of an item in an array,\n// or -1 if the item is not included in the array.\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_1__createIndexFinder_js__[\"a\" /* default */])(-1, __WEBPACK_IMPORTED_MODULE_0__findLastIndex_js__[\"a\" /* default */]));\n\n\n/***/ }),\n/* 319 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = findWhere;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__find_js__ = __webpack_require__(199);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__matcher_js__ = __webpack_require__(96);\n\n\n\n// Convenience version of a common use case of `_.find`: getting the first\n// object containing specific `key:value` pairs.\nfunction findWhere(obj, attrs) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__find_js__[\"a\" /* default */])(obj, Object(__WEBPACK_IMPORTED_MODULE_1__matcher_js__[\"a\" /* default */])(attrs));\n}\n\n\n/***/ }),\n/* 320 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__createReduce_js__ = __webpack_require__(200);\n\n\n// **Reduce** builds up a single result from a list of values, aka `inject`,\n// or `foldl`.\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__createReduce_js__[\"a\" /* default */])(1));\n\n\n/***/ }),\n/* 321 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__createReduce_js__ = __webpack_require__(200);\n\n\n// The right-associative version of reduce, also known as `foldr`.\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__createReduce_js__[\"a\" /* default */])(-1));\n\n\n/***/ }),\n/* 322 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = reject;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__filter_js__ = __webpack_require__(78);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__negate_js__ = __webpack_require__(132);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__cb_js__ = __webpack_require__(18);\n\n\n\n\n// Return all the elements for which a truth test fails.\nfunction reject(obj, predicate, context) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__filter_js__[\"a\" /* default */])(obj, Object(__WEBPACK_IMPORTED_MODULE_1__negate_js__[\"a\" /* default */])(Object(__WEBPACK_IMPORTED_MODULE_2__cb_js__[\"a\" /* default */])(predicate)), context);\n}\n\n\n/***/ }),\n/* 323 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = every;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__cb_js__ = __webpack_require__(18);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__isArrayLike_js__ = __webpack_require__(24);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__keys_js__ = __webpack_require__(12);\n\n\n\n\n// Determine whether all of the elements pass a truth test.\nfunction every(obj, predicate, context) {\n predicate = Object(__WEBPACK_IMPORTED_MODULE_0__cb_js__[\"a\" /* default */])(predicate, context);\n var _keys = !Object(__WEBPACK_IMPORTED_MODULE_1__isArrayLike_js__[\"a\" /* default */])(obj) && Object(__WEBPACK_IMPORTED_MODULE_2__keys_js__[\"a\" /* default */])(obj),\n length = (_keys || obj).length;\n for (var index = 0; index < length; index++) {\n var currentKey = _keys ? _keys[index] : index;\n if (!predicate(obj[currentKey], currentKey, obj)) return false;\n }\n return true;\n}\n\n\n/***/ }),\n/* 324 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = some;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__cb_js__ = __webpack_require__(18);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__isArrayLike_js__ = __webpack_require__(24);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__keys_js__ = __webpack_require__(12);\n\n\n\n\n// Determine if at least one element in the object passes a truth test.\nfunction some(obj, predicate, context) {\n predicate = Object(__WEBPACK_IMPORTED_MODULE_0__cb_js__[\"a\" /* default */])(predicate, context);\n var _keys = !Object(__WEBPACK_IMPORTED_MODULE_1__isArrayLike_js__[\"a\" /* default */])(obj) && Object(__WEBPACK_IMPORTED_MODULE_2__keys_js__[\"a\" /* default */])(obj),\n length = (_keys || obj).length;\n for (var index = 0; index < length; index++) {\n var currentKey = _keys ? _keys[index] : index;\n if (predicate(obj[currentKey], currentKey, obj)) return true;\n }\n return false;\n}\n\n\n/***/ }),\n/* 325 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__restArguments_js__ = __webpack_require__(22);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__isFunction_js__ = __webpack_require__(26);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__map_js__ = __webpack_require__(58);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__deepGet_js__ = __webpack_require__(128);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__toPath_js__ = __webpack_require__(76);\n\n\n\n\n\n\n// Invoke a method (with arguments) on every item in a collection.\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__restArguments_js__[\"a\" /* default */])(function(obj, path, args) {\n var contextPath, func;\n if (Object(__WEBPACK_IMPORTED_MODULE_1__isFunction_js__[\"a\" /* default */])(path)) {\n func = path;\n } else {\n path = Object(__WEBPACK_IMPORTED_MODULE_4__toPath_js__[\"a\" /* default */])(path);\n contextPath = path.slice(0, -1);\n path = path[path.length - 1];\n }\n return Object(__WEBPACK_IMPORTED_MODULE_2__map_js__[\"a\" /* default */])(obj, function(context) {\n var method = func;\n if (!method) {\n if (contextPath && contextPath.length) {\n context = Object(__WEBPACK_IMPORTED_MODULE_3__deepGet_js__[\"a\" /* default */])(context, contextPath);\n }\n if (context == null) return void 0;\n method = context[path];\n }\n return method == null ? method : method.apply(context, args);\n });\n}));\n\n\n/***/ }),\n/* 326 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = where;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__filter_js__ = __webpack_require__(78);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__matcher_js__ = __webpack_require__(96);\n\n\n\n// Convenience version of a common use case of `_.filter`: selecting only\n// objects containing specific `key:value` pairs.\nfunction where(obj, attrs) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__filter_js__[\"a\" /* default */])(obj, Object(__WEBPACK_IMPORTED_MODULE_1__matcher_js__[\"a\" /* default */])(attrs));\n}\n\n\n/***/ }),\n/* 327 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = min;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__isArrayLike_js__ = __webpack_require__(24);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__values_js__ = __webpack_require__(56);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__cb_js__ = __webpack_require__(18);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__each_js__ = __webpack_require__(47);\n\n\n\n\n\n// Return the minimum element (or element-based computation).\nfunction min(obj, iteratee, context) {\n var result = Infinity, lastComputed = Infinity,\n value, computed;\n if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) {\n obj = Object(__WEBPACK_IMPORTED_MODULE_0__isArrayLike_js__[\"a\" /* default */])(obj) ? obj : Object(__WEBPACK_IMPORTED_MODULE_1__values_js__[\"a\" /* default */])(obj);\n for (var i = 0, length = obj.length; i < length; i++) {\n value = obj[i];\n if (value != null && value < result) {\n result = value;\n }\n }\n } else {\n iteratee = Object(__WEBPACK_IMPORTED_MODULE_2__cb_js__[\"a\" /* default */])(iteratee, context);\n Object(__WEBPACK_IMPORTED_MODULE_3__each_js__[\"a\" /* default */])(obj, function(v, index, list) {\n computed = iteratee(v, index, list);\n if (computed < lastComputed || computed === Infinity && result === Infinity) {\n result = v;\n lastComputed = computed;\n }\n });\n }\n return result;\n}\n\n\n/***/ }),\n/* 328 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = shuffle;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__sample_js__ = __webpack_require__(202);\n\n\n// Shuffle a collection.\nfunction shuffle(obj) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__sample_js__[\"a\" /* default */])(obj, Infinity);\n}\n\n\n/***/ }),\n/* 329 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = sortBy;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__cb_js__ = __webpack_require__(18);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__pluck_js__ = __webpack_require__(134);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__map_js__ = __webpack_require__(58);\n\n\n\n\n// Sort the object's values by a criterion produced by an iteratee.\nfunction sortBy(obj, iteratee, context) {\n var index = 0;\n iteratee = Object(__WEBPACK_IMPORTED_MODULE_0__cb_js__[\"a\" /* default */])(iteratee, context);\n return Object(__WEBPACK_IMPORTED_MODULE_1__pluck_js__[\"a\" /* default */])(Object(__WEBPACK_IMPORTED_MODULE_2__map_js__[\"a\" /* default */])(obj, function(value, key, list) {\n return {\n value: value,\n index: index++,\n criteria: iteratee(value, key, list)\n };\n }).sort(function(left, right) {\n var a = left.criteria;\n var b = right.criteria;\n if (a !== b) {\n if (a > b || a === void 0) return 1;\n if (a < b || b === void 0) return -1;\n }\n return left.index - right.index;\n }), 'value');\n}\n\n\n/***/ }),\n/* 330 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__group_js__ = __webpack_require__(98);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__has_js__ = __webpack_require__(37);\n\n\n\n// Groups the object's values by a criterion. Pass either a string attribute\n// to group by, or a function that returns the criterion.\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__group_js__[\"a\" /* default */])(function(result, value, key) {\n if (Object(__WEBPACK_IMPORTED_MODULE_1__has_js__[\"a\" /* default */])(result, key)) result[key].push(value); else result[key] = [value];\n}));\n\n\n/***/ }),\n/* 331 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__group_js__ = __webpack_require__(98);\n\n\n// Indexes the object's values by a criterion, similar to `_.groupBy`, but for\n// when you know that your index values will be unique.\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__group_js__[\"a\" /* default */])(function(result, value, key) {\n result[key] = value;\n}));\n\n\n/***/ }),\n/* 332 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__group_js__ = __webpack_require__(98);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__has_js__ = __webpack_require__(37);\n\n\n\n// Counts instances of an object that group by a certain criterion. Pass\n// either a string attribute to count by, or a function that returns the\n// criterion.\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__group_js__[\"a\" /* default */])(function(result, value, key) {\n if (Object(__WEBPACK_IMPORTED_MODULE_1__has_js__[\"a\" /* default */])(result, key)) result[key]++; else result[key] = 1;\n}));\n\n\n/***/ }),\n/* 333 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__group_js__ = __webpack_require__(98);\n\n\n// Split a collection into two arrays: one whose elements all pass the given\n// truth test, and one whose elements all do not pass the truth test.\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__group_js__[\"a\" /* default */])(function(result, value, pass) {\n result[pass ? 0 : 1].push(value);\n}, true));\n\n\n/***/ }),\n/* 334 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = toArray;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__isArray_js__ = __webpack_require__(46);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__setup_js__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__isString_js__ = __webpack_require__(121);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__isArrayLike_js__ = __webpack_require__(24);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__map_js__ = __webpack_require__(58);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__identity_js__ = __webpack_require__(129);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__values_js__ = __webpack_require__(56);\n\n\n\n\n\n\n\n\n// Safely create a real, live array from anything iterable.\nvar reStrSymbol = /[^\\ud800-\\udfff]|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff]/g;\nfunction toArray(obj) {\n if (!obj) return [];\n if (Object(__WEBPACK_IMPORTED_MODULE_0__isArray_js__[\"a\" /* default */])(obj)) return __WEBPACK_IMPORTED_MODULE_1__setup_js__[\"q\" /* slice */].call(obj);\n if (Object(__WEBPACK_IMPORTED_MODULE_2__isString_js__[\"a\" /* default */])(obj)) {\n // Keep surrogate pair characters together.\n return obj.match(reStrSymbol);\n }\n if (Object(__WEBPACK_IMPORTED_MODULE_3__isArrayLike_js__[\"a\" /* default */])(obj)) return Object(__WEBPACK_IMPORTED_MODULE_4__map_js__[\"a\" /* default */])(obj, __WEBPACK_IMPORTED_MODULE_5__identity_js__[\"a\" /* default */]);\n return Object(__WEBPACK_IMPORTED_MODULE_6__values_js__[\"a\" /* default */])(obj);\n}\n\n\n/***/ }),\n/* 335 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = size;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__isArrayLike_js__ = __webpack_require__(24);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__keys_js__ = __webpack_require__(12);\n\n\n\n// Return the number of elements in a collection.\nfunction size(obj) {\n if (obj == null) return 0;\n return Object(__WEBPACK_IMPORTED_MODULE_0__isArrayLike_js__[\"a\" /* default */])(obj) ? obj.length : Object(__WEBPACK_IMPORTED_MODULE_1__keys_js__[\"a\" /* default */])(obj).length;\n}\n\n\n/***/ }),\n/* 336 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = keyInObj;\n// Internal `_.pick` helper function to determine whether `key` is an enumerable\n// property name of `obj`.\nfunction keyInObj(value, key, obj) {\n return key in obj;\n}\n\n\n/***/ }),\n/* 337 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__restArguments_js__ = __webpack_require__(22);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__isFunction_js__ = __webpack_require__(26);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__negate_js__ = __webpack_require__(132);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__map_js__ = __webpack_require__(58);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__flatten_js__ = __webpack_require__(57);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__contains_js__ = __webpack_require__(79);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__pick_js__ = __webpack_require__(203);\n\n\n\n\n\n\n\n\n// Return a copy of the object without the disallowed properties.\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__restArguments_js__[\"a\" /* default */])(function(obj, keys) {\n var iteratee = keys[0], context;\n if (Object(__WEBPACK_IMPORTED_MODULE_1__isFunction_js__[\"a\" /* default */])(iteratee)) {\n iteratee = Object(__WEBPACK_IMPORTED_MODULE_2__negate_js__[\"a\" /* default */])(iteratee);\n if (keys.length > 1) context = keys[1];\n } else {\n keys = Object(__WEBPACK_IMPORTED_MODULE_3__map_js__[\"a\" /* default */])(Object(__WEBPACK_IMPORTED_MODULE_4__flatten_js__[\"a\" /* default */])(keys, false, false), String);\n iteratee = function(value, key) {\n return !Object(__WEBPACK_IMPORTED_MODULE_5__contains_js__[\"a\" /* default */])(keys, key);\n };\n }\n return Object(__WEBPACK_IMPORTED_MODULE_6__pick_js__[\"a\" /* default */])(obj, iteratee, context);\n}));\n\n\n/***/ }),\n/* 338 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = first;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__initial_js__ = __webpack_require__(204);\n\n\n// Get the first element of an array. Passing **n** will return the first N\n// values in the array. The **guard** check allows it to work with `_.map`.\nfunction first(array, n, guard) {\n if (array == null || array.length < 1) return n == null || guard ? void 0 : [];\n if (n == null || guard) return array[0];\n return Object(__WEBPACK_IMPORTED_MODULE_0__initial_js__[\"a\" /* default */])(array, array.length - n);\n}\n\n\n/***/ }),\n/* 339 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = last;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__rest_js__ = __webpack_require__(205);\n\n\n// Get the last element of an array. Passing **n** will return the last N\n// values in the array.\nfunction last(array, n, guard) {\n if (array == null || array.length < 1) return n == null || guard ? void 0 : [];\n if (n == null || guard) return array[array.length - 1];\n return Object(__WEBPACK_IMPORTED_MODULE_0__rest_js__[\"a\" /* default */])(array, Math.max(0, array.length - n));\n}\n\n\n/***/ }),\n/* 340 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = compact;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__filter_js__ = __webpack_require__(78);\n\n\n// Trim out all falsy values from an array.\nfunction compact(array) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__filter_js__[\"a\" /* default */])(array, Boolean);\n}\n\n\n/***/ }),\n/* 341 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = flatten;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__flatten_js__ = __webpack_require__(57);\n\n\n// Flatten out an array, either recursively (by default), or up to `depth`.\n// Passing `true` or `false` as `depth` means `1` or `Infinity`, respectively.\nfunction flatten(array, depth) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__flatten_js__[\"a\" /* default */])(array, depth, false);\n}\n\n\n/***/ }),\n/* 342 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__restArguments_js__ = __webpack_require__(22);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__difference_js__ = __webpack_require__(206);\n\n\n\n// Return a version of the array that does not contain the specified value(s).\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__restArguments_js__[\"a\" /* default */])(function(array, otherArrays) {\n return Object(__WEBPACK_IMPORTED_MODULE_1__difference_js__[\"a\" /* default */])(array, otherArrays);\n}));\n\n\n/***/ }),\n/* 343 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__restArguments_js__ = __webpack_require__(22);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__uniq_js__ = __webpack_require__(207);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__flatten_js__ = __webpack_require__(57);\n\n\n\n\n// Produce an array that contains the union: each distinct element from all of\n// the passed-in arrays.\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__restArguments_js__[\"a\" /* default */])(function(arrays) {\n return Object(__WEBPACK_IMPORTED_MODULE_1__uniq_js__[\"a\" /* default */])(Object(__WEBPACK_IMPORTED_MODULE_2__flatten_js__[\"a\" /* default */])(arrays, true, true));\n}));\n\n\n/***/ }),\n/* 344 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = intersection;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__getLength_js__ = __webpack_require__(27);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__contains_js__ = __webpack_require__(79);\n\n\n\n// Produce an array that contains every item shared between all the\n// passed-in arrays.\nfunction intersection(array) {\n var result = [];\n var argsLength = arguments.length;\n for (var i = 0, length = Object(__WEBPACK_IMPORTED_MODULE_0__getLength_js__[\"a\" /* default */])(array); i < length; i++) {\n var item = array[i];\n if (Object(__WEBPACK_IMPORTED_MODULE_1__contains_js__[\"a\" /* default */])(result, item)) continue;\n var j;\n for (j = 1; j < argsLength; j++) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_1__contains_js__[\"a\" /* default */])(arguments[j], item)) break;\n }\n if (j === argsLength) result.push(item);\n }\n return result;\n}\n\n\n/***/ }),\n/* 345 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__restArguments_js__ = __webpack_require__(22);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__unzip_js__ = __webpack_require__(208);\n\n\n\n// Zip together multiple lists into a single array -- elements that share\n// an index go together.\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__restArguments_js__[\"a\" /* default */])(__WEBPACK_IMPORTED_MODULE_1__unzip_js__[\"a\" /* default */]));\n\n\n/***/ }),\n/* 346 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = object;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__getLength_js__ = __webpack_require__(27);\n\n\n// Converts lists into objects. Pass either a single array of `[key, value]`\n// pairs, or two parallel arrays of the same length -- one of keys, and one of\n// the corresponding values. Passing by pairs is the reverse of `_.pairs`.\nfunction object(list, values) {\n var result = {};\n for (var i = 0, length = Object(__WEBPACK_IMPORTED_MODULE_0__getLength_js__[\"a\" /* default */])(list); i < length; i++) {\n if (values) {\n result[list[i]] = values[i];\n } else {\n result[list[i][0]] = list[i][1];\n }\n }\n return result;\n}\n\n\n/***/ }),\n/* 347 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = range;\n// Generate an integer Array containing an arithmetic progression. A port of\n// the native Python `range()` function. See\n// [the Python documentation](https://docs.python.org/library/functions.html#range).\nfunction range(start, stop, step) {\n if (stop == null) {\n stop = start || 0;\n start = 0;\n }\n if (!step) {\n step = stop < start ? -1 : 1;\n }\n\n var length = Math.max(Math.ceil((stop - start) / step), 0);\n var range = Array(length);\n\n for (var idx = 0; idx < length; idx++, start += step) {\n range[idx] = start;\n }\n\n return range;\n}\n\n\n/***/ }),\n/* 348 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = chunk;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__setup_js__ = __webpack_require__(3);\n\n\n// Chunk a single array into multiple arrays, each containing `count` or fewer\n// items.\nfunction chunk(array, count) {\n if (count == null || count < 1) return [];\n var result = [];\n var i = 0, length = array.length;\n while (i < length) {\n result.push(__WEBPACK_IMPORTED_MODULE_0__setup_js__[\"q\" /* slice */].call(array, i, i += count));\n }\n return result;\n}\n\n\n/***/ }),\n/* 349 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = mixin;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__underscore_js__ = __webpack_require__(23);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__each_js__ = __webpack_require__(47);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__functions_js__ = __webpack_require__(175);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__setup_js__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__chainResult_js__ = __webpack_require__(209);\n\n\n\n\n\n\n// Add your own custom functions to the Underscore object.\nfunction mixin(obj) {\n Object(__WEBPACK_IMPORTED_MODULE_1__each_js__[\"a\" /* default */])(Object(__WEBPACK_IMPORTED_MODULE_2__functions_js__[\"a\" /* default */])(obj), function(name) {\n var func = __WEBPACK_IMPORTED_MODULE_0__underscore_js__[\"a\" /* default */][name] = obj[name];\n __WEBPACK_IMPORTED_MODULE_0__underscore_js__[\"a\" /* default */].prototype[name] = function() {\n var args = [this._wrapped];\n __WEBPACK_IMPORTED_MODULE_3__setup_js__[\"o\" /* push */].apply(args, arguments);\n return Object(__WEBPACK_IMPORTED_MODULE_4__chainResult_js__[\"a\" /* default */])(this, func.apply(__WEBPACK_IMPORTED_MODULE_0__underscore_js__[\"a\" /* default */], args));\n };\n });\n return __WEBPACK_IMPORTED_MODULE_0__underscore_js__[\"a\" /* default */];\n}\n\n\n/***/ }),\n/* 350 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__underscore_js__ = __webpack_require__(23);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__each_js__ = __webpack_require__(47);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__setup_js__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__chainResult_js__ = __webpack_require__(209);\n\n\n\n\n\n// Add all mutator `Array` functions to the wrapper.\nObject(__WEBPACK_IMPORTED_MODULE_1__each_js__[\"a\" /* default */])(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {\n var method = __WEBPACK_IMPORTED_MODULE_2__setup_js__[\"a\" /* ArrayProto */][name];\n __WEBPACK_IMPORTED_MODULE_0__underscore_js__[\"a\" /* default */].prototype[name] = function() {\n var obj = this._wrapped;\n if (obj != null) {\n method.apply(obj, arguments);\n if ((name === 'shift' || name === 'splice') && obj.length === 0) {\n delete obj[0];\n }\n }\n return Object(__WEBPACK_IMPORTED_MODULE_3__chainResult_js__[\"a\" /* default */])(this, obj);\n };\n});\n\n// Add all accessor `Array` functions to the wrapper.\nObject(__WEBPACK_IMPORTED_MODULE_1__each_js__[\"a\" /* default */])(['concat', 'join', 'slice'], function(name) {\n var method = __WEBPACK_IMPORTED_MODULE_2__setup_js__[\"a\" /* ArrayProto */][name];\n __WEBPACK_IMPORTED_MODULE_0__underscore_js__[\"a\" /* default */].prototype[name] = function() {\n var obj = this._wrapped;\n if (obj != null) obj = method.apply(obj, arguments);\n return Object(__WEBPACK_IMPORTED_MODULE_3__chainResult_js__[\"a\" /* default */])(this, obj);\n };\n});\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (__WEBPACK_IMPORTED_MODULE_0__underscore_js__[\"a\" /* default */]);\n\n\n/***/ }),\n/* 351 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(352);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 352 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isPrototypeOf = __webpack_require__(20);\nvar method = __webpack_require__(353);\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n var own = it.concat;\n return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.concat) ? method : own;\n};\n\n\n/***/ }),\n/* 353 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(210);\nvar entryVirtual = __webpack_require__(38);\n\nmodule.exports = entryVirtual('Array').concat;\n\n\n/***/ }),\n/* 354 */\n/***/ (function(module, exports) {\n\nvar $TypeError = TypeError;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; // 2 ** 53 - 1 == 9007199254740991\n\nmodule.exports = function (it) {\n if (it > MAX_SAFE_INTEGER) throw $TypeError('Maximum allowed index exceeded');\n return it;\n};\n\n\n/***/ }),\n/* 355 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isArray = __webpack_require__(80);\nvar isConstructor = __webpack_require__(93);\nvar isObject = __webpack_require__(17);\nvar wellKnownSymbol = __webpack_require__(8);\n\nvar SPECIES = wellKnownSymbol('species');\nvar $Array = Array;\n\n// a part of `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray) {\n var C;\n if (isArray(originalArray)) {\n C = originalArray.constructor;\n // cross-realm fallback\n if (isConstructor(C) && (C === $Array || isArray(C.prototype))) C = undefined;\n else 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/* 356 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(357);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 357 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isPrototypeOf = __webpack_require__(20);\nvar method = __webpack_require__(358);\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n var own = it.map;\n return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.map) ? method : own;\n};\n\n\n/***/ }),\n/* 358 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(359);\nvar entryVirtual = __webpack_require__(38);\n\nmodule.exports = entryVirtual('Array').map;\n\n\n/***/ }),\n/* 359 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(0);\nvar $map = __webpack_require__(101).map;\nvar arrayMethodHasSpeciesSupport = __webpack_require__(100);\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map');\n\n// `Array.prototype.map` method\n// https://tc39.es/ecma262/#sec-array.prototype.map\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n\n/***/ }),\n/* 360 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(361);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 361 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(362);\nvar path = __webpack_require__(13);\n\nmodule.exports = path.Object.keys;\n\n\n/***/ }),\n/* 362 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(0);\nvar toObject = __webpack_require__(35);\nvar nativeKeys = __webpack_require__(116);\nvar fails = __webpack_require__(4);\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); });\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n keys: function keys(it) {\n return nativeKeys(toObject(it));\n }\n});\n\n\n/***/ }),\n/* 363 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(364);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 364 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(213);\nvar path = __webpack_require__(13);\nvar apply = __webpack_require__(62);\n\n// eslint-disable-next-line es-x/no-json -- safe\nif (!path.JSON) path.JSON = { stringify: JSON.stringify };\n\n// eslint-disable-next-line no-unused-vars -- required for `.length`\nmodule.exports = function stringify(it, replacer, space) {\n return apply(path.JSON.stringify, null, arguments);\n};\n\n\n/***/ }),\n/* 365 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(366);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 366 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isPrototypeOf = __webpack_require__(20);\nvar method = __webpack_require__(367);\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n var own = it.indexOf;\n return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.indexOf) ? method : own;\n};\n\n\n/***/ }),\n/* 367 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(368);\nvar entryVirtual = __webpack_require__(38);\n\nmodule.exports = entryVirtual('Array').indexOf;\n\n\n/***/ }),\n/* 368 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/* eslint-disable es-x/no-array-prototype-indexof -- required for testing */\nvar $ = __webpack_require__(0);\nvar uncurryThis = __webpack_require__(6);\nvar $IndexOf = __webpack_require__(146).indexOf;\nvar arrayMethodIsStrict = __webpack_require__(369);\n\nvar un$IndexOf = uncurryThis([].indexOf);\n\nvar NEGATIVE_ZERO = !!un$IndexOf && 1 / un$IndexOf([1], 1, -0) < 0;\nvar STRICT_METHOD = arrayMethodIsStrict('indexOf');\n\n// `Array.prototype.indexOf` method\n// https://tc39.es/ecma262/#sec-array.prototype.indexof\n$({ target: 'Array', proto: true, forced: NEGATIVE_ZERO || !STRICT_METHOD }, {\n indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n var fromIndex = arguments.length > 1 ? arguments[1] : undefined;\n return NEGATIVE_ZERO\n // convert -0 to +0\n ? un$IndexOf(this, searchElement, fromIndex) || 0\n : $IndexOf(this, searchElement, fromIndex);\n }\n});\n\n\n/***/ }),\n/* 369 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar fails = __webpack_require__(4);\n\nmodule.exports = function (METHOD_NAME, argument) {\n var method = [][METHOD_NAME];\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call -- required for testing\n method.call(null, argument || function () { return 1; }, 1);\n });\n};\n\n\n/***/ }),\n/* 370 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(73);\nvar classof = __webpack_require__(53);\nvar hasOwn = __webpack_require__(14);\nvar isPrototypeOf = __webpack_require__(20);\nvar method = __webpack_require__(371);\n\nvar ArrayPrototype = Array.prototype;\n\nvar DOMIterables = {\n DOMTokenList: true,\n NodeList: true\n};\n\nmodule.exports = function (it) {\n var own = it.keys;\n return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.keys)\n || hasOwn(DOMIterables, classof(it)) ? method : own;\n};\n\n\n/***/ }),\n/* 371 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(372);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 372 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(70);\n__webpack_require__(92);\nvar entryVirtual = __webpack_require__(38);\n\nmodule.exports = entryVirtual('Array').keys;\n\n\n/***/ }),\n/* 373 */\n/***/ (function(module, exports) {\n\n// Unique ID creation requires a high quality random # generator. In the\n// browser this is a little complicated due to unknown quality of Math.random()\n// and inconsistent support for the `crypto` API. We do the best we can via\n// feature-detection\n\n// getRandomValues needs to be invoked in a context where \"this\" is a Crypto\n// implementation. Also, find the complete implementation of crypto on IE11.\nvar getRandomValues = (typeof(crypto) != 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto)) ||\n (typeof(msCrypto) != 'undefined' && typeof window.msCrypto.getRandomValues == 'function' && msCrypto.getRandomValues.bind(msCrypto));\n\nif (getRandomValues) {\n // WHATWG crypto RNG - http://wiki.whatwg.org/wiki/Crypto\n var rnds8 = new Uint8Array(16); // eslint-disable-line no-undef\n\n module.exports = function whatwgRNG() {\n getRandomValues(rnds8);\n return rnds8;\n };\n} else {\n // Math.random()-based (RNG)\n //\n // If all else fails, use Math.random(). It's fast, but is of unspecified\n // quality.\n var rnds = new Array(16);\n\n module.exports = function mathRNG() {\n for (var i = 0, r; i < 16; i++) {\n if ((i & 0x03) === 0) r = Math.random() * 0x100000000;\n rnds[i] = r >>> ((i & 0x03) << 3) & 0xff;\n }\n\n return rnds;\n };\n}\n\n\n/***/ }),\n/* 374 */\n/***/ (function(module, exports) {\n\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nvar byteToHex = [];\nfor (var i = 0; i < 256; ++i) {\n byteToHex[i] = (i + 0x100).toString(16).substr(1);\n}\n\nfunction bytesToUuid(buf, offset) {\n var i = offset || 0;\n var bth = byteToHex;\n // join used to fix memory issue caused by concatenation: https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4\n return ([bth[buf[i++]], bth[buf[i++]], \n\tbth[buf[i++]], bth[buf[i++]], '-',\n\tbth[buf[i++]], bth[buf[i++]], '-',\n\tbth[buf[i++]], bth[buf[i++]], '-',\n\tbth[buf[i++]], bth[buf[i++]], '-',\n\tbth[buf[i++]], bth[buf[i++]],\n\tbth[buf[i++]], bth[buf[i++]],\n\tbth[buf[i++]], bth[buf[i++]]]).join('');\n}\n\nmodule.exports = bytesToUuid;\n\n\n/***/ }),\n/* 375 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\nfunction setup(env) {\n createDebug.debug = createDebug;\n createDebug.default = createDebug;\n createDebug.coerce = coerce;\n createDebug.disable = disable;\n createDebug.enable = enable;\n createDebug.enabled = enabled;\n createDebug.humanize = __webpack_require__(376);\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/* 376 */\n/***/ (function(module, exports) {\n\n/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n\n\n/***/ }),\n/* 377 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(378);\nvar path = __webpack_require__(13);\n\nmodule.exports = path.Object.getPrototypeOf;\n\n\n/***/ }),\n/* 378 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(0);\nvar fails = __webpack_require__(4);\nvar toObject = __webpack_require__(35);\nvar nativeGetPrototypeOf = __webpack_require__(86);\nvar CORRECT_PROTOTYPE_GETTER = __webpack_require__(144);\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeGetPrototypeOf(1); });\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !CORRECT_PROTOTYPE_GETTER }, {\n getPrototypeOf: function getPrototypeOf(it) {\n return nativeGetPrototypeOf(toObject(it));\n }\n});\n\n\n\n/***/ }),\n/* 379 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(221);\n\n/***/ }),\n/* 380 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(381);\nvar path = __webpack_require__(13);\n\nmodule.exports = path.Object.setPrototypeOf;\n\n\n/***/ }),\n/* 381 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(0);\nvar setPrototypeOf = __webpack_require__(88);\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n$({ target: 'Object', stat: true }, {\n setPrototypeOf: setPrototypeOf\n});\n\n\n/***/ }),\n/* 382 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(2);\n\nvar _slice = _interopRequireDefault(__webpack_require__(81));\n\nvar _concat = _interopRequireDefault(__webpack_require__(29));\n\nvar _defineProperty = _interopRequireDefault(__webpack_require__(223));\n\nvar AV = __webpack_require__(59);\n\nvar AppRouter = __webpack_require__(388);\n\nvar _require = __webpack_require__(28),\n isNullOrUndefined = _require.isNullOrUndefined;\n\nvar _require2 = __webpack_require__(1),\n extend = _require2.extend,\n isObject = _require2.isObject,\n isEmpty = _require2.isEmpty;\n\nvar isCNApp = function isCNApp(appId) {\n return (0, _slice.default)(appId).call(appId, -9) !== '-MdYXbMMI';\n};\n\nvar fillServerURLs = function fillServerURLs(url) {\n return {\n push: url,\n stats: url,\n engine: url,\n api: url,\n rtm: url\n };\n};\n\nfunction getDefaultServerURLs(appId) {\n var _context, _context2, _context3, _context4, _context5;\n\n if (isCNApp(appId)) {\n return {};\n }\n\n var id = (0, _slice.default)(appId).call(appId, 0, 8).toLowerCase();\n var domain = 'lncldglobal.com';\n return {\n push: (0, _concat.default)(_context = \"https://\".concat(id, \".push.\")).call(_context, domain),\n stats: (0, _concat.default)(_context2 = \"https://\".concat(id, \".stats.\")).call(_context2, domain),\n engine: (0, _concat.default)(_context3 = \"https://\".concat(id, \".engine.\")).call(_context3, domain),\n api: (0, _concat.default)(_context4 = \"https://\".concat(id, \".api.\")).call(_context4, domain),\n rtm: (0, _concat.default)(_context5 = \"https://\".concat(id, \".rtm.\")).call(_context5, domain)\n };\n}\n\nvar _disableAppRouter = false;\nvar _initialized = false;\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 */\n\nAV.init = function init(options) {\n if (!isObject(options)) {\n return AV.init({\n appId: options,\n appKey: arguments.length <= 1 ? undefined : arguments[1],\n masterKey: arguments.length <= 2 ? undefined : arguments[2]\n });\n }\n\n var appId = options.appId,\n appKey = options.appKey,\n masterKey = options.masterKey,\n hookKey = options.hookKey,\n serverURL = options.serverURL,\n _options$serverURLs = options.serverURLs,\n serverURLs = _options$serverURLs === void 0 ? serverURL : _options$serverURLs,\n disableCurrentUser = options.disableCurrentUser,\n production = options.production,\n realtime = options.realtime;\n if (_initialized) console.warn('Initializing LeanCloud Storage SDK which has already been initialized. Reinitializing the SDK might cause problems like unexpected cross-app data writing and invalid relations.');\n if (!appId) throw new TypeError('appId must be a string');\n if (!appKey) throw new TypeError('appKey must be a string');\n if (undefined !== 'NODE_JS' && masterKey) console.warn('MasterKey is not supposed to be used at client side.');\n\n if (isCNApp(appId)) {\n if (!serverURLs && isEmpty(AV._config.serverURLs)) {\n throw new TypeError(\"serverURL option is required for apps from CN region\");\n }\n }\n\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\n AV._config.applicationId = appId;\n AV._config.applicationKey = appKey;\n\n if (!isNullOrUndefined(production)) {\n AV.setProduction(production);\n }\n\n if (typeof disableCurrentUser !== 'undefined') AV._config.disableCurrentUser = disableCurrentUser;\n var disableAppRouter = _disableAppRouter || typeof serverURLs !== 'undefined';\n\n if (!disableAppRouter) {\n AV._appRouter = new AppRouter(AV);\n }\n\n AV._setServerURLs(extend({}, getDefaultServerURLs(appId), AV._config.serverURLs, typeof serverURLs === 'string' ? fillServerURLs(serverURLs) : serverURLs), disableAppRouter);\n\n if (realtime) {\n AV._config.realtime = realtime;\n } else if (AV._sharedConfig.liveQueryRealtime) {\n var _AV$_config$serverURL = AV._config.serverURLs,\n api = _AV$_config$serverURL.api,\n rtm = _AV$_config$serverURL.rtm;\n AV._config.realtime = new AV._sharedConfig.liveQueryRealtime({\n appId: appId,\n appKey: appKey,\n server: {\n api: api,\n RTMRouter: rtm\n }\n });\n }\n\n _initialized = true;\n}; // If we're running in node.js, allow using the master key.\n\n\nif (undefined === 'NODE_JS') {\n AV.Cloud = AV.Cloud || {};\n /**\n * Switches the LeanCloud SDK to using the Master key. The Master key grants\n * priveleged access to the data in LeanCloud and can be used to bypass ACLs and\n * other restrictions that are applied to the client SDKs.\n *

    Available in Cloud Code and Node.js only.\n *

    \n */\n\n AV.Cloud.useMasterKey = function () {\n AV._config.useMasterKey = true;\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 */\n\n\nAV.setProduction = function (production) {\n if (!isNullOrUndefined(production)) {\n AV._config.production = production ? 1 : 0;\n } else {\n // change to default value\n AV._config.production = null;\n }\n};\n\nAV._setServerURLs = function (urls) {\n var disableAppRouter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n if (typeof urls !== 'string') {\n extend(AV._config.serverURLs, urls);\n } else {\n AV._config.serverURLs = fillServerURLs(urls);\n }\n\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 */\n\n\nAV.setServerURL = function (urls) {\n return AV._setServerURLs(urls);\n};\n\nAV.setServerURLs = AV.setServerURL;\n\nAV.keepErrorRawMessage = function (value) {\n AV._sharedConfig.keepErrorRawMessage = value;\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 */\n\n\nAV.setRequestTimeout = function (ms) {\n AV._config.requestTimeout = ms;\n}; // backword compatible\n\n\nAV.initialize = AV.init;\n\nvar defineConfig = function defineConfig(property) {\n return (0, _defineProperty.default)(AV, property, {\n get: function get() {\n return AV._config[property];\n },\n set: function set(value) {\n AV._config[property] = value;\n }\n });\n};\n\n['applicationId', 'applicationKey', 'masterKey', 'hookKey'].forEach(defineConfig);\n\n/***/ }),\n/* 383 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isPrototypeOf = __webpack_require__(20);\nvar method = __webpack_require__(384);\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n var own = it.slice;\n return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.slice) ? method : own;\n};\n\n\n/***/ }),\n/* 384 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(385);\nvar entryVirtual = __webpack_require__(38);\n\nmodule.exports = entryVirtual('Array').slice;\n\n\n/***/ }),\n/* 385 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(0);\nvar isArray = __webpack_require__(80);\nvar isConstructor = __webpack_require__(93);\nvar isObject = __webpack_require__(17);\nvar toAbsoluteIndex = __webpack_require__(112);\nvar lengthOfArrayLike = __webpack_require__(42);\nvar toIndexedObject = __webpack_require__(33);\nvar createProperty = __webpack_require__(99);\nvar wellKnownSymbol = __webpack_require__(8);\nvar arrayMethodHasSpeciesSupport = __webpack_require__(100);\nvar un$Slice = __webpack_require__(94);\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice');\n\nvar SPECIES = wellKnownSymbol('species');\nvar $Array = Array;\nvar max = Math.max;\n\n// `Array.prototype.slice` method\n// https://tc39.es/ecma262/#sec-array.prototype.slice\n// fallback for not array-like ES3 strings and DOM objects\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n slice: function slice(start, end) {\n var O = toIndexedObject(this);\n var length = lengthOfArrayLike(O);\n var k = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible\n var Constructor, result, n;\n if (isArray(O)) {\n Constructor = O.constructor;\n // cross-realm fallback\n if (isConstructor(Constructor) && (Constructor === $Array || isArray(Constructor.prototype))) {\n Constructor = undefined;\n } else if (isObject(Constructor)) {\n Constructor = Constructor[SPECIES];\n if (Constructor === null) Constructor = undefined;\n }\n if (Constructor === $Array || Constructor === undefined) {\n return un$Slice(O, k, fin);\n }\n }\n result = new (Constructor === undefined ? $Array : Constructor)(max(fin - k, 0));\n for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);\n result.length = n;\n return result;\n }\n});\n\n\n/***/ }),\n/* 386 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(387);\nvar path = __webpack_require__(13);\n\nvar Object = path.Object;\n\nvar defineProperty = module.exports = function defineProperty(it, key, desc) {\n return Object.defineProperty(it, key, desc);\n};\n\nif (Object.defineProperty.sham) defineProperty.sham = true;\n\n\n/***/ }),\n/* 387 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(0);\nvar DESCRIPTORS = __webpack_require__(19);\nvar defineProperty = __webpack_require__(32).f;\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\n// eslint-disable-next-line es-x/no-object-defineproperty -- safe\n$({ target: 'Object', stat: true, forced: Object.defineProperty !== defineProperty, sham: !DESCRIPTORS }, {\n defineProperty: defineProperty\n});\n\n\n/***/ }),\n/* 388 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar ajax = __webpack_require__(103);\n\nvar Cache = __webpack_require__(220);\n\nfunction AppRouter(AV) {\n var _this = this;\n\n this.AV = AV;\n this.lockedUntil = 0;\n Cache.getAsync('serverURLs').then(function (data) {\n if (_this.disabled) return;\n if (!data) return _this.lock(0);\n var serverURLs = data.serverURLs,\n lockedUntil = data.lockedUntil;\n\n _this.AV._setServerURLs(serverURLs, false);\n\n _this.lockedUntil = lockedUntil;\n }).catch(function () {\n return _this.lock(0);\n });\n}\n\nAppRouter.prototype.disable = function disable() {\n this.disabled = true;\n};\n\nAppRouter.prototype.lock = function lock(ttl) {\n this.lockedUntil = Date.now() + ttl;\n};\n\nAppRouter.prototype.refresh = function refresh() {\n var _this2 = this;\n\n if (this.disabled) return;\n if (Date.now() < this.lockedUntil) return;\n this.lock(10);\n var url = 'https://app-router.com/2/route';\n return ajax({\n method: 'get',\n url: url,\n query: {\n appId: this.AV.applicationId\n }\n }).then(function (servers) {\n if (_this2.disabled) return;\n var ttl = servers.ttl;\n if (!ttl) throw new Error('missing ttl');\n ttl = ttl * 1000;\n var protocal = 'https://';\n var serverURLs = {\n push: protocal + servers.push_server,\n stats: protocal + servers.stats_server,\n engine: protocal + servers.engine_server,\n api: protocal + servers.api_server\n };\n\n _this2.AV._setServerURLs(serverURLs, false);\n\n _this2.lock(ttl);\n\n return Cache.setAsync('serverURLs', {\n serverURLs: serverURLs,\n lockedUntil: _this2.lockedUntil\n }, ttl);\n }).catch(function (error) {\n // bypass all errors\n console.warn(\"refresh server URLs failed: \".concat(error.message));\n\n _this2.lock(600);\n });\n};\n\nmodule.exports = AppRouter;\n\n/***/ }),\n/* 389 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(390);\n\n\n/***/ }),\n/* 390 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(391);\n__webpack_require__(416);\n__webpack_require__(417);\n__webpack_require__(418);\n__webpack_require__(419);\n__webpack_require__(420);\n// TODO: Remove from `core-js@4`\n__webpack_require__(421);\n__webpack_require__(422);\n__webpack_require__(423);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 391 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(226);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 392 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(210);\n__webpack_require__(92);\n__webpack_require__(393);\n__webpack_require__(400);\n__webpack_require__(401);\n__webpack_require__(402);\n__webpack_require__(403);\n__webpack_require__(229);\n__webpack_require__(404);\n__webpack_require__(405);\n__webpack_require__(406);\n__webpack_require__(407);\n__webpack_require__(408);\n__webpack_require__(409);\n__webpack_require__(410);\n__webpack_require__(411);\n__webpack_require__(412);\n__webpack_require__(413);\n__webpack_require__(414);\n__webpack_require__(415);\nvar path = __webpack_require__(13);\n\nmodule.exports = path.Symbol;\n\n\n/***/ }),\n/* 393 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// TODO: Remove this module from `core-js@4` since it's split to modules listed below\n__webpack_require__(394);\n__webpack_require__(397);\n__webpack_require__(398);\n__webpack_require__(213);\n__webpack_require__(399);\n\n\n/***/ }),\n/* 394 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(0);\nvar global = __webpack_require__(9);\nvar call = __webpack_require__(11);\nvar uncurryThis = __webpack_require__(6);\nvar IS_PURE = __webpack_require__(31);\nvar DESCRIPTORS = __webpack_require__(19);\nvar NATIVE_SYMBOL = __webpack_require__(49);\nvar fails = __webpack_require__(4);\nvar hasOwn = __webpack_require__(14);\nvar isPrototypeOf = __webpack_require__(20);\nvar anObject = __webpack_require__(21);\nvar toIndexedObject = __webpack_require__(33);\nvar toPropertyKey = __webpack_require__(82);\nvar $toString = __webpack_require__(69);\nvar createPropertyDescriptor = __webpack_require__(41);\nvar nativeObjectCreate = __webpack_require__(51);\nvar objectKeys = __webpack_require__(116);\nvar getOwnPropertyNamesModule = __webpack_require__(111);\nvar getOwnPropertyNamesExternal = __webpack_require__(395);\nvar getOwnPropertySymbolsModule = __webpack_require__(115);\nvar getOwnPropertyDescriptorModule = __webpack_require__(64);\nvar definePropertyModule = __webpack_require__(32);\nvar definePropertiesModule = __webpack_require__(147);\nvar propertyIsEnumerableModule = __webpack_require__(138);\nvar defineBuiltIn = __webpack_require__(43);\nvar shared = __webpack_require__(67);\nvar sharedKey = __webpack_require__(87);\nvar hiddenKeys = __webpack_require__(89);\nvar uid = __webpack_require__(109);\nvar wellKnownSymbol = __webpack_require__(8);\nvar wrappedWellKnownSymbolModule = __webpack_require__(136);\nvar defineWellKnownSymbol = __webpack_require__(5);\nvar defineSymbolToPrimitive = __webpack_require__(227);\nvar setToStringTag = __webpack_require__(54);\nvar InternalStateModule = __webpack_require__(91);\nvar $forEach = __webpack_require__(101).forEach;\n\nvar HIDDEN = sharedKey('hidden');\nvar SYMBOL = 'Symbol';\nvar PROTOTYPE = 'prototype';\n\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(SYMBOL);\n\nvar ObjectPrototype = Object[PROTOTYPE];\nvar $Symbol = global.Symbol;\nvar SymbolPrototype = $Symbol && $Symbol[PROTOTYPE];\nvar TypeError = global.TypeError;\nvar QObject = global.QObject;\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;\nvar nativePropertyIsEnumerable = propertyIsEnumerableModule.f;\nvar push = uncurryThis([].push);\n\nvar AllSymbols = shared('symbols');\nvar ObjectPrototypeSymbols = shared('op-symbols');\nvar WellKnownSymbolsStore = shared('wks');\n\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDescriptor = DESCRIPTORS && fails(function () {\n return nativeObjectCreate(nativeDefineProperty({}, 'a', {\n get: function () { return nativeDefineProperty(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (O, P, Attributes) {\n var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P);\n if (ObjectPrototypeDescriptor) delete ObjectPrototype[P];\n nativeDefineProperty(O, P, Attributes);\n if (ObjectPrototypeDescriptor && O !== ObjectPrototype) {\n nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor);\n }\n} : nativeDefineProperty;\n\nvar wrap = function (tag, description) {\n var symbol = AllSymbols[tag] = nativeObjectCreate(SymbolPrototype);\n setInternalState(symbol, {\n type: SYMBOL,\n tag: tag,\n description: description\n });\n if (!DESCRIPTORS) symbol.description = description;\n return symbol;\n};\n\nvar $defineProperty = function defineProperty(O, P, Attributes) {\n if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes);\n anObject(O);\n var key = toPropertyKey(P);\n anObject(Attributes);\n if (hasOwn(AllSymbols, key)) {\n if (!Attributes.enumerable) {\n if (!hasOwn(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, {}));\n O[HIDDEN][key] = true;\n } else {\n if (hasOwn(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false;\n Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) });\n } return setSymbolDescriptor(O, key, Attributes);\n } return nativeDefineProperty(O, key, Attributes);\n};\n\nvar $defineProperties = function defineProperties(O, Properties) {\n anObject(O);\n var properties = toIndexedObject(Properties);\n var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties));\n $forEach(keys, function (key) {\n if (!DESCRIPTORS || call($propertyIsEnumerable, properties, key)) $defineProperty(O, key, properties[key]);\n });\n return O;\n};\n\nvar $create = function create(O, Properties) {\n return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties);\n};\n\nvar $propertyIsEnumerable = function propertyIsEnumerable(V) {\n var P = toPropertyKey(V);\n var enumerable = call(nativePropertyIsEnumerable, this, P);\n if (this === ObjectPrototype && hasOwn(AllSymbols, P) && !hasOwn(ObjectPrototypeSymbols, P)) return false;\n return enumerable || !hasOwn(this, P) || !hasOwn(AllSymbols, P) || hasOwn(this, HIDDEN) && this[HIDDEN][P]\n ? enumerable : true;\n};\n\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {\n var it = toIndexedObject(O);\n var key = toPropertyKey(P);\n if (it === ObjectPrototype && hasOwn(AllSymbols, key) && !hasOwn(ObjectPrototypeSymbols, key)) return;\n var descriptor = nativeGetOwnPropertyDescriptor(it, key);\n if (descriptor && hasOwn(AllSymbols, key) && !(hasOwn(it, HIDDEN) && it[HIDDEN][key])) {\n descriptor.enumerable = true;\n }\n return descriptor;\n};\n\nvar $getOwnPropertyNames = function getOwnPropertyNames(O) {\n var names = nativeGetOwnPropertyNames(toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (!hasOwn(AllSymbols, key) && !hasOwn(hiddenKeys, key)) push(result, key);\n });\n return result;\n};\n\nvar $getOwnPropertySymbols = function (O) {\n var IS_OBJECT_PROTOTYPE = O === ObjectPrototype;\n var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (hasOwn(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || hasOwn(ObjectPrototype, key))) {\n push(result, AllSymbols[key]);\n }\n });\n return result;\n};\n\n// `Symbol` constructor\n// https://tc39.es/ecma262/#sec-symbol-constructor\nif (!NATIVE_SYMBOL) {\n $Symbol = function Symbol() {\n if (isPrototypeOf(SymbolPrototype, this)) throw TypeError('Symbol is not a constructor');\n var description = !arguments.length || arguments[0] === undefined ? undefined : $toString(arguments[0]);\n var tag = uid(description);\n var setter = function (value) {\n if (this === ObjectPrototype) call(setter, ObjectPrototypeSymbols, value);\n if (hasOwn(this, HIDDEN) && hasOwn(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value));\n };\n if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter });\n return wrap(tag, description);\n };\n\n SymbolPrototype = $Symbol[PROTOTYPE];\n\n defineBuiltIn(SymbolPrototype, 'toString', function toString() {\n return getInternalState(this).tag;\n });\n\n defineBuiltIn($Symbol, 'withoutSetter', function (description) {\n return wrap(uid(description), description);\n });\n\n propertyIsEnumerableModule.f = $propertyIsEnumerable;\n definePropertyModule.f = $defineProperty;\n definePropertiesModule.f = $defineProperties;\n getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor;\n getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;\n getOwnPropertySymbolsModule.f = $getOwnPropertySymbols;\n\n wrappedWellKnownSymbolModule.f = function (name) {\n return wrap(wellKnownSymbol(name), name);\n };\n\n if (DESCRIPTORS) {\n // https://github.com/tc39/proposal-Symbol-description\n nativeDefineProperty(SymbolPrototype, 'description', {\n configurable: true,\n get: function description() {\n return getInternalState(this).description;\n }\n });\n if (!IS_PURE) {\n defineBuiltIn(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });\n }\n }\n}\n\n$({ global: true, constructor: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, {\n Symbol: $Symbol\n});\n\n$forEach(objectKeys(WellKnownSymbolsStore), function (name) {\n defineWellKnownSymbol(name);\n});\n\n$({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, {\n useSetter: function () { USE_SETTER = true; },\n useSimple: function () { USE_SETTER = false; }\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, {\n // `Object.create` method\n // https://tc39.es/ecma262/#sec-object.create\n create: $create,\n // `Object.defineProperty` method\n // https://tc39.es/ecma262/#sec-object.defineproperty\n defineProperty: $defineProperty,\n // `Object.defineProperties` method\n // https://tc39.es/ecma262/#sec-object.defineproperties\n defineProperties: $defineProperties,\n // `Object.getOwnPropertyDescriptor` method\n // https://tc39.es/ecma262/#sec-object.getownpropertydescriptors\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, {\n // `Object.getOwnPropertyNames` method\n // https://tc39.es/ecma262/#sec-object.getownpropertynames\n getOwnPropertyNames: $getOwnPropertyNames\n});\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\ndefineSymbolToPrimitive();\n\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag($Symbol, SYMBOL);\n\nhiddenKeys[HIDDEN] = true;\n\n\n/***/ }),\n/* 395 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* eslint-disable es-x/no-object-getownpropertynames -- safe */\nvar classof = __webpack_require__(65);\nvar toIndexedObject = __webpack_require__(33);\nvar $getOwnPropertyNames = __webpack_require__(111).f;\nvar arraySlice = __webpack_require__(396);\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return $getOwnPropertyNames(it);\n } catch (error) {\n return arraySlice(windowNames);\n }\n};\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && classof(it) == 'Window'\n ? getWindowNames(it)\n : $getOwnPropertyNames(toIndexedObject(it));\n};\n\n\n/***/ }),\n/* 396 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toAbsoluteIndex = __webpack_require__(112);\nvar lengthOfArrayLike = __webpack_require__(42);\nvar createProperty = __webpack_require__(99);\n\nvar $Array = Array;\nvar max = Math.max;\n\nmodule.exports = function (O, start, end) {\n var length = lengthOfArrayLike(O);\n var k = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n var result = $Array(max(fin - k, 0));\n for (var n = 0; k < fin; k++, n++) createProperty(result, n, O[k]);\n result.length = n;\n return result;\n};\n\n\n/***/ }),\n/* 397 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(0);\nvar getBuiltIn = __webpack_require__(16);\nvar hasOwn = __webpack_require__(14);\nvar toString = __webpack_require__(69);\nvar shared = __webpack_require__(67);\nvar NATIVE_SYMBOL_REGISTRY = __webpack_require__(228);\n\nvar StringToSymbolRegistry = shared('string-to-symbol-registry');\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\n\n// `Symbol.for` method\n// https://tc39.es/ecma262/#sec-symbol.for\n$({ target: 'Symbol', stat: true, forced: !NATIVE_SYMBOL_REGISTRY }, {\n 'for': function (key) {\n var string = toString(key);\n if (hasOwn(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];\n var symbol = getBuiltIn('Symbol')(string);\n StringToSymbolRegistry[string] = symbol;\n SymbolToStringRegistry[symbol] = string;\n return symbol;\n }\n});\n\n\n/***/ }),\n/* 398 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(0);\nvar hasOwn = __webpack_require__(14);\nvar isSymbol = __webpack_require__(83);\nvar tryToString = __webpack_require__(66);\nvar shared = __webpack_require__(67);\nvar NATIVE_SYMBOL_REGISTRY = __webpack_require__(228);\n\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\n\n// `Symbol.keyFor` method\n// https://tc39.es/ecma262/#sec-symbol.keyfor\n$({ target: 'Symbol', stat: true, forced: !NATIVE_SYMBOL_REGISTRY }, {\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(tryToString(sym) + ' is not a symbol');\n if (hasOwn(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];\n }\n});\n\n\n/***/ }),\n/* 399 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(0);\nvar NATIVE_SYMBOL = __webpack_require__(49);\nvar fails = __webpack_require__(4);\nvar getOwnPropertySymbolsModule = __webpack_require__(115);\nvar toObject = __webpack_require__(35);\n\n// V8 ~ Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\nvar FORCED = !NATIVE_SYMBOL || fails(function () { getOwnPropertySymbolsModule.f(1); });\n\n// `Object.getOwnPropertySymbols` method\n// https://tc39.es/ecma262/#sec-object.getownpropertysymbols\n$({ target: 'Object', stat: true, forced: FORCED }, {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n var $getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return $getOwnPropertySymbols ? $getOwnPropertySymbols(toObject(it)) : [];\n }\n});\n\n\n/***/ }),\n/* 400 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar defineWellKnownSymbol = __webpack_require__(5);\n\n// `Symbol.asyncIterator` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.asynciterator\ndefineWellKnownSymbol('asyncIterator');\n\n\n/***/ }),\n/* 401 */\n/***/ (function(module, exports) {\n\n// empty\n\n\n/***/ }),\n/* 402 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar defineWellKnownSymbol = __webpack_require__(5);\n\n// `Symbol.hasInstance` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.hasinstance\ndefineWellKnownSymbol('hasInstance');\n\n\n/***/ }),\n/* 403 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar defineWellKnownSymbol = __webpack_require__(5);\n\n// `Symbol.isConcatSpreadable` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.isconcatspreadable\ndefineWellKnownSymbol('isConcatSpreadable');\n\n\n/***/ }),\n/* 404 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar defineWellKnownSymbol = __webpack_require__(5);\n\n// `Symbol.match` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.match\ndefineWellKnownSymbol('match');\n\n\n/***/ }),\n/* 405 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar defineWellKnownSymbol = __webpack_require__(5);\n\n// `Symbol.matchAll` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.matchall\ndefineWellKnownSymbol('matchAll');\n\n\n/***/ }),\n/* 406 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar defineWellKnownSymbol = __webpack_require__(5);\n\n// `Symbol.replace` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.replace\ndefineWellKnownSymbol('replace');\n\n\n/***/ }),\n/* 407 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar defineWellKnownSymbol = __webpack_require__(5);\n\n// `Symbol.search` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.search\ndefineWellKnownSymbol('search');\n\n\n/***/ }),\n/* 408 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar defineWellKnownSymbol = __webpack_require__(5);\n\n// `Symbol.species` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.species\ndefineWellKnownSymbol('species');\n\n\n/***/ }),\n/* 409 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar defineWellKnownSymbol = __webpack_require__(5);\n\n// `Symbol.split` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.split\ndefineWellKnownSymbol('split');\n\n\n/***/ }),\n/* 410 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar defineWellKnownSymbol = __webpack_require__(5);\nvar defineSymbolToPrimitive = __webpack_require__(227);\n\n// `Symbol.toPrimitive` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.toprimitive\ndefineWellKnownSymbol('toPrimitive');\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\ndefineSymbolToPrimitive();\n\n\n/***/ }),\n/* 411 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar getBuiltIn = __webpack_require__(16);\nvar defineWellKnownSymbol = __webpack_require__(5);\nvar setToStringTag = __webpack_require__(54);\n\n// `Symbol.toStringTag` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.tostringtag\ndefineWellKnownSymbol('toStringTag');\n\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag(getBuiltIn('Symbol'), 'Symbol');\n\n\n/***/ }),\n/* 412 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar defineWellKnownSymbol = __webpack_require__(5);\n\n// `Symbol.unscopables` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.unscopables\ndefineWellKnownSymbol('unscopables');\n\n\n/***/ }),\n/* 413 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(9);\nvar setToStringTag = __webpack_require__(54);\n\n// JSON[@@toStringTag] property\n// https://tc39.es/ecma262/#sec-json-@@tostringtag\nsetToStringTag(global.JSON, 'JSON', true);\n\n\n/***/ }),\n/* 414 */\n/***/ (function(module, exports) {\n\n// empty\n\n\n/***/ }),\n/* 415 */\n/***/ (function(module, exports) {\n\n// empty\n\n\n/***/ }),\n/* 416 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar defineWellKnownSymbol = __webpack_require__(5);\n\n// `Symbol.asyncDispose` well-known symbol\n// https://github.com/tc39/proposal-using-statement\ndefineWellKnownSymbol('asyncDispose');\n\n\n/***/ }),\n/* 417 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar defineWellKnownSymbol = __webpack_require__(5);\n\n// `Symbol.dispose` well-known symbol\n// https://github.com/tc39/proposal-using-statement\ndefineWellKnownSymbol('dispose');\n\n\n/***/ }),\n/* 418 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar defineWellKnownSymbol = __webpack_require__(5);\n\n// `Symbol.matcher` well-known symbol\n// https://github.com/tc39/proposal-pattern-matching\ndefineWellKnownSymbol('matcher');\n\n\n/***/ }),\n/* 419 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar defineWellKnownSymbol = __webpack_require__(5);\n\n// `Symbol.metadataKey` well-known symbol\n// https://github.com/tc39/proposal-decorator-metadata\ndefineWellKnownSymbol('metadataKey');\n\n\n/***/ }),\n/* 420 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar defineWellKnownSymbol = __webpack_require__(5);\n\n// `Symbol.observable` well-known symbol\n// https://github.com/tc39/proposal-observable\ndefineWellKnownSymbol('observable');\n\n\n/***/ }),\n/* 421 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// TODO: Remove from `core-js@4`\nvar defineWellKnownSymbol = __webpack_require__(5);\n\n// `Symbol.metadata` well-known symbol\n// https://github.com/tc39/proposal-decorators\ndefineWellKnownSymbol('metadata');\n\n\n/***/ }),\n/* 422 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// TODO: remove from `core-js@4`\nvar defineWellKnownSymbol = __webpack_require__(5);\n\n// `Symbol.patternMatch` well-known symbol\n// https://github.com/tc39/proposal-pattern-matching\ndefineWellKnownSymbol('patternMatch');\n\n\n/***/ }),\n/* 423 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// TODO: remove from `core-js@4`\nvar defineWellKnownSymbol = __webpack_require__(5);\n\ndefineWellKnownSymbol('replaceAll');\n\n\n/***/ }),\n/* 424 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(425);\n\n/***/ }),\n/* 425 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(426);\n\n\n/***/ }),\n/* 426 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(427);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 427 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(428);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 428 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(429);\n__webpack_require__(73);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 429 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(70);\n__webpack_require__(92);\n__webpack_require__(95);\n__webpack_require__(229);\nvar WrappedWellKnownSymbolModule = __webpack_require__(136);\n\nmodule.exports = WrappedWellKnownSymbolModule.f('iterator');\n\n\n/***/ }),\n/* 430 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(431);\n\n/***/ }),\n/* 431 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(432);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 432 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isPrototypeOf = __webpack_require__(20);\nvar method = __webpack_require__(433);\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n var own = it.filter;\n return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.filter) ? method : own;\n};\n\n\n/***/ }),\n/* 433 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(434);\nvar entryVirtual = __webpack_require__(38);\n\nmodule.exports = entryVirtual('Array').filter;\n\n\n/***/ }),\n/* 434 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(0);\nvar $filter = __webpack_require__(101).filter;\nvar arrayMethodHasSpeciesSupport = __webpack_require__(100);\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter');\n\n// `Array.prototype.filter` method\n// https://tc39.es/ecma262/#sec-array.prototype.filter\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n filter: function filter(callbackfn /* , thisArg */) {\n return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n\n/***/ }),\n/* 435 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n// Copyright (c) 2015-2017 David M. Lee, II\n\n\n/**\n * Local reference to TimeoutError\n * @private\n */\nvar TimeoutError;\n\n/**\n * Rejects a promise with a {@link TimeoutError} if it does not settle within\n * the specified timeout.\n *\n * @param {Promise} promise The promise.\n * @param {number} timeoutMillis Number of milliseconds to wait on settling.\n * @returns {Promise} Either resolves/rejects with `promise`, or rejects with\n * `TimeoutError`, whichever settles first.\n */\nvar timeout = module.exports.timeout = function(promise, timeoutMillis) {\n var error = new TimeoutError(),\n timeout;\n\n return Promise.race([\n promise,\n new Promise(function(resolve, reject) {\n timeout = setTimeout(function() {\n reject(error);\n }, timeoutMillis);\n }),\n ]).then(function(v) {\n clearTimeout(timeout);\n return v;\n }, function(err) {\n clearTimeout(timeout);\n throw err;\n });\n};\n\n/**\n * Exception indicating that the timeout expired.\n */\nTimeoutError = module.exports.TimeoutError = function() {\n Error.call(this)\n this.stack = Error().stack\n this.message = 'Timeout';\n};\n\nTimeoutError.prototype = Object.create(Error.prototype);\nTimeoutError.prototype.name = \"TimeoutError\";\n\n\n/***/ }),\n/* 436 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(2);\n\nvar _slice = _interopRequireDefault(__webpack_require__(81));\n\nvar _keys = _interopRequireDefault(__webpack_require__(48));\n\nvar _concat = _interopRequireDefault(__webpack_require__(29));\n\nvar _ = __webpack_require__(1);\n\nmodule.exports = function (AV) {\n var eventSplitter = /\\s+/;\n var slice = (0, _slice.default)(Array.prototype);\n /**\n * @class\n *\n *

    AV.Events is a fork of Backbone's Events module, provided for your\n * convenience.

    \n *\n *

    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');

    \n *\n */\n\n AV.Events = {\n /**\n * Bind one or more space separated events, `events`, to a `callback`\n * function. Passing `\"all\"` will bind the callback to all events fired.\n */\n on: function on(events, callback, context) {\n var calls, event, node, tail, list;\n\n if (!callback) {\n return this;\n }\n\n events = events.split(eventSplitter);\n calls = this._callbacks || (this._callbacks = {}); // 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\n event = events.shift();\n\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] = {\n tail: tail,\n next: list ? list.next : node\n };\n event = events.shift();\n }\n\n return this;\n },\n\n /**\n * Remove one or many callbacks. If `context` is null, removes all callbacks\n * with that function. If `callback` is null, removes all callbacks for the\n * event. If `events` is null, removes all bound callbacks for all events.\n */\n off: function off(events, callback, context) {\n var event, calls, node, tail, cb, ctx; // No events, or removing *all* events.\n\n if (!(calls = this._callbacks)) {\n return;\n }\n\n if (!(events || callback || context)) {\n delete this._callbacks;\n return this;\n } // Loop through the listed events and contexts, splicing them out of the\n // linked list of callbacks if appropriate.\n\n\n events = events ? events.split(eventSplitter) : (0, _keys.default)(_).call(_, calls);\n event = events.shift();\n\n while (event) {\n node = calls[event];\n delete calls[event];\n\n if (!node || !(callback || context)) {\n continue;\n } // Create a new list, omitting the indicated callbacks.\n\n\n tail = node.tail;\n node = node.next;\n\n while (node !== tail) {\n cb = node.callback;\n ctx = node.context;\n\n if (callback && cb !== callback || context && ctx !== context) {\n this.on(event, cb, ctx);\n }\n\n node = node.next;\n }\n\n event = events.shift();\n }\n\n return this;\n },\n\n /**\n * Trigger one or many events, firing all bound callbacks. Callbacks are\n * passed the same arguments as `trigger` is, apart from the event name\n * (unless you're listening on `\"all\"`, which will cause your callback to\n * receive the true name of the event as the first argument).\n */\n trigger: function trigger(events) {\n var event, node, calls, tail, args, all, rest;\n\n if (!(calls = this._callbacks)) {\n return this;\n }\n\n all = calls.all;\n events = events.split(eventSplitter);\n rest = slice.call(arguments, 1); // For each event, walk through the linked list of callbacks twice,\n // first to trigger the event, then to trigger any `\"all\"` callbacks.\n\n event = events.shift();\n\n while (event) {\n node = calls[event];\n\n if (node) {\n tail = node.tail;\n\n while ((node = node.next) !== tail) {\n node.callback.apply(node.context || this, rest);\n }\n }\n\n node = all;\n\n if (node) {\n var _context;\n\n tail = node.tail;\n args = (0, _concat.default)(_context = [event]).call(_context, rest);\n\n while ((node = node.next) !== tail) {\n node.callback.apply(node.context || this, args);\n }\n }\n\n event = events.shift();\n }\n\n return this;\n }\n };\n /**\n * @function\n */\n\n AV.Events.bind = AV.Events.on;\n /**\n * @function\n */\n\n AV.Events.unbind = AV.Events.off;\n};\n\n/***/ }),\n/* 437 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(2);\n\nvar _promise = _interopRequireDefault(__webpack_require__(10));\n\nvar _ = __webpack_require__(1);\n/*global navigator: false */\n\n\nmodule.exports = function (AV) {\n /**\n * Creates a new GeoPoint with any of the following forms:
    \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 *

    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.

    \n *\n *

    Only one key in a class may contain a GeoPoint.

    \n *\n *

    Example:

    \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();

    \n */\n AV.GeoPoint = function (arg1, arg2) {\n if (_.isArray(arg1)) {\n AV.GeoPoint._validate(arg1[0], arg1[1]);\n\n this.latitude = arg1[0];\n this.longitude = arg1[1];\n } else if (_.isObject(arg1)) {\n AV.GeoPoint._validate(arg1.latitude, arg1.longitude);\n\n this.latitude = arg1.latitude;\n this.longitude = arg1.longitude;\n } else if (_.isNumber(arg1) && _.isNumber(arg2)) {\n AV.GeoPoint._validate(arg1, arg2);\n\n this.latitude = arg1;\n this.longitude = arg2;\n } else {\n this.latitude = 0;\n this.longitude = 0;\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\n\n var self = this;\n\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\n this.__defineGetter__('latitude', function () {\n return self._latitude;\n });\n\n this.__defineGetter__('longitude', function () {\n return self._longitude;\n });\n\n this.__defineSetter__('latitude', function (val) {\n AV.GeoPoint._validate(val, self.longitude);\n\n self._latitude = val;\n });\n\n this.__defineSetter__('longitude', function (val) {\n AV.GeoPoint._validate(self.latitude, val);\n\n self._longitude = val;\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\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\n if (latitude > 90.0) {\n throw new Error('AV.GeoPoint latitude ' + latitude + ' > 90.0.');\n }\n\n if (longitude < -180.0) {\n throw new Error('AV.GeoPoint longitude ' + longitude + ' < -180.0.');\n }\n\n if (longitude > 180.0) {\n throw new Error('AV.GeoPoint longitude ' + longitude + ' > 180.0.');\n }\n };\n /**\n * Creates a GeoPoint with the user's current location, if available.\n * @return {Promise.}\n */\n\n\n AV.GeoPoint.current = function () {\n return new _promise.default(function (resolve, reject) {\n navigator.geolocation.getCurrentPosition(function (location) {\n resolve(new AV.GeoPoint({\n latitude: location.coords.latitude,\n longitude: location.coords.longitude\n }));\n }, reject);\n });\n };\n\n _.extend(AV.GeoPoint.prototype,\n /** @lends AV.GeoPoint.prototype */\n {\n /**\n * Returns a JSON representation of the GeoPoint, suitable for AV.\n * @return {Object}\n */\n toJSON: function toJSON() {\n AV.GeoPoint._validate(this.latitude, this.longitude);\n\n return {\n __type: 'GeoPoint',\n latitude: this.latitude,\n longitude: this.longitude\n };\n },\n\n /**\n * Returns the distance from this GeoPoint to another in radians.\n * @param {AV.GeoPoint} point the other AV.GeoPoint.\n * @return {Number}\n */\n radiansTo: function radiansTo(point) {\n var d2r = Math.PI / 180.0;\n var lat1rad = this.latitude * d2r;\n var long1rad = this.longitude * d2r;\n var lat2rad = point.latitude * d2r;\n var long2rad = point.longitude * d2r;\n var deltaLat = lat1rad - lat2rad;\n var deltaLong = long1rad - long2rad;\n var sinDeltaLatDiv2 = Math.sin(deltaLat / 2);\n var sinDeltaLongDiv2 = Math.sin(deltaLong / 2); // Square of half the straight line chord distance between both points.\n\n var a = sinDeltaLatDiv2 * sinDeltaLatDiv2 + Math.cos(lat1rad) * Math.cos(lat2rad) * sinDeltaLongDiv2 * sinDeltaLongDiv2;\n a = Math.min(1.0, a);\n return 2 * Math.asin(Math.sqrt(a));\n },\n\n /**\n * Returns the distance from this GeoPoint to another in kilometers.\n * @param {AV.GeoPoint} point the other AV.GeoPoint.\n * @return {Number}\n */\n kilometersTo: function kilometersTo(point) {\n return this.radiansTo(point) * 6371.0;\n },\n\n /**\n * Returns the distance from this GeoPoint to another in miles.\n * @param {AV.GeoPoint} point the other AV.GeoPoint.\n * @return {Number}\n */\n milesTo: function milesTo(point) {\n return this.radiansTo(point) * 3958.8;\n }\n });\n};\n\n/***/ }),\n/* 438 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _ = __webpack_require__(1);\n\nmodule.exports = function (AV) {\n var PUBLIC_KEY = '*';\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 *

    An ACL, or Access Control List can be added to any\n * AV.Object to restrict access to only a subset of users\n * of your application.

    \n */\n\n AV.ACL = function (arg1) {\n var self = this;\n self.permissionsById = {};\n\n if (_.isObject(arg1)) {\n if (arg1 instanceof AV.User) {\n self.setReadAccess(arg1, true);\n self.setWriteAccess(arg1, true);\n } else {\n if (_.isFunction(arg1)) {\n throw new Error('AV.ACL() called with a function. Did you forget ()?');\n }\n\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\n self.permissionsById[userId] = {};\n\n AV._objectEach(accessList, function (allowed, permission) {\n if (permission !== 'read' && permission !== 'write') {\n throw new Error('Tried to create an ACL with an invalid permission type.');\n }\n\n if (!_.isBoolean(allowed)) {\n throw new Error('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 * Returns a JSON-encoded version of the ACL.\n * @return {Object}\n */\n\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\n if (!_.isString(userId)) {\n throw new Error('userId must be a string.');\n }\n\n if (!_.isBoolean(allowed)) {\n throw new Error('allowed must be either true or false.');\n }\n\n var permissions = this.permissionsById[userId];\n\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\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\n var permissions = this.permissionsById[userId];\n\n if (!permissions) {\n return false;\n }\n\n return permissions[accessType] ? true : false;\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\n\n AV.ACL.prototype.setReadAccess = function (userId, allowed) {\n this._setAccess('read', userId, allowed);\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\n\n AV.ACL.prototype.getReadAccess = function (userId) {\n return this._getAccess('read', userId);\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\n\n AV.ACL.prototype.setWriteAccess = function (userId, allowed) {\n this._setAccess('write', userId, allowed);\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\n\n AV.ACL.prototype.getWriteAccess = function (userId) {\n return this._getAccess('write', userId);\n };\n /**\n * Set whether the public is allowed to read this object.\n * @param {Boolean} allowed\n */\n\n\n AV.ACL.prototype.setPublicReadAccess = function (allowed) {\n this.setReadAccess(PUBLIC_KEY, allowed);\n };\n /**\n * Get whether the public is allowed to read this object.\n * @return {Boolean}\n */\n\n\n AV.ACL.prototype.getPublicReadAccess = function () {\n return this.getReadAccess(PUBLIC_KEY);\n };\n /**\n * Set whether the public is allowed to write this object.\n * @param {Boolean} allowed\n */\n\n\n AV.ACL.prototype.setPublicWriteAccess = function (allowed) {\n this.setWriteAccess(PUBLIC_KEY, allowed);\n };\n /**\n * Get whether the public is allowed to write this object.\n * @return {Boolean}\n */\n\n\n AV.ACL.prototype.getPublicWriteAccess = function () {\n return this.getWriteAccess(PUBLIC_KEY);\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\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\n if (_.isString(role)) {\n return this.getReadAccess('role:' + role);\n }\n\n throw new Error('role must be a AV.Role or a String');\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\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\n if (_.isString(role)) {\n return this.getWriteAccess('role:' + role);\n }\n\n throw new Error('role must be a AV.Role or a String');\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\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\n if (_.isString(role)) {\n this.setReadAccess('role:' + role, allowed);\n return;\n }\n\n throw new Error('role must be a AV.Role or a String');\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\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\n if (_.isString(role)) {\n this.setWriteAccess('role:' + role, allowed);\n return;\n }\n\n throw new Error('role must be a AV.Role or a String');\n };\n};\n\n/***/ }),\n/* 439 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(2);\n\nvar _concat = _interopRequireDefault(__webpack_require__(29));\n\nvar _find = _interopRequireDefault(__webpack_require__(104));\n\nvar _indexOf = _interopRequireDefault(__webpack_require__(102));\n\nvar _map = _interopRequireDefault(__webpack_require__(39));\n\nvar _ = __webpack_require__(1);\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 object.set(\"foo\", \"bar\")\n * is an example of a AV.Op.Set. Calling object.unset(\"foo\")\n * is a AV.Op.Unset. These operations are stored in a AV.Object and\n * sent to the server as part of object.save() operations.\n * Instances of AV.Op should be immutable.\n *\n * You should not create subclasses of AV.Op or instantiate AV.Op\n * directly.\n */\n AV.Op = function () {\n this._initialize.apply(this, arguments);\n };\n\n _.extend(AV.Op.prototype,\n /** @lends AV.Op.prototype */\n {\n _initialize: function _initialize() {}\n });\n\n _.extend(AV.Op, {\n /**\n * To create a new Op, call AV.Op._extend();\n * @private\n */\n _extend: AV._extend,\n // A map of __op string to decoder function.\n _opDecoderMap: {},\n\n /**\n * Registers a function to convert a json object with an __op field into an\n * instance of a subclass of AV.Op.\n * @private\n */\n _registerDecoder: function _registerDecoder(opName, decoder) {\n AV.Op._opDecoderMap[opName] = decoder;\n },\n\n /**\n * Converts a json object into an instance of a subclass of AV.Op.\n * @private\n */\n _decode: function _decode(json) {\n var decoder = AV.Op._opDecoderMap[json.__op];\n\n if (decoder) {\n return decoder(json);\n } else {\n return undefined;\n }\n }\n });\n /*\n * Add a handler for Batch ops.\n */\n\n\n AV.Op._registerDecoder('Batch', function (json) {\n var op = null;\n\n AV._arrayEach(json.ops, function (nextOp) {\n nextOp = AV.Op._decode(nextOp);\n op = nextOp._mergeWithPrevious(op);\n });\n\n return op;\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\n\n AV.Op.Set = AV.Op._extend(\n /** @lends AV.Op.Set.prototype */\n {\n _initialize: function _initialize(value) {\n this._value = value;\n },\n\n /**\n * Returns the new value of this field after the set.\n */\n value: function value() {\n return this._value;\n },\n\n /**\n * Returns a JSON version of the operation suitable for sending to AV.\n * @return {Object}\n */\n toJSON: function toJSON() {\n return AV._encode(this.value());\n },\n _mergeWithPrevious: function _mergeWithPrevious(previous) {\n return this;\n },\n _estimate: function _estimate(oldValue) {\n return this.value();\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\n AV.Op._UNSET = {};\n /**\n * @private\n * @class\n * An Unset operation indicates that this field has been deleted from the\n * object.\n */\n\n AV.Op.Unset = AV.Op._extend(\n /** @lends AV.Op.Unset.prototype */\n {\n /**\n * Returns a JSON version of the operation suitable for sending to AV.\n * @return {Object}\n */\n toJSON: function toJSON() {\n return {\n __op: 'Delete'\n };\n },\n _mergeWithPrevious: function _mergeWithPrevious(previous) {\n return this;\n },\n _estimate: function _estimate(oldValue) {\n return AV.Op._UNSET;\n }\n });\n\n AV.Op._registerDecoder('Delete', function (json) {\n return new AV.Op.Unset();\n });\n /**\n * @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\n\n AV.Op.Increment = AV.Op._extend(\n /** @lends AV.Op.Increment.prototype */\n {\n _initialize: function _initialize(amount) {\n this._amount = amount;\n },\n\n /**\n * Returns the amount to increment by.\n * @return {Number} the amount to increment by.\n */\n amount: function amount() {\n return this._amount;\n },\n\n /**\n * Returns a JSON version of the operation suitable for sending to AV.\n * @return {Object}\n */\n toJSON: function toJSON() {\n return {\n __op: 'Increment',\n amount: this._amount\n };\n },\n _mergeWithPrevious: function _mergeWithPrevious(previous) {\n if (!previous) {\n return this;\n } else if (previous instanceof AV.Op.Unset) {\n return new AV.Op.Set(this.amount());\n } else if (previous instanceof AV.Op.Set) {\n return new AV.Op.Set(previous.value() + this.amount());\n } else if (previous instanceof AV.Op.Increment) {\n return new AV.Op.Increment(this.amount() + previous.amount());\n } else {\n throw new Error('Op is invalid after previous op.');\n }\n },\n _estimate: function _estimate(oldValue) {\n if (!oldValue) {\n return this.amount();\n }\n\n return oldValue + this.amount();\n }\n });\n\n AV.Op._registerDecoder('Increment', function (json) {\n return new AV.Op.Increment(json.amount);\n });\n /**\n * @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\n\n AV.Op.BitAnd = AV.Op._extend(\n /** @lends AV.Op.BitAnd.prototype */\n {\n _initialize: function _initialize(value) {\n this._value = value;\n },\n value: function value() {\n return this._value;\n },\n\n /**\n * Returns a JSON version of the operation suitable for sending to AV.\n * @return {Object}\n */\n toJSON: function toJSON() {\n return {\n __op: 'BitAnd',\n value: this.value()\n };\n },\n _mergeWithPrevious: function _mergeWithPrevious(previous) {\n if (!previous) {\n return this;\n } else if (previous instanceof AV.Op.Unset) {\n return new AV.Op.Set(0);\n } else if (previous instanceof AV.Op.Set) {\n return new AV.Op.Set(previous.value() & this.value());\n } else {\n throw new Error('Op is invalid after previous op.');\n }\n },\n _estimate: function _estimate(oldValue) {\n return oldValue & this.value();\n }\n });\n\n AV.Op._registerDecoder('BitAnd', function (json) {\n return new AV.Op.BitAnd(json.value);\n });\n /**\n * @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\n\n AV.Op.BitOr = AV.Op._extend(\n /** @lends AV.Op.BitOr.prototype */\n {\n _initialize: function _initialize(value) {\n this._value = value;\n },\n value: function value() {\n return this._value;\n },\n\n /**\n * Returns a JSON version of the operation suitable for sending to AV.\n * @return {Object}\n */\n toJSON: function toJSON() {\n return {\n __op: 'BitOr',\n value: this.value()\n };\n },\n _mergeWithPrevious: function _mergeWithPrevious(previous) {\n if (!previous) {\n return this;\n } else if (previous instanceof AV.Op.Unset) {\n return new AV.Op.Set(this.value());\n } else if (previous instanceof AV.Op.Set) {\n return new AV.Op.Set(previous.value() | this.value());\n } else {\n throw new Error('Op is invalid after previous op.');\n }\n },\n _estimate: function _estimate(oldValue) {\n return oldValue | this.value();\n }\n });\n\n AV.Op._registerDecoder('BitOr', function (json) {\n return new AV.Op.BitOr(json.value);\n });\n /**\n * @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\n\n AV.Op.BitXor = AV.Op._extend(\n /** @lends AV.Op.BitXor.prototype */\n {\n _initialize: function _initialize(value) {\n this._value = value;\n },\n value: function value() {\n return this._value;\n },\n\n /**\n * Returns a JSON version of the operation suitable for sending to AV.\n * @return {Object}\n */\n toJSON: function toJSON() {\n return {\n __op: 'BitXor',\n value: this.value()\n };\n },\n _mergeWithPrevious: function _mergeWithPrevious(previous) {\n if (!previous) {\n return this;\n } else if (previous instanceof AV.Op.Unset) {\n return new AV.Op.Set(this.value());\n } else if (previous instanceof AV.Op.Set) {\n return new AV.Op.Set(previous.value() ^ this.value());\n } else {\n throw new Error('Op is invalid after previous op.');\n }\n },\n _estimate: function _estimate(oldValue) {\n return oldValue ^ this.value();\n }\n });\n\n AV.Op._registerDecoder('BitXor', function (json) {\n return new AV.Op.BitXor(json.value);\n });\n /**\n * @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\n\n AV.Op.Add = AV.Op._extend(\n /** @lends AV.Op.Add.prototype */\n {\n _initialize: function _initialize(objects) {\n this._objects = objects;\n },\n\n /**\n * Returns the objects to be added to the array.\n * @return {Array} The objects to be added to the array.\n */\n objects: function objects() {\n return this._objects;\n },\n\n /**\n * Returns a JSON version of the operation suitable for sending to AV.\n * @return {Object}\n */\n toJSON: function toJSON() {\n return {\n __op: 'Add',\n objects: AV._encode(this.objects())\n };\n },\n _mergeWithPrevious: function _mergeWithPrevious(previous) {\n if (!previous) {\n return this;\n } else if (previous instanceof AV.Op.Unset) {\n return new AV.Op.Set(this.objects());\n } else if (previous instanceof AV.Op.Set) {\n return new AV.Op.Set(this._estimate(previous.value()));\n } else if (previous instanceof AV.Op.Add) {\n var _context;\n\n return new AV.Op.Add((0, _concat.default)(_context = previous.objects()).call(_context, this.objects()));\n } else {\n throw new Error('Op is invalid after previous op.');\n }\n },\n _estimate: function _estimate(oldValue) {\n if (!oldValue) {\n return _.clone(this.objects());\n } else {\n return (0, _concat.default)(oldValue).call(oldValue, this.objects());\n }\n }\n });\n\n AV.Op._registerDecoder('Add', function (json) {\n return new AV.Op.Add(AV._decode(json.objects));\n });\n /**\n * @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\n\n AV.Op.AddUnique = AV.Op._extend(\n /** @lends AV.Op.AddUnique.prototype */\n {\n _initialize: function _initialize(objects) {\n this._objects = _.uniq(objects);\n },\n\n /**\n * Returns the objects to be added to the array.\n * @return {Array} The objects to be added to the array.\n */\n objects: function objects() {\n return this._objects;\n },\n\n /**\n * Returns a JSON version of the operation suitable for sending to AV.\n * @return {Object}\n */\n toJSON: function toJSON() {\n return {\n __op: 'AddUnique',\n objects: AV._encode(this.objects())\n };\n },\n _mergeWithPrevious: function _mergeWithPrevious(previous) {\n if (!previous) {\n return this;\n } else if (previous instanceof AV.Op.Unset) {\n return new AV.Op.Set(this.objects());\n } else if (previous instanceof AV.Op.Set) {\n return new AV.Op.Set(this._estimate(previous.value()));\n } else if (previous instanceof AV.Op.AddUnique) {\n return new AV.Op.AddUnique(this._estimate(previous.objects()));\n } else {\n throw new Error('Op is invalid after previous op.');\n }\n },\n _estimate: function _estimate(oldValue) {\n if (!oldValue) {\n return _.clone(this.objects());\n } else {\n // We can't just take the _.uniq(_.union(...)) of oldValue and\n // this.objects, because the uniqueness may not apply to oldValue\n // (especially if the oldValue was set via .set())\n var newValue = _.clone(oldValue);\n\n AV._arrayEach(this.objects(), function (obj) {\n if (obj instanceof AV.Object && obj.id) {\n var matchingObj = (0, _find.default)(_).call(_, newValue, function (anObj) {\n return anObj instanceof AV.Object && anObj.id === obj.id;\n });\n\n if (!matchingObj) {\n newValue.push(obj);\n } else {\n var index = (0, _indexOf.default)(_).call(_, newValue, matchingObj);\n newValue[index] = obj;\n }\n } else if (!_.contains(newValue, obj)) {\n newValue.push(obj);\n }\n });\n\n return newValue;\n }\n }\n });\n\n AV.Op._registerDecoder('AddUnique', function (json) {\n return new AV.Op.AddUnique(AV._decode(json.objects));\n });\n /**\n * @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\n\n AV.Op.Remove = AV.Op._extend(\n /** @lends AV.Op.Remove.prototype */\n {\n _initialize: function _initialize(objects) {\n this._objects = _.uniq(objects);\n },\n\n /**\n * Returns the objects to be removed from the array.\n * @return {Array} The objects to be removed from the array.\n */\n objects: function objects() {\n return this._objects;\n },\n\n /**\n * Returns a JSON version of the operation suitable for sending to AV.\n * @return {Object}\n */\n toJSON: function toJSON() {\n return {\n __op: 'Remove',\n objects: AV._encode(this.objects())\n };\n },\n _mergeWithPrevious: function _mergeWithPrevious(previous) {\n if (!previous) {\n return this;\n } else if (previous instanceof AV.Op.Unset) {\n return previous;\n } else if (previous instanceof AV.Op.Set) {\n return new AV.Op.Set(this._estimate(previous.value()));\n } else if (previous instanceof AV.Op.Remove) {\n return new AV.Op.Remove(_.union(previous.objects(), this.objects()));\n } else {\n throw new Error('Op is invalid after previous op.');\n }\n },\n _estimate: function _estimate(oldValue) {\n if (!oldValue) {\n return [];\n } else {\n var newValue = _.difference(oldValue, this.objects()); // If there are saved AV Objects being removed, also remove them.\n\n\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\n return newValue;\n }\n }\n });\n\n AV.Op._registerDecoder('Remove', function (json) {\n return new AV.Op.Remove(AV._decode(json.objects));\n });\n /**\n * @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\n\n AV.Op.Relation = AV.Op._extend(\n /** @lends AV.Op.Relation.prototype */\n {\n _initialize: function _initialize(adds, removes) {\n this._targetClassName = null;\n var self = this;\n\n var pointerToId = function pointerToId(object) {\n if (object instanceof AV.Object) {\n if (!object.id) {\n throw new Error(\"You can't add an unsaved AV.Object to a relation.\");\n }\n\n if (!self._targetClassName) {\n self._targetClassName = object.className;\n }\n\n if (self._targetClassName !== object.className) {\n throw new Error('Tried to create a AV.Relation with 2 different types: ' + self._targetClassName + ' and ' + object.className + '.');\n }\n\n return object.id;\n }\n\n return object;\n };\n\n this.relationsToAdd = _.uniq((0, _map.default)(_).call(_, adds, pointerToId));\n this.relationsToRemove = _.uniq((0, _map.default)(_).call(_, removes, pointerToId));\n },\n\n /**\n * Returns an array of unfetched AV.Object that are being added to the\n * relation.\n * @return {Array}\n */\n added: function added() {\n var self = this;\n return (0, _map.default)(_).call(_, this.relationsToAdd, function (objectId) {\n var object = AV.Object._create(self._targetClassName);\n\n object.id = objectId;\n return object;\n });\n },\n\n /**\n * Returns an array of unfetched AV.Object that are being removed from\n * the relation.\n * @return {Array}\n */\n removed: function removed() {\n var self = this;\n return (0, _map.default)(_).call(_, this.relationsToRemove, function (objectId) {\n var object = AV.Object._create(self._targetClassName);\n\n object.id = objectId;\n return object;\n });\n },\n\n /**\n * Returns a JSON version of the operation suitable for sending to AV.\n * @return {Object}\n */\n toJSON: function toJSON() {\n var adds = null;\n var removes = null;\n var self = this;\n\n var idToPointer = function idToPointer(id) {\n return {\n __type: 'Pointer',\n className: self._targetClassName,\n objectId: id\n };\n };\n\n var pointers = null;\n\n if (this.relationsToAdd.length > 0) {\n pointers = (0, _map.default)(_).call(_, this.relationsToAdd, idToPointer);\n adds = {\n __op: 'AddRelation',\n objects: pointers\n };\n }\n\n if (this.relationsToRemove.length > 0) {\n pointers = (0, _map.default)(_).call(_, this.relationsToRemove, idToPointer);\n removes = {\n __op: 'RemoveRelation',\n objects: pointers\n };\n }\n\n if (adds && removes) {\n return {\n __op: 'Batch',\n ops: [adds, removes]\n };\n }\n\n return adds || removes || {};\n },\n _mergeWithPrevious: function _mergeWithPrevious(previous) {\n if (!previous) {\n return this;\n } else if (previous instanceof AV.Op.Unset) {\n throw new Error(\"You can't modify a relation after deleting it.\");\n } else if (previous instanceof AV.Op.Relation) {\n if (previous._targetClassName && previous._targetClassName !== this._targetClassName) {\n throw new Error('Related object must be of class ' + previous._targetClassName + ', but ' + this._targetClassName + ' was passed in.');\n }\n\n var newAdd = _.union(_.difference(previous.relationsToAdd, this.relationsToRemove), this.relationsToAdd);\n\n var newRemove = _.union(_.difference(previous.relationsToRemove, this.relationsToAdd), this.relationsToRemove);\n\n var newRelation = new AV.Op.Relation(newAdd, newRemove);\n newRelation._targetClassName = this._targetClassName;\n return newRelation;\n } else {\n throw new Error('Op is invalid after previous op.');\n }\n },\n _estimate: function _estimate(oldValue, object, key) {\n if (!oldValue) {\n var relation = new AV.Relation(object, key);\n relation.targetClassName = this._targetClassName;\n } else if (oldValue instanceof AV.Relation) {\n if (this._targetClassName) {\n if (oldValue.targetClassName) {\n if (oldValue.targetClassName !== this._targetClassName) {\n throw new Error('Related object must be a ' + oldValue.targetClassName + ', but a ' + this._targetClassName + ' was passed in.');\n }\n } else {\n oldValue.targetClassName = this._targetClassName;\n }\n }\n\n return oldValue;\n } else {\n throw new Error('Op is invalid after previous op.');\n }\n }\n });\n\n AV.Op._registerDecoder('AddRelation', function (json) {\n return new AV.Op.Relation(AV._decode(json.objects), []);\n });\n\n AV.Op._registerDecoder('RemoveRelation', function (json) {\n return new AV.Op.Relation([], AV._decode(json.objects));\n });\n};\n\n/***/ }),\n/* 440 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(441);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 441 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isPrototypeOf = __webpack_require__(20);\nvar method = __webpack_require__(442);\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n var own = it.find;\n return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.find) ? method : own;\n};\n\n\n/***/ }),\n/* 442 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(443);\nvar entryVirtual = __webpack_require__(38);\n\nmodule.exports = entryVirtual('Array').find;\n\n\n/***/ }),\n/* 443 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(0);\nvar $find = __webpack_require__(101).find;\nvar addToUnscopables = __webpack_require__(152);\n\nvar FIND = 'find';\nvar SKIPS_HOLES = true;\n\n// Shouldn't skip holes\nif (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.find` method\n// https://tc39.es/ecma262/#sec-array.prototype.find\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND);\n\n\n/***/ }),\n/* 444 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _ = __webpack_require__(1);\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 *

    \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 *

    \n */\n AV.Relation = function (parent, key) {\n if (!_.isString(key)) {\n throw new TypeError('key must be a string');\n }\n\n this.parent = parent;\n this.key = key;\n this.targetClassName = null;\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\n\n AV.Relation.reverseQuery = function (parentClass, relationKey, child) {\n var query = new AV.Query(parentClass);\n query.equalTo(relationKey, child._toPointer());\n return query;\n };\n\n _.extend(AV.Relation.prototype,\n /** @lends AV.Relation.prototype */\n {\n /**\n * Makes sure that this relation has the right parent and key.\n * @private\n */\n _ensureParentAndKey: function _ensureParentAndKey(parent, key) {\n this.parent = this.parent || parent;\n this.key = this.key || key;\n\n if (this.parent !== parent) {\n throw new Error('Internal Error. Relation retrieved from two different Objects.');\n }\n\n if (this.key !== key) {\n throw new Error('Internal Error. Relation retrieved from two different keys.');\n }\n },\n\n /**\n * Adds a AV.Object or an array of AV.Objects to the relation.\n * @param {AV.Object|AV.Object[]} objects The item or items to add.\n */\n add: function add(objects) {\n if (!_.isArray(objects)) {\n objects = [objects];\n }\n\n var change = new AV.Op.Relation(objects, []);\n this.parent.set(this.key, change);\n this.targetClassName = change._targetClassName;\n },\n\n /**\n * Removes a AV.Object or an array of AV.Objects from this relation.\n * @param {AV.Object|AV.Object[]} objects The item or items to remove.\n */\n remove: function remove(objects) {\n if (!_.isArray(objects)) {\n objects = [objects];\n }\n\n var change = new AV.Op.Relation([], objects);\n this.parent.set(this.key, change);\n this.targetClassName = change._targetClassName;\n },\n\n /**\n * Returns a JSON version of the object suitable for saving to disk.\n * @return {Object}\n */\n toJSON: function toJSON() {\n return {\n __type: 'Relation',\n className: this.targetClassName\n };\n },\n\n /**\n * Returns a AV.Query that is limited to objects in this\n * relation.\n * @return {AV.Query}\n */\n query: function query() {\n var targetClass;\n var query;\n\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\n query._addCondition('$relatedTo', 'object', this.parent._toPointer());\n\n query._addCondition('$relatedTo', 'key', this.key);\n\n return query;\n }\n });\n};\n\n/***/ }),\n/* 445 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(2);\n\nvar _promise = _interopRequireDefault(__webpack_require__(10));\n\nvar _ = __webpack_require__(1);\n\nvar cos = __webpack_require__(446);\n\nvar qiniu = __webpack_require__(447);\n\nvar s3 = __webpack_require__(495);\n\nvar AVError = __webpack_require__(40);\n\nvar _require = __webpack_require__(25),\n request = _require.request,\n AVRequest = _require._request;\n\nvar _require2 = __webpack_require__(28),\n tap = _require2.tap,\n transformFetchOptions = _require2.transformFetchOptions;\n\nvar debug = __webpack_require__(60)('leancloud:file');\n\nvar parseBase64 = __webpack_require__(499);\n\nmodule.exports = function (AV) {\n // port from browserify path module\n // since react-native packager won't shim node modules.\n var extname = function extname(path) {\n if (!_.isString(path)) return '';\n return path.match(/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/)[4];\n };\n\n var b64Digit = function b64Digit(number) {\n if (number < 26) {\n return String.fromCharCode(65 + number);\n }\n\n if (number < 52) {\n return String.fromCharCode(97 + (number - 26));\n }\n\n if (number < 62) {\n return String.fromCharCode(48 + (number - 52));\n }\n\n if (number === 62) {\n return '+';\n }\n\n if (number === 63) {\n return '/';\n }\n\n throw new Error('Tried to encode large digit ' + number + ' in base64.');\n };\n\n var encodeBase64 = function encodeBase64(array) {\n var chunks = [];\n chunks.length = Math.ceil(array.length / 3);\n\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 var has2 = i * 3 + 1 < array.length;\n var has3 = i * 3 + 2 < array.length;\n chunks[i] = [b64Digit(b1 >> 2 & 0x3f), b64Digit(b1 << 4 & 0x30 | b2 >> 4 & 0x0f), has2 ? b64Digit(b2 << 2 & 0x3c | b3 >> 6 & 0x03) : '=', has3 ? b64Digit(b3 & 0x3f) : '='].join('');\n });\n\n return chunks.join('');\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:
    \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   * }
    \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\n\n AV.File = function (name, data, mimeType) {\n this.attributes = {\n name: name,\n url: '',\n metaData: {},\n // 用来存储转换后要上传的 base64 String\n base64: ''\n };\n\n if (_.isString(data)) {\n throw new TypeError('Creating an AV.File from a String is not yet supported.');\n }\n\n if (_.isArray(data)) {\n this.attributes.metaData.size = data.length;\n data = {\n base64: encodeBase64(data)\n };\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\n if (data.name) {\n this._extName = extname(data.name);\n }\n }\n\n var owner;\n\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 this.set('mime_type', mimeType);\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\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\n var file = new AV.File(name, null, type); //copy metaData properties to file.\n\n if (metaData) {\n for (var prop in metaData) {\n if (!file.attributes.metaData[prop]) file.attributes.metaData[prop] = metaData[prop];\n }\n }\n\n file.attributes.url = url; //Mark the file is from external source.\n\n file.attributes.metaData.__source = 'external';\n file.attributes.metaData.size = 0;\n return file;\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\n\n AV.File.createWithoutData = function (objectId) {\n if (!objectId) {\n throw new TypeError('The objectId must be provided');\n }\n\n var file = new AV.File();\n file.id = objectId;\n return file;\n };\n /**\n * Request file censor.\n * @since 4.13.0\n * @param {String} objectId\n * @return {Promise.}\n */\n\n\n AV.File.censor = function (objectId) {\n if (!AV._config.masterKey) {\n throw new Error('Cannot censor a file without masterKey');\n }\n\n return request({\n method: 'POST',\n path: \"/files/\".concat(objectId, \"/censor\"),\n authOptions: {\n useMasterKey: true\n }\n }).then(function (res) {\n return res.censorResult;\n });\n };\n\n _.extend(AV.File.prototype,\n /** @lends AV.File.prototype */\n {\n className: '_File',\n _toFullJSON: function _toFullJSON(seenObjects) {\n var _this = this;\n\n var full = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n var json = _.clone(this.attributes);\n\n AV._objectEach(json, function (val, key) {\n json[key] = AV._encode(val, seenObjects, undefined, full);\n });\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\n ['createdAt', 'updatedAt'].forEach(function (key) {\n if (_.has(_this, key)) {\n var val = _this[key];\n json[key] = _.isDate(val) ? val.toJSON() : val;\n }\n });\n\n if (full) {\n json.__type = 'File';\n }\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: function toFullJSON() {\n var seenObjects = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n return this._toFullJSON(seenObjects);\n },\n\n /**\n * Returns a JSON version of the object.\n * @return {Object}\n */\n toJSON: function toJSON(key, holder) {\n var seenObjects = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [this];\n return this._toFullJSON(seenObjects, false);\n },\n\n /**\n * Gets a Pointer referencing this file.\n * @private\n */\n _toPointer: function _toPointer() {\n return {\n __type: 'Pointer',\n className: this.className,\n objectId: this.id\n };\n },\n\n /**\n * Returns the ACL for this file.\n * @returns {AV.ACL} An instance of AV.ACL.\n */\n getACL: function getACL() {\n return this._acl;\n },\n\n /**\n * Sets the ACL to be used for this file.\n * @param {AV.ACL} acl An instance of AV.ACL.\n */\n setACL: function setACL(acl) {\n if (!(acl instanceof AV.ACL)) {\n return new AVError(AVError.OTHER_CAUSE, 'ACL must be a AV.ACL.');\n }\n\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: function 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: function 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: function get(attrName) {\n switch (attrName) {\n case 'objectId':\n return this.id;\n\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\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: function set() {\n var _this2 = this;\n\n var set = function set(attrName, value) {\n switch (attrName) {\n case 'name':\n case 'url':\n case 'mime_type':\n case 'base64':\n case 'metaData':\n _this2.attributes[attrName] = value;\n break;\n\n default:\n // File 并非一个 AVObject,不能完全自定义其他属性,所以只能都放在 metaData 上面\n _this2.attributes.metaData[attrName] = value;\n break;\n }\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 switch (args.length) {\n case 1:\n // 传入一个 Object\n for (var k in args[0]) {\n set(k, args[0][k]);\n }\n\n break;\n\n case 2:\n set(args[0], args[1]);\n break;\n }\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: function setUploadHeader(key, value) {\n this._uploadHeaders[key] = value;\n return this;\n },\n\n /**\n *

    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.

    \n *

    \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     *

    \n * @return {Object} The file's metadata JSON object.\n * @param {String} attr an optional metadata key.\n * @param {Object} value an optional metadata value.\n **/\n metaData: function metaData(attr, value) {\n if (attr && value) {\n this.attributes.metaData[attr] = value;\n return this;\n } else if (attr && !value) {\n return this.attributes.metaData[attr];\n } else {\n return this.attributes.metaData;\n }\n },\n\n /**\n * 如果文件是图片,获取图片的缩略图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 thumbnailURL: function thumbnailURL(width, height) {\n var quality = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 100;\n var scaleToFit = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n var fmt = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 'png';\n var url = this.attributes.url;\n\n if (!url) {\n throw new Error('Invalid url.');\n }\n\n if (!width || !height || width <= 0 || height <= 0) {\n throw new Error('Invalid width or height value.');\n }\n\n if (quality <= 0 || quality > 100) {\n throw new Error('Invalid quality value.');\n }\n\n var mode = scaleToFit ? 2 : 1;\n return url + '?imageView/' + mode + '/w/' + width + '/h/' + height + '/q/' + quality + '/format/' + fmt;\n },\n\n /**\n * Returns the file's size.\n * @return {Number} The file's size in bytes.\n **/\n size: function size() {\n return this.metaData().size;\n },\n\n /**\n * Returns the file's owner.\n * @return {String} The file's owner id.\n */\n ownerId: function ownerId() {\n return this.metaData().owner;\n },\n\n /**\n * Destroy the file.\n * @param {AuthOptions} options\n * @return {Promise} A promise that is fulfilled when the destroy\n * completes.\n */\n destroy: function destroy(options) {\n if (!this.id) {\n return _promise.default.reject(new Error('The file id does not eixst.'));\n }\n\n var request = AVRequest('files', null, this.id, 'DELETE', null, options);\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: function _fileToken(type, authOptions) {\n var name = this.attributes.name;\n var extName = extname(name);\n\n if (!extName && this._extName) {\n name += this._extName;\n extName = this._extName;\n }\n\n var data = {\n name: name,\n keep_file_name: authOptions.keepFileName,\n key: authOptions.key,\n ACL: this._acl,\n mime_type: type,\n metaData: this.attributes.metaData\n };\n return AVRequest('fileTokens', null, null, 'POST', data, authOptions);\n },\n\n /**\n * @callback UploadProgressCallback\n * @param {XMLHttpRequestProgressEvent} event - The progress event with 'loaded' and 'total' attributes\n */\n\n /**\n * Saves the file to the AV cloud.\n * @param {AuthOptions} [options] AuthOptions plus:\n * @param {UploadProgressCallback} [options.onprogress] 文件上传进度,在 Node.js 中无效,回调参数说明详见 {@link UploadProgressCallback}。\n * @param {boolean} [options.keepFileName = false] 保留下载文件的文件名。\n * @param {string} [options.key] 指定文件的 key。设置该选项需要使用 masterKey\n * @return {Promise} Promise that is resolved when the save finishes.\n */\n save: function save() {\n var _this3 = this;\n\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (this.id) {\n throw new Error('File is already saved.');\n }\n\n if (!this._previousSave) {\n if (this._data) {\n var mimeType = this.get('mime_type');\n this._previousSave = this._fileToken(mimeType, options).then(function (uploadInfo) {\n if (uploadInfo.mime_type) {\n mimeType = uploadInfo.mime_type;\n\n _this3.set('mime_type', mimeType);\n }\n\n _this3._token = uploadInfo.token;\n return _promise.default.resolve().then(function () {\n var data = _this3._data;\n\n if (data && data.base64) {\n return parseBase64(data.base64, mimeType);\n }\n\n if (data && data.blob) {\n if (!data.blob.type && mimeType) {\n data.blob.type = mimeType;\n }\n\n if (!data.blob.name) {\n data.blob.name = _this3.get('name');\n }\n\n return data.blob;\n }\n\n if (typeof Blob !== 'undefined' && data instanceof Blob) {\n return data;\n }\n\n throw new TypeError('malformed file data');\n }).then(function (data) {\n var _options = _.extend({}, options); // filter out download progress events\n\n\n if (options.onprogress) {\n _options.onprogress = function (event) {\n if (event.direction === 'download') return;\n return options.onprogress(event);\n };\n }\n\n switch (uploadInfo.provider) {\n case 's3':\n return s3(uploadInfo, data, _this3, _options);\n\n case 'qcloud':\n return cos(uploadInfo, data, _this3, _options);\n\n case 'qiniu':\n default:\n return qiniu(uploadInfo, data, _this3, _options);\n }\n }).then(tap(function () {\n return _this3._callback(true);\n }), function (error) {\n _this3._callback(false);\n\n throw error;\n });\n });\n } else if (this.attributes.url && this.attributes.metaData.__source === 'external') {\n // external link file.\n var data = {\n name: this.attributes.name,\n ACL: this._acl,\n metaData: this.attributes.metaData,\n mime_type: this.mimeType,\n url: this.attributes.url\n };\n this._previousSave = AVRequest('files', null, null, 'post', data, options).then(function (response) {\n _this3.id = response.objectId;\n return _this3;\n });\n }\n }\n\n return this._previousSave;\n },\n _callback: function _callback(success) {\n AVRequest('fileCallback', null, null, 'post', {\n token: this._token,\n result: success\n }).catch(debug);\n delete this._token;\n delete this._data;\n },\n\n /**\n * fetch the file from server. If the server's representation of the\n * model differs from its current attributes, they will be overriden,\n * @param {Object} fetchOptions Optional options to set 'keys',\n * 'include' and 'includeACL' option.\n * @param {AuthOptions} options\n * @return {Promise} A promise that is fulfilled when the fetch\n * completes.\n */\n fetch: function fetch(fetchOptions, options) {\n if (!this.id) {\n throw new Error('Cannot fetch unsaved file');\n }\n\n var request = AVRequest('files', null, this.id, 'GET', transformFetchOptions(fetchOptions), options);\n return request.then(this._finishFetch.bind(this));\n },\n _finishFetch: function _finishFetch(response) {\n var value = AV.Object.prototype.parse(response);\n value.attributes = {\n name: value.name,\n url: value.url,\n mime_type: value.mime_type,\n bucket: value.bucket\n };\n value.attributes.metaData = value.metaData || {};\n value.id = value.objectId; // clean\n\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\n _.extend(this, value);\n\n return this;\n },\n\n /**\n * Request file censor\n * @since 4.13.0\n * @return {Promise.}\n */\n censor: function censor() {\n if (!this.id) {\n throw new Error('Cannot censor an unsaved file');\n }\n\n return AV.File.censor(this.id);\n }\n });\n};\n\n/***/ }),\n/* 446 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _require = __webpack_require__(61),\n getAdapter = _require.getAdapter;\n\nvar debug = __webpack_require__(60)('cos');\n\nmodule.exports = function (uploadInfo, data, file) {\n var saveOptions = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var url = uploadInfo.upload_url + '?sign=' + encodeURIComponent(uploadInfo.token);\n var fileFormData = {\n field: 'fileContent',\n data: data,\n name: file.attributes.name\n };\n var options = {\n headers: file._uploadHeaders,\n data: {\n op: 'upload'\n },\n onprogress: saveOptions.onprogress\n };\n debug('url: %s, file: %o, options: %o', url, fileFormData, options);\n var upload = getAdapter('upload');\n return upload(url, fileFormData, options).then(function (response) {\n debug(response.status, response.data);\n\n if (response.ok === false) {\n var error = new Error(response.status);\n error.response = response;\n throw error;\n }\n\n file.attributes.url = uploadInfo.url;\n file._bucket = uploadInfo.bucket;\n file.id = uploadInfo.objectId;\n return file;\n }, function (error) {\n var response = error.response;\n\n if (response) {\n debug(response.status, response.data);\n error.statusCode = response.status;\n error.response = response.data;\n }\n\n throw error;\n });\n};\n\n/***/ }),\n/* 447 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _sliceInstanceProperty2 = __webpack_require__(81);\n\nvar _Array$from = __webpack_require__(448);\n\nvar _Symbol = __webpack_require__(453);\n\nvar _getIteratorMethod = __webpack_require__(231);\n\nvar _Reflect$construct = __webpack_require__(459);\n\nvar _interopRequireDefault = __webpack_require__(2);\n\nvar _inherits2 = _interopRequireDefault(__webpack_require__(463));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(485));\n\nvar _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(487));\n\nvar _classCallCheck2 = _interopRequireDefault(__webpack_require__(492));\n\nvar _createClass2 = _interopRequireDefault(__webpack_require__(493));\n\nvar _stringify = _interopRequireDefault(__webpack_require__(34));\n\nvar _concat = _interopRequireDefault(__webpack_require__(29));\n\nvar _promise = _interopRequireDefault(__webpack_require__(10));\n\nvar _slice = _interopRequireDefault(__webpack_require__(81));\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof _Symbol !== \"undefined\" && _getIteratorMethod(o) || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { var _context8; if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = _sliceInstanceProperty2(_context8 = Object.prototype.toString.call(o)).call(_context8, 8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return _Array$from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nvar _require = __webpack_require__(61),\n getAdapter = _require.getAdapter;\n\nvar debug = __webpack_require__(60)('leancloud:qiniu');\n\nvar ajax = __webpack_require__(103);\n\nvar btoa = __webpack_require__(494);\n\nvar SHARD_THRESHOLD = 1024 * 1024 * 64;\nvar CHUNK_SIZE = 1024 * 1024 * 16;\n\nfunction upload(uploadInfo, data, file) {\n var saveOptions = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n // Get the uptoken to upload files to qiniu.\n var uptoken = uploadInfo.token;\n var url = uploadInfo.upload_url || 'https://upload.qiniup.com';\n var fileFormData = {\n field: 'file',\n data: data,\n name: file.attributes.name\n };\n var options = {\n headers: file._uploadHeaders,\n data: {\n name: file.attributes.name,\n key: uploadInfo.key,\n token: uptoken\n },\n onprogress: saveOptions.onprogress\n };\n debug('url: %s, file: %o, options: %o', url, fileFormData, options);\n var upload = getAdapter('upload');\n return upload(url, fileFormData, options).then(function (response) {\n debug(response.status, response.data);\n\n if (response.ok === false) {\n var message = response.status;\n\n if (response.data) {\n if (response.data.error) {\n message = response.data.error;\n } else {\n message = (0, _stringify.default)(response.data);\n }\n }\n\n var error = new Error(message);\n error.response = response;\n throw error;\n }\n\n file.attributes.url = uploadInfo.url;\n file._bucket = uploadInfo.bucket;\n file.id = uploadInfo.objectId;\n return file;\n }, function (error) {\n var response = error.response;\n\n if (response) {\n debug(response.status, response.data);\n error.statusCode = response.status;\n error.response = response.data;\n }\n\n throw error;\n });\n}\n\nfunction urlSafeBase64(string) {\n var base64 = btoa(unescape(encodeURIComponent(string)));\n var result = '';\n\n var _iterator = _createForOfIteratorHelper(base64),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var ch = _step.value;\n\n switch (ch) {\n case '+':\n result += '-';\n break;\n\n case '/':\n result += '_';\n break;\n\n default:\n result += ch;\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n return result;\n}\n\nvar ShardUploader = /*#__PURE__*/function () {\n function ShardUploader(uploadInfo, data, file, saveOptions) {\n var _context,\n _context2,\n _this = this;\n\n (0, _classCallCheck2.default)(this, ShardUploader);\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 var key = urlSafeBase64(uploadInfo.key);\n var uploadURL = uploadInfo.upload_url || 'https://upload.qiniup.com';\n this.baseURL = (0, _concat.default)(_context = (0, _concat.default)(_context2 = \"\".concat(uploadURL, \"/buckets/\")).call(_context2, uploadInfo.bucket, \"/objects/\")).call(_context, key, \"/uploads\");\n this.upToken = 'UpToken ' + uploadInfo.token;\n this.uploaded = 0;\n\n if (saveOptions && saveOptions.onprogress) {\n this.onProgress = function (_ref) {\n var loaded = _ref.loaded;\n loaded += _this.uploadedChunks * CHUNK_SIZE;\n\n if (loaded <= _this.uploaded) {\n return;\n }\n\n if (_this.size) {\n saveOptions.onprogress({\n loaded: loaded,\n total: _this.size,\n percent: loaded / _this.size * 100\n });\n } else {\n saveOptions.onprogress({\n loaded: loaded\n });\n }\n\n _this.uploaded = loaded;\n };\n }\n }\n /**\n * @returns {Promise}\n */\n\n\n (0, _createClass2.default)(ShardUploader, [{\n key: \"getUploadId\",\n value: function getUploadId() {\n return ajax({\n method: 'POST',\n url: this.baseURL,\n headers: {\n Authorization: this.upToken\n }\n }).then(function (res) {\n return res.uploadId;\n });\n }\n }, {\n key: \"getChunk\",\n value: function getChunk() {\n throw new Error('Not implemented');\n }\n /**\n * @param {string} uploadId\n * @param {number} partNumber\n * @param {any} data\n * @returns {Promise<{ partNumber: number, etag: string }>}\n */\n\n }, {\n key: \"uploadPart\",\n value: function uploadPart(uploadId, partNumber, data) {\n var _context3, _context4;\n\n return ajax({\n method: 'PUT',\n url: (0, _concat.default)(_context3 = (0, _concat.default)(_context4 = \"\".concat(this.baseURL, \"/\")).call(_context4, uploadId, \"/\")).call(_context3, partNumber),\n headers: {\n Authorization: this.upToken\n },\n data: data,\n onprogress: this.onProgress\n }).then(function (_ref2) {\n var etag = _ref2.etag;\n return {\n partNumber: partNumber,\n etag: etag\n };\n });\n }\n }, {\n key: \"stopUpload\",\n value: function stopUpload(uploadId) {\n var _context5;\n\n return ajax({\n method: 'DELETE',\n url: (0, _concat.default)(_context5 = \"\".concat(this.baseURL, \"/\")).call(_context5, uploadId),\n headers: {\n Authorization: this.upToken\n }\n });\n }\n }, {\n key: \"upload\",\n value: function upload() {\n var _this2 = this;\n\n var parts = [];\n return this.getUploadId().then(function (uploadId) {\n var uploadPart = function uploadPart() {\n return _promise.default.resolve(_this2.getChunk()).then(function (chunk) {\n if (!chunk) {\n return;\n }\n\n var partNumber = parts.length + 1;\n return _this2.uploadPart(uploadId, partNumber, chunk).then(function (part) {\n parts.push(part);\n _this2.uploadedChunks++;\n return uploadPart();\n });\n }).catch(function (error) {\n return _this2.stopUpload(uploadId).then(function () {\n return _promise.default.reject(error);\n });\n });\n };\n\n return uploadPart().then(function () {\n var _context6;\n\n return ajax({\n method: 'POST',\n url: (0, _concat.default)(_context6 = \"\".concat(_this2.baseURL, \"/\")).call(_context6, uploadId),\n headers: {\n Authorization: _this2.upToken\n },\n data: {\n parts: parts,\n fname: _this2.file.attributes.name,\n mimeType: _this2.file.attributes.mime_type\n }\n });\n });\n }).then(function () {\n _this2.file.attributes.url = _this2.uploadInfo.url;\n _this2.file._bucket = _this2.uploadInfo.bucket;\n _this2.file.id = _this2.uploadInfo.objectId;\n return _this2.file;\n });\n }\n }]);\n return ShardUploader;\n}();\n\nvar BlobUploader = /*#__PURE__*/function (_ShardUploader) {\n (0, _inherits2.default)(BlobUploader, _ShardUploader);\n\n var _super = _createSuper(BlobUploader);\n\n function BlobUploader(uploadInfo, data, file, saveOptions) {\n var _this3;\n\n (0, _classCallCheck2.default)(this, BlobUploader);\n _this3 = _super.call(this, uploadInfo, data, file, saveOptions);\n _this3.size = data.size;\n return _this3;\n }\n /**\n * @returns {Blob | null}\n */\n\n\n (0, _createClass2.default)(BlobUploader, [{\n key: \"getChunk\",\n value: function getChunk() {\n var _context7;\n\n if (this.offset >= this.size) {\n return null;\n }\n\n var chunk = (0, _slice.default)(_context7 = this.data).call(_context7, this.offset, this.offset + CHUNK_SIZE);\n this.offset += chunk.size;\n return chunk;\n }\n }]);\n return BlobUploader;\n}(ShardUploader);\n\nfunction isBlob(data) {\n return typeof Blob !== 'undefined' && data instanceof Blob;\n}\n\nmodule.exports = function (uploadInfo, data, file) {\n var saveOptions = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n if (isBlob(data) && data.size >= SHARD_THRESHOLD) {\n return new BlobUploader(uploadInfo, data, file, saveOptions).upload();\n }\n\n return upload(uploadInfo, data, file, saveOptions);\n};\n\n/***/ }),\n/* 448 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(230);\n\n/***/ }),\n/* 449 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(95);\n__webpack_require__(450);\nvar path = __webpack_require__(13);\n\nmodule.exports = path.Array.from;\n\n\n/***/ }),\n/* 450 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(0);\nvar from = __webpack_require__(451);\nvar checkCorrectnessOfIteration = __webpack_require__(160);\n\nvar INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) {\n // eslint-disable-next-line es-x/no-array-from -- required for testing\n Array.from(iterable);\n});\n\n// `Array.from` method\n// https://tc39.es/ecma262/#sec-array.from\n$({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, {\n from: from\n});\n\n\n/***/ }),\n/* 451 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar bind = __webpack_require__(50);\nvar call = __webpack_require__(11);\nvar toObject = __webpack_require__(35);\nvar callWithSafeIterationClosing = __webpack_require__(452);\nvar isArrayIteratorMethod = __webpack_require__(149);\nvar isConstructor = __webpack_require__(93);\nvar lengthOfArrayLike = __webpack_require__(42);\nvar createProperty = __webpack_require__(99);\nvar getIterator = __webpack_require__(150);\nvar getIteratorMethod = __webpack_require__(90);\n\nvar $Array = Array;\n\n// `Array.from` method implementation\n// https://tc39.es/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var IS_CONSTRUCTOR = isConstructor(this);\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined);\n var iteratorMethod = getIteratorMethod(O);\n var index = 0;\n var length, result, step, iterator, next, value;\n // if the target is not iterable or it's an array with the default iterator - use a simple case\n if (iteratorMethod && !(this === $Array && isArrayIteratorMethod(iteratorMethod))) {\n iterator = getIterator(O, iteratorMethod);\n next = iterator.next;\n result = IS_CONSTRUCTOR ? new this() : [];\n for (;!(step = call(next, iterator)).done; index++) {\n value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;\n createProperty(result, index, value);\n }\n } else {\n length = lengthOfArrayLike(O);\n result = IS_CONSTRUCTOR ? new this(length) : $Array(length);\n for (;length > index; index++) {\n value = mapping ? mapfn(O[index], index) : O[index];\n createProperty(result, index, value);\n }\n }\n result.length = index;\n return result;\n};\n\n\n/***/ }),\n/* 452 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar anObject = __webpack_require__(21);\nvar iteratorClose = __webpack_require__(151);\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n try {\n return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n } catch (error) {\n iteratorClose(iterator, 'throw', error);\n }\n};\n\n\n/***/ }),\n/* 453 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(226);\n\n/***/ }),\n/* 454 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(455);\n\n\n/***/ }),\n/* 455 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(456);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 456 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(457);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 457 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(458);\n__webpack_require__(73);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 458 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(70);\n__webpack_require__(95);\nvar getIteratorMethod = __webpack_require__(90);\n\nmodule.exports = getIteratorMethod;\n\n\n/***/ }),\n/* 459 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(460);\n\n/***/ }),\n/* 460 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(461);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 461 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(462);\nvar path = __webpack_require__(13);\n\nmodule.exports = path.Reflect.construct;\n\n\n/***/ }),\n/* 462 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(0);\nvar getBuiltIn = __webpack_require__(16);\nvar apply = __webpack_require__(62);\nvar bind = __webpack_require__(232);\nvar aConstructor = __webpack_require__(156);\nvar anObject = __webpack_require__(21);\nvar isObject = __webpack_require__(17);\nvar create = __webpack_require__(51);\nvar fails = __webpack_require__(4);\n\nvar nativeConstruct = getBuiltIn('Reflect', 'construct');\nvar ObjectPrototype = Object.prototype;\nvar push = [].push;\n\n// `Reflect.construct` method\n// https://tc39.es/ecma262/#sec-reflect.construct\n// MS Edge supports only 2 arguments and argumentsList argument is optional\n// FF Nightly sets third argument as `new.target`, but does not create `this` from it\nvar NEW_TARGET_BUG = fails(function () {\n function F() { /* empty */ }\n return !(nativeConstruct(function () { /* empty */ }, [], F) instanceof F);\n});\n\nvar ARGS_BUG = !fails(function () {\n nativeConstruct(function () { /* empty */ });\n});\n\nvar FORCED = NEW_TARGET_BUG || ARGS_BUG;\n\n$({ target: 'Reflect', stat: true, forced: FORCED, sham: FORCED }, {\n construct: function construct(Target, args /* , newTarget */) {\n aConstructor(Target);\n anObject(args);\n var newTarget = arguments.length < 3 ? Target : aConstructor(arguments[2]);\n if (ARGS_BUG && !NEW_TARGET_BUG) return nativeConstruct(Target, args, newTarget);\n if (Target == newTarget) {\n // w/o altered newTarget, optimization for 0-4 arguments\n switch (args.length) {\n case 0: return new Target();\n case 1: return new Target(args[0]);\n case 2: return new Target(args[0], args[1]);\n case 3: return new Target(args[0], args[1], args[2]);\n case 4: return new Target(args[0], args[1], args[2], args[3]);\n }\n // w/o altered newTarget, lot of arguments case\n var $args = [null];\n apply(push, $args, args);\n return new (apply(bind, Target, $args))();\n }\n // with altered newTarget, not support built-in constructors\n var proto = newTarget.prototype;\n var instance = create(isObject(proto) ? proto : ObjectPrototype);\n var result = apply(Target, instance, args);\n return isObject(result) ? result : instance;\n }\n});\n\n\n/***/ }),\n/* 463 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar _Object$create = __webpack_require__(464);\n\nvar _Object$defineProperty = __webpack_require__(137);\n\nvar setPrototypeOf = __webpack_require__(474);\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = _Object$create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n\n _Object$defineProperty(subClass, \"prototype\", {\n writable: false\n });\n\n if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n/***/ }),\n/* 464 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(465);\n\n/***/ }),\n/* 465 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(466);\n\n\n/***/ }),\n/* 466 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(467);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 467 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(468);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 468 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(469);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 469 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(470);\nvar path = __webpack_require__(13);\n\nvar Object = path.Object;\n\nmodule.exports = function create(P, D) {\n return Object.create(P, D);\n};\n\n\n/***/ }),\n/* 470 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// TODO: Remove from `core-js@4`\nvar $ = __webpack_require__(0);\nvar DESCRIPTORS = __webpack_require__(19);\nvar create = __webpack_require__(51);\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\n$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, {\n create: create\n});\n\n\n/***/ }),\n/* 471 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(472);\n\n\n/***/ }),\n/* 472 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(473);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 473 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(224);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 474 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar _Object$setPrototypeOf = __webpack_require__(233);\n\nvar _bindInstanceProperty = __webpack_require__(234);\n\nfunction _setPrototypeOf(o, p) {\n var _context;\n\n module.exports = _setPrototypeOf = _Object$setPrototypeOf ? _bindInstanceProperty(_context = _Object$setPrototypeOf).call(_context) : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n/***/ }),\n/* 475 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(476);\n\n\n/***/ }),\n/* 476 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(477);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 477 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(221);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 478 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(479);\n\n\n/***/ }),\n/* 479 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(480);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 480 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(481);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 481 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(482);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 482 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isPrototypeOf = __webpack_require__(20);\nvar method = __webpack_require__(483);\n\nvar FunctionPrototype = Function.prototype;\n\nmodule.exports = function (it) {\n var own = it.bind;\n return it === FunctionPrototype || (isPrototypeOf(FunctionPrototype, it) && own === FunctionPrototype.bind) ? method : own;\n};\n\n\n/***/ }),\n/* 483 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(484);\nvar entryVirtual = __webpack_require__(38);\n\nmodule.exports = entryVirtual('Function').bind;\n\n\n/***/ }),\n/* 484 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// TODO: Remove from `core-js@4`\nvar $ = __webpack_require__(0);\nvar bind = __webpack_require__(232);\n\n// `Function.prototype.bind` method\n// https://tc39.es/ecma262/#sec-function.prototype.bind\n$({ target: 'Function', proto: true, forced: Function.bind !== bind }, {\n bind: bind\n});\n\n\n/***/ }),\n/* 485 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar _typeof = __webpack_require__(135)[\"default\"];\n\nvar assertThisInitialized = __webpack_require__(486);\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n/***/ }),\n/* 486 */\n/***/ (function(module, exports) {\n\nfunction _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, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n/***/ }),\n/* 487 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar _Object$setPrototypeOf = __webpack_require__(233);\n\nvar _bindInstanceProperty = __webpack_require__(234);\n\nvar _Object$getPrototypeOf = __webpack_require__(488);\n\nfunction _getPrototypeOf(o) {\n var _context;\n\n module.exports = _getPrototypeOf = _Object$setPrototypeOf ? _bindInstanceProperty(_context = _Object$getPrototypeOf).call(_context) : function _getPrototypeOf(o) {\n return o.__proto__ || _Object$getPrototypeOf(o);\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n/***/ }),\n/* 488 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(489);\n\n/***/ }),\n/* 489 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(490);\n\n\n/***/ }),\n/* 490 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(491);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 491 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(216);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 492 */\n/***/ (function(module, exports) {\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n/***/ }),\n/* 493 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar _Object$defineProperty = __webpack_require__(137);\n\nfunction _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\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\n _Object$defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n\n return Constructor;\n}\n\nmodule.exports = _createClass, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n/***/ }),\n/* 494 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(2);\n\nvar _slice = _interopRequireDefault(__webpack_require__(81));\n\n// base64 character set, plus padding character (=)\nvar b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n\nmodule.exports = function (string) {\n var result = '';\n\n for (var i = 0; i < string.length;) {\n var a = string.charCodeAt(i++);\n var b = string.charCodeAt(i++);\n var c = string.charCodeAt(i++);\n\n if (a > 255 || b > 255 || c > 255) {\n throw new TypeError('Failed to encode base64: The string to be encoded contains characters outside of the Latin1 range.');\n }\n\n var bitmap = a << 16 | b << 8 | c;\n result += b64.charAt(bitmap >> 18 & 63) + b64.charAt(bitmap >> 12 & 63) + b64.charAt(bitmap >> 6 & 63) + b64.charAt(bitmap & 63);\n } // To determine the final padding\n\n\n var rest = string.length % 3; // If there's need of padding, replace the last 'A's with equal signs\n\n return rest ? (0, _slice.default)(result).call(result, 0, rest - 3) + '==='.substring(rest) : result;\n};\n\n/***/ }),\n/* 495 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _ = __webpack_require__(1);\n\nvar ajax = __webpack_require__(103);\n\nmodule.exports = function upload(uploadInfo, data, file) {\n var saveOptions = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n return ajax({\n url: uploadInfo.upload_url,\n method: 'PUT',\n data: data,\n headers: _.extend({\n 'Content-Type': file.get('mime_type'),\n 'Cache-Control': 'public, max-age=31536000'\n }, file._uploadHeaders),\n onprogress: saveOptions.onprogress\n }).then(function () {\n file.attributes.url = uploadInfo.url;\n file._bucket = uploadInfo.bucket;\n file.id = uploadInfo.objectId;\n return file;\n });\n};\n\n/***/ }),\n/* 496 */\n/***/ (function(module, exports, __webpack_require__) {\n\n(function(){\r\n var crypt = __webpack_require__(497),\r\n utf8 = __webpack_require__(235).utf8,\r\n isBuffer = __webpack_require__(498),\r\n bin = __webpack_require__(235).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/* 497 */\n/***/ (function(module, exports) {\n\n(function() {\n var base64map\n = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n\n crypt = {\n // Bit-wise rotation left\n rotl: function(n, b) {\n return (n << b) | (n >>> (32 - b));\n },\n\n // Bit-wise rotation right\n rotr: function(n, b) {\n return (n << (32 - b)) | (n >>> b);\n },\n\n // Swap big-endian to little-endian and vice versa\n endian: function(n) {\n // If number given, swap endian\n if (n.constructor == Number) {\n return crypt.rotl(n, 8) & 0x00FF00FF | crypt.rotl(n, 24) & 0xFF00FF00;\n }\n\n // Else, assume array and swap all items\n for (var i = 0; i < n.length; i++)\n n[i] = crypt.endian(n[i]);\n return n;\n },\n\n // Generate an array of any length of random bytes\n randomBytes: function(n) {\n for (var bytes = []; n > 0; n--)\n bytes.push(Math.floor(Math.random() * 256));\n return bytes;\n },\n\n // Convert a byte array to big-endian 32-bit words\n bytesToWords: function(bytes) {\n for (var words = [], i = 0, b = 0; i < bytes.length; i++, b += 8)\n words[b >>> 5] |= bytes[i] << (24 - b % 32);\n return words;\n },\n\n // Convert big-endian 32-bit words to a byte array\n wordsToBytes: function(words) {\n for (var bytes = [], b = 0; b < words.length * 32; b += 8)\n bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF);\n return bytes;\n },\n\n // Convert a byte array to a hex string\n bytesToHex: function(bytes) {\n for (var hex = [], i = 0; i < bytes.length; i++) {\n hex.push((bytes[i] >>> 4).toString(16));\n hex.push((bytes[i] & 0xF).toString(16));\n }\n return hex.join('');\n },\n\n // Convert a hex string to a byte array\n hexToBytes: function(hex) {\n for (var bytes = [], c = 0; c < hex.length; c += 2)\n bytes.push(parseInt(hex.substr(c, 2), 16));\n return bytes;\n },\n\n // Convert a byte array to a base-64 string\n bytesToBase64: function(bytes) {\n for (var base64 = [], i = 0; i < bytes.length; i += 3) {\n var triplet = (bytes[i] << 16) | (bytes[i + 1] << 8) | bytes[i + 2];\n for (var j = 0; j < 4; j++)\n if (i * 8 + j * 6 <= bytes.length * 8)\n base64.push(base64map.charAt((triplet >>> 6 * (3 - j)) & 0x3F));\n else\n base64.push('=');\n }\n return base64.join('');\n },\n\n // Convert a base-64 string to a byte array\n base64ToBytes: function(base64) {\n // Remove non-base-64 characters\n base64 = base64.replace(/[^A-Z0-9+\\/]/ig, '');\n\n for (var bytes = [], i = 0, imod4 = 0; i < base64.length;\n imod4 = ++i % 4) {\n if (imod4 == 0) continue;\n bytes.push(((base64map.indexOf(base64.charAt(i - 1))\n & (Math.pow(2, -2 * imod4 + 8) - 1)) << (imod4 * 2))\n | (base64map.indexOf(base64.charAt(i)) >>> (6 - imod4 * 2)));\n }\n return bytes;\n }\n };\n\n module.exports = crypt;\n})();\n\n\n/***/ }),\n/* 498 */\n/***/ (function(module, exports) {\n\n/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh \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/* 499 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(2);\n\nvar _indexOf = _interopRequireDefault(__webpack_require__(102));\n\nvar dataURItoBlob = function dataURItoBlob(dataURI, type) {\n var _context;\n\n var byteString; // 传入的 base64,不是 dataURL\n\n if ((0, _indexOf.default)(dataURI).call(dataURI, 'base64') < 0) {\n byteString = atob(dataURI);\n } else if ((0, _indexOf.default)(_context = dataURI.split(',')[0]).call(_context, 'base64') >= 0) {\n type = type || dataURI.split(',')[0].split(':')[1].split(';')[0];\n byteString = atob(dataURI.split(',')[1]);\n } else {\n byteString = unescape(dataURI.split(',')[1]);\n }\n\n var ia = new Uint8Array(byteString.length);\n\n for (var i = 0; i < byteString.length; i++) {\n ia[i] = byteString.charCodeAt(i);\n }\n\n return new Blob([ia], {\n type: type\n });\n};\n\nmodule.exports = dataURItoBlob;\n\n/***/ }),\n/* 500 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(2);\n\nvar _slicedToArray2 = _interopRequireDefault(__webpack_require__(501));\n\nvar _map = _interopRequireDefault(__webpack_require__(39));\n\nvar _indexOf = _interopRequireDefault(__webpack_require__(102));\n\nvar _find = _interopRequireDefault(__webpack_require__(104));\n\nvar _promise = _interopRequireDefault(__webpack_require__(10));\n\nvar _concat = _interopRequireDefault(__webpack_require__(29));\n\nvar _keys2 = _interopRequireDefault(__webpack_require__(48));\n\nvar _stringify = _interopRequireDefault(__webpack_require__(34));\n\nvar _defineProperty = _interopRequireDefault(__webpack_require__(223));\n\nvar _getOwnPropertyDescriptor = _interopRequireDefault(__webpack_require__(522));\n\nvar _ = __webpack_require__(1);\n\nvar AVError = __webpack_require__(40);\n\nvar _require = __webpack_require__(25),\n _request = _require._request;\n\nvar _require2 = __webpack_require__(28),\n isNullOrUndefined = _require2.isNullOrUndefined,\n ensureArray = _require2.ensureArray,\n transformFetchOptions = _require2.transformFetchOptions,\n setValue = _require2.setValue,\n findValue = _require2.findValue,\n isPlainObject = _require2.isPlainObject,\n continueWhile = _require2.continueWhile;\n\nvar recursiveToPointer = function recursiveToPointer(value) {\n if (_.isArray(value)) return (0, _map.default)(value).call(value, recursiveToPointer);\n if (isPlainObject(value)) return _.mapObject(value, recursiveToPointer);\n if (_.isObject(value) && value._toPointer) return value._toPointer();\n return value;\n};\n\nvar RESERVED_KEYS = ['objectId', 'createdAt', 'updatedAt'];\n\nvar checkReservedKey = function checkReservedKey(key) {\n if ((0, _indexOf.default)(RESERVED_KEYS).call(RESERVED_KEYS, key) !== -1) {\n throw new Error(\"key[\".concat(key, \"] is reserved\"));\n }\n};\n\nvar handleBatchResults = function handleBatchResults(results) {\n var firstError = (0, _find.default)(_).call(_, results, function (result) {\n return result instanceof Error;\n });\n\n if (!firstError) {\n return results;\n }\n\n var error = new AVError(firstError.code, firstError.message);\n error.results = results;\n throw error;\n}; // Helper function to get a value from a Backbone object as a property\n// or as a function.\n\n\nfunction getValue(object, prop) {\n if (!(object && object[prop])) {\n return null;\n }\n\n return _.isFunction(object[prop]) ? object[prop]() : object[prop];\n} // AV.Object is analogous to the Java AVObject.\n// It also implements the same interface as a Backbone model.\n\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 *

    You won't normally call this method directly. It is recommended that\n * you use a subclass of AV.Object instead, created by calling\n * extend.

    \n *\n *

    However, if you don't want to use a subclass, or aren't sure which\n * subclass is appropriate, you can use this form:

    \n   *     var object = new AV.Object(\"ClassName\");\n   * 
    \n * That is basically equivalent to:
    \n   *     var MyClass = AV.Object.extend(\"ClassName\");\n   *     var object = new MyClass();\n   * 

    \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 *

    The fundamental unit of AV data, which implements the Backbone Model\n * interface.

    \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\n if (options && options.parse) {\n attributes = this.parse(attributes);\n attributes = this._mergeMagicFields(attributes);\n }\n\n var defaults = getValue(this, 'defaults');\n\n if (defaults) {\n attributes = _.extend({}, defaults, attributes);\n }\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\n this._opSetQueue = [{}]; // List of sets of changes to the data.\n\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\n this._escapedAttributes = {};\n this.cid = _.uniqueId('c');\n this.changed = {};\n this._silent = {};\n this._pending = {};\n this.set(attributes, {\n silent: true\n });\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 * @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 AV.Object.\n */\n\n\n AV.Object.saveAll = function (list, options) {\n return AV.Object._deepSaveAsync(list, null, options);\n };\n /**\n * Fetch the given list of AV.Object.\n *\n * @param {AV.Object[]} objects A list of AV.Object\n * @param {AuthOptions} options\n * @return {Promise.} The given list of AV.Object, updated\n */\n\n\n AV.Object.fetchAll = function (objects, options) {\n return _promise.default.resolve().then(function () {\n return _request('batch', null, null, 'POST', {\n requests: (0, _map.default)(_).call(_, objects, function (object) {\n var _context;\n\n if (!object.className) throw new Error('object must have className to fetch');\n if (!object.id) throw new Error('object must have id to fetch');\n if (object.dirty()) throw new Error('object is modified but not saved');\n return {\n method: 'GET',\n path: (0, _concat.default)(_context = \"/1.1/classes/\".concat(object.className, \"/\")).call(_context, object.id)\n };\n })\n }, options);\n }).then(function (response) {\n var results = (0, _map.default)(_).call(_, objects, function (object, i) {\n if (response[i].success) {\n var fetchedAttrs = object.parse(response[i].success);\n\n object._cleanupUnsetKeys(fetchedAttrs);\n\n object._finishFetch(fetchedAttrs);\n\n return object;\n }\n\n if (response[i].success === null) {\n return new AVError(AVError.OBJECT_NOT_FOUND, 'Object not found.');\n }\n\n return new AVError(response[i].error.code, response[i].error.error);\n });\n return handleBatchResults(results);\n });\n }; // Attach all inheritable methods to the AV.Object prototype.\n\n\n _.extend(AV.Object.prototype, AV.Events,\n /** @lends AV.Object.prototype */\n {\n _fetchWhenSave: false,\n\n /**\n * Initialize is an empty function by default. Override it with your own\n * initialization logic.\n */\n initialize: function initialize() {},\n\n /**\n * Set whether to enable fetchWhenSave option when updating object.\n * When set true, SDK would fetch the latest object after saving.\n * Default is false.\n *\n * @deprecated use AV.Object#save with options.fetchWhenSave instead\n * @param {boolean} enable true to enable fetchWhenSave option.\n */\n fetchWhenSave: function fetchWhenSave(enable) {\n console.warn('AV.Object#fetchWhenSave is deprecated, use AV.Object#save with options.fetchWhenSave instead.');\n\n if (!_.isBoolean(enable)) {\n throw new Error('Expect boolean value for fetchWhenSave');\n }\n\n this._fetchWhenSave = enable;\n },\n\n /**\n * Returns the object's objectId.\n * @return {String} the objectId.\n */\n getObjectId: function getObjectId() {\n return this.id;\n },\n\n /**\n * Returns the object's createdAt attribute.\n * @return {Date}\n */\n getCreatedAt: function getCreatedAt() {\n return this.createdAt;\n },\n\n /**\n * Returns the object's updatedAt attribute.\n * @return {Date}\n */\n getUpdatedAt: function getUpdatedAt() {\n return this.updatedAt;\n },\n\n /**\n * Returns a JSON version of the object.\n * @return {Object}\n */\n toJSON: function toJSON(key, holder) {\n var seenObjects = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n return this._toFullJSON(seenObjects, false);\n },\n\n /**\n * Returns a JSON version of the object with meta data.\n * Inverse to {@link AV.parseJSON}\n * @since 3.0.0\n * @return {Object}\n */\n toFullJSON: function toFullJSON() {\n var seenObjects = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n return this._toFullJSON(seenObjects);\n },\n _toFullJSON: function _toFullJSON(seenObjects) {\n var _this = this;\n\n var full = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n var json = _.clone(this.attributes);\n\n if (_.isArray(seenObjects)) {\n var newSeenObjects = (0, _concat.default)(seenObjects).call(seenObjects, this);\n }\n\n AV._objectEach(json, function (val, key) {\n json[key] = AV._encode(val, newSeenObjects, undefined, full);\n });\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\n ['createdAt', 'updatedAt'].forEach(function (key) {\n if (_.has(_this, key)) {\n var val = _this[key];\n json[key] = _.isDate(val) ? val.toJSON() : val;\n }\n });\n\n if (full) {\n json.__type = 'Object';\n if (_.isArray(seenObjects) && seenObjects.length) json.__type = 'Pointer';\n json.className = this.className;\n }\n\n return json;\n },\n\n /**\n * Updates _hashedJSON to reflect the current state of this object.\n * Adds any changed hash values to the set of pending changes.\n * @private\n */\n _refreshCache: function _refreshCache() {\n var self = this;\n\n if (self._refreshingCache) {\n return;\n }\n\n self._refreshingCache = true;\n\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), {\n silent: true\n });\n }\n }\n });\n\n delete self._refreshingCache;\n },\n\n /**\n * Returns true if this object has been modified since its last\n * save/refresh. If an attribute is specified, it returns true only if that\n * particular attribute has been modified since the last save/refresh.\n * @param {String} attr An attribute name (optional).\n * @return {Boolean}\n */\n dirty: function dirty(attr) {\n this._refreshCache();\n\n var currentChanges = _.last(this._opSetQueue);\n\n if (attr) {\n return currentChanges[attr] ? true : false;\n }\n\n if (!this.id) {\n return true;\n }\n\n if ((0, _keys2.default)(_).call(_, currentChanges).length > 0) {\n return true;\n }\n\n return false;\n },\n\n /**\n * Returns the keys of the modified attribute since its last save/refresh.\n * @return {String[]}\n */\n dirtyKeys: function dirtyKeys() {\n this._refreshCache();\n\n var currentChanges = _.last(this._opSetQueue);\n\n return (0, _keys2.default)(_).call(_, currentChanges);\n },\n\n /**\n * Gets a Pointer referencing this Object.\n * @private\n */\n _toPointer: function _toPointer() {\n // if (!this.id) {\n // throw new Error(\"Can't serialize an unsaved AV.Object\");\n // }\n return {\n __type: 'Pointer',\n className: this.className,\n objectId: this.id\n };\n },\n\n /**\n * Gets the value of an attribute.\n * @param {String} attr The string name of an attribute.\n */\n get: function get(attr) {\n switch (attr) {\n case 'objectId':\n return this.id;\n\n case 'createdAt':\n case 'updatedAt':\n return this[attr];\n\n default:\n return this.attributes[attr];\n }\n },\n\n /**\n * Gets a relation on the given class for the attribute.\n * @param {String} attr The attribute to get the relation for.\n * @return {AV.Relation}\n */\n relation: function relation(attr) {\n var value = this.get(attr);\n\n if (value) {\n if (!(value instanceof AV.Relation)) {\n throw new Error('Called relation() on non-relation field ' + attr);\n }\n\n value._ensureParentAndKey(this, attr);\n\n return value;\n } else {\n return new AV.Relation(this, attr);\n }\n },\n\n /**\n * Gets the HTML-escaped value of an attribute.\n */\n escape: function escape(attr) {\n var html = this._escapedAttributes[attr];\n\n if (html) {\n return html;\n }\n\n var val = this.attributes[attr];\n var escaped;\n\n if (isNullOrUndefined(val)) {\n escaped = '';\n } else {\n escaped = _.escape(val.toString());\n }\n\n this._escapedAttributes[attr] = escaped;\n return escaped;\n },\n\n /**\n * Returns true if the attribute contains a value that is not\n * null or undefined.\n * @param {String} attr The string name of the attribute.\n * @return {Boolean}\n */\n has: function has(attr) {\n return !isNullOrUndefined(this.attributes[attr]);\n },\n\n /**\n * Pulls \"special\" fields like objectId, createdAt, etc. out of attrs\n * and puts them on \"this\" directly. Removes them from attrs.\n * @param attrs - A dictionary with the data for this AV.Object.\n * @private\n */\n _mergeMagicFields: function _mergeMagicFields(attrs) {\n // Check for changes of magic fields.\n var model = this;\n var specialFields = ['objectId', 'createdAt', 'updatedAt'];\n\n AV._arrayEach(specialFields, function (attr) {\n if (attrs[attr]) {\n if (attr === 'objectId') {\n model.id = attrs[attr];\n } else if ((attr === 'createdAt' || attr === 'updatedAt') && !_.isDate(attrs[attr])) {\n model[attr] = AV._parseDate(attrs[attr]);\n } else {\n model[attr] = attrs[attr];\n }\n\n delete attrs[attr];\n }\n });\n\n return attrs;\n },\n\n /**\n * Returns the json to be sent to the server.\n * @private\n */\n _startSave: function _startSave() {\n this._opSetQueue.push({});\n },\n\n /**\n * Called when a save fails because of an error. Any changes that were part\n * of the save need to be merged with changes made after the save. This\n * might throw an exception is you do conflicting operations. For example,\n * if you do:\n * object.set(\"foo\", \"bar\");\n * object.set(\"invalid field name\", \"baz\");\n * object.save();\n * object.increment(\"foo\");\n * then this will throw when the save fails and the client tries to merge\n * \"bar\" with the +1.\n * @private\n */\n _cancelSave: function _cancelSave() {\n var failedChanges = _.first(this._opSetQueue);\n\n this._opSetQueue = _.rest(this._opSetQueue);\n\n var nextChanges = _.first(this._opSetQueue);\n\n AV._objectEach(failedChanges, function (op, key) {\n var op1 = failedChanges[key];\n var op2 = nextChanges[key];\n\n if (op1 && op2) {\n nextChanges[key] = op2._mergeWithPrevious(op1);\n } else if (op1) {\n nextChanges[key] = op1;\n }\n });\n\n this._saving = this._saving - 1;\n },\n\n /**\n * Called when a save completes successfully. This merges the changes that\n * were saved into the known server data, and overrides it with any data\n * sent directly from the server.\n * @private\n */\n _finishSave: function _finishSave(serverData) {\n var _context2;\n\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\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\n this._opSetQueue = _.rest(this._opSetQueue);\n\n this._applyOpSet(savedChanges, this._serverData);\n\n this._mergeMagicFields(serverData);\n\n var self = this;\n\n AV._objectEach(serverData, function (value, key) {\n self._serverData[key] = AV._decode(value, key); // Look for any objects that might have become unfetched and fix them\n // by replacing their values with the previously observed values.\n\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\n if (fetched) {\n self._serverData[key] = fetched;\n }\n });\n\n this._rebuildAllEstimatedData();\n\n var opSetQueue = (0, _map.default)(_context2 = this._opSetQueue).call(_context2, _.clone);\n\n this._refreshCache();\n\n this._opSetQueue = opSetQueue;\n this._saving = this._saving - 1;\n },\n\n /**\n * Called when a fetch or login is complete to set the known server data to\n * the given object.\n * @private\n */\n _finishFetch: function _finishFetch(serverData, hasData) {\n // Clear out any changes the user might have made previously.\n this._opSetQueue = [{}]; // Bring in all the new server data.\n\n this._mergeMagicFields(serverData);\n\n var self = this;\n\n AV._objectEach(serverData, function (value, key) {\n self._serverData[key] = AV._decode(value, key);\n }); // Refresh the attributes.\n\n\n this._rebuildAllEstimatedData(); // Clear out the cache of mutable containers.\n\n\n this._refreshCache();\n\n this._opSetQueue = [{}];\n this._hasData = hasData;\n },\n\n /**\n * Applies the set of AV.Op in opSet to the object target.\n * @private\n */\n _applyOpSet: function _applyOpSet(opSet, target) {\n var self = this;\n\n AV._objectEach(opSet, function (change, key) {\n var _findValue = findValue(target, key),\n _findValue2 = (0, _slicedToArray2.default)(_findValue, 3),\n value = _findValue2[0],\n actualTarget = _findValue2[1],\n actualKey = _findValue2[2];\n\n setValue(target, key, change._estimate(value, self, key));\n\n if (actualTarget && actualTarget[actualKey] === AV.Op._UNSET) {\n delete actualTarget[actualKey];\n }\n });\n },\n\n /**\n * Replaces the cached value for key with the current value.\n * Returns true if the new value is different than the old value.\n * @private\n */\n _resetCacheForKey: function _resetCacheForKey(key) {\n var value = this.attributes[key];\n\n if (_.isObject(value) && !(value instanceof AV.Object) && !(value instanceof AV.File)) {\n var json = (0, _stringify.default)(recursiveToPointer(value));\n\n if (this._hashedJSON[key] !== json) {\n var wasSet = !!this._hashedJSON[key];\n this._hashedJSON[key] = json;\n return wasSet;\n }\n }\n\n return false;\n },\n\n /**\n * Populates attributes[key] by starting with the last known data from the\n * server, and applying all of the local changes that have been made to that\n * key since then.\n * @private\n */\n _rebuildEstimatedDataForKey: function _rebuildEstimatedDataForKey(key) {\n var self = this;\n delete this.attributes[key];\n\n if (this._serverData[key]) {\n this.attributes[key] = this._serverData[key];\n }\n\n AV._arrayEach(this._opSetQueue, function (opSet) {\n var op = opSet[key];\n\n if (op) {\n var _findValue3 = findValue(self.attributes, key),\n _findValue4 = (0, _slicedToArray2.default)(_findValue3, 4),\n value = _findValue4[0],\n actualTarget = _findValue4[1],\n actualKey = _findValue4[2],\n firstKey = _findValue4[3];\n\n setValue(self.attributes, key, op._estimate(value, self, key));\n\n if (actualTarget && actualTarget[actualKey] === AV.Op._UNSET) {\n delete actualTarget[actualKey];\n }\n\n self._resetCacheForKey(firstKey);\n }\n });\n },\n\n /**\n * Populates attributes by starting with the last known data from the\n * server, and applying all of the local changes that have been made since\n * then.\n * @private\n */\n _rebuildAllEstimatedData: function _rebuildAllEstimatedData() {\n var self = this;\n\n var previousAttributes = _.clone(this.attributes);\n\n this.attributes = _.clone(this._serverData);\n\n AV._arrayEach(this._opSetQueue, function (opSet) {\n self._applyOpSet(opSet, self.attributes);\n\n AV._objectEach(opSet, function (op, key) {\n self._resetCacheForKey(key);\n });\n }); // Trigger change events for anything that changed because of the fetch.\n\n\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\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 * \"change\" unless you choose to silence it.\n *\n *

    You can call it with an object containing keys and values, or with one\n * key and value. For example:

    \n *\n * @example\n * gameTurn.set({\n * player: player1,\n * diceRoll: 2\n * });\n *\n * game.set(\"currentPlayer\", player2);\n *\n * game.set(\"finished\", true);\n *\n * @param {String} key The key to set.\n * @param {Any} value The value to give it.\n * @param {Object} [options]\n * @param {Boolean} [options.silent]\n * @return {AV.Object} self if succeeded, throws if the value is not valid.\n * @see AV.Object#validate\n */\n set: function set(key, value, options) {\n var attrs;\n\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 } // Extract attributes and options.\n\n\n options = options || {};\n\n if (!attrs) {\n return this;\n }\n\n if (attrs instanceof AV.Object) {\n attrs = attrs.attributes;\n } // If the unset option is used, every attribute should be a Unset.\n\n\n if (options.unset) {\n AV._objectEach(attrs, function (unused_value, key) {\n attrs[key] = new AV.Op.Unset();\n });\n } // Apply all the attributes to get the estimated values.\n\n\n var dataToValidate = _.clone(attrs);\n\n var self = this;\n\n AV._objectEach(dataToValidate, function (value, key) {\n if (value instanceof AV.Op) {\n dataToValidate[key] = value._estimate(self.attributes[key], self, key);\n\n if (dataToValidate[key] === AV.Op._UNSET) {\n delete dataToValidate[key];\n }\n }\n }); // Run validation.\n\n\n this._validate(attrs, options);\n\n options.changes = {};\n var escaped = this._escapedAttributes; // Update attributes.\n\n AV._arrayEach((0, _keys2.default)(_).call(_, attrs), function (attr) {\n var val = attrs[attr]; // 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\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 } // See if this change will actually have any effect.\n\n\n var isRealChange = true;\n\n if (val instanceof AV.Op.Set && _.isEqual(self.attributes[attr], val.value)) {\n isRealChange = false;\n }\n\n if (isRealChange) {\n delete escaped[attr];\n\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\n currentChanges[attr] = val._mergeWithPrevious(currentChanges[attr]);\n\n self._rebuildEstimatedDataForKey(attr);\n\n if (isRealChange) {\n self.changed[attr] = self.attributes[attr];\n\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\n return this;\n },\n\n /**\n * Remove an attribute from the model, firing \"change\" unless\n * you choose to silence it. This is a noop if the attribute doesn't\n * exist.\n * @param key {String} The key.\n */\n unset: function unset(attr, options) {\n options = options || {};\n options.unset = true;\n return this.set(attr, null, options);\n },\n\n /**\n * Atomically increments the value of the given attribute the next time the\n * object is saved. If no amount is specified, 1 is used by default.\n *\n * @param key {String} The key.\n * @param amount {Number} The amount to increment by.\n */\n increment: function increment(attr, amount) {\n if (_.isUndefined(amount) || _.isNull(amount)) {\n amount = 1;\n }\n\n return this.set(attr, new AV.Op.Increment(amount));\n },\n\n /**\n * Atomically add an object to the end of the array associated with a given\n * key.\n * @param key {String} The key.\n * @param item {} The item to add.\n */\n add: function add(attr, item) {\n return this.set(attr, new AV.Op.Add(ensureArray(item)));\n },\n\n /**\n * Atomically add an object to the array associated with a given key, only\n * if it is not already present in the array. The position of the insert is\n * not guaranteed.\n *\n * @param key {String} The key.\n * @param item {} The object to add.\n */\n addUnique: function addUnique(attr, item) {\n return this.set(attr, new AV.Op.AddUnique(ensureArray(item)));\n },\n\n /**\n * Atomically remove all instances of an object from the array associated\n * with a given key.\n *\n * @param key {String} The key.\n * @param item {} The object to remove.\n */\n remove: function remove(attr, item) {\n return this.set(attr, new AV.Op.Remove(ensureArray(item)));\n },\n\n /**\n * Atomically apply a \"bit and\" operation on the value associated with a\n * given key.\n *\n * @param key {String} The key.\n * @param value {Number} The value to apply.\n */\n bitAnd: function bitAnd(attr, value) {\n return this.set(attr, new AV.Op.BitAnd(value));\n },\n\n /**\n * Atomically apply a \"bit or\" operation on the value associated with a\n * given key.\n *\n * @param key {String} The key.\n * @param value {Number} The value to apply.\n */\n bitOr: function bitOr(attr, value) {\n return this.set(attr, new AV.Op.BitOr(value));\n },\n\n /**\n * Atomically apply a \"bit xor\" operation on the value associated with a\n * given key.\n *\n * @param key {String} The key.\n * @param value {Number} The value to apply.\n */\n bitXor: function bitXor(attr, value) {\n return this.set(attr, new AV.Op.BitXor(value));\n },\n\n /**\n * Returns an instance of a subclass of AV.Op describing what kind of\n * modification has been performed on this field since the last time it was\n * saved. For example, after calling object.increment(\"x\"), calling\n * object.op(\"x\") would return an instance of AV.Op.Increment.\n *\n * @param key {String} The key.\n * @returns {AV.Op} The operation, or undefined if none.\n */\n op: function op(attr) {\n return _.last(this._opSetQueue)[attr];\n },\n\n /**\n * Clear all attributes on the model, firing \"change\" unless\n * you choose to silence it.\n */\n clear: function clear(options) {\n options = options || {};\n options.unset = true;\n\n var keysToClear = _.extend(this.attributes, this._operations);\n\n return this.set(keysToClear, options);\n },\n\n /**\n * Clears any (or specific) changes to the model made since the last save.\n * @param {string|string[]} [keys] specify keys to revert.\n */\n revert: function revert(keys) {\n var lastOp = _.last(this._opSetQueue);\n\n var _keys = ensureArray(keys || (0, _keys2.default)(_).call(_, lastOp));\n\n _keys.forEach(function (key) {\n delete lastOp[key];\n });\n\n this._rebuildAllEstimatedData();\n\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 _getSaveJSON() {\n var json = _.clone(_.first(this._opSetQueue));\n\n AV._objectEach(json, function (op, key) {\n json[key] = op.toJSON();\n });\n\n return json;\n },\n\n /**\n * Returns true if this object can be serialized for saving.\n * @private\n */\n _canBeSerialized: function _canBeSerialized() {\n return AV.Object._canBeSerializedAsValue(this.attributes);\n },\n\n /**\n * Fetch the model from the server. If the server's representation of the\n * model differs from its current attributes, they will be overriden,\n * triggering a \"change\" event.\n * @param {Object} fetchOptions Optional options to set 'keys',\n * 'include' and 'includeACL' option.\n * @param {AuthOptions} options\n * @return {Promise} A promise that is fulfilled when the fetch\n * completes.\n */\n fetch: function fetch() {\n var fetchOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var options = arguments.length > 1 ? arguments[1] : undefined;\n\n if (!this.id) {\n throw new Error('Cannot fetch unsaved object');\n }\n\n var self = this;\n\n var request = _request('classes', this.className, this.id, 'GET', transformFetchOptions(fetchOptions), options);\n\n return request.then(function (response) {\n var fetchedAttrs = self.parse(response);\n\n self._cleanupUnsetKeys(fetchedAttrs, (0, _keys2.default)(fetchOptions) ? ensureArray((0, _keys2.default)(fetchOptions)).join(',').split(',') : undefined);\n\n self._finishFetch(fetchedAttrs, true);\n\n return self;\n });\n },\n _cleanupUnsetKeys: function _cleanupUnsetKeys(fetchedAttrs) {\n var _this2 = this;\n\n var fetchedKeys = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : (0, _keys2.default)(_).call(_, this._serverData);\n\n _.forEach(fetchedKeys, function (key) {\n if (fetchedAttrs[key] === undefined) delete _this2._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:
    \n     *   object.save();
    \n * or
    \n     *   object.save(null, options);
    \n * or
    \n     *   object.save(attrs, options);
    \n * or
    \n     *   object.save(key, value, options);
    \n *\n * @example\n * gameTurn.save({\n * player: \"Jake Cutter\",\n * diceRoll: 2\n * }).then(function(gameTurnAgain) {\n * // The save was successful.\n * }, function(error) {\n * // The save failed. Error is an instance of AVError.\n * });\n *\n * @param {AuthOptions} options AuthOptions plus:\n * @param {Boolean} options.fetchWhenSave fetch and update object after save succeeded\n * @param {AV.Query} options.query Save object only when it matches the query\n * @return {Promise} A promise that is fulfilled when the save\n * completes.\n * @see AVError\n */\n save: function save(arg1, arg2, arg3) {\n var attrs, current, options;\n\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\n if (options.wait) {\n current = _.clone(this.attributes);\n }\n\n var setOptions = _.clone(options) || {};\n\n if (setOptions.wait) {\n setOptions.silent = true;\n }\n\n if (attrs) {\n this.set(attrs, setOptions);\n }\n\n var model = this;\n var unsavedChildren = [];\n var unsavedFiles = [];\n\n AV.Object._findUnsavedChildren(model, unsavedChildren, unsavedFiles);\n\n if (unsavedChildren.length + unsavedFiles.length > 1) {\n return AV.Object._deepSaveAsync(this, model, options);\n }\n\n this._startSave();\n\n this._saving = (this._saving || 0) + 1;\n this._allPreviousSaves = this._allPreviousSaves || _promise.default.resolve();\n this._allPreviousSaves = this._allPreviousSaves.catch(function (e) {}).then(function () {\n var method = model.id ? 'PUT' : 'POST';\n\n var json = model._getSaveJSON();\n\n var query = {};\n\n if (model._fetchWhenSave || options.fetchWhenSave) {\n query['new'] = 'true';\n } // user login option\n\n\n if (options._failOnNotExist) {\n query.failOnNotExist = 'true';\n }\n\n if (options.query) {\n var queryParams;\n\n if (typeof options.query._getParams === 'function') {\n queryParams = options.query._getParams();\n\n if (queryParams) {\n query.where = queryParams.where;\n }\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\n if (model.className === '_User' && !model.id) {\n // Special-case user sign-up.\n route = 'users';\n className = null;\n } //hook makeRequest in options.\n\n\n var makeRequest = options._makeRequest || _request;\n var requestPromise = makeRequest(route, className, model.id, method, json, options, query);\n requestPromise = requestPromise.then(function (resp) {\n var serverAttrs = model.parse(resp);\n\n if (options.wait) {\n serverAttrs = _.extend(attrs || {}, serverAttrs);\n }\n\n model._finishSave(serverAttrs);\n\n if (options.wait) {\n model.set(current, setOptions);\n }\n\n return model;\n }, function (error) {\n model._cancelSave();\n\n throw error;\n });\n return requestPromise;\n });\n return this._allPreviousSaves;\n },\n\n /**\n * Destroy this model on the server if it was already persisted.\n * Optimistically removes the model from its collection, if it has one.\n * @param {AuthOptions} options AuthOptions plus:\n * @param {Boolean} [options.wait] wait for the server to respond\n * before removal.\n *\n * @return {Promise} A promise that is fulfilled when the destroy\n * completes.\n */\n destroy: function destroy(options) {\n options = options || {};\n var model = this;\n\n var triggerDestroy = function triggerDestroy() {\n model.trigger('destroy', model, model.collection, options);\n };\n\n if (!this.id) {\n return triggerDestroy();\n }\n\n if (!options.wait) {\n triggerDestroy();\n }\n\n var request = _request('classes', this.className, this.id, 'DELETE', this._flags, options);\n\n return request.then(function () {\n if (options.wait) {\n triggerDestroy();\n }\n\n return model;\n });\n },\n\n /**\n * Converts a response into the hash of attributes to be set on the model.\n * @ignore\n */\n parse: function parse(resp) {\n var output = _.clone(resp);\n\n ['createdAt', 'updatedAt'].forEach(function (key) {\n if (output[key]) {\n output[key] = AV._parseDate(output[key]);\n }\n });\n\n if (output.createdAt && !output.updatedAt) {\n output.updatedAt = output.createdAt;\n }\n\n return output;\n },\n\n /**\n * Creates a new model with identical attributes to this one.\n * @return {AV.Object}\n */\n clone: function clone() {\n return new this.constructor(this.attributes);\n },\n\n /**\n * Returns true if this object has never been saved to AV.\n * @return {Boolean}\n */\n isNew: function isNew() {\n return !this.id;\n },\n\n /**\n * Call this method to manually fire a `\"change\"` event for this model and\n * a `\"change:attribute\"` event for each changed attribute.\n * Calling this will cause all objects observing the model to update.\n */\n change: function change(options) {\n options = options || {};\n var changing = this._changing;\n this._changing = true; // Silent changes become pending changes.\n\n var self = this;\n\n AV._objectEach(this._silent, function (attr) {\n self._pending[attr] = true;\n }); // Silent changes are triggered.\n\n\n var changes = _.extend({}, options.changes, this._silent);\n\n this._silent = {};\n\n AV._objectEach(changes, function (unused_value, attr) {\n self.trigger('change:' + attr, self, self.get(attr), options);\n });\n\n if (changing) {\n return this;\n } // This is to get around lint not letting us make a function in a loop.\n\n\n var deleteChanged = function deleteChanged(value, attr) {\n if (!self._pending[attr] && !self._silent[attr]) {\n delete self.changed[attr];\n }\n }; // Continue firing `\"change\"` events while there are pending changes.\n\n\n while (!_.isEmpty(this._pending)) {\n this._pending = {};\n this.trigger('change', this, options); // Pending and silent changes still remain.\n\n AV._objectEach(this.changed, deleteChanged);\n\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 * \"change\" event was fired.\n * @param {String} attr Name of the attribute to get.\n */\n previous: function previous(attr) {\n if (!arguments.length || !this._previousAttributes) {\n return null;\n }\n\n return this._previousAttributes[attr];\n },\n\n /**\n * Gets all of the attributes of the model at the time of the previous\n * \"change\" event.\n * @return {Object}\n */\n previousAttributes: function previousAttributes() {\n return _.clone(this._previousAttributes);\n },\n\n /**\n * Checks if the model is currently in a valid state. It's only possible to\n * get into an *invalid* state if you're using silent changes.\n * @return {Boolean}\n */\n isValid: function isValid() {\n try {\n this.validate(this.attributes);\n } catch (error) {\n return false;\n }\n\n return true;\n },\n\n /**\n * You should not call this function directly unless you subclass\n * AV.Object, in which case you can override this method\n * to provide additional validation on set and\n * save. Your implementation should throw an Error if\n * the attrs is invalid\n *\n * @param {Object} attrs The current data to validate.\n * @see AV.Object#set\n */\n validate: function validate(attrs) {\n if (_.has(attrs, 'ACL') && !(attrs.ACL instanceof AV.ACL)) {\n throw new AVError(AVError.OTHER_CAUSE, 'ACL must be a AV.ACL.');\n }\n },\n\n /**\n * Run validation against a set of incoming attributes, returning `true`\n * if all is well. If a specific `error` callback has been passed,\n * call that instead of firing the general `\"error\"` event.\n * @private\n */\n _validate: function _validate(attrs, options) {\n if (options.silent || !this.validate) {\n return;\n }\n\n attrs = _.extend({}, this.attributes, attrs);\n this.validate(attrs);\n },\n\n /**\n * Returns the ACL for this object.\n * @returns {AV.ACL} An instance of AV.ACL.\n * @see AV.Object#get\n */\n getACL: function getACL() {\n return this.get('ACL');\n },\n\n /**\n * Sets the ACL to be used for this object.\n * @param {AV.ACL} acl An instance of AV.ACL.\n * @param {Object} options Optional Backbone-like options object to be\n * passed in to set.\n * @return {AV.Object} self\n * @see AV.Object#set\n */\n setACL: function setACL(acl, options) {\n return this.set('ACL', acl, options);\n },\n disableBeforeHook: function disableBeforeHook() {\n this.ignoreHook('beforeSave');\n this.ignoreHook('beforeUpdate');\n this.ignoreHook('beforeDelete');\n },\n disableAfterHook: function disableAfterHook() {\n this.ignoreHook('afterSave');\n this.ignoreHook('afterUpdate');\n this.ignoreHook('afterDelete');\n },\n ignoreHook: function ignoreHook(hookName) {\n if (!_.contains(['beforeSave', 'afterSave', 'beforeUpdate', 'afterUpdate', 'beforeDelete', 'afterDelete'], hookName)) {\n throw new Error('Unsupported hookName: ' + hookName);\n }\n\n if (!AV.hookKey) {\n throw new Error('ignoreHook required hookKey');\n }\n\n if (!this._flags.__ignore_hooks) {\n this._flags.__ignore_hooks = [];\n }\n\n this._flags.__ignore_hooks.push(hookName);\n }\n });\n /**\n * 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\n\n AV.Object.createWithoutData = function (klass, id, hasData) {\n var _klass;\n\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\n if (!id) {\n throw new TypeError('The objectId must be provided');\n }\n\n var object = new _klass();\n object.id = id;\n object._hasData = hasData;\n return object;\n };\n /**\n * Delete objects in batch.\n * @param {AV.Object[]} objects The AV.Object array to be deleted.\n * @param {AuthOptions} options\n * @return {Promise} A promise that is fulfilled when the save\n * completes.\n */\n\n\n AV.Object.destroyAll = function (objects) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (!objects || objects.length === 0) {\n return _promise.default.resolve();\n }\n\n var objectsByClassNameAndFlags = _.groupBy(objects, function (object) {\n return (0, _stringify.default)({\n className: object.className,\n flags: object._flags\n });\n });\n\n var body = {\n requests: (0, _map.default)(_).call(_, objectsByClassNameAndFlags, function (objects) {\n var _context3;\n\n var ids = (0, _map.default)(_).call(_, objects, 'id').join(',');\n return {\n method: 'DELETE',\n path: (0, _concat.default)(_context3 = \"/1.1/classes/\".concat(objects[0].className, \"/\")).call(_context3, ids),\n body: objects[0]._flags\n };\n })\n };\n return _request('batch', null, null, 'POST', body, options).then(function (response) {\n var firstError = (0, _find.default)(_).call(_, response, function (result) {\n return !result.success;\n });\n if (firstError) throw new AVError(firstError.error.code, firstError.error.error);\n return undefined;\n });\n };\n /**\n * Returns the appropriate subclass for making new instances of the given\n * className string.\n * @private\n */\n\n\n AV.Object._getSubclass = function (className) {\n if (!_.isString(className)) {\n throw new Error('AV.Object._getSubclass requires a string argument.');\n }\n\n var ObjectClass = AV.Object._classMap[className];\n\n if (!ObjectClass) {\n ObjectClass = AV.Object.extend(className);\n AV.Object._classMap[className] = ObjectClass;\n }\n\n return ObjectClass;\n };\n /**\n * Creates an instance of a subclass of AV.Object for the given classname.\n * @private\n */\n\n\n AV.Object._create = function (className, attributes, options) {\n var ObjectClass = AV.Object._getSubclass(className);\n\n return new ObjectClass(attributes, options);\n }; // Set up a map of className to class so that we can create new instances of\n // AV Objects from JSON automatically.\n\n\n AV.Object._classMap = {};\n AV.Object._extend = AV._extend;\n /**\n * Creates a new model with defined attributes,\n * It's the same with\n *
    \n   *   new AV.Object(attributes, options);\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 * @return {AV.Object}\n * @since v0.4.4\n * @see AV.Object\n * @see AV.Object.extend\n */\n\n AV.Object['new'] = function (attributes, options) {\n return new AV.Object(attributes, options);\n };\n /**\n * Creates a new subclass of AV.Object for the given AV class name.\n *\n *

    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.

    \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\n\n AV.Object.extend = function (className, protoProps, classProps) {\n // Handle the case with only two args.\n if (!_.isString(className)) {\n if (className && _.has(className, 'className')) {\n return AV.Object.extend(className.className, className, protoProps);\n } else {\n throw new Error(\"AV.Object.extend's first argument should be the className.\");\n }\n } // If someone tries to subclass \"User\", coerce it to the right type.\n\n\n if (className === 'User') {\n className = '_User';\n }\n\n var NewClassObject = null;\n\n if (_.has(AV.Object._classMap, className)) {\n var OldClassObject = AV.Object._classMap[className]; // 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\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 } // Extending a subclass should reuse the classname automatically.\n\n\n NewClassObject.extend = function (arg0) {\n var _context4;\n\n if (_.isString(arg0) || arg0 && _.has(arg0, 'className')) {\n return AV.Object.extend.apply(NewClassObject, arguments);\n }\n\n var newArguments = (0, _concat.default)(_context4 = [className]).call(_context4, _.toArray(arguments));\n return AV.Object.extend.apply(NewClassObject, newArguments);\n }; // Add the query property descriptor.\n\n\n (0, _defineProperty.default)(NewClassObject, 'query', (0, _getOwnPropertyDescriptor.default)(AV.Object, 'query'));\n\n NewClassObject['new'] = function (attributes, options) {\n return new NewClassObject(attributes, options);\n };\n\n AV.Object._classMap[className] = NewClassObject;\n return NewClassObject;\n }; // ES6 class syntax support\n\n\n (0, _defineProperty.default)(AV.Object.prototype, 'className', {\n get: function get() {\n var className = this._className || this.constructor._LCClassName || this.constructor.name; // If someone tries to subclass \"User\", coerce it to the right type.\n\n if (className === 'User') {\n return '_User';\n }\n\n return className;\n }\n });\n /**\n * Register a class.\n * If a subclass of AV.Object is defined with your own implement\n * rather then AV.Object.extend, the subclass must be registered.\n * @param {Function} klass A subclass of AV.Object\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\n AV.Object.register = function (klass, name) {\n if (!(klass.prototype instanceof AV.Object)) {\n throw new Error('registered class is not a subclass of AV.Object');\n }\n\n var className = name || klass.name;\n\n if (!className.length) {\n throw new Error('registered class must be named');\n }\n\n if (name) {\n klass._LCClassName = name;\n }\n\n AV.Object._classMap[className] = klass;\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\n\n (0, _defineProperty.default)(AV.Object, 'query', {\n get: function get() {\n return new AV.Query(this.prototype.className);\n }\n });\n\n AV.Object._findUnsavedChildren = function (objects, children, files) {\n AV._traverse(objects, function (object) {\n if (object instanceof AV.Object) {\n if (object.dirty()) {\n children.push(object);\n }\n\n return;\n }\n\n if (object instanceof AV.File) {\n if (!object.id) {\n files.push(object);\n }\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\n AV.Object._findUnsavedChildren(object, unsavedChildren, unsavedFiles);\n\n unsavedFiles = _.uniq(unsavedFiles);\n\n var promise = _promise.default.resolve();\n\n _.each(unsavedFiles, function (file) {\n promise = promise.then(function () {\n return file.save();\n });\n });\n\n var objects = _.uniq(unsavedChildren);\n\n var remaining = _.uniq(objects);\n\n return promise.then(function () {\n return continueWhile(function () {\n return remaining.length > 0;\n }, function () {\n // Gather up all the objects that can be saved in this batch.\n var batch = [];\n var newRemaining = [];\n\n AV._arrayEach(remaining, function (object) {\n if (object._canBeSerialized()) {\n batch.push(object);\n } else {\n newRemaining.push(object);\n }\n });\n\n remaining = newRemaining; // If we can't save any objects, there must be a circular reference.\n\n if (batch.length === 0) {\n return _promise.default.reject(new AVError(AVError.OTHER_CAUSE, 'Tried to save a batch with a cycle.'));\n } // Reserve a spot in every object's save queue.\n\n\n var readyToStart = _promise.default.resolve((0, _map.default)(_).call(_, batch, function (object) {\n return object._allPreviousSaves || _promise.default.resolve();\n })); // Save a single batch, whether previous saves succeeded or failed.\n\n\n var bathSavePromise = readyToStart.then(function () {\n return _request('batch', null, null, 'POST', {\n requests: (0, _map.default)(_).call(_, 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 = \"/\".concat(route, \"/\").concat(className);\n\n if (object.className === '_User' && !object.id) {\n // Special-case user sign-up.\n path = '/users';\n }\n\n var path = \"/1.1\".concat(path);\n\n if (object.id) {\n path = path + '/' + object.id;\n }\n\n object._startSave();\n\n return {\n method: method,\n path: path,\n body: json,\n params: options && options.fetchWhenSave ? {\n fetchWhenSave: true\n } : undefined\n };\n })\n }, options).then(function (response) {\n var results = (0, _map.default)(_).call(_, batch, function (object, i) {\n if (response[i].success) {\n object._finishSave(object.parse(response[i].success));\n\n return object;\n }\n\n object._cancelSave();\n\n return new AVError(response[i].error.code, response[i].error.error);\n });\n return handleBatchResults(results);\n });\n });\n\n AV._arrayEach(batch, function (object) {\n object._allPreviousSaves = bathSavePromise;\n });\n\n return bathSavePromise;\n });\n }).then(function () {\n return object;\n });\n };\n};\n\n/***/ }),\n/* 501 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar arrayWithHoles = __webpack_require__(502);\n\nvar iterableToArrayLimit = __webpack_require__(510);\n\nvar unsupportedIterableToArray = __webpack_require__(511);\n\nvar nonIterableRest = __webpack_require__(521);\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n/***/ }),\n/* 502 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar _Array$isArray = __webpack_require__(503);\n\nfunction _arrayWithHoles(arr) {\n if (_Array$isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n/***/ }),\n/* 503 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(504);\n\n/***/ }),\n/* 504 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(505);\n\n\n/***/ }),\n/* 505 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(506);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 506 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(507);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 507 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(508);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 508 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(509);\nvar path = __webpack_require__(13);\n\nmodule.exports = path.Array.isArray;\n\n\n/***/ }),\n/* 509 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(0);\nvar isArray = __webpack_require__(80);\n\n// `Array.isArray` method\n// https://tc39.es/ecma262/#sec-array.isarray\n$({ target: 'Array', stat: true }, {\n isArray: isArray\n});\n\n\n/***/ }),\n/* 510 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar _Symbol = __webpack_require__(225);\n\nvar _getIteratorMethod = __webpack_require__(231);\n\nfunction _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof _Symbol !== \"undefined\" && _getIteratorMethod(arr) || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_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\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n/***/ }),\n/* 511 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar _sliceInstanceProperty = __webpack_require__(512);\n\nvar _Array$from = __webpack_require__(516);\n\nvar arrayLikeToArray = __webpack_require__(520);\n\nfunction _unsupportedIterableToArray(o, minLen) {\n var _context;\n\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n\n var n = _sliceInstanceProperty(_context = Object.prototype.toString.call(o)).call(_context, 8, -1);\n\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, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n/***/ }),\n/* 512 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(513);\n\n/***/ }),\n/* 513 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(514);\n\n\n/***/ }),\n/* 514 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(515);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 515 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(222);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 516 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(517);\n\n/***/ }),\n/* 517 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(518);\n\n\n/***/ }),\n/* 518 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(519);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 519 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(230);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 520 */\n/***/ (function(module, exports) {\n\nfunction _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, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n/***/ }),\n/* 521 */\n/***/ (function(module, exports) {\n\nfunction _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, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n/***/ }),\n/* 522 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(523);\n\n/***/ }),\n/* 523 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(524);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 524 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(525);\nvar path = __webpack_require__(13);\n\nvar Object = path.Object;\n\nvar getOwnPropertyDescriptor = module.exports = function getOwnPropertyDescriptor(it, key) {\n return Object.getOwnPropertyDescriptor(it, key);\n};\n\nif (Object.getOwnPropertyDescriptor.sham) getOwnPropertyDescriptor.sham = true;\n\n\n/***/ }),\n/* 525 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(0);\nvar fails = __webpack_require__(4);\nvar toIndexedObject = __webpack_require__(33);\nvar nativeGetOwnPropertyDescriptor = __webpack_require__(64).f;\nvar DESCRIPTORS = __webpack_require__(19);\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeGetOwnPropertyDescriptor(1); });\nvar FORCED = !DESCRIPTORS || FAILS_ON_PRIMITIVES;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\n$({ target: 'Object', stat: true, forced: FORCED, sham: !DESCRIPTORS }, {\n getOwnPropertyDescriptor: function getOwnPropertyDescriptor(it, key) {\n return nativeGetOwnPropertyDescriptor(toIndexedObject(it), key);\n }\n});\n\n\n/***/ }),\n/* 526 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _ = __webpack_require__(1);\n\nvar AVError = __webpack_require__(40);\n\nmodule.exports = function (AV) {\n AV.Role = AV.Object.extend('_Role',\n /** @lends AV.Role.prototype */\n {\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 *

    Roles must have a name (which cannot be changed after creation of the\n * role), and must specify an ACL.

    \n * An AV.Role is a local representation of a role persisted to the AV\n * cloud.\n * @class AV.Role\n * @param {String} name The name of the Role to create.\n * @param {AV.ACL} acl The ACL for this role.\n */\n constructor: function constructor(name, acl) {\n if (_.isString(name)) {\n AV.Object.prototype.constructor.call(this, null, null);\n this.setName(name);\n } else {\n AV.Object.prototype.constructor.call(this, name, acl);\n }\n\n if (acl) {\n if (!(acl instanceof AV.ACL)) {\n throw new TypeError('acl must be an instance of AV.ACL');\n } else {\n this.setACL(acl);\n }\n }\n },\n\n /**\n * Gets the name of the role. You can alternatively call role.get(\"name\")\n *\n * @return {String} the name of the role.\n */\n getName: function getName() {\n return this.get('name');\n },\n\n /**\n * Sets the name for a role. This value must be set before the role has\n * been saved to the server, and cannot be set once the role has been\n * saved.\n *\n *

    \n * A role's name can only contain alphanumeric characters, _, -, and\n * spaces.\n *

    \n *\n *

    This is equivalent to calling role.set(\"name\", name)

    \n *\n * @param {String} name The name of the role.\n */\n setName: function setName(name, options) {\n return this.set('name', name, options);\n },\n\n /**\n * Gets the AV.Relation for the AV.Users that are direct\n * children of this role. These users are granted any privileges that this\n * role has been granted (e.g. read or write access through ACLs). You can\n * add or remove users from the role through this relation.\n *\n *

    This is equivalent to calling role.relation(\"users\")

    \n *\n * @return {AV.Relation} the relation for the users belonging to this\n * role.\n */\n getUsers: function getUsers() {\n return this.relation('users');\n },\n\n /**\n * Gets the AV.Relation for the AV.Roles that are direct\n * children of this role. These roles' users are granted any privileges that\n * this role has been granted (e.g. read or write access through ACLs). You\n * can add or remove child roles from this role through this relation.\n *\n *

    This is equivalent to calling role.relation(\"roles\")

    \n *\n * @return {AV.Relation} the relation for the roles belonging to this\n * role.\n */\n getRoles: function getRoles() {\n return this.relation('roles');\n },\n\n /**\n * @ignore\n */\n validate: function validate(attrs, options) {\n if ('name' in attrs && attrs.name !== this.getName()) {\n var newName = attrs.name;\n\n if (this.id && this.id !== attrs.objectId) {\n // Check to see if the objectId being set matches this.id.\n // This happens during a fetch -- the id is set before calling fetch.\n // Let the name be set in this case.\n return new AVError(AVError.OTHER_CAUSE, \"A role's name can only be set before it has been saved.\");\n }\n\n if (!_.isString(newName)) {\n return new AVError(AVError.OTHER_CAUSE, \"A role's name must be a String.\");\n }\n\n if (!/^[0-9a-zA-Z\\-_ ]+$/.test(newName)) {\n return new AVError(AVError.OTHER_CAUSE, \"A role's name can only contain alphanumeric characters, _,\" + ' -, and spaces.');\n }\n }\n\n if (AV.Object.prototype.validate) {\n return AV.Object.prototype.validate.call(this, attrs, options);\n }\n\n return false;\n }\n });\n};\n\n/***/ }),\n/* 527 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(2);\n\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(528));\n\nvar _promise = _interopRequireDefault(__webpack_require__(10));\n\nvar _map = _interopRequireDefault(__webpack_require__(39));\n\nvar _find = _interopRequireDefault(__webpack_require__(104));\n\nvar _stringify = _interopRequireDefault(__webpack_require__(34));\n\nvar _ = __webpack_require__(1);\n\nvar uuid = __webpack_require__(214);\n\nvar AVError = __webpack_require__(40);\n\nvar _require = __webpack_require__(25),\n AVRequest = _require._request,\n request = _require.request;\n\nvar _require2 = __webpack_require__(61),\n getAdapter = _require2.getAdapter;\n\nvar PLATFORM_ANONYMOUS = 'anonymous';\nvar PLATFORM_QQAPP = 'lc_qqapp';\n\nvar mergeUnionDataIntoAuthData = function mergeUnionDataIntoAuthData() {\n var defaultUnionIdPlatform = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'weixin';\n return function (authData, unionId) {\n var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n _ref$unionIdPlatform = _ref.unionIdPlatform,\n unionIdPlatform = _ref$unionIdPlatform === void 0 ? defaultUnionIdPlatform : _ref$unionIdPlatform,\n _ref$asMainAccount = _ref.asMainAccount,\n asMainAccount = _ref$asMainAccount === void 0 ? false : _ref$asMainAccount;\n\n if (typeof unionId !== 'string') throw new AVError(AVError.OTHER_CAUSE, 'unionId is not a string');\n if (typeof unionIdPlatform !== 'string') throw new AVError(AVError.OTHER_CAUSE, 'unionIdPlatform is not a string');\n return _.extend({}, authData, {\n platform: unionIdPlatform,\n unionid: unionId,\n main_account: Boolean(asMainAccount)\n });\n };\n};\n\nmodule.exports = function (AV) {\n /**\n * @class\n *\n *

    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.

    \n */\n AV.User = AV.Object.extend('_User',\n /** @lends AV.User.prototype */\n {\n // Instance Variables\n _isCurrentUser: false,\n // Instance Methods\n\n /**\n * Internal method to handle special fields in a _User response.\n * @private\n */\n _mergeMagicFields: function _mergeMagicFields(attrs) {\n if (attrs.sessionToken) {\n this._sessionToken = attrs.sessionToken;\n delete attrs.sessionToken;\n }\n\n return AV.User.__super__._mergeMagicFields.call(this, attrs);\n },\n\n /**\n * Removes null values from authData (which exist temporarily for\n * unlinking)\n * @private\n */\n _cleanupAuthData: function _cleanupAuthData() {\n if (!this.isCurrent()) {\n return;\n }\n\n var authData = this.get('authData');\n\n if (!authData) {\n return;\n }\n\n AV._objectEach(this.get('authData'), function (value, key) {\n if (!authData[key]) {\n delete authData[key];\n }\n });\n },\n\n /**\n * Synchronizes authData for all providers.\n * @private\n */\n _synchronizeAllAuthData: function _synchronizeAllAuthData() {\n var authData = this.get('authData');\n\n if (!authData) {\n return;\n }\n\n var self = this;\n\n AV._objectEach(this.get('authData'), function (value, key) {\n self._synchronizeAuthData(key);\n });\n },\n\n /**\n * Synchronizes auth data for a provider (e.g. puts the access token in the\n * right place to be used by the Facebook SDK).\n * @private\n */\n _synchronizeAuthData: function _synchronizeAuthData(provider) {\n if (!this.isCurrent()) {\n return;\n }\n\n var authType;\n\n if (_.isString(provider)) {\n authType = provider;\n provider = AV.User._authProviders[authType];\n } else {\n authType = provider.getAuthType();\n }\n\n var authData = this.get('authData');\n\n if (!authData || !provider) {\n return;\n }\n\n var success = provider.restoreAuthentication(authData[authType]);\n\n if (!success) {\n this.dissociateAuthData(provider);\n }\n },\n _handleSaveResult: function _handleSaveResult(makeCurrent) {\n // Clean up and synchronize the authData object, removing any unset values\n if (makeCurrent && !AV._config.disableCurrentUser) {\n this._isCurrentUser = true;\n }\n\n this._cleanupAuthData();\n\n this._synchronizeAllAuthData(); // Don't keep the password around.\n\n\n delete this._serverData.password;\n\n this._rebuildEstimatedDataForKey('password');\n\n this._refreshCache();\n\n if ((makeCurrent || this.isCurrent()) && !AV._config.disableCurrentUser) {\n // Some old version of leanengine-node-sdk will overwrite\n // AV.User._saveCurrentUser which returns no Promise.\n // So we need a Promise wrapper.\n return _promise.default.resolve(AV.User._saveCurrentUser(this));\n } else {\n return _promise.default.resolve();\n }\n },\n\n /**\n * Unlike in the Android/iOS SDKs, logInWith is unnecessary, since you can\n * call linkWith on the user (even if it doesn't exist yet on the server).\n * @private\n */\n _linkWith: function _linkWith(provider, data) {\n var _this = this;\n\n var _ref2 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n _ref2$failOnNotExist = _ref2.failOnNotExist,\n failOnNotExist = _ref2$failOnNotExist === void 0 ? false : _ref2$failOnNotExist,\n useMasterKey = _ref2.useMasterKey,\n sessionToken = _ref2.sessionToken,\n user = _ref2.user;\n\n var authType;\n\n if (_.isString(provider)) {\n authType = provider;\n provider = AV.User._authProviders[provider];\n } else {\n authType = provider.getAuthType();\n }\n\n if (data) {\n return this.save({\n authData: (0, _defineProperty2.default)({}, authType, data)\n }, {\n useMasterKey: useMasterKey,\n sessionToken: sessionToken,\n user: user,\n fetchWhenSave: !!this.get('authData'),\n _failOnNotExist: failOnNotExist\n }).then(function (model) {\n return model._handleSaveResult(true).then(function () {\n return model;\n });\n });\n } else {\n return provider.authenticate().then(function (result) {\n return _this._linkWith(provider, result);\n });\n }\n },\n\n /**\n * Associate the user with a third party authData.\n * @since 3.3.0\n * @param {Object} authData The response json data returned from third party token, maybe like { openid: 'abc123', access_token: '123abc', expires_in: 1382686496 }\n * @param {string} platform Available platform for sign up.\n * @return {Promise} A promise that is fulfilled with the user when completed.\n * @example user.associateWithAuthData({\n * openid: 'abc123',\n * access_token: '123abc',\n * expires_in: 1382686496\n * }, 'weixin').then(function(user) {\n * //Access user here\n * }).catch(function(error) {\n * //console.error(\"error: \", error);\n * });\n */\n associateWithAuthData: function associateWithAuthData(authData, platform) {\n return this._linkWith(platform, authData);\n },\n\n /**\n * 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} A promise that is fulfilled with the user when completed.\n * @example user.associateWithAuthDataAndUnionId({\n * openid: 'abc123',\n * access_token: '123abc',\n * expires_in: 1382686496\n * }, 'weixin', 'union123', {\n * unionIdPlatform: 'weixin',\n * asMainAccount: true,\n * }).then(function(user) {\n * //Access user here\n * }).catch(function(error) {\n * //console.error(\"error: \", error);\n * });\n */\n associateWithAuthDataAndUnionId: function associateWithAuthDataAndUnionId(authData, platform, unionId, unionOptions) {\n return this._linkWith(platform, mergeUnionDataIntoAuthData()(authData, unionId, unionOptions));\n },\n\n /**\n * 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}\n */\n associateWithMiniApp: function associateWithMiniApp(authInfo, option) {\n var _this2 = this;\n\n if (authInfo === undefined) {\n var getAuthInfo = getAdapter('getAuthInfo');\n return getAuthInfo().then(function (authInfo) {\n return _this2._linkWith(authInfo.provider, authInfo.authData, option);\n });\n }\n\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}\n */\n associateWithQQApp: function associateWithQQApp() {\n var _this3 = this;\n\n var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref3$preferUnionId = _ref3.preferUnionId,\n preferUnionId = _ref3$preferUnionId === void 0 ? false : _ref3$preferUnionId,\n _ref3$unionIdPlatform = _ref3.unionIdPlatform,\n unionIdPlatform = _ref3$unionIdPlatform === void 0 ? 'qq' : _ref3$unionIdPlatform,\n _ref3$asMainAccount = _ref3.asMainAccount,\n asMainAccount = _ref3$asMainAccount === void 0 ? true : _ref3$asMainAccount;\n\n var getAuthInfo = getAdapter('getAuthInfo');\n return getAuthInfo({\n preferUnionId: preferUnionId,\n asMainAccount: asMainAccount,\n platform: unionIdPlatform\n }).then(function (authInfo) {\n authInfo.provider = PLATFORM_QQAPP;\n return _this3.associateWithMiniApp(authInfo);\n });\n },\n\n /**\n * 将用户与微信小程序用户进行关联。适用于为已经在用户系统中存在的用户关联当前使用微信小程序的微信帐号。\n * 仅在微信小程序中可用。\n *\n * @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}\n */\n associateWithWeapp: function associateWithWeapp() {\n var _this4 = this;\n\n var _ref4 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref4$preferUnionId = _ref4.preferUnionId,\n preferUnionId = _ref4$preferUnionId === void 0 ? false : _ref4$preferUnionId,\n _ref4$unionIdPlatform = _ref4.unionIdPlatform,\n unionIdPlatform = _ref4$unionIdPlatform === void 0 ? 'weixin' : _ref4$unionIdPlatform,\n _ref4$asMainAccount = _ref4.asMainAccount,\n asMainAccount = _ref4$asMainAccount === void 0 ? true : _ref4$asMainAccount;\n\n var getAuthInfo = getAdapter('getAuthInfo');\n return getAuthInfo({\n preferUnionId: preferUnionId,\n asMainAccount: asMainAccount,\n platform: unionIdPlatform\n }).then(function (authInfo) {\n return _this4.associateWithMiniApp(authInfo);\n });\n },\n\n /**\n * @deprecated renamed to {@link AV.User#associateWithWeapp}\n * @return {Promise}\n */\n linkWithWeapp: function linkWithWeapp(options) {\n console.warn('DEPRECATED: User#linkWithWeapp 已废弃,请使用 User#associateWithWeapp 代替');\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}\n */\n associateWithQQAppWithUnionId: function associateWithQQAppWithUnionId(unionId) {\n var _this5 = this;\n\n var _ref5 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref5$unionIdPlatform = _ref5.unionIdPlatform,\n unionIdPlatform = _ref5$unionIdPlatform === void 0 ? 'qq' : _ref5$unionIdPlatform,\n _ref5$asMainAccount = _ref5.asMainAccount,\n asMainAccount = _ref5$asMainAccount === void 0 ? false : _ref5$asMainAccount;\n\n var getAuthInfo = getAdapter('getAuthInfo');\n return getAuthInfo({\n platform: unionIdPlatform\n }).then(function (authInfo) {\n authInfo = AV.User.mergeUnionId(authInfo, unionId, {\n asMainAccount: asMainAccount\n });\n authInfo.provider = PLATFORM_QQAPP;\n return _this5.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}\n */\n associateWithWeappWithUnionId: function associateWithWeappWithUnionId(unionId) {\n var _this6 = this;\n\n var _ref6 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref6$unionIdPlatform = _ref6.unionIdPlatform,\n unionIdPlatform = _ref6$unionIdPlatform === void 0 ? 'weixin' : _ref6$unionIdPlatform,\n _ref6$asMainAccount = _ref6.asMainAccount,\n asMainAccount = _ref6$asMainAccount === void 0 ? false : _ref6$asMainAccount;\n\n var getAuthInfo = getAdapter('getAuthInfo');\n return getAuthInfo({\n platform: unionIdPlatform\n }).then(function (authInfo) {\n authInfo = AV.User.mergeUnionId(authInfo, unionId, {\n asMainAccount: asMainAccount\n });\n return _this6.associateWithMiniApp(authInfo);\n });\n },\n\n /**\n * Unlinks a user from a service.\n * @param {string} platform\n * @return {Promise}\n * @since 3.3.0\n */\n dissociateAuthData: function dissociateAuthData(provider) {\n this.unset(\"authData.\".concat(provider));\n return this.save().then(function (model) {\n return model._handleSaveResult(true).then(function () {\n return model;\n });\n });\n },\n\n /**\n * @private\n * @deprecated\n */\n _unlinkFrom: function _unlinkFrom(provider) {\n console.warn('DEPRECATED: User#_unlinkFrom 已废弃,请使用 User#dissociateAuthData 代替');\n return this.dissociateAuthData(provider);\n },\n\n /**\n * Checks whether a user is linked to a service.\n * @private\n */\n _isLinked: function _isLinked(provider) {\n var authType;\n\n if (_.isString(provider)) {\n authType = provider;\n } else {\n authType = provider.getAuthType();\n }\n\n var authData = this.get('authData') || {};\n return !!authData[authType];\n },\n\n /**\n * Checks whether a user is anonymous.\n * @since 3.9.0\n * @return {boolean}\n */\n isAnonymous: function isAnonymous() {\n return this._isLinked(PLATFORM_ANONYMOUS);\n },\n logOut: function logOut() {\n this._logOutWithAll();\n\n this._isCurrentUser = false;\n },\n\n /**\n * Deauthenticates all providers.\n * @private\n */\n _logOutWithAll: function _logOutWithAll() {\n var authData = this.get('authData');\n\n if (!authData) {\n return;\n }\n\n var self = this;\n\n AV._objectEach(this.get('authData'), function (value, key) {\n self._logOutWith(key);\n });\n },\n\n /**\n * Deauthenticates a single provider (e.g. removing access tokens from the\n * Facebook SDK).\n * @private\n */\n _logOutWith: function _logOutWith(provider) {\n if (!this.isCurrent()) {\n return;\n }\n\n if (_.isString(provider)) {\n provider = AV.User._authProviders[provider];\n }\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 * current.\n *\n *

    A username and password must be set before calling signUp.

    \n *\n * @param {Object} attrs Extra fields to set on the new user, or null.\n * @param {AuthOptions} options\n * @return {Promise} A promise that is fulfilled when the signup\n * finishes.\n * @see AV.User.signUp\n */\n signUp: function signUp(attrs, options) {\n var error;\n var username = attrs && attrs.username || this.get('username');\n\n if (!username || username === '') {\n error = new AVError(AVError.OTHER_CAUSE, 'Cannot sign up user with an empty name.');\n throw error;\n }\n\n var password = attrs && attrs.password || this.get('password');\n\n if (!password || password === '') {\n error = new AVError(AVError.OTHER_CAUSE, 'Cannot sign up user with an empty password.');\n throw error;\n }\n\n return this.save(attrs, options).then(function (model) {\n if (model.isAnonymous()) {\n model.unset(\"authData.\".concat(PLATFORM_ANONYMOUS));\n model._opSetQueue = [{}];\n }\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 * current.\n *\n *

    A username and password must be set before calling signUp.

    \n *\n * @param {Object} attrs Extra fields to set on the new user, or null.\n * @param {AuthOptions} options\n * @return {Promise} A promise that is fulfilled when the signup\n * finishes.\n * @see AV.User.signUpOrlogInWithMobilePhone\n * @see AV.Cloud.requestSmsCode\n */\n signUpOrlogInWithMobilePhone: function signUpOrlogInWithMobilePhone(attrs) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var error;\n var mobilePhoneNumber = attrs && attrs.mobilePhoneNumber || this.get('mobilePhoneNumber');\n\n if (!mobilePhoneNumber || mobilePhoneNumber === '') {\n error = new AVError(AVError.OTHER_CAUSE, 'Cannot sign up or login user by mobilePhoneNumber ' + 'with an empty mobilePhoneNumber.');\n throw error;\n }\n\n var smsCode = attrs && attrs.smsCode || this.get('smsCode');\n\n if (!smsCode || smsCode === '') {\n error = new AVError(AVError.OTHER_CAUSE, 'Cannot sign up or login user by mobilePhoneNumber ' + 'with an empty smsCode.');\n throw error;\n }\n\n options._makeRequest = function (route, className, id, method, json) {\n return AVRequest('usersByMobilePhone', null, null, 'POST', json);\n };\n\n return this.save(attrs, options).then(function (model) {\n delete model.attributes.smsCode;\n delete model._serverData.smsCode;\n return model._handleSaveResult(true).then(function () {\n return model;\n });\n });\n },\n\n /**\n * The same with {@link AV.User.loginWithAuthData}, except that you can set attributes before login.\n * @since 3.7.0\n */\n loginWithAuthData: function loginWithAuthData(authData, platform, options) {\n return this._linkWith(platform, authData, options);\n },\n\n /**\n * The same with {@link AV.User.loginWithAuthDataAndUnionId}, except that you can set attributes before login.\n * @since 3.7.0\n */\n loginWithAuthDataAndUnionId: function loginWithAuthDataAndUnionId(authData, platform, unionId, unionLoginOptions) {\n return this.loginWithAuthData(mergeUnionDataIntoAuthData()(authData, unionId, unionLoginOptions), platform, unionLoginOptions);\n },\n\n /**\n * 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}\n */\n loginWithWeapp: function loginWithWeapp() {\n var _this7 = this;\n\n var _ref7 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref7$preferUnionId = _ref7.preferUnionId,\n preferUnionId = _ref7$preferUnionId === void 0 ? false : _ref7$preferUnionId,\n _ref7$unionIdPlatform = _ref7.unionIdPlatform,\n unionIdPlatform = _ref7$unionIdPlatform === void 0 ? 'weixin' : _ref7$unionIdPlatform,\n _ref7$asMainAccount = _ref7.asMainAccount,\n asMainAccount = _ref7$asMainAccount === void 0 ? true : _ref7$asMainAccount,\n _ref7$failOnNotExist = _ref7.failOnNotExist,\n failOnNotExist = _ref7$failOnNotExist === void 0 ? false : _ref7$failOnNotExist,\n useMasterKey = _ref7.useMasterKey,\n sessionToken = _ref7.sessionToken,\n user = _ref7.user;\n\n var getAuthInfo = getAdapter('getAuthInfo');\n return getAuthInfo({\n preferUnionId: preferUnionId,\n asMainAccount: asMainAccount,\n platform: unionIdPlatform\n }).then(function (authInfo) {\n return _this7.loginWithMiniApp(authInfo, {\n failOnNotExist: failOnNotExist,\n useMasterKey: useMasterKey,\n sessionToken: sessionToken,\n user: user\n });\n });\n },\n\n /**\n * The same with {@link AV.User.loginWithWeappWithUnionId}, except that you can set attributes before login.\n * @deprecated please use {@link AV.User#loginWithMiniApp}\n * @since 3.13.0\n */\n loginWithWeappWithUnionId: function loginWithWeappWithUnionId(unionId) {\n var _this8 = this;\n\n var _ref8 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref8$unionIdPlatform = _ref8.unionIdPlatform,\n unionIdPlatform = _ref8$unionIdPlatform === void 0 ? 'weixin' : _ref8$unionIdPlatform,\n _ref8$asMainAccount = _ref8.asMainAccount,\n asMainAccount = _ref8$asMainAccount === void 0 ? false : _ref8$asMainAccount,\n _ref8$failOnNotExist = _ref8.failOnNotExist,\n failOnNotExist = _ref8$failOnNotExist === void 0 ? false : _ref8$failOnNotExist,\n useMasterKey = _ref8.useMasterKey,\n sessionToken = _ref8.sessionToken,\n user = _ref8.user;\n\n var getAuthInfo = getAdapter('getAuthInfo');\n return getAuthInfo({\n platform: unionIdPlatform\n }).then(function (authInfo) {\n authInfo = AV.User.mergeUnionId(authInfo, unionId, {\n asMainAccount: asMainAccount\n });\n return _this8.loginWithMiniApp(authInfo, {\n failOnNotExist: failOnNotExist,\n useMasterKey: useMasterKey,\n sessionToken: sessionToken,\n user: user\n });\n });\n },\n\n /**\n * The same with {@link AV.User.loginWithQQApp}, except that you can set attributes before login.\n * @deprecated please use {@link AV.User#loginWithMiniApp}\n * @since 4.2.0\n * @param {Object} [options]\n * @param {boolean} [options.failOnNotExist] If true, the login request will fail when no user matches this authData exists.\n * @param {boolean} [options.preferUnionId] 如果服务端在登录时获取到了用户的 UnionId,是否将 UnionId 保存在用户账号中。\n * @param {string} [options.unionIdPlatform = 'qq'] (only take effect when preferUnionId) unionId platform\n * @param {boolean} [options.asMainAccount = true] (only take effect when preferUnionId) If true, the unionId will be associated with the user.\n */\n loginWithQQApp: function loginWithQQApp() {\n var _this9 = this;\n\n var _ref9 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref9$preferUnionId = _ref9.preferUnionId,\n preferUnionId = _ref9$preferUnionId === void 0 ? false : _ref9$preferUnionId,\n _ref9$unionIdPlatform = _ref9.unionIdPlatform,\n unionIdPlatform = _ref9$unionIdPlatform === void 0 ? 'qq' : _ref9$unionIdPlatform,\n _ref9$asMainAccount = _ref9.asMainAccount,\n asMainAccount = _ref9$asMainAccount === void 0 ? true : _ref9$asMainAccount,\n _ref9$failOnNotExist = _ref9.failOnNotExist,\n failOnNotExist = _ref9$failOnNotExist === void 0 ? false : _ref9$failOnNotExist,\n useMasterKey = _ref9.useMasterKey,\n sessionToken = _ref9.sessionToken,\n user = _ref9.user;\n\n var getAuthInfo = getAdapter('getAuthInfo');\n return getAuthInfo({\n preferUnionId: preferUnionId,\n asMainAccount: asMainAccount,\n platform: unionIdPlatform\n }).then(function (authInfo) {\n authInfo.provider = PLATFORM_QQAPP;\n return _this9.loginWithMiniApp(authInfo, {\n failOnNotExist: failOnNotExist,\n useMasterKey: useMasterKey,\n sessionToken: sessionToken,\n user: user\n });\n });\n },\n\n /**\n * The same with {@link AV.User.loginWithQQAppWithUnionId}, except that you can set attributes before login.\n * @deprecated please use {@link AV.User#loginWithMiniApp}\n * @since 4.2.0\n */\n loginWithQQAppWithUnionId: function loginWithQQAppWithUnionId(unionId) {\n var _this10 = this;\n\n var _ref10 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref10$unionIdPlatfor = _ref10.unionIdPlatform,\n unionIdPlatform = _ref10$unionIdPlatfor === void 0 ? 'qq' : _ref10$unionIdPlatfor,\n _ref10$asMainAccount = _ref10.asMainAccount,\n asMainAccount = _ref10$asMainAccount === void 0 ? false : _ref10$asMainAccount,\n _ref10$failOnNotExist = _ref10.failOnNotExist,\n failOnNotExist = _ref10$failOnNotExist === void 0 ? false : _ref10$failOnNotExist,\n useMasterKey = _ref10.useMasterKey,\n sessionToken = _ref10.sessionToken,\n user = _ref10.user;\n\n var getAuthInfo = getAdapter('getAuthInfo');\n return getAuthInfo({\n platform: unionIdPlatform\n }).then(function (authInfo) {\n authInfo = AV.User.mergeUnionId(authInfo, unionId, {\n asMainAccount: asMainAccount\n });\n authInfo.provider = PLATFORM_QQAPP;\n return _this10.loginWithMiniApp(authInfo, {\n failOnNotExist: failOnNotExist,\n useMasterKey: useMasterKey,\n sessionToken: sessionToken,\n user: user\n });\n });\n },\n\n /**\n * The same with {@link AV.User.loginWithMiniApp}, except that you can set attributes before login.\n * @since 4.6.0\n */\n loginWithMiniApp: function loginWithMiniApp(authInfo, option) {\n var _this11 = this;\n\n if (authInfo === undefined) {\n var getAuthInfo = getAdapter('getAuthInfo');\n return getAuthInfo().then(function (authInfo) {\n return _this11.loginWithAuthData(authInfo.authData, authInfo.provider, option);\n });\n }\n\n return this.loginWithAuthData(authInfo.authData, authInfo.provider, option);\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 * current.\n *\n *

    A username and password must be set before calling logIn.

    \n *\n * @see AV.User.logIn\n * @return {Promise} A promise that is fulfilled with the user when\n * the login is complete.\n */\n logIn: function logIn() {\n var model = this;\n var request = AVRequest('login', null, null, 'POST', this.toJSON());\n return request.then(function (resp) {\n var serverAttrs = model.parse(resp);\n\n model._finishFetch(serverAttrs);\n\n return model._handleSaveResult(true).then(function () {\n if (!serverAttrs.smsCode) delete model.attributes['smsCode'];\n return model;\n });\n });\n },\n\n /**\n * @see AV.Object#save\n */\n save: function save(arg1, arg2, arg3) {\n var attrs, options;\n\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\n options = options || {};\n return AV.Object.prototype.save.call(this, attrs, options).then(function (model) {\n return model._handleSaveResult(false).then(function () {\n return model;\n });\n });\n },\n\n /**\n * Follow a user\n * @since 0.3.0\n * @param {Object | AV.User | String} options if an AV.User or string is given, it will be used as the target user.\n * @param {AV.User | String} options.user The target user or user's objectId to follow.\n * @param {Object} [options.attributes] key-value attributes dictionary to be used as\n * conditions of followerQuery/followeeQuery.\n * @param {AuthOptions} [authOptions]\n */\n follow: function follow(options, authOptions) {\n if (!this.id) {\n throw new Error('Please signin.');\n }\n\n var user;\n var attributes;\n\n if (options.user) {\n user = options.user;\n attributes = options.attributes;\n } else {\n user = options;\n }\n\n var userObjectId = _.isString(user) ? user : user.id;\n\n if (!userObjectId) {\n throw new Error('Invalid target user.');\n }\n\n var route = 'users/' + this.id + '/friendship/' + userObjectId;\n var request = AVRequest(route, null, null, 'POST', AV._encode(attributes), authOptions);\n return request;\n },\n\n /**\n * Unfollow a user.\n * @since 0.3.0\n * @param {Object | AV.User | String} options if an AV.User or string is given, it will be used as the target user.\n * @param {AV.User | String} options.user The target user or user's objectId to unfollow.\n * @param {AuthOptions} [authOptions]\n */\n unfollow: function unfollow(options, authOptions) {\n if (!this.id) {\n throw new Error('Please signin.');\n }\n\n var user;\n\n if (options.user) {\n user = options.user;\n } else {\n user = options;\n }\n\n var userObjectId = _.isString(user) ? user : user.id;\n\n if (!userObjectId) {\n throw new Error('Invalid target user.');\n }\n\n var route = 'users/' + this.id + '/friendship/' + userObjectId;\n var request = AVRequest(route, null, null, 'DELETE', null, authOptions);\n return request;\n },\n\n /**\n * Get the user's followers and followees.\n * @since 4.8.0\n * @param {Object} [options]\n * @param {Number} [options.skip]\n * @param {Number} [options.limit]\n * @param {AuthOptions} [authOptions]\n */\n getFollowersAndFollowees: function getFollowersAndFollowees(options, authOptions) {\n if (!this.id) {\n throw new Error('Please signin.');\n }\n\n return request({\n method: 'GET',\n path: \"/users/\".concat(this.id, \"/followersAndFollowees\"),\n query: {\n skip: options && options.skip,\n limit: options && options.limit,\n include: 'follower,followee',\n keys: 'follower,followee'\n },\n authOptions: authOptions\n }).then(function (_ref11) {\n var followers = _ref11.followers,\n followees = _ref11.followees;\n return {\n followers: (0, _map.default)(followers).call(followers, function (_ref12) {\n var follower = _ref12.follower;\n return AV._decode(follower);\n }),\n followees: (0, _map.default)(followees).call(followees, function (_ref13) {\n var followee = _ref13.followee;\n return AV._decode(followee);\n })\n };\n });\n },\n\n /**\n *Create a follower query to query the user's followers.\n * @since 0.3.0\n * @see AV.User#followerQuery\n */\n followerQuery: function followerQuery() {\n return AV.User.followerQuery(this.id);\n },\n\n /**\n *Create a followee query to query the user's followees.\n * @since 0.3.0\n * @see AV.User#followeeQuery\n */\n followeeQuery: function followeeQuery() {\n return AV.User.followeeQuery(this.id);\n },\n\n /**\n * @see AV.Object#fetch\n */\n fetch: function fetch(fetchOptions, options) {\n return AV.Object.prototype.fetch.call(this, fetchOptions, options).then(function (model) {\n return model._handleSaveResult(false).then(function () {\n return model;\n });\n });\n },\n\n /**\n * Update user's new password safely based on old password.\n * @param {String} oldPassword the old password.\n * @param {String} newPassword the new password.\n * @param {AuthOptions} options\n */\n updatePassword: function updatePassword(oldPassword, newPassword, options) {\n var _this12 = this;\n\n var route = 'users/' + this.id + '/updatePassword';\n var params = {\n old_password: oldPassword,\n new_password: newPassword\n };\n var request = AVRequest(route, null, null, 'PUT', params, options);\n return request.then(function (resp) {\n _this12._finishFetch(_this12.parse(resp));\n\n return _this12._handleSaveResult(true).then(function () {\n return resp;\n });\n });\n },\n\n /**\n * Returns true if current would return this user.\n * @see AV.User#current\n */\n isCurrent: function isCurrent() {\n return this._isCurrentUser;\n },\n\n /**\n * Returns get(\"username\").\n * @return {String}\n * @see AV.Object#get\n */\n getUsername: function getUsername() {\n return this.get('username');\n },\n\n /**\n * Returns get(\"mobilePhoneNumber\").\n * @return {String}\n * @see AV.Object#get\n */\n getMobilePhoneNumber: function getMobilePhoneNumber() {\n return this.get('mobilePhoneNumber');\n },\n\n /**\n * Calls set(\"mobilePhoneNumber\", phoneNumber, options) and returns the result.\n * @param {String} mobilePhoneNumber\n * @return {Boolean}\n * @see AV.Object#set\n */\n setMobilePhoneNumber: function setMobilePhoneNumber(phone, options) {\n return this.set('mobilePhoneNumber', phone, options);\n },\n\n /**\n * Calls set(\"username\", username, options) and returns the result.\n * @param {String} username\n * @return {Boolean}\n * @see AV.Object#set\n */\n setUsername: function setUsername(username, options) {\n return this.set('username', username, options);\n },\n\n /**\n * Calls set(\"password\", password, options) and returns the result.\n * @param {String} password\n * @return {Boolean}\n * @see AV.Object#set\n */\n setPassword: function setPassword(password, options) {\n return this.set('password', password, options);\n },\n\n /**\n * Returns get(\"email\").\n * @return {String}\n * @see AV.Object#get\n */\n getEmail: function getEmail() {\n return this.get('email');\n },\n\n /**\n * Calls set(\"email\", email, options) and returns the result.\n * @param {String} email\n * @param {AuthOptions} options\n * @return {Boolean}\n * @see AV.Object#set\n */\n setEmail: function setEmail(email, options) {\n return this.set('email', email, options);\n },\n\n /**\n * Checks whether this user is the current user and has been authenticated.\n * @deprecated 如果要判断当前用户的登录状态是否有效,请使用 currentUser.isAuthenticated().then(),\n * 如果要判断该用户是否是当前登录用户,请使用 user.id === currentUser.id\n * @return (Boolean) whether this user is the current user and is logged in.\n */\n authenticated: function authenticated() {\n console.warn('DEPRECATED: 如果要判断当前用户的登录状态是否有效,请使用 currentUser.isAuthenticated().then(),如果要判断该用户是否是当前登录用户,请使用 user.id === currentUser.id。');\n return !!this._sessionToken && !AV._config.disableCurrentUser && AV.User.current() && AV.User.current().id === this.id;\n },\n\n /**\n * Detects if current sessionToken is valid.\n *\n * @since 2.0.0\n * @return Promise.\n */\n isAuthenticated: function isAuthenticated() {\n var _this13 = this;\n\n return _promise.default.resolve().then(function () {\n return !!_this13._sessionToken && AV.User._fetchUserBySessionToken(_this13._sessionToken).then(function () {\n return true;\n }, function (error) {\n if (error.code === 211) {\n return false;\n }\n\n throw error;\n });\n });\n },\n\n /**\n * Get sessionToken of current user.\n * @return {String} sessionToken\n */\n getSessionToken: function getSessionToken() {\n return this._sessionToken;\n },\n\n /**\n * Refresh sessionToken of current user.\n * @since 2.1.0\n * @param {AuthOptions} [options]\n * @return {Promise.} user with refreshed sessionToken\n */\n refreshSessionToken: function refreshSessionToken(options) {\n var _this14 = this;\n\n return AVRequest(\"users/\".concat(this.id, \"/refreshSessionToken\"), null, null, 'PUT', null, options).then(function (response) {\n _this14._finishFetch(response);\n\n return _this14._handleSaveResult(true).then(function () {\n return _this14;\n });\n });\n },\n\n /**\n * Get this user's Roles.\n * @param {AuthOptions} [options]\n * @return {Promise.} A promise that is fulfilled with the roles when\n * the query is complete.\n */\n getRoles: function getRoles(options) {\n var _context;\n\n return (0, _find.default)(_context = AV.Relation.reverseQuery('_Role', 'users', this)).call(_context, options);\n }\n },\n /** @lends AV.User */\n {\n // Class Variables\n // The currently logged-in user.\n _currentUser: null,\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 // The localStorage key suffix that the current user is stored under.\n _CURRENT_USER_KEY: 'currentUser',\n // The mapping of auth provider names to actual providers\n _authProviders: {},\n // Class Methods\n\n /**\n * Signs up a new user with a username (or email) and password.\n * This will create a new AV.User on the server, and also persist the\n * session in localStorage so that you can access the user using\n * {@link #current}.\n *\n * @param {String} username The username (or email) to sign up with.\n * @param {String} password The password to sign up with.\n * @param {Object} [attrs] Extra fields to set on the new user.\n * @param {AuthOptions} [options]\n * @return {Promise} A promise that is fulfilled with the user when\n * the signup completes.\n * @see AV.User#signUp\n */\n signUp: function signUp(username, password, attrs, options) {\n attrs = attrs || {};\n attrs.username = username;\n attrs.password = password;\n\n var user = AV.Object._create('_User');\n\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 current.\n *\n * @param {String} username The username (or email) to log in with.\n * @param {String} password The password to log in with.\n * @return {Promise} A promise that is fulfilled with the user when\n * the login completes.\n * @see AV.User#logIn\n */\n logIn: function logIn(username, password) {\n var user = AV.Object._create('_User');\n\n user._finishFetch({\n username: username,\n password: password\n });\n\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 * current.\n *\n * @param {String} sessionToken The sessionToken to log in with.\n * @return {Promise} A promise that is fulfilled with the user when\n * the login completes.\n */\n become: function become(sessionToken) {\n return this._fetchUserBySessionToken(sessionToken).then(function (user) {\n return user._handleSaveResult(true).then(function () {\n return user;\n });\n });\n },\n _fetchUserBySessionToken: function _fetchUserBySessionToken(sessionToken) {\n if (sessionToken === undefined) {\n return _promise.default.reject(new Error('The sessionToken cannot be undefined'));\n }\n\n var user = AV.Object._create('_User');\n\n return request({\n method: 'GET',\n path: '/users/me',\n authOptions: {\n sessionToken: sessionToken\n }\n }).then(function (resp) {\n var serverAttrs = user.parse(resp);\n\n user._finishFetch(serverAttrs);\n\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 current.\n *\n * @param {String} mobilePhone The user's mobilePhoneNumber\n * @param {String} smsCode The sms code sent by AV.User.requestLoginSmsCode\n * @return {Promise} A promise that is fulfilled with the user when\n * the login completes.\n * @see AV.User#logIn\n */\n logInWithMobilePhoneSmsCode: function logInWithMobilePhoneSmsCode(mobilePhone, smsCode) {\n var user = AV.Object._create('_User');\n\n user._finishFetch({\n mobilePhoneNumber: mobilePhone,\n smsCode: smsCode\n });\n\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 current.\n *\n * @param {String} mobilePhoneNumber The user's mobilePhoneNumber.\n * @param {String} smsCode The sms code sent by AV.Cloud.requestSmsCode\n * @param {Object} attributes The user's other attributes such as username etc.\n * @param {AuthOptions} options\n * @return {Promise} A promise that is fulfilled with the user when\n * the login completes.\n * @see AV.User#signUpOrlogInWithMobilePhone\n * @see AV.Cloud.requestSmsCode\n */\n signUpOrlogInWithMobilePhone: function signUpOrlogInWithMobilePhone(mobilePhoneNumber, smsCode, attrs, options) {\n attrs = attrs || {};\n attrs.mobilePhoneNumber = mobilePhoneNumber;\n attrs.smsCode = smsCode;\n\n var user = AV.Object._create('_User');\n\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 current.\n *\n * @param {String} mobilePhone The user's mobilePhoneNumber\n * @param {String} password The password to log in with.\n * @return {Promise} A promise that is fulfilled with the user when\n * the login completes.\n * @see AV.User#logIn\n */\n logInWithMobilePhone: function logInWithMobilePhone(mobilePhone, password) {\n var user = AV.Object._create('_User');\n\n user._finishFetch({\n mobilePhoneNumber: mobilePhone,\n password: password\n });\n\n return user.logIn();\n },\n\n /**\n * Logs in a user with email and password.\n *\n * @since 3.13.0\n * @param {String} email The user's email.\n * @param {String} password The password to log in with.\n * @return {Promise} A promise that is fulfilled with the user when\n * the login completes.\n */\n loginWithEmail: function loginWithEmail(email, password) {\n var user = AV.Object._create('_User');\n\n user._finishFetch({\n email: email,\n password: password\n });\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 current.\n *\n * @since 3.7.0\n * @param {Object} authData The response json data returned from third party token, maybe like { openid: 'abc123', access_token: '123abc', expires_in: 1382686496 }\n * @param {string} platform Available platform for sign up.\n * @param {Object} [options]\n * @param {boolean} [options.failOnNotExist] If true, the login request will fail when no user matches this authData exists.\n * @return {Promise} A promise that is fulfilled with the user when\n * the login completes.\n * @example AV.User.loginWithAuthData({\n * openid: 'abc123',\n * access_token: '123abc',\n * expires_in: 1382686496\n * }, 'weixin').then(function(user) {\n * //Access user here\n * }).catch(function(error) {\n * //console.error(\"error: \", error);\n * });\n * @see {@link https://leancloud.cn/docs/js_guide.html#绑定第三方平台账户}\n */\n loginWithAuthData: function loginWithAuthData(authData, platform, options) {\n return AV.User._logInWith(platform, authData, options);\n },\n\n /**\n * @deprecated renamed to {@link AV.User.loginWithAuthData}\n */\n signUpOrlogInWithAuthData: function signUpOrlogInWithAuthData() {\n console.warn('DEPRECATED: User.signUpOrlogInWithAuthData 已废弃,请使用 User#loginWithAuthData 代替');\n return this.loginWithAuthData.apply(this, arguments);\n },\n\n /**\n * 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} A promise that is fulfilled with the user when completed.\n * @example AV.User.loginWithAuthDataAndUnionId({\n * openid: 'abc123',\n * access_token: '123abc',\n * expires_in: 1382686496\n * }, 'weixin', 'union123', {\n * unionIdPlatform: 'weixin',\n * asMainAccount: true,\n * }).then(function(user) {\n * //Access user here\n * }).catch(function(error) {\n * //console.error(\"error: \", error);\n * });\n */\n loginWithAuthDataAndUnionId: function loginWithAuthDataAndUnionId(authData, platform, unionId, unionLoginOptions) {\n return this.loginWithAuthData(mergeUnionDataIntoAuthData()(authData, unionId, unionLoginOptions), platform, unionLoginOptions);\n },\n\n /**\n * @deprecated renamed to {@link AV.User.loginWithAuthDataAndUnionId}\n * @since 3.5.0\n */\n signUpOrlogInWithAuthDataAndUnionId: function signUpOrlogInWithAuthDataAndUnionId() {\n console.warn('DEPRECATED: User.signUpOrlogInWithAuthDataAndUnionId 已废弃,请使用 User#loginWithAuthDataAndUnionId 代替');\n return this.loginWithAuthDataAndUnionId.apply(this, arguments);\n },\n\n /**\n * Merge unionId into authInfo.\n * @since 4.6.0\n * @param {Object} authInfo\n * @param {String} unionId\n * @param {Object} [unionIdOption]\n * @param {Boolean} [unionIdOption.asMainAccount] If true, the unionId will be associated with the user.\n */\n mergeUnionId: function mergeUnionId(authInfo, unionId) {\n var _ref14 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n _ref14$asMainAccount = _ref14.asMainAccount,\n asMainAccount = _ref14$asMainAccount === void 0 ? false : _ref14$asMainAccount;\n\n authInfo = JSON.parse((0, _stringify.default)(authInfo));\n var _authInfo = authInfo,\n authData = _authInfo.authData,\n platform = _authInfo.platform;\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.}\n */\n loginWithWeapp: function loginWithWeapp() {\n var _this15 = this;\n\n var _ref15 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref15$preferUnionId = _ref15.preferUnionId,\n preferUnionId = _ref15$preferUnionId === void 0 ? false : _ref15$preferUnionId,\n _ref15$unionIdPlatfor = _ref15.unionIdPlatform,\n unionIdPlatform = _ref15$unionIdPlatfor === void 0 ? 'weixin' : _ref15$unionIdPlatfor,\n _ref15$asMainAccount = _ref15.asMainAccount,\n asMainAccount = _ref15$asMainAccount === void 0 ? true : _ref15$asMainAccount,\n _ref15$failOnNotExist = _ref15.failOnNotExist,\n failOnNotExist = _ref15$failOnNotExist === void 0 ? false : _ref15$failOnNotExist,\n useMasterKey = _ref15.useMasterKey,\n sessionToken = _ref15.sessionToken,\n user = _ref15.user;\n\n var getAuthInfo = getAdapter('getAuthInfo');\n return getAuthInfo({\n preferUnionId: preferUnionId,\n asMainAccount: asMainAccount,\n platform: unionIdPlatform\n }).then(function (authInfo) {\n return _this15.loginWithMiniApp(authInfo, {\n failOnNotExist: failOnNotExist,\n useMasterKey: useMasterKey,\n sessionToken: sessionToken,\n user: user\n });\n });\n },\n\n /**\n * 使用当前使用微信小程序的微信用户身份注册或登录,\n * 仅在微信小程序中可用。\n *\n * @deprecated please use {@link AV.User.loginWithMiniApp}\n * @since 3.13.0\n * @param {Object} [unionLoginOptions]\n * @param {string} [unionLoginOptions.unionIdPlatform = 'weixin'] unionId platform\n * @param {boolean} [unionLoginOptions.asMainAccount = false] If true, the unionId will be associated with the user.\n * @param {boolean} [unionLoginOptions.failOnNotExist] If true, the login request will fail when no user matches this authData exists. * @return {Promise.}\n */\n loginWithWeappWithUnionId: function loginWithWeappWithUnionId(unionId) {\n var _this16 = this;\n\n var _ref16 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref16$unionIdPlatfor = _ref16.unionIdPlatform,\n unionIdPlatform = _ref16$unionIdPlatfor === void 0 ? 'weixin' : _ref16$unionIdPlatfor,\n _ref16$asMainAccount = _ref16.asMainAccount,\n asMainAccount = _ref16$asMainAccount === void 0 ? false : _ref16$asMainAccount,\n _ref16$failOnNotExist = _ref16.failOnNotExist,\n failOnNotExist = _ref16$failOnNotExist === void 0 ? false : _ref16$failOnNotExist,\n useMasterKey = _ref16.useMasterKey,\n sessionToken = _ref16.sessionToken,\n user = _ref16.user;\n\n var getAuthInfo = getAdapter('getAuthInfo');\n return getAuthInfo({\n platform: unionIdPlatform\n }).then(function (authInfo) {\n authInfo = AV.User.mergeUnionId(authInfo, unionId, {\n asMainAccount: asMainAccount\n });\n return _this16.loginWithMiniApp(authInfo, {\n failOnNotExist: failOnNotExist,\n useMasterKey: useMasterKey,\n sessionToken: sessionToken,\n user: user\n });\n });\n },\n\n /**\n * 使用当前使用 QQ 小程序的 QQ 用户身份注册或登录,成功后用户的 session 会在设备上持久化保存,之后可以使用 AV.User.current() 获取当前登录用户。\n * 仅在 QQ 小程序中可用。\n *\n * @deprecated please use {@link AV.User.loginWithMiniApp}\n * @since 4.2.0\n * @param {Object} [options]\n * @param {boolean} [options.preferUnionId] 如果服务端在登录时获取到了用户的 UnionId,是否将 UnionId 保存在用户账号中。\n * @param {string} [options.unionIdPlatform = 'qq'] (only take effect when preferUnionId) unionId platform\n * @param {boolean} [options.asMainAccount = true] (only take effect when preferUnionId) If true, the unionId will be associated with the user.\n * @param {boolean} [options.failOnNotExist] If true, the login request will fail when no user matches this authData exists. (since v3.7.0)\n * @return {Promise.}\n */\n loginWithQQApp: function loginWithQQApp() {\n var _this17 = this;\n\n var _ref17 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref17$preferUnionId = _ref17.preferUnionId,\n preferUnionId = _ref17$preferUnionId === void 0 ? false : _ref17$preferUnionId,\n _ref17$unionIdPlatfor = _ref17.unionIdPlatform,\n unionIdPlatform = _ref17$unionIdPlatfor === void 0 ? 'qq' : _ref17$unionIdPlatfor,\n _ref17$asMainAccount = _ref17.asMainAccount,\n asMainAccount = _ref17$asMainAccount === void 0 ? true : _ref17$asMainAccount,\n _ref17$failOnNotExist = _ref17.failOnNotExist,\n failOnNotExist = _ref17$failOnNotExist === void 0 ? false : _ref17$failOnNotExist,\n useMasterKey = _ref17.useMasterKey,\n sessionToken = _ref17.sessionToken,\n user = _ref17.user;\n\n var getAuthInfo = getAdapter('getAuthInfo');\n return getAuthInfo({\n preferUnionId: preferUnionId,\n asMainAccount: asMainAccount,\n platform: unionIdPlatform\n }).then(function (authInfo) {\n authInfo.provider = PLATFORM_QQAPP;\n return _this17.loginWithMiniApp(authInfo, {\n failOnNotExist: failOnNotExist,\n useMasterKey: useMasterKey,\n sessionToken: sessionToken,\n user: user\n });\n });\n },\n\n /**\n * 使用当前使用 QQ 小程序的 QQ 用户身份注册或登录,\n * 仅在 QQ 小程序中可用。\n *\n * @deprecated please use {@link AV.User.loginWithMiniApp}\n * @since 4.2.0\n * @param {Object} [unionLoginOptions]\n * @param {string} [unionLoginOptions.unionIdPlatform = 'qq'] unionId platform\n * @param {boolean} [unionLoginOptions.asMainAccount = false] If true, the unionId will be associated with the user.\n * @param {boolean} [unionLoginOptions.failOnNotExist] If true, the login request will fail when no user matches this authData exists.\n * @return {Promise.}\n */\n loginWithQQAppWithUnionId: function loginWithQQAppWithUnionId(unionId) {\n var _this18 = this;\n\n var _ref18 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref18$unionIdPlatfor = _ref18.unionIdPlatform,\n unionIdPlatform = _ref18$unionIdPlatfor === void 0 ? 'qq' : _ref18$unionIdPlatfor,\n _ref18$asMainAccount = _ref18.asMainAccount,\n asMainAccount = _ref18$asMainAccount === void 0 ? false : _ref18$asMainAccount,\n _ref18$failOnNotExist = _ref18.failOnNotExist,\n failOnNotExist = _ref18$failOnNotExist === void 0 ? false : _ref18$failOnNotExist,\n useMasterKey = _ref18.useMasterKey,\n sessionToken = _ref18.sessionToken,\n user = _ref18.user;\n\n var getAuthInfo = getAdapter('getAuthInfo');\n return getAuthInfo({\n platform: unionIdPlatform\n }).then(function (authInfo) {\n authInfo = AV.User.mergeUnionId(authInfo, unionId, {\n asMainAccount: asMainAccount\n });\n authInfo.provider = PLATFORM_QQAPP;\n return _this18.loginWithMiniApp(authInfo, {\n failOnNotExist: failOnNotExist,\n useMasterKey: useMasterKey,\n sessionToken: sessionToken,\n user: user\n });\n });\n },\n\n /**\n * Register or login using the identity of the current mini-app.\n * @param {Object} authInfo\n * @param {Object} [option]\n * @param {Boolean} [option.failOnNotExist] If true, the login request will fail when no user matches this authInfo.authData exists.\n */\n loginWithMiniApp: function loginWithMiniApp(authInfo, option) {\n var _this19 = this;\n\n if (authInfo === undefined) {\n var getAuthInfo = getAdapter('getAuthInfo');\n return getAuthInfo().then(function (authInfo) {\n return _this19.loginWithAuthData(authInfo.authData, authInfo.provider, option);\n });\n }\n\n return this.loginWithAuthData(authInfo.authData, authInfo.provider, option);\n },\n\n /**\n * Only use for DI in tests to produce deterministic IDs.\n */\n _genId: function _genId() {\n return uuid();\n },\n\n /**\n * Creates an anonymous user.\n *\n * @since 3.9.0\n * @return {Promise.}\n */\n loginAnonymously: function loginAnonymously() {\n return this.loginWithAuthData({\n id: AV.User._genId()\n }, 'anonymous');\n },\n associateWithAuthData: function associateWithAuthData(userObj, platform, authData) {\n console.warn('DEPRECATED: User.associateWithAuthData 已废弃,请使用 User#associateWithAuthData 代替');\n return userObj._linkWith(platform, authData);\n },\n\n /**\n * Logs out the currently logged in user session. This will remove the\n * session from disk, log out of linked services, and future calls to\n * current will return null.\n * @return {Promise}\n */\n logOut: function logOut() {\n if (AV._config.disableCurrentUser) {\n console.warn('AV.User.current() was disabled in multi-user environment, call logOut() from user object instead https://leancloud.cn/docs/leanengine-node-sdk-upgrade-1.html');\n return _promise.default.resolve(null);\n }\n\n if (AV.User._currentUser !== null) {\n AV.User._currentUser._logOutWithAll();\n\n AV.User._currentUser._isCurrentUser = false;\n }\n\n AV.User._currentUserMatchesDisk = true;\n AV.User._currentUser = null;\n return AV.localStorage.removeItemAsync(AV._getAVPath(AV.User._CURRENT_USER_KEY)).then(function () {\n return AV._refreshSubscriptionId();\n });\n },\n\n /**\n *Create a follower query for special user to query the user's followers.\n * @param {String} userObjectId The user object id.\n * @return {AV.FriendShipQuery}\n * @since 0.3.0\n */\n followerQuery: function followerQuery(userObjectId) {\n if (!userObjectId || !_.isString(userObjectId)) {\n throw new Error('Invalid user object id.');\n }\n\n var query = new AV.FriendShipQuery('_Follower');\n query._friendshipTag = 'follower';\n query.equalTo('user', AV.Object.createWithoutData('_User', userObjectId));\n return query;\n },\n\n /**\n *Create a followee query for special user to query the user's followees.\n * @param {String} userObjectId The user object id.\n * @return {AV.FriendShipQuery}\n * @since 0.3.0\n */\n followeeQuery: function followeeQuery(userObjectId) {\n if (!userObjectId || !_.isString(userObjectId)) {\n throw new Error('Invalid user object id.');\n }\n\n var query = new AV.FriendShipQuery('_Followee');\n query._friendshipTag = 'followee';\n query.equalTo('user', AV.Object.createWithoutData('_User', userObjectId));\n return query;\n },\n\n /**\n * Requests a password reset email to be sent to the specified email address\n * associated with the user account. This email allows the user to securely\n * reset their password on the AV site.\n *\n * @param {String} email The email address associated with the user that\n * forgot their password.\n * @return {Promise}\n */\n requestPasswordReset: function requestPasswordReset(email) {\n var json = {\n email: email\n };\n var request = AVRequest('requestPasswordReset', null, null, 'POST', json);\n return request;\n },\n\n /**\n * Requests a verify email to be sent to the specified email address\n * associated with the user account. This email allows the user to securely\n * verify their email address on the AV site.\n *\n * @param {String} email The email address associated with the user that\n * doesn't verify their email address.\n * @return {Promise}\n */\n requestEmailVerify: function requestEmailVerify(email) {\n var json = {\n email: email\n };\n var request = AVRequest('requestEmailVerify', null, null, 'POST', json);\n return request;\n },\n\n /**\n * Requests a verify sms code to be sent to the specified mobile phone\n * number associated with the user account. This sms code allows the user to\n * verify their mobile phone number by calling AV.User.verifyMobilePhone\n *\n * @param {String} mobilePhoneNumber The mobile phone number associated with the\n * user that doesn't verify their mobile phone number.\n * @param {SMSAuthOptions} [options]\n * @return {Promise}\n */\n requestMobilePhoneVerify: function requestMobilePhoneVerify(mobilePhoneNumber) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var data = {\n mobilePhoneNumber: mobilePhoneNumber\n };\n\n if (options.validateToken) {\n data.validate_token = options.validateToken;\n }\n\n var request = AVRequest('requestMobilePhoneVerify', null, null, 'POST', data, options);\n return request;\n },\n\n /**\n * Requests a reset password sms code to be sent to the specified mobile phone\n * number associated with the user account. This sms code allows the user to\n * reset their account's password by calling AV.User.resetPasswordBySmsCode\n *\n * @param {String} mobilePhoneNumber The mobile phone number associated with the\n * user that doesn't verify their mobile phone number.\n * @param {SMSAuthOptions} [options]\n * @return {Promise}\n */\n requestPasswordResetBySmsCode: function requestPasswordResetBySmsCode(mobilePhoneNumber) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var data = {\n mobilePhoneNumber: mobilePhoneNumber\n };\n\n if (options.validateToken) {\n data.validate_token = options.validateToken;\n }\n\n var request = AVRequest('requestPasswordResetBySmsCode', null, null, 'POST', data, options);\n return request;\n },\n\n /**\n * Requests a change mobile phone number sms code to be sent to the mobilePhoneNumber.\n * This sms code allows current user to reset it's mobilePhoneNumber by\n * calling {@link AV.User.changePhoneNumber}\n * @since 4.7.0\n * @param {String} mobilePhoneNumber\n * @param {Number} [ttl] ttl of sms code (default is 6 minutes)\n * @param {SMSAuthOptions} [options]\n * @return {Promise}\n */\n requestChangePhoneNumber: function requestChangePhoneNumber(mobilePhoneNumber, ttl, options) {\n var data = {\n mobilePhoneNumber: mobilePhoneNumber\n };\n\n if (ttl) {\n data.ttl = options.ttl;\n }\n\n if (options && options.validateToken) {\n data.validate_token = options.validateToken;\n }\n\n return AVRequest('requestChangePhoneNumber', null, null, 'POST', data, options);\n },\n\n /**\n * Makes a call to reset user's account mobilePhoneNumber by sms code.\n * The sms code is sent by {@link AV.User.requestChangePhoneNumber}\n * @since 4.7.0\n * @param {String} mobilePhoneNumber\n * @param {String} code The sms code.\n * @return {Promise}\n */\n changePhoneNumber: function changePhoneNumber(mobilePhoneNumber, code) {\n var data = {\n mobilePhoneNumber: mobilePhoneNumber,\n code: code\n };\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 resetPasswordBySmsCode(code, password) {\n var json = {\n password: password\n };\n var request = AVRequest('resetPasswordBySmsCode', null, code, 'PUT', json);\n return request;\n },\n\n /**\n * Makes a call to verify sms code that sent by AV.User.Cloud.requestSmsCode\n * If verify successfully,the user mobilePhoneVerified attribute will be true.\n * @param {String} code The sms code sent by AV.User.Cloud.requestSmsCode\n * @return {Promise} A promise that will be resolved with the result\n * of the function.\n */\n verifyMobilePhone: function verifyMobilePhone(code) {\n var request = AVRequest('verifyMobilePhone', null, code, 'POST', null);\n return request;\n },\n\n /**\n * Requests a logIn sms code to be sent to the specified mobile phone\n * number associated with the user account. This sms code allows the user to\n * login by AV.User.logInWithMobilePhoneSmsCode function.\n *\n * @param {String} mobilePhoneNumber The mobile phone number associated with the\n * user that want to login by AV.User.logInWithMobilePhoneSmsCode\n * @param {SMSAuthOptions} [options]\n * @return {Promise}\n */\n requestLoginSmsCode: function requestLoginSmsCode(mobilePhoneNumber) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var data = {\n mobilePhoneNumber: mobilePhoneNumber\n };\n\n if (options.validateToken) {\n data.validate_token = options.validateToken;\n }\n\n var request = AVRequest('requestLoginSmsCode', null, null, 'POST', data, options);\n return request;\n },\n\n /**\n * Retrieves the currently logged in AVUser with a valid session,\n * either from memory or localStorage, if necessary.\n * @return {Promise.} resolved with the currently logged in AV.User.\n */\n currentAsync: function currentAsync() {\n if (AV._config.disableCurrentUser) {\n console.warn('AV.User.currentAsync() was disabled in multi-user environment, access user from request instead https://leancloud.cn/docs/leanengine-node-sdk-upgrade-1.html');\n return _promise.default.resolve(null);\n }\n\n if (AV.User._currentUser) {\n return _promise.default.resolve(AV.User._currentUser);\n }\n\n if (AV.User._currentUserMatchesDisk) {\n return _promise.default.resolve(AV.User._currentUser);\n }\n\n return AV.localStorage.getItemAsync(AV._getAVPath(AV.User._CURRENT_USER_KEY)).then(function (userData) {\n if (!userData) {\n return null;\n } // Load the user from local storage.\n\n\n AV.User._currentUserMatchesDisk = true;\n AV.User._currentUser = AV.Object._create('_User');\n AV.User._currentUser._isCurrentUser = true;\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\n AV.User._currentUser._finishFetch(json); //AV.User._currentUser.set(json);\n\n\n AV.User._currentUser._synchronizeAllAuthData();\n\n AV.User._currentUser._refreshCache();\n\n AV.User._currentUser._opSetQueue = [{}];\n return AV.User._currentUser;\n });\n },\n\n /**\n * Retrieves the currently logged in AVUser with a valid session,\n * either from memory or localStorage, if necessary.\n * @return {AV.User} The currently logged in AV.User.\n */\n current: function current() {\n if (AV._config.disableCurrentUser) {\n console.warn('AV.User.current() was disabled in multi-user environment, access user from request instead https://leancloud.cn/docs/leanengine-node-sdk-upgrade-1.html');\n return null;\n }\n\n if (AV.localStorage.async) {\n var error = new Error('Synchronous API User.current() is not available in this runtime. Use User.currentAsync() instead.');\n error.code = 'SYNC_API_NOT_AVAILABLE';\n throw error;\n }\n\n if (AV.User._currentUser) {\n return AV.User._currentUser;\n }\n\n if (AV.User._currentUserMatchesDisk) {\n return AV.User._currentUser;\n } // Load the user from local storage.\n\n\n AV.User._currentUserMatchesDisk = true;\n var userData = AV.localStorage.getItem(AV._getAVPath(AV.User._CURRENT_USER_KEY));\n\n if (!userData) {\n return null;\n }\n\n AV.User._currentUser = AV.Object._create('_User');\n AV.User._currentUser._isCurrentUser = true;\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\n AV.User._currentUser._finishFetch(json); //AV.User._currentUser.set(json);\n\n\n AV.User._currentUser._synchronizeAllAuthData();\n\n AV.User._currentUser._refreshCache();\n\n AV.User._currentUser._opSetQueue = [{}];\n return AV.User._currentUser;\n },\n\n /**\n * Persists a user as currentUser to localStorage, and into the singleton.\n * @private\n */\n _saveCurrentUser: function _saveCurrentUser(user) {\n var promise;\n\n if (AV.User._currentUser !== user) {\n promise = AV.User.logOut();\n } else {\n promise = _promise.default.resolve();\n }\n\n return promise.then(function () {\n user._isCurrentUser = true;\n AV.User._currentUser = user;\n\n var json = user._toFullJSON();\n\n json._id = user.id;\n json._sessionToken = user._sessionToken;\n return AV.localStorage.setItemAsync(AV._getAVPath(AV.User._CURRENT_USER_KEY), (0, _stringify.default)(json)).then(function () {\n AV.User._currentUserMatchesDisk = true;\n return AV._refreshSubscriptionId();\n });\n });\n },\n _registerAuthenticationProvider: function _registerAuthenticationProvider(provider) {\n AV.User._authProviders[provider.getAuthType()] = provider; // Synchronize the current user with the auth provider.\n\n if (!AV._config.disableCurrentUser && AV.User.current()) {\n AV.User.current()._synchronizeAuthData(provider.getAuthType());\n }\n },\n _logInWith: function _logInWith(provider, authData, options) {\n var user = AV.Object._create('_User');\n\n return user._linkWith(provider, authData, options);\n }\n });\n};\n\n/***/ }),\n/* 528 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar _Object$defineProperty = __webpack_require__(137);\n\nfunction _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, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n/***/ }),\n/* 529 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(2);\n\nvar _map = _interopRequireDefault(__webpack_require__(39));\n\nvar _promise = _interopRequireDefault(__webpack_require__(10));\n\nvar _keys = _interopRequireDefault(__webpack_require__(48));\n\nvar _stringify = _interopRequireDefault(__webpack_require__(34));\n\nvar _find = _interopRequireDefault(__webpack_require__(104));\n\nvar _concat = _interopRequireDefault(__webpack_require__(29));\n\nvar _ = __webpack_require__(1);\n\nvar debug = __webpack_require__(60)('leancloud:query');\n\nvar AVError = __webpack_require__(40);\n\nvar _require = __webpack_require__(25),\n _request = _require._request,\n request = _require.request;\n\nvar _require2 = __webpack_require__(28),\n ensureArray = _require2.ensureArray,\n transformFetchOptions = _require2.transformFetchOptions,\n continueWhile = _require2.continueWhile;\n\nvar requires = function requires(value, message) {\n if (value === undefined) {\n throw new Error(message);\n }\n}; // AV.Query is a way to create a list of AV.Objects.\n\n\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 *

    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 * find method. For example, this sample code fetches all objects\n * of class MyClass. It calls a different function depending on\n * whether the fetch succeeded or not.\n *\n *

    \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   * });

    \n *\n *

    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 MyClass and id myId. It calls a\n * different function depending on whether the fetch succeeded or not.\n *\n *

    \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   * });

    \n *\n *

    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 MyClass\n *

    \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   * });

    \n */\n AV.Query = function (objectClass) {\n if (_.isString(objectClass)) {\n objectClass = AV.Object._getSubclass(objectClass);\n }\n\n this.objectClass = objectClass;\n this.className = objectClass.prototype.className;\n this._where = {};\n this._include = [];\n this._select = [];\n this._limit = -1; // negative limit means, do not send a limit\n\n this._skip = 0;\n this._defaultParams = {};\n };\n /**\n * Constructs a AV.Query that is the OR of the passed in queries. For\n * example:\n *
    var compoundQuery = AV.Query.or(query1, query2, query3);
    \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\n\n AV.Query.or = function () {\n var queries = _.toArray(arguments);\n\n var className = null;\n\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\n var query = new AV.Query(className);\n\n query._orQuery(queries);\n\n return query;\n };\n /**\n * Constructs a AV.Query that is the AND of the passed in queries. For\n * example:\n *
    var compoundQuery = AV.Query.and(query1, query2, query3);
    \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\n\n AV.Query.and = function () {\n var queries = _.toArray(arguments);\n\n var className = null;\n\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\n var query = new AV.Query(className);\n\n query._andQuery(queries);\n\n return query;\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\n\n AV.Query.doCloudQuery = function (cql, pvalues, options) {\n var params = {\n cql: cql\n };\n\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\n return request.then(function (response) {\n //query to process results.\n var query = new AV.Query(response.className);\n var results = (0, _map.default)(_).call(_, response.results, function (json) {\n var obj = query._newObject(response);\n\n if (obj._finishFetch) {\n obj._finishFetch(query._processResult(json), true);\n }\n\n return obj;\n });\n return {\n results: results,\n count: response.count,\n className: response.className\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\n\n AV.Query.fromJSON = function (_ref) {\n var className = _ref.className,\n where = _ref.where,\n include = _ref.include,\n select = _ref.select,\n includeACL = _ref.includeACL,\n limit = _ref.limit,\n skip = _ref.skip,\n order = _ref.order;\n\n if (typeof className !== 'string') {\n throw new TypeError('Invalid Query JSON, className must be a String.');\n }\n\n var query = new AV.Query(className);\n\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\n return query;\n };\n\n AV.Query._extend = AV._extend;\n\n _.extend(AV.Query.prototype,\n /** @lends AV.Query.prototype */\n {\n //hook to iterate result. Added by dennis.\n _processResult: function _processResult(obj) {\n return obj;\n },\n\n /**\n * Constructs an AV.Object whose id is already known by fetching data from\n * the server.\n *\n * @param {String} objectId The id of the object to be fetched.\n * @param {AuthOptions} options\n * @return {Promise.}\n */\n get: function get(objectId, options) {\n if (!_.isString(objectId)) {\n throw new Error('objectId must be a string');\n }\n\n if (objectId === '') {\n return _promise.default.reject(new AVError(AVError.OBJECT_NOT_FOUND, 'Object not found.'));\n }\n\n var obj = this._newObject();\n\n obj.id = objectId;\n\n var queryJSON = this._getParams();\n\n var fetchOptions = {};\n if ((0, _keys.default)(queryJSON)) fetchOptions.keys = (0, _keys.default)(queryJSON);\n if (queryJSON.include) fetchOptions.include = queryJSON.include;\n if (queryJSON.includeACL) fetchOptions.includeACL = queryJSON.includeACL;\n return _request('classes', this.className, objectId, 'GET', transformFetchOptions(fetchOptions), options).then(function (response) {\n if (_.isEmpty(response)) throw new AVError(AVError.OBJECT_NOT_FOUND, 'Object not found.');\n\n obj._finishFetch(obj.parse(response), true);\n\n return obj;\n });\n },\n\n /**\n * Returns a JSON representation of this query.\n * @return {Object}\n */\n toJSON: function toJSON() {\n var className = this.className,\n where = this._where,\n include = this._include,\n select = this._select,\n includeACL = this._includeACL,\n limit = this._limit,\n skip = this._skip,\n order = this._order;\n return {\n className: className,\n where: where,\n include: include,\n select: select,\n includeACL: includeACL,\n limit: limit,\n skip: skip,\n order: order\n };\n },\n _getParams: function _getParams() {\n var params = _.extend({}, this._defaultParams, {\n where: this._where\n });\n\n if (this._include.length > 0) {\n params.include = this._include.join(',');\n }\n\n if (this._select.length > 0) {\n params.keys = this._select.join(',');\n }\n\n if (this._includeACL !== undefined) {\n params.returnACL = this._includeACL;\n }\n\n if (this._limit >= 0) {\n params.limit = this._limit;\n }\n\n if (this._skip > 0) {\n params.skip = this._skip;\n }\n\n if (this._order !== undefined) {\n params.order = this._order;\n }\n\n return params;\n },\n _newObject: function _newObject(response) {\n var obj;\n\n if (response && response.className) {\n obj = new AV.Object(response.className);\n } else {\n obj = new this.objectClass();\n }\n\n return obj;\n },\n _createRequest: function _createRequest() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this._getParams();\n var options = arguments.length > 1 ? arguments[1] : undefined;\n var path = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : \"/classes/\".concat(this.className);\n\n if (encodeURIComponent((0, _stringify.default)(params)).length > 2000) {\n var body = {\n requests: [{\n method: 'GET',\n path: \"/1.1\".concat(path),\n params: params\n }]\n };\n return request({\n path: '/batch',\n method: 'POST',\n data: body,\n authOptions: options\n }).then(function (response) {\n var result = response[0];\n\n if (result.success) {\n return result.success;\n }\n\n var error = new AVError(result.error.code, result.error.error || 'Unknown batch error');\n throw error;\n });\n }\n\n return request({\n method: 'GET',\n path: path,\n query: params,\n authOptions: options\n });\n },\n _parseResponse: function _parseResponse(response) {\n var _this = this;\n\n return (0, _map.default)(_).call(_, response.results, function (json) {\n var obj = _this._newObject(response);\n\n if (obj._finishFetch) {\n obj._finishFetch(_this._processResult(json), true);\n }\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: function find(options) {\n var request = this._createRequest(undefined, options);\n\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: function findAndCount(options) {\n var _this2 = this;\n\n var params = this._getParams();\n\n params.count = 1;\n\n var request = this._createRequest(params, options);\n\n return request.then(function (response) {\n return [_this2._parseResponse(response), response.count];\n });\n },\n\n /**\n * 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.}\n * @example const testIterator = {\n * [Symbol.asyncIterator]() {\n * return new Query('Test').scan(undefined, { useMasterKey: true });\n * },\n * };\n * for await (const test of testIterator) {\n * console.log(test.id);\n * }\n */\n scan: function scan() {\n var _this3 = this;\n\n var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n orderedBy = _ref2.orderedBy,\n batchSize = _ref2.batchSize;\n\n var authOptions = arguments.length > 1 ? arguments[1] : undefined;\n\n var condition = this._getParams();\n\n debug('scan %O', condition);\n\n if (condition.order) {\n console.warn('The order of the query is ignored for Query#scan. Checkout the orderedBy option of Query#scan.');\n delete condition.order;\n }\n\n if (condition.skip) {\n console.warn('The skip option of the query is ignored for Query#scan.');\n delete condition.skip;\n }\n\n if (condition.limit) {\n console.warn('The limit option of the query is ignored for Query#scan.');\n delete condition.limit;\n }\n\n if (orderedBy) condition.scan_key = orderedBy;\n if (batchSize) condition.limit = batchSize;\n var cursor;\n var remainResults = [];\n return {\n next: function next() {\n if (remainResults.length) {\n return _promise.default.resolve({\n done: false,\n value: remainResults.shift()\n });\n }\n\n if (cursor === null) {\n return _promise.default.resolve({\n done: true\n });\n }\n\n return _request('scan/classes', _this3.className, null, 'GET', cursor ? _.extend({}, condition, {\n cursor: cursor\n }) : condition, authOptions).then(function (response) {\n cursor = response.cursor;\n\n if (response.results.length) {\n var results = _this3._parseResponse(response);\n\n results.forEach(function (result) {\n return remainResults.push(result);\n });\n }\n\n if (cursor === null && remainResults.length === 0) {\n return {\n done: true\n };\n }\n\n return {\n done: false,\n value: remainResults.shift()\n };\n });\n }\n };\n },\n\n /**\n * Delete objects retrieved by this query.\n * @param {AuthOptions} options\n * @return {Promise} A promise that is fulfilled when the save\n * completes.\n */\n destroyAll: function destroyAll(options) {\n var self = this;\n return (0, _find.default)(self).call(self, options).then(function (objects) {\n return AV.Object.destroyAll(objects, options);\n });\n },\n\n /**\n * Counts the number of objects that match this query.\n *\n * @param {AuthOptions} options\n * @return {Promise} A promise that is resolved with the count when\n * the query completes.\n */\n count: function count(options) {\n var params = this._getParams();\n\n params.limit = 0;\n params.count = 1;\n\n var request = this._createRequest(params, options);\n\n return request.then(function (response) {\n return response.count;\n });\n },\n\n /**\n * Retrieves at most one AV.Object that satisfies this query.\n *\n * @param {AuthOptions} options\n * @return {Promise} A promise that is resolved with the object when\n * the query completes.\n */\n first: function first(options) {\n var self = this;\n\n var params = this._getParams();\n\n params.limit = 1;\n\n var request = this._createRequest(params, options);\n\n return request.then(function (response) {\n return (0, _map.default)(_).call(_, response.results, function (json) {\n var obj = self._newObject();\n\n if (obj._finishFetch) {\n obj._finishFetch(self._processResult(json), true);\n }\n\n return obj;\n })[0];\n });\n },\n\n /**\n * Sets the number of results to skip before returning any results.\n * This is useful for pagination.\n * Default is to skip zero results.\n * @param {Number} n the number of results to skip.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n skip: function skip(n) {\n requires(n, 'undefined is not a valid skip value');\n this._skip = n;\n return this;\n },\n\n /**\n * Sets the limit of the number of results to return. The default limit is\n * 100, with a maximum of 1000 results being returned at a time.\n * @param {Number} n the number of results to limit to.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n limit: function limit(n) {\n requires(n, 'undefined is not a valid limit value');\n this._limit = n;\n return this;\n },\n\n /**\n * Add a constraint to the query that requires a particular key's value to\n * be equal to the provided value.\n * @param {String} key The key to check.\n * @param value The value that the AV.Object must contain.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n equalTo: function equalTo(key, value) {\n requires(key, 'undefined is not a valid key');\n requires(value, 'undefined is not a valid value');\n this._where[key] = AV._encode(value);\n return this;\n },\n\n /**\n * Helper for condition queries\n * @private\n */\n _addCondition: function _addCondition(key, condition, value) {\n requires(key, 'undefined is not a valid condition key');\n requires(condition, 'undefined is not a valid condition');\n requires(value, 'undefined is not a valid condition value'); // Check if we already have a condition\n\n if (!this._where[key]) {\n this._where[key] = {};\n }\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 * array key's length to be equal to the provided value.\n * @param {String} key The array key to check.\n * @param {number} value The length value.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n sizeEqualTo: function sizeEqualTo(key, value) {\n this._addCondition(key, '$size', value);\n\n return this;\n },\n\n /**\n * Add a constraint to the query that requires a particular key's value to\n * be not equal to the provided value.\n * @param {String} key The key to check.\n * @param value The value that must not be equalled.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n notEqualTo: function notEqualTo(key, value) {\n this._addCondition(key, '$ne', value);\n\n return this;\n },\n\n /**\n * Add a constraint to the query that requires a particular key's value to\n * be less than the provided value.\n * @param {String} key The key to check.\n * @param value The value that provides an upper bound.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n lessThan: function lessThan(key, value) {\n this._addCondition(key, '$lt', value);\n\n return this;\n },\n\n /**\n * Add a constraint to the query that requires a particular key's value to\n * be greater than the provided value.\n * @param {String} key The key to check.\n * @param value The value that provides an lower bound.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n greaterThan: function greaterThan(key, value) {\n this._addCondition(key, '$gt', value);\n\n return this;\n },\n\n /**\n * Add a constraint to the query that requires a particular key's value to\n * be less than or equal to the provided value.\n * @param {String} key The key to check.\n * @param value The value that provides an upper bound.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n lessThanOrEqualTo: function lessThanOrEqualTo(key, value) {\n this._addCondition(key, '$lte', value);\n\n return this;\n },\n\n /**\n * Add a constraint to the query that requires a particular key's value to\n * be greater than or equal to the provided value.\n * @param {String} key The key to check.\n * @param value The value that provides an lower bound.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n greaterThanOrEqualTo: function greaterThanOrEqualTo(key, value) {\n this._addCondition(key, '$gte', value);\n\n return this;\n },\n\n /**\n * Add a constraint to the query that requires a particular key's value to\n * be contained in the provided list of values.\n * @param {String} key The key to check.\n * @param {Array} values The values that will match.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n containedIn: function containedIn(key, values) {\n this._addCondition(key, '$in', values);\n\n return this;\n },\n\n /**\n * Add a constraint to the query that requires a particular key's value to\n * not be contained in the provided list of values.\n * @param {String} key The key to check.\n * @param {Array} values The values that will not match.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n notContainedIn: function notContainedIn(key, values) {\n this._addCondition(key, '$nin', values);\n\n return this;\n },\n\n /**\n * Add a constraint to the query that requires a particular key's value to\n * contain each one of the provided list of values.\n * @param {String} key The key to check. This key's value must be an array.\n * @param {Array} values The values that will match.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n containsAll: function containsAll(key, values) {\n this._addCondition(key, '$all', values);\n\n return this;\n },\n\n /**\n * Add a constraint for finding objects that contain the given key.\n * @param {String} key The key that should exist.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n exists: function exists(key) {\n this._addCondition(key, '$exists', true);\n\n return this;\n },\n\n /**\n * Add a constraint for finding objects that do not contain a given key.\n * @param {String} key The key that should not exist\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n doesNotExist: function doesNotExist(key) {\n this._addCondition(key, '$exists', false);\n\n return this;\n },\n\n /**\n * Add a regular expression constraint for finding string values that match\n * the provided regular expression.\n * This may be slow for large datasets.\n * @param {String} key The key that the string to match is stored in.\n * @param {RegExp} regex The regular expression pattern to match.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n matches: function matches(key, regex, modifiers) {\n this._addCondition(key, '$regex', regex);\n\n if (!modifiers) {\n modifiers = '';\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\n\n if (regex.ignoreCase) {\n modifiers += 'i';\n }\n\n if (regex.multiline) {\n modifiers += 'm';\n }\n\n if (modifiers && modifiers.length) {\n this._addCondition(key, '$options', modifiers);\n }\n\n return this;\n },\n\n /**\n * Add a constraint that requires that a key's value matches a AV.Query\n * constraint.\n * @param {String} key The key that the contains the object to match the\n * query.\n * @param {AV.Query} query The query that should match.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n matchesQuery: function matchesQuery(key, query) {\n var queryJSON = query._getParams();\n\n queryJSON.className = query.className;\n\n this._addCondition(key, '$inQuery', queryJSON);\n\n return this;\n },\n\n /**\n * Add a constraint that requires that a key's value not matches a\n * AV.Query constraint.\n * @param {String} key The key that the contains the object to match the\n * query.\n * @param {AV.Query} query The query that should not match.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n doesNotMatchQuery: function doesNotMatchQuery(key, query) {\n var queryJSON = query._getParams();\n\n queryJSON.className = query.className;\n\n this._addCondition(key, '$notInQuery', queryJSON);\n\n return this;\n },\n\n /**\n * Add a constraint that requires that a key's value matches a value in\n * an object returned by a different AV.Query.\n * @param {String} key The key that contains the value that is being\n * matched.\n * @param {String} queryKey The key in the objects returned by the query to\n * match against.\n * @param {AV.Query} query The query to run.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n matchesKeyInQuery: function matchesKeyInQuery(key, queryKey, query) {\n var queryJSON = query._getParams();\n\n queryJSON.className = query.className;\n\n this._addCondition(key, '$select', {\n key: queryKey,\n query: queryJSON\n });\n\n return this;\n },\n\n /**\n * Add a constraint that requires that a key's value not match a value in\n * an object returned by a different AV.Query.\n * @param {String} key The key that contains the value that is being\n * excluded.\n * @param {String} queryKey The key in the objects returned by the query to\n * match against.\n * @param {AV.Query} query The query to run.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n doesNotMatchKeyInQuery: function doesNotMatchKeyInQuery(key, queryKey, query) {\n var queryJSON = query._getParams();\n\n queryJSON.className = query.className;\n\n this._addCondition(key, '$dontSelect', {\n key: queryKey,\n query: queryJSON\n });\n\n return this;\n },\n\n /**\n * Add constraint that at least one of the passed in queries matches.\n * @param {Array} queries\n * @return {AV.Query} Returns the query, so you can chain this call.\n * @private\n */\n _orQuery: function _orQuery(queries) {\n var queryJSON = (0, _map.default)(_).call(_, queries, function (q) {\n return q._getParams().where;\n });\n this._where.$or = queryJSON;\n return this;\n },\n\n /**\n * Add constraint that both of the passed in queries matches.\n * @param {Array} queries\n * @return {AV.Query} Returns the query, so you can chain this call.\n * @private\n */\n _andQuery: function _andQuery(queries) {\n var queryJSON = (0, _map.default)(_).call(_, queries, function (q) {\n return q._getParams().where;\n });\n this._where.$and = queryJSON;\n return this;\n },\n\n /**\n * Converts a string into a regex that matches it.\n * Surrounding with \\Q .. \\E does this, we just need to escape \\E's in\n * the text separately.\n * @private\n */\n _quote: function _quote(s) {\n return '\\\\Q' + s.replace('\\\\E', '\\\\E\\\\\\\\E\\\\Q') + '\\\\E';\n },\n\n /**\n * Add a constraint for finding string values that contain a provided\n * string. This may be slow for large datasets.\n * @param {String} key The key that the string to match is stored in.\n * @param {String} substring The substring that the value must contain.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n contains: function contains(key, value) {\n this._addCondition(key, '$regex', this._quote(value));\n\n return this;\n },\n\n /**\n * Add a constraint for finding string values that start with a provided\n * string. This query will use the backend index, so it will be fast even\n * for large datasets.\n * @param {String} key The key that the string to match is stored in.\n * @param {String} prefix The substring that the value must start with.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n startsWith: function startsWith(key, value) {\n this._addCondition(key, '$regex', '^' + this._quote(value));\n\n return this;\n },\n\n /**\n * Add a constraint for finding string values that end with a provided\n * string. This will be slow for large datasets.\n * @param {String} key The key that the string to match is stored in.\n * @param {String} suffix The substring that the value must end with.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n endsWith: function endsWith(key, value) {\n this._addCondition(key, '$regex', this._quote(value) + '$');\n\n return this;\n },\n\n /**\n * Sorts the results in ascending order by the given key.\n *\n * @param {String} key The key to order by.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n ascending: function ascending(key) {\n requires(key, 'undefined is not a valid key');\n this._order = key;\n return this;\n },\n\n /**\n * Also sorts the results in ascending order by the given key. The previous sort keys have\n * precedence over this key.\n *\n * @param {String} key The key to order by\n * @return {AV.Query} Returns the query so you can chain this call.\n */\n addAscending: function addAscending(key) {\n requires(key, 'undefined is not a valid key');\n if (this._order) this._order += ',' + key;else this._order = key;\n return this;\n },\n\n /**\n * Sorts the results in descending order by the given key.\n *\n * @param {String} key The key to order by.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n descending: function descending(key) {\n requires(key, 'undefined is not a valid key');\n this._order = '-' + key;\n return this;\n },\n\n /**\n * Also sorts the results in descending order by the given key. The previous sort keys have\n * precedence over this key.\n *\n * @param {String} key The key to order by\n * @return {AV.Query} Returns the query so you can chain this call.\n */\n addDescending: function addDescending(key) {\n requires(key, 'undefined is not a valid key');\n if (this._order) this._order += ',-' + key;else this._order = '-' + key;\n return this;\n },\n\n /**\n * Add a proximity based constraint for finding objects with key point\n * values near the point given.\n * @param {String} key The key that the AV.GeoPoint is stored in.\n * @param {AV.GeoPoint} point The reference AV.GeoPoint that is used.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n near: function near(key, point) {\n if (!(point instanceof AV.GeoPoint)) {\n // Try to cast it to a GeoPoint, so that near(\"loc\", [20,30]) works.\n point = new AV.GeoPoint(point);\n }\n\n this._addCondition(key, '$nearSphere', point);\n\n return this;\n },\n\n /**\n * Add a proximity based constraint for finding objects with key point\n * values near the point given and within the maximum distance given.\n * @param {String} key The key that the AV.GeoPoint is stored in.\n * @param {AV.GeoPoint} point The reference AV.GeoPoint that is used.\n * @param maxDistance Maximum distance (in radians) of results to return.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n withinRadians: function withinRadians(key, point, distance) {\n this.near(key, point);\n\n this._addCondition(key, '$maxDistance', distance);\n\n return this;\n },\n\n /**\n * Add a proximity based constraint for finding objects with key point\n * values near the point given and within the maximum distance given.\n * Radius of earth used is 3958.8 miles.\n * @param {String} key The key that the AV.GeoPoint is stored in.\n * @param {AV.GeoPoint} point The reference AV.GeoPoint that is used.\n * @param {Number} maxDistance Maximum distance (in miles) of results to\n * return.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n withinMiles: function withinMiles(key, point, distance) {\n return this.withinRadians(key, point, distance / 3958.8);\n },\n\n /**\n * Add a proximity based constraint for finding objects with key point\n * values near the point given and within the maximum distance given.\n * Radius of earth used is 6371.0 kilometers.\n * @param {String} key The key that the AV.GeoPoint is stored in.\n * @param {AV.GeoPoint} point The reference AV.GeoPoint that is used.\n * @param {Number} maxDistance Maximum distance (in kilometers) of results\n * to return.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n withinKilometers: function withinKilometers(key, point, distance) {\n return this.withinRadians(key, point, distance / 6371.0);\n },\n\n /**\n * Add a constraint to the query that requires a particular key's\n * coordinates be contained within a given rectangular geographic bounding\n * box.\n * @param {String} key The key to be constrained.\n * @param {AV.GeoPoint} southwest\n * The lower-left inclusive corner of the box.\n * @param {AV.GeoPoint} northeast\n * The upper-right inclusive corner of the box.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n withinGeoBox: function withinGeoBox(key, southwest, northeast) {\n if (!(southwest instanceof AV.GeoPoint)) {\n southwest = new AV.GeoPoint(southwest);\n }\n\n if (!(northeast instanceof AV.GeoPoint)) {\n northeast = new AV.GeoPoint(northeast);\n }\n\n this._addCondition(key, '$within', {\n $box: [southwest, northeast]\n });\n\n return this;\n },\n\n /**\n * Include nested AV.Objects for the provided key. You can use dot\n * notation to specify which fields in the included object are also fetch.\n * @param {String[]} keys The name of the key to include.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n include: function include(keys) {\n var _this4 = this;\n\n requires(keys, 'undefined is not a valid key');\n\n _.forEach(arguments, function (keys) {\n var _context;\n\n _this4._include = (0, _concat.default)(_context = _this4._include).call(_context, ensureArray(keys));\n });\n\n return this;\n },\n\n /**\n * Include the ACL.\n * @param {Boolean} [value=true] Whether to include the ACL\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n includeACL: function includeACL() {\n var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n this._includeACL = value;\n return this;\n },\n\n /**\n * Restrict the fields of the returned AV.Objects to include only the\n * provided keys. If this is called multiple times, then all of the keys\n * specified in each of the calls will be included.\n * @param {String[]} keys The names of the keys to include.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n select: function select(keys) {\n var _this5 = this;\n\n requires(keys, 'undefined is not a valid key');\n\n _.forEach(arguments, function (keys) {\n var _context2;\n\n _this5._select = (0, _concat.default)(_context2 = _this5._select).call(_context2, ensureArray(keys));\n });\n\n return this;\n },\n\n /**\n * Iterates over each result of a query, calling a callback for each one. If\n * the callback returns a promise, the iteration will not continue until\n * that promise has been fulfilled. If the callback returns a rejected\n * promise, then iteration will stop with that error. The items are\n * processed in an unspecified order. The query may not have any sort order,\n * and may not use limit or skip.\n * @param callback {Function} Callback that will be called with each result\n * of the query.\n * @return {Promise} A promise that will be fulfilled once the\n * iteration has completed.\n */\n each: function each(callback) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (this._order || this._skip || this._limit >= 0) {\n var error = new Error('Cannot iterate on a query with sort, skip, or limit.');\n return _promise.default.reject(error);\n }\n\n var query = new AV.Query(this.objectClass); // We can override the batch size from the options.\n // This is undocumented, but useful for testing.\n\n query._limit = options.batchSize || 100;\n query._where = _.clone(this._where);\n query._include = _.clone(this._include);\n query.ascending('objectId');\n var finished = false;\n return continueWhile(function () {\n return !finished;\n }, function () {\n return (0, _find.default)(query).call(query, options).then(function (results) {\n var callbacksDone = _promise.default.resolve();\n\n _.each(results, function (result) {\n callbacksDone = callbacksDone.then(function () {\n return callback(result);\n });\n });\n\n return callbacksDone.then(function () {\n if (results.length >= query._limit) {\n query.greaterThan('objectId', results[results.length - 1].id);\n } else {\n finished = true;\n }\n });\n });\n });\n },\n\n /**\n * Subscribe the changes of this query.\n *\n * LiveQuery is not included in the default bundle: {@link https://url.leanapp.cn/enable-live-query}.\n *\n * @since 3.0.0\n * @return {AV.LiveQuery} An eventemitter which can be used to get LiveQuery updates;\n */\n subscribe: function subscribe(options) {\n return AV.LiveQuery.init(this, options);\n }\n });\n\n AV.FriendShipQuery = AV.Query._extend({\n _newObject: function _newObject() {\n var UserClass = AV.Object._getSubclass('_User');\n\n return new UserClass();\n },\n _processResult: function _processResult(json) {\n if (json && json[this._friendshipTag]) {\n var user = json[this._friendshipTag];\n\n if (user.__type === 'Pointer' && user.className === '_User') {\n delete user.__type;\n delete user.className;\n }\n\n return user;\n } else {\n return null;\n }\n }\n });\n};\n\n/***/ }),\n/* 530 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(2);\n\nvar _promise = _interopRequireDefault(__webpack_require__(10));\n\nvar _keys = _interopRequireDefault(__webpack_require__(48));\n\nvar _ = __webpack_require__(1);\n\nvar EventEmitter = __webpack_require__(218);\n\nvar _require = __webpack_require__(28),\n inherits = _require.inherits;\n\nvar _require2 = __webpack_require__(25),\n request = _require2.request;\n\nvar subscribe = function subscribe(queryJSON, subscriptionId) {\n return request({\n method: 'POST',\n path: '/LiveQuery/subscribe',\n data: {\n query: queryJSON,\n id: subscriptionId\n }\n });\n};\n\nmodule.exports = function (AV) {\n var requireRealtime = function requireRealtime() {\n if (!AV._config.realtime) {\n throw new Error('LiveQuery not supported. Please use the LiveQuery bundle. https://url.leanapp.cn/enable-live-query');\n }\n };\n /**\n * @class\n * A LiveQuery, created by {@link AV.Query#subscribe} is an EventEmitter notifies changes of the Query.\n * @since 3.0.0\n */\n\n\n AV.LiveQuery = inherits(EventEmitter,\n /** @lends AV.LiveQuery.prototype */\n {\n constructor: function constructor(id, client, queryJSON, subscriptionId) {\n var _this = this;\n\n EventEmitter.apply(this);\n this.id = id;\n this._client = client;\n\n this._client.register(this);\n\n this._queryJSON = queryJSON;\n this._subscriptionId = subscriptionId;\n this._onMessage = this._dispatch.bind(this);\n\n this._onReconnect = function () {\n subscribe(_this._queryJSON, _this._subscriptionId).catch(function (error) {\n return console.error(\"LiveQuery resubscribe error: \".concat(error.message));\n });\n };\n\n client.on('message', this._onMessage);\n client.on('reconnect', this._onReconnect);\n },\n _dispatch: function _dispatch(message) {\n var _this2 = this;\n\n message.forEach(function (_ref) {\n var op = _ref.op,\n object = _ref.object,\n queryId = _ref.query_id,\n updatedKeys = _ref.updatedKeys;\n if (queryId !== _this2.id) return;\n var target = AV.parseJSON(_.extend({\n __type: object.className === '_File' ? 'File' : 'Object'\n }, object));\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 /**\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 /**\n * An existing AV.Object which fulfills the Query is updated and now it doesn't fulfill the Query.\n * @event AV.LiveQuery#leave\n * @param {AV.Object|AV.File} target updated object\n * @param {String[]} updatedKeys updated keys\n */\n _this2.emit(op, target, updatedKeys);\n } else {\n /**\n * A new AV.Object which fulfills the Query you subscribe is created.\n * @event AV.LiveQuery#create\n * @param {AV.Object|AV.File} target updated object\n */\n\n /**\n * An existing AV.Object which fulfills the Query you subscribe is deleted.\n * @event AV.LiveQuery#delete\n * @param {AV.Object|AV.File} target updated object\n */\n _this2.emit(op, target);\n }\n });\n },\n\n /**\n * unsubscribe the query\n *\n * @return {Promise}\n */\n unsubscribe: function unsubscribe() {\n var client = this._client;\n client.off('message', this._onMessage);\n client.off('reconnect', this._onReconnect);\n client.deregister(this);\n return request({\n method: 'POST',\n path: '/LiveQuery/unsubscribe',\n data: {\n id: client.id,\n query_id: this.id\n }\n });\n }\n },\n /** @lends AV.LiveQuery */\n {\n init: function init(query) {\n var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref2$subscriptionId = _ref2.subscriptionId,\n userDefinedSubscriptionId = _ref2$subscriptionId === void 0 ? AV._getSubscriptionId() : _ref2$subscriptionId;\n\n requireRealtime();\n if (!(query instanceof AV.Query)) throw new TypeError('LiveQuery must be inited with a Query');\n return _promise.default.resolve(userDefinedSubscriptionId).then(function (subscriptionId) {\n return AV._config.realtime.createLiveQueryClient(subscriptionId).then(function (liveQueryClient) {\n var _query$_getParams = query._getParams(),\n where = _query$_getParams.where,\n keys = (0, _keys.default)(_query$_getParams),\n returnACL = _query$_getParams.returnACL;\n\n var queryJSON = {\n where: where,\n keys: keys,\n returnACL: returnACL,\n className: query.className\n };\n var promise = subscribe(queryJSON, subscriptionId).then(function (_ref3) {\n var queryId = _ref3.query_id;\n return new AV.LiveQuery(queryId, liveQueryClient, queryJSON, subscriptionId);\n }).finally(function () {\n liveQueryClient.deregister(promise);\n });\n liveQueryClient.register(promise);\n return promise;\n });\n });\n },\n\n /**\n * Pause the LiveQuery connection. This is useful to deactivate the SDK when the app is swtiched to background.\n * @static\n * @return void\n */\n pause: function pause() {\n requireRealtime();\n return AV._config.realtime.pause();\n },\n\n /**\n * Resume the LiveQuery connection. All subscriptions will be restored after reconnection.\n * @static\n * @return void\n */\n resume: function resume() {\n requireRealtime();\n return AV._config.realtime.resume();\n }\n });\n};\n\n/***/ }),\n/* 531 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _ = __webpack_require__(1);\n\nvar _require = __webpack_require__(28),\n tap = _require.tap;\n\nmodule.exports = function (AV) {\n /**\n * @class\n * @example\n * AV.Captcha.request().then(captcha => {\n * captcha.bind({\n * textInput: 'code', // the id for textInput\n * image: 'captcha',\n * verifyButton: 'verify',\n * }, {\n * success: (validateCode) => {}, // next step\n * error: (error) => {}, // present error.message to user\n * });\n * });\n */\n AV.Captcha = function Captcha(options, authOptions) {\n this._options = options;\n this._authOptions = authOptions;\n /**\n * The image url of the captcha\n * @type string\n */\n\n this.url = undefined;\n /**\n * The captchaToken of the captcha.\n * @type string\n */\n\n this.captchaToken = undefined;\n /**\n * The validateToken of the captcha.\n * @type string\n */\n\n this.validateToken = undefined;\n };\n /**\n * Refresh the captcha\n * @return {Promise.} a new capcha url\n */\n\n\n AV.Captcha.prototype.refresh = function refresh() {\n var _this = this;\n\n return AV.Cloud._requestCaptcha(this._options, this._authOptions).then(function (_ref) {\n var captchaToken = _ref.captchaToken,\n url = _ref.url;\n\n _.extend(_this, {\n captchaToken: captchaToken,\n url: url\n });\n\n return url;\n });\n };\n /**\n * Verify the captcha\n * @param {String} code The code from user input\n * @return {Promise.} validateToken if the code is valid\n */\n\n\n AV.Captcha.prototype.verify = function verify(code) {\n var _this2 = this;\n\n return AV.Cloud.verifyCaptcha(code, this.captchaToken).then(tap(function (validateToken) {\n return _this2.validateToken = validateToken;\n }));\n };\n\n if (undefined === 'Browser') {\n /**\n * Bind the captcha to HTMLElements. ONLY AVAILABLE in browsers.\n * @param [elements]\n * @param {String|HTMLInputElement} [elements.textInput] An input element typed text, or the id for the element.\n * @param {String|HTMLImageElement} [elements.image] An image element, or the id for the element.\n * @param {String|HTMLElement} [elements.verifyButton] A button element, or the id for the element.\n * @param [callbacks]\n * @param {Function} [callbacks.success] Success callback will be called if the code is verified. The param `validateCode` can be used for further SMS request.\n * @param {Function} [callbacks.error] Error callback will be called if something goes wrong, detailed in param `error.message`.\n */\n AV.Captcha.prototype.bind = function bind(_ref2, _ref3) {\n var _this3 = this;\n\n var textInput = _ref2.textInput,\n image = _ref2.image,\n verifyButton = _ref2.verifyButton;\n var success = _ref3.success,\n error = _ref3.error;\n\n if (typeof textInput === 'string') {\n textInput = document.getElementById(textInput);\n if (!textInput) throw new Error(\"textInput with id \".concat(textInput, \" not found\"));\n }\n\n if (typeof image === 'string') {\n image = document.getElementById(image);\n if (!image) throw new Error(\"image with id \".concat(image, \" not found\"));\n }\n\n if (typeof verifyButton === 'string') {\n verifyButton = document.getElementById(verifyButton);\n if (!verifyButton) throw new Error(\"verifyButton with id \".concat(verifyButton, \" not found\"));\n }\n\n this.__refresh = function () {\n return _this3.refresh().then(function (url) {\n image.src = url;\n\n if (textInput) {\n textInput.value = '';\n textInput.focus();\n }\n }).catch(function (err) {\n return console.warn(\"refresh captcha fail: \".concat(err.message));\n });\n };\n\n if (image) {\n this.__image = image;\n image.src = this.url;\n image.addEventListener('click', this.__refresh);\n }\n\n this.__verify = function () {\n var code = textInput.value;\n\n _this3.verify(code).catch(function (err) {\n _this3.__refresh();\n\n throw err;\n }).then(success, error).catch(function (err) {\n return console.warn(\"verify captcha fail: \".concat(err.message));\n });\n };\n\n if (textInput && verifyButton) {\n this.__verifyButton = verifyButton;\n verifyButton.addEventListener('click', this.__verify);\n }\n };\n /**\n * unbind the captcha from HTMLElements. ONLY AVAILABLE in browsers.\n */\n\n\n AV.Captcha.prototype.unbind = function unbind() {\n if (this.__image) this.__image.removeEventListener('click', this.__refresh);\n if (this.__verifyButton) this.__verifyButton.removeEventListener('click', this.__verify);\n };\n }\n /**\n * 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.}\n */\n\n\n AV.Captcha.request = function (options, authOptions) {\n var captcha = new AV.Captcha(options, authOptions);\n return captcha.refresh().then(function () {\n return captcha;\n });\n };\n};\n\n/***/ }),\n/* 532 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(2);\n\nvar _promise = _interopRequireDefault(__webpack_require__(10));\n\nvar _ = __webpack_require__(1);\n\nvar _require = __webpack_require__(25),\n _request = _require._request,\n request = _require.request;\n\nmodule.exports = function (AV) {\n /**\n * Contains functions for calling and declaring\n *

    \n * Some functions are only available from Cloud Code.\n *

    \n *\n * @namespace\n * @borrows AV.Captcha.request as requestCaptcha\n */\n AV.Cloud = AV.Cloud || {};\n\n _.extend(AV.Cloud,\n /** @lends AV.Cloud */\n {\n /**\n * Makes a call to a cloud function.\n * @param {String} name The function name.\n * @param {Object} [data] The parameters to send to the cloud function.\n * @param {AuthOptions} [options]\n * @return {Promise} A promise that will be resolved with the result\n * of the function.\n */\n run: function run(name, data, options) {\n return request({\n service: 'engine',\n method: 'POST',\n path: \"/functions/\".concat(name),\n data: AV._encode(data, null, true),\n authOptions: options\n }).then(function (resp) {\n return AV._decode(resp).result;\n });\n },\n\n /**\n * Makes a call to a cloud function, you can send {AV.Object} as param or a field of param; the response\n * from server will also be parsed as an {AV.Object}, array of {AV.Object}, or object includes {AV.Object}\n * @param {String} name The function name.\n * @param {Object} [data] The parameters to send to the cloud function.\n * @param {AuthOptions} [options]\n * @return {Promise} A promise that will be resolved with the result of the function.\n */\n rpc: function rpc(name, data, options) {\n if (_.isArray(data)) {\n return _promise.default.reject(new Error(\"Can't pass Array as the param of rpc function in JavaScript SDK.\"));\n }\n\n return request({\n service: 'engine',\n method: 'POST',\n path: \"/call/\".concat(name),\n data: AV._encodeObjectOrArray(data),\n authOptions: options\n }).then(function (resp) {\n return AV._decode(resp).result;\n });\n },\n\n /**\n * Make a call to request server date time.\n * @return {Promise.} A promise that will be resolved with the result\n * of the function.\n * @since 0.5.9\n */\n getServerDate: function getServerDate() {\n return _request('date', null, null, 'GET').then(function (resp) {\n return AV._decode(resp);\n });\n },\n\n /**\n * Makes a call to request an sms code for operation verification.\n * @param {String|Object} data The mobile phone number string or a JSON\n * object that contains mobilePhoneNumber,template,sign,op,ttl,name etc.\n * @param {String} data.mobilePhoneNumber\n * @param {String} [data.template] sms template name\n * @param {String} [data.sign] sms signature name\n * @param {String} [data.smsType] sending code by `sms` (default) or `voice` call\n * @param {SMSAuthOptions} [options]\n * @return {Promise} A promise that will be resolved if the request succeed\n */\n requestSmsCode: function requestSmsCode(data) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (_.isString(data)) {\n data = {\n mobilePhoneNumber: data\n };\n }\n\n if (!data.mobilePhoneNumber) {\n throw new Error('Missing mobilePhoneNumber.');\n }\n\n if (options.validateToken) {\n data = _.extend({}, data, {\n validate_token: options.validateToken\n });\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: function verifySmsCode(code, phone) {\n if (!code) throw new Error('Missing sms code.');\n var params = {};\n\n if (_.isString(phone)) {\n params['mobilePhoneNumber'] = phone;\n }\n\n return _request('verifySmsCode', code, null, 'POST', params);\n },\n _requestCaptcha: function _requestCaptcha(options, authOptions) {\n return _request('requestCaptcha', null, null, 'GET', options, authOptions).then(function (_ref) {\n var url = _ref.captcha_url,\n captchaToken = _ref.captcha_token;\n return {\n captchaToken: captchaToken,\n url: url\n };\n });\n },\n\n /**\n * 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.} validateToken if the code is valid\n */\n verifyCaptcha: function verifyCaptcha(code, captchaToken) {\n return _request('verifyCaptcha', null, null, 'POST', {\n captcha_code: code,\n captcha_token: captchaToken\n }).then(function (_ref2) {\n var validateToken = _ref2.validate_token;\n return validateToken;\n });\n }\n });\n};\n\n/***/ }),\n/* 533 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar request = __webpack_require__(25).request;\n\nmodule.exports = function (AV) {\n AV.Installation = AV.Object.extend('_Installation');\n /**\n * @namespace\n */\n\n AV.Push = AV.Push || {};\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\n AV.Push.send = function (data, options) {\n if (data.where) {\n data.where = data.where._getParams().where;\n }\n\n if (data.where && data.cql) {\n throw new Error(\"Both where and cql can't be set\");\n }\n\n if (data.push_time) {\n data.push_time = data.push_time.toJSON();\n }\n\n if (data.expiration_time) {\n data.expiration_time = data.expiration_time.toJSON();\n }\n\n if (data.expiration_time && data.expiration_interval) {\n throw new Error(\"Both expiration_time and expiration_interval can't be set\");\n }\n\n return request({\n service: 'push',\n method: 'POST',\n path: '/push',\n data: data,\n authOptions: options\n });\n };\n};\n\n/***/ }),\n/* 534 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(2);\n\nvar _promise = _interopRequireDefault(__webpack_require__(10));\n\nvar _typeof2 = _interopRequireDefault(__webpack_require__(135));\n\nvar _ = __webpack_require__(1);\n\nvar AVRequest = __webpack_require__(25)._request;\n\nvar _require = __webpack_require__(28),\n getSessionToken = _require.getSessionToken;\n\nmodule.exports = function (AV) {\n var getUser = function getUser() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var sessionToken = getSessionToken(options);\n\n if (sessionToken) {\n return AV.User._fetchUserBySessionToken(getSessionToken(options));\n }\n\n return AV.User.currentAsync();\n };\n\n var getUserPointer = function getUserPointer(options) {\n return getUser(options).then(function (currUser) {\n return AV.Object.createWithoutData('_User', currUser.id)._toPointer();\n });\n };\n /**\n * Contains functions to deal with Status in LeanCloud.\n * @class\n */\n\n\n AV.Status = function (imageUrl, message) {\n this.data = {};\n this.inboxType = 'default';\n this.query = null;\n\n if (imageUrl && (0, _typeof2.default)(imageUrl) === 'object') {\n this.data = imageUrl;\n } else {\n if (imageUrl) {\n this.data.image = imageUrl;\n }\n\n if (message) {\n this.data.message = message;\n }\n }\n\n return this;\n };\n\n _.extend(AV.Status.prototype,\n /** @lends AV.Status.prototype */\n {\n /**\n * Gets the value of an attribute in status data.\n * @param {String} attr The string name of an attribute.\n */\n get: function get(attr) {\n return this.data[attr];\n },\n\n /**\n * Sets a hash of model attributes on the status data.\n * @param {String} key The key to set.\n * @param {any} value The value to give it.\n */\n set: function set(key, value) {\n this.data[key] = value;\n return this;\n },\n\n /**\n * Destroy this status,then it will not be avaiable in other user's inboxes.\n * @param {AuthOptions} options\n * @return {Promise} A promise that is fulfilled when the destroy\n * completes.\n */\n destroy: function destroy(options) {\n if (!this.id) return _promise.default.reject(new Error('The status id is not exists.'));\n var request = AVRequest('statuses', null, this.id, 'DELETE', options);\n return request;\n },\n\n /**\n * Cast the AV.Status object to an AV.Object pointer.\n * @return {AV.Object} A AV.Object pointer.\n */\n toObject: function toObject() {\n if (!this.id) return null;\n return AV.Object.createWithoutData('_Status', this.id);\n },\n _getDataJSON: function _getDataJSON() {\n var json = _.clone(this.data);\n\n return AV._encode(json);\n },\n\n /**\n * Send a status by a AV.Query object.\n * @since 0.3.0\n * @param {AuthOptions} options\n * @return {Promise} A promise that is fulfilled when the send\n * completes.\n * @example\n * // send a status to male users\n * var status = new AVStatus('image url', 'a message');\n * status.query = new AV.Query('_User');\n * status.query.equalTo('gender', 'male');\n * status.send().then(function(){\n * //send status successfully.\n * }, function(err){\n * //an error threw.\n * console.dir(err);\n * });\n */\n send: function send() {\n var _this = this;\n\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (!getSessionToken(options) && !AV.User.current()) {\n throw new Error('Please signin an user.');\n }\n\n if (!this.query) {\n return AV.Status.sendStatusToFollowers(this, options);\n }\n\n return getUserPointer(options).then(function (currUser) {\n var query = _this.query._getParams();\n\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 return AVRequest('statuses', null, null, 'POST', data, options);\n }).then(function (response) {\n _this.id = response.objectId;\n _this.createdAt = AV._parseDate(response.createdAt);\n return _this;\n });\n },\n _finishFetch: function _finishFetch(serverData) {\n this.id = serverData.objectId;\n this.createdAt = AV._parseDate(serverData.createdAt);\n this.updatedAt = AV._parseDate(serverData.updatedAt);\n this.messageId = serverData.messageId;\n delete serverData.messageId;\n delete serverData.objectId;\n delete serverData.createdAt;\n delete serverData.updatedAt;\n this.data = AV._decode(serverData);\n }\n });\n /**\n * 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\n\n AV.Status.sendStatusToFollowers = function (status) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (!getSessionToken(options) && !AV.User.current()) {\n throw new Error('Please signin an user.');\n }\n\n return getUserPointer(options).then(function (currUser) {\n var query = {};\n query.className = '_Follower';\n query.keys = 'follower';\n query.where = {\n user: currUser\n };\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 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 *

    Send a status from current signined user to other user's private status inbox.

    \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\n\n AV.Status.sendPrivateStatus = function (status, target) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n if (!getSessionToken(options) && !AV.User.current()) {\n throw new Error('Please signin an user.');\n }\n\n if (!target) {\n throw new Error('Invalid target user.');\n }\n\n var userObjectId = _.isString(target) ? target : target.id;\n\n if (!userObjectId) {\n throw new Error('Invalid target user.');\n }\n\n return getUserPointer(options).then(function (currUser) {\n var query = {};\n query.className = '_User';\n query.where = {\n objectId: userObjectId\n };\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 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 * 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\n\n AV.Status.countUnreadStatuses = function (owner) {\n var inboxType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'default';\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n if (!_.isString(inboxType)) options = inboxType;\n\n if (!getSessionToken(options) && owner == null && !AV.User.current()) {\n throw new Error('Please signin an user or pass the owner objectId.');\n }\n\n return _promise.default.resolve(owner || getUser(options)).then(function (owner) {\n var params = {};\n params.inboxType = AV._encode(inboxType);\n params.owner = AV._encode(owner);\n return AVRequest('subscribe/statuses/count', null, null, 'GET', params, options);\n });\n };\n /**\n * 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\n\n AV.Status.resetUnreadCount = function (owner) {\n var inboxType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'default';\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n if (!_.isString(inboxType)) options = inboxType;\n\n if (!getSessionToken(options) && owner == null && !AV.User.current()) {\n throw new Error('Please signin an user or pass the owner objectId.');\n }\n\n return _promise.default.resolve(owner || getUser(options)).then(function (owner) {\n var params = {};\n params.inboxType = AV._encode(inboxType);\n params.owner = AV._encode(owner);\n return AVRequest('subscribe/statuses/resetUnreadCount', null, null, 'POST', params, options);\n });\n };\n /**\n * 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\n\n AV.Status.statusQuery = function (source) {\n var query = new AV.Query('_Status');\n\n if (source) {\n query.equalTo('source', source);\n }\n\n return query;\n };\n /**\n *

    AV.InboxQuery defines a query that is used to fetch somebody's inbox statuses.

    \n * @class\n */\n\n\n AV.InboxQuery = AV.Query._extend(\n /** @lends AV.InboxQuery.prototype */\n {\n _objectClass: AV.Status,\n _sinceId: 0,\n _maxId: 0,\n _inboxType: 'default',\n _owner: null,\n _newObject: function _newObject() {\n return new AV.Status();\n },\n _createRequest: function _createRequest(params, options) {\n return AV.InboxQuery.__super__._createRequest.call(this, params, options, '/subscribe/statuses');\n },\n\n /**\n * Sets the messageId of results to skip before returning any results.\n * This is useful for pagination.\n * Default is zero.\n * @param {Number} n the mesage id.\n * @return {AV.InboxQuery} Returns the query, so you can chain this call.\n */\n sinceId: function sinceId(id) {\n this._sinceId = id;\n return this;\n },\n\n /**\n * Sets the maximal messageId of results。\n * This is useful for pagination.\n * Default is zero that is no limition.\n * @param {Number} n the mesage id.\n * @return {AV.InboxQuery} Returns the query, so you can chain this call.\n */\n maxId: function maxId(id) {\n this._maxId = id;\n return this;\n },\n\n /**\n * Sets the owner of the querying inbox.\n * @param {AV.User} owner The inbox owner.\n * @return {AV.InboxQuery} Returns the query, so you can chain this call.\n */\n owner: function owner(_owner) {\n this._owner = _owner;\n return this;\n },\n\n /**\n * Sets the querying inbox type.default is 'default'.\n * @param {String} type The inbox type.\n * @return {AV.InboxQuery} Returns the query, so you can chain this call.\n */\n inboxType: function inboxType(type) {\n this._inboxType = type;\n return this;\n },\n _getParams: function _getParams() {\n var params = AV.InboxQuery.__super__._getParams.call(this);\n\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 * 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\n AV.Status.inboxQuery = function (owner, inboxType) {\n var query = new AV.InboxQuery(AV.Status);\n\n if (owner) {\n query._owner = owner;\n }\n\n if (inboxType) {\n query._inboxType = inboxType;\n }\n\n return query;\n };\n};\n\n/***/ }),\n/* 535 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(2);\n\nvar _stringify = _interopRequireDefault(__webpack_require__(34));\n\nvar _map = _interopRequireDefault(__webpack_require__(39));\n\nvar _ = __webpack_require__(1);\n\nvar AVRequest = __webpack_require__(25)._request;\n\nmodule.exports = function (AV) {\n /**\n * A builder to generate sort string for app searching.For example:\n * @class\n * @since 0.5.1\n * @example\n * var builder = new AV.SearchSortBuilder();\n * builder.ascending('key1').descending('key2','max');\n * var query = new AV.SearchQuery('Player');\n * query.sortBy(builder);\n * query.find().then();\n */\n AV.SearchSortBuilder = function () {\n this._sortFields = [];\n };\n\n _.extend(AV.SearchSortBuilder.prototype,\n /** @lends AV.SearchSortBuilder.prototype */\n {\n _addField: function _addField(key, order, mode, missing) {\n var field = {};\n field[key] = {\n order: order || 'asc',\n mode: mode || 'avg',\n missing: '_' + (missing || 'last')\n };\n\n this._sortFields.push(field);\n\n return this;\n },\n\n /**\n * Sorts the results in ascending order by the given key and options.\n *\n * @param {String} key The key to order by.\n * @param {String} mode The sort mode, default is 'avg', you can choose\n * 'max' or 'min' too.\n * @param {String} missing The missing key behaviour, default is 'last',\n * you can choose 'first' too.\n * @return {AV.SearchSortBuilder} Returns the builder, so you can chain this call.\n */\n ascending: function ascending(key, mode, missing) {\n return this._addField(key, 'asc', mode, missing);\n },\n\n /**\n * Sorts the results in descending order by the given key and options.\n *\n * @param {String} key The key to order by.\n * @param {String} mode The sort mode, default is 'avg', you can choose\n * 'max' or 'min' too.\n * @param {String} missing The missing key behaviour, default is 'last',\n * you can choose 'first' too.\n * @return {AV.SearchSortBuilder} Returns the builder, so you can chain this call.\n */\n descending: function descending(key, mode, missing) {\n return this._addField(key, 'desc', mode, missing);\n },\n\n /**\n * Add a proximity based constraint for finding objects with key point\n * values near the point given.\n * @param {String} key The key that the AV.GeoPoint is stored in.\n * @param {AV.GeoPoint} point The reference AV.GeoPoint that is used.\n * @param {Object} options The other options such as mode,order, unit etc.\n * @return {AV.SearchSortBuilder} Returns the builder, so you can chain this call.\n */\n whereNear: function whereNear(key, point, options) {\n options = options || {};\n var field = {};\n var geo = {\n lat: point.latitude,\n lon: point.longitude\n };\n var m = {\n order: options.order || 'asc',\n mode: options.mode || 'avg',\n unit: options.unit || 'km'\n };\n m[key] = geo;\n field['_geo_distance'] = m;\n\n this._sortFields.push(field);\n\n return this;\n },\n\n /**\n * Build a sort string by configuration.\n * @return {String} the sort string.\n */\n build: function build() {\n return (0, _stringify.default)(AV._encode(this._sortFields));\n }\n });\n /**\n * App searching query.Use just like AV.Query:\n *\n * Visit App Searching Guide\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\n\n AV.SearchQuery = AV.Query._extend(\n /** @lends AV.SearchQuery.prototype */\n {\n _sid: null,\n _hits: 0,\n _queryString: null,\n _highlights: null,\n _sortBuilder: null,\n _clazz: null,\n constructor: function constructor(className) {\n if (className) {\n this._clazz = className;\n } else {\n className = '__INVALID_CLASS';\n }\n\n AV.Query.call(this, className);\n },\n _createRequest: function _createRequest(params, options) {\n return AVRequest('search/select', null, null, 'GET', params || this._getParams(), options);\n },\n\n /**\n * Sets the sid of app searching query.Default is null.\n * @param {String} sid Scroll id for searching.\n * @return {AV.SearchQuery} Returns the query, so you can chain this call.\n */\n sid: function sid(_sid) {\n this._sid = _sid;\n return this;\n },\n\n /**\n * Sets the query string of app searching.\n * @param {String} q The query string.\n * @return {AV.SearchQuery} Returns the query, so you can chain this call.\n */\n queryString: function queryString(q) {\n this._queryString = q;\n return this;\n },\n\n /**\n * Sets the highlight fields. Such as\n *
    \n     *   query.highlights('title');\n     *   //or pass an array.\n     *   query.highlights(['title', 'content'])\n     * 
    \n * @param {String|String[]} highlights a list of fields.\n * @return {AV.SearchQuery} Returns the query, so you can chain this call.\n */\n highlights: function highlights(_highlights) {\n var objects;\n\n if (_highlights && _.isString(_highlights)) {\n objects = _.toArray(arguments);\n } else {\n objects = _highlights;\n }\n\n this._highlights = objects;\n return this;\n },\n\n /**\n * Sets the sort builder for this query.\n * @see AV.SearchSortBuilder\n * @param { AV.SearchSortBuilder} builder The sort builder.\n * @return {AV.SearchQuery} Returns the query, so you can chain this call.\n *\n */\n sortBy: function sortBy(builder) {\n this._sortBuilder = builder;\n return this;\n },\n\n /**\n * Returns the number of objects that match this query.\n * @return {Number}\n */\n hits: function hits() {\n if (!this._hits) {\n this._hits = 0;\n }\n\n return this._hits;\n },\n _processResult: function _processResult(json) {\n delete json['className'];\n delete json['_app_url'];\n delete json['_deeplink'];\n return json;\n },\n\n /**\n * Returns true when there are more documents can be retrieved by this\n * query instance, you can call find function to get more results.\n * @see AV.SearchQuery#find\n * @return {Boolean}\n */\n hasMore: function hasMore() {\n return !this._hitEnd;\n },\n\n /**\n * Reset current query instance state(such as sid, hits etc) except params\n * for a new searching. After resetting, hasMore() will return true.\n */\n reset: function reset() {\n this._hitEnd = false;\n this._sid = null;\n this._hits = 0;\n },\n\n /**\n * Retrieves a list of AVObjects that satisfy this query.\n * Either options.success or options.error is called when the find\n * completes.\n *\n * @see AV.Query#find\n * @param {AuthOptions} options\n * @return {Promise} A promise that is resolved with the results when\n * the query completes.\n */\n find: function find(options) {\n var self = this;\n\n var request = this._createRequest(undefined, options);\n\n return request.then(function (response) {\n //update sid for next querying.\n if (response.sid) {\n self._oldSid = self._sid;\n self._sid = response.sid;\n } else {\n self._sid = null;\n self._hitEnd = true;\n }\n\n self._hits = response.hits || 0;\n return (0, _map.default)(_).call(_, response.results, function (json) {\n if (json.className) {\n response.className = json.className;\n }\n\n var obj = self._newObject(response);\n\n obj.appURL = json['_app_url'];\n\n obj._finishFetch(self._processResult(json), true);\n\n return obj;\n });\n });\n },\n _getParams: function _getParams() {\n var params = AV.SearchQuery.__super__._getParams.call(this);\n\n delete params.where;\n\n if (this._clazz) {\n params.clazz = this.className;\n }\n\n if (this._sid) {\n params.sid = this._sid;\n }\n\n if (!this._queryString) {\n throw new Error('Please set query string.');\n } else {\n params.q = this._queryString;\n }\n\n if (this._highlights) {\n params.highlights = this._highlights.join(',');\n }\n\n if (this._sortBuilder && params.order) {\n throw new Error('sort and order can not be set at same time.');\n }\n\n if (this._sortBuilder) {\n params.sort = this._sortBuilder.build();\n }\n\n return params;\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/**\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/**\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/**\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/**\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/**\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/**\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/* 536 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(2);\n\nvar _promise = _interopRequireDefault(__webpack_require__(10));\n\nvar _ = __webpack_require__(1);\n\nvar AVError = __webpack_require__(40);\n\nvar _require = __webpack_require__(25),\n request = _require.request;\n\nmodule.exports = function (AV) {\n /**\n * 包含了使用了 LeanCloud\n * 离线数据分析功能的函数。\n *

    \n * 仅在云引擎运行环境下有效。\n *

    \n * @namespace\n */\n AV.Insight = AV.Insight || {};\n\n _.extend(AV.Insight,\n /** @lends AV.Insight */\n {\n /**\n * 开始一个 Insight 任务。结果里将返回 Job id,你可以拿得到的 id 使用\n * AV.Insight.JobQuery 查询任务状态和结果。\n * @param {Object} jobConfig 任务配置的 JSON 对象,例如:
    \n     *                   { \"sql\" : \"select count(*) as c,gender from _User group by gender\",\n     *                     \"saveAs\": {\n     *                         \"className\" : \"UserGender\",\n     *                         \"limit\": 1\n     *                      }\n     *                   }\n     *                  
    \n * sql 指定任务执行的 SQL 语句, saveAs(可选) 指定将结果保存在哪张表里,limit 最大 1000。\n * @param {AuthOptions} [options]\n * @return {Promise} A promise that will be resolved with the result\n * of the function.\n */\n startJob: function startJob(jobConfig, options) {\n if (!jobConfig || !jobConfig.sql) {\n throw new Error('Please provide the sql to run the job.');\n }\n\n var data = {\n jobConfig: jobConfig,\n appId: AV.applicationId\n };\n return request({\n path: '/bigquery/jobs',\n method: 'POST',\n data: AV._encode(data, null, true),\n authOptions: options,\n signKey: false\n }).then(function (resp) {\n return AV._decode(resp).id;\n });\n },\n\n /**\n * 监听 Insight 任务事件(未来推出独立部署的离线分析服务后开放)\n *

    \n * 仅在云引擎运行环境下有效。\n *

    \n * @param {String} event 监听的事件,目前尚不支持。\n * @param {Function} 监听回调函数,接收 (err, id) 两个参数,err 表示错误信息,\n * id 表示任务 id。接下来你可以拿这个 id 使用AV.Insight.JobQuery 查询任务状态和结果。\n *\n */\n on: function on(event, cb) {}\n });\n /**\n * 创建一个对象,用于查询 Insight 任务状态和结果。\n * @class\n * @param {String} id 任务 id\n * @since 0.5.5\n */\n\n\n AV.Insight.JobQuery = function (id, className) {\n if (!id) {\n throw new Error('Please provide the job id.');\n }\n\n this.id = id;\n this.className = className;\n this._skip = 0;\n this._limit = 100;\n };\n\n _.extend(AV.Insight.JobQuery.prototype,\n /** @lends AV.Insight.JobQuery.prototype */\n {\n /**\n * Sets the number of results to skip before returning any results.\n * This is useful for pagination.\n * Default is to skip zero results.\n * @param {Number} n the number of results to skip.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n skip: function skip(n) {\n this._skip = n;\n return this;\n },\n\n /**\n * Sets the limit of the number of results to return. The default limit is\n * 100, with a maximum of 1000 results being returned at a time.\n * @param {Number} n the number of results to limit to.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n limit: function limit(n) {\n this._limit = n;\n return this;\n },\n\n /**\n * 查询任务状态和结果,任务结果为一个 JSON 对象,包括 status 表示任务状态, totalCount 表示总数,\n * results 数组表示任务结果数组,previewCount 表示可以返回的结果总数,任务的开始和截止时间\n * startTime、endTime 等信息。\n *\n * @param {AuthOptions} [options]\n * @return {Promise} A promise that will be resolved with the result\n * of the function.\n *\n */\n find: function find(options) {\n var params = {\n skip: this._skip,\n limit: this._limit\n };\n return request({\n path: \"/bigquery/jobs/\".concat(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.default.reject(new AVError(response.code, response.error));\n }\n\n return _promise.default.resolve(response);\n });\n }\n });\n};\n\n/***/ }),\n/* 537 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(2);\n\nvar _promise = _interopRequireDefault(__webpack_require__(10));\n\nvar _ = __webpack_require__(1);\n\nvar _require = __webpack_require__(25),\n LCRequest = _require.request;\n\nvar _require2 = __webpack_require__(28),\n getSessionToken = _require2.getSessionToken;\n\nmodule.exports = function (AV) {\n var getUserWithSessionToken = function getUserWithSessionToken(authOptions) {\n if (authOptions.user) {\n if (!authOptions.user._sessionToken) {\n throw new Error('authOptions.user is not signed in.');\n }\n\n return _promise.default.resolve(authOptions.user);\n }\n\n if (authOptions.sessionToken) {\n return AV.User._fetchUserBySessionToken(authOptions.sessionToken);\n }\n\n return AV.User.currentAsync();\n };\n\n var getSessionTokenAsync = function getSessionTokenAsync(authOptions) {\n var sessionToken = getSessionToken(authOptions);\n\n if (sessionToken) {\n return _promise.default.resolve(sessionToken);\n }\n\n return AV.User.currentAsync().then(function (user) {\n if (user) {\n return user.getSessionToken();\n }\n });\n };\n /**\n * Contains functions to deal with Friendship in LeanCloud.\n * @class\n */\n\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} [authOptions]\n * @return {Promise}\n */\n request: function request(options) {\n var authOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var friend;\n var attributes;\n\n if (options.friend) {\n friend = options.friend;\n attributes = options.attributes;\n } else {\n friend = options;\n }\n\n var friendObj = _.isString(friend) ? AV.Object.createWithoutData('_User', friend) : friend;\n return getUserWithSessionToken(authOptions).then(function (userObj) {\n if (!userObj) {\n throw new Error('Please signin an user.');\n }\n\n return LCRequest({\n method: 'POST',\n path: '/users/friendshipRequests',\n data: {\n user: userObj._toPointer(),\n friend: friendObj._toPointer(),\n friendship: attributes\n },\n authOptions: authOptions\n });\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}\n */\n acceptRequest: function acceptRequest(options) {\n var authOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var request;\n var attributes;\n\n if (options.request) {\n request = options.request;\n attributes = options.attributes;\n } else {\n request = options;\n }\n\n var requestId = _.isString(request) ? request : request.id;\n return getSessionTokenAsync(authOptions).then(function (sessionToken) {\n if (!sessionToken) {\n throw new Error('Please signin an user.');\n }\n\n return LCRequest({\n method: 'PUT',\n path: '/users/friendshipRequests/' + requestId + '/accept',\n data: {\n friendship: AV._encode(attributes)\n },\n authOptions: authOptions\n });\n });\n },\n\n /**\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}\n */\n declineRequest: function declineRequest(request) {\n var authOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var requestId = _.isString(request) ? request : request.id;\n return getSessionTokenAsync(authOptions).then(function (sessionToken) {\n if (!sessionToken) {\n throw new Error('Please signin an user.');\n }\n\n return LCRequest({\n method: 'PUT',\n path: '/users/friendshipRequests/' + requestId + '/decline',\n authOptions: authOptions\n });\n });\n }\n };\n};\n\n/***/ }),\n/* 538 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(2);\n\nvar _stringify = _interopRequireDefault(__webpack_require__(34));\n\nvar _ = __webpack_require__(1);\n\nvar _require = __webpack_require__(25),\n _request = _require._request;\n\nvar AV = __webpack_require__(59);\n\nvar serializeMessage = function serializeMessage(message) {\n if (typeof message === 'string') {\n return message;\n }\n\n if (typeof message.getPayload === 'function') {\n return (0, _stringify.default)(message.getPayload());\n }\n\n return (0, _stringify.default)(message);\n};\n/**\n *

    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 *

    \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 */\n\n\nmodule.exports = AV.Object.extend('_Conversation',\n/** @lends AV.Conversation.prototype */\n{\n constructor: function constructor(name) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n AV.Object.prototype.constructor.call(this, null, null);\n this.set('name', name);\n\n if (options.isSystem !== undefined) {\n this.set('sys', options.isSystem ? true : false);\n }\n\n if (options.isTransient !== undefined) {\n this.set('tr', options.isTransient ? true : false);\n }\n },\n\n /**\n * Get current conversation's creator.\n *\n * @return {String}\n */\n getCreator: function getCreator() {\n return this.get('c');\n },\n\n /**\n * Get the last message's time.\n *\n * @return {Date}\n */\n getLastMessageAt: function getLastMessageAt() {\n return this.get('lm');\n },\n\n /**\n * Get this conversation's members\n *\n * @return {String[]}\n */\n getMembers: function getMembers() {\n return this.get('m');\n },\n\n /**\n * Add a member to this conversation\n *\n * @param {String} member\n */\n addMember: function addMember(member) {\n return this.add('m', member);\n },\n\n /**\n * Get this conversation's members who set this conversation as muted.\n *\n * @return {String[]}\n */\n getMutedMembers: function getMutedMembers() {\n return this.get('mu');\n },\n\n /**\n * Get this conversation's name field.\n *\n * @return String\n */\n getName: function 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: function 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: function 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: function send(fromClient, message) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var authOptions = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var data = {\n from_peer: fromClient,\n conv_id: this.id,\n transient: false,\n message: serializeMessage(message)\n };\n\n if (options.toClients !== undefined) {\n data.to_peers = options.toClients;\n }\n\n if (options.transient !== undefined) {\n data.transient = options.transient ? true : false;\n }\n\n if (options.pushData !== undefined) {\n data.push_data = options.pushData;\n }\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: function broadcast(fromClient, message) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var authOptions = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var data = {\n from_peer: fromClient,\n conv_id: this.id,\n message: serializeMessage(message)\n };\n\n if (options.pushData !== undefined) {\n data.push = options.pushData;\n }\n\n if (options.validTill !== undefined) {\n var ts = options.validTill;\n\n if (_.isDate(ts)) {\n ts = ts.getTime();\n }\n\n options.valid_till = ts;\n }\n\n return _request('rtm', 'broadcast', null, 'POST', data, authOptions);\n }\n});\n\n/***/ }),\n/* 539 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(2);\n\nvar _promise = _interopRequireDefault(__webpack_require__(10));\n\nvar _map = _interopRequireDefault(__webpack_require__(39));\n\nvar _concat = _interopRequireDefault(__webpack_require__(29));\n\nvar _ = __webpack_require__(1);\n\nvar _require = __webpack_require__(25),\n request = _require.request;\n\nvar _require2 = __webpack_require__(28),\n ensureArray = _require2.ensureArray,\n parseDate = _require2.parseDate;\n\nvar AV = __webpack_require__(59);\n/**\n * The version change interval for Leaderboard\n * @enum\n */\n\n\nAV.LeaderboardVersionChangeInterval = {\n NEVER: 'never',\n DAY: 'day',\n WEEK: 'week',\n MONTH: 'month'\n};\n/**\n * The order of the leaderboard results\n * @enum\n */\n\nAV.LeaderboardOrder = {\n ASCENDING: 'ascending',\n DESCENDING: 'descending'\n};\n/**\n * The update strategy for Leaderboard\n * @enum\n */\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\n /** Keep the last updated statistic */\n LAST: 'last',\n\n /** Keep the sum of all updated statistics */\n SUM: 'sum'\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 */\n\nfunction Statistic(_ref) {\n var name = _ref.name,\n value = _ref.value,\n version = _ref.version;\n\n /**\n * @type {string}\n */\n this.name = name;\n /**\n * @type {number}\n */\n\n this.value = value;\n /**\n * @type {number?}\n */\n\n this.version = version;\n}\n\nvar parseStatisticData = function parseStatisticData(statisticData) {\n var _AV$_decode = AV._decode(statisticData),\n name = _AV$_decode.statisticName,\n value = _AV$_decode.statisticValue,\n version = _AV$_decode.version;\n\n return new Statistic({\n name: name,\n value: value,\n version: version\n });\n};\n/**\n * @class\n */\n\n\nAV.Leaderboard = function Leaderboard(statisticName) {\n /**\n * @type {string}\n */\n this.statisticName = statisticName;\n /**\n * @type {AV.LeaderboardOrder}\n */\n\n this.order = undefined;\n /**\n * @type {AV.LeaderboardUpdateStrategy}\n */\n\n this.updateStrategy = undefined;\n /**\n * @type {AV.LeaderboardVersionChangeInterval}\n */\n\n this.versionChangeInterval = undefined;\n /**\n * @type {number}\n */\n\n this.version = undefined;\n /**\n * @type {Date?}\n */\n\n this.nextResetAt = undefined;\n /**\n * @type {Date?}\n */\n\n this.createdAt = undefined;\n};\n\nvar Leaderboard = AV.Leaderboard;\n/**\n * Create an instance of Leaderboard for the give statistic name.\n * @param {string} statisticName\n * @return {AV.Leaderboard}\n */\n\nAV.Leaderboard.createWithoutData = function (statisticName) {\n return new Leaderboard(statisticName);\n};\n/**\n * (masterKey required) Create a new Leaderboard.\n * @param {Object} options\n * @param {string} options.statisticName\n * @param {AV.LeaderboardOrder} options.order\n * @param {AV.LeaderboardVersionChangeInterval} [options.versionChangeInterval] default to WEEK\n * @param {AV.LeaderboardUpdateStrategy} [options.updateStrategy] default to BETTER\n * @param {AuthOptions} [authOptions]\n * @return {Promise}\n */\n\n\nAV.Leaderboard.createLeaderboard = function (_ref2, authOptions) {\n var statisticName = _ref2.statisticName,\n order = _ref2.order,\n versionChangeInterval = _ref2.versionChangeInterval,\n updateStrategy = _ref2.updateStrategy;\n return request({\n method: 'POST',\n path: '/leaderboard/leaderboards',\n data: {\n statisticName: statisticName,\n order: order,\n versionChangeInterval: versionChangeInterval,\n updateStrategy: updateStrategy\n },\n authOptions: authOptions\n }).then(function (data) {\n var leaderboard = new Leaderboard(statisticName);\n return leaderboard._finishFetch(data);\n });\n};\n/**\n * Get the Leaderboard with the specified statistic name.\n * @param {string} statisticName\n * @param {AuthOptions} [authOptions]\n * @return {Promise}\n */\n\n\nAV.Leaderboard.getLeaderboard = function (statisticName, authOptions) {\n return Leaderboard.createWithoutData(statisticName).fetch(authOptions);\n};\n/**\n * Get Statistics for the specified user.\n * @param {AV.User} user The specified AV.User pointer.\n * @param {Object} [options]\n * @param {string[]} [options.statisticNames] Specify the statisticNames. If not set, all statistics of the user will be fetched.\n * @param {AuthOptions} [authOptions]\n * @return {Promise}\n */\n\n\nAV.Leaderboard.getStatistics = function (user) {\n var _ref3 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n statisticNames = _ref3.statisticNames;\n\n var authOptions = arguments.length > 2 ? arguments[2] : undefined;\n return _promise.default.resolve().then(function () {\n if (!(user && user.id)) throw new Error('user must be an AV.User');\n return request({\n method: 'GET',\n path: \"/leaderboard/users/\".concat(user.id, \"/statistics\"),\n query: {\n statistics: statisticNames ? ensureArray(statisticNames).join(',') : undefined\n },\n authOptions: authOptions\n }).then(function (_ref4) {\n var results = _ref4.results;\n return (0, _map.default)(results).call(results, parseStatisticData);\n });\n });\n};\n/**\n * Update Statistics for the specified user.\n * @param {AV.User} user The specified AV.User pointer.\n * @param {Object} statistics A name-value pair representing the statistics to update.\n * @param {AuthOptions} [options] AuthOptions plus:\n * @param {boolean} [options.overwrite] Wethere to overwrite these statistics disregarding the updateStrategy of there leaderboards\n * @return {Promise}\n */\n\n\nAV.Leaderboard.updateStatistics = function (user, statistics) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return _promise.default.resolve().then(function () {\n if (!(user && user.id)) throw new Error('user must be an AV.User');\n var data = (0, _map.default)(_).call(_, statistics, function (value, key) {\n return {\n statisticName: key,\n statisticValue: value\n };\n });\n var overwrite = options.overwrite;\n return request({\n method: 'POST',\n path: \"/leaderboard/users/\".concat(user.id, \"/statistics\"),\n query: {\n overwrite: overwrite ? 1 : undefined\n },\n data: data,\n authOptions: options\n }).then(function (_ref5) {\n var results = _ref5.results;\n return (0, _map.default)(results).call(results, parseStatisticData);\n });\n });\n};\n/**\n * Delete Statistics for the specified user.\n * @param {AV.User} user The specified AV.User pointer.\n * @param {Object} statistics A name-value pair representing the statistics to delete.\n * @param {AuthOptions} [options]\n * @return {Promise}\n */\n\n\nAV.Leaderboard.deleteStatistics = function (user, statisticNames, authOptions) {\n return _promise.default.resolve().then(function () {\n if (!(user && user.id)) throw new Error('user must be an AV.User');\n return request({\n method: 'DELETE',\n path: \"/leaderboard/users/\".concat(user.id, \"/statistics\"),\n query: {\n statistics: ensureArray(statisticNames).join(',')\n },\n authOptions: authOptions\n }).then(function () {\n return undefined;\n });\n });\n};\n\n_.extend(Leaderboard.prototype,\n/** @lends AV.Leaderboard.prototype */\n{\n _finishFetch: function _finishFetch(data) {\n var _this = this;\n\n _.forEach(data, function (value, key) {\n if (key === 'updatedAt' || key === 'objectId') return;\n\n if (key === 'expiredAt') {\n key = 'nextResetAt';\n }\n\n if (key === 'createdAt') {\n value = parseDate(value);\n }\n\n if (value && value.__type === 'Date') {\n value = parseDate(value.iso);\n }\n\n _this[key] = value;\n });\n\n return this;\n },\n\n /**\n * Fetch data from the srever.\n * @param {AuthOptions} [authOptions]\n * @return {Promise}\n */\n fetch: function fetch(authOptions) {\n var _this2 = this;\n\n return request({\n method: 'GET',\n path: \"/leaderboard/leaderboards/\".concat(this.statisticName),\n authOptions: authOptions\n }).then(function (data) {\n return _this2._finishFetch(data);\n });\n },\n\n /**\n * Counts the number of users participated in this leaderboard\n * @param {Object} [options]\n * @param {number} [options.version] Specify the version of the leaderboard\n * @param {AuthOptions} [authOptions]\n * @return {Promise}\n */\n count: function count() {\n var _ref6 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n version = _ref6.version;\n\n var authOptions = arguments.length > 1 ? arguments[1] : undefined;\n return request({\n method: 'GET',\n path: \"/leaderboard/leaderboards/\".concat(this.statisticName, \"/ranks\"),\n query: {\n count: 1,\n limit: 0,\n version: version\n },\n authOptions: authOptions\n }).then(function (_ref7) {\n var count = _ref7.count;\n return count;\n });\n },\n _getResults: function _getResults(_ref8, authOptions, userId) {\n var _context;\n\n var skip = _ref8.skip,\n limit = _ref8.limit,\n selectUserKeys = _ref8.selectUserKeys,\n includeUserKeys = _ref8.includeUserKeys,\n includeStatistics = _ref8.includeStatistics,\n version = _ref8.version;\n return request({\n method: 'GET',\n path: (0, _concat.default)(_context = \"/leaderboard/leaderboards/\".concat(this.statisticName, \"/ranks\")).call(_context, userId ? \"/\".concat(userId) : ''),\n query: {\n skip: skip,\n limit: limit,\n selectUserKeys: _.union(ensureArray(selectUserKeys), ensureArray(includeUserKeys)).join(',') || undefined,\n includeUser: includeUserKeys ? ensureArray(includeUserKeys).join(',') : undefined,\n includeStatistics: includeStatistics ? ensureArray(includeStatistics).join(',') : undefined,\n version: version\n },\n authOptions: authOptions\n }).then(function (_ref9) {\n var rankings = _ref9.results;\n return (0, _map.default)(rankings).call(rankings, function (rankingData) {\n var _AV$_decode2 = AV._decode(rankingData),\n user = _AV$_decode2.user,\n value = _AV$_decode2.statisticValue,\n rank = _AV$_decode2.rank,\n _AV$_decode2$statisti = _AV$_decode2.statistics,\n statistics = _AV$_decode2$statisti === void 0 ? [] : _AV$_decode2$statisti;\n\n return {\n user: user,\n value: value,\n rank: rank,\n includedStatistics: (0, _map.default)(statistics).call(statistics, parseStatisticData)\n };\n });\n });\n },\n\n /**\n * Retrieve a list of ranked users for this Leaderboard.\n * @param {Object} [options]\n * @param {number} [options.skip] The number of results to skip. This is useful for pagination.\n * @param {number} [options.limit] The limit of the number of results.\n * @param {string[]} [options.selectUserKeys] Specify keys of the users to include in the Rankings\n * @param {string[]} [options.includeUserKeys] If the value of a selected user keys is a Pointer, use this options to include its value.\n * @param {string[]} [options.includeStatistics] Specify other statistics to include in the Rankings\n * @param {number} [options.version] Specify the version of the leaderboard\n * @param {AuthOptions} [authOptions]\n * @return {Promise}\n */\n getResults: function getResults() {\n var _ref10 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n skip = _ref10.skip,\n limit = _ref10.limit,\n selectUserKeys = _ref10.selectUserKeys,\n includeUserKeys = _ref10.includeUserKeys,\n includeStatistics = _ref10.includeStatistics,\n version = _ref10.version;\n\n var authOptions = arguments.length > 1 ? arguments[1] : undefined;\n return this._getResults({\n skip: skip,\n limit: limit,\n selectUserKeys: selectUserKeys,\n includeUserKeys: includeUserKeys,\n includeStatistics: includeStatistics,\n version: version\n }, authOptions);\n },\n\n /**\n * Retrieve a list of ranked users for this Leaderboard, centered on the specified user.\n * @param {AV.User} user The specified AV.User pointer.\n * @param {Object} [options]\n * @param {number} [options.limit] The limit of the number of results.\n * @param {string[]} [options.selectUserKeys] Specify keys of the users to include in the Rankings\n * @param {string[]} [options.includeUserKeys] If the value of a selected user keys is a Pointer, use this options to include its value.\n * @param {string[]} [options.includeStatistics] Specify other statistics to include in the Rankings\n * @param {number} [options.version] Specify the version of the leaderboard\n * @param {AuthOptions} [authOptions]\n * @return {Promise}\n */\n getResultsAroundUser: function getResultsAroundUser(user) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var authOptions = arguments.length > 2 ? arguments[2] : undefined;\n\n // getResultsAroundUser(options, authOptions)\n if (user && typeof user.id !== 'string') {\n return this.getResultsAroundUser(undefined, user, options);\n }\n\n var limit = options.limit,\n selectUserKeys = options.selectUserKeys,\n includeUserKeys = options.includeUserKeys,\n includeStatistics = options.includeStatistics,\n version = options.version;\n return this._getResults({\n limit: limit,\n selectUserKeys: selectUserKeys,\n includeUserKeys: includeUserKeys,\n includeStatistics: includeStatistics,\n version: version\n }, authOptions, user ? user.id : 'self');\n },\n _update: function _update(data, authOptions) {\n var _this3 = this;\n\n return request({\n method: 'PUT',\n path: \"/leaderboard/leaderboards/\".concat(this.statisticName),\n data: data,\n authOptions: authOptions\n }).then(function (result) {\n return _this3._finishFetch(result);\n });\n },\n\n /**\n * (masterKey required) Update the version change interval of the Leaderboard.\n * @param {AV.LeaderboardVersionChangeInterval} versionChangeInterval\n * @param {AuthOptions} [authOptions]\n * @return {Promise}\n */\n updateVersionChangeInterval: function updateVersionChangeInterval(versionChangeInterval, authOptions) {\n return this._update({\n versionChangeInterval: versionChangeInterval\n }, authOptions);\n },\n\n /**\n * (masterKey required) Update the version change interval of the Leaderboard.\n * @param {AV.LeaderboardUpdateStrategy} updateStrategy\n * @param {AuthOptions} [authOptions]\n * @return {Promise}\n */\n updateUpdateStrategy: function updateUpdateStrategy(updateStrategy, authOptions) {\n return this._update({\n updateStrategy: updateStrategy\n }, authOptions);\n },\n\n /**\n * (masterKey required) Reset the Leaderboard. The version of the Leaderboard will be incremented by 1.\n * @param {AuthOptions} [authOptions]\n * @return {Promise}\n */\n reset: function reset(authOptions) {\n var _this4 = this;\n\n return request({\n method: 'PUT',\n path: \"/leaderboard/leaderboards/\".concat(this.statisticName, \"/incrementVersion\"),\n authOptions: authOptions\n }).then(function (data) {\n return _this4._finishFetch(data);\n });\n },\n\n /**\n * (masterKey required) Delete the Leaderboard and its all archived versions.\n * @param {AuthOptions} [authOptions]\n * @return {void}\n */\n destroy: function destroy(authOptions) {\n return AV.request({\n method: 'DELETE',\n path: \"/leaderboard/leaderboards/\".concat(this.statisticName),\n authOptions: authOptions\n }).then(function () {\n return undefined;\n });\n },\n\n /**\n * (masterKey required) Get archived versions.\n * @param {Object} [options]\n * @param {number} [options.skip] The number of results to skip. This is useful for pagination.\n * @param {number} [options.limit] The limit of the number of results.\n * @param {AuthOptions} [authOptions]\n * @return {Promise}\n */\n getArchives: function getArchives() {\n var _this5 = this;\n\n var _ref11 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n skip = _ref11.skip,\n limit = _ref11.limit;\n\n var authOptions = arguments.length > 1 ? arguments[1] : undefined;\n return request({\n method: 'GET',\n path: \"/leaderboard/leaderboards/\".concat(this.statisticName, \"/archives\"),\n query: {\n skip: skip,\n limit: limit\n },\n authOptions: authOptions\n }).then(function (_ref12) {\n var results = _ref12.results;\n return (0, _map.default)(results).call(results, function (_ref13) {\n var version = _ref13.version,\n status = _ref13.status,\n url = _ref13.url,\n activatedAt = _ref13.activatedAt,\n deactivatedAt = _ref13.deactivatedAt;\n return {\n statisticName: _this5.statisticName,\n version: version,\n status: status,\n url: url,\n activatedAt: parseDate(activatedAt.iso),\n deactivatedAt: parseDate(deactivatedAt.iso)\n };\n });\n });\n }\n});\n\n/***/ })\n/******/ ]);\n});\n\n\n// WEBPACK FOOTER //\n// av-core-min.js","'use strict';\nvar global = require('../internals/global');\nvar apply = require('../internals/function-apply');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar isForced = require('../internals/is-forced');\nvar path = require('../internals/path');\nvar bind = require('../internals/function-bind-context');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\n\nvar wrapConstructor = function (NativeConstructor) {\n var Wrapper = function (a, b, c) {\n if (this instanceof Wrapper) {\n switch (arguments.length) {\n case 0: return new NativeConstructor();\n case 1: return new NativeConstructor(a);\n case 2: return new NativeConstructor(a, b);\n } return new NativeConstructor(a, b, c);\n } return apply(NativeConstructor, this, arguments);\n };\n Wrapper.prototype = NativeConstructor.prototype;\n return Wrapper;\n};\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.dontCallGetSet - prevent calling a getter on target\n options.name - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var PROTO = options.proto;\n\n var nativeSource = GLOBAL ? global : STATIC ? global[TARGET] : (global[TARGET] || {}).prototype;\n\n var target = GLOBAL ? path : path[TARGET] || createNonEnumerableProperty(path, TARGET, {})[TARGET];\n var targetPrototype = target.prototype;\n\n var FORCED, USE_NATIVE, VIRTUAL_PROTOTYPE;\n var key, sourceProperty, targetProperty, nativeProperty, resultProperty, descriptor;\n\n for (key in source) {\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contains in native\n USE_NATIVE = !FORCED && nativeSource && hasOwn(nativeSource, key);\n\n targetProperty = target[key];\n\n if (USE_NATIVE) if (options.dontCallGetSet) {\n descriptor = getOwnPropertyDescriptor(nativeSource, key);\n nativeProperty = descriptor && descriptor.value;\n } else nativeProperty = nativeSource[key];\n\n // export native or implementation\n sourceProperty = (USE_NATIVE && nativeProperty) ? nativeProperty : source[key];\n\n if (USE_NATIVE && typeof targetProperty == typeof sourceProperty) continue;\n\n // bind timers to global for call from export context\n if (options.bind && USE_NATIVE) resultProperty = bind(sourceProperty, global);\n // wrap global constructors for prevent changs in this version\n else if (options.wrap && USE_NATIVE) resultProperty = wrapConstructor(sourceProperty);\n // make static versions for prototype methods\n else if (PROTO && isCallable(sourceProperty)) resultProperty = uncurryThis(sourceProperty);\n // default case\n else resultProperty = sourceProperty;\n\n // add a flag to not completely full polyfills\n if (options.sham || (sourceProperty && sourceProperty.sham) || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(resultProperty, 'sham', true);\n }\n\n createNonEnumerableProperty(target, key, resultProperty);\n\n if (PROTO) {\n VIRTUAL_PROTOTYPE = TARGET + 'Prototype';\n if (!hasOwn(path, VIRTUAL_PROTOTYPE)) {\n createNonEnumerableProperty(path, VIRTUAL_PROTOTYPE, {});\n }\n // export virtual prototype methods\n createNonEnumerableProperty(path[VIRTUAL_PROTOTYPE], key, sourceProperty);\n // export real prototype methods\n if (options.real && targetPrototype && !targetPrototype[key]) {\n createNonEnumerableProperty(targetPrototype, key, sourceProperty);\n }\n }\n }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/export.js\n// module id = 0\n// module chunks = 0 1","// 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 = 1\n// module chunks = 0 1","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/helpers/interopRequireDefault.js\n// module id = 2\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 = 3\n// module chunks = 0 1","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/fails.js\n// module id = 4\n// module chunks = 0 1","var path = require('../internals/path');\nvar hasOwn = require('../internals/has-own-property');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineProperty = require('../internals/object-define-property').f;\n\nmodule.exports = function (NAME) {\n var Symbol = path.Symbol || (path.Symbol = {});\n if (!hasOwn(Symbol, NAME)) defineProperty(Symbol, NAME, {\n value: wrappedWellKnownSymbolModule.f(NAME)\n });\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/define-well-known-symbol.js\n// module id = 5\n// module chunks = 0 1","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar bind = FunctionPrototype.bind;\nvar call = FunctionPrototype.call;\nvar uncurryThis = NATIVE_BIND && bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? function (fn) {\n return fn && uncurryThis(fn);\n} : function (fn) {\n return fn && function () {\n return call.apply(fn, arguments);\n };\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/function-uncurry-this.js\n// module id = 6\n// module chunks = 0 1","// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\nmodule.exports = function (argument) {\n return typeof argument == 'function';\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/is-callable.js\n// module id = 7\n// module chunks = 0 1","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar symbolFor = Symbol && Symbol['for'];\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!hasOwn(WellKnownSymbolsStore, name) || !(NATIVE_SYMBOL || typeof WellKnownSymbolsStore[name] == 'string')) {\n var description = 'Symbol.' + name;\n if (NATIVE_SYMBOL && hasOwn(Symbol, name)) {\n WellKnownSymbolsStore[name] = Symbol[name];\n } else if (USE_SYMBOL_AS_UID && symbolFor) {\n WellKnownSymbolsStore[name] = symbolFor(description);\n } else {\n WellKnownSymbolsStore[name] = createWellKnownSymbol(description);\n }\n } return WellKnownSymbolsStore[name];\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/well-known-symbol.js\n// module id = 8\n// module chunks = 0 1","var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es-x/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/global.js\n// module id = 9\n// module chunks = 0 1","module.exports = require(\"core-js-pure/stable/promise\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js-stable/promise.js\n// module id = 10\n// module chunks = 0 1","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar call = Function.prototype.call;\n\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n return call.apply(call, arguments);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/function-call.js\n// module id = 11\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 = 12\n// module chunks = 0 1","module.exports = {};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/path.js\n// module id = 13\n// module chunks = 0 1","var uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\n// eslint-disable-next-line es-x/no-object-hasown -- safe\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty(toObject(it), key);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/has-own-property.js\n// module id = 14\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 = 15\n// module chunks = 0 1","var path = require('../internals/path');\nvar global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (variable) {\n return isCallable(variable) ? variable : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])\n : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/get-built-in.js\n// module id = 16\n// module chunks = 0 1","var isCallable = require('../internals/is-callable');\n\nmodule.exports = function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/is-object.js\n// module id = 17\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 = 18\n// module chunks = 0 1","var fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es-x/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/descriptors.js\n// module id = 19\n// module chunks = 0 1","var uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/object-is-prototype-of.js\n// module id = 20\n// module chunks = 0 1","var isObject = require('../internals/is-object');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n if (isObject(argument)) return argument;\n throw $TypeError($String(argument) + ' is not an object');\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/an-object.js\n// module id = 21\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 = 22\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 = 23\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 = 24\n// module chunks = 0 1","const _ = require('underscore');\nconst md5 = require('md5');\nconst { extend } = require('underscore');\nconst AV = require('./av');\nconst AVError = require('./error');\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 AVError(errorJSON.code, errorJSON.error);\n delete errorJSON.error;\n throw _.extend(err, errorJSON);\n })\n );\n};\n\n// lagecy request\nconst _request = (\n route,\n className,\n objectId,\n method,\n data,\n authOptions,\n query\n) => {\n let path = '';\n if (route) path += `/${route}`;\n if (className) path += `/${className}`;\n if (objectId) path += `/${objectId}`;\n // for migeration\n if (data && data._fetchWhenSave)\n throw new Error('_fetchWhenSave should be in the query');\n if (data && data._where) throw new Error('_where should be in the query');\n if (method && method.toLowerCase() === 'get') {\n query = extend({}, query, data);\n data = null;\n }\n return request({\n method,\n path,\n query,\n data,\n authOptions,\n });\n};\n\nAV.request = request;\n\nmodule.exports = {\n _request,\n request,\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/request.js","import tagTester from './_tagTester.js';\nimport { root } from './_setup.js';\n\nvar isFunction = tagTester('Function');\n\n// Optimize `isFunction` if appropriate. Work around some `typeof` bugs in old\n// v8, IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236).\nvar nodelist = root.document && root.document.childNodes;\nif (typeof /./ != 'function' && typeof Int8Array != 'object' && typeof nodelist != 'function') {\n isFunction = function(obj) {\n return typeof obj == 'function' || false;\n };\n}\n\nexport default isFunction;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/isFunction.js\n// module id = 26\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 = 27\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\n// Suppress the date string format warning in Weixin DevTools\n// Link: https://developers.weixin.qq.com/community/minihome/doc/00080c6f244718053550067736b401\nconst parseDate =\n typeof wx === 'undefined'\n ? iso8601 => new Date(iso8601)\n : iso8601 => new Date(Date.parse(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","module.exports = require(\"core-js-pure/stable/instance/concat\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js-stable/instance/concat.js\n// module id = 29\n// module chunks = 0 1","var isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n if (isCallable(argument)) return argument;\n throw $TypeError(tryToString(argument) + ' is not a function');\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/a-callable.js\n// module id = 30\n// module chunks = 0 1","module.exports = true;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/is-pure.js\n// module id = 31\n// module chunks = 0 1","var DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es-x/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n var current = $getOwnPropertyDescriptor(O, P);\n if (current && current[WRITABLE]) {\n O[P] = Attributes.value;\n Attributes = {\n configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n writable: false\n };\n }\n } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* 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-pure/internals/object-define-property.js\n// module id = 32\n// module chunks = 0 1","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/to-indexed-object.js\n// module id = 33\n// module chunks = 0 1","module.exports = require(\"core-js-pure/stable/json/stringify\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js-stable/json/stringify.js\n// module id = 34\n// module chunks = 0 1","var requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar $Object = Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return $Object(requireObjectCoercible(argument));\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/to-object.js\n// module id = 35\n// module chunks = 0 1","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(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-pure/internals/create-non-enumerable-property.js\n// module id = 36\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 = 37\n// module chunks = 0 1","var path = require('../internals/path');\n\nmodule.exports = function (CONSTRUCTOR) {\n return path[CONSTRUCTOR + 'Prototype'];\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/entry-virtual.js\n// module id = 38\n// module chunks = 0 1","module.exports = require(\"core-js-pure/stable/instance/map\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js-stable/instance/map.js\n// module id = 39\n// module chunks = 0 1","const _ = require('underscore');\n\n/**\n * @class AV.Error\n */\n\nfunction AVError(code, message) {\n if (new.target) {\n const error = new Error(message);\n Object.setPrototypeOf(error, Object.getPrototypeOf(this));\n error.code = code;\n return error;\n }\n return new AVError(code, message);\n}\n\nAVError.prototype = Object.create(Error.prototype, {\n constructor: {\n value: Error,\n enumerable: false,\n writable: true,\n configurable: true,\n },\n});\n\nObject.setPrototypeOf(AVError, Error);\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.\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 * @constant\n */\n INVALID_PUSH_TIME_ERROR: 152,\n\n /**\n * Error code indicating that the username is missing or empty.\n * @constant\n */\n USERNAME_MISSING: 200,\n\n /**\n * Error code indicating that the password is missing or empty.\n * @constant\n */\n PASSWORD_MISSING: 201,\n\n /**\n * Error code indicating that the username has already been taken.\n * @constant\n */\n USERNAME_TAKEN: 202,\n\n /**\n * Error code indicating that the email has already been taken.\n * @constant\n */\n EMAIL_TAKEN: 203,\n\n /**\n * Error code indicating that the email is missing, but must be specified.\n * @constant\n */\n EMAIL_MISSING: 204,\n\n /**\n * Error code indicating that a user with the specified email was not found.\n * @constant\n */\n EMAIL_NOT_FOUND: 205,\n\n /**\n * Error code indicating that a user object without a valid session could\n * not be altered.\n * @constant\n */\n SESSION_MISSING: 206,\n\n /**\n * Error code indicating that a user can only be created through signup.\n * @constant\n */\n MUST_CREATE_USER_THROUGH_SIGNUP: 207,\n\n /**\n * Error code indicating that an an account being linked is already linked\n * to another user.\n * @constant\n */\n ACCOUNT_ALREADY_LINKED: 208,\n\n /**\n * Error code indicating that a user cannot be linked to an account because\n * that account's id could not be found.\n * @constant\n */\n LINKED_ID_MISSING: 250,\n\n /**\n * Error code indicating that a user with a linked (e.g. Facebook) account\n * has an invalid session.\n * @constant\n */\n INVALID_LINKED_SESSION: 251,\n\n /**\n * Error code indicating that a service being linked (e.g. Facebook or\n * Twitter) is unsupported.\n * @constant\n */\n UNSUPPORTED_SERVICE: 252,\n /**\n * Error code indicating a real error code is unavailable because\n * we had to use an XDomainRequest object to allow CORS requests in\n * Internet Explorer, which strips the body from HTTP responses that have\n * a non-2XX status code.\n * @constant\n */\n X_DOMAIN_REQUEST: 602,\n }\n);\n\nmodule.exports = AVError;\n\n\n\n// WEBPACK FOOTER //\n// ./src/error.js","module.exports = 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-pure/internals/create-property-descriptor.js\n// module id = 41\n// module chunks = 0 1","var toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n return toLength(obj.length);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/length-of-array-like.js\n// module id = 42\n// module chunks = 0 1","var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nmodule.exports = function (target, key, value, options) {\n if (options && options.enumerable) target[key] = value;\n else createNonEnumerableProperty(target, key, value);\n return target;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/define-built-in.js\n// module id = 43\n// module chunks = 0 1","'use strict';\nvar aCallable = require('../internals/a-callable');\n\nvar PromiseCapability = function (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 = aCallable(resolve);\n this.reject = aCallable(reject);\n};\n\n// `NewPromiseCapability` abstract operation\n// https://tc39.es/ecma262/#sec-newpromisecapability\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/new-promise-capability.js\n// module id = 44\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 = 45\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 = 46\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 = 47\n// module chunks = 0 1","module.exports = require(\"core-js-pure/stable/instance/keys\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js-stable/instance/keys.js\n// module id = 48\n// module chunks = 0 1","/* eslint-disable es-x/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\n\n// eslint-disable-next-line es-x/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol();\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n return !String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/native-symbol.js\n// module id = 49\n// module chunks = 0 1","var uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar bind = uncurryThis(uncurryThis.bind);\n\n// optional / simple context binding\nmodule.exports = function (fn, that) {\n aCallable(fn);\n return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/function-bind-context.js\n// module id = 50\n// module chunks = 0 1","/* global ActiveXObject -- old IE, WSH */\nvar anObject = require('../internals/an-object');\nvar definePropertiesModule = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n activeXDocument = null; // avoid memory leak\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n activeXDocument = new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = typeof document != 'undefined'\n ? document.domain && activeXDocument\n ? NullProtoObjectViaActiveX(activeXDocument) // old IE\n : NullProtoObjectViaIFrame()\n : NullProtoObjectViaActiveX(activeXDocument); // WSH\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\n// eslint-disable-next-line es-x/no-object-create -- safe\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : definePropertiesModule.f(result, Properties);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/object-create.js\n// module id = 51\n// module chunks = 0 1","module.exports = {};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/iterators.js\n// module id = 52\n// module chunks = 0 1","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar isCallable = require('../internals/is-callable');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar $Object = Object;\n\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(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 (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/classof.js\n// module id = 53\n// module chunks = 0 1","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar defineProperty = require('../internals/object-define-property').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar toString = require('../internals/object-to-string');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC, SET_METHOD) {\n if (it) {\n var target = STATIC ? it : it.prototype;\n if (!hasOwn(target, TO_STRING_TAG)) {\n defineProperty(target, TO_STRING_TAG, { configurable: true, value: TAG });\n }\n if (SET_METHOD && !TO_STRING_TAG_SUPPORT) {\n createNonEnumerableProperty(target, 'toString', toString);\n }\n }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/set-to-string-tag.js\n// module id = 54\n// module chunks = 0 1","var global = require('../internals/global');\n\nmodule.exports = global.Promise;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/promise-native-constructor.js\n// module id = 55\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 = 56\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 = 57\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 = 58\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 \n * is set, then none of the AV Objects that are serialized can be dirty.\n * @private\n */\nAV._encode = function(value, seenObjects, disallowObjects, full = true) {\n if (value instanceof AV.Object) {\n if (disallowObjects) {\n throw new Error('AV.Objects not allowed here');\n }\n if (!seenObjects || _.include(seenObjects, value) || !value._hasData) {\n return value._toPointer();\n }\n return value._toFullJSON(seenObjects.concat(value), full);\n }\n if (value instanceof AV.ACL) {\n return value.toJSON();\n }\n if (_.isDate(value)) {\n return full ? { __type: 'Date', iso: value.toJSON() } : value.toJSON();\n }\n if (value instanceof AV.GeoPoint) {\n return value.toJSON();\n }\n if (_.isArray(value)) {\n return _.map(value, function(x) {\n return AV._encode(x, seenObjects, disallowObjects, full);\n });\n }\n if (_.isRegExp(value)) {\n return value.source;\n }\n if (value instanceof AV.Relation) {\n return value.toJSON();\n }\n if (value instanceof AV.Op) {\n return value.toJSON();\n }\n if (value instanceof AV.File) {\n if (!value.url() && !value.id) {\n throw new Error('Tried to save an object containing an unsaved file.');\n }\n return value._toFullJSON(seenObjects, full);\n }\n if (_.isObject(value)) {\n return _.mapObject(value, (v, k) =>\n AV._encode(v, seenObjects, disallowObjects, full)\n );\n }\n return value;\n};\n\n/**\n * The inverse function of AV._encode.\n * @private\n */\nAV._decode = function(value, key) {\n if (!_.isObject(value) || _.isDate(value)) {\n return value;\n }\n if (_.isArray(value)) {\n return _.map(value, v => AV._decode(v));\n }\n if (value instanceof AV.Object) {\n return value;\n }\n if (value instanceof AV.File) {\n return value;\n }\n if (value instanceof AV.Op) {\n return value;\n }\n if (value instanceof AV.GeoPoint) {\n return value;\n }\n if (value instanceof AV.ACL) {\n return value;\n }\n if (key === 'ACL') {\n return new AV.ACL(value);\n }\n if (value.__op) {\n return AV.Op._decode(value);\n }\n var className;\n if (value.__type === 'Pointer') {\n className = value.className;\n var pointer = AV.Object._create(className);\n if (Object.keys(value).length > 3) {\n const v = _.clone(value);\n delete v.__type;\n delete v.className;\n pointer._finishFetch(v, true);\n } else {\n pointer._finishFetch({ objectId: value.objectId }, false);\n }\n return pointer;\n }\n if (value.__type === 'Object') {\n // It's an Object included in a query result.\n className = value.className;\n const v = _.clone(value);\n delete v.__type;\n delete v.className;\n var object = AV.Object._create(className);\n object._finishFetch(v, true);\n return object;\n }\n if (value.__type === 'Date') {\n return AV._parseDate(value.iso);\n }\n if (value.__type === 'GeoPoint') {\n return new AV.GeoPoint({\n latitude: value.latitude,\n longitude: value.longitude,\n });\n }\n if (value.__type === 'Relation') {\n if (!key) throw new Error('key missing decoding a Relation');\n var relation = new AV.Relation(null, key);\n relation.targetClassName = value.className;\n return relation;\n }\n if (value.__type === 'File') {\n var file = new AV.File(value.name);\n const v = _.clone(value);\n delete v.__type;\n file._finishFetch(v);\n return file;\n }\n return _.mapObject(value, AV._decode);\n};\n\n/**\n * The inverse function of {@link AV.Object#toFullJSON}.\n * @since 3.0.0\n * @method\n * @param {Object}\n * return {AV.Object|AV.File|any}\n */\nAV.parseJSON = AV._decode;\n\n/**\n * Similar to JSON.parse, except that AV internal types will be used if possible.\n * Inverse to {@link AV.stringify}\n * @since 3.14.0\n * @param {string} text the string to parse.\n * @return {AV.Object|AV.File|any}\n */\nAV.parse = text => AV.parseJSON(JSON.parse(text));\n/**\n * Serialize a target containing AV.Object, similar to JSON.stringify.\n * Inverse to {@link AV.parse}\n * @since 3.14.0\n * @return {string}\n */\nAV.stringify = target => JSON.stringify(AV._encode(target, [], false, true));\n\nAV._encodeObjectOrArray = function(value) {\n var encodeAVObject = function(object) {\n if (object && object._toFullJSON) {\n object = object._toFullJSON([]);\n }\n\n return _.mapObject(object, function(value) {\n return AV._encode(value, []);\n });\n };\n\n if (_.isArray(value)) {\n return value.map(function(object) {\n return encodeAVObject(object);\n });\n } else {\n return encodeAVObject(value);\n }\n};\n\nAV._arrayEach = _.each;\n\n/**\n * Does a deep traversal of every item in object, calling func on every one.\n * @param {Object} object The object or array to traverse deeply.\n * @param {Function} func The function to call for every item. It will\n * be passed the item as an argument. If it returns a truthy value, that\n * value will replace the item in its parent container.\n * @returns {} the result of calling func on the top-level object itself.\n * @private\n */\nAV._traverse = function(object, func, seen) {\n if (object instanceof AV.Object) {\n seen = seen || [];\n if (_.indexOf(seen, object) >= 0) {\n // We've already visited this object in this call.\n return;\n }\n seen.push(object);\n AV._traverse(object.attributes, func, seen);\n return func(object);\n }\n if (object instanceof AV.Relation || object instanceof AV.File) {\n // Nothing needs to be done, but we don't want to recurse into the\n // object's parent infinitely, so we catch this case.\n return func(object);\n }\n if (_.isArray(object)) {\n _.each(object, function(child, index) {\n var newChild = AV._traverse(child, func, seen);\n if (newChild) {\n object[index] = newChild;\n }\n });\n return func(object);\n }\n if (_.isObject(object)) {\n AV._each(object, function(child, key) {\n var newChild = AV._traverse(child, func, seen);\n if (newChild) {\n object[key] = newChild;\n }\n });\n return func(object);\n }\n return func(object);\n};\n\n/**\n * This is like _.each, except:\n * * it doesn't work for so-called array-like objects,\n * * it does work for dictionaries with a \"length\" attribute.\n * @private\n */\nAV._objectEach = AV._each = function(obj, callback) {\n if (_.isObject(obj)) {\n _.each(_.keys(obj), function(key) {\n callback(obj[key], key);\n });\n } else {\n _.each(obj, callback);\n }\n};\n\n/**\n * @namespace\n * @since 3.14.0\n */\nAV.debug = {\n /**\n * Enable debug\n */\n enable: (namespaces = 'leancloud*') => debug.enable(namespaces),\n /**\n * Disable debug\n */\n disable: debug.disable,\n};\n\n/**\n * Specify Adapters\n * @since 4.4.0\n * @function\n * @param {Adapters} newAdapters See {@link https://url.leanapp.cn/adapter-type-definitions @leancloud/adapter-types} for detailed definitions.\n */\nAV.setAdapters = setAdapters;\n\nmodule.exports = AV;\n\n\n\n// WEBPACK FOOTER //\n// ./src/av.js","\"use strict\";\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\n/**\n * Colors.\n */\n\nexports.colors = ['#0000CC', '#0000FF', '#0033CC', '#0033FF', '#0066CC', '#0066FF', '#0099CC', '#0099FF', '#00CC00', '#00CC33', '#00CC66', '#00CC99', '#00CCCC', '#00CCFF', '#3300CC', '#3300FF', '#3333CC', '#3333FF', '#3366CC', '#3366FF', '#3399CC', '#3399FF', '#33CC00', '#33CC33', '#33CC66', '#33CC99', '#33CCCC', '#33CCFF', '#6600CC', '#6600FF', '#6633CC', '#6633FF', '#66CC00', '#66CC33', '#9900CC', '#9900FF', '#9933CC', '#9933FF', '#99CC00', '#99CC33', '#CC0000', '#CC0033', '#CC0066', '#CC0099', '#CC00CC', '#CC00FF', '#CC3300', '#CC3333', '#CC3366', '#CC3399', '#CC33CC', '#CC33FF', '#CC6600', '#CC6633', '#CC9900', '#CC9933', '#CCCC00', '#CCCC33', '#FF0000', '#FF0033', '#FF0066', '#FF0099', '#FF00CC', '#FF00FF', '#FF3300', '#FF3333', '#FF3366', '#FF3399', '#FF33CC', '#FF33FF', '#FF6600', '#FF6633', '#FF9900', '#FF9933', '#FFCC00', '#FFCC33'];\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n// eslint-disable-next-line complexity\n\nfunction useColors() {\n // NB: In an Electron preload script, document will be defined but not fully\n // initialized. Since we know we're in Chrome, we'll just detect this case\n // explicitly\n if (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n return true;\n } // Internet Explorer and Edge do not support colors.\n\n\n if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n return false;\n } // Is webkit? http://stackoverflow.com/a/16459606/376773\n // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\n\n return typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || // Is firebug? http://stackoverflow.com/a/398120/376773\n typeof window !== 'undefined' && window.console && (window.console.firebug || window.console.exception && window.console.table) || // Is firefox >= v31?\n // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31 || // Double check webkit in userAgent just in case we are in a worker\n typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/);\n}\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\n\nfunction formatArgs(args) {\n args[0] = (this.useColors ? '%c' : '') + this.namespace + (this.useColors ? ' %c' : ' ') + args[0] + (this.useColors ? '%c ' : ' ') + '+' + module.exports.humanize(this.diff);\n\n if (!this.useColors) {\n return;\n }\n\n var c = 'color: ' + this.color;\n args.splice(1, 0, c, 'color: inherit'); // The final \"%c\" is somewhat tricky, because there could be other\n // arguments passed either before or after the %c, so we need to\n // figure out the correct index to insert the CSS into\n\n var index = 0;\n var lastC = 0;\n args[0].replace(/%[a-zA-Z%]/g, function (match) {\n if (match === '%%') {\n return;\n }\n\n index++;\n\n if (match === '%c') {\n // We only are interested in the *last* %c\n // (the user may have provided their own)\n lastC = index;\n }\n });\n args.splice(lastC, 0, c);\n}\n/**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\n\n\nfunction log() {\n var _console;\n\n // This hackery is required for IE8/9, where\n // the `console.log` function doesn't have 'apply'\n return (typeof console === \"undefined\" ? \"undefined\" : _typeof(console)) === 'object' && console.log && (_console = console).log.apply(_console, arguments);\n}\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\n\nfunction save(namespaces) {\n try {\n if (namespaces) {\n exports.storage.setItem('debug', namespaces);\n } else {\n exports.storage.removeItem('debug');\n }\n } catch (error) {// Swallow\n // XXX (@Qix-) should we be logging these?\n }\n}\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\n\nfunction load() {\n var r;\n\n try {\n r = exports.storage.getItem('debug');\n } catch (error) {} // Swallow\n // XXX (@Qix-) should we be logging these?\n // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\n\n if (!r && typeof process !== 'undefined' && 'env' in process) {\n r = process.env.DEBUG;\n }\n\n return r;\n}\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\n\nfunction localstorage() {\n try {\n // TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n // The Browser also has localStorage in the global context.\n return localStorage;\n } catch (error) {// Swallow\n // XXX (@Qix-) should we be logging these?\n }\n}\n\nmodule.exports = require('./common')(exports);\nvar formatters = module.exports.formatters;\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n try {\n return JSON.stringify(v);\n } catch (error) {\n return '[UnexpectedJSONParseError]: ' + error.message;\n }\n};\n\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/debug/src/browser.js\n// module id = 60\n// module chunks = 0 1","const _ = require('underscore');\nconst EventEmitter = require('eventemitter3');\nconst { inherits } = require('./utils');\n\nconst AdapterManager = inherits(EventEmitter, {\n constructor() {\n EventEmitter.apply(this);\n this._adapters = {};\n },\n getAdapter(name) {\n const adapter = this._adapters[name];\n if (adapter === undefined) {\n throw new Error(`${name} adapter is not configured`);\n }\n return adapter;\n },\n setAdapters(newAdapters) {\n _.extend(this._adapters, newAdapters);\n _.keys(newAdapters).forEach(name => this.emit(name, newAdapters[name]));\n },\n});\n\nconst adapterManager = new AdapterManager();\n\nmodule.exports = {\n getAdapter: adapterManager.getAdapter.bind(adapterManager),\n setAdapters: adapterManager.setAdapters.bind(adapterManager),\n adapterManager,\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/adapter.js","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar apply = FunctionPrototype.apply;\nvar call = FunctionPrototype.call;\n\n// eslint-disable-next-line es-x/no-reflect -- safe\nmodule.exports = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function () {\n return call.apply(apply, arguments);\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/function-apply.js\n// module id = 62\n// module chunks = 0 1","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es-x/no-function-prototype-bind -- safe\n var test = (function () { /* empty */ }).bind();\n // eslint-disable-next-line no-prototype-builtins -- safe\n return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/function-bind-native.js\n// module id = 63\n// module chunks = 0 1","var DESCRIPTORS = require('../internals/descriptors');\nvar call = require('../internals/function-call');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPropertyKey(P);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/object-get-own-property-descriptor.js\n// module id = 64\n// module chunks = 0 1","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n return stringSlice(toString(it), 8, -1);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/classof-raw.js\n// module id = 65\n// module chunks = 0 1","var $String = String;\n\nmodule.exports = function (argument) {\n try {\n return $String(argument);\n } catch (error) {\n return 'Object';\n }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/try-to-string.js\n// module id = 66\n// module chunks = 0 1","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.23.3',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2014-2022 Denis Pushkarev (zloirock.ru)',\n license: 'https://github.com/zloirock/core-js/blob/v3.23.3/LICENSE',\n source: 'https://github.com/zloirock/core-js'\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/shared.js\n// module id = 67\n// module chunks = 0 1","var bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar tryToString = require('../internals/try-to-string');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar iteratorClose = require('../internals/iterator-close');\n\nvar $TypeError = TypeError;\n\nvar Result = function (stopped, result) {\n this.stopped = stopped;\n this.result = result;\n};\n\nvar ResultPrototype = Result.prototype;\n\nmodule.exports = function (iterable, unboundFunction, options) {\n var that = options && options.that;\n var AS_ENTRIES = !!(options && options.AS_ENTRIES);\n var IS_ITERATOR = !!(options && options.IS_ITERATOR);\n var INTERRUPTED = !!(options && options.INTERRUPTED);\n var fn = bind(unboundFunction, that);\n var iterator, iterFn, index, length, result, next, step;\n\n var stop = function (condition) {\n if (iterator) iteratorClose(iterator, 'normal', condition);\n return new Result(true, condition);\n };\n\n var callFn = function (value) {\n if (AS_ENTRIES) {\n anObject(value);\n return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);\n } return INTERRUPTED ? fn(value, stop) : fn(value);\n };\n\n if (IS_ITERATOR) {\n iterator = iterable;\n } else {\n iterFn = getIteratorMethod(iterable);\n if (!iterFn) throw $TypeError(tryToString(iterable) + ' is not iterable');\n // optimisation for array iterators\n if (isArrayIteratorMethod(iterFn)) {\n for (index = 0, length = lengthOfArrayLike(iterable); length > index; index++) {\n result = callFn(iterable[index]);\n if (result && isPrototypeOf(ResultPrototype, result)) return result;\n } return new Result(false);\n }\n iterator = getIterator(iterable, iterFn);\n }\n\n next = iterator.next;\n while (!(step = call(next, iterator)).done) {\n try {\n result = callFn(step.value);\n } catch (error) {\n iteratorClose(iterator, 'throw', error);\n }\n if (typeof result == 'object' && result && isPrototypeOf(ResultPrototype, result)) return result;\n } return new Result(false);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/iterate.js\n// module id = 68\n// module chunks = 0 1","var classof = require('../internals/classof');\n\nvar $String = String;\n\nmodule.exports = function (argument) {\n if (classof(argument) === 'Symbol') throw TypeError('Cannot convert a Symbol value to a string');\n return $String(argument);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/to-string.js\n// module id = 69\n// module chunks = 0 1","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar Iterators = require('../internals/iterators');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineProperty = require('../internals/object-define-property').f;\nvar defineIterator = require('../internals/define-iterator');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.es/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.es/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.es/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.es/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n setInternalState(this, {\n type: ARRAY_ITERATOR,\n target: toIndexedObject(iterated), // target\n index: 0, // next index\n kind: kind // kind\n });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n var state = getInternalState(this);\n var target = state.target;\n var kind = state.kind;\n var index = state.index++;\n if (!target || index >= target.length) {\n state.target = undefined;\n return { value: undefined, done: true };\n }\n if (kind == 'keys') return { value: index, done: false };\n if (kind == 'values') return { value: target[index], done: false };\n return { value: [index, target[index]], done: false };\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.es/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.es/ecma262/#sec-createmappedargumentsobject\nvar values = Iterators.Arguments = Iterators.Array;\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n// V8 ~ Chrome 45- bug\nif (!IS_PURE && DESCRIPTORS && values.name !== 'values') try {\n defineProperty(values, 'name', { value: 'values' });\n} catch (error) { /* empty */ }\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.array.iterator.js\n// module id = 70\n// module chunks = 0 1","module.exports = function (exec) {\n try {\n return { error: false, value: exec() };\n } catch (error) {\n return { error: true, value: error };\n }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/perform.js\n// module id = 71\n// module chunks = 0 1","var global = require('../internals/global');\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar isCallable = require('../internals/is-callable');\nvar isForced = require('../internals/is-forced');\nvar inspectSource = require('../internals/inspect-source');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_BROWSER = require('../internals/engine-is-browser');\nvar IS_PURE = require('../internals/is-pure');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\nvar SPECIES = wellKnownSymbol('species');\nvar SUBCLASSING = false;\nvar NATIVE_PROMISE_REJECTION_EVENT = isCallable(global.PromiseRejectionEvent);\n\nvar FORCED_PROMISE_CONSTRUCTOR = isForced('Promise', function () {\n var PROMISE_CONSTRUCTOR_SOURCE = inspectSource(NativePromiseConstructor);\n var GLOBAL_CORE_JS_PROMISE = PROMISE_CONSTRUCTOR_SOURCE !== String(NativePromiseConstructor);\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 if (!GLOBAL_CORE_JS_PROMISE && V8_VERSION === 66) return true;\n // We need Promise#{ catch, finally } in the pure version for preventing prototype pollution\n if (IS_PURE && !(NativePromisePrototype['catch'] && NativePromisePrototype['finally'])) return true;\n // We can't use @@species feature detection in V8 since it causes\n // deoptimization and performance degradation\n // https://github.com/zloirock/core-js/issues/679\n if (V8_VERSION >= 51 && /native code/.test(PROMISE_CONSTRUCTOR_SOURCE)) return false;\n // Detect correctness of subclassing with @@species support\n var promise = new NativePromiseConstructor(function (resolve) { resolve(1); });\n var FakePromise = function (exec) {\n exec(function () { /* empty */ }, function () { /* empty */ });\n };\n var constructor = promise.constructor = {};\n constructor[SPECIES] = FakePromise;\n SUBCLASSING = promise.then(function () { /* empty */ }) instanceof FakePromise;\n if (!SUBCLASSING) return true;\n // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return !GLOBAL_CORE_JS_PROMISE && IS_BROWSER && !NATIVE_PROMISE_REJECTION_EVENT;\n});\n\nmodule.exports = {\n CONSTRUCTOR: FORCED_PROMISE_CONSTRUCTOR,\n REJECTION_EVENT: NATIVE_PROMISE_REJECTION_EVENT,\n SUBCLASSING: SUBCLASSING\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/promise-constructor-detection.js\n// module id = 72\n// module chunks = 0 1","require('../modules/es.array.iterator');\nvar DOMIterables = require('../internals/dom-iterables');\nvar global = require('../internals/global');\nvar classof = require('../internals/classof');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nfor (var COLLECTION_NAME in DOMIterables) {\n var Collection = global[COLLECTION_NAME];\n var CollectionPrototype = Collection && Collection.prototype;\n if (CollectionPrototype && classof(CollectionPrototype) !== TO_STRING_TAG) {\n createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\n }\n Iterators[COLLECTION_NAME] = Iterators.Array;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/web.dom-collections.iterator.js\n// module id = 73\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 = 74\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 = 75\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 = 76\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 = 77\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 = 78\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 = 79\n// module chunks = 0 1","var classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es-x/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(argument) {\n return classof(argument) == 'Array';\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/is-array.js\n// module id = 80\n// module chunks = 0 1","module.exports = require(\"core-js-pure/stable/instance/slice\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js-stable/instance/slice.js\n// module id = 81\n// module chunks = 0 1","var toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n var key = toPrimitive(argument, 'string');\n return isSymbol(key) ? key : key + '';\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/to-property-key.js\n// module id = 82\n// module chunks = 0 1","var getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar $Object = Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/is-symbol.js\n// module id = 83\n// module chunks = 0 1","var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n // but their correct versions are not interesting for us\n version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = +match[1];\n }\n}\n\nmodule.exports = version;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/engine-v8-version.js\n// module id = 84\n// module chunks = 0 1","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/engine-user-agent.js\n// module id = 85\n// module chunks = 0 1","var hasOwn = require('../internals/has-own-property');\nvar isCallable = require('../internals/is-callable');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar $Object = Object;\nvar ObjectPrototype = $Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n// eslint-disable-next-line es-x/no-object-getprototypeof -- safe\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function (O) {\n var object = toObject(O);\n if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];\n var constructor = object.constructor;\n if (isCallable(constructor) && object instanceof constructor) {\n return constructor.prototype;\n } return object instanceof $Object ? ObjectPrototype : null;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/object-get-prototype-of.js\n// module id = 86\n// module chunks = 0 1","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/shared-key.js\n// module id = 87\n// module chunks = 0 1","/* eslint-disable no-proto -- safe */\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es-x/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n // eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\n setter = uncurryThis(Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set);\n setter(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n anObject(O);\n aPossiblePrototype(proto);\n if (CORRECT_SETTER) setter(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/object-set-prototype-of.js\n// module id = 88\n// module chunks = 0 1","module.exports = {};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/hidden-keys.js\n// module id = 89\n// module chunks = 0 1","var classof = require('../internals/classof');\nvar getMethod = require('../internals/get-method');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (it != undefined) return getMethod(it, ITERATOR)\n || getMethod(it, '@@iterator')\n || Iterators[classof(it)];\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/get-iterator-method.js\n// module id = 90\n// module chunks = 0 1","var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = global.TypeError;\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n var store = shared.state || (shared.state = new WeakMap());\n var wmget = uncurryThis(store.get);\n var wmhas = uncurryThis(store.has);\n var wmset = uncurryThis(store.set);\n set = function (it, metadata) {\n if (wmhas(store, it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n wmset(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget(store, it) || {};\n };\n has = function (it) {\n return wmhas(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return hasOwn(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return hasOwn(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/internal-state.js\n// module id = 91\n// module chunks = 0 1","var uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof');\nvar getBuiltIn = require('../internals/get-built-in');\nvar inspectSource = require('../internals/inspect-source');\n\nvar noop = function () { /* empty */ };\nvar empty = [];\nvar construct = getBuiltIn('Reflect', 'construct');\nvar constructorRegExp = /^\\s*(?:class|function)\\b/;\nvar exec = uncurryThis(constructorRegExp.exec);\nvar INCORRECT_TO_STRING = !constructorRegExp.exec(noop);\n\nvar isConstructorModern = function isConstructor(argument) {\n if (!isCallable(argument)) return false;\n try {\n construct(noop, empty, argument);\n return true;\n } catch (error) {\n return false;\n }\n};\n\nvar isConstructorLegacy = function isConstructor(argument) {\n if (!isCallable(argument)) return false;\n switch (classof(argument)) {\n case 'AsyncFunction':\n case 'GeneratorFunction':\n case 'AsyncGeneratorFunction': return false;\n }\n try {\n // we can't check .prototype since constructors produced by .bind haven't it\n // `Function#toString` throws on some built-it function in some legacy engines\n // (for example, `DOMQuad` and similar in FF41-)\n return INCORRECT_TO_STRING || !!exec(constructorRegExp, inspectSource(argument));\n } catch (error) {\n return true;\n }\n};\n\nisConstructorLegacy.sham = true;\n\n// `IsConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-isconstructor\nmodule.exports = !construct || fails(function () {\n var called;\n return isConstructorModern(isConstructorModern.call)\n || !isConstructorModern(Object)\n || !isConstructorModern(function () { called = true; })\n || called;\n}) ? isConstructorLegacy : isConstructorModern;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/is-constructor.js\n// module id = 93\n// module chunks = 0 1","var uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis([].slice);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/array-slice.js\n// module id = 94\n// module chunks = 0 1","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\nvar toString = require('../internals/to-string');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n setInternalState(this, {\n type: STRING_ITERATOR,\n string: toString(iterated),\n index: 0\n });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n var state = getInternalState(this);\n var string = state.string;\n var index = state.index;\n var point;\n if (index >= string.length) return { value: undefined, done: true };\n point = charAt(string, index);\n state.index += point.length;\n return { value: point, done: false };\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.string.iterator.js\n// module id = 95\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 = 96\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 = 97\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 = 98\n// module chunks = 0 1","'use strict';\nvar toPropertyKey = require('../internals/to-property-key');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n var propertyKey = toPropertyKey(key);\n if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n else object[propertyKey] = value;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/create-property.js\n// module id = 99\n// module chunks = 0 1","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n // We can't use this feature detection in V8 since it causes\n // deoptimization and serious performance degradation\n // https://github.com/zloirock/core-js/issues/677\n return V8_VERSION >= 51 || !fails(function () {\n var array = [];\n var constructor = array.constructor = {};\n constructor[SPECIES] = function () {\n return { foo: 1 };\n };\n return array[METHOD_NAME](Boolean).foo !== 1;\n });\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/array-method-has-species-support.js\n// module id = 100\n// module chunks = 0 1","var bind = require('../internals/function-bind-context');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\nvar push = uncurryThis([].push);\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterReject }` methods implementation\nvar createMethod = function (TYPE) {\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 IS_FILTER_REJECT = TYPE == 7;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n return function ($this, callbackfn, that, specificCreate) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var boundFunction = bind(callbackfn, that);\n var length = lengthOfArrayLike(self);\n var index = 0;\n var create = specificCreate || arraySpeciesCreate;\n var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_REJECT ? create($this, 0) : undefined;\n var value, result;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n value = self[index];\n result = boundFunction(value, index, O);\n if (TYPE) {\n if (IS_MAP) target[index] = result; // map\n else if (result) switch (TYPE) {\n case 3: return true; // some\n case 5: return value; // find\n case 6: return index; // findIndex\n case 2: push(target, value); // filter\n } else switch (TYPE) {\n case 4: return false; // every\n case 7: push(target, value); // filterReject\n }\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.forEach` method\n // https://tc39.es/ecma262/#sec-array.prototype.foreach\n forEach: createMethod(0),\n // `Array.prototype.map` method\n // https://tc39.es/ecma262/#sec-array.prototype.map\n map: createMethod(1),\n // `Array.prototype.filter` method\n // https://tc39.es/ecma262/#sec-array.prototype.filter\n filter: createMethod(2),\n // `Array.prototype.some` method\n // https://tc39.es/ecma262/#sec-array.prototype.some\n some: createMethod(3),\n // `Array.prototype.every` method\n // https://tc39.es/ecma262/#sec-array.prototype.every\n every: createMethod(4),\n // `Array.prototype.find` method\n // https://tc39.es/ecma262/#sec-array.prototype.find\n find: createMethod(5),\n // `Array.prototype.findIndex` method\n // https://tc39.es/ecma262/#sec-array.prototype.findIndex\n findIndex: createMethod(6),\n // `Array.prototype.filterReject` method\n // https://github.com/tc39/proposal-array-filtering\n filterReject: createMethod(7)\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/array-iteration.js\n// module id = 101\n// module chunks = 0 1","module.exports = require(\"core-js-pure/stable/instance/index-of\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js-stable/instance/index-of.js\n// module id = 102\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","module.exports = require(\"core-js-pure/stable/instance/find\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js-stable/instance/find.js\n// module id = 104\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 = 105\n// module chunks = 0 1","var $TypeError = TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\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-pure/internals/require-object-coercible.js\n// module id = 106\n// module chunks = 0 1","var aCallable = require('../internals/a-callable');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n var func = V[P];\n return func == null ? undefined : aCallable(func);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/get-method.js\n// module id = 107\n// module chunks = 0 1","var global = require('../internals/global');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || defineGlobalProperty(SHARED, {});\n\nmodule.exports = store;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/shared-store.js\n// module id = 108\n// module chunks = 0 1","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/uid.js\n// module id = 109\n// module chunks = 0 1","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/document-create-element.js\n// module id = 110\n// module chunks = 0 1","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es-x/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/object-get-own-property-names.js\n// module id = 111\n// module chunks = 0 1","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toIntegerOrInfinity(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/to-absolute-index.js\n// module id = 112\n// module chunks = 0 1","var trunc = require('../internals/math-trunc');\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n var number = +argument;\n // eslint-disable-next-line no-self-compare -- NaN check\n return number !== number || number === 0 ? 0 : trunc(number);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/to-integer-or-infinity.js\n// module id = 113\n// module chunks = 0 1","// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/enum-bug-keys.js\n// module id = 114\n// module chunks = 0 1","// eslint-disable-next-line es-x/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/object-get-own-property-symbols.js\n// module id = 115\n// module chunks = 0 1","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es-x/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/object-keys.js\n// module id = 116\n// module chunks = 0 1","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/to-string-tag-support.js\n// module id = 117\n// module chunks = 0 1","var uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n store.inspectSource = function (it) {\n return functionToString(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/inspect-source.js\n// module id = 118\n// module chunks = 0 1","var classof = require('../internals/classof-raw');\nvar global = require('../internals/global');\n\nmodule.exports = classof(global.process) == 'process';\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/engine-is-node.js\n// module id = 119\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 = 120\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 = 121\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 = 122\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 = 123\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 = 124\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 = 125\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 = 126\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 = 127\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 = 128\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 = 129\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 = 130\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 = 131\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 = 132\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 = 133\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 = 134\n// module chunks = 0 1","var _Symbol = require(\"@babel/runtime-corejs3/core-js/symbol\");\n\nvar _Symbol$iterator = require(\"@babel/runtime-corejs3/core-js/symbol/iterator\");\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _typeof = \"function\" == typeof _Symbol && \"symbol\" == typeof _Symbol$iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof _Symbol && obj.constructor === _Symbol && obj !== _Symbol.prototype ? \"symbol\" : typeof obj;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(obj);\n}\n\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/helpers/typeof.js\n// module id = 135\n// module chunks = 0 1","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nexports.f = wellKnownSymbol;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/well-known-symbol-wrapped.js\n// module id = 136\n// module chunks = 0 1","module.exports = require(\"core-js-pure/features/object/define-property\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js/object/define-property.js\n// module id = 137\n// module chunks = 0 1","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/object-property-is-enumerable.js\n// module id = 138\n// module chunks = 0 1","var uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar $Object = Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !$Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split(it, '') : $Object(it);\n} : $Object;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/indexed-object.js\n// module id = 139\n// module chunks = 0 1","/* eslint-disable es-x/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\n\nmodule.exports = NATIVE_SYMBOL\n && !Symbol.sham\n && typeof Symbol.iterator == 'symbol';\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/use-symbol-as-uid.js\n// module id = 140\n// module chunks = 0 1","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es-x/no-object-defineproperty -- required for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/ie8-dom-define.js\n// module id = 141\n// module chunks = 0 1","var fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : isCallable(detection) ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/is-forced.js\n// module id = 142\n// module chunks = 0 1","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n // eslint-disable-next-line es-x/no-object-defineproperty -- required for testing\n return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n value: 42,\n writable: false\n }).prototype != 42;\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/v8-prototype-define-bug.js\n// module id = 143\n// module chunks = 0 1","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n // eslint-disable-next-line es-x/no-object-getprototypeof -- required for testing\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/correct-prototype-getter.js\n// module id = 144\n// module chunks = 0 1","var uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (hasOwn(O, key = names[i++])) {\n ~indexOf(result, key) || push(result, key);\n }\n return result;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/object-keys-internal.js\n// module id = 145\n// module chunks = 0 1","var toIndexedObject = require('../internals/to-indexed-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = lengthOfArrayLike(O);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/array-includes.js\n// module id = 146\n// module chunks = 0 1","var DESCRIPTORS = require('../internals/descriptors');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es-x/no-object-defineproperties -- safe\nexports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var props = toIndexedObject(Properties);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);\n return O;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/object-define-properties.js\n// module id = 147\n// module chunks = 0 1","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/html.js\n// module id = 148\n// module chunks = 0 1","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/is-array-iterator-method.js\n// module id = 149\n// module chunks = 0 1","var call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar tryToString = require('../internals/try-to-string');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument, usingIterator) {\n var iteratorMethod = arguments.length < 2 ? getIteratorMethod(argument) : usingIterator;\n if (aCallable(iteratorMethod)) return anObject(call(iteratorMethod, argument));\n throw $TypeError(tryToString(argument) + ' is not iterable');\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/get-iterator.js\n// module id = 150\n// module chunks = 0 1","var call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar getMethod = require('../internals/get-method');\n\nmodule.exports = function (iterator, kind, value) {\n var innerResult, innerError;\n anObject(iterator);\n try {\n innerResult = getMethod(iterator, 'return');\n if (!innerResult) {\n if (kind === 'throw') throw value;\n return value;\n }\n innerResult = call(innerResult, iterator);\n } catch (error) {\n innerError = true;\n innerResult = error;\n }\n if (kind === 'throw') throw value;\n if (innerError) throw innerResult;\n anObject(innerResult);\n return value;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/iterator-close.js\n// module id = 151\n// module chunks = 0 1","module.exports = function () { /* empty */ };\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/add-to-unscopables.js\n// module id = 152\n// module chunks = 0 1","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar IS_PURE = require('../internals/is-pure');\nvar FunctionName = require('../internals/function-name');\nvar isCallable = require('../internals/is-callable');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar PROPER_FUNCTION_NAME = FunctionName.PROPER;\nvar CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE;\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n createIteratorConstructor(IteratorConstructor, NAME, next);\n\n var getIterationMethod = function (KIND) {\n if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n switch (KIND) {\n case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n } return function () { return new IteratorConstructor(this); };\n };\n\n var TO_STRING_TAG = NAME + ' Iterator';\n var INCORRECT_VALUES_NAME = false;\n var IterablePrototype = Iterable.prototype;\n var nativeIterator = IterablePrototype[ITERATOR]\n || IterablePrototype['@@iterator']\n || DEFAULT && IterablePrototype[DEFAULT];\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n var CurrentIteratorPrototype, methods, KEY;\n\n // fix native\n if (anyNativeIterator) {\n CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n if (CurrentIteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n if (setPrototypeOf) {\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n } else if (!isCallable(CurrentIteratorPrototype[ITERATOR])) {\n defineBuiltIn(CurrentIteratorPrototype, ITERATOR, returnThis);\n }\n }\n // Set @@toStringTag to native iterators\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n }\n }\n\n // fix Array.prototype.{ values, @@iterator }.name in V8 / FF\n if (PROPER_FUNCTION_NAME && DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n if (!IS_PURE && CONFIGURABLE_FUNCTION_NAME) {\n createNonEnumerableProperty(IterablePrototype, 'name', VALUES);\n } else {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values() { return call(nativeIterator, this); };\n }\n }\n\n // export additional methods\n if (DEFAULT) {\n methods = {\n values: getIterationMethod(VALUES),\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n entries: getIterationMethod(ENTRIES)\n };\n if (FORCED) for (KEY in methods) {\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n defineBuiltIn(IterablePrototype, KEY, methods[KEY]);\n }\n } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n }\n\n // define iterator\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n defineBuiltIn(IterablePrototype, ITERATOR, defaultIterator, { name: DEFAULT });\n }\n Iterators[NAME] = defaultIterator;\n\n return methods;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/define-iterator.js\n// module id = 153\n// module chunks = 0 1","'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar create = require('../internals/object-create');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\n// `%IteratorPrototype%` object\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\n/* eslint-disable es-x/no-array-prototype-keys -- safe */\nif ([].keys) {\n arrayIterator = [].keys();\n // Safari 8 has buggy iterators w/o `next`\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\n\nvar NEW_ITERATOR_PROTOTYPE = IteratorPrototype == undefined || fails(function () {\n var test = {};\n // FF44- legacy iterators case\n return IteratorPrototype[ITERATOR].call(test) !== test;\n});\n\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\nelse if (IS_PURE) IteratorPrototype = create(IteratorPrototype);\n\n// `%IteratorPrototype%[@@iterator]()` method\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator\nif (!isCallable(IteratorPrototype[ITERATOR])) {\n defineBuiltIn(IteratorPrototype, ITERATOR, function () {\n return this;\n });\n}\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/iterators-core.js\n// module id = 154\n// module chunks = 0 1","var anObject = require('../internals/an-object');\nvar aConstructor = require('../internals/a-constructor');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aConstructor(S);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/species-constructor.js\n// module id = 155\n// module chunks = 0 1","var isConstructor = require('../internals/is-constructor');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsConstructor(argument) is true`\nmodule.exports = function (argument) {\n if (isConstructor(argument)) return argument;\n throw $TypeError(tryToString(argument) + ' is not a constructor');\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/a-constructor.js\n// module id = 156\n// module chunks = 0 1","var global = require('../internals/global');\nvar apply = require('../internals/function-apply');\nvar bind = require('../internals/function-bind-context');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar fails = require('../internals/fails');\nvar html = require('../internals/html');\nvar arraySlice = require('../internals/array-slice');\nvar createElement = require('../internals/document-create-element');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar set = global.setImmediate;\nvar clear = global.clearImmediate;\nvar process = global.process;\nvar Dispatch = global.Dispatch;\nvar Function = global.Function;\nvar MessageChannel = global.MessageChannel;\nvar String = global.String;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar location, defer, channel, port;\n\ntry {\n // Deno throws a ReferenceError on `location` access without `--location` flag\n location = global.location;\n} catch (error) { /* empty */ }\n\nvar run = function (id) {\n if (hasOwn(queue, id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\n\nvar runner = function (id) {\n return function () {\n run(id);\n };\n};\n\nvar listener = function (event) {\n run(event.data);\n};\n\nvar post = function (id) {\n // old engines have not location.origin\n global.postMessage(String(id), location.protocol + '//' + location.host);\n};\n\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!set || !clear) {\n set = function setImmediate(handler) {\n validateArgumentsLength(arguments.length, 1);\n var fn = isCallable(handler) ? handler : Function(handler);\n var args = arraySlice(arguments, 1);\n queue[++counter] = function () {\n apply(fn, undefined, args);\n };\n defer(counter);\n return counter;\n };\n clear = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (IS_NODE) {\n defer = function (id) {\n process.nextTick(runner(id));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(runner(id));\n };\n // Browsers with MessageChannel, includes WebWorkers\n // except iOS - https://github.com/zloirock/core-js/issues/624\n } else if (MessageChannel && !IS_IOS) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = bind(port.postMessage, port);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (\n global.addEventListener &&\n isCallable(global.postMessage) &&\n !global.importScripts &&\n location && location.protocol !== 'file:' &&\n !fails(post)\n ) {\n defer = post;\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in createElement('script')) {\n defer = function (id) {\n html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(runner(id), 0);\n };\n }\n}\n\nmodule.exports = {\n set: set,\n clear: clear\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/task.js\n// module id = 157\n// module chunks = 0 1","var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /(?:ipad|iphone|ipod).*applewebkit/i.test(userAgent);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/engine-is-ios.js\n// module id = 158\n// module chunks = 0 1","var NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\n\nmodule.exports = FORCED_PROMISE_CONSTRUCTOR || !checkCorrectnessOfIteration(function (iterable) {\n NativePromiseConstructor.all(iterable).then(undefined, function () { /* empty */ });\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/promise-statics-incorrect-iteration.js\n// module id = 159\n// module chunks = 0 1","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function () {\n return { done: !!called++ };\n },\n 'return': function () {\n SAFE_CLOSING = true;\n }\n };\n iteratorWithReturn[ITERATOR] = function () {\n return this;\n };\n // eslint-disable-next-line es-x/no-array-from, no-throw-literal -- required for testing\n Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n object[ITERATOR] = function () {\n return {\n next: function () {\n return { done: ITERATION_SUPPORT = true };\n }\n };\n };\n exec(object);\n } catch (error) { /* empty */ }\n return ITERATION_SUPPORT;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/check-correctness-of-iteration.js\n// module id = 160\n// module chunks = 0 1","var anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar newPromiseCapability = require('../internals/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-pure/internals/promise-resolve.js\n// module id = 161\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 = 162\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 = 163\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 = 164\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 = 165\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 = 166\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 = 167\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 = 168\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 = 169\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 = 170\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 = 171\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 = 172\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 = 173\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 = 174\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 = 175\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 = 176\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 = 177\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 = 178\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 = 179\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 = 180\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 = 181\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 = 182\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 = 183\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 = 184\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 = 185\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 = 186\n// module chunks = 0 1","// Internal list of HTML entities for escaping.\nexport default {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '`': '`'\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_escapeMap.js\n// module id = 187\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 = 188\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 = 189\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 = 190\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 = 191\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 = 192\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 = 193\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 = 194\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 = 195\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 = 196\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 = 197\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 = 198\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 = 199\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 = 200\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 = 201\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 = 202\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 = 203\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 = 204\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 = 205\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 = 206\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 = 207\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 = 208\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 = 209\n// module chunks = 0 1","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\nvar createProperty = require('../internals/create-property');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\n\n// We can't use this feature detection in V8 since it causes\n// deoptimization and serious performance degradation\n// https://github.com/zloirock/core-js/issues/679\nvar IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () {\n var array = [];\n array[IS_CONCAT_SPREADABLE] = false;\n return array.concat()[0] !== array;\n});\n\nvar SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat');\n\nvar isConcatSpreadable = function (O) {\n if (!isObject(O)) return false;\n var spreadable = O[IS_CONCAT_SPREADABLE];\n return spreadable !== undefined ? !!spreadable : isArray(O);\n};\n\nvar FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT;\n\n// `Array.prototype.concat` method\n// https://tc39.es/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\n$({ target: 'Array', proto: true, arity: 1, forced: FORCED }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n concat: function concat(arg) {\n var O = toObject(this);\n var A = arraySpeciesCreate(O, 0);\n var n = 0;\n var i, k, length, len, E;\n for (i = -1, length = arguments.length; i < length; i++) {\n E = i === -1 ? O : arguments[i];\n if (isConcatSpreadable(E)) {\n len = lengthOfArrayLike(E);\n doesNotExceedSafeInteger(n + len);\n for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n } else {\n doesNotExceedSafeInteger(n + 1);\n createProperty(A, n++, E);\n }\n }\n A.length = n;\n return A;\n }\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.array.concat.js\n// module id = 210\n// module chunks = 0 1","var arraySpeciesConstructor = require('../internals/array-species-constructor');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/array-species-create.js\n// module id = 211\n// module chunks = 0 1","module.exports = require(\"core-js-pure/stable/object/keys\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js-stable/object/keys.js\n// module id = 212\n// module chunks = 0 1","var $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar apply = require('../internals/function-apply');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isArray = require('../internals/is-array');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar arraySlice = require('../internals/array-slice');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\n\nvar $stringify = getBuiltIn('JSON', 'stringify');\nvar exec = uncurryThis(/./.exec);\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar replace = uncurryThis(''.replace);\nvar numberToString = uncurryThis(1.0.toString);\n\nvar tester = /[\\uD800-\\uDFFF]/g;\nvar low = /^[\\uD800-\\uDBFF]$/;\nvar hi = /^[\\uDC00-\\uDFFF]$/;\n\nvar WRONG_SYMBOLS_CONVERSION = !NATIVE_SYMBOL || fails(function () {\n var symbol = getBuiltIn('Symbol')();\n // MS Edge converts symbol values to JSON as {}\n return $stringify([symbol]) != '[null]'\n // WebKit converts symbol values to JSON as null\n || $stringify({ a: symbol }) != '{}'\n // V8 throws on boxed symbols\n || $stringify(Object(symbol)) != '{}';\n});\n\n// https://github.com/tc39/proposal-well-formed-stringify\nvar ILL_FORMED_UNICODE = fails(function () {\n return $stringify('\\uDF06\\uD834') !== '\"\\\\udf06\\\\ud834\"'\n || $stringify('\\uDEAD') !== '\"\\\\udead\"';\n});\n\nvar stringifyWithSymbolsFix = function (it, replacer) {\n var args = arraySlice(arguments);\n var $replacer = replacer;\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (isCallable($replacer)) value = call($replacer, this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return apply($stringify, null, args);\n};\n\nvar fixIllFormed = function (match, offset, string) {\n var prev = charAt(string, offset - 1);\n var next = charAt(string, offset + 1);\n if ((exec(low, match) && !exec(hi, next)) || (exec(hi, match) && !exec(low, prev))) {\n return '\\\\u' + numberToString(charCodeAt(match, 0), 16);\n } return match;\n};\n\nif ($stringify) {\n // `JSON.stringify` method\n // https://tc39.es/ecma262/#sec-json.stringify\n $({ target: 'JSON', stat: true, arity: 3, forced: WRONG_SYMBOLS_CONVERSION || ILL_FORMED_UNICODE }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n stringify: function stringify(it, replacer, space) {\n var args = arraySlice(arguments);\n var result = apply(WRONG_SYMBOLS_CONVERSION ? stringifyWithSymbolsFix : $stringify, null, args);\n return ILL_FORMED_UNICODE && typeof result == 'string' ? replace(result, tester, fixIllFormed) : result;\n }\n });\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.json.stringify.js\n// module id = 213\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 = 214\n// module chunks = 0 1","module.exports = require(\"core-js-pure/stable/object/get-prototype-of\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js-stable/object/get-prototype-of.js\n// module id = 215\n// module chunks = 0 1","var parent = require('../../es/object/get-prototype-of');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/stable/object/get-prototype-of.js\n// module id = 216\n// module chunks = 0 1","module.exports = '4.15.1';\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 = 218\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","var parent = require('../../es/object/set-prototype-of');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/stable/object/set-prototype-of.js\n// module id = 221\n// module chunks = 0 1","var parent = require('../../es/instance/slice');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/stable/instance/slice.js\n// module id = 222\n// module chunks = 0 1","module.exports = require(\"core-js-pure/stable/object/define-property\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js-stable/object/define-property.js\n// module id = 223\n// module chunks = 0 1","var parent = require('../../es/object/define-property');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/stable/object/define-property.js\n// module id = 224\n// module chunks = 0 1","module.exports = require(\"core-js-pure/features/symbol\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js/symbol.js\n// module id = 225\n// module chunks = 0 1","var parent = require('../../es/symbol');\nrequire('../../modules/web.dom-collections.iterator');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/stable/symbol/index.js\n// module id = 226\n// module chunks = 0 1","var call = require('../internals/function-call');\nvar getBuiltIn = require('../internals/get-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar defineBuiltIn = require('../internals/define-built-in');\n\nmodule.exports = function () {\n var Symbol = getBuiltIn('Symbol');\n var SymbolPrototype = Symbol && Symbol.prototype;\n var valueOf = SymbolPrototype && SymbolPrototype.valueOf;\n var TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n if (SymbolPrototype && !SymbolPrototype[TO_PRIMITIVE]) {\n // `Symbol.prototype[@@toPrimitive]` method\n // https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\n // eslint-disable-next-line no-unused-vars -- required for .length\n defineBuiltIn(SymbolPrototype, TO_PRIMITIVE, function (hint) {\n return call(valueOf, this);\n }, { arity: 1 });\n }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/symbol-define-to-primitive.js\n// module id = 227\n// module chunks = 0 1","var NATIVE_SYMBOL = require('../internals/native-symbol');\n\n/* eslint-disable es-x/no-symbol -- safe */\nmodule.exports = NATIVE_SYMBOL && !!Symbol['for'] && !!Symbol.keyFor;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/native-symbol-registry.js\n// module id = 228\n// module chunks = 0 1","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.iterator` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.iterator\ndefineWellKnownSymbol('iterator');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.symbol.iterator.js\n// module id = 229\n// module chunks = 0 1","var parent = require('../../es/array/from');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/stable/array/from.js\n// module id = 230\n// module chunks = 0 1","module.exports = require(\"core-js-pure/features/get-iterator-method\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js/get-iterator-method.js\n// module id = 231\n// module chunks = 0 1","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar isObject = require('../internals/is-object');\nvar hasOwn = require('../internals/has-own-property');\nvar arraySlice = require('../internals/array-slice');\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar $Function = Function;\nvar concat = uncurryThis([].concat);\nvar join = uncurryThis([].join);\nvar factories = {};\n\nvar construct = function (C, argsLength, args) {\n if (!hasOwn(factories, argsLength)) {\n for (var list = [], i = 0; i < argsLength; i++) list[i] = 'a[' + i + ']';\n factories[argsLength] = $Function('C,a', 'return new C(' + join(list, ',') + ')');\n } return factories[argsLength](C, args);\n};\n\n// `Function.prototype.bind` method implementation\n// https://tc39.es/ecma262/#sec-function.prototype.bind\nmodule.exports = NATIVE_BIND ? $Function.bind : function bind(that /* , ...args */) {\n var F = aCallable(this);\n var Prototype = F.prototype;\n var partArgs = arraySlice(arguments, 1);\n var boundFunction = function bound(/* args... */) {\n var args = concat(partArgs, arraySlice(arguments));\n return this instanceof boundFunction ? construct(F, args.length, args) : F.apply(that, args);\n };\n if (isObject(Prototype)) boundFunction.prototype = Prototype;\n return boundFunction;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/function-bind.js\n// module id = 232\n// module chunks = 0 1","module.exports = require(\"core-js-pure/features/object/set-prototype-of\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js/object/set-prototype-of.js\n// module id = 233\n// module chunks = 0 1","module.exports = require(\"core-js-pure/features/instance/bind\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js/instance/bind.js\n// module id = 234\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 = 235\n// module chunks = 0 1","module.exports = require('../index');\n\n\n\n// WEBPACK FOOTER //\n// ./src/entry/core.js","/*!\n * LeanCloud JavaScript SDK\n * https://leancloud.cn\n *\n * Copyright 2016 LeanCloud.cn, Inc.\n * The LeanCloud JavaScript SDK is freely distributable under the MIT license.\n */\nconst _ = require('underscore');\n\nconst AV = require('./av');\n\nAV._ = _;\nAV.version = require('./version');\nAV.Promise = Promise;\nAV.localStorage = require('./localstorage');\nAV.Cache = require('./cache');\nAV.Error = require('./error');\n\nrequire('./init');\nrequire('./event')(AV);\nrequire('./geopoint')(AV);\nrequire('./acl')(AV);\nrequire('./op')(AV);\nrequire('./relation')(AV);\nrequire('./file')(AV);\nrequire('./object')(AV);\nrequire('./role')(AV);\nrequire('./user')(AV);\nrequire('./query')(AV);\nrequire('./live-query')(AV);\nrequire('./captcha')(AV);\nrequire('./cloudfunction')(AV);\nrequire('./push')(AV);\nrequire('./status')(AV);\nrequire('./search')(AV);\nrequire('./insight')(AV);\nrequire('./friendship')(AV);\n\nAV.Conversation = require('./conversation');\nrequire('./leaderboard');\nmodule.exports = AV;\n\n/**\n * Options to controll the authentication for an operation\n * @typedef {Object} AuthOptions\n * @property {String} [sessionToken] Specify a user to excute the operation as.\n * @property {AV.User} [user] Specify a user to excute the operation as. The user must have _sessionToken. This option will be ignored if sessionToken option provided.\n * @property {Boolean} [useMasterKey] Indicates whether masterKey is used for this operation. Only valid when masterKey is set.\n */\n\n/**\n * Options to controll the authentication for an SMS operation\n * @typedef {Object} SMSAuthOptions\n * @property {String} [sessionToken] Specify a user to excute the operation as.\n * @property {AV.User} [user] Specify a user to excute the operation as. The user must have _sessionToken. This option will be ignored if sessionToken option provided.\n * @property {Boolean} [useMasterKey] Indicates whether masterKey is used for this operation. Only valid when masterKey is set.\n * @property {String} [validateToken] a validate token returned by {@link AV.Cloud.verifyCaptcha}\n */\n\n\n\n// WEBPACK FOOTER //\n// ./src/index.js","var parent = require('../../es/promise');\nrequire('../../modules/web.dom-collections.iterator');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/stable/promise/index.js\n// module id = 238\n// module chunks = 0 1","require('../../modules/es.aggregate-error');\nrequire('../../modules/es.array.iterator');\nrequire('../../modules/es.object.to-string');\nrequire('../../modules/es.promise');\nrequire('../../modules/es.promise.all-settled');\nrequire('../../modules/es.promise.any');\nrequire('../../modules/es.promise.finally');\nrequire('../../modules/es.string.iterator');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Promise;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/promise/index.js\n// module id = 239\n// module chunks = 0 1","// TODO: Remove this module from `core-js@4` since it's replaced to module below\nrequire('../modules/es.aggregate-error.constructor');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.aggregate-error.js\n// module id = 240\n// module chunks = 0 1","'use strict';\nvar $ = require('../internals/export');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar create = require('../internals/object-create');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar clearErrorStack = require('../internals/clear-error-stack');\nvar installErrorCause = require('../internals/install-error-cause');\nvar iterate = require('../internals/iterate');\nvar normalizeStringArgument = require('../internals/normalize-string-argument');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar ERROR_STACK_INSTALLABLE = require('../internals/error-stack-installable');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar $Error = Error;\nvar push = [].push;\n\nvar $AggregateError = function AggregateError(errors, message /* , options */) {\n var options = arguments.length > 2 ? arguments[2] : undefined;\n var isInstance = isPrototypeOf(AggregateErrorPrototype, this);\n var that;\n if (setPrototypeOf) {\n that = setPrototypeOf(new $Error(), isInstance ? getPrototypeOf(this) : AggregateErrorPrototype);\n } else {\n that = isInstance ? this : create(AggregateErrorPrototype);\n createNonEnumerableProperty(that, TO_STRING_TAG, 'Error');\n }\n if (message !== undefined) createNonEnumerableProperty(that, 'message', normalizeStringArgument(message));\n if (ERROR_STACK_INSTALLABLE) createNonEnumerableProperty(that, 'stack', clearErrorStack(that.stack, 1));\n installErrorCause(that, options);\n var errorsArray = [];\n iterate(errors, push, { that: errorsArray });\n createNonEnumerableProperty(that, 'errors', errorsArray);\n return that;\n};\n\nif (setPrototypeOf) setPrototypeOf($AggregateError, $Error);\nelse copyConstructorProperties($AggregateError, $Error, { name: true });\n\nvar AggregateErrorPrototype = $AggregateError.prototype = create($Error.prototype, {\n constructor: createPropertyDescriptor(1, $AggregateError),\n message: createPropertyDescriptor(1, ''),\n name: createPropertyDescriptor(1, 'AggregateError')\n});\n\n// `AggregateError` constructor\n// https://tc39.es/ecma262/#sec-aggregate-error-constructor\n$({ global: true, constructor: true, arity: 2 }, {\n AggregateError: $AggregateError\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.aggregate-error.constructor.js\n// module id = 241\n// module chunks = 0 1","var call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar $TypeError = TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n var result;\n if (exoticToPrim) {\n if (pref === undefined) pref = 'default';\n result = call(exoticToPrim, input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw $TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/to-primitive.js\n// module id = 242\n// module chunks = 0 1","var call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar $TypeError = TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n var fn, val;\n if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) 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-pure/internals/ordinary-to-primitive.js\n// module id = 243\n// module chunks = 0 1","var global = require('../internals/global');\n\n// eslint-disable-next-line es-x/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n try {\n defineProperty(global, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n global[key] = value;\n } return value;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/define-global-property.js\n// module id = 244\n// module chunks = 0 1","var isCallable = require('../internals/is-callable');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument) {\n if (typeof argument == 'object' || isCallable(argument)) return argument;\n throw $TypeError(\"Can't set \" + $String(argument) + ' as a prototype');\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/a-possible-prototype.js\n// module id = 245\n// module chunks = 0 1","var hasOwn = require('../internals/has-own-property');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source, exceptions) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\n defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/copy-constructor-properties.js\n// module id = 246\n// module chunks = 0 1","var getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\nvar concat = uncurryThis([].concat);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/own-keys.js\n// module id = 247\n// module chunks = 0 1","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `Math.trunc` method\n// https://tc39.es/ecma262/#sec-math.trunc\n// eslint-disable-next-line es-x/no-math-trunc -- safe\nmodule.exports = Math.trunc || function trunc(x) {\n var n = +x;\n return (n > 0 ? floor : ceil)(n);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/math-trunc.js\n// module id = 248\n// module chunks = 0 1","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/to-length.js\n// module id = 249\n// module chunks = 0 1","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar $Error = Error;\nvar replace = uncurryThis(''.replace);\n\nvar TEST = (function (arg) { return String($Error(arg).stack); })('zxcasd');\nvar V8_OR_CHAKRA_STACK_ENTRY = /\\n\\s*at [^:]*:[^\\n]*/;\nvar IS_V8_OR_CHAKRA_STACK = V8_OR_CHAKRA_STACK_ENTRY.test(TEST);\n\nmodule.exports = function (stack, dropEntries) {\n if (IS_V8_OR_CHAKRA_STACK && typeof stack == 'string' && !$Error.prepareStackTrace) {\n while (dropEntries--) stack = replace(stack, V8_OR_CHAKRA_STACK_ENTRY, '');\n } return stack;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/clear-error-stack.js\n// module id = 250\n// module chunks = 0 1","var isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\n// `InstallErrorCause` abstract operation\n// https://tc39.es/proposal-error-cause/#sec-errorobjects-install-error-cause\nmodule.exports = function (O, options) {\n if (isObject(options) && 'cause' in options) {\n createNonEnumerableProperty(O, 'cause', options.cause);\n }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/install-error-cause.js\n// module id = 251\n// module chunks = 0 1","var toString = require('../internals/to-string');\n\nmodule.exports = function (argument, $default) {\n return argument === undefined ? arguments.length < 2 ? '' : $default : toString(argument);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/normalize-string-argument.js\n// module id = 252\n// module chunks = 0 1","var fails = require('../internals/fails');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = !fails(function () {\n var error = Error('a');\n if (!('stack' in error)) return true;\n // eslint-disable-next-line es-x/no-object-defineproperty -- safe\n Object.defineProperty(error, 'stack', createPropertyDescriptor(1, 7));\n return error.stack !== 7;\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/error-stack-installable.js\n// module id = 253\n// module chunks = 0 1","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar inspectSource = require('../internals/inspect-source');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(inspectSource(WeakMap));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/native-weak-map.js\n// module id = 254\n// module chunks = 0 1","var DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n EXISTS: EXISTS,\n PROPER: PROPER,\n CONFIGURABLE: CONFIGURABLE\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/function-name.js\n// module id = 255\n// module chunks = 0 1","'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next, ENUMERABLE_NEXT) {\n var TO_STRING_TAG = NAME + ' Iterator';\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(+!ENUMERABLE_NEXT, next) });\n setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n Iterators[TO_STRING_TAG] = returnThis;\n return IteratorConstructor;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/create-iterator-constructor.js\n// module id = 256\n// module chunks = 0 1","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classof = require('../internals/classof');\n\n// `Object.prototype.toString` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n return '[object ' + classof(this) + ']';\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/object-to-string.js\n// module id = 257\n// module chunks = 0 1","// TODO: Remove this module from `core-js@4` since it's split to modules listed below\nrequire('../modules/es.promise.constructor');\nrequire('../modules/es.promise.all');\nrequire('../modules/es.promise.catch');\nrequire('../modules/es.promise.race');\nrequire('../modules/es.promise.reject');\nrequire('../modules/es.promise.resolve');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.promise.js\n// module id = 258\n// module chunks = 0 1","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar IS_NODE = require('../internals/engine-is-node');\nvar global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar setSpecies = require('../internals/set-species');\nvar aCallable = require('../internals/a-callable');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar anInstance = require('../internals/an-instance');\nvar speciesConstructor = require('../internals/species-constructor');\nvar task = require('../internals/task').set;\nvar microtask = require('../internals/microtask');\nvar hostReportErrors = require('../internals/host-report-errors');\nvar perform = require('../internals/perform');\nvar Queue = require('../internals/queue');\nvar InternalStateModule = require('../internals/internal-state');\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar PromiseConstructorDetection = require('../internals/promise-constructor-detection');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\n\nvar PROMISE = 'Promise';\nvar FORCED_PROMISE_CONSTRUCTOR = PromiseConstructorDetection.CONSTRUCTOR;\nvar NATIVE_PROMISE_REJECTION_EVENT = PromiseConstructorDetection.REJECTION_EVENT;\nvar NATIVE_PROMISE_SUBCLASSING = PromiseConstructorDetection.SUBCLASSING;\nvar getInternalPromiseState = InternalStateModule.getterFor(PROMISE);\nvar setInternalState = InternalStateModule.set;\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\nvar PromiseConstructor = NativePromiseConstructor;\nvar PromisePrototype = NativePromisePrototype;\nvar TypeError = global.TypeError;\nvar document = global.document;\nvar process = global.process;\nvar newPromiseCapability = newPromiseCapabilityModule.f;\nvar newGenericPromiseCapability = newPromiseCapability;\n\nvar DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent);\nvar UNHANDLED_REJECTION = 'unhandledrejection';\nvar REJECTION_HANDLED = 'rejectionhandled';\nvar PENDING = 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\nvar HANDLED = 1;\nvar UNHANDLED = 2;\n\nvar Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && isCallable(then = it.then) ? then : false;\n};\n\nvar callReaction = function (reaction, state) {\n var value = state.value;\n var ok = state.state == FULFILLED;\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 (state.rejection === UNHANDLED) onHandleUnhandled(state);\n state.rejection = HANDLED;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // can 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 call(then, result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (error) {\n if (domain && !exited) domain.exit();\n reject(error);\n }\n};\n\nvar notify = function (state, isReject) {\n if (state.notified) return;\n state.notified = true;\n microtask(function () {\n var reactions = state.reactions;\n var reaction;\n while (reaction = reactions.get()) {\n callReaction(reaction, state);\n }\n state.notified = false;\n if (isReject && !state.rejection) onUnhandled(state);\n });\n};\n\nvar dispatchEvent = function (name, promise, reason) {\n var event, handler;\n if (DISPATCH_EVENT) {\n event = document.createEvent('Event');\n event.promise = promise;\n event.reason = reason;\n event.initEvent(name, false, true);\n global.dispatchEvent(event);\n } else event = { promise: promise, reason: reason };\n if (!NATIVE_PROMISE_REJECTION_EVENT && (handler = global['on' + name])) handler(event);\n else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason);\n};\n\nvar onUnhandled = function (state) {\n call(task, global, function () {\n var promise = state.facade;\n var value = state.value;\n var IS_UNHANDLED = isUnhandled(state);\n var result;\n if (IS_UNHANDLED) {\n result = perform(function () {\n if (IS_NODE) {\n process.emit('unhandledRejection', value, promise);\n } else dispatchEvent(UNHANDLED_REJECTION, promise, value);\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED;\n if (result.error) throw result.value;\n }\n });\n};\n\nvar isUnhandled = function (state) {\n return state.rejection !== HANDLED && !state.parent;\n};\n\nvar onHandleUnhandled = function (state) {\n call(task, global, function () {\n var promise = state.facade;\n if (IS_NODE) {\n process.emit('rejectionHandled', promise);\n } else dispatchEvent(REJECTION_HANDLED, promise, state.value);\n });\n};\n\nvar bind = function (fn, state, unwrap) {\n return function (value) {\n fn(state, value, unwrap);\n };\n};\n\nvar internalReject = function (state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n state.value = value;\n state.state = REJECTED;\n notify(state, true);\n};\n\nvar internalResolve = function (state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n try {\n if (state.facade === value) throw TypeError(\"Promise can't be resolved itself\");\n var then = isThenable(value);\n if (then) {\n microtask(function () {\n var wrapper = { done: false };\n try {\n call(then, value,\n bind(internalResolve, wrapper, state),\n bind(internalReject, wrapper, state)\n );\n } catch (error) {\n internalReject(wrapper, error, state);\n }\n });\n } else {\n state.value = value;\n state.state = FULFILLED;\n notify(state, false);\n }\n } catch (error) {\n internalReject({ done: false }, error, state);\n }\n};\n\n// constructor polyfill\nif (FORCED_PROMISE_CONSTRUCTOR) {\n // 25.4.3.1 Promise(executor)\n PromiseConstructor = function Promise(executor) {\n anInstance(this, PromisePrototype);\n aCallable(executor);\n call(Internal, this);\n var state = getInternalPromiseState(this);\n try {\n executor(bind(internalResolve, state), bind(internalReject, state));\n } catch (error) {\n internalReject(state, error);\n }\n };\n\n PromisePrototype = PromiseConstructor.prototype;\n\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n Internal = function Promise(executor) {\n setInternalState(this, {\n type: PROMISE,\n done: false,\n notified: false,\n parent: false,\n reactions: new Queue(),\n rejection: false,\n state: PENDING,\n value: undefined\n });\n };\n\n // `Promise.prototype.then` method\n // https://tc39.es/ecma262/#sec-promise.prototype.then\n Internal.prototype = defineBuiltIn(PromisePrototype, 'then', function then(onFulfilled, onRejected) {\n var state = getInternalPromiseState(this);\n var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor));\n state.parent = true;\n reaction.ok = isCallable(onFulfilled) ? onFulfilled : true;\n reaction.fail = isCallable(onRejected) && onRejected;\n reaction.domain = IS_NODE ? process.domain : undefined;\n if (state.state == PENDING) state.reactions.add(reaction);\n else microtask(function () {\n callReaction(reaction, state);\n });\n return reaction.promise;\n });\n\n OwnPromiseCapability = function () {\n var promise = new Internal();\n var state = getInternalPromiseState(promise);\n this.promise = promise;\n this.resolve = bind(internalResolve, state);\n this.reject = bind(internalReject, state);\n };\n\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === PromiseConstructor || C === PromiseWrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n\n if (!IS_PURE && isCallable(NativePromiseConstructor) && NativePromisePrototype !== Object.prototype) {\n nativeThen = NativePromisePrototype.then;\n\n if (!NATIVE_PROMISE_SUBCLASSING) {\n // make `Promise#then` return a polyfilled `Promise` for native promise-based APIs\n defineBuiltIn(NativePromisePrototype, 'then', function then(onFulfilled, onRejected) {\n var that = this;\n return new PromiseConstructor(function (resolve, reject) {\n call(nativeThen, that, resolve, reject);\n }).then(onFulfilled, onRejected);\n // https://github.com/zloirock/core-js/issues/640\n }, { unsafe: true });\n }\n\n // make `.constructor === Promise` work for native promise-based APIs\n try {\n delete NativePromisePrototype.constructor;\n } catch (error) { /* empty */ }\n\n // make `instanceof Promise` work for native promise-based APIs\n if (setPrototypeOf) {\n setPrototypeOf(NativePromisePrototype, PromisePrototype);\n }\n }\n}\n\n$({ global: true, constructor: true, wrap: true, forced: FORCED_PROMISE_CONSTRUCTOR }, {\n Promise: PromiseConstructor\n});\n\nsetToStringTag(PromiseConstructor, PROMISE, false, true);\nsetSpecies(PROMISE);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.promise.constructor.js\n// module id = 259\n// module chunks = 0 1","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar definePropertyModule = require('../internals/object-define-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n var defineProperty = definePropertyModule.f;\n\n if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n defineProperty(Constructor, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/set-species.js\n// module id = 260\n// module chunks = 0 1","var isPrototypeOf = require('../internals/object-is-prototype-of');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (it, Prototype) {\n if (isPrototypeOf(Prototype, it)) return it;\n throw $TypeError('Incorrect invocation');\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/an-instance.js\n// module id = 261\n// module chunks = 0 1","var $TypeError = TypeError;\n\nmodule.exports = function (passed, required) {\n if (passed < required) throw $TypeError('Not enough arguments');\n return passed;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/validate-arguments-length.js\n// module id = 262\n// module chunks = 0 1","var global = require('../internals/global');\nvar bind = require('../internals/function-bind-context');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar macrotask = require('../internals/task').set;\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_IOS_PEBBLE = require('../internals/engine-is-ios-pebble');\nvar IS_WEBOS_WEBKIT = require('../internals/engine-is-webos-webkit');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar MutationObserver = global.MutationObserver || global.WebKitMutationObserver;\nvar document = global.document;\nvar process = global.process;\nvar Promise = global.Promise;\n// Node.js 11 shows ExperimentalWarning on getting `queueMicrotask`\nvar queueMicrotaskDescriptor = getOwnPropertyDescriptor(global, 'queueMicrotask');\nvar queueMicrotask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value;\n\nvar flush, head, last, notify, toggle, node, promise, then;\n\n// modern engines have queueMicrotask method\nif (!queueMicrotask) {\n flush = function () {\n var parent, fn;\n if (IS_NODE && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (error) {\n if (head) notify();\n else last = undefined;\n throw error;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339\n // also except WebOS Webkit https://github.com/zloirock/core-js/issues/898\n if (!IS_IOS && !IS_NODE && !IS_WEBOS_WEBKIT && MutationObserver && document) {\n toggle = true;\n node = document.createTextNode('');\n new MutationObserver(flush).observe(node, { characterData: true });\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (!IS_IOS_PEBBLE && Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n promise = Promise.resolve(undefined);\n // workaround of WebKit ~ iOS Safari 10.1 bug\n promise.constructor = Promise;\n then = bind(promise.then, promise);\n notify = function () {\n then(flush);\n };\n // Node.js without promises\n } else if (IS_NODE) {\n notify = function () {\n process.nextTick(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessage\n // - onreadystatechange\n // - setTimeout\n } else {\n // strange IE + webpack dev server bug - use .bind(global)\n macrotask = bind(macrotask, global);\n notify = function () {\n macrotask(flush);\n };\n }\n}\n\nmodule.exports = queueMicrotask || 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// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/microtask.js\n// module id = 263\n// module chunks = 0 1","var userAgent = require('../internals/engine-user-agent');\nvar global = require('../internals/global');\n\nmodule.exports = /ipad|iphone|ipod/i.test(userAgent) && global.Pebble !== undefined;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/engine-is-ios-pebble.js\n// module id = 264\n// module chunks = 0 1","var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /web0s(?!.*chrome)/i.test(userAgent);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/engine-is-webos-webkit.js\n// module id = 265\n// module chunks = 0 1","var global = require('../internals/global');\n\nmodule.exports = function (a, b) {\n var console = global.console;\n if (console && console.error) {\n arguments.length == 1 ? console.error(a) : console.error(a, b);\n }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/host-report-errors.js\n// module id = 266\n// module chunks = 0 1","var Queue = function () {\n this.head = null;\n this.tail = null;\n};\n\nQueue.prototype = {\n add: function (item) {\n var entry = { item: item, next: null };\n if (this.head) this.tail.next = entry;\n else this.head = entry;\n this.tail = entry;\n },\n get: function () {\n var entry = this.head;\n if (entry) {\n this.head = entry.next;\n if (this.tail === entry) this.tail = null;\n return entry.item;\n }\n }\n};\n\nmodule.exports = Queue;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/queue.js\n// module id = 267\n// module chunks = 0 1","module.exports = typeof window == 'object' && typeof Deno != 'object';\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/engine-is-browser.js\n// module id = 268\n// module chunks = 0 1","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar iterate = require('../internals/iterate');\nvar PROMISE_STATICS_INCORRECT_ITERATION = require('../internals/promise-statics-incorrect-iteration');\n\n// `Promise.all` method\n// https://tc39.es/ecma262/#sec-promise.all\n$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, {\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapabilityModule.f(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aCallable(C.resolve);\n var values = [];\n var counter = 0;\n var remaining = 1;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyCalled = false;\n remaining++;\n call($promiseResolve, C, 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.error) reject(result.value);\n return capability.promise;\n }\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.promise.all.js\n// module id = 269\n// module chunks = 0 1","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar defineBuiltIn = require('../internals/define-built-in');\n\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\n\n// `Promise.prototype.catch` method\n// https://tc39.es/ecma262/#sec-promise.prototype.catch\n$({ target: 'Promise', proto: true, forced: FORCED_PROMISE_CONSTRUCTOR, real: true }, {\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n});\n\n// makes sure that native promise-based APIs `Promise#catch` properly works with patched `Promise#then`\nif (!IS_PURE && isCallable(NativePromiseConstructor)) {\n var method = getBuiltIn('Promise').prototype['catch'];\n if (NativePromisePrototype['catch'] !== method) {\n defineBuiltIn(NativePromisePrototype, 'catch', method, { unsafe: true });\n }\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.promise.catch.js\n// module id = 270\n// module chunks = 0 1","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar iterate = require('../internals/iterate');\nvar PROMISE_STATICS_INCORRECT_ITERATION = require('../internals/promise-statics-incorrect-iteration');\n\n// `Promise.race` method\n// https://tc39.es/ecma262/#sec-promise.race\n$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, {\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapabilityModule.f(C);\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aCallable(C.resolve);\n iterate(iterable, function (promise) {\n call($promiseResolve, C, promise).then(capability.resolve, reject);\n });\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.promise.race.js\n// module id = 271\n// module chunks = 0 1","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\n\n// `Promise.reject` method\n// https://tc39.es/ecma262/#sec-promise.reject\n$({ target: 'Promise', stat: true, forced: FORCED_PROMISE_CONSTRUCTOR }, {\n reject: function reject(r) {\n var capability = newPromiseCapabilityModule.f(this);\n call(capability.reject, undefined, r);\n return capability.promise;\n }\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.promise.reject.js\n// module id = 272\n// module chunks = 0 1","'use strict';\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar IS_PURE = require('../internals/is-pure');\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\nvar promiseResolve = require('../internals/promise-resolve');\n\nvar PromiseConstructorWrapper = getBuiltIn('Promise');\nvar CHECK_WRAPPER = IS_PURE && !FORCED_PROMISE_CONSTRUCTOR;\n\n// `Promise.resolve` method\n// https://tc39.es/ecma262/#sec-promise.resolve\n$({ target: 'Promise', stat: true, forced: IS_PURE || FORCED_PROMISE_CONSTRUCTOR }, {\n resolve: function resolve(x) {\n return promiseResolve(CHECK_WRAPPER && this === PromiseConstructorWrapper ? NativePromiseConstructor : this, x);\n }\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.promise.resolve.js\n// module id = 273\n// module chunks = 0 1","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar iterate = require('../internals/iterate');\n\n// `Promise.allSettled` method\n// https://tc39.es/ecma262/#sec-promise.allsettled\n$({ target: 'Promise', stat: true }, {\n allSettled: function allSettled(iterable) {\n var C = this;\n var capability = newPromiseCapabilityModule.f(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var promiseResolve = aCallable(C.resolve);\n var values = [];\n var counter = 0;\n var remaining = 1;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyCalled = false;\n remaining++;\n call(promiseResolve, C, promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[index] = { status: 'fulfilled', value: value };\n --remaining || resolve(values);\n }, function (error) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[index] = { status: 'rejected', reason: error };\n --remaining || resolve(values);\n });\n });\n --remaining || resolve(values);\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.promise.all-settled.js\n// module id = 274\n// module chunks = 0 1","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar getBuiltIn = require('../internals/get-built-in');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar iterate = require('../internals/iterate');\n\nvar PROMISE_ANY_ERROR = 'No one promise resolved';\n\n// `Promise.any` method\n// https://tc39.es/ecma262/#sec-promise.any\n$({ target: 'Promise', stat: true }, {\n any: function any(iterable) {\n var C = this;\n var AggregateError = getBuiltIn('AggregateError');\n var capability = newPromiseCapabilityModule.f(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var promiseResolve = aCallable(C.resolve);\n var errors = [];\n var counter = 0;\n var remaining = 1;\n var alreadyResolved = false;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyRejected = false;\n remaining++;\n call(promiseResolve, C, promise).then(function (value) {\n if (alreadyRejected || alreadyResolved) return;\n alreadyResolved = true;\n resolve(value);\n }, function (error) {\n if (alreadyRejected || alreadyResolved) return;\n alreadyRejected = true;\n errors[index] = error;\n --remaining || reject(new AggregateError(errors, PROMISE_ANY_ERROR));\n });\n });\n --remaining || reject(new AggregateError(errors, PROMISE_ANY_ERROR));\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.promise.any.js\n// module id = 275\n// module chunks = 0 1","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar fails = require('../internals/fails');\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar speciesConstructor = require('../internals/species-constructor');\nvar promiseResolve = require('../internals/promise-resolve');\nvar defineBuiltIn = require('../internals/define-built-in');\n\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\n\n// Safari bug https://bugs.webkit.org/show_bug.cgi?id=200829\nvar NON_GENERIC = !!NativePromiseConstructor && fails(function () {\n // eslint-disable-next-line unicorn/no-thenable -- required for testing\n NativePromisePrototype['finally'].call({ then: function () { /* empty */ } }, function () { /* empty */ });\n});\n\n// `Promise.prototype.finally` method\n// https://tc39.es/ecma262/#sec-promise.prototype.finally\n$({ target: 'Promise', proto: true, real: true, forced: NON_GENERIC }, {\n 'finally': function (onFinally) {\n var C = speciesConstructor(this, getBuiltIn('Promise'));\n var isFunction = isCallable(onFinally);\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// makes sure that native promise-based APIs `Promise#finally` properly works with patched `Promise#then`\nif (!IS_PURE && isCallable(NativePromiseConstructor)) {\n var method = getBuiltIn('Promise').prototype['finally'];\n if (NativePromisePrototype['finally'] !== method) {\n defineBuiltIn(NativePromisePrototype, 'finally', method, { unsafe: true });\n }\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.promise.finally.js\n// module id = 276\n// module chunks = 0 1","var uncurryThis = require('../internals/function-uncurry-this');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar stringSlice = uncurryThis(''.slice);\n\nvar createMethod = function (CONVERT_TO_STRING) {\n return function ($this, pos) {\n var S = toString(requireObjectCoercible($this));\n var position = toIntegerOrInfinity(pos);\n var size = S.length;\n var first, second;\n if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n first = charCodeAt(S, position);\n return first < 0xD800 || first > 0xDBFF || position + 1 === size\n || (second = charCodeAt(S, position + 1)) < 0xDC00 || second > 0xDFFF\n ? CONVERT_TO_STRING\n ? charAt(S, position)\n : first\n : CONVERT_TO_STRING\n ? stringSlice(S, position, position + 2)\n : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n };\n};\n\nmodule.exports = {\n // `String.prototype.codePointAt` method\n // https://tc39.es/ecma262/#sec-string.prototype.codepointat\n codeAt: createMethod(false),\n // `String.prototype.at` method\n // https://github.com/mathiasbynens/String.prototype.at\n charAt: createMethod(true)\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/string-multibyte.js\n// module id = 277\n// module chunks = 0 1","// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n CSSRuleList: 0,\n CSSStyleDeclaration: 0,\n CSSValueList: 0,\n ClientRectList: 0,\n DOMRectList: 0,\n DOMStringList: 0,\n DOMTokenList: 1,\n DataTransferItemList: 0,\n FileList: 0,\n HTMLAllCollection: 0,\n HTMLCollection: 0,\n HTMLFormElement: 0,\n HTMLSelectElement: 0,\n MediaList: 0,\n MimeTypeArray: 0,\n NamedNodeMap: 0,\n NodeList: 1,\n PaintRequestList: 0,\n Plugin: 0,\n PluginArray: 0,\n SVGLengthList: 0,\n SVGNumberList: 0,\n SVGPathSegList: 0,\n SVGPointList: 0,\n SVGStringList: 0,\n SVGTransformList: 0,\n SourceBufferList: 0,\n StyleSheetList: 0,\n TextTrackCueList: 0,\n TextTrackList: 0,\n TouchList: 0\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/dom-iterables.js\n// module id = 278\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 = 279\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 = 280\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 = 281\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 = 282\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 = 283\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 = 284\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 = 285\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 = 286\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 = 287\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 = 288\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 = 289\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 = 290\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 = 291\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 = 292\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 = 293\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 = 294\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 = 295\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 = 296\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 = 297\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 = 298\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 = 299\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 = 300\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 = 301\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 = 302\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 = 303\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 = 304\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 = 305\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 = 306\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 = 307\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 = 308\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 = 309\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 = 310\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 = 311\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 = 312\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 = 313\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 = 314\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 = 315\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 = 316\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 = 317\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 = 318\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 = 319\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 = 320\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 = 321\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 = 322\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 = 323\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 = 324\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 = 325\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 = 326\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 = 327\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 = 328\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 = 329\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 = 330\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 = 331\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 = 332\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 = 333\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 = 334\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 = 335\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 = 336\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 = 337\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 = 338\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 = 339\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 = 340\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 = 341\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 = 342\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 = 343\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 = 344\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 = 345\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 = 346\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 = 347\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 = 348\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 = 349\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 = 350\n// module chunks = 0 1","var parent = require('../../es/instance/concat');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/stable/instance/concat.js\n// module id = 351\n// module chunks = 0 1","var isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../array/virtual/concat');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n var own = it.concat;\n return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.concat) ? method : own;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/instance/concat.js\n// module id = 352\n// module chunks = 0 1","require('../../../modules/es.array.concat');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').concat;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/array/virtual/concat.js\n// module id = 353\n// module chunks = 0 1","var $TypeError = TypeError;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; // 2 ** 53 - 1 == 9007199254740991\n\nmodule.exports = function (it) {\n if (it > MAX_SAFE_INTEGER) throw $TypeError('Maximum allowed index exceeded');\n return it;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/does-not-exceed-safe-integer.js\n// module id = 354\n// module chunks = 0 1","var isArray = require('../internals/is-array');\nvar isConstructor = require('../internals/is-constructor');\nvar isObject = require('../internals/is-object');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\nvar $Array = Array;\n\n// a part of `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray) {\n var C;\n if (isArray(originalArray)) {\n C = originalArray.constructor;\n // cross-realm fallback\n if (isConstructor(C) && (C === $Array || isArray(C.prototype))) C = undefined;\n else 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-pure/internals/array-species-constructor.js\n// module id = 355\n// module chunks = 0 1","var parent = require('../../es/instance/map');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/stable/instance/map.js\n// module id = 356\n// module chunks = 0 1","var isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../array/virtual/map');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n var own = it.map;\n return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.map) ? method : own;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/instance/map.js\n// module id = 357\n// module chunks = 0 1","require('../../../modules/es.array.map');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').map;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/array/virtual/map.js\n// module id = 358\n// module chunks = 0 1","'use strict';\nvar $ = require('../internals/export');\nvar $map = require('../internals/array-iteration').map;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map');\n\n// `Array.prototype.map` method\n// https://tc39.es/ecma262/#sec-array.prototype.map\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.array.map.js\n// module id = 359\n// module chunks = 0 1","var parent = require('../../es/object/keys');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/stable/object/keys.js\n// module id = 360\n// module chunks = 0 1","require('../../modules/es.object.keys');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Object.keys;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/object/keys.js\n// module id = 361\n// module chunks = 0 1","var $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar nativeKeys = require('../internals/object-keys');\nvar fails = require('../internals/fails');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); });\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n keys: function keys(it) {\n return nativeKeys(toObject(it));\n }\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.object.keys.js\n// module id = 362\n// module chunks = 0 1","var parent = require('../../es/json/stringify');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/stable/json/stringify.js\n// module id = 363\n// module chunks = 0 1","require('../../modules/es.json.stringify');\nvar path = require('../../internals/path');\nvar apply = require('../../internals/function-apply');\n\n// eslint-disable-next-line es-x/no-json -- safe\nif (!path.JSON) path.JSON = { stringify: JSON.stringify };\n\n// eslint-disable-next-line no-unused-vars -- required for `.length`\nmodule.exports = function stringify(it, replacer, space) {\n return apply(path.JSON.stringify, null, arguments);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/json/stringify.js\n// module id = 364\n// module chunks = 0 1","var parent = require('../../es/instance/index-of');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/stable/instance/index-of.js\n// module id = 365\n// module chunks = 0 1","var isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../array/virtual/index-of');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n var own = it.indexOf;\n return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.indexOf) ? method : own;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/instance/index-of.js\n// module id = 366\n// module chunks = 0 1","require('../../../modules/es.array.index-of');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').indexOf;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/array/virtual/index-of.js\n// module id = 367\n// module chunks = 0 1","'use strict';\n/* eslint-disable es-x/no-array-prototype-indexof -- required for testing */\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar $IndexOf = require('../internals/array-includes').indexOf;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar un$IndexOf = uncurryThis([].indexOf);\n\nvar NEGATIVE_ZERO = !!un$IndexOf && 1 / un$IndexOf([1], 1, -0) < 0;\nvar STRICT_METHOD = arrayMethodIsStrict('indexOf');\n\n// `Array.prototype.indexOf` method\n// https://tc39.es/ecma262/#sec-array.prototype.indexof\n$({ target: 'Array', proto: true, forced: NEGATIVE_ZERO || !STRICT_METHOD }, {\n indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n var fromIndex = arguments.length > 1 ? arguments[1] : undefined;\n return NEGATIVE_ZERO\n // convert -0 to +0\n ? un$IndexOf(this, searchElement, fromIndex) || 0\n : $IndexOf(this, searchElement, fromIndex);\n }\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.array.index-of.js\n// module id = 368\n// module chunks = 0 1","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = function (METHOD_NAME, argument) {\n var method = [][METHOD_NAME];\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call -- required for testing\n method.call(null, argument || function () { return 1; }, 1);\n });\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/array-method-is-strict.js\n// module id = 369\n// module chunks = 0 1","require('../../modules/web.dom-collections.iterator');\nvar classof = require('../../internals/classof');\nvar hasOwn = require('../../internals/has-own-property');\nvar isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../array/virtual/keys');\n\nvar ArrayPrototype = Array.prototype;\n\nvar DOMIterables = {\n DOMTokenList: true,\n NodeList: true\n};\n\nmodule.exports = function (it) {\n var own = it.keys;\n return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.keys)\n || hasOwn(DOMIterables, classof(it)) ? method : own;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/stable/instance/keys.js\n// module id = 370\n// module chunks = 0 1","var parent = require('../../../es/array/virtual/keys');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/stable/array/virtual/keys.js\n// module id = 371\n// module chunks = 0 1","require('../../../modules/es.array.iterator');\nrequire('../../../modules/es.object.to-string');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').keys;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/array/virtual/keys.js\n// module id = 372\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 = 373\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 = 374\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 = 375\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 = 376\n// module chunks = 0 1","require('../../modules/es.object.get-prototype-of');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Object.getPrototypeOf;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/object/get-prototype-of.js\n// module id = 377\n// module chunks = 0 1","var $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar toObject = require('../internals/to-object');\nvar nativeGetPrototypeOf = require('../internals/object-get-prototype-of');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeGetPrototypeOf(1); });\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !CORRECT_PROTOTYPE_GETTER }, {\n getPrototypeOf: function getPrototypeOf(it) {\n return nativeGetPrototypeOf(toObject(it));\n }\n});\n\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.object.get-prototype-of.js\n// module id = 378\n// module chunks = 0 1","module.exports = require(\"core-js-pure/stable/object/set-prototype-of\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js-stable/object/set-prototype-of.js\n// module id = 379\n// module chunks = 0 1","require('../../modules/es.object.set-prototype-of');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Object.setPrototypeOf;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/object/set-prototype-of.js\n// module id = 380\n// module chunks = 0 1","var $ = require('../internals/export');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n$({ target: 'Object', stat: true }, {\n setPrototypeOf: setPrototypeOf\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.object.set-prototype-of.js\n// module id = 381\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 *

    Available in Cloud Code and Node.js only.\n *

    \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","var isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../array/virtual/slice');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n var own = it.slice;\n return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.slice) ? method : own;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/instance/slice.js\n// module id = 383\n// module chunks = 0 1","require('../../../modules/es.array.slice');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').slice;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/array/virtual/slice.js\n// module id = 384\n// module chunks = 0 1","'use strict';\nvar $ = require('../internals/export');\nvar isArray = require('../internals/is-array');\nvar isConstructor = require('../internals/is-constructor');\nvar isObject = require('../internals/is-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar createProperty = require('../internals/create-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar un$Slice = require('../internals/array-slice');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice');\n\nvar SPECIES = wellKnownSymbol('species');\nvar $Array = Array;\nvar max = Math.max;\n\n// `Array.prototype.slice` method\n// https://tc39.es/ecma262/#sec-array.prototype.slice\n// fallback for not array-like ES3 strings and DOM objects\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n slice: function slice(start, end) {\n var O = toIndexedObject(this);\n var length = lengthOfArrayLike(O);\n var k = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible\n var Constructor, result, n;\n if (isArray(O)) {\n Constructor = O.constructor;\n // cross-realm fallback\n if (isConstructor(Constructor) && (Constructor === $Array || isArray(Constructor.prototype))) {\n Constructor = undefined;\n } else if (isObject(Constructor)) {\n Constructor = Constructor[SPECIES];\n if (Constructor === null) Constructor = undefined;\n }\n if (Constructor === $Array || Constructor === undefined) {\n return un$Slice(O, k, fin);\n }\n }\n result = new (Constructor === undefined ? $Array : Constructor)(max(fin - k, 0));\n for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);\n result.length = n;\n return result;\n }\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.array.slice.js\n// module id = 385\n// module chunks = 0 1","require('../../modules/es.object.define-property');\nvar path = require('../../internals/path');\n\nvar Object = path.Object;\n\nvar defineProperty = module.exports = function defineProperty(it, key, desc) {\n return Object.defineProperty(it, key, desc);\n};\n\nif (Object.defineProperty.sham) defineProperty.sham = true;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/object/define-property.js\n// module id = 386\n// module chunks = 0 1","var $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar defineProperty = require('../internals/object-define-property').f;\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\n// eslint-disable-next-line es-x/no-object-defineproperty -- safe\n$({ target: 'Object', stat: true, forced: Object.defineProperty !== defineProperty, sham: !DESCRIPTORS }, {\n defineProperty: defineProperty\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.object.define-property.js\n// module id = 387\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 = require('../../full/symbol');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/features/symbol/index.js\n// module id = 389\n// module chunks = 0 1","var parent = require('../../actual/symbol');\nrequire('../../modules/esnext.symbol.async-dispose');\nrequire('../../modules/esnext.symbol.dispose');\nrequire('../../modules/esnext.symbol.matcher');\nrequire('../../modules/esnext.symbol.metadata-key');\nrequire('../../modules/esnext.symbol.observable');\n// TODO: Remove from `core-js@4`\nrequire('../../modules/esnext.symbol.metadata');\nrequire('../../modules/esnext.symbol.pattern-match');\nrequire('../../modules/esnext.symbol.replace-all');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/full/symbol/index.js\n// module id = 390\n// module chunks = 0 1","var parent = require('../../stable/symbol');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/actual/symbol/index.js\n// module id = 391\n// module chunks = 0 1","require('../../modules/es.array.concat');\nrequire('../../modules/es.object.to-string');\nrequire('../../modules/es.symbol');\nrequire('../../modules/es.symbol.async-iterator');\nrequire('../../modules/es.symbol.description');\nrequire('../../modules/es.symbol.has-instance');\nrequire('../../modules/es.symbol.is-concat-spreadable');\nrequire('../../modules/es.symbol.iterator');\nrequire('../../modules/es.symbol.match');\nrequire('../../modules/es.symbol.match-all');\nrequire('../../modules/es.symbol.replace');\nrequire('../../modules/es.symbol.search');\nrequire('../../modules/es.symbol.species');\nrequire('../../modules/es.symbol.split');\nrequire('../../modules/es.symbol.to-primitive');\nrequire('../../modules/es.symbol.to-string-tag');\nrequire('../../modules/es.symbol.unscopables');\nrequire('../../modules/es.json.to-string-tag');\nrequire('../../modules/es.math.to-string-tag');\nrequire('../../modules/es.reflect.to-string-tag');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Symbol;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/symbol/index.js\n// module id = 392\n// module chunks = 0 1","// TODO: Remove this module from `core-js@4` since it's split to modules listed below\nrequire('../modules/es.symbol.constructor');\nrequire('../modules/es.symbol.for');\nrequire('../modules/es.symbol.key-for');\nrequire('../modules/es.json.stringify');\nrequire('../modules/es.object.get-own-property-symbols');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.symbol.js\n// module id = 393\n// module chunks = 0 1","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar fails = require('../internals/fails');\nvar hasOwn = require('../internals/has-own-property');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar anObject = require('../internals/an-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar $toString = require('../internals/to-string');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar nativeObjectCreate = require('../internals/object-create');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternal = require('../internals/object-get-own-property-names-external');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\nvar definePropertiesModule = require('../internals/object-define-properties');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar shared = require('../internals/shared');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar uid = require('../internals/uid');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\nvar defineSymbolToPrimitive = require('../internals/symbol-define-to-primitive');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar HIDDEN = sharedKey('hidden');\nvar SYMBOL = 'Symbol';\nvar PROTOTYPE = 'prototype';\n\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(SYMBOL);\n\nvar ObjectPrototype = Object[PROTOTYPE];\nvar $Symbol = global.Symbol;\nvar SymbolPrototype = $Symbol && $Symbol[PROTOTYPE];\nvar TypeError = global.TypeError;\nvar QObject = global.QObject;\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;\nvar nativePropertyIsEnumerable = propertyIsEnumerableModule.f;\nvar push = uncurryThis([].push);\n\nvar AllSymbols = shared('symbols');\nvar ObjectPrototypeSymbols = shared('op-symbols');\nvar WellKnownSymbolsStore = shared('wks');\n\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDescriptor = DESCRIPTORS && fails(function () {\n return nativeObjectCreate(nativeDefineProperty({}, 'a', {\n get: function () { return nativeDefineProperty(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (O, P, Attributes) {\n var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P);\n if (ObjectPrototypeDescriptor) delete ObjectPrototype[P];\n nativeDefineProperty(O, P, Attributes);\n if (ObjectPrototypeDescriptor && O !== ObjectPrototype) {\n nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor);\n }\n} : nativeDefineProperty;\n\nvar wrap = function (tag, description) {\n var symbol = AllSymbols[tag] = nativeObjectCreate(SymbolPrototype);\n setInternalState(symbol, {\n type: SYMBOL,\n tag: tag,\n description: description\n });\n if (!DESCRIPTORS) symbol.description = description;\n return symbol;\n};\n\nvar $defineProperty = function defineProperty(O, P, Attributes) {\n if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes);\n anObject(O);\n var key = toPropertyKey(P);\n anObject(Attributes);\n if (hasOwn(AllSymbols, key)) {\n if (!Attributes.enumerable) {\n if (!hasOwn(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, {}));\n O[HIDDEN][key] = true;\n } else {\n if (hasOwn(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false;\n Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) });\n } return setSymbolDescriptor(O, key, Attributes);\n } return nativeDefineProperty(O, key, Attributes);\n};\n\nvar $defineProperties = function defineProperties(O, Properties) {\n anObject(O);\n var properties = toIndexedObject(Properties);\n var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties));\n $forEach(keys, function (key) {\n if (!DESCRIPTORS || call($propertyIsEnumerable, properties, key)) $defineProperty(O, key, properties[key]);\n });\n return O;\n};\n\nvar $create = function create(O, Properties) {\n return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties);\n};\n\nvar $propertyIsEnumerable = function propertyIsEnumerable(V) {\n var P = toPropertyKey(V);\n var enumerable = call(nativePropertyIsEnumerable, this, P);\n if (this === ObjectPrototype && hasOwn(AllSymbols, P) && !hasOwn(ObjectPrototypeSymbols, P)) return false;\n return enumerable || !hasOwn(this, P) || !hasOwn(AllSymbols, P) || hasOwn(this, HIDDEN) && this[HIDDEN][P]\n ? enumerable : true;\n};\n\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {\n var it = toIndexedObject(O);\n var key = toPropertyKey(P);\n if (it === ObjectPrototype && hasOwn(AllSymbols, key) && !hasOwn(ObjectPrototypeSymbols, key)) return;\n var descriptor = nativeGetOwnPropertyDescriptor(it, key);\n if (descriptor && hasOwn(AllSymbols, key) && !(hasOwn(it, HIDDEN) && it[HIDDEN][key])) {\n descriptor.enumerable = true;\n }\n return descriptor;\n};\n\nvar $getOwnPropertyNames = function getOwnPropertyNames(O) {\n var names = nativeGetOwnPropertyNames(toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (!hasOwn(AllSymbols, key) && !hasOwn(hiddenKeys, key)) push(result, key);\n });\n return result;\n};\n\nvar $getOwnPropertySymbols = function (O) {\n var IS_OBJECT_PROTOTYPE = O === ObjectPrototype;\n var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (hasOwn(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || hasOwn(ObjectPrototype, key))) {\n push(result, AllSymbols[key]);\n }\n });\n return result;\n};\n\n// `Symbol` constructor\n// https://tc39.es/ecma262/#sec-symbol-constructor\nif (!NATIVE_SYMBOL) {\n $Symbol = function Symbol() {\n if (isPrototypeOf(SymbolPrototype, this)) throw TypeError('Symbol is not a constructor');\n var description = !arguments.length || arguments[0] === undefined ? undefined : $toString(arguments[0]);\n var tag = uid(description);\n var setter = function (value) {\n if (this === ObjectPrototype) call(setter, ObjectPrototypeSymbols, value);\n if (hasOwn(this, HIDDEN) && hasOwn(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value));\n };\n if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter });\n return wrap(tag, description);\n };\n\n SymbolPrototype = $Symbol[PROTOTYPE];\n\n defineBuiltIn(SymbolPrototype, 'toString', function toString() {\n return getInternalState(this).tag;\n });\n\n defineBuiltIn($Symbol, 'withoutSetter', function (description) {\n return wrap(uid(description), description);\n });\n\n propertyIsEnumerableModule.f = $propertyIsEnumerable;\n definePropertyModule.f = $defineProperty;\n definePropertiesModule.f = $defineProperties;\n getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor;\n getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;\n getOwnPropertySymbolsModule.f = $getOwnPropertySymbols;\n\n wrappedWellKnownSymbolModule.f = function (name) {\n return wrap(wellKnownSymbol(name), name);\n };\n\n if (DESCRIPTORS) {\n // https://github.com/tc39/proposal-Symbol-description\n nativeDefineProperty(SymbolPrototype, 'description', {\n configurable: true,\n get: function description() {\n return getInternalState(this).description;\n }\n });\n if (!IS_PURE) {\n defineBuiltIn(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });\n }\n }\n}\n\n$({ global: true, constructor: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, {\n Symbol: $Symbol\n});\n\n$forEach(objectKeys(WellKnownSymbolsStore), function (name) {\n defineWellKnownSymbol(name);\n});\n\n$({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, {\n useSetter: function () { USE_SETTER = true; },\n useSimple: function () { USE_SETTER = false; }\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, {\n // `Object.create` method\n // https://tc39.es/ecma262/#sec-object.create\n create: $create,\n // `Object.defineProperty` method\n // https://tc39.es/ecma262/#sec-object.defineproperty\n defineProperty: $defineProperty,\n // `Object.defineProperties` method\n // https://tc39.es/ecma262/#sec-object.defineproperties\n defineProperties: $defineProperties,\n // `Object.getOwnPropertyDescriptor` method\n // https://tc39.es/ecma262/#sec-object.getownpropertydescriptors\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, {\n // `Object.getOwnPropertyNames` method\n // https://tc39.es/ecma262/#sec-object.getownpropertynames\n getOwnPropertyNames: $getOwnPropertyNames\n});\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\ndefineSymbolToPrimitive();\n\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag($Symbol, SYMBOL);\n\nhiddenKeys[HIDDEN] = true;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.symbol.constructor.js\n// module id = 394\n// module chunks = 0 1","/* eslint-disable es-x/no-object-getownpropertynames -- safe */\nvar classof = require('../internals/classof-raw');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar $getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar arraySlice = require('../internals/array-slice-simple');\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return $getOwnPropertyNames(it);\n } catch (error) {\n return arraySlice(windowNames);\n }\n};\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && classof(it) == 'Window'\n ? getWindowNames(it)\n : $getOwnPropertyNames(toIndexedObject(it));\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/object-get-own-property-names-external.js\n// module id = 395\n// module chunks = 0 1","var toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar createProperty = require('../internals/create-property');\n\nvar $Array = Array;\nvar max = Math.max;\n\nmodule.exports = function (O, start, end) {\n var length = lengthOfArrayLike(O);\n var k = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n var result = $Array(max(fin - k, 0));\n for (var n = 0; k < fin; k++, n++) createProperty(result, n, O[k]);\n result.length = n;\n return result;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/array-slice-simple.js\n// module id = 396\n// module chunks = 0 1","var $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar hasOwn = require('../internals/has-own-property');\nvar toString = require('../internals/to-string');\nvar shared = require('../internals/shared');\nvar NATIVE_SYMBOL_REGISTRY = require('../internals/native-symbol-registry');\n\nvar StringToSymbolRegistry = shared('string-to-symbol-registry');\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\n\n// `Symbol.for` method\n// https://tc39.es/ecma262/#sec-symbol.for\n$({ target: 'Symbol', stat: true, forced: !NATIVE_SYMBOL_REGISTRY }, {\n 'for': function (key) {\n var string = toString(key);\n if (hasOwn(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];\n var symbol = getBuiltIn('Symbol')(string);\n StringToSymbolRegistry[string] = symbol;\n SymbolToStringRegistry[symbol] = string;\n return symbol;\n }\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.symbol.for.js\n// module id = 397\n// module chunks = 0 1","var $ = require('../internals/export');\nvar hasOwn = require('../internals/has-own-property');\nvar isSymbol = require('../internals/is-symbol');\nvar tryToString = require('../internals/try-to-string');\nvar shared = require('../internals/shared');\nvar NATIVE_SYMBOL_REGISTRY = require('../internals/native-symbol-registry');\n\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\n\n// `Symbol.keyFor` method\n// https://tc39.es/ecma262/#sec-symbol.keyfor\n$({ target: 'Symbol', stat: true, forced: !NATIVE_SYMBOL_REGISTRY }, {\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(tryToString(sym) + ' is not a symbol');\n if (hasOwn(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];\n }\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.symbol.key-for.js\n// module id = 398\n// module chunks = 0 1","var $ = require('../internals/export');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar fails = require('../internals/fails');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar toObject = require('../internals/to-object');\n\n// V8 ~ Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\nvar FORCED = !NATIVE_SYMBOL || fails(function () { getOwnPropertySymbolsModule.f(1); });\n\n// `Object.getOwnPropertySymbols` method\n// https://tc39.es/ecma262/#sec-object.getownpropertysymbols\n$({ target: 'Object', stat: true, forced: FORCED }, {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n var $getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return $getOwnPropertySymbols ? $getOwnPropertySymbols(toObject(it)) : [];\n }\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.object.get-own-property-symbols.js\n// module id = 399\n// module chunks = 0 1","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.asyncIterator` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.asynciterator\ndefineWellKnownSymbol('asyncIterator');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.symbol.async-iterator.js\n// module id = 400\n// module chunks = 0 1","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.hasInstance` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.hasinstance\ndefineWellKnownSymbol('hasInstance');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.symbol.has-instance.js\n// module id = 402\n// module chunks = 0 1","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.isConcatSpreadable` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.isconcatspreadable\ndefineWellKnownSymbol('isConcatSpreadable');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.symbol.is-concat-spreadable.js\n// module id = 403\n// module chunks = 0 1","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.match` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.match\ndefineWellKnownSymbol('match');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.symbol.match.js\n// module id = 404\n// module chunks = 0 1","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.matchAll` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.matchall\ndefineWellKnownSymbol('matchAll');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.symbol.match-all.js\n// module id = 405\n// module chunks = 0 1","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.replace` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.replace\ndefineWellKnownSymbol('replace');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.symbol.replace.js\n// module id = 406\n// module chunks = 0 1","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.search` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.search\ndefineWellKnownSymbol('search');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.symbol.search.js\n// module id = 407\n// module chunks = 0 1","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.species` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.species\ndefineWellKnownSymbol('species');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.symbol.species.js\n// module id = 408\n// module chunks = 0 1","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.split` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.split\ndefineWellKnownSymbol('split');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.symbol.split.js\n// module id = 409\n// module chunks = 0 1","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\nvar defineSymbolToPrimitive = require('../internals/symbol-define-to-primitive');\n\n// `Symbol.toPrimitive` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.toprimitive\ndefineWellKnownSymbol('toPrimitive');\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\ndefineSymbolToPrimitive();\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.symbol.to-primitive.js\n// module id = 410\n// module chunks = 0 1","var getBuiltIn = require('../internals/get-built-in');\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\nvar setToStringTag = require('../internals/set-to-string-tag');\n\n// `Symbol.toStringTag` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.tostringtag\ndefineWellKnownSymbol('toStringTag');\n\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag(getBuiltIn('Symbol'), 'Symbol');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.symbol.to-string-tag.js\n// module id = 411\n// module chunks = 0 1","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.unscopables` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.unscopables\ndefineWellKnownSymbol('unscopables');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.symbol.unscopables.js\n// module id = 412\n// module chunks = 0 1","var global = require('../internals/global');\nvar setToStringTag = require('../internals/set-to-string-tag');\n\n// JSON[@@toStringTag] property\n// https://tc39.es/ecma262/#sec-json-@@tostringtag\nsetToStringTag(global.JSON, 'JSON', true);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.json.to-string-tag.js\n// module id = 413\n// module chunks = 0 1","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.asyncDispose` well-known symbol\n// https://github.com/tc39/proposal-using-statement\ndefineWellKnownSymbol('asyncDispose');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/esnext.symbol.async-dispose.js\n// module id = 416\n// module chunks = 0 1","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.dispose` well-known symbol\n// https://github.com/tc39/proposal-using-statement\ndefineWellKnownSymbol('dispose');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/esnext.symbol.dispose.js\n// module id = 417\n// module chunks = 0 1","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.matcher` well-known symbol\n// https://github.com/tc39/proposal-pattern-matching\ndefineWellKnownSymbol('matcher');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/esnext.symbol.matcher.js\n// module id = 418\n// module chunks = 0 1","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.metadataKey` well-known symbol\n// https://github.com/tc39/proposal-decorator-metadata\ndefineWellKnownSymbol('metadataKey');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/esnext.symbol.metadata-key.js\n// module id = 419\n// module chunks = 0 1","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.observable` well-known symbol\n// https://github.com/tc39/proposal-observable\ndefineWellKnownSymbol('observable');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/esnext.symbol.observable.js\n// module id = 420\n// module chunks = 0 1","// TODO: Remove from `core-js@4`\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.metadata` well-known symbol\n// https://github.com/tc39/proposal-decorators\ndefineWellKnownSymbol('metadata');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/esnext.symbol.metadata.js\n// module id = 421\n// module chunks = 0 1","// TODO: remove from `core-js@4`\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.patternMatch` well-known symbol\n// https://github.com/tc39/proposal-pattern-matching\ndefineWellKnownSymbol('patternMatch');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/esnext.symbol.pattern-match.js\n// module id = 422\n// module chunks = 0 1","// TODO: remove from `core-js@4`\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\ndefineWellKnownSymbol('replaceAll');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/esnext.symbol.replace-all.js\n// module id = 423\n// module chunks = 0 1","module.exports = require(\"core-js-pure/features/symbol/iterator\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js/symbol/iterator.js\n// module id = 424\n// module chunks = 0 1","module.exports = require('../../full/symbol/iterator');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/features/symbol/iterator.js\n// module id = 425\n// module chunks = 0 1","var parent = require('../../actual/symbol/iterator');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/full/symbol/iterator.js\n// module id = 426\n// module chunks = 0 1","var parent = require('../../stable/symbol/iterator');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/actual/symbol/iterator.js\n// module id = 427\n// module chunks = 0 1","var parent = require('../../es/symbol/iterator');\nrequire('../../modules/web.dom-collections.iterator');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/stable/symbol/iterator.js\n// module id = 428\n// module chunks = 0 1","require('../../modules/es.array.iterator');\nrequire('../../modules/es.object.to-string');\nrequire('../../modules/es.string.iterator');\nrequire('../../modules/es.symbol.iterator');\nvar WrappedWellKnownSymbolModule = require('../../internals/well-known-symbol-wrapped');\n\nmodule.exports = WrappedWellKnownSymbolModule.f('iterator');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/symbol/iterator.js\n// module id = 429\n// module chunks = 0 1","module.exports = require(\"core-js-pure/stable/instance/filter\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js-stable/instance/filter.js\n// module id = 430\n// module chunks = 0 1","var parent = require('../../es/instance/filter');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/stable/instance/filter.js\n// module id = 431\n// module chunks = 0 1","var isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../array/virtual/filter');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n var own = it.filter;\n return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.filter) ? method : own;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/instance/filter.js\n// module id = 432\n// module chunks = 0 1","require('../../../modules/es.array.filter');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').filter;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/array/virtual/filter.js\n// module id = 433\n// module chunks = 0 1","'use strict';\nvar $ = require('../internals/export');\nvar $filter = require('../internals/array-iteration').filter;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter');\n\n// `Array.prototype.filter` method\n// https://tc39.es/ecma262/#sec-array.prototype.filter\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n filter: function filter(callbackfn /* , thisArg */) {\n return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.array.filter.js\n// module id = 434\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 = 435\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 *

    AV.Events is a fork of Backbone's Events module, provided for your\n * convenience.

    \n *\n *

    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');

    \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:
    \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 *

    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.

    \n *\n *

    Only one key in a class may contain a GeoPoint.

    \n *\n *

    Example:

    \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();

    \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.}\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 *

    An ACL, or Access Control List can be added to any\n * AV.Object to restrict access to only a subset of users\n * of your application.

    \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 object.set(\"foo\", \"bar\")\n * is an example of a AV.Op.Set. Calling object.unset(\"foo\")\n * is a AV.Op.Unset. These operations are stored in a AV.Object and\n * sent to the server as part of object.save() 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 parent = require('../../es/instance/find');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/stable/instance/find.js\n// module id = 440\n// module chunks = 0 1","var isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../array/virtual/find');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n var own = it.find;\n return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.find) ? method : own;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/instance/find.js\n// module id = 441\n// module chunks = 0 1","require('../../../modules/es.array.find');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').find;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/array/virtual/find.js\n// module id = 442\n// module chunks = 0 1","'use strict';\nvar $ = require('../internals/export');\nvar $find = require('../internals/array-iteration').find;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\nvar FIND = 'find';\nvar SKIPS_HOLES = true;\n\n// Shouldn't skip holes\nif (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.find` method\n// https://tc39.es/ecma262/#sec-array.prototype.find\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.array.find.js\n// module id = 443\n// module chunks = 0 1","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 *

    \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 *

    \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 { request, _request: AVRequest } = require('./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:
    \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   * }
    \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 /**\n * Request file censor.\n * @since 4.13.0\n * @param {String} objectId\n * @return {Promise.}\n */\n AV.File.censor = function(objectId) {\n if (!AV._config.masterKey) {\n throw new Error('Cannot censor a file without masterKey');\n }\n return request({\n method: 'POST',\n path: `/files/${objectId}/censor`,\n authOptions: { useMasterKey: true },\n }).then(res => res.censorResult);\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 *

    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.

    \n *

    \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       *

    \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 * Request file censor\n * @since 4.13.0\n * @return {Promise.}\n */\n censor() {\n if (!this.id) {\n throw new Error('Cannot censor an unsaved file');\n }\n return AV.File.censor(this.id);\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}\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","module.exports = require(\"core-js-pure/stable/array/from\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js-stable/array/from.js\n// module id = 448\n// module chunks = 0 1","require('../../modules/es.string.iterator');\nrequire('../../modules/es.array.from');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Array.from;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/array/from.js\n// module id = 449\n// module chunks = 0 1","var $ = require('../internals/export');\nvar from = require('../internals/array-from');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\n\nvar INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) {\n // eslint-disable-next-line es-x/no-array-from -- required for testing\n Array.from(iterable);\n});\n\n// `Array.from` method\n// https://tc39.es/ecma262/#sec-array.from\n$({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, {\n from: from\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.array.from.js\n// module id = 450\n// module chunks = 0 1","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar toObject = require('../internals/to-object');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar isConstructor = require('../internals/is-constructor');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar createProperty = require('../internals/create-property');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nvar $Array = Array;\n\n// `Array.from` method implementation\n// https://tc39.es/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var IS_CONSTRUCTOR = isConstructor(this);\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined);\n var iteratorMethod = getIteratorMethod(O);\n var index = 0;\n var length, result, step, iterator, next, value;\n // if the target is not iterable or it's an array with the default iterator - use a simple case\n if (iteratorMethod && !(this === $Array && isArrayIteratorMethod(iteratorMethod))) {\n iterator = getIterator(O, iteratorMethod);\n next = iterator.next;\n result = IS_CONSTRUCTOR ? new this() : [];\n for (;!(step = call(next, iterator)).done; index++) {\n value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;\n createProperty(result, index, value);\n }\n } else {\n length = lengthOfArrayLike(O);\n result = IS_CONSTRUCTOR ? new this(length) : $Array(length);\n for (;length > index; index++) {\n value = mapping ? mapfn(O[index], index) : O[index];\n createProperty(result, index, value);\n }\n }\n result.length = index;\n return result;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/array-from.js\n// module id = 451\n// module chunks = 0 1","var anObject = require('../internals/an-object');\nvar iteratorClose = require('../internals/iterator-close');\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n try {\n return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n } catch (error) {\n iteratorClose(iterator, 'throw', error);\n }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/call-with-safe-iteration-closing.js\n// module id = 452\n// module chunks = 0 1","module.exports = require(\"core-js-pure/stable/symbol\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js-stable/symbol.js\n// module id = 453\n// module chunks = 0 1","module.exports = require('../full/get-iterator-method');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/features/get-iterator-method.js\n// module id = 454\n// module chunks = 0 1","var parent = require('../actual/get-iterator-method');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/full/get-iterator-method.js\n// module id = 455\n// module chunks = 0 1","var parent = require('../stable/get-iterator-method');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/actual/get-iterator-method.js\n// module id = 456\n// module chunks = 0 1","var parent = require('../es/get-iterator-method');\nrequire('../modules/web.dom-collections.iterator');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/stable/get-iterator-method.js\n// module id = 457\n// module chunks = 0 1","require('../modules/es.array.iterator');\nrequire('../modules/es.string.iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nmodule.exports = getIteratorMethod;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/get-iterator-method.js\n// module id = 458\n// module chunks = 0 1","module.exports = require(\"core-js-pure/stable/reflect/construct\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js-stable/reflect/construct.js\n// module id = 459\n// module chunks = 0 1","var parent = require('../../es/reflect/construct');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/stable/reflect/construct.js\n// module id = 460\n// module chunks = 0 1","require('../../modules/es.reflect.construct');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Reflect.construct;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/reflect/construct.js\n// module id = 461\n// module chunks = 0 1","var $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar apply = require('../internals/function-apply');\nvar bind = require('../internals/function-bind');\nvar aConstructor = require('../internals/a-constructor');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar fails = require('../internals/fails');\n\nvar nativeConstruct = getBuiltIn('Reflect', 'construct');\nvar ObjectPrototype = Object.prototype;\nvar push = [].push;\n\n// `Reflect.construct` method\n// https://tc39.es/ecma262/#sec-reflect.construct\n// MS Edge supports only 2 arguments and argumentsList argument is optional\n// FF Nightly sets third argument as `new.target`, but does not create `this` from it\nvar NEW_TARGET_BUG = fails(function () {\n function F() { /* empty */ }\n return !(nativeConstruct(function () { /* empty */ }, [], F) instanceof F);\n});\n\nvar ARGS_BUG = !fails(function () {\n nativeConstruct(function () { /* empty */ });\n});\n\nvar FORCED = NEW_TARGET_BUG || ARGS_BUG;\n\n$({ target: 'Reflect', stat: true, forced: FORCED, sham: FORCED }, {\n construct: function construct(Target, args /* , newTarget */) {\n aConstructor(Target);\n anObject(args);\n var newTarget = arguments.length < 3 ? Target : aConstructor(arguments[2]);\n if (ARGS_BUG && !NEW_TARGET_BUG) return nativeConstruct(Target, args, newTarget);\n if (Target == newTarget) {\n // w/o altered newTarget, optimization for 0-4 arguments\n switch (args.length) {\n case 0: return new Target();\n case 1: return new Target(args[0]);\n case 2: return new Target(args[0], args[1]);\n case 3: return new Target(args[0], args[1], args[2]);\n case 4: return new Target(args[0], args[1], args[2], args[3]);\n }\n // w/o altered newTarget, lot of arguments case\n var $args = [null];\n apply(push, $args, args);\n return new (apply(bind, Target, $args))();\n }\n // with altered newTarget, not support built-in constructors\n var proto = newTarget.prototype;\n var instance = create(isObject(proto) ? proto : ObjectPrototype);\n var result = apply(Target, instance, args);\n return isObject(result) ? result : instance;\n }\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.reflect.construct.js\n// module id = 462\n// module chunks = 0 1","var _Object$create = require(\"@babel/runtime-corejs3/core-js/object/create\");\n\nvar _Object$defineProperty = require(\"@babel/runtime-corejs3/core-js/object/define-property\");\n\nvar setPrototypeOf = require(\"./setPrototypeOf.js\");\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = _Object$create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n\n _Object$defineProperty(subClass, \"prototype\", {\n writable: false\n });\n\n if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/helpers/inherits.js\n// module id = 463\n// module chunks = 0 1","module.exports = require(\"core-js-pure/features/object/create\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js/object/create.js\n// module id = 464\n// module chunks = 0 1","module.exports = require('../../full/object/create');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/features/object/create.js\n// module id = 465\n// module chunks = 0 1","var parent = require('../../actual/object/create');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/full/object/create.js\n// module id = 466\n// module chunks = 0 1","var parent = require('../../stable/object/create');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/actual/object/create.js\n// module id = 467\n// module chunks = 0 1","var parent = require('../../es/object/create');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/stable/object/create.js\n// module id = 468\n// module chunks = 0 1","require('../../modules/es.object.create');\nvar path = require('../../internals/path');\n\nvar Object = path.Object;\n\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-pure/es/object/create.js\n// module id = 469\n// module chunks = 0 1","// TODO: Remove from `core-js@4`\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar create = require('../internals/object-create');\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\n$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, {\n create: create\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.object.create.js\n// module id = 470\n// module chunks = 0 1","module.exports = require('../../full/object/define-property');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/features/object/define-property.js\n// module id = 471\n// module chunks = 0 1","var parent = require('../../actual/object/define-property');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/full/object/define-property.js\n// module id = 472\n// module chunks = 0 1","var parent = require('../../stable/object/define-property');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/actual/object/define-property.js\n// module id = 473\n// module chunks = 0 1","var _Object$setPrototypeOf = require(\"@babel/runtime-corejs3/core-js/object/set-prototype-of\");\n\nvar _bindInstanceProperty = require(\"@babel/runtime-corejs3/core-js/instance/bind\");\n\nfunction _setPrototypeOf(o, p) {\n var _context;\n\n module.exports = _setPrototypeOf = _Object$setPrototypeOf ? _bindInstanceProperty(_context = _Object$setPrototypeOf).call(_context) : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/helpers/setPrototypeOf.js\n// module id = 474\n// module chunks = 0 1","module.exports = require('../../full/object/set-prototype-of');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/features/object/set-prototype-of.js\n// module id = 475\n// module chunks = 0 1","var parent = require('../../actual/object/set-prototype-of');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/full/object/set-prototype-of.js\n// module id = 476\n// module chunks = 0 1","var parent = require('../../stable/object/set-prototype-of');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/actual/object/set-prototype-of.js\n// module id = 477\n// module chunks = 0 1","module.exports = require('../../full/instance/bind');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/features/instance/bind.js\n// module id = 478\n// module chunks = 0 1","var parent = require('../../actual/instance/bind');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/full/instance/bind.js\n// module id = 479\n// module chunks = 0 1","var parent = require('../../stable/instance/bind');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/actual/instance/bind.js\n// module id = 480\n// module chunks = 0 1","var parent = require('../../es/instance/bind');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/stable/instance/bind.js\n// module id = 481\n// module chunks = 0 1","var isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../function/virtual/bind');\n\nvar FunctionPrototype = Function.prototype;\n\nmodule.exports = function (it) {\n var own = it.bind;\n return it === FunctionPrototype || (isPrototypeOf(FunctionPrototype, it) && own === FunctionPrototype.bind) ? method : own;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/instance/bind.js\n// module id = 482\n// module chunks = 0 1","require('../../../modules/es.function.bind');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Function').bind;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/function/virtual/bind.js\n// module id = 483\n// module chunks = 0 1","// TODO: Remove from `core-js@4`\nvar $ = require('../internals/export');\nvar bind = require('../internals/function-bind');\n\n// `Function.prototype.bind` method\n// https://tc39.es/ecma262/#sec-function.prototype.bind\n$({ target: 'Function', proto: true, forced: Function.bind !== bind }, {\n bind: bind\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.function.bind.js\n// module id = 484\n// module chunks = 0 1","var _typeof = require(\"./typeof.js\")[\"default\"];\n\nvar assertThisInitialized = require(\"./assertThisInitialized.js\");\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/helpers/possibleConstructorReturn.js\n// module id = 485\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, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/helpers/assertThisInitialized.js\n// module id = 486\n// module chunks = 0 1","var _Object$setPrototypeOf = require(\"@babel/runtime-corejs3/core-js/object/set-prototype-of\");\n\nvar _bindInstanceProperty = require(\"@babel/runtime-corejs3/core-js/instance/bind\");\n\nvar _Object$getPrototypeOf = require(\"@babel/runtime-corejs3/core-js/object/get-prototype-of\");\n\nfunction _getPrototypeOf(o) {\n var _context;\n\n module.exports = _getPrototypeOf = _Object$setPrototypeOf ? _bindInstanceProperty(_context = _Object$getPrototypeOf).call(_context) : function _getPrototypeOf(o) {\n return o.__proto__ || _Object$getPrototypeOf(o);\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/helpers/getPrototypeOf.js\n// module id = 487\n// module chunks = 0 1","module.exports = require(\"core-js-pure/features/object/get-prototype-of\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js/object/get-prototype-of.js\n// module id = 488\n// module chunks = 0 1","module.exports = require('../../full/object/get-prototype-of');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/features/object/get-prototype-of.js\n// module id = 489\n// module chunks = 0 1","var parent = require('../../actual/object/get-prototype-of');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/full/object/get-prototype-of.js\n// module id = 490\n// module chunks = 0 1","var parent = require('../../stable/object/get-prototype-of');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/actual/object/get-prototype-of.js\n// module id = 491\n// module chunks = 0 1","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/helpers/classCallCheck.js\n// module id = 492\n// module chunks = 0 1","var _Object$defineProperty = require(\"@babel/runtime-corejs3/core-js/object/define-property\");\n\nfunction _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\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\n _Object$defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n\n return Constructor;\n}\n\nmodule.exports = _createClass, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/helpers/createClass.js\n// module id = 493\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 = 496\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 = 497\n// module chunks = 0 1","/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh \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 = 498\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 *

    You won't normally call this method directly. It is recommended that\n * you use a subclass of AV.Object instead, created by calling\n * extend.

    \n *\n *

    However, if you don't want to use a subclass, or aren't sure which\n * subclass is appropriate, you can use this form:

    \n   *     var object = new AV.Object(\"ClassName\");\n   * 
    \n * That is basically equivalent to:
    \n   *     var MyClass = AV.Object.extend(\"ClassName\");\n   *     var object = new MyClass();\n   * 

    \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 *

    The fundamental unit of AV data, which implements the Backbone Model\n * interface.

    \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 AV.Object.\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 AV.Object\n * @param {AuthOptions} options\n * @return {Promise.} The given list of AV.Object, 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 true 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 * \"change\" unless you choose to silence it.\n *\n *

    You can call it with an object containing keys and values, or with one\n * key and value. For example:

    \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 \"change\" 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 \"change\" 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 \"change\" 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:
    \n       *   object.save();
    \n * or
    \n       *   object.save(null, options);
    \n * or
    \n       *   object.save(attrs, options);
    \n * or
    \n       *   object.save(key, value, options);
    \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 * \"change\" 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 * \"change\" 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 * AV.Object, in which case you can override this method\n * to provide additional validation on set and\n * save. 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 AV.Object 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 *
    \n   *   new AV.Object(attributes, options);\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 * @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 *

    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.

    \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 AV.Object is defined with your own implement\n * rather then AV.Object.extend, the subclass must be registered.\n * @param {Function} klass A subclass of AV.Object\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","var arrayWithHoles = require(\"./arrayWithHoles.js\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableRest = require(\"./nonIterableRest.js\");\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/helpers/slicedToArray.js\n// module id = 501\n// module chunks = 0 1","var _Array$isArray = require(\"@babel/runtime-corejs3/core-js/array/is-array\");\n\nfunction _arrayWithHoles(arr) {\n if (_Array$isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/helpers/arrayWithHoles.js\n// module id = 502\n// module chunks = 0 1","module.exports = require(\"core-js-pure/features/array/is-array\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js/array/is-array.js\n// module id = 503\n// module chunks = 0 1","module.exports = require('../../full/array/is-array');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/features/array/is-array.js\n// module id = 504\n// module chunks = 0 1","var parent = require('../../actual/array/is-array');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/full/array/is-array.js\n// module id = 505\n// module chunks = 0 1","var parent = require('../../stable/array/is-array');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/actual/array/is-array.js\n// module id = 506\n// module chunks = 0 1","var parent = require('../../es/array/is-array');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/stable/array/is-array.js\n// module id = 507\n// module chunks = 0 1","require('../../modules/es.array.is-array');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Array.isArray;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/array/is-array.js\n// module id = 508\n// module chunks = 0 1","var $ = require('../internals/export');\nvar isArray = require('../internals/is-array');\n\n// `Array.isArray` method\n// https://tc39.es/ecma262/#sec-array.isarray\n$({ target: 'Array', stat: true }, {\n isArray: isArray\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.array.is-array.js\n// module id = 509\n// module chunks = 0 1","var _Symbol = require(\"@babel/runtime-corejs3/core-js/symbol\");\n\nvar _getIteratorMethod = require(\"@babel/runtime-corejs3/core-js/get-iterator-method\");\n\nfunction _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof _Symbol !== \"undefined\" && _getIteratorMethod(arr) || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_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\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/helpers/iterableToArrayLimit.js\n// module id = 510\n// module chunks = 0 1","var _sliceInstanceProperty = require(\"@babel/runtime-corejs3/core-js/instance/slice\");\n\nvar _Array$from = require(\"@babel/runtime-corejs3/core-js/array/from\");\n\nvar arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _unsupportedIterableToArray(o, minLen) {\n var _context;\n\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n\n var n = _sliceInstanceProperty(_context = Object.prototype.toString.call(o)).call(_context, 8, -1);\n\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, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/helpers/unsupportedIterableToArray.js\n// module id = 511\n// module chunks = 0 1","module.exports = require(\"core-js-pure/features/instance/slice\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js/instance/slice.js\n// module id = 512\n// module chunks = 0 1","module.exports = require('../../full/instance/slice');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/features/instance/slice.js\n// module id = 513\n// module chunks = 0 1","var parent = require('../../actual/instance/slice');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/full/instance/slice.js\n// module id = 514\n// module chunks = 0 1","var parent = require('../../stable/instance/slice');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/actual/instance/slice.js\n// module id = 515\n// module chunks = 0 1","module.exports = require(\"core-js-pure/features/array/from\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js/array/from.js\n// module id = 516\n// module chunks = 0 1","module.exports = require('../../full/array/from');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/features/array/from.js\n// module id = 517\n// module chunks = 0 1","var parent = require('../../actual/array/from');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/full/array/from.js\n// module id = 518\n// module chunks = 0 1","var parent = require('../../stable/array/from');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/actual/array/from.js\n// module id = 519\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, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/helpers/arrayLikeToArray.js\n// module id = 520\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, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/helpers/nonIterableRest.js\n// module id = 521\n// module chunks = 0 1","module.exports = require(\"core-js-pure/stable/object/get-own-property-descriptor\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor.js\n// module id = 522\n// module chunks = 0 1","var parent = require('../../es/object/get-own-property-descriptor');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/stable/object/get-own-property-descriptor.js\n// module id = 523\n// module chunks = 0 1","require('../../modules/es.object.get-own-property-descriptor');\nvar path = require('../../internals/path');\n\nvar Object = path.Object;\n\nvar getOwnPropertyDescriptor = module.exports = function getOwnPropertyDescriptor(it, key) {\n return Object.getOwnPropertyDescriptor(it, key);\n};\n\nif (Object.getOwnPropertyDescriptor.sham) getOwnPropertyDescriptor.sham = true;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/object/get-own-property-descriptor.js\n// module id = 524\n// module chunks = 0 1","var $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar nativeGetOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeGetOwnPropertyDescriptor(1); });\nvar FORCED = !DESCRIPTORS || FAILS_ON_PRIMITIVES;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\n$({ target: 'Object', stat: true, forced: FORCED, sham: !DESCRIPTORS }, {\n getOwnPropertyDescriptor: function getOwnPropertyDescriptor(it, key) {\n return nativeGetOwnPropertyDescriptor(toIndexedObject(it), key);\n }\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.object.get-own-property-descriptor.js\n// module id = 525\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 *

    Roles must have a name (which cannot be changed after creation of the\n * role), and must specify an ACL.

    \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 *

    \n * A role's name can only contain alphanumeric characters, _, -, and\n * spaces.\n *

    \n *\n *

    This is equivalent to calling role.set(\"name\", name)

    \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 *

    This is equivalent to calling role.relation(\"users\")

    \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 *

    This is equivalent to calling role.relation(\"roles\")

    \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 *

    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.

    \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(\n provider,\n data,\n { failOnNotExist = false, useMasterKey, sessionToken, user } = {}\n ) {\n var authType;\n if (_.isString(provider)) {\n authType = provider;\n provider = AV.User._authProviders[provider];\n } else {\n authType = provider.getAuthType();\n }\n if (data) {\n return this.save(\n { authData: { [authType]: data } },\n {\n useMasterKey,\n sessionToken,\n user,\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} 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} 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}\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}\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}\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}\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}\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}\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}\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 * current.\n *\n *

    A username and password must be set before calling signUp.

    \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 * current.\n *\n *

    A username and password must be set before calling signUp.

    \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}\n */\n loginWithWeapp({\n preferUnionId = false,\n unionIdPlatform = 'weixin',\n asMainAccount = true,\n failOnNotExist = false,\n useMasterKey,\n sessionToken,\n user,\n } = {}) {\n const getAuthInfo = getAdapter('getAuthInfo');\n return getAuthInfo({\n preferUnionId,\n asMainAccount,\n platform: unionIdPlatform,\n }).then(authInfo =>\n this.loginWithMiniApp(authInfo, {\n failOnNotExist,\n useMasterKey,\n sessionToken,\n user,\n })\n );\n },\n\n /**\n * The same with {@link AV.User.loginWithWeappWithUnionId}, except that you can set attributes before login.\n * @deprecated please use {@link AV.User#loginWithMiniApp}\n * @since 3.13.0\n */\n loginWithWeappWithUnionId(\n unionId,\n {\n unionIdPlatform = 'weixin',\n asMainAccount = false,\n failOnNotExist = false,\n useMasterKey,\n sessionToken,\n user,\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, {\n failOnNotExist,\n useMasterKey,\n sessionToken,\n user,\n });\n });\n },\n\n /**\n * The same with {@link AV.User.loginWithQQApp}, except that you can set attributes before login.\n * @deprecated please use {@link AV.User#loginWithMiniApp}\n * @since 4.2.0\n * @param {Object} [options]\n * @param {boolean} [options.failOnNotExist] If true, the login request will fail when no user matches this authData exists.\n * @param {boolean} [options.preferUnionId] 如果服务端在登录时获取到了用户的 UnionId,是否将 UnionId 保存在用户账号中。\n * @param {string} [options.unionIdPlatform = 'qq'] (only take effect when preferUnionId) unionId platform\n * @param {boolean} [options.asMainAccount = true] (only take effect when preferUnionId) If true, the unionId will be associated with the user.\n */\n loginWithQQApp({\n preferUnionId = false,\n unionIdPlatform = 'qq',\n asMainAccount = true,\n failOnNotExist = false,\n useMasterKey,\n sessionToken,\n user,\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, {\n failOnNotExist,\n useMasterKey,\n sessionToken,\n user,\n });\n });\n },\n\n /**\n * The same with {@link AV.User.loginWithQQAppWithUnionId}, except that you can set attributes before login.\n * @deprecated please use {@link AV.User#loginWithMiniApp}\n * @since 4.2.0\n */\n loginWithQQAppWithUnionId(\n unionId,\n {\n unionIdPlatform = 'qq',\n asMainAccount = false,\n failOnNotExist = false,\n useMasterKey,\n sessionToken,\n user,\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, {\n failOnNotExist,\n useMasterKey,\n sessionToken,\n user,\n });\n });\n },\n\n /**\n * The same with {@link AV.User.loginWithMiniApp}, except that you can set attributes before login.\n * @since 4.6.0\n */\n loginWithMiniApp(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 * current.\n *\n *

    A username and password must be set before calling logIn.

    \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 current 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.\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.} 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.} 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 current.\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 * current.\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 current.\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 current.\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 current.\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 current.\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} 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.}\n */\n loginWithWeapp({\n preferUnionId = false,\n unionIdPlatform = 'weixin',\n asMainAccount = true,\n failOnNotExist = false,\n useMasterKey,\n sessionToken,\n user,\n } = {}) {\n const getAuthInfo = getAdapter('getAuthInfo');\n return getAuthInfo({\n preferUnionId,\n asMainAccount,\n platform: unionIdPlatform,\n }).then(authInfo =>\n this.loginWithMiniApp(authInfo, {\n failOnNotExist,\n useMasterKey,\n sessionToken,\n user,\n })\n );\n },\n\n /**\n * 使用当前使用微信小程序的微信用户身份注册或登录,\n * 仅在微信小程序中可用。\n *\n * @deprecated please use {@link AV.User.loginWithMiniApp}\n * @since 3.13.0\n * @param {Object} [unionLoginOptions]\n * @param {string} [unionLoginOptions.unionIdPlatform = 'weixin'] unionId platform\n * @param {boolean} [unionLoginOptions.asMainAccount = false] If true, the unionId will be associated with the user.\n * @param {boolean} [unionLoginOptions.failOnNotExist] If true, the login request will fail when no user matches this authData exists. * @return {Promise.}\n */\n loginWithWeappWithUnionId(\n unionId,\n {\n unionIdPlatform = 'weixin',\n asMainAccount = false,\n failOnNotExist = false,\n useMasterKey,\n sessionToken,\n user,\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, {\n failOnNotExist,\n useMasterKey,\n sessionToken,\n user,\n });\n });\n },\n\n /**\n * 使用当前使用 QQ 小程序的 QQ 用户身份注册或登录,成功后用户的 session 会在设备上持久化保存,之后可以使用 AV.User.current() 获取当前登录用户。\n * 仅在 QQ 小程序中可用。\n *\n * @deprecated please use {@link AV.User.loginWithMiniApp}\n * @since 4.2.0\n * @param {Object} [options]\n * @param {boolean} [options.preferUnionId] 如果服务端在登录时获取到了用户的 UnionId,是否将 UnionId 保存在用户账号中。\n * @param {string} [options.unionIdPlatform = 'qq'] (only take effect when preferUnionId) unionId platform\n * @param {boolean} [options.asMainAccount = true] (only take effect when preferUnionId) If true, the unionId will be associated with the user.\n * @param {boolean} [options.failOnNotExist] If true, the login request will fail when no user matches this authData exists. (since v3.7.0)\n * @return {Promise.}\n */\n loginWithQQApp({\n preferUnionId = false,\n unionIdPlatform = 'qq',\n asMainAccount = true,\n failOnNotExist = false,\n useMasterKey,\n sessionToken,\n user,\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, {\n failOnNotExist,\n useMasterKey,\n sessionToken,\n user,\n });\n });\n },\n\n /**\n * 使用当前使用 QQ 小程序的 QQ 用户身份注册或登录,\n * 仅在 QQ 小程序中可用。\n *\n * @deprecated please use {@link AV.User.loginWithMiniApp}\n * @since 4.2.0\n * @param {Object} [unionLoginOptions]\n * @param {string} [unionLoginOptions.unionIdPlatform = 'qq'] unionId platform\n * @param {boolean} [unionLoginOptions.asMainAccount = false] If true, the unionId will be associated with the user.\n * @param {boolean} [unionLoginOptions.failOnNotExist] If true, the login request will fail when no user matches this authData exists.\n * @return {Promise.}\n */\n loginWithQQAppWithUnionId(\n unionId,\n {\n unionIdPlatform = 'qq',\n asMainAccount = false,\n failOnNotExist = false,\n useMasterKey,\n sessionToken,\n user,\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, {\n failOnNotExist,\n useMasterKey,\n sessionToken,\n user,\n });\n });\n },\n\n /**\n * Register or login using the identity of the current mini-app.\n * @param {Object} authInfo\n * @param {Object} [option]\n * @param {Boolean} [option.failOnNotExist] If true, the login request will fail when no user matches this authInfo.authData exists.\n */\n loginWithMiniApp(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.}\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 * current will return null.\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.} 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","var _Object$defineProperty = require(\"@babel/runtime-corejs3/core-js/object/define-property\");\n\nfunction _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, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/helpers/defineProperty.js\n// module id = 528\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 *

    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 * find method. For example, this sample code fetches all objects\n * of class MyClass. It calls a different function depending on\n * whether the fetch succeeded or not.\n *\n *

    \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   * });

    \n *\n *

    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 MyClass and id myId. It calls a\n * different function depending on whether the fetch succeeded or not.\n *\n *

    \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   * });

    \n *\n *

    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 MyClass\n *

    \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   * });

    \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 *
    var compoundQuery = AV.Query.or(query1, query2, query3);
    \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 *
    var compoundQuery = AV.Query.and(query1, query2, query3);
    \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.\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.}\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 AVError(\n result.error.code,\n result.error.error || 'Unknown batch error'\n );\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.}\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 cursor;\n let remainResults = [];\n return {\n next: () => {\n if (remainResults.length) {\n return Promise.resolve({\n done: false,\n value: remainResults.shift(),\n });\n }\n if (cursor === null) {\n return Promise.resolve({ done: true });\n }\n return _request(\n 'scan/classes',\n this.className,\n null,\n 'GET',\n cursor ? _.extend({}, condition, { cursor }) : condition,\n authOptions\n ).then(response => {\n cursor = response.cursor;\n if (response.results.length) {\n const results = this._parseResponse(response);\n results.forEach(result => remainResults.push(result));\n }\n if (cursor === null && remainResults.length === 0) {\n return { done: true };\n }\n return {\n done: false,\n value: remainResults.shift(),\n };\n });\n },\n };\n },\n\n /**\n * Delete objects retrieved by this query.\n * @param {AuthOptions} options\n * @return {Promise} A promise that is fulfilled when the save\n * completes.\n */\n destroyAll: function(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 * array key's length to be equal to the provided value.\n * @param {String} key The array key to check.\n * @param {number} 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.} 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.} 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. ONLY AVAILABLE in browsers.\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. ONLY AVAILABLE in browsers.\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.}\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 *

    \n * Some functions are only available from Cloud Code.\n *

    \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.} 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.} 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 {any} 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 *

    Send a status from current signined user to other user's private status inbox.

    \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 *

    AV.InboxQuery defines a query that is used to fetch somebody's inbox statuses.

    \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 {String} 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 App Searching Guide\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 *
    \n       *   query.highlights('title');\n       *   //or pass an array.\n       *   query.highlights(['title', 'content'])\n       * 
    \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 * 离线数据分析功能的函数。\n *

    \n * 仅在云引擎运行环境下有效。\n *

    \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 对象,例如:
    \n       *                   { \"sql\" : \"select count(*) as c,gender from _User group by gender\",\n       *                     \"saveAs\": {\n       *                         \"className\" : \"UserGender\",\n       *                         \"limit\": 1\n       *                      }\n       *                   }\n       *                  
    \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 *

    \n * 仅在云引擎运行环境下有效。\n *

    \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 const getUserWithSessionToken = authOptions => {\n if (authOptions.user) {\n if (!authOptions.user._sessionToken) {\n throw new Error('authOptions.user is not signed in.');\n }\n return Promise.resolve(authOptions.user);\n }\n if (authOptions.sessionToken) {\n return AV.User._fetchUserBySessionToken(authOptions.sessionToken);\n }\n return AV.User.currentAsync();\n };\n\n const getSessionTokenAsync = authOptions => {\n const sessionToken = getSessionToken(authOptions);\n if (sessionToken) {\n return Promise.resolve(sessionToken);\n }\n return AV.User.currentAsync().then(user => {\n if (user) {\n return user.getSessionToken();\n }\n });\n };\n\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} [authOptions]\n * @return {Promise}\n */\n request: function(options, authOptions = {}) {\n let friend;\n let attributes;\n\n if (options.friend) {\n friend = options.friend;\n attributes = options.attributes;\n } else {\n friend = options;\n }\n\n const friendObj = _.isString(friend)\n ? AV.Object.createWithoutData('_User', friend)\n : friend;\n\n return getUserWithSessionToken(authOptions).then(userObj => {\n if (!userObj) {\n throw new Error('Please signin an user.');\n }\n return LCRequest({\n method: 'POST',\n path: '/users/friendshipRequests',\n data: {\n user: userObj._toPointer(),\n friend: friendObj._toPointer(),\n friendship: attributes,\n },\n authOptions,\n });\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}\n */\n acceptRequest: function(options, authOptions = {}) {\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 getSessionTokenAsync(authOptions).then(sessionToken => {\n if (!sessionToken) {\n throw new Error('Please signin an user.');\n }\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 /**\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}\n */\n declineRequest: function(request, authOptions = {}) {\n const requestId = _.isString(request) ? request : request.id;\n return getSessionTokenAsync(authOptions).then(sessionToken => {\n if (!sessionToken) {\n throw new Error('Please signin an user.');\n }\n return LCRequest({\n method: 'PUT',\n path: '/users/friendshipRequests/' + requestId + '/decline',\n authOptions,\n });\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 *

    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 *

    \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}\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}\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}\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}\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}\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}\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}\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}\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}\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}\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}\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}\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}\n */\n getArchives({ skip, limit } = {}, authOptions) {\n return request({\n method: 'GET',\n path: `/leaderboard/leaderboards/${this.statisticName}/archives`,\n query: {\n skip,\n limit,\n },\n authOptions,\n }).then(({ results }) =>\n results.map(({ version, status, url, activatedAt, deactivatedAt }) => ({\n statisticName: this.statisticName,\n version,\n status,\n url,\n activatedAt: parseDate(activatedAt.iso),\n deactivatedAt: parseDate(deactivatedAt.iso),\n }))\n );\n },\n }\n);\n\n\n\n// WEBPACK FOOTER //\n// ./src/leaderboard.js"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/av-core.js b/dist/av-core.js new file mode 100644 index 000000000..90c968864 --- /dev/null +++ b/dist/av-core.js @@ -0,0 +1,25183 @@ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else if(typeof exports === 'object') + exports["AV"] = factory(); + else + root["AV"] = factory(); +})(typeof self !== 'undefined' ? self : this, function() { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { +/******/ configurable: false, +/******/ enumerable: true, +/******/ get: getter +/******/ }); +/******/ } +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 236); +/******/ }) +/************************************************************************/ +/******/ ([ +/* 0 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var global = __webpack_require__(9); +var apply = __webpack_require__(62); +var uncurryThis = __webpack_require__(6); +var isCallable = __webpack_require__(7); +var getOwnPropertyDescriptor = __webpack_require__(64).f; +var isForced = __webpack_require__(142); +var path = __webpack_require__(13); +var bind = __webpack_require__(50); +var createNonEnumerableProperty = __webpack_require__(36); +var hasOwn = __webpack_require__(14); + +var wrapConstructor = function (NativeConstructor) { + var Wrapper = function (a, b, c) { + if (this instanceof Wrapper) { + switch (arguments.length) { + case 0: return new NativeConstructor(); + case 1: return new NativeConstructor(a); + case 2: return new NativeConstructor(a, b); + } return new NativeConstructor(a, b, c); + } return apply(NativeConstructor, this, arguments); + }; + Wrapper.prototype = NativeConstructor.prototype; + return Wrapper; +}; + +/* + options.target - name of the target object + options.global - target is the global object + options.stat - export as static methods of target + options.proto - export as prototype methods of target + options.real - real prototype method for the `pure` version + options.forced - export even if the native feature is available + options.bind - bind methods to the target, required for the `pure` version + options.wrap - wrap constructors to preventing global pollution, required for the `pure` version + options.unsafe - use the simple assignment of property instead of delete + defineProperty + options.sham - add a flag to not completely full polyfills + options.enumerable - export as enumerable property + options.dontCallGetSet - prevent calling a getter on target + options.name - the .name of the function if it does not match the key +*/ +module.exports = function (options, source) { + var TARGET = options.target; + var GLOBAL = options.global; + var STATIC = options.stat; + var PROTO = options.proto; + + var nativeSource = GLOBAL ? global : STATIC ? global[TARGET] : (global[TARGET] || {}).prototype; + + var target = GLOBAL ? path : path[TARGET] || createNonEnumerableProperty(path, TARGET, {})[TARGET]; + var targetPrototype = target.prototype; + + var FORCED, USE_NATIVE, VIRTUAL_PROTOTYPE; + var key, sourceProperty, targetProperty, nativeProperty, resultProperty, descriptor; + + for (key in source) { + FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced); + // contains in native + USE_NATIVE = !FORCED && nativeSource && hasOwn(nativeSource, key); + + targetProperty = target[key]; + + if (USE_NATIVE) if (options.dontCallGetSet) { + descriptor = getOwnPropertyDescriptor(nativeSource, key); + nativeProperty = descriptor && descriptor.value; + } else nativeProperty = nativeSource[key]; + + // export native or implementation + sourceProperty = (USE_NATIVE && nativeProperty) ? nativeProperty : source[key]; + + if (USE_NATIVE && typeof targetProperty == typeof sourceProperty) continue; + + // bind timers to global for call from export context + if (options.bind && USE_NATIVE) resultProperty = bind(sourceProperty, global); + // wrap global constructors for prevent changs in this version + else if (options.wrap && USE_NATIVE) resultProperty = wrapConstructor(sourceProperty); + // make static versions for prototype methods + else if (PROTO && isCallable(sourceProperty)) resultProperty = uncurryThis(sourceProperty); + // default case + else resultProperty = sourceProperty; + + // add a flag to not completely full polyfills + if (options.sham || (sourceProperty && sourceProperty.sham) || (targetProperty && targetProperty.sham)) { + createNonEnumerableProperty(resultProperty, 'sham', true); + } + + createNonEnumerableProperty(target, key, resultProperty); + + if (PROTO) { + VIRTUAL_PROTOTYPE = TARGET + 'Prototype'; + if (!hasOwn(path, VIRTUAL_PROTOTYPE)) { + createNonEnumerableProperty(path, VIRTUAL_PROTOTYPE, {}); + } + // export virtual prototype methods + createNonEnumerableProperty(path[VIRTUAL_PROTOTYPE], key, sourceProperty); + // export real prototype methods + if (options.real && targetPrototype && !targetPrototype[key]) { + createNonEnumerableProperty(targetPrototype, key, sourceProperty); + } + } + } +}; + + +/***/ }), +/* 1 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__index_default_js__ = __webpack_require__(279); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return __WEBPACK_IMPORTED_MODULE_0__index_default_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__index_js__ = __webpack_require__(120); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "VERSION", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["VERSION"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "restArguments", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["restArguments"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "isObject", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["isObject"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "isNull", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["isNull"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "isUndefined", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["isUndefined"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "isBoolean", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["isBoolean"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "isElement", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["isElement"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "isString", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["isString"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "isNumber", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["isNumber"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "isDate", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["isDate"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "isRegExp", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["isRegExp"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "isError", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["isError"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "isSymbol", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["isSymbol"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "isArrayBuffer", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["isArrayBuffer"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "isDataView", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["isDataView"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "isArray", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["isArray"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "isFunction", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["isFunction"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "isArguments", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["isArguments"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "isFinite", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["isFinite"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "isNaN", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["isNaN"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "isTypedArray", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["isTypedArray"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "isEmpty", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["isEmpty"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "isMatch", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["isMatch"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "isEqual", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["isEqual"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "isMap", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["isMap"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "isWeakMap", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["isWeakMap"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "isSet", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["isSet"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "isWeakSet", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["isWeakSet"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "keys", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["keys"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "allKeys", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["allKeys"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "values", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["values"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "pairs", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["pairs"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "invert", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["invert"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "functions", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["functions"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "methods", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["methods"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "extend", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["extend"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "extendOwn", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["extendOwn"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "assign", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["assign"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "defaults", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["defaults"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "create", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["create"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "clone", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["clone"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "tap", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["tap"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "get", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["get"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "has", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["has"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "mapObject", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["mapObject"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "identity", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["identity"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "constant", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["constant"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "noop", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["noop"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "toPath", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["toPath"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "property", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["property"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "propertyOf", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["propertyOf"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "matcher", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["matcher"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "matches", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["matches"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "times", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["times"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "random", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["random"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "now", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["now"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "escape", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["escape"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "unescape", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["unescape"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "templateSettings", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["templateSettings"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "template", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["template"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "result", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["result"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "uniqueId", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["uniqueId"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "chain", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["chain"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "iteratee", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["iteratee"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "partial", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["partial"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "bind", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["bind"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "bindAll", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["bindAll"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "memoize", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["memoize"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "delay", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["delay"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "defer", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["defer"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "throttle", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["throttle"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "debounce", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["debounce"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "wrap", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["wrap"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "negate", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["negate"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "compose", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["compose"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "after", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["after"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "before", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["before"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "once", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["once"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "findKey", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["findKey"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "findIndex", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["findIndex"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "findLastIndex", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["findLastIndex"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "sortedIndex", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["sortedIndex"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "indexOf", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["indexOf"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "lastIndexOf", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["lastIndexOf"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "find", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["find"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "detect", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["detect"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "findWhere", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["findWhere"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "each", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["each"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "forEach", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["forEach"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "map", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["map"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "collect", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["collect"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "reduce", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["reduce"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "foldl", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["foldl"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "inject", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["inject"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "reduceRight", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["reduceRight"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "foldr", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["foldr"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "filter", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["filter"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "select", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["select"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "reject", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["reject"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "every", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["every"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "all", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["all"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "some", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["some"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "any", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["any"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "contains", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["contains"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "includes", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["includes"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "include", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["include"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "invoke", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["invoke"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "pluck", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["pluck"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "where", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["where"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "max", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["max"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "min", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["min"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "shuffle", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["shuffle"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "sample", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["sample"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "sortBy", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["sortBy"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "groupBy", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["groupBy"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "indexBy", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["indexBy"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "countBy", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["countBy"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "partition", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["partition"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "toArray", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["toArray"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "size", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["size"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "pick", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["pick"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "omit", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["omit"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "first", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["first"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "head", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["head"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "take", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["take"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "initial", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["initial"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "last", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["last"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "rest", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["rest"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "tail", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["tail"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "drop", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["drop"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "compact", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["compact"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "flatten", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["flatten"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "without", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["without"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "uniq", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["uniq"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "unique", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["unique"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "union", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["union"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "intersection", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["intersection"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "difference", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["difference"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "unzip", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["unzip"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "transpose", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["transpose"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "zip", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["zip"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "object", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["object"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "range", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["range"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "chunk", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["chunk"]; }); +/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "mixin", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__["mixin"]; }); +// ESM Exports +// =========== +// This module is the package entry point for ES module users. In other words, +// it is the module they are interfacing with when they import from the whole +// package instead of from a submodule, like this: +// +// ```js +// import { map } from 'underscore'; +// ``` +// +// The difference with `./index-default`, which is the package entry point for +// CommonJS, AMD and UMD users, is purely technical. In ES modules, named and +// default exports are considered to be siblings, so when you have a default +// export, its properties are not automatically available as named exports. For +// this reason, we re-export the named exports in addition to providing the same +// default export as in `./index-default`. + + + + +/***/ }), +/* 2 */ +/***/ (function(module, exports) { + +function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + "default": obj + }; +} + +module.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), +/* 3 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(global) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return VERSION; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "p", function() { return root; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return ArrayProto; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return ObjProto; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return SymbolProto; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "o", function() { return push; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "q", function() { return slice; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "t", function() { return toString; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "i", function() { return hasOwnProperty; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "r", function() { return supportsArrayBuffer; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "s", function() { return supportsDataView; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "k", function() { return nativeIsArray; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "m", function() { return nativeKeys; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "j", function() { return nativeCreate; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "l", function() { return nativeIsView; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "g", function() { return _isNaN; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "f", function() { return _isFinite; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "h", function() { return hasEnumBug; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "n", function() { return nonEnumerableProps; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return MAX_ARRAY_INDEX; }); +// Current version. +var VERSION = '1.12.1'; + +// Establish the root object, `window` (`self`) in the browser, `global` +// on the server, or `this` in some virtual machines. We use `self` +// instead of `window` for `WebWorker` support. +var root = typeof self == 'object' && self.self === self && self || + typeof global == 'object' && global.global === global && global || + Function('return this')() || + {}; + +// Save bytes in the minified (but not gzipped) version: +var ArrayProto = Array.prototype, ObjProto = Object.prototype; +var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null; + +// Create quick reference variables for speed access to core prototypes. +var push = ArrayProto.push, + slice = ArrayProto.slice, + toString = ObjProto.toString, + hasOwnProperty = ObjProto.hasOwnProperty; + +// Modern feature detection. +var supportsArrayBuffer = typeof ArrayBuffer !== 'undefined', + supportsDataView = typeof DataView !== 'undefined'; + +// All **ECMAScript 5+** native function implementations that we hope to use +// are declared here. +var nativeIsArray = Array.isArray, + nativeKeys = Object.keys, + nativeCreate = Object.create, + nativeIsView = supportsArrayBuffer && ArrayBuffer.isView; + +// Create references to these builtin functions because we override them. +var _isNaN = isNaN, + _isFinite = isFinite; + +// Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed. +var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString'); +var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString', + 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString']; + +// The largest integer that can be represented exactly. +var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1; + +/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(105))) + +/***/ }), +/* 4 */ +/***/ (function(module, exports) { + +module.exports = function (exec) { + try { + return !!exec(); + } catch (error) { + return true; + } +}; + + +/***/ }), +/* 5 */ +/***/ (function(module, exports, __webpack_require__) { + +var path = __webpack_require__(13); +var hasOwn = __webpack_require__(14); +var wrappedWellKnownSymbolModule = __webpack_require__(136); +var defineProperty = __webpack_require__(32).f; + +module.exports = function (NAME) { + var Symbol = path.Symbol || (path.Symbol = {}); + if (!hasOwn(Symbol, NAME)) defineProperty(Symbol, NAME, { + value: wrappedWellKnownSymbolModule.f(NAME) + }); +}; + + +/***/ }), +/* 6 */ +/***/ (function(module, exports, __webpack_require__) { + +var NATIVE_BIND = __webpack_require__(63); + +var FunctionPrototype = Function.prototype; +var bind = FunctionPrototype.bind; +var call = FunctionPrototype.call; +var uncurryThis = NATIVE_BIND && bind.bind(call, call); + +module.exports = NATIVE_BIND ? function (fn) { + return fn && uncurryThis(fn); +} : function (fn) { + return fn && function () { + return call.apply(fn, arguments); + }; +}; + + +/***/ }), +/* 7 */ +/***/ (function(module, exports) { + +// `IsCallable` abstract operation +// https://tc39.es/ecma262/#sec-iscallable +module.exports = function (argument) { + return typeof argument == 'function'; +}; + + +/***/ }), +/* 8 */ +/***/ (function(module, exports, __webpack_require__) { + +var global = __webpack_require__(9); +var shared = __webpack_require__(67); +var hasOwn = __webpack_require__(14); +var uid = __webpack_require__(109); +var NATIVE_SYMBOL = __webpack_require__(49); +var USE_SYMBOL_AS_UID = __webpack_require__(140); + +var WellKnownSymbolsStore = shared('wks'); +var Symbol = global.Symbol; +var symbolFor = Symbol && Symbol['for']; +var createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid; + +module.exports = function (name) { + if (!hasOwn(WellKnownSymbolsStore, name) || !(NATIVE_SYMBOL || typeof WellKnownSymbolsStore[name] == 'string')) { + var description = 'Symbol.' + name; + if (NATIVE_SYMBOL && hasOwn(Symbol, name)) { + WellKnownSymbolsStore[name] = Symbol[name]; + } else if (USE_SYMBOL_AS_UID && symbolFor) { + WellKnownSymbolsStore[name] = symbolFor(description); + } else { + WellKnownSymbolsStore[name] = createWellKnownSymbol(description); + } + } return WellKnownSymbolsStore[name]; +}; + + +/***/ }), +/* 9 */ +/***/ (function(module, exports, __webpack_require__) { + +/* WEBPACK VAR INJECTION */(function(global) {var check = function (it) { + return it && it.Math == Math && it; +}; + +// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 +module.exports = + // eslint-disable-next-line es-x/no-global-this -- safe + check(typeof globalThis == 'object' && globalThis) || + check(typeof window == 'object' && window) || + // eslint-disable-next-line no-restricted-globals -- safe + check(typeof self == 'object' && self) || + check(typeof global == 'object' && global) || + // eslint-disable-next-line no-new-func -- fallback + (function () { return this; })() || Function('return this')(); + +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(105))) + +/***/ }), +/* 10 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__(238); + +/***/ }), +/* 11 */ +/***/ (function(module, exports, __webpack_require__) { + +var NATIVE_BIND = __webpack_require__(63); + +var call = Function.prototype.call; + +module.exports = NATIVE_BIND ? call.bind(call) : function () { + return call.apply(call, arguments); +}; + + +/***/ }), +/* 12 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = keys; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__isObject_js__ = __webpack_require__(45); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__setup_js__ = __webpack_require__(3); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__has_js__ = __webpack_require__(37); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__collectNonEnumProps_js__ = __webpack_require__(172); + + + + + +// Retrieve the names of an object's own properties. +// Delegates to **ECMAScript 5**'s native `Object.keys`. +function keys(obj) { + if (!Object(__WEBPACK_IMPORTED_MODULE_0__isObject_js__["a" /* default */])(obj)) return []; + if (__WEBPACK_IMPORTED_MODULE_1__setup_js__["m" /* nativeKeys */]) return Object(__WEBPACK_IMPORTED_MODULE_1__setup_js__["m" /* nativeKeys */])(obj); + var keys = []; + for (var key in obj) if (Object(__WEBPACK_IMPORTED_MODULE_2__has_js__["a" /* default */])(obj, key)) keys.push(key); + // Ahem, IE < 9. + if (__WEBPACK_IMPORTED_MODULE_1__setup_js__["h" /* hasEnumBug */]) Object(__WEBPACK_IMPORTED_MODULE_3__collectNonEnumProps_js__["a" /* default */])(obj, keys); + return keys; +} + + +/***/ }), +/* 13 */ +/***/ (function(module, exports) { + +module.exports = {}; + + +/***/ }), +/* 14 */ +/***/ (function(module, exports, __webpack_require__) { + +var uncurryThis = __webpack_require__(6); +var toObject = __webpack_require__(35); + +var hasOwnProperty = uncurryThis({}.hasOwnProperty); + +// `HasOwnProperty` abstract operation +// https://tc39.es/ecma262/#sec-hasownproperty +// eslint-disable-next-line es-x/no-object-hasown -- safe +module.exports = Object.hasOwn || function hasOwn(it, key) { + return hasOwnProperty(toObject(it), key); +}; + + +/***/ }), +/* 15 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = tagTester; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__setup_js__ = __webpack_require__(3); + + +// Internal function for creating a `toString`-based type tester. +function tagTester(name) { + var tag = '[object ' + name + ']'; + return function(obj) { + return __WEBPACK_IMPORTED_MODULE_0__setup_js__["t" /* toString */].call(obj) === tag; + }; +} + + +/***/ }), +/* 16 */ +/***/ (function(module, exports, __webpack_require__) { + +var path = __webpack_require__(13); +var global = __webpack_require__(9); +var isCallable = __webpack_require__(7); + +var aFunction = function (variable) { + return isCallable(variable) ? variable : undefined; +}; + +module.exports = function (namespace, method) { + return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace]) + : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method]; +}; + + +/***/ }), +/* 17 */ +/***/ (function(module, exports, __webpack_require__) { + +var isCallable = __webpack_require__(7); + +module.exports = function (it) { + return typeof it == 'object' ? it !== null : isCallable(it); +}; + + +/***/ }), +/* 18 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = cb; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__underscore_js__ = __webpack_require__(23); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__baseIteratee_js__ = __webpack_require__(182); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__iteratee_js__ = __webpack_require__(183); + + + + +// The function we call internally to generate a callback. It invokes +// `_.iteratee` if overridden, otherwise `baseIteratee`. +function cb(value, context, argCount) { + if (__WEBPACK_IMPORTED_MODULE_0__underscore_js__["a" /* default */].iteratee !== __WEBPACK_IMPORTED_MODULE_2__iteratee_js__["a" /* default */]) return __WEBPACK_IMPORTED_MODULE_0__underscore_js__["a" /* default */].iteratee(value, context); + return Object(__WEBPACK_IMPORTED_MODULE_1__baseIteratee_js__["a" /* default */])(value, context, argCount); +} + + +/***/ }), +/* 19 */ +/***/ (function(module, exports, __webpack_require__) { + +var fails = __webpack_require__(4); + +// Detect IE8's incomplete defineProperty implementation +module.exports = !fails(function () { + // eslint-disable-next-line es-x/no-object-defineproperty -- required for testing + return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7; +}); + + +/***/ }), +/* 20 */ +/***/ (function(module, exports, __webpack_require__) { + +var uncurryThis = __webpack_require__(6); + +module.exports = uncurryThis({}.isPrototypeOf); + + +/***/ }), +/* 21 */ +/***/ (function(module, exports, __webpack_require__) { + +var isObject = __webpack_require__(17); + +var $String = String; +var $TypeError = TypeError; + +// `Assert: Type(argument) is Object` +module.exports = function (argument) { + if (isObject(argument)) return argument; + throw $TypeError($String(argument) + ' is not an object'); +}; + + +/***/ }), +/* 22 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = restArguments; +// Some functions take a variable number of arguments, or a few expected +// arguments at the beginning and then a variable number of values to operate +// on. This helper accumulates all remaining arguments past the function’s +// argument length (or an explicit `startIndex`), into an array that becomes +// the last argument. Similar to ES6’s "rest parameter". +function restArguments(func, startIndex) { + startIndex = startIndex == null ? func.length - 1 : +startIndex; + return function() { + var length = Math.max(arguments.length - startIndex, 0), + rest = Array(length), + index = 0; + for (; index < length; index++) { + rest[index] = arguments[index + startIndex]; + } + switch (startIndex) { + case 0: return func.call(this, rest); + case 1: return func.call(this, arguments[0], rest); + case 2: return func.call(this, arguments[0], arguments[1], rest); + } + var args = Array(startIndex + 1); + for (index = 0; index < startIndex; index++) { + args[index] = arguments[index]; + } + args[startIndex] = rest; + return func.apply(this, args); + }; +} + + +/***/ }), +/* 23 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = _; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__setup_js__ = __webpack_require__(3); + + +// If Underscore is called as a function, it returns a wrapped object that can +// be used OO-style. This wrapper holds altered versions of all functions added +// through `_.mixin`. Wrapped objects may be chained. +function _(obj) { + if (obj instanceof _) return obj; + if (!(this instanceof _)) return new _(obj); + this._wrapped = obj; +} + +_.VERSION = __WEBPACK_IMPORTED_MODULE_0__setup_js__["e" /* VERSION */]; + +// Extracts the result from a wrapped and chained object. +_.prototype.value = function() { + return this._wrapped; +}; + +// Provide unwrapping proxies for some methods used in engine operations +// such as arithmetic and JSON stringification. +_.prototype.valueOf = _.prototype.toJSON = _.prototype.value; + +_.prototype.toString = function() { + return String(this._wrapped); +}; + + +/***/ }), +/* 24 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__createSizePropertyCheck_js__ = __webpack_require__(170); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__getLength_js__ = __webpack_require__(27); + + + +// Internal helper for collection methods to determine whether a collection +// should be iterated as an array or as an object. +// Related: https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength +// Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094 +/* harmony default export */ __webpack_exports__["a"] = (Object(__WEBPACK_IMPORTED_MODULE_0__createSizePropertyCheck_js__["a" /* default */])(__WEBPACK_IMPORTED_MODULE_1__getLength_js__["a" /* default */])); + + +/***/ }), +/* 25 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(2); + +var _concat = _interopRequireDefault(__webpack_require__(29)); + +var _promise = _interopRequireDefault(__webpack_require__(10)); + +var _ = __webpack_require__(1); + +var md5 = __webpack_require__(496); + +var _require = __webpack_require__(1), + extend = _require.extend; + +var AV = __webpack_require__(59); + +var AVError = __webpack_require__(40); + +var _require2 = __webpack_require__(28), + getSessionToken = _require2.getSessionToken; + +var ajax = __webpack_require__(103); // 计算 X-LC-Sign 的签名方法 + + +var sign = function sign(key, isMasterKey) { + var _context2; + + var now = new Date().getTime(); + var signature = md5(now + key); + + if (isMasterKey) { + var _context; + + return (0, _concat.default)(_context = "".concat(signature, ",")).call(_context, now, ",master"); + } + + return (0, _concat.default)(_context2 = "".concat(signature, ",")).call(_context2, now); +}; + +var setAppKey = function setAppKey(headers, signKey) { + if (signKey) { + headers['X-LC-Sign'] = sign(AV.applicationKey); + } else { + headers['X-LC-Key'] = AV.applicationKey; + } +}; + +var setHeaders = function setHeaders() { + var authOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + var signKey = arguments.length > 1 ? arguments[1] : undefined; + var headers = { + 'X-LC-Id': AV.applicationId, + 'Content-Type': 'application/json;charset=UTF-8' + }; + var useMasterKey = false; + + if (typeof authOptions.useMasterKey === 'boolean') { + useMasterKey = authOptions.useMasterKey; + } else if (typeof AV._config.useMasterKey === 'boolean') { + useMasterKey = AV._config.useMasterKey; + } + + if (useMasterKey) { + if (AV.masterKey) { + if (signKey) { + headers['X-LC-Sign'] = sign(AV.masterKey, true); + } else { + headers['X-LC-Key'] = "".concat(AV.masterKey, ",master"); + } + } else { + console.warn('masterKey is not set, fall back to use appKey'); + setAppKey(headers, signKey); + } + } else { + setAppKey(headers, signKey); + } + + if (AV.hookKey) { + headers['X-LC-Hook-Key'] = AV.hookKey; + } + + if (AV._config.production !== null) { + headers['X-LC-Prod'] = String(AV._config.production); + } + + headers[undefined === 'NODE_JS' ? 'User-Agent' : 'X-LC-UA'] = AV._sharedConfig.userAgent; + return _promise.default.resolve().then(function () { + // Pass the session token + var sessionToken = getSessionToken(authOptions); + + if (sessionToken) { + headers['X-LC-Session'] = sessionToken; + } else if (!AV._config.disableCurrentUser) { + return AV.User.currentAsync().then(function (currentUser) { + if (currentUser && currentUser._sessionToken) { + headers['X-LC-Session'] = currentUser._sessionToken; + } + + return headers; + }); + } + + return headers; + }); +}; + +var createApiUrl = function createApiUrl(_ref) { + var _ref$service = _ref.service, + service = _ref$service === void 0 ? 'api' : _ref$service, + _ref$version = _ref.version, + version = _ref$version === void 0 ? '1.1' : _ref$version, + path = _ref.path; + var apiURL = AV._config.serverURLs[service]; + if (!apiURL) throw new Error("undefined server URL for ".concat(service)); + + if (apiURL.charAt(apiURL.length - 1) !== '/') { + apiURL += '/'; + } + + apiURL += version; + + if (path) { + apiURL += path; + } + + return apiURL; +}; +/** + * Low level REST API client. Call REST endpoints with authorization headers. + * @function AV.request + * @since 3.0.0 + * @param {Object} options + * @param {String} options.method HTTP method + * @param {String} options.path endpoint path, e.g. `/classes/Test/55759577e4b029ae6015ac20` + * @param {Object} [options.query] query string dict + * @param {Object} [options.data] HTTP body + * @param {AuthOptions} [options.authOptions] + * @param {String} [options.service = 'api'] + * @param {String} [options.version = '1.1'] + */ + + +var request = function request(_ref2) { + var service = _ref2.service, + version = _ref2.version, + method = _ref2.method, + path = _ref2.path, + query = _ref2.query, + data = _ref2.data, + authOptions = _ref2.authOptions, + _ref2$signKey = _ref2.signKey, + signKey = _ref2$signKey === void 0 ? true : _ref2$signKey; + + if (!(AV.applicationId && (AV.applicationKey || AV.masterKey))) { + throw new Error('Not initialized'); + } + + if (AV._appRouter) { + AV._appRouter.refresh(); + } + + var timeout = AV._config.requestTimeout; + var url = createApiUrl({ + service: service, + path: path, + version: version + }); + return setHeaders(authOptions, signKey).then(function (headers) { + return ajax({ + method: method, + url: url, + query: query, + data: data, + headers: headers, + timeout: timeout + }).catch(function (error) { + var errorJSON = { + code: error.code || -1, + error: error.message || error.responseText + }; + + if (error.response && error.response.code) { + errorJSON = error.response; + } else if (error.responseText) { + try { + errorJSON = JSON.parse(error.responseText); + } catch (e) {// If we fail to parse the error text, that's okay. + } + } + + errorJSON.rawMessage = errorJSON.rawMessage || errorJSON.error; + + if (!AV._sharedConfig.keepErrorRawMessage) { + var _context3, _context4; + + errorJSON.error += (0, _concat.default)(_context3 = (0, _concat.default)(_context4 = " [".concat(error.statusCode || 'N/A', " ")).call(_context4, method, " ")).call(_context3, url, "]"); + } // Transform the error into an instance of AVError by trying to parse + // the error string as JSON. + + + var err = new AVError(errorJSON.code, errorJSON.error); + delete errorJSON.error; + throw _.extend(err, errorJSON); + }); + }); +}; // lagecy request + + +var _request = function _request(route, className, objectId, method, data, authOptions, query) { + var path = ''; + if (route) path += "/".concat(route); + if (className) path += "/".concat(className); + if (objectId) path += "/".concat(objectId); // for migeration + + if (data && data._fetchWhenSave) throw new Error('_fetchWhenSave should be in the query'); + if (data && data._where) throw new Error('_where should be in the query'); + + if (method && method.toLowerCase() === 'get') { + query = extend({}, query, data); + data = null; + } + + return request({ + method: method, + path: path, + query: query, + data: data, + authOptions: authOptions + }); +}; + +AV.request = request; +module.exports = { + _request: _request, + request: request +}; + +/***/ }), +/* 26 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__tagTester_js__ = __webpack_require__(15); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__setup_js__ = __webpack_require__(3); + + + +var isFunction = Object(__WEBPACK_IMPORTED_MODULE_0__tagTester_js__["a" /* default */])('Function'); + +// Optimize `isFunction` if appropriate. Work around some `typeof` bugs in old +// v8, IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236). +var nodelist = __WEBPACK_IMPORTED_MODULE_1__setup_js__["p" /* root */].document && __WEBPACK_IMPORTED_MODULE_1__setup_js__["p" /* root */].document.childNodes; +if (typeof /./ != 'function' && typeof Int8Array != 'object' && typeof nodelist != 'function') { + isFunction = function(obj) { + return typeof obj == 'function' || false; + }; +} + +/* harmony default export */ __webpack_exports__["a"] = (isFunction); + + +/***/ }), +/* 27 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__shallowProperty_js__ = __webpack_require__(171); + + +// Internal helper to obtain the `length` property of an object. +/* harmony default export */ __webpack_exports__["a"] = (Object(__WEBPACK_IMPORTED_MODULE_0__shallowProperty_js__["a" /* default */])('length')); + + +/***/ }), +/* 28 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(2); + +var _keys = _interopRequireDefault(__webpack_require__(48)); + +var _getPrototypeOf = _interopRequireDefault(__webpack_require__(215)); + +var _promise = _interopRequireDefault(__webpack_require__(10)); + +var _ = __webpack_require__(1); // Helper function to check null or undefined. + + +var isNullOrUndefined = function isNullOrUndefined(x) { + return _.isNull(x) || _.isUndefined(x); +}; + +var ensureArray = function ensureArray(target) { + if (_.isArray(target)) { + return target; + } + + if (target === undefined || target === null) { + return []; + } + + return [target]; +}; + +var transformFetchOptions = function transformFetchOptions() { + var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, + keys = (0, _keys.default)(_ref), + include = _ref.include, + includeACL = _ref.includeACL; + + var fetchOptions = {}; + + if (keys) { + fetchOptions.keys = ensureArray(keys).join(','); + } + + if (include) { + fetchOptions.include = ensureArray(include).join(','); + } + + if (includeACL) { + fetchOptions.returnACL = includeACL; + } + + return fetchOptions; +}; + +var getSessionToken = function getSessionToken(authOptions) { + if (authOptions.sessionToken) { + return authOptions.sessionToken; + } + + if (authOptions.user && typeof authOptions.user.getSessionToken === 'function') { + return authOptions.user.getSessionToken(); + } +}; + +var tap = function tap(interceptor) { + return function (value) { + return interceptor(value), value; + }; +}; // Shared empty constructor function to aid in prototype-chain creation. + + +var EmptyConstructor = function EmptyConstructor() {}; // Helper function to correctly set up the prototype chain, for subclasses. +// Similar to `goog.inherits`, but uses a hash of prototype properties and +// class properties to be extended. + + +var inherits = function inherits(parent, protoProps, staticProps) { + var child; // The constructor function for the new subclass is either defined by you + // (the "constructor" property in your `extend` definition), or defaulted + // by us to simply call the parent's constructor. + + if (protoProps && protoProps.hasOwnProperty('constructor')) { + child = protoProps.constructor; + } else { + /** @ignore */ + child = function child() { + parent.apply(this, arguments); + }; + } // Inherit class (static) properties from parent. + + + _.extend(child, parent); // Set the prototype chain to inherit from `parent`, without calling + // `parent`'s constructor function. + + + EmptyConstructor.prototype = parent.prototype; + child.prototype = new EmptyConstructor(); // Add prototype properties (instance properties) to the subclass, + // if supplied. + + if (protoProps) { + _.extend(child.prototype, protoProps); + } // Add static properties to the constructor function, if supplied. + + + if (staticProps) { + _.extend(child, staticProps); + } // Correctly set child's `prototype.constructor`. + + + child.prototype.constructor = child; // Set a convenience property in case the parent's prototype is + // needed later. + + child.__super__ = parent.prototype; + return child; +}; // Suppress the date string format warning in Weixin DevTools +// Link: https://developers.weixin.qq.com/community/minihome/doc/00080c6f244718053550067736b401 + + +var parseDate = typeof wx === 'undefined' ? function (iso8601) { + return new Date(iso8601); +} : function (iso8601) { + return new Date(Date.parse(iso8601)); +}; + +var setValue = function setValue(target, key, value) { + // '.' is not allowed in Class keys, escaping is not in concern now. + var segs = key.split('.'); + var lastSeg = segs.pop(); + var currentTarget = target; + segs.forEach(function (seg) { + if (currentTarget[seg] === undefined) currentTarget[seg] = {}; + currentTarget = currentTarget[seg]; + }); + currentTarget[lastSeg] = value; + return target; +}; + +var findValue = function findValue(target, key) { + var segs = key.split('.'); + var firstSeg = segs[0]; + var lastSeg = segs.pop(); + var currentTarget = target; + + for (var i = 0; i < segs.length; i++) { + currentTarget = currentTarget[segs[i]]; + + if (currentTarget === undefined) { + return [undefined, undefined, lastSeg]; + } + } + + var value = currentTarget[lastSeg]; + return [value, currentTarget, lastSeg, firstSeg]; +}; + +var isPlainObject = function isPlainObject(obj) { + return _.isObject(obj) && (0, _getPrototypeOf.default)(obj) === Object.prototype; +}; + +var continueWhile = function continueWhile(predicate, asyncFunction) { + if (predicate()) { + return asyncFunction().then(function () { + return continueWhile(predicate, asyncFunction); + }); + } + + return _promise.default.resolve(); +}; + +module.exports = { + isNullOrUndefined: isNullOrUndefined, + ensureArray: ensureArray, + transformFetchOptions: transformFetchOptions, + getSessionToken: getSessionToken, + tap: tap, + inherits: inherits, + parseDate: parseDate, + setValue: setValue, + findValue: findValue, + isPlainObject: isPlainObject, + continueWhile: continueWhile +}; + +/***/ }), +/* 29 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__(351); + +/***/ }), +/* 30 */ +/***/ (function(module, exports, __webpack_require__) { + +var isCallable = __webpack_require__(7); +var tryToString = __webpack_require__(66); + +var $TypeError = TypeError; + +// `Assert: IsCallable(argument) is true` +module.exports = function (argument) { + if (isCallable(argument)) return argument; + throw $TypeError(tryToString(argument) + ' is not a function'); +}; + + +/***/ }), +/* 31 */ +/***/ (function(module, exports) { + +module.exports = true; + + +/***/ }), +/* 32 */ +/***/ (function(module, exports, __webpack_require__) { + +var DESCRIPTORS = __webpack_require__(19); +var IE8_DOM_DEFINE = __webpack_require__(141); +var V8_PROTOTYPE_DEFINE_BUG = __webpack_require__(143); +var anObject = __webpack_require__(21); +var toPropertyKey = __webpack_require__(82); + +var $TypeError = TypeError; +// eslint-disable-next-line es-x/no-object-defineproperty -- safe +var $defineProperty = Object.defineProperty; +// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe +var $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; +var ENUMERABLE = 'enumerable'; +var CONFIGURABLE = 'configurable'; +var WRITABLE = 'writable'; + +// `Object.defineProperty` method +// https://tc39.es/ecma262/#sec-object.defineproperty +exports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) { + anObject(O); + P = toPropertyKey(P); + anObject(Attributes); + if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) { + var current = $getOwnPropertyDescriptor(O, P); + if (current && current[WRITABLE]) { + O[P] = Attributes.value; + Attributes = { + configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE], + enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE], + writable: false + }; + } + } return $defineProperty(O, P, Attributes); +} : $defineProperty : function defineProperty(O, P, Attributes) { + anObject(O); + P = toPropertyKey(P); + anObject(Attributes); + if (IE8_DOM_DEFINE) try { + return $defineProperty(O, P, Attributes); + } catch (error) { /* empty */ } + if ('get' in Attributes || 'set' in Attributes) throw $TypeError('Accessors not supported'); + if ('value' in Attributes) O[P] = Attributes.value; + return O; +}; + + +/***/ }), +/* 33 */ +/***/ (function(module, exports, __webpack_require__) { + +// toObject with fallback for non-array-like ES3 strings +var IndexedObject = __webpack_require__(139); +var requireObjectCoercible = __webpack_require__(106); + +module.exports = function (it) { + return IndexedObject(requireObjectCoercible(it)); +}; + + +/***/ }), +/* 34 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__(363); + +/***/ }), +/* 35 */ +/***/ (function(module, exports, __webpack_require__) { + +var requireObjectCoercible = __webpack_require__(106); + +var $Object = Object; + +// `ToObject` abstract operation +// https://tc39.es/ecma262/#sec-toobject +module.exports = function (argument) { + return $Object(requireObjectCoercible(argument)); +}; + + +/***/ }), +/* 36 */ +/***/ (function(module, exports, __webpack_require__) { + +var DESCRIPTORS = __webpack_require__(19); +var definePropertyModule = __webpack_require__(32); +var createPropertyDescriptor = __webpack_require__(41); + +module.exports = DESCRIPTORS ? function (object, key, value) { + return definePropertyModule.f(object, key, createPropertyDescriptor(1, value)); +} : function (object, key, value) { + object[key] = value; + return object; +}; + + +/***/ }), +/* 37 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = has; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__setup_js__ = __webpack_require__(3); + + +// Internal function to check whether `key` is an own property name of `obj`. +function has(obj, key) { + return obj != null && __WEBPACK_IMPORTED_MODULE_0__setup_js__["i" /* hasOwnProperty */].call(obj, key); +} + + +/***/ }), +/* 38 */ +/***/ (function(module, exports, __webpack_require__) { + +var path = __webpack_require__(13); + +module.exports = function (CONSTRUCTOR) { + return path[CONSTRUCTOR + 'Prototype']; +}; + + +/***/ }), +/* 39 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__(356); + +/***/ }), +/* 40 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(2); + +var _setPrototypeOf = _interopRequireDefault(__webpack_require__(379)); + +var _getPrototypeOf = _interopRequireDefault(__webpack_require__(215)); + +var _ = __webpack_require__(1); +/** + * @class AV.Error + */ + + +function AVError(code, message) { + if (this instanceof AVError ? this.constructor : void 0) { + var error = new Error(message); + (0, _setPrototypeOf.default)(error, (0, _getPrototypeOf.default)(this)); + error.code = code; + return error; + } + + return new AVError(code, message); +} + +AVError.prototype = Object.create(Error.prototype, { + constructor: { + value: Error, + enumerable: false, + writable: true, + configurable: true + } +}); +(0, _setPrototypeOf.default)(AVError, Error); + +_.extend(AVError, +/** @lends AV.Error */ +{ + /** + * Error code indicating some error other than those enumerated here. + * @constant + */ + OTHER_CAUSE: -1, + + /** + * Error code indicating that something has gone wrong with the server. + * If you get this error code, it is AV's fault. + * @constant + */ + INTERNAL_SERVER_ERROR: 1, + + /** + * Error code indicating the connection to the AV servers failed. + * @constant + */ + CONNECTION_FAILED: 100, + + /** + * Error code indicating the specified object doesn't exist. + * @constant + */ + OBJECT_NOT_FOUND: 101, + + /** + * Error code indicating you tried to query with a datatype that doesn't + * support it, like exact matching an array or object. + * @constant + */ + INVALID_QUERY: 102, + + /** + * Error code indicating a missing or invalid classname. Classnames are + * case-sensitive. They must start with a letter, and a-zA-Z0-9_ are the + * only valid characters. + * @constant + */ + INVALID_CLASS_NAME: 103, + + /** + * Error code indicating an unspecified object id. + * @constant + */ + MISSING_OBJECT_ID: 104, + + /** + * Error code indicating an invalid key name. Keys are case-sensitive. They + * must start with a letter, and a-zA-Z0-9_ are the only valid characters. + * @constant + */ + INVALID_KEY_NAME: 105, + + /** + * Error code indicating a malformed pointer. You should not see this unless + * you have been mucking about changing internal AV code. + * @constant + */ + INVALID_POINTER: 106, + + /** + * Error code indicating that badly formed JSON was received upstream. This + * either indicates you have done something unusual with modifying how + * things encode to JSON, or the network is failing badly. + * @constant + */ + INVALID_JSON: 107, + + /** + * Error code indicating that the feature you tried to access is only + * available internally for testing purposes. + * @constant + */ + COMMAND_UNAVAILABLE: 108, + + /** + * You must call AV.initialize before using the AV library. + * @constant + */ + NOT_INITIALIZED: 109, + + /** + * Error code indicating that a field was set to an inconsistent type. + * @constant + */ + INCORRECT_TYPE: 111, + + /** + * Error code indicating an invalid channel name. A channel name is either + * an empty string (the broadcast channel) or contains only a-zA-Z0-9_ + * characters. + * @constant + */ + INVALID_CHANNEL_NAME: 112, + + /** + * Error code indicating that push is misconfigured. + * @constant + */ + PUSH_MISCONFIGURED: 115, + + /** + * Error code indicating that the object is too large. + * @constant + */ + OBJECT_TOO_LARGE: 116, + + /** + * Error code indicating that the operation isn't allowed for clients. + * @constant + */ + OPERATION_FORBIDDEN: 119, + + /** + * Error code indicating the result was not found in the cache. + * @constant + */ + CACHE_MISS: 120, + + /** + * Error code indicating that an invalid key was used in a nested + * JSONObject. + * @constant + */ + INVALID_NESTED_KEY: 121, + + /** + * Error code indicating that an invalid filename was used for AVFile. + * A valid file name contains only a-zA-Z0-9_. characters and is between 1 + * and 128 characters. + * @constant + */ + INVALID_FILE_NAME: 122, + + /** + * Error code indicating an invalid ACL was provided. + * @constant + */ + INVALID_ACL: 123, + + /** + * Error code indicating that the request timed out on the server. Typically + * this indicates that the request is too expensive to run. + * @constant + */ + TIMEOUT: 124, + + /** + * Error code indicating that the email address was invalid. + * @constant + */ + INVALID_EMAIL_ADDRESS: 125, + + /** + * Error code indicating a missing content type. + * @constant + */ + MISSING_CONTENT_TYPE: 126, + + /** + * Error code indicating a missing content length. + * @constant + */ + MISSING_CONTENT_LENGTH: 127, + + /** + * Error code indicating an invalid content length. + * @constant + */ + INVALID_CONTENT_LENGTH: 128, + + /** + * Error code indicating a file that was too large. + * @constant + */ + FILE_TOO_LARGE: 129, + + /** + * Error code indicating an error saving a file. + * @constant + */ + FILE_SAVE_ERROR: 130, + + /** + * Error code indicating an error deleting a file. + * @constant + */ + FILE_DELETE_ERROR: 153, + + /** + * Error code indicating that a unique field was given a value that is + * already taken. + * @constant + */ + DUPLICATE_VALUE: 137, + + /** + * Error code indicating that a role's name is invalid. + * @constant + */ + INVALID_ROLE_NAME: 139, + + /** + * Error code indicating that an application quota was exceeded. Upgrade to + * resolve. + * @constant + */ + EXCEEDED_QUOTA: 140, + + /** + * Error code indicating that a Cloud Code script failed. + * @constant + */ + SCRIPT_FAILED: 141, + + /** + * Error code indicating that a Cloud Code validation failed. + * @constant + */ + VALIDATION_ERROR: 142, + + /** + * Error code indicating that invalid image data was provided. + * @constant + */ + INVALID_IMAGE_DATA: 150, + + /** + * Error code indicating an unsaved file. + * @constant + */ + UNSAVED_FILE_ERROR: 151, + + /** + * Error code indicating an invalid push time. + * @constant + */ + INVALID_PUSH_TIME_ERROR: 152, + + /** + * Error code indicating that the username is missing or empty. + * @constant + */ + USERNAME_MISSING: 200, + + /** + * Error code indicating that the password is missing or empty. + * @constant + */ + PASSWORD_MISSING: 201, + + /** + * Error code indicating that the username has already been taken. + * @constant + */ + USERNAME_TAKEN: 202, + + /** + * Error code indicating that the email has already been taken. + * @constant + */ + EMAIL_TAKEN: 203, + + /** + * Error code indicating that the email is missing, but must be specified. + * @constant + */ + EMAIL_MISSING: 204, + + /** + * Error code indicating that a user with the specified email was not found. + * @constant + */ + EMAIL_NOT_FOUND: 205, + + /** + * Error code indicating that a user object without a valid session could + * not be altered. + * @constant + */ + SESSION_MISSING: 206, + + /** + * Error code indicating that a user can only be created through signup. + * @constant + */ + MUST_CREATE_USER_THROUGH_SIGNUP: 207, + + /** + * Error code indicating that an an account being linked is already linked + * to another user. + * @constant + */ + ACCOUNT_ALREADY_LINKED: 208, + + /** + * Error code indicating that a user cannot be linked to an account because + * that account's id could not be found. + * @constant + */ + LINKED_ID_MISSING: 250, + + /** + * Error code indicating that a user with a linked (e.g. Facebook) account + * has an invalid session. + * @constant + */ + INVALID_LINKED_SESSION: 251, + + /** + * Error code indicating that a service being linked (e.g. Facebook or + * Twitter) is unsupported. + * @constant + */ + UNSUPPORTED_SERVICE: 252, + + /** + * Error code indicating a real error code is unavailable because + * we had to use an XDomainRequest object to allow CORS requests in + * Internet Explorer, which strips the body from HTTP responses that have + * a non-2XX status code. + * @constant + */ + X_DOMAIN_REQUEST: 602 +}); + +module.exports = AVError; + +/***/ }), +/* 41 */ +/***/ (function(module, exports) { + +module.exports = function (bitmap, value) { + return { + enumerable: !(bitmap & 1), + configurable: !(bitmap & 2), + writable: !(bitmap & 4), + value: value + }; +}; + + +/***/ }), +/* 42 */ +/***/ (function(module, exports, __webpack_require__) { + +var toLength = __webpack_require__(249); + +// `LengthOfArrayLike` abstract operation +// https://tc39.es/ecma262/#sec-lengthofarraylike +module.exports = function (obj) { + return toLength(obj.length); +}; + + +/***/ }), +/* 43 */ +/***/ (function(module, exports, __webpack_require__) { + +var createNonEnumerableProperty = __webpack_require__(36); + +module.exports = function (target, key, value, options) { + if (options && options.enumerable) target[key] = value; + else createNonEnumerableProperty(target, key, value); + return target; +}; + + +/***/ }), +/* 44 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var aCallable = __webpack_require__(30); + +var PromiseCapability = function (C) { + var resolve, reject; + this.promise = new C(function ($$resolve, $$reject) { + if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor'); + resolve = $$resolve; + reject = $$reject; + }); + this.resolve = aCallable(resolve); + this.reject = aCallable(reject); +}; + +// `NewPromiseCapability` abstract operation +// https://tc39.es/ecma262/#sec-newpromisecapability +module.exports.f = function (C) { + return new PromiseCapability(C); +}; + + +/***/ }), +/* 45 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = isObject; +// Is a given variable an object? +function isObject(obj) { + var type = typeof obj; + return type === 'function' || type === 'object' && !!obj; +} + + +/***/ }), +/* 46 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__setup_js__ = __webpack_require__(3); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__tagTester_js__ = __webpack_require__(15); + + + +// Is a given value an array? +// Delegates to ECMA5's native `Array.isArray`. +/* harmony default export */ __webpack_exports__["a"] = (__WEBPACK_IMPORTED_MODULE_0__setup_js__["k" /* nativeIsArray */] || Object(__WEBPACK_IMPORTED_MODULE_1__tagTester_js__["a" /* default */])('Array')); + + +/***/ }), +/* 47 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = each; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__optimizeCb_js__ = __webpack_require__(77); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__isArrayLike_js__ = __webpack_require__(24); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__keys_js__ = __webpack_require__(12); + + + + +// The cornerstone for collection functions, an `each` +// implementation, aka `forEach`. +// Handles raw objects in addition to array-likes. Treats all +// sparse array-likes as if they were dense. +function each(obj, iteratee, context) { + iteratee = Object(__WEBPACK_IMPORTED_MODULE_0__optimizeCb_js__["a" /* default */])(iteratee, context); + var i, length; + if (Object(__WEBPACK_IMPORTED_MODULE_1__isArrayLike_js__["a" /* default */])(obj)) { + for (i = 0, length = obj.length; i < length; i++) { + iteratee(obj[i], i, obj); + } + } else { + var _keys = Object(__WEBPACK_IMPORTED_MODULE_2__keys_js__["a" /* default */])(obj); + for (i = 0, length = _keys.length; i < length; i++) { + iteratee(obj[_keys[i]], _keys[i], obj); + } + } + return obj; +} + + +/***/ }), +/* 48 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__(370); + +/***/ }), +/* 49 */ +/***/ (function(module, exports, __webpack_require__) { + +/* eslint-disable es-x/no-symbol -- required for testing */ +var V8_VERSION = __webpack_require__(84); +var fails = __webpack_require__(4); + +// eslint-disable-next-line es-x/no-object-getownpropertysymbols -- required for testing +module.exports = !!Object.getOwnPropertySymbols && !fails(function () { + var symbol = Symbol(); + // Chrome 38 Symbol has incorrect toString conversion + // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances + return !String(symbol) || !(Object(symbol) instanceof Symbol) || + // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances + !Symbol.sham && V8_VERSION && V8_VERSION < 41; +}); + + +/***/ }), +/* 50 */ +/***/ (function(module, exports, __webpack_require__) { + +var uncurryThis = __webpack_require__(6); +var aCallable = __webpack_require__(30); +var NATIVE_BIND = __webpack_require__(63); + +var bind = uncurryThis(uncurryThis.bind); + +// optional / simple context binding +module.exports = function (fn, that) { + aCallable(fn); + return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) { + return fn.apply(that, arguments); + }; +}; + + +/***/ }), +/* 51 */ +/***/ (function(module, exports, __webpack_require__) { + +/* global ActiveXObject -- old IE, WSH */ +var anObject = __webpack_require__(21); +var definePropertiesModule = __webpack_require__(147); +var enumBugKeys = __webpack_require__(114); +var hiddenKeys = __webpack_require__(89); +var html = __webpack_require__(148); +var documentCreateElement = __webpack_require__(110); +var sharedKey = __webpack_require__(87); + +var GT = '>'; +var LT = '<'; +var PROTOTYPE = 'prototype'; +var SCRIPT = 'script'; +var IE_PROTO = sharedKey('IE_PROTO'); + +var EmptyConstructor = function () { /* empty */ }; + +var scriptTag = function (content) { + return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT; +}; + +// Create object with fake `null` prototype: use ActiveX Object with cleared prototype +var NullProtoObjectViaActiveX = function (activeXDocument) { + activeXDocument.write(scriptTag('')); + activeXDocument.close(); + var temp = activeXDocument.parentWindow.Object; + activeXDocument = null; // avoid memory leak + return temp; +}; + +// Create object with fake `null` prototype: use iframe Object with cleared prototype +var NullProtoObjectViaIFrame = function () { + // Thrash, waste and sodomy: IE GC bug + var iframe = documentCreateElement('iframe'); + var JS = 'java' + SCRIPT + ':'; + var iframeDocument; + iframe.style.display = 'none'; + html.appendChild(iframe); + // https://github.com/zloirock/core-js/issues/475 + iframe.src = String(JS); + iframeDocument = iframe.contentWindow.document; + iframeDocument.open(); + iframeDocument.write(scriptTag('document.F=Object')); + iframeDocument.close(); + return iframeDocument.F; +}; + +// Check for document.domain and active x support +// No need to use active x approach when document.domain is not set +// see https://github.com/es-shims/es5-shim/issues/150 +// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346 +// avoid IE GC bug +var activeXDocument; +var NullProtoObject = function () { + try { + activeXDocument = new ActiveXObject('htmlfile'); + } catch (error) { /* ignore */ } + NullProtoObject = typeof document != 'undefined' + ? document.domain && activeXDocument + ? NullProtoObjectViaActiveX(activeXDocument) // old IE + : NullProtoObjectViaIFrame() + : NullProtoObjectViaActiveX(activeXDocument); // WSH + var length = enumBugKeys.length; + while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]]; + return NullProtoObject(); +}; + +hiddenKeys[IE_PROTO] = true; + +// `Object.create` method +// https://tc39.es/ecma262/#sec-object.create +// eslint-disable-next-line es-x/no-object-create -- safe +module.exports = Object.create || function create(O, Properties) { + var result; + if (O !== null) { + EmptyConstructor[PROTOTYPE] = anObject(O); + result = new EmptyConstructor(); + EmptyConstructor[PROTOTYPE] = null; + // add "__proto__" for Object.getPrototypeOf polyfill + result[IE_PROTO] = O; + } else result = NullProtoObject(); + return Properties === undefined ? result : definePropertiesModule.f(result, Properties); +}; + + +/***/ }), +/* 52 */ +/***/ (function(module, exports) { + +module.exports = {}; + + +/***/ }), +/* 53 */ +/***/ (function(module, exports, __webpack_require__) { + +var TO_STRING_TAG_SUPPORT = __webpack_require__(117); +var isCallable = __webpack_require__(7); +var classofRaw = __webpack_require__(65); +var wellKnownSymbol = __webpack_require__(8); + +var TO_STRING_TAG = wellKnownSymbol('toStringTag'); +var $Object = Object; + +// ES3 wrong here +var CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments'; + +// fallback for IE11 Script Access Denied error +var tryGet = function (it, key) { + try { + return it[key]; + } catch (error) { /* empty */ } +}; + +// getting tag from ES6+ `Object.prototype.toString` +module.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) { + var O, tag, result; + return it === undefined ? 'Undefined' : it === null ? 'Null' + // @@toStringTag case + : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag + // builtinTag case + : CORRECT_ARGUMENTS ? classofRaw(O) + // ES3 arguments fallback + : (result = classofRaw(O)) == 'Object' && isCallable(O.callee) ? 'Arguments' : result; +}; + + +/***/ }), +/* 54 */ +/***/ (function(module, exports, __webpack_require__) { + +var TO_STRING_TAG_SUPPORT = __webpack_require__(117); +var defineProperty = __webpack_require__(32).f; +var createNonEnumerableProperty = __webpack_require__(36); +var hasOwn = __webpack_require__(14); +var toString = __webpack_require__(257); +var wellKnownSymbol = __webpack_require__(8); + +var TO_STRING_TAG = wellKnownSymbol('toStringTag'); + +module.exports = function (it, TAG, STATIC, SET_METHOD) { + if (it) { + var target = STATIC ? it : it.prototype; + if (!hasOwn(target, TO_STRING_TAG)) { + defineProperty(target, TO_STRING_TAG, { configurable: true, value: TAG }); + } + if (SET_METHOD && !TO_STRING_TAG_SUPPORT) { + createNonEnumerableProperty(target, 'toString', toString); + } + } +}; + + +/***/ }), +/* 55 */ +/***/ (function(module, exports, __webpack_require__) { + +var global = __webpack_require__(9); + +module.exports = global.Promise; + + +/***/ }), +/* 56 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = values; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__keys_js__ = __webpack_require__(12); + + +// Retrieve the values of an object's properties. +function values(obj) { + var _keys = Object(__WEBPACK_IMPORTED_MODULE_0__keys_js__["a" /* default */])(obj); + var length = _keys.length; + var values = Array(length); + for (var i = 0; i < length; i++) { + values[i] = obj[_keys[i]]; + } + return values; +} + + +/***/ }), +/* 57 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = flatten; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__getLength_js__ = __webpack_require__(27); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__isArrayLike_js__ = __webpack_require__(24); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__isArray_js__ = __webpack_require__(46); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__isArguments_js__ = __webpack_require__(123); + + + + + +// Internal implementation of a recursive `flatten` function. +function flatten(input, depth, strict, output) { + output = output || []; + if (!depth && depth !== 0) { + depth = Infinity; + } else if (depth <= 0) { + return output.concat(input); + } + var idx = output.length; + for (var i = 0, length = Object(__WEBPACK_IMPORTED_MODULE_0__getLength_js__["a" /* default */])(input); i < length; i++) { + var value = input[i]; + if (Object(__WEBPACK_IMPORTED_MODULE_1__isArrayLike_js__["a" /* default */])(value) && (Object(__WEBPACK_IMPORTED_MODULE_2__isArray_js__["a" /* default */])(value) || Object(__WEBPACK_IMPORTED_MODULE_3__isArguments_js__["a" /* default */])(value))) { + // Flatten current level of array or arguments object. + if (depth > 1) { + flatten(value, depth - 1, strict, output); + idx = output.length; + } else { + var j = 0, len = value.length; + while (j < len) output[idx++] = value[j++]; + } + } else if (!strict) { + output[idx++] = value; + } + } + return output; +} + + +/***/ }), +/* 58 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = map; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__cb_js__ = __webpack_require__(18); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__isArrayLike_js__ = __webpack_require__(24); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__keys_js__ = __webpack_require__(12); + + + + +// Return the results of applying the iteratee to each element. +function map(obj, iteratee, context) { + iteratee = Object(__WEBPACK_IMPORTED_MODULE_0__cb_js__["a" /* default */])(iteratee, context); + var _keys = !Object(__WEBPACK_IMPORTED_MODULE_1__isArrayLike_js__["a" /* default */])(obj) && Object(__WEBPACK_IMPORTED_MODULE_2__keys_js__["a" /* default */])(obj), + length = (_keys || obj).length, + results = Array(length); + for (var index = 0; index < length; index++) { + var currentKey = _keys ? _keys[index] : index; + results[index] = iteratee(obj[currentKey], currentKey, obj); + } + return results; +} + + +/***/ }), +/* 59 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(global) { + +var _interopRequireDefault = __webpack_require__(2); + +var _promise = _interopRequireDefault(__webpack_require__(10)); + +var _concat = _interopRequireDefault(__webpack_require__(29)); + +var _map = _interopRequireDefault(__webpack_require__(39)); + +var _keys = _interopRequireDefault(__webpack_require__(212)); + +var _stringify = _interopRequireDefault(__webpack_require__(34)); + +var _indexOf = _interopRequireDefault(__webpack_require__(102)); + +var _keys2 = _interopRequireDefault(__webpack_require__(48)); + +var _ = __webpack_require__(1); + +var uuid = __webpack_require__(214); + +var debug = __webpack_require__(60); + +var _require = __webpack_require__(28), + inherits = _require.inherits, + parseDate = _require.parseDate; + +var version = __webpack_require__(217); + +var _require2 = __webpack_require__(61), + setAdapters = _require2.setAdapters, + adapterManager = _require2.adapterManager; + +var AV = global.AV || {}; // All internal configuration items + +AV._config = { + serverURLs: {}, + useMasterKey: false, + production: null, + realtime: null, + requestTimeout: null +}; +var initialUserAgent = "LeanCloud-JS-SDK/".concat(version); // configs shared by all AV instances + +AV._sharedConfig = { + userAgent: initialUserAgent, + liveQueryRealtime: null +}; +adapterManager.on('platformInfo', function (platformInfo) { + var ua = initialUserAgent; + + if (platformInfo) { + if (platformInfo.userAgent) { + ua = platformInfo.userAgent; + } else { + var comments = platformInfo.name; + + if (platformInfo.version) { + comments += "/".concat(platformInfo.version); + } + + if (platformInfo.extra) { + comments += "; ".concat(platformInfo.extra); + } + + ua += " (".concat(comments, ")"); + } + } + + AV._sharedConfig.userAgent = ua; +}); +/** + * Contains all AV API classes and functions. + * @namespace AV + */ + +/** + * Returns prefix for localStorage keys used by this instance of AV. + * @param {String} path The relative suffix to append to it. + * null or undefined is treated as the empty string. + * @return {String} The full key name. + * @private + */ + +AV._getAVPath = function (path) { + if (!AV.applicationId) { + throw new Error('You need to call AV.initialize before using AV.'); + } + + if (!path) { + path = ''; + } + + if (!_.isString(path)) { + throw new Error("Tried to get a localStorage path that wasn't a String."); + } + + if (path[0] === '/') { + path = path.substring(1); + } + + return 'AV/' + AV.applicationId + '/' + path; +}; +/** + * Returns the unique string for this app on this machine. + * Gets reset when localStorage is cleared. + * @private + */ + + +AV._installationId = null; + +AV._getInstallationId = function () { + // See if it's cached in RAM. + if (AV._installationId) { + return _promise.default.resolve(AV._installationId); + } // Try to get it from localStorage. + + + var path = AV._getAVPath('installationId'); + + return AV.localStorage.getItemAsync(path).then(function (_installationId) { + AV._installationId = _installationId; + + if (!AV._installationId) { + // It wasn't in localStorage, so create a new one. + AV._installationId = _installationId = uuid(); + return AV.localStorage.setItemAsync(path, _installationId).then(function () { + return _installationId; + }); + } + + return _installationId; + }); +}; + +AV._subscriptionId = null; + +AV._refreshSubscriptionId = function () { + var path = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : AV._getAVPath('subscriptionId'); + var subscriptionId = AV._subscriptionId = uuid(); + return AV.localStorage.setItemAsync(path, subscriptionId).then(function () { + return subscriptionId; + }); +}; + +AV._getSubscriptionId = function () { + // See if it's cached in RAM. + if (AV._subscriptionId) { + return _promise.default.resolve(AV._subscriptionId); + } // Try to get it from localStorage. + + + var path = AV._getAVPath('subscriptionId'); + + return AV.localStorage.getItemAsync(path).then(function (_subscriptionId) { + AV._subscriptionId = _subscriptionId; + + if (!AV._subscriptionId) { + // It wasn't in localStorage, so create a new one. + _subscriptionId = AV._refreshSubscriptionId(path); + } + + return _subscriptionId; + }); +}; + +AV._parseDate = parseDate; // A self-propagating extend function. + +AV._extend = function (protoProps, classProps) { + var child = inherits(this, protoProps, classProps); + child.extend = this.extend; + return child; +}; +/** + * Converts a value in a AV Object into the appropriate representation. + * This is the JS equivalent of Java's AV.maybeReferenceAndEncode(Object) + * if seenObjects is falsey. Otherwise any AV.Objects not in + * seenObjects will be fully embedded rather than encoded + * as a pointer. This array will be used to prevent going into an infinite + * loop because we have circular references. If + * is set, then none of the AV Objects that are serialized can be dirty. + * @private + */ + + +AV._encode = function (value, seenObjects, disallowObjects) { + var full = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true; + + if (value instanceof AV.Object) { + if (disallowObjects) { + throw new Error('AV.Objects not allowed here'); + } + + if (!seenObjects || _.include(seenObjects, value) || !value._hasData) { + return value._toPointer(); + } + + return value._toFullJSON((0, _concat.default)(seenObjects).call(seenObjects, value), full); + } + + if (value instanceof AV.ACL) { + return value.toJSON(); + } + + if (_.isDate(value)) { + return full ? { + __type: 'Date', + iso: value.toJSON() + } : value.toJSON(); + } + + if (value instanceof AV.GeoPoint) { + return value.toJSON(); + } + + if (_.isArray(value)) { + return (0, _map.default)(_).call(_, value, function (x) { + return AV._encode(x, seenObjects, disallowObjects, full); + }); + } + + if (_.isRegExp(value)) { + return value.source; + } + + if (value instanceof AV.Relation) { + return value.toJSON(); + } + + if (value instanceof AV.Op) { + return value.toJSON(); + } + + if (value instanceof AV.File) { + if (!value.url() && !value.id) { + throw new Error('Tried to save an object containing an unsaved file.'); + } + + return value._toFullJSON(seenObjects, full); + } + + if (_.isObject(value)) { + return _.mapObject(value, function (v, k) { + return AV._encode(v, seenObjects, disallowObjects, full); + }); + } + + return value; +}; +/** + * The inverse function of AV._encode. + * @private + */ + + +AV._decode = function (value, key) { + if (!_.isObject(value) || _.isDate(value)) { + return value; + } + + if (_.isArray(value)) { + return (0, _map.default)(_).call(_, value, function (v) { + return AV._decode(v); + }); + } + + if (value instanceof AV.Object) { + return value; + } + + if (value instanceof AV.File) { + return value; + } + + if (value instanceof AV.Op) { + return value; + } + + if (value instanceof AV.GeoPoint) { + return value; + } + + if (value instanceof AV.ACL) { + return value; + } + + if (key === 'ACL') { + return new AV.ACL(value); + } + + if (value.__op) { + return AV.Op._decode(value); + } + + var className; + + if (value.__type === 'Pointer') { + className = value.className; + + var pointer = AV.Object._create(className); + + if ((0, _keys.default)(value).length > 3) { + var v = _.clone(value); + + delete v.__type; + delete v.className; + + pointer._finishFetch(v, true); + } else { + pointer._finishFetch({ + objectId: value.objectId + }, false); + } + + return pointer; + } + + if (value.__type === 'Object') { + // It's an Object included in a query result. + className = value.className; + + var _v = _.clone(value); + + delete _v.__type; + delete _v.className; + + var object = AV.Object._create(className); + + object._finishFetch(_v, true); + + return object; + } + + if (value.__type === 'Date') { + return AV._parseDate(value.iso); + } + + if (value.__type === 'GeoPoint') { + return new AV.GeoPoint({ + latitude: value.latitude, + longitude: value.longitude + }); + } + + if (value.__type === 'Relation') { + if (!key) throw new Error('key missing decoding a Relation'); + var relation = new AV.Relation(null, key); + relation.targetClassName = value.className; + return relation; + } + + if (value.__type === 'File') { + var file = new AV.File(value.name); + + var _v2 = _.clone(value); + + delete _v2.__type; + + file._finishFetch(_v2); + + return file; + } + + return _.mapObject(value, AV._decode); +}; +/** + * The inverse function of {@link AV.Object#toFullJSON}. + * @since 3.0.0 + * @method + * @param {Object} + * return {AV.Object|AV.File|any} + */ + + +AV.parseJSON = AV._decode; +/** + * Similar to JSON.parse, except that AV internal types will be used if possible. + * Inverse to {@link AV.stringify} + * @since 3.14.0 + * @param {string} text the string to parse. + * @return {AV.Object|AV.File|any} + */ + +AV.parse = function (text) { + return AV.parseJSON(JSON.parse(text)); +}; +/** + * Serialize a target containing AV.Object, similar to JSON.stringify. + * Inverse to {@link AV.parse} + * @since 3.14.0 + * @return {string} + */ + + +AV.stringify = function (target) { + return (0, _stringify.default)(AV._encode(target, [], false, true)); +}; + +AV._encodeObjectOrArray = function (value) { + var encodeAVObject = function encodeAVObject(object) { + if (object && object._toFullJSON) { + object = object._toFullJSON([]); + } + + return _.mapObject(object, function (value) { + return AV._encode(value, []); + }); + }; + + if (_.isArray(value)) { + return (0, _map.default)(value).call(value, function (object) { + return encodeAVObject(object); + }); + } else { + return encodeAVObject(value); + } +}; + +AV._arrayEach = _.each; +/** + * Does a deep traversal of every item in object, calling func on every one. + * @param {Object} object The object or array to traverse deeply. + * @param {Function} func The function to call for every item. It will + * be passed the item as an argument. If it returns a truthy value, that + * value will replace the item in its parent container. + * @returns {} the result of calling func on the top-level object itself. + * @private + */ + +AV._traverse = function (object, func, seen) { + if (object instanceof AV.Object) { + seen = seen || []; + + if ((0, _indexOf.default)(_).call(_, seen, object) >= 0) { + // We've already visited this object in this call. + return; + } + + seen.push(object); + + AV._traverse(object.attributes, func, seen); + + return func(object); + } + + if (object instanceof AV.Relation || object instanceof AV.File) { + // Nothing needs to be done, but we don't want to recurse into the + // object's parent infinitely, so we catch this case. + return func(object); + } + + if (_.isArray(object)) { + _.each(object, function (child, index) { + var newChild = AV._traverse(child, func, seen); + + if (newChild) { + object[index] = newChild; + } + }); + + return func(object); + } + + if (_.isObject(object)) { + AV._each(object, function (child, key) { + var newChild = AV._traverse(child, func, seen); + + if (newChild) { + object[key] = newChild; + } + }); + + return func(object); + } + + return func(object); +}; +/** + * This is like _.each, except: + * * it doesn't work for so-called array-like objects, + * * it does work for dictionaries with a "length" attribute. + * @private + */ + + +AV._objectEach = AV._each = function (obj, callback) { + if (_.isObject(obj)) { + _.each((0, _keys2.default)(_).call(_, obj), function (key) { + callback(obj[key], key); + }); + } else { + _.each(obj, callback); + } +}; +/** + * @namespace + * @since 3.14.0 + */ + + +AV.debug = { + /** + * Enable debug + */ + enable: function enable() { + var namespaces = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'leancloud*'; + return debug.enable(namespaces); + }, + + /** + * Disable debug + */ + disable: debug.disable +}; +/** + * Specify Adapters + * @since 4.4.0 + * @function + * @param {Adapters} newAdapters See {@link https://url.leanapp.cn/adapter-type-definitions @leancloud/adapter-types} for detailed definitions. + */ + +AV.setAdapters = setAdapters; +module.exports = AV; +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(105))) + +/***/ }), +/* 60 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function _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); } + +/* eslint-env browser */ + +/** + * This is the web browser implementation of `debug()`. + */ +exports.log = log; +exports.formatArgs = formatArgs; +exports.save = save; +exports.load = load; +exports.useColors = useColors; +exports.storage = localstorage(); +/** + * Colors. + */ + +exports.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']; +/** + * Currently only WebKit-based Web Inspectors, Firefox >= v31, + * and the Firebug extension (any Firefox version) are known + * to support "%c" CSS customizations. + * + * TODO: add a `localStorage` variable to explicitly enable/disable colors + */ +// eslint-disable-next-line complexity + +function useColors() { + // NB: In an Electron preload script, document will be defined but not fully + // initialized. Since we know we're in Chrome, we'll just detect this case + // explicitly + if (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) { + return true; + } // Internet Explorer and Edge do not support colors. + + + if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) { + return false; + } // Is webkit? http://stackoverflow.com/a/16459606/376773 + // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632 + + + return typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || // Is firebug? http://stackoverflow.com/a/398120/376773 + typeof window !== 'undefined' && window.console && (window.console.firebug || window.console.exception && window.console.table) || // Is firefox >= v31? + // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages + 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 + typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/); +} +/** + * Colorize log arguments if enabled. + * + * @api public + */ + + +function formatArgs(args) { + args[0] = (this.useColors ? '%c' : '') + this.namespace + (this.useColors ? ' %c' : ' ') + args[0] + (this.useColors ? '%c ' : ' ') + '+' + module.exports.humanize(this.diff); + + if (!this.useColors) { + return; + } + + var c = 'color: ' + this.color; + args.splice(1, 0, c, 'color: inherit'); // The final "%c" is somewhat tricky, because there could be other + // arguments passed either before or after the %c, so we need to + // figure out the correct index to insert the CSS into + + var index = 0; + var lastC = 0; + args[0].replace(/%[a-zA-Z%]/g, function (match) { + if (match === '%%') { + return; + } + + index++; + + if (match === '%c') { + // We only are interested in the *last* %c + // (the user may have provided their own) + lastC = index; + } + }); + args.splice(lastC, 0, c); +} +/** + * Invokes `console.log()` when available. + * No-op when `console.log` is not a "function". + * + * @api public + */ + + +function log() { + var _console; + + // This hackery is required for IE8/9, where + // the `console.log` function doesn't have 'apply' + return (typeof console === "undefined" ? "undefined" : _typeof(console)) === 'object' && console.log && (_console = console).log.apply(_console, arguments); +} +/** + * Save `namespaces`. + * + * @param {String} namespaces + * @api private + */ + + +function save(namespaces) { + try { + if (namespaces) { + exports.storage.setItem('debug', namespaces); + } else { + exports.storage.removeItem('debug'); + } + } catch (error) {// Swallow + // XXX (@Qix-) should we be logging these? + } +} +/** + * Load `namespaces`. + * + * @return {String} returns the previously persisted debug modes + * @api private + */ + + +function load() { + var r; + + try { + r = exports.storage.getItem('debug'); + } catch (error) {} // Swallow + // XXX (@Qix-) should we be logging these? + // If debug isn't set in LS, and we're in Electron, try to load $DEBUG + + + if (!r && typeof process !== 'undefined' && 'env' in process) { + r = process.env.DEBUG; + } + + return r; +} +/** + * Localstorage attempts to return the localstorage. + * + * This is necessary because safari throws + * when a user disables cookies/localstorage + * and you attempt to access it. + * + * @return {LocalStorage} + * @api private + */ + + +function localstorage() { + try { + // TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context + // The Browser also has localStorage in the global context. + return localStorage; + } catch (error) {// Swallow + // XXX (@Qix-) should we be logging these? + } +} + +module.exports = __webpack_require__(375)(exports); +var formatters = module.exports.formatters; +/** + * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default. + */ + +formatters.j = function (v) { + try { + return JSON.stringify(v); + } catch (error) { + return '[UnexpectedJSONParseError]: ' + error.message; + } +}; + + + +/***/ }), +/* 61 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(2); + +var _keys = _interopRequireDefault(__webpack_require__(48)); + +var _ = __webpack_require__(1); + +var EventEmitter = __webpack_require__(218); + +var _require = __webpack_require__(28), + inherits = _require.inherits; + +var AdapterManager = inherits(EventEmitter, { + constructor: function constructor() { + EventEmitter.apply(this); + this._adapters = {}; + }, + getAdapter: function getAdapter(name) { + var adapter = this._adapters[name]; + + if (adapter === undefined) { + throw new Error("".concat(name, " adapter is not configured")); + } + + return adapter; + }, + setAdapters: function setAdapters(newAdapters) { + var _this = this; + + _.extend(this._adapters, newAdapters); + + (0, _keys.default)(_).call(_, newAdapters).forEach(function (name) { + return _this.emit(name, newAdapters[name]); + }); + } +}); +var adapterManager = new AdapterManager(); +module.exports = { + getAdapter: adapterManager.getAdapter.bind(adapterManager), + setAdapters: adapterManager.setAdapters.bind(adapterManager), + adapterManager: adapterManager +}; + +/***/ }), +/* 62 */ +/***/ (function(module, exports, __webpack_require__) { + +var NATIVE_BIND = __webpack_require__(63); + +var FunctionPrototype = Function.prototype; +var apply = FunctionPrototype.apply; +var call = FunctionPrototype.call; + +// eslint-disable-next-line es-x/no-reflect -- safe +module.exports = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function () { + return call.apply(apply, arguments); +}); + + +/***/ }), +/* 63 */ +/***/ (function(module, exports, __webpack_require__) { + +var fails = __webpack_require__(4); + +module.exports = !fails(function () { + // eslint-disable-next-line es-x/no-function-prototype-bind -- safe + var test = (function () { /* empty */ }).bind(); + // eslint-disable-next-line no-prototype-builtins -- safe + return typeof test != 'function' || test.hasOwnProperty('prototype'); +}); + + +/***/ }), +/* 64 */ +/***/ (function(module, exports, __webpack_require__) { + +var DESCRIPTORS = __webpack_require__(19); +var call = __webpack_require__(11); +var propertyIsEnumerableModule = __webpack_require__(138); +var createPropertyDescriptor = __webpack_require__(41); +var toIndexedObject = __webpack_require__(33); +var toPropertyKey = __webpack_require__(82); +var hasOwn = __webpack_require__(14); +var IE8_DOM_DEFINE = __webpack_require__(141); + +// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe +var $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; + +// `Object.getOwnPropertyDescriptor` method +// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor +exports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) { + O = toIndexedObject(O); + P = toPropertyKey(P); + if (IE8_DOM_DEFINE) try { + return $getOwnPropertyDescriptor(O, P); + } catch (error) { /* empty */ } + if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]); +}; + + +/***/ }), +/* 65 */ +/***/ (function(module, exports, __webpack_require__) { + +var uncurryThis = __webpack_require__(6); + +var toString = uncurryThis({}.toString); +var stringSlice = uncurryThis(''.slice); + +module.exports = function (it) { + return stringSlice(toString(it), 8, -1); +}; + + +/***/ }), +/* 66 */ +/***/ (function(module, exports) { + +var $String = String; + +module.exports = function (argument) { + try { + return $String(argument); + } catch (error) { + return 'Object'; + } +}; + + +/***/ }), +/* 67 */ +/***/ (function(module, exports, __webpack_require__) { + +var IS_PURE = __webpack_require__(31); +var store = __webpack_require__(108); + +(module.exports = function (key, value) { + return store[key] || (store[key] = value !== undefined ? value : {}); +})('versions', []).push({ + version: '3.23.3', + mode: IS_PURE ? 'pure' : 'global', + copyright: '© 2014-2022 Denis Pushkarev (zloirock.ru)', + license: 'https://github.com/zloirock/core-js/blob/v3.23.3/LICENSE', + source: 'https://github.com/zloirock/core-js' +}); + + +/***/ }), +/* 68 */ +/***/ (function(module, exports, __webpack_require__) { + +var bind = __webpack_require__(50); +var call = __webpack_require__(11); +var anObject = __webpack_require__(21); +var tryToString = __webpack_require__(66); +var isArrayIteratorMethod = __webpack_require__(149); +var lengthOfArrayLike = __webpack_require__(42); +var isPrototypeOf = __webpack_require__(20); +var getIterator = __webpack_require__(150); +var getIteratorMethod = __webpack_require__(90); +var iteratorClose = __webpack_require__(151); + +var $TypeError = TypeError; + +var Result = function (stopped, result) { + this.stopped = stopped; + this.result = result; +}; + +var ResultPrototype = Result.prototype; + +module.exports = function (iterable, unboundFunction, options) { + var that = options && options.that; + var AS_ENTRIES = !!(options && options.AS_ENTRIES); + var IS_ITERATOR = !!(options && options.IS_ITERATOR); + var INTERRUPTED = !!(options && options.INTERRUPTED); + var fn = bind(unboundFunction, that); + var iterator, iterFn, index, length, result, next, step; + + var stop = function (condition) { + if (iterator) iteratorClose(iterator, 'normal', condition); + return new Result(true, condition); + }; + + var callFn = function (value) { + if (AS_ENTRIES) { + anObject(value); + return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]); + } return INTERRUPTED ? fn(value, stop) : fn(value); + }; + + if (IS_ITERATOR) { + iterator = iterable; + } else { + iterFn = getIteratorMethod(iterable); + if (!iterFn) throw $TypeError(tryToString(iterable) + ' is not iterable'); + // optimisation for array iterators + if (isArrayIteratorMethod(iterFn)) { + for (index = 0, length = lengthOfArrayLike(iterable); length > index; index++) { + result = callFn(iterable[index]); + if (result && isPrototypeOf(ResultPrototype, result)) return result; + } return new Result(false); + } + iterator = getIterator(iterable, iterFn); + } + + next = iterator.next; + while (!(step = call(next, iterator)).done) { + try { + result = callFn(step.value); + } catch (error) { + iteratorClose(iterator, 'throw', error); + } + if (typeof result == 'object' && result && isPrototypeOf(ResultPrototype, result)) return result; + } return new Result(false); +}; + + +/***/ }), +/* 69 */ +/***/ (function(module, exports, __webpack_require__) { + +var classof = __webpack_require__(53); + +var $String = String; + +module.exports = function (argument) { + if (classof(argument) === 'Symbol') throw TypeError('Cannot convert a Symbol value to a string'); + return $String(argument); +}; + + +/***/ }), +/* 70 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var toIndexedObject = __webpack_require__(33); +var addToUnscopables = __webpack_require__(152); +var Iterators = __webpack_require__(52); +var InternalStateModule = __webpack_require__(91); +var defineProperty = __webpack_require__(32).f; +var defineIterator = __webpack_require__(153); +var IS_PURE = __webpack_require__(31); +var DESCRIPTORS = __webpack_require__(19); + +var ARRAY_ITERATOR = 'Array Iterator'; +var setInternalState = InternalStateModule.set; +var getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR); + +// `Array.prototype.entries` method +// https://tc39.es/ecma262/#sec-array.prototype.entries +// `Array.prototype.keys` method +// https://tc39.es/ecma262/#sec-array.prototype.keys +// `Array.prototype.values` method +// https://tc39.es/ecma262/#sec-array.prototype.values +// `Array.prototype[@@iterator]` method +// https://tc39.es/ecma262/#sec-array.prototype-@@iterator +// `CreateArrayIterator` internal method +// https://tc39.es/ecma262/#sec-createarrayiterator +module.exports = defineIterator(Array, 'Array', function (iterated, kind) { + setInternalState(this, { + type: ARRAY_ITERATOR, + target: toIndexedObject(iterated), // target + index: 0, // next index + kind: kind // kind + }); +// `%ArrayIteratorPrototype%.next` method +// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next +}, function () { + var state = getInternalState(this); + var target = state.target; + var kind = state.kind; + var index = state.index++; + if (!target || index >= target.length) { + state.target = undefined; + return { value: undefined, done: true }; + } + if (kind == 'keys') return { value: index, done: false }; + if (kind == 'values') return { value: target[index], done: false }; + return { value: [index, target[index]], done: false }; +}, 'values'); + +// argumentsList[@@iterator] is %ArrayProto_values% +// https://tc39.es/ecma262/#sec-createunmappedargumentsobject +// https://tc39.es/ecma262/#sec-createmappedargumentsobject +var values = Iterators.Arguments = Iterators.Array; + +// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables +addToUnscopables('keys'); +addToUnscopables('values'); +addToUnscopables('entries'); + +// V8 ~ Chrome 45- bug +if (!IS_PURE && DESCRIPTORS && values.name !== 'values') try { + defineProperty(values, 'name', { value: 'values' }); +} catch (error) { /* empty */ } + + +/***/ }), +/* 71 */ +/***/ (function(module, exports) { + +module.exports = function (exec) { + try { + return { error: false, value: exec() }; + } catch (error) { + return { error: true, value: error }; + } +}; + + +/***/ }), +/* 72 */ +/***/ (function(module, exports, __webpack_require__) { + +var global = __webpack_require__(9); +var NativePromiseConstructor = __webpack_require__(55); +var isCallable = __webpack_require__(7); +var isForced = __webpack_require__(142); +var inspectSource = __webpack_require__(118); +var wellKnownSymbol = __webpack_require__(8); +var IS_BROWSER = __webpack_require__(268); +var IS_PURE = __webpack_require__(31); +var V8_VERSION = __webpack_require__(84); + +var NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype; +var SPECIES = wellKnownSymbol('species'); +var SUBCLASSING = false; +var NATIVE_PROMISE_REJECTION_EVENT = isCallable(global.PromiseRejectionEvent); + +var FORCED_PROMISE_CONSTRUCTOR = isForced('Promise', function () { + var PROMISE_CONSTRUCTOR_SOURCE = inspectSource(NativePromiseConstructor); + var GLOBAL_CORE_JS_PROMISE = PROMISE_CONSTRUCTOR_SOURCE !== String(NativePromiseConstructor); + // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables + // https://bugs.chromium.org/p/chromium/issues/detail?id=830565 + // We can't detect it synchronously, so just check versions + if (!GLOBAL_CORE_JS_PROMISE && V8_VERSION === 66) return true; + // We need Promise#{ catch, finally } in the pure version for preventing prototype pollution + if (IS_PURE && !(NativePromisePrototype['catch'] && NativePromisePrototype['finally'])) return true; + // We can't use @@species feature detection in V8 since it causes + // deoptimization and performance degradation + // https://github.com/zloirock/core-js/issues/679 + if (V8_VERSION >= 51 && /native code/.test(PROMISE_CONSTRUCTOR_SOURCE)) return false; + // Detect correctness of subclassing with @@species support + var promise = new NativePromiseConstructor(function (resolve) { resolve(1); }); + var FakePromise = function (exec) { + exec(function () { /* empty */ }, function () { /* empty */ }); + }; + var constructor = promise.constructor = {}; + constructor[SPECIES] = FakePromise; + SUBCLASSING = promise.then(function () { /* empty */ }) instanceof FakePromise; + if (!SUBCLASSING) return true; + // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test + return !GLOBAL_CORE_JS_PROMISE && IS_BROWSER && !NATIVE_PROMISE_REJECTION_EVENT; +}); + +module.exports = { + CONSTRUCTOR: FORCED_PROMISE_CONSTRUCTOR, + REJECTION_EVENT: NATIVE_PROMISE_REJECTION_EVENT, + SUBCLASSING: SUBCLASSING +}; + + +/***/ }), +/* 73 */ +/***/ (function(module, exports, __webpack_require__) { + +__webpack_require__(70); +var DOMIterables = __webpack_require__(278); +var global = __webpack_require__(9); +var classof = __webpack_require__(53); +var createNonEnumerableProperty = __webpack_require__(36); +var Iterators = __webpack_require__(52); +var wellKnownSymbol = __webpack_require__(8); + +var TO_STRING_TAG = wellKnownSymbol('toStringTag'); + +for (var COLLECTION_NAME in DOMIterables) { + var Collection = global[COLLECTION_NAME]; + var CollectionPrototype = Collection && Collection.prototype; + if (CollectionPrototype && classof(CollectionPrototype) !== TO_STRING_TAG) { + createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME); + } + Iterators[COLLECTION_NAME] = Iterators.Array; +} + + +/***/ }), +/* 74 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return hasStringTagBug; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return isIE11; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__setup_js__ = __webpack_require__(3); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__hasObjectTag_js__ = __webpack_require__(285); + + + +// In IE 10 - Edge 13, `DataView` has string tag `'[object Object]'`. +// In IE 11, the most common among them, this problem also applies to +// `Map`, `WeakMap` and `Set`. +var hasStringTagBug = ( + __WEBPACK_IMPORTED_MODULE_0__setup_js__["s" /* supportsDataView */] && Object(__WEBPACK_IMPORTED_MODULE_1__hasObjectTag_js__["a" /* default */])(new DataView(new ArrayBuffer(8))) + ), + isIE11 = (typeof Map !== 'undefined' && Object(__WEBPACK_IMPORTED_MODULE_1__hasObjectTag_js__["a" /* default */])(new Map)); + + +/***/ }), +/* 75 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = allKeys; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__isObject_js__ = __webpack_require__(45); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__setup_js__ = __webpack_require__(3); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__collectNonEnumProps_js__ = __webpack_require__(172); + + + + +// Retrieve all the enumerable property names of an object. +function allKeys(obj) { + if (!Object(__WEBPACK_IMPORTED_MODULE_0__isObject_js__["a" /* default */])(obj)) return []; + var keys = []; + for (var key in obj) keys.push(key); + // Ahem, IE < 9. + if (__WEBPACK_IMPORTED_MODULE_1__setup_js__["h" /* hasEnumBug */]) Object(__WEBPACK_IMPORTED_MODULE_2__collectNonEnumProps_js__["a" /* default */])(obj, keys); + return keys; +} + + +/***/ }), +/* 76 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = toPath; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__underscore_js__ = __webpack_require__(23); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__toPath_js__ = __webpack_require__(181); + + + +// Internal wrapper for `_.toPath` to enable minification. +// Similar to `cb` for `_.iteratee`. +function toPath(path) { + return __WEBPACK_IMPORTED_MODULE_0__underscore_js__["a" /* default */].toPath(path); +} + + +/***/ }), +/* 77 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = optimizeCb; +// Internal function that returns an efficient (for current engines) version +// of the passed-in callback, to be repeatedly applied in other Underscore +// functions. +function optimizeCb(func, context, argCount) { + if (context === void 0) return func; + switch (argCount == null ? 3 : argCount) { + case 1: return function(value) { + return func.call(context, value); + }; + // The 2-argument case is omitted because we’re not using it. + case 3: return function(value, index, collection) { + return func.call(context, value, index, collection); + }; + case 4: return function(accumulator, value, index, collection) { + return func.call(context, accumulator, value, index, collection); + }; + } + return function() { + return func.apply(context, arguments); + }; +} + + +/***/ }), +/* 78 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = filter; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__cb_js__ = __webpack_require__(18); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__each_js__ = __webpack_require__(47); + + + +// Return all the elements that pass a truth test. +function filter(obj, predicate, context) { + var results = []; + predicate = Object(__WEBPACK_IMPORTED_MODULE_0__cb_js__["a" /* default */])(predicate, context); + Object(__WEBPACK_IMPORTED_MODULE_1__each_js__["a" /* default */])(obj, function(value, index, list) { + if (predicate(value, index, list)) results.push(value); + }); + return results; +} + + +/***/ }), +/* 79 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = contains; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__isArrayLike_js__ = __webpack_require__(24); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__values_js__ = __webpack_require__(56); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__indexOf_js__ = __webpack_require__(197); + + + + +// Determine if the array or object contains a given item (using `===`). +function contains(obj, item, fromIndex, guard) { + if (!Object(__WEBPACK_IMPORTED_MODULE_0__isArrayLike_js__["a" /* default */])(obj)) obj = Object(__WEBPACK_IMPORTED_MODULE_1__values_js__["a" /* default */])(obj); + if (typeof fromIndex != 'number' || guard) fromIndex = 0; + return Object(__WEBPACK_IMPORTED_MODULE_2__indexOf_js__["a" /* default */])(obj, item, fromIndex) >= 0; +} + + +/***/ }), +/* 80 */ +/***/ (function(module, exports, __webpack_require__) { + +var classof = __webpack_require__(65); + +// `IsArray` abstract operation +// https://tc39.es/ecma262/#sec-isarray +// eslint-disable-next-line es-x/no-array-isarray -- safe +module.exports = Array.isArray || function isArray(argument) { + return classof(argument) == 'Array'; +}; + + +/***/ }), +/* 81 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__(222); + +/***/ }), +/* 82 */ +/***/ (function(module, exports, __webpack_require__) { + +var toPrimitive = __webpack_require__(242); +var isSymbol = __webpack_require__(83); + +// `ToPropertyKey` abstract operation +// https://tc39.es/ecma262/#sec-topropertykey +module.exports = function (argument) { + var key = toPrimitive(argument, 'string'); + return isSymbol(key) ? key : key + ''; +}; + + +/***/ }), +/* 83 */ +/***/ (function(module, exports, __webpack_require__) { + +var getBuiltIn = __webpack_require__(16); +var isCallable = __webpack_require__(7); +var isPrototypeOf = __webpack_require__(20); +var USE_SYMBOL_AS_UID = __webpack_require__(140); + +var $Object = Object; + +module.exports = USE_SYMBOL_AS_UID ? function (it) { + return typeof it == 'symbol'; +} : function (it) { + var $Symbol = getBuiltIn('Symbol'); + return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it)); +}; + + +/***/ }), +/* 84 */ +/***/ (function(module, exports, __webpack_require__) { + +var global = __webpack_require__(9); +var userAgent = __webpack_require__(85); + +var process = global.process; +var Deno = global.Deno; +var versions = process && process.versions || Deno && Deno.version; +var v8 = versions && versions.v8; +var match, version; + +if (v8) { + match = v8.split('.'); + // in old Chrome, versions of V8 isn't V8 = Chrome / 10 + // but their correct versions are not interesting for us + version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]); +} + +// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0` +// so check `userAgent` even if `.v8` exists, but 0 +if (!version && userAgent) { + match = userAgent.match(/Edge\/(\d+)/); + if (!match || match[1] >= 74) { + match = userAgent.match(/Chrome\/(\d+)/); + if (match) version = +match[1]; + } +} + +module.exports = version; + + +/***/ }), +/* 85 */ +/***/ (function(module, exports, __webpack_require__) { + +var getBuiltIn = __webpack_require__(16); + +module.exports = getBuiltIn('navigator', 'userAgent') || ''; + + +/***/ }), +/* 86 */ +/***/ (function(module, exports, __webpack_require__) { + +var hasOwn = __webpack_require__(14); +var isCallable = __webpack_require__(7); +var toObject = __webpack_require__(35); +var sharedKey = __webpack_require__(87); +var CORRECT_PROTOTYPE_GETTER = __webpack_require__(144); + +var IE_PROTO = sharedKey('IE_PROTO'); +var $Object = Object; +var ObjectPrototype = $Object.prototype; + +// `Object.getPrototypeOf` method +// https://tc39.es/ecma262/#sec-object.getprototypeof +// eslint-disable-next-line es-x/no-object-getprototypeof -- safe +module.exports = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function (O) { + var object = toObject(O); + if (hasOwn(object, IE_PROTO)) return object[IE_PROTO]; + var constructor = object.constructor; + if (isCallable(constructor) && object instanceof constructor) { + return constructor.prototype; + } return object instanceof $Object ? ObjectPrototype : null; +}; + + +/***/ }), +/* 87 */ +/***/ (function(module, exports, __webpack_require__) { + +var shared = __webpack_require__(67); +var uid = __webpack_require__(109); + +var keys = shared('keys'); + +module.exports = function (key) { + return keys[key] || (keys[key] = uid(key)); +}; + + +/***/ }), +/* 88 */ +/***/ (function(module, exports, __webpack_require__) { + +/* eslint-disable no-proto -- safe */ +var uncurryThis = __webpack_require__(6); +var anObject = __webpack_require__(21); +var aPossiblePrototype = __webpack_require__(245); + +// `Object.setPrototypeOf` method +// https://tc39.es/ecma262/#sec-object.setprototypeof +// Works with __proto__ only. Old v8 can't work with null proto objects. +// eslint-disable-next-line es-x/no-object-setprototypeof -- safe +module.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () { + var CORRECT_SETTER = false; + var test = {}; + var setter; + try { + // eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe + setter = uncurryThis(Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set); + setter(test, []); + CORRECT_SETTER = test instanceof Array; + } catch (error) { /* empty */ } + return function setPrototypeOf(O, proto) { + anObject(O); + aPossiblePrototype(proto); + if (CORRECT_SETTER) setter(O, proto); + else O.__proto__ = proto; + return O; + }; +}() : undefined); + + +/***/ }), +/* 89 */ +/***/ (function(module, exports) { + +module.exports = {}; + + +/***/ }), +/* 90 */ +/***/ (function(module, exports, __webpack_require__) { + +var classof = __webpack_require__(53); +var getMethod = __webpack_require__(107); +var Iterators = __webpack_require__(52); +var wellKnownSymbol = __webpack_require__(8); + +var ITERATOR = wellKnownSymbol('iterator'); + +module.exports = function (it) { + if (it != undefined) return getMethod(it, ITERATOR) + || getMethod(it, '@@iterator') + || Iterators[classof(it)]; +}; + + +/***/ }), +/* 91 */ +/***/ (function(module, exports, __webpack_require__) { + +var NATIVE_WEAK_MAP = __webpack_require__(254); +var global = __webpack_require__(9); +var uncurryThis = __webpack_require__(6); +var isObject = __webpack_require__(17); +var createNonEnumerableProperty = __webpack_require__(36); +var hasOwn = __webpack_require__(14); +var shared = __webpack_require__(108); +var sharedKey = __webpack_require__(87); +var hiddenKeys = __webpack_require__(89); + +var OBJECT_ALREADY_INITIALIZED = 'Object already initialized'; +var TypeError = global.TypeError; +var WeakMap = global.WeakMap; +var set, get, has; + +var enforce = function (it) { + return has(it) ? get(it) : set(it, {}); +}; + +var getterFor = function (TYPE) { + return function (it) { + var state; + if (!isObject(it) || (state = get(it)).type !== TYPE) { + throw TypeError('Incompatible receiver, ' + TYPE + ' required'); + } return state; + }; +}; + +if (NATIVE_WEAK_MAP || shared.state) { + var store = shared.state || (shared.state = new WeakMap()); + var wmget = uncurryThis(store.get); + var wmhas = uncurryThis(store.has); + var wmset = uncurryThis(store.set); + set = function (it, metadata) { + if (wmhas(store, it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED); + metadata.facade = it; + wmset(store, it, metadata); + return metadata; + }; + get = function (it) { + return wmget(store, it) || {}; + }; + has = function (it) { + return wmhas(store, it); + }; +} else { + var STATE = sharedKey('state'); + hiddenKeys[STATE] = true; + set = function (it, metadata) { + if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED); + metadata.facade = it; + createNonEnumerableProperty(it, STATE, metadata); + return metadata; + }; + get = function (it) { + return hasOwn(it, STATE) ? it[STATE] : {}; + }; + has = function (it) { + return hasOwn(it, STATE); + }; +} + +module.exports = { + set: set, + get: get, + has: has, + enforce: enforce, + getterFor: getterFor +}; + + +/***/ }), +/* 92 */ +/***/ (function(module, exports) { + +// empty + + +/***/ }), +/* 93 */ +/***/ (function(module, exports, __webpack_require__) { + +var uncurryThis = __webpack_require__(6); +var fails = __webpack_require__(4); +var isCallable = __webpack_require__(7); +var classof = __webpack_require__(53); +var getBuiltIn = __webpack_require__(16); +var inspectSource = __webpack_require__(118); + +var noop = function () { /* empty */ }; +var empty = []; +var construct = getBuiltIn('Reflect', 'construct'); +var constructorRegExp = /^\s*(?:class|function)\b/; +var exec = uncurryThis(constructorRegExp.exec); +var INCORRECT_TO_STRING = !constructorRegExp.exec(noop); + +var isConstructorModern = function isConstructor(argument) { + if (!isCallable(argument)) return false; + try { + construct(noop, empty, argument); + return true; + } catch (error) { + return false; + } +}; + +var isConstructorLegacy = function isConstructor(argument) { + if (!isCallable(argument)) return false; + switch (classof(argument)) { + case 'AsyncFunction': + case 'GeneratorFunction': + case 'AsyncGeneratorFunction': return false; + } + try { + // we can't check .prototype since constructors produced by .bind haven't it + // `Function#toString` throws on some built-it function in some legacy engines + // (for example, `DOMQuad` and similar in FF41-) + return INCORRECT_TO_STRING || !!exec(constructorRegExp, inspectSource(argument)); + } catch (error) { + return true; + } +}; + +isConstructorLegacy.sham = true; + +// `IsConstructor` abstract operation +// https://tc39.es/ecma262/#sec-isconstructor +module.exports = !construct || fails(function () { + var called; + return isConstructorModern(isConstructorModern.call) + || !isConstructorModern(Object) + || !isConstructorModern(function () { called = true; }) + || called; +}) ? isConstructorLegacy : isConstructorModern; + + +/***/ }), +/* 94 */ +/***/ (function(module, exports, __webpack_require__) { + +var uncurryThis = __webpack_require__(6); + +module.exports = uncurryThis([].slice); + + +/***/ }), +/* 95 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var charAt = __webpack_require__(277).charAt; +var toString = __webpack_require__(69); +var InternalStateModule = __webpack_require__(91); +var defineIterator = __webpack_require__(153); + +var STRING_ITERATOR = 'String Iterator'; +var setInternalState = InternalStateModule.set; +var getInternalState = InternalStateModule.getterFor(STRING_ITERATOR); + +// `String.prototype[@@iterator]` method +// https://tc39.es/ecma262/#sec-string.prototype-@@iterator +defineIterator(String, 'String', function (iterated) { + setInternalState(this, { + type: STRING_ITERATOR, + string: toString(iterated), + index: 0 + }); +// `%StringIteratorPrototype%.next` method +// https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next +}, function next() { + var state = getInternalState(this); + var string = state.string; + var index = state.index; + var point; + if (index >= string.length) return { value: undefined, done: true }; + point = charAt(string, index); + state.index += point.length; + return { value: point, done: false }; +}); + + +/***/ }), +/* 96 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = matcher; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__extendOwn_js__ = __webpack_require__(127); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__isMatch_js__ = __webpack_require__(173); + + + +// Returns a predicate for checking whether an object has a given set of +// `key:value` pairs. +function matcher(attrs) { + attrs = Object(__WEBPACK_IMPORTED_MODULE_0__extendOwn_js__["a" /* default */])({}, attrs); + return function(obj) { + return Object(__WEBPACK_IMPORTED_MODULE_1__isMatch_js__["a" /* default */])(obj, attrs); + }; +} + + +/***/ }), +/* 97 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__restArguments_js__ = __webpack_require__(22); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__executeBound_js__ = __webpack_require__(189); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__underscore_js__ = __webpack_require__(23); + + + + +// Partially apply a function by creating a version that has had some of its +// arguments pre-filled, without changing its dynamic `this` context. `_` acts +// as a placeholder by default, allowing any combination of arguments to be +// pre-filled. Set `_.partial.placeholder` for a custom placeholder argument. +var partial = Object(__WEBPACK_IMPORTED_MODULE_0__restArguments_js__["a" /* default */])(function(func, boundArgs) { + var placeholder = partial.placeholder; + var bound = function() { + var position = 0, length = boundArgs.length; + var args = Array(length); + for (var i = 0; i < length; i++) { + args[i] = boundArgs[i] === placeholder ? arguments[position++] : boundArgs[i]; + } + while (position < arguments.length) args.push(arguments[position++]); + return Object(__WEBPACK_IMPORTED_MODULE_1__executeBound_js__["a" /* default */])(func, bound, this, this, args); + }; + return bound; +}); + +partial.placeholder = __WEBPACK_IMPORTED_MODULE_2__underscore_js__["a" /* default */]; +/* harmony default export */ __webpack_exports__["a"] = (partial); + + +/***/ }), +/* 98 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = group; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__cb_js__ = __webpack_require__(18); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__each_js__ = __webpack_require__(47); + + + +// An internal function used for aggregate "group by" operations. +function group(behavior, partition) { + return function(obj, iteratee, context) { + var result = partition ? [[], []] : {}; + iteratee = Object(__WEBPACK_IMPORTED_MODULE_0__cb_js__["a" /* default */])(iteratee, context); + Object(__WEBPACK_IMPORTED_MODULE_1__each_js__["a" /* default */])(obj, function(value, index) { + var key = iteratee(value, index, obj); + behavior(result, value, key); + }); + return result; + }; +} + + +/***/ }), +/* 99 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var toPropertyKey = __webpack_require__(82); +var definePropertyModule = __webpack_require__(32); +var createPropertyDescriptor = __webpack_require__(41); + +module.exports = function (object, key, value) { + var propertyKey = toPropertyKey(key); + if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value)); + else object[propertyKey] = value; +}; + + +/***/ }), +/* 100 */ +/***/ (function(module, exports, __webpack_require__) { + +var fails = __webpack_require__(4); +var wellKnownSymbol = __webpack_require__(8); +var V8_VERSION = __webpack_require__(84); + +var SPECIES = wellKnownSymbol('species'); + +module.exports = function (METHOD_NAME) { + // We can't use this feature detection in V8 since it causes + // deoptimization and serious performance degradation + // https://github.com/zloirock/core-js/issues/677 + return V8_VERSION >= 51 || !fails(function () { + var array = []; + var constructor = array.constructor = {}; + constructor[SPECIES] = function () { + return { foo: 1 }; + }; + return array[METHOD_NAME](Boolean).foo !== 1; + }); +}; + + +/***/ }), +/* 101 */ +/***/ (function(module, exports, __webpack_require__) { + +var bind = __webpack_require__(50); +var uncurryThis = __webpack_require__(6); +var IndexedObject = __webpack_require__(139); +var toObject = __webpack_require__(35); +var lengthOfArrayLike = __webpack_require__(42); +var arraySpeciesCreate = __webpack_require__(211); + +var push = uncurryThis([].push); + +// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterReject }` methods implementation +var createMethod = function (TYPE) { + var IS_MAP = TYPE == 1; + var IS_FILTER = TYPE == 2; + var IS_SOME = TYPE == 3; + var IS_EVERY = TYPE == 4; + var IS_FIND_INDEX = TYPE == 6; + var IS_FILTER_REJECT = TYPE == 7; + var NO_HOLES = TYPE == 5 || IS_FIND_INDEX; + return function ($this, callbackfn, that, specificCreate) { + var O = toObject($this); + var self = IndexedObject(O); + var boundFunction = bind(callbackfn, that); + var length = lengthOfArrayLike(self); + var index = 0; + var create = specificCreate || arraySpeciesCreate; + var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_REJECT ? create($this, 0) : undefined; + var value, result; + for (;length > index; index++) if (NO_HOLES || index in self) { + value = self[index]; + result = boundFunction(value, index, O); + if (TYPE) { + if (IS_MAP) target[index] = result; // map + else if (result) switch (TYPE) { + case 3: return true; // some + case 5: return value; // find + case 6: return index; // findIndex + case 2: push(target, value); // filter + } else switch (TYPE) { + case 4: return false; // every + case 7: push(target, value); // filterReject + } + } + } + return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target; + }; +}; + +module.exports = { + // `Array.prototype.forEach` method + // https://tc39.es/ecma262/#sec-array.prototype.foreach + forEach: createMethod(0), + // `Array.prototype.map` method + // https://tc39.es/ecma262/#sec-array.prototype.map + map: createMethod(1), + // `Array.prototype.filter` method + // https://tc39.es/ecma262/#sec-array.prototype.filter + filter: createMethod(2), + // `Array.prototype.some` method + // https://tc39.es/ecma262/#sec-array.prototype.some + some: createMethod(3), + // `Array.prototype.every` method + // https://tc39.es/ecma262/#sec-array.prototype.every + every: createMethod(4), + // `Array.prototype.find` method + // https://tc39.es/ecma262/#sec-array.prototype.find + find: createMethod(5), + // `Array.prototype.findIndex` method + // https://tc39.es/ecma262/#sec-array.prototype.findIndex + findIndex: createMethod(6), + // `Array.prototype.filterReject` method + // https://github.com/tc39/proposal-array-filtering + filterReject: createMethod(7) +}; + + +/***/ }), +/* 102 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__(365); + +/***/ }), +/* 103 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(2); + +var _typeof2 = _interopRequireDefault(__webpack_require__(135)); + +var _filter = _interopRequireDefault(__webpack_require__(430)); + +var _map = _interopRequireDefault(__webpack_require__(39)); + +var _keys = _interopRequireDefault(__webpack_require__(212)); + +var _stringify = _interopRequireDefault(__webpack_require__(34)); + +var _concat = _interopRequireDefault(__webpack_require__(29)); + +var _ = __webpack_require__(1); + +var _require = __webpack_require__(435), + timeout = _require.timeout; + +var debug = __webpack_require__(60); + +var debugRequest = debug('leancloud:request'); +var debugRequestError = debug('leancloud:request:error'); + +var _require2 = __webpack_require__(61), + getAdapter = _require2.getAdapter; + +var requestsCount = 0; + +var ajax = function ajax(_ref) { + var method = _ref.method, + url = _ref.url, + query = _ref.query, + data = _ref.data, + _ref$headers = _ref.headers, + headers = _ref$headers === void 0 ? {} : _ref$headers, + time = _ref.timeout, + onprogress = _ref.onprogress; + + if (query) { + var _context, _context2, _context4; + + var queryString = (0, _filter.default)(_context = (0, _map.default)(_context2 = (0, _keys.default)(query)).call(_context2, function (key) { + var _context3; + + var value = query[key]; + if (value === undefined) return undefined; + var v = (0, _typeof2.default)(value) === 'object' ? (0, _stringify.default)(value) : value; + return (0, _concat.default)(_context3 = "".concat(encodeURIComponent(key), "=")).call(_context3, encodeURIComponent(v)); + })).call(_context, function (qs) { + return qs; + }).join('&'); + url = (0, _concat.default)(_context4 = "".concat(url, "?")).call(_context4, queryString); + } + + var count = requestsCount++; + debugRequest('request(%d) %s %s %o %o %o', count, method, url, query, data, headers); + var request = getAdapter('request'); + var promise = request(url, { + method: method, + headers: headers, + data: data, + onprogress: onprogress + }).then(function (response) { + debugRequest('response(%d) %d %O %o', count, response.status, response.data || response.text, response.header); + + if (response.ok === false) { + var error = new Error(); + error.response = response; + throw error; + } + + return response.data; + }).catch(function (error) { + if (error.response) { + if (!debug.enabled('leancloud:request')) { + debugRequestError('request(%d) %s %s %o %o %o', count, method, url, query, data, headers); + } + + debugRequestError('response(%d) %d %O %o', count, error.response.status, error.response.data || error.response.text, error.response.header); + error.statusCode = error.response.status; + error.responseText = error.response.text; + error.response = error.response.data; + } + + throw error; + }); + return time ? timeout(promise, time) : promise; +}; + +module.exports = ajax; + +/***/ }), +/* 104 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__(440); + +/***/ }), +/* 105 */ +/***/ (function(module, exports) { + +var g; + +// This works in non-strict mode +g = (function() { + return this; +})(); + +try { + // This works if eval is allowed (see CSP) + g = g || Function("return this")() || (1,eval)("this"); +} catch(e) { + // This works if the window reference is available + if(typeof window === "object") + g = window; +} + +// g can still be undefined, but nothing to do about it... +// We return undefined, instead of nothing here, so it's +// easier to handle this case. if(!global) { ...} + +module.exports = g; + + +/***/ }), +/* 106 */ +/***/ (function(module, exports) { + +var $TypeError = TypeError; + +// `RequireObjectCoercible` abstract operation +// https://tc39.es/ecma262/#sec-requireobjectcoercible +module.exports = function (it) { + if (it == undefined) throw $TypeError("Can't call method on " + it); + return it; +}; + + +/***/ }), +/* 107 */ +/***/ (function(module, exports, __webpack_require__) { + +var aCallable = __webpack_require__(30); + +// `GetMethod` abstract operation +// https://tc39.es/ecma262/#sec-getmethod +module.exports = function (V, P) { + var func = V[P]; + return func == null ? undefined : aCallable(func); +}; + + +/***/ }), +/* 108 */ +/***/ (function(module, exports, __webpack_require__) { + +var global = __webpack_require__(9); +var defineGlobalProperty = __webpack_require__(244); + +var SHARED = '__core-js_shared__'; +var store = global[SHARED] || defineGlobalProperty(SHARED, {}); + +module.exports = store; + + +/***/ }), +/* 109 */ +/***/ (function(module, exports, __webpack_require__) { + +var uncurryThis = __webpack_require__(6); + +var id = 0; +var postfix = Math.random(); +var toString = uncurryThis(1.0.toString); + +module.exports = function (key) { + return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36); +}; + + +/***/ }), +/* 110 */ +/***/ (function(module, exports, __webpack_require__) { + +var global = __webpack_require__(9); +var isObject = __webpack_require__(17); + +var document = global.document; +// typeof document.createElement is 'object' in old IE +var EXISTS = isObject(document) && isObject(document.createElement); + +module.exports = function (it) { + return EXISTS ? document.createElement(it) : {}; +}; + + +/***/ }), +/* 111 */ +/***/ (function(module, exports, __webpack_require__) { + +var internalObjectKeys = __webpack_require__(145); +var enumBugKeys = __webpack_require__(114); + +var hiddenKeys = enumBugKeys.concat('length', 'prototype'); + +// `Object.getOwnPropertyNames` method +// https://tc39.es/ecma262/#sec-object.getownpropertynames +// eslint-disable-next-line es-x/no-object-getownpropertynames -- safe +exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) { + return internalObjectKeys(O, hiddenKeys); +}; + + +/***/ }), +/* 112 */ +/***/ (function(module, exports, __webpack_require__) { + +var toIntegerOrInfinity = __webpack_require__(113); + +var max = Math.max; +var min = Math.min; + +// Helper for a popular repeating case of the spec: +// Let integer be ? ToInteger(index). +// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length). +module.exports = function (index, length) { + var integer = toIntegerOrInfinity(index); + return integer < 0 ? max(integer + length, 0) : min(integer, length); +}; + + +/***/ }), +/* 113 */ +/***/ (function(module, exports, __webpack_require__) { + +var trunc = __webpack_require__(248); + +// `ToIntegerOrInfinity` abstract operation +// https://tc39.es/ecma262/#sec-tointegerorinfinity +module.exports = function (argument) { + var number = +argument; + // eslint-disable-next-line no-self-compare -- NaN check + return number !== number || number === 0 ? 0 : trunc(number); +}; + + +/***/ }), +/* 114 */ +/***/ (function(module, exports) { + +// IE8- don't enum bug keys +module.exports = [ + 'constructor', + 'hasOwnProperty', + 'isPrototypeOf', + 'propertyIsEnumerable', + 'toLocaleString', + 'toString', + 'valueOf' +]; + + +/***/ }), +/* 115 */ +/***/ (function(module, exports) { + +// eslint-disable-next-line es-x/no-object-getownpropertysymbols -- safe +exports.f = Object.getOwnPropertySymbols; + + +/***/ }), +/* 116 */ +/***/ (function(module, exports, __webpack_require__) { + +var internalObjectKeys = __webpack_require__(145); +var enumBugKeys = __webpack_require__(114); + +// `Object.keys` method +// https://tc39.es/ecma262/#sec-object.keys +// eslint-disable-next-line es-x/no-object-keys -- safe +module.exports = Object.keys || function keys(O) { + return internalObjectKeys(O, enumBugKeys); +}; + + +/***/ }), +/* 117 */ +/***/ (function(module, exports, __webpack_require__) { + +var wellKnownSymbol = __webpack_require__(8); + +var TO_STRING_TAG = wellKnownSymbol('toStringTag'); +var test = {}; + +test[TO_STRING_TAG] = 'z'; + +module.exports = String(test) === '[object z]'; + + +/***/ }), +/* 118 */ +/***/ (function(module, exports, __webpack_require__) { + +var uncurryThis = __webpack_require__(6); +var isCallable = __webpack_require__(7); +var store = __webpack_require__(108); + +var functionToString = uncurryThis(Function.toString); + +// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper +if (!isCallable(store.inspectSource)) { + store.inspectSource = function (it) { + return functionToString(it); + }; +} + +module.exports = store.inspectSource; + + +/***/ }), +/* 119 */ +/***/ (function(module, exports, __webpack_require__) { + +var classof = __webpack_require__(65); +var global = __webpack_require__(9); + +module.exports = classof(global.process) == 'process'; + + +/***/ }), +/* 120 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__setup_js__ = __webpack_require__(3); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "VERSION", function() { return __WEBPACK_IMPORTED_MODULE_0__setup_js__["e"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__restArguments_js__ = __webpack_require__(22); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "restArguments", function() { return __WEBPACK_IMPORTED_MODULE_1__restArguments_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__isObject_js__ = __webpack_require__(45); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isObject", function() { return __WEBPACK_IMPORTED_MODULE_2__isObject_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__isNull_js__ = __webpack_require__(280); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isNull", function() { return __WEBPACK_IMPORTED_MODULE_3__isNull_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__isUndefined_js__ = __webpack_require__(162); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isUndefined", function() { return __WEBPACK_IMPORTED_MODULE_4__isUndefined_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__isBoolean_js__ = __webpack_require__(163); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isBoolean", function() { return __WEBPACK_IMPORTED_MODULE_5__isBoolean_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__isElement_js__ = __webpack_require__(281); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isElement", function() { return __WEBPACK_IMPORTED_MODULE_6__isElement_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__isString_js__ = __webpack_require__(121); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isString", function() { return __WEBPACK_IMPORTED_MODULE_7__isString_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__isNumber_js__ = __webpack_require__(164); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isNumber", function() { return __WEBPACK_IMPORTED_MODULE_8__isNumber_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__isDate_js__ = __webpack_require__(282); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isDate", function() { return __WEBPACK_IMPORTED_MODULE_9__isDate_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__isRegExp_js__ = __webpack_require__(283); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isRegExp", function() { return __WEBPACK_IMPORTED_MODULE_10__isRegExp_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__isError_js__ = __webpack_require__(284); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isError", function() { return __WEBPACK_IMPORTED_MODULE_11__isError_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__isSymbol_js__ = __webpack_require__(165); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isSymbol", function() { return __WEBPACK_IMPORTED_MODULE_12__isSymbol_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_13__isArrayBuffer_js__ = __webpack_require__(166); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isArrayBuffer", function() { return __WEBPACK_IMPORTED_MODULE_13__isArrayBuffer_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_14__isDataView_js__ = __webpack_require__(122); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isDataView", function() { return __WEBPACK_IMPORTED_MODULE_14__isDataView_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_15__isArray_js__ = __webpack_require__(46); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isArray", function() { return __WEBPACK_IMPORTED_MODULE_15__isArray_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_16__isFunction_js__ = __webpack_require__(26); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isFunction", function() { return __WEBPACK_IMPORTED_MODULE_16__isFunction_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_17__isArguments_js__ = __webpack_require__(123); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isArguments", function() { return __WEBPACK_IMPORTED_MODULE_17__isArguments_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_18__isFinite_js__ = __webpack_require__(286); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isFinite", function() { return __WEBPACK_IMPORTED_MODULE_18__isFinite_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_19__isNaN_js__ = __webpack_require__(167); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isNaN", function() { return __WEBPACK_IMPORTED_MODULE_19__isNaN_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_20__isTypedArray_js__ = __webpack_require__(168); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isTypedArray", function() { return __WEBPACK_IMPORTED_MODULE_20__isTypedArray_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_21__isEmpty_js__ = __webpack_require__(288); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isEmpty", function() { return __WEBPACK_IMPORTED_MODULE_21__isEmpty_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_22__isMatch_js__ = __webpack_require__(173); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isMatch", function() { return __WEBPACK_IMPORTED_MODULE_22__isMatch_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_23__isEqual_js__ = __webpack_require__(289); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isEqual", function() { return __WEBPACK_IMPORTED_MODULE_23__isEqual_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_24__isMap_js__ = __webpack_require__(291); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isMap", function() { return __WEBPACK_IMPORTED_MODULE_24__isMap_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_25__isWeakMap_js__ = __webpack_require__(292); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isWeakMap", function() { return __WEBPACK_IMPORTED_MODULE_25__isWeakMap_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_26__isSet_js__ = __webpack_require__(293); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isSet", function() { return __WEBPACK_IMPORTED_MODULE_26__isSet_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_27__isWeakSet_js__ = __webpack_require__(294); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isWeakSet", function() { return __WEBPACK_IMPORTED_MODULE_27__isWeakSet_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_28__keys_js__ = __webpack_require__(12); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "keys", function() { return __WEBPACK_IMPORTED_MODULE_28__keys_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_29__allKeys_js__ = __webpack_require__(75); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "allKeys", function() { return __WEBPACK_IMPORTED_MODULE_29__allKeys_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_30__values_js__ = __webpack_require__(56); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "values", function() { return __WEBPACK_IMPORTED_MODULE_30__values_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_31__pairs_js__ = __webpack_require__(295); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "pairs", function() { return __WEBPACK_IMPORTED_MODULE_31__pairs_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_32__invert_js__ = __webpack_require__(174); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "invert", function() { return __WEBPACK_IMPORTED_MODULE_32__invert_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_33__functions_js__ = __webpack_require__(175); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "functions", function() { return __WEBPACK_IMPORTED_MODULE_33__functions_js__["a"]; }); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "methods", function() { return __WEBPACK_IMPORTED_MODULE_33__functions_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_34__extend_js__ = __webpack_require__(176); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "extend", function() { return __WEBPACK_IMPORTED_MODULE_34__extend_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_35__extendOwn_js__ = __webpack_require__(127); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "extendOwn", function() { return __WEBPACK_IMPORTED_MODULE_35__extendOwn_js__["a"]; }); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "assign", function() { return __WEBPACK_IMPORTED_MODULE_35__extendOwn_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_36__defaults_js__ = __webpack_require__(177); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "defaults", function() { return __WEBPACK_IMPORTED_MODULE_36__defaults_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_37__create_js__ = __webpack_require__(296); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "create", function() { return __WEBPACK_IMPORTED_MODULE_37__create_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_38__clone_js__ = __webpack_require__(179); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "clone", function() { return __WEBPACK_IMPORTED_MODULE_38__clone_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_39__tap_js__ = __webpack_require__(297); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "tap", function() { return __WEBPACK_IMPORTED_MODULE_39__tap_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_40__get_js__ = __webpack_require__(180); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "get", function() { return __WEBPACK_IMPORTED_MODULE_40__get_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_41__has_js__ = __webpack_require__(298); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "has", function() { return __WEBPACK_IMPORTED_MODULE_41__has_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_42__mapObject_js__ = __webpack_require__(299); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "mapObject", function() { return __WEBPACK_IMPORTED_MODULE_42__mapObject_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_43__identity_js__ = __webpack_require__(129); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "identity", function() { return __WEBPACK_IMPORTED_MODULE_43__identity_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_44__constant_js__ = __webpack_require__(169); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "constant", function() { return __WEBPACK_IMPORTED_MODULE_44__constant_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_45__noop_js__ = __webpack_require__(184); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "noop", function() { return __WEBPACK_IMPORTED_MODULE_45__noop_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_46__toPath_js__ = __webpack_require__(181); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "toPath", function() { return __WEBPACK_IMPORTED_MODULE_46__toPath_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_47__property_js__ = __webpack_require__(130); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "property", function() { return __WEBPACK_IMPORTED_MODULE_47__property_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_48__propertyOf_js__ = __webpack_require__(300); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "propertyOf", function() { return __WEBPACK_IMPORTED_MODULE_48__propertyOf_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_49__matcher_js__ = __webpack_require__(96); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "matcher", function() { return __WEBPACK_IMPORTED_MODULE_49__matcher_js__["a"]; }); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "matches", function() { return __WEBPACK_IMPORTED_MODULE_49__matcher_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_50__times_js__ = __webpack_require__(301); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "times", function() { return __WEBPACK_IMPORTED_MODULE_50__times_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_51__random_js__ = __webpack_require__(185); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "random", function() { return __WEBPACK_IMPORTED_MODULE_51__random_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_52__now_js__ = __webpack_require__(131); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "now", function() { return __WEBPACK_IMPORTED_MODULE_52__now_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_53__escape_js__ = __webpack_require__(302); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "escape", function() { return __WEBPACK_IMPORTED_MODULE_53__escape_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_54__unescape_js__ = __webpack_require__(303); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "unescape", function() { return __WEBPACK_IMPORTED_MODULE_54__unescape_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_55__templateSettings_js__ = __webpack_require__(188); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "templateSettings", function() { return __WEBPACK_IMPORTED_MODULE_55__templateSettings_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_56__template_js__ = __webpack_require__(305); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "template", function() { return __WEBPACK_IMPORTED_MODULE_56__template_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_57__result_js__ = __webpack_require__(306); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "result", function() { return __WEBPACK_IMPORTED_MODULE_57__result_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_58__uniqueId_js__ = __webpack_require__(307); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "uniqueId", function() { return __WEBPACK_IMPORTED_MODULE_58__uniqueId_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_59__chain_js__ = __webpack_require__(308); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "chain", function() { return __WEBPACK_IMPORTED_MODULE_59__chain_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_60__iteratee_js__ = __webpack_require__(183); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "iteratee", function() { return __WEBPACK_IMPORTED_MODULE_60__iteratee_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_61__partial_js__ = __webpack_require__(97); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "partial", function() { return __WEBPACK_IMPORTED_MODULE_61__partial_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_62__bind_js__ = __webpack_require__(190); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "bind", function() { return __WEBPACK_IMPORTED_MODULE_62__bind_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_63__bindAll_js__ = __webpack_require__(309); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "bindAll", function() { return __WEBPACK_IMPORTED_MODULE_63__bindAll_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_64__memoize_js__ = __webpack_require__(310); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "memoize", function() { return __WEBPACK_IMPORTED_MODULE_64__memoize_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_65__delay_js__ = __webpack_require__(191); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "delay", function() { return __WEBPACK_IMPORTED_MODULE_65__delay_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_66__defer_js__ = __webpack_require__(311); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "defer", function() { return __WEBPACK_IMPORTED_MODULE_66__defer_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_67__throttle_js__ = __webpack_require__(312); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "throttle", function() { return __WEBPACK_IMPORTED_MODULE_67__throttle_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_68__debounce_js__ = __webpack_require__(313); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "debounce", function() { return __WEBPACK_IMPORTED_MODULE_68__debounce_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_69__wrap_js__ = __webpack_require__(314); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "wrap", function() { return __WEBPACK_IMPORTED_MODULE_69__wrap_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_70__negate_js__ = __webpack_require__(132); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "negate", function() { return __WEBPACK_IMPORTED_MODULE_70__negate_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_71__compose_js__ = __webpack_require__(315); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "compose", function() { return __WEBPACK_IMPORTED_MODULE_71__compose_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_72__after_js__ = __webpack_require__(316); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "after", function() { return __WEBPACK_IMPORTED_MODULE_72__after_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_73__before_js__ = __webpack_require__(192); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "before", function() { return __WEBPACK_IMPORTED_MODULE_73__before_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_74__once_js__ = __webpack_require__(317); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "once", function() { return __WEBPACK_IMPORTED_MODULE_74__once_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_75__findKey_js__ = __webpack_require__(193); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "findKey", function() { return __WEBPACK_IMPORTED_MODULE_75__findKey_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_76__findIndex_js__ = __webpack_require__(133); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "findIndex", function() { return __WEBPACK_IMPORTED_MODULE_76__findIndex_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_77__findLastIndex_js__ = __webpack_require__(195); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "findLastIndex", function() { return __WEBPACK_IMPORTED_MODULE_77__findLastIndex_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_78__sortedIndex_js__ = __webpack_require__(196); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "sortedIndex", function() { return __WEBPACK_IMPORTED_MODULE_78__sortedIndex_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_79__indexOf_js__ = __webpack_require__(197); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "indexOf", function() { return __WEBPACK_IMPORTED_MODULE_79__indexOf_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_80__lastIndexOf_js__ = __webpack_require__(318); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "lastIndexOf", function() { return __WEBPACK_IMPORTED_MODULE_80__lastIndexOf_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_81__find_js__ = __webpack_require__(199); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "find", function() { return __WEBPACK_IMPORTED_MODULE_81__find_js__["a"]; }); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "detect", function() { return __WEBPACK_IMPORTED_MODULE_81__find_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_82__findWhere_js__ = __webpack_require__(319); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "findWhere", function() { return __WEBPACK_IMPORTED_MODULE_82__findWhere_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_83__each_js__ = __webpack_require__(47); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "each", function() { return __WEBPACK_IMPORTED_MODULE_83__each_js__["a"]; }); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "forEach", function() { return __WEBPACK_IMPORTED_MODULE_83__each_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_84__map_js__ = __webpack_require__(58); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "map", function() { return __WEBPACK_IMPORTED_MODULE_84__map_js__["a"]; }); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "collect", function() { return __WEBPACK_IMPORTED_MODULE_84__map_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_85__reduce_js__ = __webpack_require__(320); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "reduce", function() { return __WEBPACK_IMPORTED_MODULE_85__reduce_js__["a"]; }); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "foldl", function() { return __WEBPACK_IMPORTED_MODULE_85__reduce_js__["a"]; }); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "inject", function() { return __WEBPACK_IMPORTED_MODULE_85__reduce_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_86__reduceRight_js__ = __webpack_require__(321); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "reduceRight", function() { return __WEBPACK_IMPORTED_MODULE_86__reduceRight_js__["a"]; }); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "foldr", function() { return __WEBPACK_IMPORTED_MODULE_86__reduceRight_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_87__filter_js__ = __webpack_require__(78); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "filter", function() { return __WEBPACK_IMPORTED_MODULE_87__filter_js__["a"]; }); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "select", function() { return __WEBPACK_IMPORTED_MODULE_87__filter_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_88__reject_js__ = __webpack_require__(322); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "reject", function() { return __WEBPACK_IMPORTED_MODULE_88__reject_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_89__every_js__ = __webpack_require__(323); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "every", function() { return __WEBPACK_IMPORTED_MODULE_89__every_js__["a"]; }); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "all", function() { return __WEBPACK_IMPORTED_MODULE_89__every_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_90__some_js__ = __webpack_require__(324); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "some", function() { return __WEBPACK_IMPORTED_MODULE_90__some_js__["a"]; }); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "any", function() { return __WEBPACK_IMPORTED_MODULE_90__some_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_91__contains_js__ = __webpack_require__(79); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "contains", function() { return __WEBPACK_IMPORTED_MODULE_91__contains_js__["a"]; }); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "includes", function() { return __WEBPACK_IMPORTED_MODULE_91__contains_js__["a"]; }); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "include", function() { return __WEBPACK_IMPORTED_MODULE_91__contains_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_92__invoke_js__ = __webpack_require__(325); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "invoke", function() { return __WEBPACK_IMPORTED_MODULE_92__invoke_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_93__pluck_js__ = __webpack_require__(134); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "pluck", function() { return __WEBPACK_IMPORTED_MODULE_93__pluck_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_94__where_js__ = __webpack_require__(326); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "where", function() { return __WEBPACK_IMPORTED_MODULE_94__where_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_95__max_js__ = __webpack_require__(201); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "max", function() { return __WEBPACK_IMPORTED_MODULE_95__max_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_96__min_js__ = __webpack_require__(327); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "min", function() { return __WEBPACK_IMPORTED_MODULE_96__min_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_97__shuffle_js__ = __webpack_require__(328); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "shuffle", function() { return __WEBPACK_IMPORTED_MODULE_97__shuffle_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_98__sample_js__ = __webpack_require__(202); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "sample", function() { return __WEBPACK_IMPORTED_MODULE_98__sample_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_99__sortBy_js__ = __webpack_require__(329); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "sortBy", function() { return __WEBPACK_IMPORTED_MODULE_99__sortBy_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_100__groupBy_js__ = __webpack_require__(330); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "groupBy", function() { return __WEBPACK_IMPORTED_MODULE_100__groupBy_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_101__indexBy_js__ = __webpack_require__(331); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "indexBy", function() { return __WEBPACK_IMPORTED_MODULE_101__indexBy_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_102__countBy_js__ = __webpack_require__(332); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "countBy", function() { return __WEBPACK_IMPORTED_MODULE_102__countBy_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_103__partition_js__ = __webpack_require__(333); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "partition", function() { return __WEBPACK_IMPORTED_MODULE_103__partition_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_104__toArray_js__ = __webpack_require__(334); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "toArray", function() { return __WEBPACK_IMPORTED_MODULE_104__toArray_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_105__size_js__ = __webpack_require__(335); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "size", function() { return __WEBPACK_IMPORTED_MODULE_105__size_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_106__pick_js__ = __webpack_require__(203); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "pick", function() { return __WEBPACK_IMPORTED_MODULE_106__pick_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_107__omit_js__ = __webpack_require__(337); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "omit", function() { return __WEBPACK_IMPORTED_MODULE_107__omit_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_108__first_js__ = __webpack_require__(338); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "first", function() { return __WEBPACK_IMPORTED_MODULE_108__first_js__["a"]; }); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "head", function() { return __WEBPACK_IMPORTED_MODULE_108__first_js__["a"]; }); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "take", function() { return __WEBPACK_IMPORTED_MODULE_108__first_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_109__initial_js__ = __webpack_require__(204); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "initial", function() { return __WEBPACK_IMPORTED_MODULE_109__initial_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_110__last_js__ = __webpack_require__(339); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "last", function() { return __WEBPACK_IMPORTED_MODULE_110__last_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_111__rest_js__ = __webpack_require__(205); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "rest", function() { return __WEBPACK_IMPORTED_MODULE_111__rest_js__["a"]; }); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "tail", function() { return __WEBPACK_IMPORTED_MODULE_111__rest_js__["a"]; }); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "drop", function() { return __WEBPACK_IMPORTED_MODULE_111__rest_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_112__compact_js__ = __webpack_require__(340); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "compact", function() { return __WEBPACK_IMPORTED_MODULE_112__compact_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_113__flatten_js__ = __webpack_require__(341); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "flatten", function() { return __WEBPACK_IMPORTED_MODULE_113__flatten_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_114__without_js__ = __webpack_require__(342); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "without", function() { return __WEBPACK_IMPORTED_MODULE_114__without_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_115__uniq_js__ = __webpack_require__(207); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "uniq", function() { return __WEBPACK_IMPORTED_MODULE_115__uniq_js__["a"]; }); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "unique", function() { return __WEBPACK_IMPORTED_MODULE_115__uniq_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_116__union_js__ = __webpack_require__(343); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "union", function() { return __WEBPACK_IMPORTED_MODULE_116__union_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_117__intersection_js__ = __webpack_require__(344); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "intersection", function() { return __WEBPACK_IMPORTED_MODULE_117__intersection_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_118__difference_js__ = __webpack_require__(206); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "difference", function() { return __WEBPACK_IMPORTED_MODULE_118__difference_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_119__unzip_js__ = __webpack_require__(208); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "unzip", function() { return __WEBPACK_IMPORTED_MODULE_119__unzip_js__["a"]; }); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "transpose", function() { return __WEBPACK_IMPORTED_MODULE_119__unzip_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_120__zip_js__ = __webpack_require__(345); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "zip", function() { return __WEBPACK_IMPORTED_MODULE_120__zip_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_121__object_js__ = __webpack_require__(346); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "object", function() { return __WEBPACK_IMPORTED_MODULE_121__object_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_122__range_js__ = __webpack_require__(347); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "range", function() { return __WEBPACK_IMPORTED_MODULE_122__range_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_123__chunk_js__ = __webpack_require__(348); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "chunk", function() { return __WEBPACK_IMPORTED_MODULE_123__chunk_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_124__mixin_js__ = __webpack_require__(349); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "mixin", function() { return __WEBPACK_IMPORTED_MODULE_124__mixin_js__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_125__underscore_array_methods_js__ = __webpack_require__(350); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return __WEBPACK_IMPORTED_MODULE_125__underscore_array_methods_js__["a"]; }); +// Named Exports +// ============= + +// Underscore.js 1.12.1 +// https://underscorejs.org +// (c) 2009-2020 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors +// Underscore may be freely distributed under the MIT license. + +// Baseline setup. + + + +// Object Functions +// ---------------- +// Our most fundamental functions operate on any JavaScript object. +// Most functions in Underscore depend on at least one function in this section. + +// A group of functions that check the types of core JavaScript values. +// These are often informally referred to as the "isType" functions. + + + + + + + + + + + + + + + + + + + + + + + + + + + +// Functions that treat an object as a dictionary of key-value pairs. + + + + + + + + + + + + + + + + +// Utility Functions +// ----------------- +// A bit of a grab bag: Predicate-generating functions for use with filters and +// loops, string escaping and templating, create random numbers and unique ids, +// and functions that facilitate Underscore's chaining and iteration conventions. + + + + + + + + + + + + + + + + + + + +// Function (ahem) Functions +// ------------------------- +// These functions take a function as an argument and return a new function +// as the result. Also known as higher-order functions. + + + + + + + + + + + + + + + +// Finders +// ------- +// Functions that extract (the position of) a single element from an object +// or array based on some criterion. + + + + + + + + + +// Collection Functions +// -------------------- +// Functions that work on any collection of elements: either an array, or +// an object of key-value pairs. + + + + + + + + + + + + + + + + + + + + + + + + +// `_.pick` and `_.omit` are actually object functions, but we put +// them here in order to create a more natural reading order in the +// monolithic build as they depend on `_.contains`. + + + +// Array Functions +// --------------- +// Functions that operate on arrays (and array-likes) only, because they’re +// expressed in terms of operations on an ordered list of values. + + + + + + + + + + + + + + + + + +// OOP +// --- +// These modules support the "object-oriented" calling style. See also +// `underscore.js` and `index-default.js`. + + + + +/***/ }), +/* 121 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__tagTester_js__ = __webpack_require__(15); + + +/* harmony default export */ __webpack_exports__["a"] = (Object(__WEBPACK_IMPORTED_MODULE_0__tagTester_js__["a" /* default */])('String')); + + +/***/ }), +/* 122 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__tagTester_js__ = __webpack_require__(15); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__isFunction_js__ = __webpack_require__(26); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__isArrayBuffer_js__ = __webpack_require__(166); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__stringTagBug_js__ = __webpack_require__(74); + + + + + +var isDataView = Object(__WEBPACK_IMPORTED_MODULE_0__tagTester_js__["a" /* default */])('DataView'); + +// In IE 10 - Edge 13, we need a different heuristic +// to determine whether an object is a `DataView`. +function ie10IsDataView(obj) { + return obj != null && Object(__WEBPACK_IMPORTED_MODULE_1__isFunction_js__["a" /* default */])(obj.getInt8) && Object(__WEBPACK_IMPORTED_MODULE_2__isArrayBuffer_js__["a" /* default */])(obj.buffer); +} + +/* harmony default export */ __webpack_exports__["a"] = (__WEBPACK_IMPORTED_MODULE_3__stringTagBug_js__["a" /* hasStringTagBug */] ? ie10IsDataView : isDataView); + + +/***/ }), +/* 123 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__tagTester_js__ = __webpack_require__(15); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__has_js__ = __webpack_require__(37); + + + +var isArguments = Object(__WEBPACK_IMPORTED_MODULE_0__tagTester_js__["a" /* default */])('Arguments'); + +// Define a fallback version of the method in browsers (ahem, IE < 9), where +// there isn't any inspectable "Arguments" type. +(function() { + if (!isArguments(arguments)) { + isArguments = function(obj) { + return Object(__WEBPACK_IMPORTED_MODULE_1__has_js__["a" /* default */])(obj, 'callee'); + }; + } +}()); + +/* harmony default export */ __webpack_exports__["a"] = (isArguments); + + +/***/ }), +/* 124 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__shallowProperty_js__ = __webpack_require__(171); + + +// Internal helper to obtain the `byteLength` property of an object. +/* harmony default export */ __webpack_exports__["a"] = (Object(__WEBPACK_IMPORTED_MODULE_0__shallowProperty_js__["a" /* default */])('byteLength')); + + +/***/ }), +/* 125 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = ie11fingerprint; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return mapMethods; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return weakMapMethods; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return setMethods; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__getLength_js__ = __webpack_require__(27); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__isFunction_js__ = __webpack_require__(26); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__allKeys_js__ = __webpack_require__(75); + + + + +// Since the regular `Object.prototype.toString` type tests don't work for +// some types in IE 11, we use a fingerprinting heuristic instead, based +// on the methods. It's not great, but it's the best we got. +// The fingerprint method lists are defined below. +function ie11fingerprint(methods) { + var length = Object(__WEBPACK_IMPORTED_MODULE_0__getLength_js__["a" /* default */])(methods); + return function(obj) { + if (obj == null) return false; + // `Map`, `WeakMap` and `Set` have no enumerable keys. + var keys = Object(__WEBPACK_IMPORTED_MODULE_2__allKeys_js__["a" /* default */])(obj); + if (Object(__WEBPACK_IMPORTED_MODULE_0__getLength_js__["a" /* default */])(keys)) return false; + for (var i = 0; i < length; i++) { + if (!Object(__WEBPACK_IMPORTED_MODULE_1__isFunction_js__["a" /* default */])(obj[methods[i]])) return false; + } + // If we are testing against `WeakMap`, we need to ensure that + // `obj` doesn't have a `forEach` method in order to distinguish + // it from a regular `Map`. + return methods !== weakMapMethods || !Object(__WEBPACK_IMPORTED_MODULE_1__isFunction_js__["a" /* default */])(obj[forEachName]); + }; +} + +// In the interest of compact minification, we write +// each string in the fingerprints only once. +var forEachName = 'forEach', + hasName = 'has', + commonInit = ['clear', 'delete'], + mapTail = ['get', hasName, 'set']; + +// `Map`, `WeakMap` and `Set` each have slightly different +// combinations of the above sublists. +var mapMethods = commonInit.concat(forEachName, mapTail), + weakMapMethods = commonInit.concat(mapTail), + setMethods = ['add'].concat(commonInit, forEachName, hasName); + + +/***/ }), +/* 126 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = createAssigner; +// An internal function for creating assigner functions. +function createAssigner(keysFunc, defaults) { + return function(obj) { + var length = arguments.length; + if (defaults) obj = Object(obj); + if (length < 2 || obj == null) return obj; + for (var index = 1; index < length; index++) { + var source = arguments[index], + keys = keysFunc(source), + l = keys.length; + for (var i = 0; i < l; i++) { + var key = keys[i]; + if (!defaults || obj[key] === void 0) obj[key] = source[key]; + } + } + return obj; + }; +} + + +/***/ }), +/* 127 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__createAssigner_js__ = __webpack_require__(126); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__keys_js__ = __webpack_require__(12); + + + +// Assigns a given object with all the own properties in the passed-in +// object(s). +// (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign) +/* harmony default export */ __webpack_exports__["a"] = (Object(__WEBPACK_IMPORTED_MODULE_0__createAssigner_js__["a" /* default */])(__WEBPACK_IMPORTED_MODULE_1__keys_js__["a" /* default */])); + + +/***/ }), +/* 128 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = deepGet; +// Internal function to obtain a nested property in `obj` along `path`. +function deepGet(obj, path) { + var length = path.length; + for (var i = 0; i < length; i++) { + if (obj == null) return void 0; + obj = obj[path[i]]; + } + return length ? obj : void 0; +} + + +/***/ }), +/* 129 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = identity; +// Keep the identity function around for default iteratees. +function identity(value) { + return value; +} + + +/***/ }), +/* 130 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = property; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__deepGet_js__ = __webpack_require__(128); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__toPath_js__ = __webpack_require__(76); + + + +// Creates a function that, when passed an object, will traverse that object’s +// properties down the given `path`, specified as an array of keys or indices. +function property(path) { + path = Object(__WEBPACK_IMPORTED_MODULE_1__toPath_js__["a" /* default */])(path); + return function(obj) { + return Object(__WEBPACK_IMPORTED_MODULE_0__deepGet_js__["a" /* default */])(obj, path); + }; +} + + +/***/ }), +/* 131 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +// A (possibly faster) way to get the current timestamp as an integer. +/* harmony default export */ __webpack_exports__["a"] = (Date.now || function() { + return new Date().getTime(); +}); + + +/***/ }), +/* 132 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = negate; +// Returns a negated version of the passed-in predicate. +function negate(predicate) { + return function() { + return !predicate.apply(this, arguments); + }; +} + + +/***/ }), +/* 133 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__createPredicateIndexFinder_js__ = __webpack_require__(194); + + +// Returns the first index on an array-like that passes a truth test. +/* harmony default export */ __webpack_exports__["a"] = (Object(__WEBPACK_IMPORTED_MODULE_0__createPredicateIndexFinder_js__["a" /* default */])(1)); + + +/***/ }), +/* 134 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = pluck; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__map_js__ = __webpack_require__(58); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__property_js__ = __webpack_require__(130); + + + +// Convenience version of a common use case of `_.map`: fetching a property. +function pluck(obj, key) { + return Object(__WEBPACK_IMPORTED_MODULE_0__map_js__["a" /* default */])(obj, Object(__WEBPACK_IMPORTED_MODULE_1__property_js__["a" /* default */])(key)); +} + + +/***/ }), +/* 135 */ +/***/ (function(module, exports, __webpack_require__) { + +var _Symbol = __webpack_require__(225); + +var _Symbol$iterator = __webpack_require__(424); + +function _typeof(obj) { + "@babel/helpers - typeof"; + + return (module.exports = _typeof = "function" == typeof _Symbol && "symbol" == typeof _Symbol$iterator ? function (obj) { + return typeof obj; + } : function (obj) { + return obj && "function" == typeof _Symbol && obj.constructor === _Symbol && obj !== _Symbol.prototype ? "symbol" : typeof obj; + }, module.exports.__esModule = true, module.exports["default"] = module.exports), _typeof(obj); +} + +module.exports = _typeof, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), +/* 136 */ +/***/ (function(module, exports, __webpack_require__) { + +var wellKnownSymbol = __webpack_require__(8); + +exports.f = wellKnownSymbol; + + +/***/ }), +/* 137 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__(471); + +/***/ }), +/* 138 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var $propertyIsEnumerable = {}.propertyIsEnumerable; +// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe +var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; + +// Nashorn ~ JDK8 bug +var NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1); + +// `Object.prototype.propertyIsEnumerable` method implementation +// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable +exports.f = NASHORN_BUG ? function propertyIsEnumerable(V) { + var descriptor = getOwnPropertyDescriptor(this, V); + return !!descriptor && descriptor.enumerable; +} : $propertyIsEnumerable; + + +/***/ }), +/* 139 */ +/***/ (function(module, exports, __webpack_require__) { + +var uncurryThis = __webpack_require__(6); +var fails = __webpack_require__(4); +var classof = __webpack_require__(65); + +var $Object = Object; +var split = uncurryThis(''.split); + +// fallback for non-array-like ES3 and non-enumerable old V8 strings +module.exports = fails(function () { + // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346 + // eslint-disable-next-line no-prototype-builtins -- safe + return !$Object('z').propertyIsEnumerable(0); +}) ? function (it) { + return classof(it) == 'String' ? split(it, '') : $Object(it); +} : $Object; + + +/***/ }), +/* 140 */ +/***/ (function(module, exports, __webpack_require__) { + +/* eslint-disable es-x/no-symbol -- required for testing */ +var NATIVE_SYMBOL = __webpack_require__(49); + +module.exports = NATIVE_SYMBOL + && !Symbol.sham + && typeof Symbol.iterator == 'symbol'; + + +/***/ }), +/* 141 */ +/***/ (function(module, exports, __webpack_require__) { + +var DESCRIPTORS = __webpack_require__(19); +var fails = __webpack_require__(4); +var createElement = __webpack_require__(110); + +// Thanks to IE8 for its funny defineProperty +module.exports = !DESCRIPTORS && !fails(function () { + // eslint-disable-next-line es-x/no-object-defineproperty -- required for testing + return Object.defineProperty(createElement('div'), 'a', { + get: function () { return 7; } + }).a != 7; +}); + + +/***/ }), +/* 142 */ +/***/ (function(module, exports, __webpack_require__) { + +var fails = __webpack_require__(4); +var isCallable = __webpack_require__(7); + +var replacement = /#|\.prototype\./; + +var isForced = function (feature, detection) { + var value = data[normalize(feature)]; + return value == POLYFILL ? true + : value == NATIVE ? false + : isCallable(detection) ? fails(detection) + : !!detection; +}; + +var normalize = isForced.normalize = function (string) { + return String(string).replace(replacement, '.').toLowerCase(); +}; + +var data = isForced.data = {}; +var NATIVE = isForced.NATIVE = 'N'; +var POLYFILL = isForced.POLYFILL = 'P'; + +module.exports = isForced; + + +/***/ }), +/* 143 */ +/***/ (function(module, exports, __webpack_require__) { + +var DESCRIPTORS = __webpack_require__(19); +var fails = __webpack_require__(4); + +// V8 ~ Chrome 36- +// https://bugs.chromium.org/p/v8/issues/detail?id=3334 +module.exports = DESCRIPTORS && fails(function () { + // eslint-disable-next-line es-x/no-object-defineproperty -- required for testing + return Object.defineProperty(function () { /* empty */ }, 'prototype', { + value: 42, + writable: false + }).prototype != 42; +}); + + +/***/ }), +/* 144 */ +/***/ (function(module, exports, __webpack_require__) { + +var fails = __webpack_require__(4); + +module.exports = !fails(function () { + function F() { /* empty */ } + F.prototype.constructor = null; + // eslint-disable-next-line es-x/no-object-getprototypeof -- required for testing + return Object.getPrototypeOf(new F()) !== F.prototype; +}); + + +/***/ }), +/* 145 */ +/***/ (function(module, exports, __webpack_require__) { + +var uncurryThis = __webpack_require__(6); +var hasOwn = __webpack_require__(14); +var toIndexedObject = __webpack_require__(33); +var indexOf = __webpack_require__(146).indexOf; +var hiddenKeys = __webpack_require__(89); + +var push = uncurryThis([].push); + +module.exports = function (object, names) { + var O = toIndexedObject(object); + var i = 0; + var result = []; + var key; + for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key); + // Don't enum bug & hidden keys + while (names.length > i) if (hasOwn(O, key = names[i++])) { + ~indexOf(result, key) || push(result, key); + } + return result; +}; + + +/***/ }), +/* 146 */ +/***/ (function(module, exports, __webpack_require__) { + +var toIndexedObject = __webpack_require__(33); +var toAbsoluteIndex = __webpack_require__(112); +var lengthOfArrayLike = __webpack_require__(42); + +// `Array.prototype.{ indexOf, includes }` methods implementation +var createMethod = function (IS_INCLUDES) { + return function ($this, el, fromIndex) { + var O = toIndexedObject($this); + var length = lengthOfArrayLike(O); + var index = toAbsoluteIndex(fromIndex, length); + var value; + // Array#includes uses SameValueZero equality algorithm + // eslint-disable-next-line no-self-compare -- NaN check + if (IS_INCLUDES && el != el) while (length > index) { + value = O[index++]; + // eslint-disable-next-line no-self-compare -- NaN check + if (value != value) return true; + // Array#indexOf ignores holes, Array#includes - not + } else for (;length > index; index++) { + if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0; + } return !IS_INCLUDES && -1; + }; +}; + +module.exports = { + // `Array.prototype.includes` method + // https://tc39.es/ecma262/#sec-array.prototype.includes + includes: createMethod(true), + // `Array.prototype.indexOf` method + // https://tc39.es/ecma262/#sec-array.prototype.indexof + indexOf: createMethod(false) +}; + + +/***/ }), +/* 147 */ +/***/ (function(module, exports, __webpack_require__) { + +var DESCRIPTORS = __webpack_require__(19); +var V8_PROTOTYPE_DEFINE_BUG = __webpack_require__(143); +var definePropertyModule = __webpack_require__(32); +var anObject = __webpack_require__(21); +var toIndexedObject = __webpack_require__(33); +var objectKeys = __webpack_require__(116); + +// `Object.defineProperties` method +// https://tc39.es/ecma262/#sec-object.defineproperties +// eslint-disable-next-line es-x/no-object-defineproperties -- safe +exports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) { + anObject(O); + var props = toIndexedObject(Properties); + var keys = objectKeys(Properties); + var length = keys.length; + var index = 0; + var key; + while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]); + return O; +}; + + +/***/ }), +/* 148 */ +/***/ (function(module, exports, __webpack_require__) { + +var getBuiltIn = __webpack_require__(16); + +module.exports = getBuiltIn('document', 'documentElement'); + + +/***/ }), +/* 149 */ +/***/ (function(module, exports, __webpack_require__) { + +var wellKnownSymbol = __webpack_require__(8); +var Iterators = __webpack_require__(52); + +var ITERATOR = wellKnownSymbol('iterator'); +var ArrayPrototype = Array.prototype; + +// check on default Array iterator +module.exports = function (it) { + return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it); +}; + + +/***/ }), +/* 150 */ +/***/ (function(module, exports, __webpack_require__) { + +var call = __webpack_require__(11); +var aCallable = __webpack_require__(30); +var anObject = __webpack_require__(21); +var tryToString = __webpack_require__(66); +var getIteratorMethod = __webpack_require__(90); + +var $TypeError = TypeError; + +module.exports = function (argument, usingIterator) { + var iteratorMethod = arguments.length < 2 ? getIteratorMethod(argument) : usingIterator; + if (aCallable(iteratorMethod)) return anObject(call(iteratorMethod, argument)); + throw $TypeError(tryToString(argument) + ' is not iterable'); +}; + + +/***/ }), +/* 151 */ +/***/ (function(module, exports, __webpack_require__) { + +var call = __webpack_require__(11); +var anObject = __webpack_require__(21); +var getMethod = __webpack_require__(107); + +module.exports = function (iterator, kind, value) { + var innerResult, innerError; + anObject(iterator); + try { + innerResult = getMethod(iterator, 'return'); + if (!innerResult) { + if (kind === 'throw') throw value; + return value; + } + innerResult = call(innerResult, iterator); + } catch (error) { + innerError = true; + innerResult = error; + } + if (kind === 'throw') throw value; + if (innerError) throw innerResult; + anObject(innerResult); + return value; +}; + + +/***/ }), +/* 152 */ +/***/ (function(module, exports) { + +module.exports = function () { /* empty */ }; + + +/***/ }), +/* 153 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var $ = __webpack_require__(0); +var call = __webpack_require__(11); +var IS_PURE = __webpack_require__(31); +var FunctionName = __webpack_require__(255); +var isCallable = __webpack_require__(7); +var createIteratorConstructor = __webpack_require__(256); +var getPrototypeOf = __webpack_require__(86); +var setPrototypeOf = __webpack_require__(88); +var setToStringTag = __webpack_require__(54); +var createNonEnumerableProperty = __webpack_require__(36); +var defineBuiltIn = __webpack_require__(43); +var wellKnownSymbol = __webpack_require__(8); +var Iterators = __webpack_require__(52); +var IteratorsCore = __webpack_require__(154); + +var PROPER_FUNCTION_NAME = FunctionName.PROPER; +var CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE; +var IteratorPrototype = IteratorsCore.IteratorPrototype; +var BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS; +var ITERATOR = wellKnownSymbol('iterator'); +var KEYS = 'keys'; +var VALUES = 'values'; +var ENTRIES = 'entries'; + +var returnThis = function () { return this; }; + +module.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) { + createIteratorConstructor(IteratorConstructor, NAME, next); + + var getIterationMethod = function (KIND) { + if (KIND === DEFAULT && defaultIterator) return defaultIterator; + if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND]; + switch (KIND) { + case KEYS: return function keys() { return new IteratorConstructor(this, KIND); }; + case VALUES: return function values() { return new IteratorConstructor(this, KIND); }; + case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); }; + } return function () { return new IteratorConstructor(this); }; + }; + + var TO_STRING_TAG = NAME + ' Iterator'; + var INCORRECT_VALUES_NAME = false; + var IterablePrototype = Iterable.prototype; + var nativeIterator = IterablePrototype[ITERATOR] + || IterablePrototype['@@iterator'] + || DEFAULT && IterablePrototype[DEFAULT]; + var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT); + var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator; + var CurrentIteratorPrototype, methods, KEY; + + // fix native + if (anyNativeIterator) { + CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable())); + if (CurrentIteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) { + if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) { + if (setPrototypeOf) { + setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype); + } else if (!isCallable(CurrentIteratorPrototype[ITERATOR])) { + defineBuiltIn(CurrentIteratorPrototype, ITERATOR, returnThis); + } + } + // Set @@toStringTag to native iterators + setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true); + if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis; + } + } + + // fix Array.prototype.{ values, @@iterator }.name in V8 / FF + if (PROPER_FUNCTION_NAME && DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) { + if (!IS_PURE && CONFIGURABLE_FUNCTION_NAME) { + createNonEnumerableProperty(IterablePrototype, 'name', VALUES); + } else { + INCORRECT_VALUES_NAME = true; + defaultIterator = function values() { return call(nativeIterator, this); }; + } + } + + // export additional methods + if (DEFAULT) { + methods = { + values: getIterationMethod(VALUES), + keys: IS_SET ? defaultIterator : getIterationMethod(KEYS), + entries: getIterationMethod(ENTRIES) + }; + if (FORCED) for (KEY in methods) { + if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) { + defineBuiltIn(IterablePrototype, KEY, methods[KEY]); + } + } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods); + } + + // define iterator + if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) { + defineBuiltIn(IterablePrototype, ITERATOR, defaultIterator, { name: DEFAULT }); + } + Iterators[NAME] = defaultIterator; + + return methods; +}; + + +/***/ }), +/* 154 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var fails = __webpack_require__(4); +var isCallable = __webpack_require__(7); +var create = __webpack_require__(51); +var getPrototypeOf = __webpack_require__(86); +var defineBuiltIn = __webpack_require__(43); +var wellKnownSymbol = __webpack_require__(8); +var IS_PURE = __webpack_require__(31); + +var ITERATOR = wellKnownSymbol('iterator'); +var BUGGY_SAFARI_ITERATORS = false; + +// `%IteratorPrototype%` object +// https://tc39.es/ecma262/#sec-%iteratorprototype%-object +var IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator; + +/* eslint-disable es-x/no-array-prototype-keys -- safe */ +if ([].keys) { + arrayIterator = [].keys(); + // Safari 8 has buggy iterators w/o `next` + if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true; + else { + PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator)); + if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype; + } +} + +var NEW_ITERATOR_PROTOTYPE = IteratorPrototype == undefined || fails(function () { + var test = {}; + // FF44- legacy iterators case + return IteratorPrototype[ITERATOR].call(test) !== test; +}); + +if (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {}; +else if (IS_PURE) IteratorPrototype = create(IteratorPrototype); + +// `%IteratorPrototype%[@@iterator]()` method +// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator +if (!isCallable(IteratorPrototype[ITERATOR])) { + defineBuiltIn(IteratorPrototype, ITERATOR, function () { + return this; + }); +} + +module.exports = { + IteratorPrototype: IteratorPrototype, + BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS +}; + + +/***/ }), +/* 155 */ +/***/ (function(module, exports, __webpack_require__) { + +var anObject = __webpack_require__(21); +var aConstructor = __webpack_require__(156); +var wellKnownSymbol = __webpack_require__(8); + +var SPECIES = wellKnownSymbol('species'); + +// `SpeciesConstructor` abstract operation +// https://tc39.es/ecma262/#sec-speciesconstructor +module.exports = function (O, defaultConstructor) { + var C = anObject(O).constructor; + var S; + return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aConstructor(S); +}; + + +/***/ }), +/* 156 */ +/***/ (function(module, exports, __webpack_require__) { + +var isConstructor = __webpack_require__(93); +var tryToString = __webpack_require__(66); + +var $TypeError = TypeError; + +// `Assert: IsConstructor(argument) is true` +module.exports = function (argument) { + if (isConstructor(argument)) return argument; + throw $TypeError(tryToString(argument) + ' is not a constructor'); +}; + + +/***/ }), +/* 157 */ +/***/ (function(module, exports, __webpack_require__) { + +var global = __webpack_require__(9); +var apply = __webpack_require__(62); +var bind = __webpack_require__(50); +var isCallable = __webpack_require__(7); +var hasOwn = __webpack_require__(14); +var fails = __webpack_require__(4); +var html = __webpack_require__(148); +var arraySlice = __webpack_require__(94); +var createElement = __webpack_require__(110); +var validateArgumentsLength = __webpack_require__(262); +var IS_IOS = __webpack_require__(158); +var IS_NODE = __webpack_require__(119); + +var set = global.setImmediate; +var clear = global.clearImmediate; +var process = global.process; +var Dispatch = global.Dispatch; +var Function = global.Function; +var MessageChannel = global.MessageChannel; +var String = global.String; +var counter = 0; +var queue = {}; +var ONREADYSTATECHANGE = 'onreadystatechange'; +var location, defer, channel, port; + +try { + // Deno throws a ReferenceError on `location` access without `--location` flag + location = global.location; +} catch (error) { /* empty */ } + +var run = function (id) { + if (hasOwn(queue, id)) { + var fn = queue[id]; + delete queue[id]; + fn(); + } +}; + +var runner = function (id) { + return function () { + run(id); + }; +}; + +var listener = function (event) { + run(event.data); +}; + +var post = function (id) { + // old engines have not location.origin + global.postMessage(String(id), location.protocol + '//' + location.host); +}; + +// Node.js 0.9+ & IE10+ has setImmediate, otherwise: +if (!set || !clear) { + set = function setImmediate(handler) { + validateArgumentsLength(arguments.length, 1); + var fn = isCallable(handler) ? handler : Function(handler); + var args = arraySlice(arguments, 1); + queue[++counter] = function () { + apply(fn, undefined, args); + }; + defer(counter); + return counter; + }; + clear = function clearImmediate(id) { + delete queue[id]; + }; + // Node.js 0.8- + if (IS_NODE) { + defer = function (id) { + process.nextTick(runner(id)); + }; + // Sphere (JS game engine) Dispatch API + } else if (Dispatch && Dispatch.now) { + defer = function (id) { + Dispatch.now(runner(id)); + }; + // Browsers with MessageChannel, includes WebWorkers + // except iOS - https://github.com/zloirock/core-js/issues/624 + } else if (MessageChannel && !IS_IOS) { + channel = new MessageChannel(); + port = channel.port2; + channel.port1.onmessage = listener; + defer = bind(port.postMessage, port); + // Browsers with postMessage, skip WebWorkers + // IE8 has postMessage, but it's sync & typeof its postMessage is 'object' + } else if ( + global.addEventListener && + isCallable(global.postMessage) && + !global.importScripts && + location && location.protocol !== 'file:' && + !fails(post) + ) { + defer = post; + global.addEventListener('message', listener, false); + // IE8- + } else if (ONREADYSTATECHANGE in createElement('script')) { + defer = function (id) { + html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () { + html.removeChild(this); + run(id); + }; + }; + // Rest old browsers + } else { + defer = function (id) { + setTimeout(runner(id), 0); + }; + } +} + +module.exports = { + set: set, + clear: clear +}; + + +/***/ }), +/* 158 */ +/***/ (function(module, exports, __webpack_require__) { + +var userAgent = __webpack_require__(85); + +module.exports = /(?:ipad|iphone|ipod).*applewebkit/i.test(userAgent); + + +/***/ }), +/* 159 */ +/***/ (function(module, exports, __webpack_require__) { + +var NativePromiseConstructor = __webpack_require__(55); +var checkCorrectnessOfIteration = __webpack_require__(160); +var FORCED_PROMISE_CONSTRUCTOR = __webpack_require__(72).CONSTRUCTOR; + +module.exports = FORCED_PROMISE_CONSTRUCTOR || !checkCorrectnessOfIteration(function (iterable) { + NativePromiseConstructor.all(iterable).then(undefined, function () { /* empty */ }); +}); + + +/***/ }), +/* 160 */ +/***/ (function(module, exports, __webpack_require__) { + +var wellKnownSymbol = __webpack_require__(8); + +var ITERATOR = wellKnownSymbol('iterator'); +var SAFE_CLOSING = false; + +try { + var called = 0; + var iteratorWithReturn = { + next: function () { + return { done: !!called++ }; + }, + 'return': function () { + SAFE_CLOSING = true; + } + }; + iteratorWithReturn[ITERATOR] = function () { + return this; + }; + // eslint-disable-next-line es-x/no-array-from, no-throw-literal -- required for testing + Array.from(iteratorWithReturn, function () { throw 2; }); +} catch (error) { /* empty */ } + +module.exports = function (exec, SKIP_CLOSING) { + if (!SKIP_CLOSING && !SAFE_CLOSING) return false; + var ITERATION_SUPPORT = false; + try { + var object = {}; + object[ITERATOR] = function () { + return { + next: function () { + return { done: ITERATION_SUPPORT = true }; + } + }; + }; + exec(object); + } catch (error) { /* empty */ } + return ITERATION_SUPPORT; +}; + + +/***/ }), +/* 161 */ +/***/ (function(module, exports, __webpack_require__) { + +var anObject = __webpack_require__(21); +var isObject = __webpack_require__(17); +var newPromiseCapability = __webpack_require__(44); + +module.exports = function (C, x) { + anObject(C); + if (isObject(x) && x.constructor === C) return x; + var promiseCapability = newPromiseCapability.f(C); + var resolve = promiseCapability.resolve; + resolve(x); + return promiseCapability.promise; +}; + + +/***/ }), +/* 162 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = isUndefined; +// Is a given variable undefined? +function isUndefined(obj) { + return obj === void 0; +} + + +/***/ }), +/* 163 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = isBoolean; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__setup_js__ = __webpack_require__(3); + + +// Is a given value a boolean? +function isBoolean(obj) { + return obj === true || obj === false || __WEBPACK_IMPORTED_MODULE_0__setup_js__["t" /* toString */].call(obj) === '[object Boolean]'; +} + + +/***/ }), +/* 164 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__tagTester_js__ = __webpack_require__(15); + + +/* harmony default export */ __webpack_exports__["a"] = (Object(__WEBPACK_IMPORTED_MODULE_0__tagTester_js__["a" /* default */])('Number')); + + +/***/ }), +/* 165 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__tagTester_js__ = __webpack_require__(15); + + +/* harmony default export */ __webpack_exports__["a"] = (Object(__WEBPACK_IMPORTED_MODULE_0__tagTester_js__["a" /* default */])('Symbol')); + + +/***/ }), +/* 166 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__tagTester_js__ = __webpack_require__(15); + + +/* harmony default export */ __webpack_exports__["a"] = (Object(__WEBPACK_IMPORTED_MODULE_0__tagTester_js__["a" /* default */])('ArrayBuffer')); + + +/***/ }), +/* 167 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = isNaN; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__setup_js__ = __webpack_require__(3); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__isNumber_js__ = __webpack_require__(164); + + + +// Is the given value `NaN`? +function isNaN(obj) { + return Object(__WEBPACK_IMPORTED_MODULE_1__isNumber_js__["a" /* default */])(obj) && Object(__WEBPACK_IMPORTED_MODULE_0__setup_js__["g" /* _isNaN */])(obj); +} + + +/***/ }), +/* 168 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__setup_js__ = __webpack_require__(3); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__isDataView_js__ = __webpack_require__(122); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constant_js__ = __webpack_require__(169); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__isBufferLike_js__ = __webpack_require__(287); + + + + + +// Is a given value a typed array? +var typedArrayPattern = /\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/; +function isTypedArray(obj) { + // `ArrayBuffer.isView` is the most future-proof, so use it when available. + // Otherwise, fall back on the above regular expression. + return __WEBPACK_IMPORTED_MODULE_0__setup_js__["l" /* nativeIsView */] ? (Object(__WEBPACK_IMPORTED_MODULE_0__setup_js__["l" /* nativeIsView */])(obj) && !Object(__WEBPACK_IMPORTED_MODULE_1__isDataView_js__["a" /* default */])(obj)) : + Object(__WEBPACK_IMPORTED_MODULE_3__isBufferLike_js__["a" /* default */])(obj) && typedArrayPattern.test(__WEBPACK_IMPORTED_MODULE_0__setup_js__["t" /* toString */].call(obj)); +} + +/* harmony default export */ __webpack_exports__["a"] = (__WEBPACK_IMPORTED_MODULE_0__setup_js__["r" /* supportsArrayBuffer */] ? isTypedArray : Object(__WEBPACK_IMPORTED_MODULE_2__constant_js__["a" /* default */])(false)); + + +/***/ }), +/* 169 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = constant; +// Predicate-generating function. Often useful outside of Underscore. +function constant(value) { + return function() { + return value; + }; +} + + +/***/ }), +/* 170 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = createSizePropertyCheck; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__setup_js__ = __webpack_require__(3); + + +// Common internal logic for `isArrayLike` and `isBufferLike`. +function createSizePropertyCheck(getSizeProperty) { + return function(collection) { + var sizeProperty = getSizeProperty(collection); + return typeof sizeProperty == 'number' && sizeProperty >= 0 && sizeProperty <= __WEBPACK_IMPORTED_MODULE_0__setup_js__["b" /* MAX_ARRAY_INDEX */]; + } +} + + +/***/ }), +/* 171 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = shallowProperty; +// Internal helper to generate a function to obtain property `key` from `obj`. +function shallowProperty(key) { + return function(obj) { + return obj == null ? void 0 : obj[key]; + }; +} + + +/***/ }), +/* 172 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = collectNonEnumProps; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__setup_js__ = __webpack_require__(3); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__isFunction_js__ = __webpack_require__(26); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__has_js__ = __webpack_require__(37); + + + + +// Internal helper to create a simple lookup structure. +// `collectNonEnumProps` used to depend on `_.contains`, but this led to +// circular imports. `emulatedSet` is a one-off solution that only works for +// arrays of strings. +function emulatedSet(keys) { + var hash = {}; + for (var l = keys.length, i = 0; i < l; ++i) hash[keys[i]] = true; + return { + contains: function(key) { return hash[key]; }, + push: function(key) { + hash[key] = true; + return keys.push(key); + } + }; +} + +// Internal helper. Checks `keys` for the presence of keys in IE < 9 that won't +// be iterated by `for key in ...` and thus missed. Extends `keys` in place if +// needed. +function collectNonEnumProps(obj, keys) { + keys = emulatedSet(keys); + var nonEnumIdx = __WEBPACK_IMPORTED_MODULE_0__setup_js__["n" /* nonEnumerableProps */].length; + var constructor = obj.constructor; + var proto = Object(__WEBPACK_IMPORTED_MODULE_1__isFunction_js__["a" /* default */])(constructor) && constructor.prototype || __WEBPACK_IMPORTED_MODULE_0__setup_js__["c" /* ObjProto */]; + + // Constructor is a special case. + var prop = 'constructor'; + if (Object(__WEBPACK_IMPORTED_MODULE_2__has_js__["a" /* default */])(obj, prop) && !keys.contains(prop)) keys.push(prop); + + while (nonEnumIdx--) { + prop = __WEBPACK_IMPORTED_MODULE_0__setup_js__["n" /* nonEnumerableProps */][nonEnumIdx]; + if (prop in obj && obj[prop] !== proto[prop] && !keys.contains(prop)) { + keys.push(prop); + } + } +} + + +/***/ }), +/* 173 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = isMatch; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__keys_js__ = __webpack_require__(12); + + +// Returns whether an object has a given set of `key:value` pairs. +function isMatch(object, attrs) { + var _keys = Object(__WEBPACK_IMPORTED_MODULE_0__keys_js__["a" /* default */])(attrs), length = _keys.length; + if (object == null) return !length; + var obj = Object(object); + for (var i = 0; i < length; i++) { + var key = _keys[i]; + if (attrs[key] !== obj[key] || !(key in obj)) return false; + } + return true; +} + + +/***/ }), +/* 174 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = invert; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__keys_js__ = __webpack_require__(12); + + +// Invert the keys and values of an object. The values must be serializable. +function invert(obj) { + var result = {}; + var _keys = Object(__WEBPACK_IMPORTED_MODULE_0__keys_js__["a" /* default */])(obj); + for (var i = 0, length = _keys.length; i < length; i++) { + result[obj[_keys[i]]] = _keys[i]; + } + return result; +} + + +/***/ }), +/* 175 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = functions; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__isFunction_js__ = __webpack_require__(26); + + +// Return a sorted list of the function names available on the object. +function functions(obj) { + var names = []; + for (var key in obj) { + if (Object(__WEBPACK_IMPORTED_MODULE_0__isFunction_js__["a" /* default */])(obj[key])) names.push(key); + } + return names.sort(); +} + + +/***/ }), +/* 176 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__createAssigner_js__ = __webpack_require__(126); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__allKeys_js__ = __webpack_require__(75); + + + +// Extend a given object with all the properties in passed-in object(s). +/* harmony default export */ __webpack_exports__["a"] = (Object(__WEBPACK_IMPORTED_MODULE_0__createAssigner_js__["a" /* default */])(__WEBPACK_IMPORTED_MODULE_1__allKeys_js__["a" /* default */])); + + +/***/ }), +/* 177 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__createAssigner_js__ = __webpack_require__(126); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__allKeys_js__ = __webpack_require__(75); + + + +// Fill in a given object with default properties. +/* harmony default export */ __webpack_exports__["a"] = (Object(__WEBPACK_IMPORTED_MODULE_0__createAssigner_js__["a" /* default */])(__WEBPACK_IMPORTED_MODULE_1__allKeys_js__["a" /* default */], true)); + + +/***/ }), +/* 178 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = baseCreate; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__isObject_js__ = __webpack_require__(45); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__setup_js__ = __webpack_require__(3); + + + +// Create a naked function reference for surrogate-prototype-swapping. +function ctor() { + return function(){}; +} + +// An internal function for creating a new object that inherits from another. +function baseCreate(prototype) { + if (!Object(__WEBPACK_IMPORTED_MODULE_0__isObject_js__["a" /* default */])(prototype)) return {}; + if (__WEBPACK_IMPORTED_MODULE_1__setup_js__["j" /* nativeCreate */]) return Object(__WEBPACK_IMPORTED_MODULE_1__setup_js__["j" /* nativeCreate */])(prototype); + var Ctor = ctor(); + Ctor.prototype = prototype; + var result = new Ctor; + Ctor.prototype = null; + return result; +} + + +/***/ }), +/* 179 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = clone; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__isObject_js__ = __webpack_require__(45); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__isArray_js__ = __webpack_require__(46); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__extend_js__ = __webpack_require__(176); + + + + +// Create a (shallow-cloned) duplicate of an object. +function clone(obj) { + if (!Object(__WEBPACK_IMPORTED_MODULE_0__isObject_js__["a" /* default */])(obj)) return obj; + return Object(__WEBPACK_IMPORTED_MODULE_1__isArray_js__["a" /* default */])(obj) ? obj.slice() : Object(__WEBPACK_IMPORTED_MODULE_2__extend_js__["a" /* default */])({}, obj); +} + + +/***/ }), +/* 180 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = get; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__toPath_js__ = __webpack_require__(76); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__deepGet_js__ = __webpack_require__(128); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__isUndefined_js__ = __webpack_require__(162); + + + + +// Get the value of the (deep) property on `path` from `object`. +// If any property in `path` does not exist or if the value is +// `undefined`, return `defaultValue` instead. +// The `path` is normalized through `_.toPath`. +function get(object, path, defaultValue) { + var value = Object(__WEBPACK_IMPORTED_MODULE_1__deepGet_js__["a" /* default */])(object, Object(__WEBPACK_IMPORTED_MODULE_0__toPath_js__["a" /* default */])(path)); + return Object(__WEBPACK_IMPORTED_MODULE_2__isUndefined_js__["a" /* default */])(value) ? defaultValue : value; +} + + +/***/ }), +/* 181 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = toPath; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__underscore_js__ = __webpack_require__(23); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__isArray_js__ = __webpack_require__(46); + + + +// Normalize a (deep) property `path` to array. +// Like `_.iteratee`, this function can be customized. +function toPath(path) { + return Object(__WEBPACK_IMPORTED_MODULE_1__isArray_js__["a" /* default */])(path) ? path : [path]; +} +__WEBPACK_IMPORTED_MODULE_0__underscore_js__["a" /* default */].toPath = toPath; + + +/***/ }), +/* 182 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = baseIteratee; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__identity_js__ = __webpack_require__(129); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__isFunction_js__ = __webpack_require__(26); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__isObject_js__ = __webpack_require__(45); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__isArray_js__ = __webpack_require__(46); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__matcher_js__ = __webpack_require__(96); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__property_js__ = __webpack_require__(130); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__optimizeCb_js__ = __webpack_require__(77); + + + + + + + + +// An internal function to generate callbacks that can be applied to each +// element in a collection, returning the desired result — either `_.identity`, +// an arbitrary callback, a property matcher, or a property accessor. +function baseIteratee(value, context, argCount) { + if (value == null) return __WEBPACK_IMPORTED_MODULE_0__identity_js__["a" /* default */]; + if (Object(__WEBPACK_IMPORTED_MODULE_1__isFunction_js__["a" /* default */])(value)) return Object(__WEBPACK_IMPORTED_MODULE_6__optimizeCb_js__["a" /* default */])(value, context, argCount); + if (Object(__WEBPACK_IMPORTED_MODULE_2__isObject_js__["a" /* default */])(value) && !Object(__WEBPACK_IMPORTED_MODULE_3__isArray_js__["a" /* default */])(value)) return Object(__WEBPACK_IMPORTED_MODULE_4__matcher_js__["a" /* default */])(value); + return Object(__WEBPACK_IMPORTED_MODULE_5__property_js__["a" /* default */])(value); +} + + +/***/ }), +/* 183 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = iteratee; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__underscore_js__ = __webpack_require__(23); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__baseIteratee_js__ = __webpack_require__(182); + + + +// External wrapper for our callback generator. Users may customize +// `_.iteratee` if they want additional predicate/iteratee shorthand styles. +// This abstraction hides the internal-only `argCount` argument. +function iteratee(value, context) { + return Object(__WEBPACK_IMPORTED_MODULE_1__baseIteratee_js__["a" /* default */])(value, context, Infinity); +} +__WEBPACK_IMPORTED_MODULE_0__underscore_js__["a" /* default */].iteratee = iteratee; + + +/***/ }), +/* 184 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = noop; +// Predicate-generating function. Often useful outside of Underscore. +function noop(){} + + +/***/ }), +/* 185 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = random; +// Return a random integer between `min` and `max` (inclusive). +function random(min, max) { + if (max == null) { + max = min; + min = 0; + } + return min + Math.floor(Math.random() * (max - min + 1)); +} + + +/***/ }), +/* 186 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = createEscaper; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__keys_js__ = __webpack_require__(12); + + +// Internal helper to generate functions for escaping and unescaping strings +// to/from HTML interpolation. +function createEscaper(map) { + var escaper = function(match) { + return map[match]; + }; + // Regexes for identifying a key that needs to be escaped. + var source = '(?:' + Object(__WEBPACK_IMPORTED_MODULE_0__keys_js__["a" /* default */])(map).join('|') + ')'; + var testRegexp = RegExp(source); + var replaceRegexp = RegExp(source, 'g'); + return function(string) { + string = string == null ? '' : '' + string; + return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string; + }; +} + + +/***/ }), +/* 187 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +// Internal list of HTML entities for escaping. +/* harmony default export */ __webpack_exports__["a"] = ({ + '&': '&', + '<': '<', + '>': '>', + '"': '"', + "'": ''', + '`': '`' +}); + + +/***/ }), +/* 188 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__underscore_js__ = __webpack_require__(23); + + +// By default, Underscore uses ERB-style template delimiters. Change the +// following template settings to use alternative delimiters. +/* harmony default export */ __webpack_exports__["a"] = (__WEBPACK_IMPORTED_MODULE_0__underscore_js__["a" /* default */].templateSettings = { + evaluate: /<%([\s\S]+?)%>/g, + interpolate: /<%=([\s\S]+?)%>/g, + escape: /<%-([\s\S]+?)%>/g +}); + + +/***/ }), +/* 189 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = executeBound; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__baseCreate_js__ = __webpack_require__(178); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__isObject_js__ = __webpack_require__(45); + + + +// Internal function to execute `sourceFunc` bound to `context` with optional +// `args`. Determines whether to execute a function as a constructor or as a +// normal function. +function executeBound(sourceFunc, boundFunc, context, callingContext, args) { + if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args); + var self = Object(__WEBPACK_IMPORTED_MODULE_0__baseCreate_js__["a" /* default */])(sourceFunc.prototype); + var result = sourceFunc.apply(self, args); + if (Object(__WEBPACK_IMPORTED_MODULE_1__isObject_js__["a" /* default */])(result)) return result; + return self; +} + + +/***/ }), +/* 190 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__restArguments_js__ = __webpack_require__(22); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__isFunction_js__ = __webpack_require__(26); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__executeBound_js__ = __webpack_require__(189); + + + + +// Create a function bound to a given object (assigning `this`, and arguments, +// optionally). +/* harmony default export */ __webpack_exports__["a"] = (Object(__WEBPACK_IMPORTED_MODULE_0__restArguments_js__["a" /* default */])(function(func, context, args) { + if (!Object(__WEBPACK_IMPORTED_MODULE_1__isFunction_js__["a" /* default */])(func)) throw new TypeError('Bind must be called on a function'); + var bound = Object(__WEBPACK_IMPORTED_MODULE_0__restArguments_js__["a" /* default */])(function(callArgs) { + return Object(__WEBPACK_IMPORTED_MODULE_2__executeBound_js__["a" /* default */])(func, bound, context, this, args.concat(callArgs)); + }); + return bound; +})); + + +/***/ }), +/* 191 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__restArguments_js__ = __webpack_require__(22); + + +// Delays a function for the given number of milliseconds, and then calls +// it with the arguments supplied. +/* harmony default export */ __webpack_exports__["a"] = (Object(__WEBPACK_IMPORTED_MODULE_0__restArguments_js__["a" /* default */])(function(func, wait, args) { + return setTimeout(function() { + return func.apply(null, args); + }, wait); +})); + + +/***/ }), +/* 192 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = before; +// Returns a function that will only be executed up to (but not including) the +// Nth call. +function before(times, func) { + var memo; + return function() { + if (--times > 0) { + memo = func.apply(this, arguments); + } + if (times <= 1) func = null; + return memo; + }; +} + + +/***/ }), +/* 193 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = findKey; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__cb_js__ = __webpack_require__(18); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__keys_js__ = __webpack_require__(12); + + + +// Returns the first key on an object that passes a truth test. +function findKey(obj, predicate, context) { + predicate = Object(__WEBPACK_IMPORTED_MODULE_0__cb_js__["a" /* default */])(predicate, context); + var _keys = Object(__WEBPACK_IMPORTED_MODULE_1__keys_js__["a" /* default */])(obj), key; + for (var i = 0, length = _keys.length; i < length; i++) { + key = _keys[i]; + if (predicate(obj[key], key, obj)) return key; + } +} + + +/***/ }), +/* 194 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = createPredicateIndexFinder; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__cb_js__ = __webpack_require__(18); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__getLength_js__ = __webpack_require__(27); + + + +// Internal function to generate `_.findIndex` and `_.findLastIndex`. +function createPredicateIndexFinder(dir) { + return function(array, predicate, context) { + predicate = Object(__WEBPACK_IMPORTED_MODULE_0__cb_js__["a" /* default */])(predicate, context); + var length = Object(__WEBPACK_IMPORTED_MODULE_1__getLength_js__["a" /* default */])(array); + var index = dir > 0 ? 0 : length - 1; + for (; index >= 0 && index < length; index += dir) { + if (predicate(array[index], index, array)) return index; + } + return -1; + }; +} + + +/***/ }), +/* 195 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__createPredicateIndexFinder_js__ = __webpack_require__(194); + + +// Returns the last index on an array-like that passes a truth test. +/* harmony default export */ __webpack_exports__["a"] = (Object(__WEBPACK_IMPORTED_MODULE_0__createPredicateIndexFinder_js__["a" /* default */])(-1)); + + +/***/ }), +/* 196 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = sortedIndex; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__cb_js__ = __webpack_require__(18); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__getLength_js__ = __webpack_require__(27); + + + +// Use a comparator function to figure out the smallest index at which +// an object should be inserted so as to maintain order. Uses binary search. +function sortedIndex(array, obj, iteratee, context) { + iteratee = Object(__WEBPACK_IMPORTED_MODULE_0__cb_js__["a" /* default */])(iteratee, context, 1); + var value = iteratee(obj); + var low = 0, high = Object(__WEBPACK_IMPORTED_MODULE_1__getLength_js__["a" /* default */])(array); + while (low < high) { + var mid = Math.floor((low + high) / 2); + if (iteratee(array[mid]) < value) low = mid + 1; else high = mid; + } + return low; +} + + +/***/ }), +/* 197 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__sortedIndex_js__ = __webpack_require__(196); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__findIndex_js__ = __webpack_require__(133); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__createIndexFinder_js__ = __webpack_require__(198); + + + + +// Return the position of the first occurrence of an item in an array, +// or -1 if the item is not included in the array. +// If the array is large and already in sort order, pass `true` +// for **isSorted** to use binary search. +/* harmony default export */ __webpack_exports__["a"] = (Object(__WEBPACK_IMPORTED_MODULE_2__createIndexFinder_js__["a" /* default */])(1, __WEBPACK_IMPORTED_MODULE_1__findIndex_js__["a" /* default */], __WEBPACK_IMPORTED_MODULE_0__sortedIndex_js__["a" /* default */])); + + +/***/ }), +/* 198 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = createIndexFinder; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__getLength_js__ = __webpack_require__(27); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__setup_js__ = __webpack_require__(3); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__isNaN_js__ = __webpack_require__(167); + + + + +// Internal function to generate the `_.indexOf` and `_.lastIndexOf` functions. +function createIndexFinder(dir, predicateFind, sortedIndex) { + return function(array, item, idx) { + var i = 0, length = Object(__WEBPACK_IMPORTED_MODULE_0__getLength_js__["a" /* default */])(array); + if (typeof idx == 'number') { + if (dir > 0) { + i = idx >= 0 ? idx : Math.max(idx + length, i); + } else { + length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1; + } + } else if (sortedIndex && idx && length) { + idx = sortedIndex(array, item); + return array[idx] === item ? idx : -1; + } + if (item !== item) { + idx = predicateFind(__WEBPACK_IMPORTED_MODULE_1__setup_js__["q" /* slice */].call(array, i, length), __WEBPACK_IMPORTED_MODULE_2__isNaN_js__["a" /* default */]); + return idx >= 0 ? idx + i : -1; + } + for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) { + if (array[idx] === item) return idx; + } + return -1; + }; +} + + +/***/ }), +/* 199 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = find; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__isArrayLike_js__ = __webpack_require__(24); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__findIndex_js__ = __webpack_require__(133); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__findKey_js__ = __webpack_require__(193); + + + + +// Return the first value which passes a truth test. +function find(obj, predicate, context) { + var keyFinder = Object(__WEBPACK_IMPORTED_MODULE_0__isArrayLike_js__["a" /* default */])(obj) ? __WEBPACK_IMPORTED_MODULE_1__findIndex_js__["a" /* default */] : __WEBPACK_IMPORTED_MODULE_2__findKey_js__["a" /* default */]; + var key = keyFinder(obj, predicate, context); + if (key !== void 0 && key !== -1) return obj[key]; +} + + +/***/ }), +/* 200 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = createReduce; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__isArrayLike_js__ = __webpack_require__(24); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__keys_js__ = __webpack_require__(12); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__optimizeCb_js__ = __webpack_require__(77); + + + + +// Internal helper to create a reducing function, iterating left or right. +function createReduce(dir) { + // Wrap code that reassigns argument variables in a separate function than + // the one that accesses `arguments.length` to avoid a perf hit. (#1991) + var reducer = function(obj, iteratee, memo, initial) { + var _keys = !Object(__WEBPACK_IMPORTED_MODULE_0__isArrayLike_js__["a" /* default */])(obj) && Object(__WEBPACK_IMPORTED_MODULE_1__keys_js__["a" /* default */])(obj), + length = (_keys || obj).length, + index = dir > 0 ? 0 : length - 1; + if (!initial) { + memo = obj[_keys ? _keys[index] : index]; + index += dir; + } + for (; index >= 0 && index < length; index += dir) { + var currentKey = _keys ? _keys[index] : index; + memo = iteratee(memo, obj[currentKey], currentKey, obj); + } + return memo; + }; + + return function(obj, iteratee, memo, context) { + var initial = arguments.length >= 3; + return reducer(obj, Object(__WEBPACK_IMPORTED_MODULE_2__optimizeCb_js__["a" /* default */])(iteratee, context, 4), memo, initial); + }; +} + + +/***/ }), +/* 201 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = max; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__isArrayLike_js__ = __webpack_require__(24); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__values_js__ = __webpack_require__(56); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__cb_js__ = __webpack_require__(18); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__each_js__ = __webpack_require__(47); + + + + + +// Return the maximum element (or element-based computation). +function max(obj, iteratee, context) { + var result = -Infinity, lastComputed = -Infinity, + value, computed; + if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) { + obj = Object(__WEBPACK_IMPORTED_MODULE_0__isArrayLike_js__["a" /* default */])(obj) ? obj : Object(__WEBPACK_IMPORTED_MODULE_1__values_js__["a" /* default */])(obj); + for (var i = 0, length = obj.length; i < length; i++) { + value = obj[i]; + if (value != null && value > result) { + result = value; + } + } + } else { + iteratee = Object(__WEBPACK_IMPORTED_MODULE_2__cb_js__["a" /* default */])(iteratee, context); + Object(__WEBPACK_IMPORTED_MODULE_3__each_js__["a" /* default */])(obj, function(v, index, list) { + computed = iteratee(v, index, list); + if (computed > lastComputed || computed === -Infinity && result === -Infinity) { + result = v; + lastComputed = computed; + } + }); + } + return result; +} + + +/***/ }), +/* 202 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = sample; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__isArrayLike_js__ = __webpack_require__(24); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__clone_js__ = __webpack_require__(179); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__values_js__ = __webpack_require__(56); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__getLength_js__ = __webpack_require__(27); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__random_js__ = __webpack_require__(185); + + + + + + +// Sample **n** random values from a collection using the modern version of the +// [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher–Yates_shuffle). +// If **n** is not specified, returns a single random element. +// The internal `guard` argument allows it to work with `_.map`. +function sample(obj, n, guard) { + if (n == null || guard) { + if (!Object(__WEBPACK_IMPORTED_MODULE_0__isArrayLike_js__["a" /* default */])(obj)) obj = Object(__WEBPACK_IMPORTED_MODULE_2__values_js__["a" /* default */])(obj); + return obj[Object(__WEBPACK_IMPORTED_MODULE_4__random_js__["a" /* default */])(obj.length - 1)]; + } + var sample = Object(__WEBPACK_IMPORTED_MODULE_0__isArrayLike_js__["a" /* default */])(obj) ? Object(__WEBPACK_IMPORTED_MODULE_1__clone_js__["a" /* default */])(obj) : Object(__WEBPACK_IMPORTED_MODULE_2__values_js__["a" /* default */])(obj); + var length = Object(__WEBPACK_IMPORTED_MODULE_3__getLength_js__["a" /* default */])(sample); + n = Math.max(Math.min(n, length), 0); + var last = length - 1; + for (var index = 0; index < n; index++) { + var rand = Object(__WEBPACK_IMPORTED_MODULE_4__random_js__["a" /* default */])(index, last); + var temp = sample[index]; + sample[index] = sample[rand]; + sample[rand] = temp; + } + return sample.slice(0, n); +} + + +/***/ }), +/* 203 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__restArguments_js__ = __webpack_require__(22); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__isFunction_js__ = __webpack_require__(26); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__optimizeCb_js__ = __webpack_require__(77); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__allKeys_js__ = __webpack_require__(75); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__keyInObj_js__ = __webpack_require__(336); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__flatten_js__ = __webpack_require__(57); + + + + + + + +// Return a copy of the object only containing the allowed properties. +/* harmony default export */ __webpack_exports__["a"] = (Object(__WEBPACK_IMPORTED_MODULE_0__restArguments_js__["a" /* default */])(function(obj, keys) { + var result = {}, iteratee = keys[0]; + if (obj == null) return result; + if (Object(__WEBPACK_IMPORTED_MODULE_1__isFunction_js__["a" /* default */])(iteratee)) { + if (keys.length > 1) iteratee = Object(__WEBPACK_IMPORTED_MODULE_2__optimizeCb_js__["a" /* default */])(iteratee, keys[1]); + keys = Object(__WEBPACK_IMPORTED_MODULE_3__allKeys_js__["a" /* default */])(obj); + } else { + iteratee = __WEBPACK_IMPORTED_MODULE_4__keyInObj_js__["a" /* default */]; + keys = Object(__WEBPACK_IMPORTED_MODULE_5__flatten_js__["a" /* default */])(keys, false, false); + obj = Object(obj); + } + for (var i = 0, length = keys.length; i < length; i++) { + var key = keys[i]; + var value = obj[key]; + if (iteratee(value, key, obj)) result[key] = value; + } + return result; +})); + + +/***/ }), +/* 204 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = initial; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__setup_js__ = __webpack_require__(3); + + +// Returns everything but the last entry of the array. Especially useful on +// the arguments object. Passing **n** will return all the values in +// the array, excluding the last N. +function initial(array, n, guard) { + return __WEBPACK_IMPORTED_MODULE_0__setup_js__["q" /* slice */].call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n))); +} + + +/***/ }), +/* 205 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = rest; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__setup_js__ = __webpack_require__(3); + + +// Returns everything but the first entry of the `array`. Especially useful on +// the `arguments` object. Passing an **n** will return the rest N values in the +// `array`. +function rest(array, n, guard) { + return __WEBPACK_IMPORTED_MODULE_0__setup_js__["q" /* slice */].call(array, n == null || guard ? 1 : n); +} + + +/***/ }), +/* 206 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__restArguments_js__ = __webpack_require__(22); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__flatten_js__ = __webpack_require__(57); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__filter_js__ = __webpack_require__(78); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__contains_js__ = __webpack_require__(79); + + + + + +// Take the difference between one array and a number of other arrays. +// Only the elements present in just the first array will remain. +/* harmony default export */ __webpack_exports__["a"] = (Object(__WEBPACK_IMPORTED_MODULE_0__restArguments_js__["a" /* default */])(function(array, rest) { + rest = Object(__WEBPACK_IMPORTED_MODULE_1__flatten_js__["a" /* default */])(rest, true, true); + return Object(__WEBPACK_IMPORTED_MODULE_2__filter_js__["a" /* default */])(array, function(value){ + return !Object(__WEBPACK_IMPORTED_MODULE_3__contains_js__["a" /* default */])(rest, value); + }); +})); + + +/***/ }), +/* 207 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = uniq; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__isBoolean_js__ = __webpack_require__(163); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__cb_js__ = __webpack_require__(18); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__getLength_js__ = __webpack_require__(27); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__contains_js__ = __webpack_require__(79); + + + + + +// Produce a duplicate-free version of the array. If the array has already +// been sorted, you have the option of using a faster algorithm. +// The faster algorithm will not work with an iteratee if the iteratee +// is not a one-to-one function, so providing an iteratee will disable +// the faster algorithm. +function uniq(array, isSorted, iteratee, context) { + if (!Object(__WEBPACK_IMPORTED_MODULE_0__isBoolean_js__["a" /* default */])(isSorted)) { + context = iteratee; + iteratee = isSorted; + isSorted = false; + } + if (iteratee != null) iteratee = Object(__WEBPACK_IMPORTED_MODULE_1__cb_js__["a" /* default */])(iteratee, context); + var result = []; + var seen = []; + for (var i = 0, length = Object(__WEBPACK_IMPORTED_MODULE_2__getLength_js__["a" /* default */])(array); i < length; i++) { + var value = array[i], + computed = iteratee ? iteratee(value, i, array) : value; + if (isSorted && !iteratee) { + if (!i || seen !== computed) result.push(value); + seen = computed; + } else if (iteratee) { + if (!Object(__WEBPACK_IMPORTED_MODULE_3__contains_js__["a" /* default */])(seen, computed)) { + seen.push(computed); + result.push(value); + } + } else if (!Object(__WEBPACK_IMPORTED_MODULE_3__contains_js__["a" /* default */])(result, value)) { + result.push(value); + } + } + return result; +} + + +/***/ }), +/* 208 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = unzip; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__max_js__ = __webpack_require__(201); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__getLength_js__ = __webpack_require__(27); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__pluck_js__ = __webpack_require__(134); + + + + +// Complement of zip. Unzip accepts an array of arrays and groups +// each array's elements on shared indices. +function unzip(array) { + var length = array && Object(__WEBPACK_IMPORTED_MODULE_0__max_js__["a" /* default */])(array, __WEBPACK_IMPORTED_MODULE_1__getLength_js__["a" /* default */]).length || 0; + var result = Array(length); + + for (var index = 0; index < length; index++) { + result[index] = Object(__WEBPACK_IMPORTED_MODULE_2__pluck_js__["a" /* default */])(array, index); + } + return result; +} + + +/***/ }), +/* 209 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = chainResult; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__underscore_js__ = __webpack_require__(23); + + +// Helper function to continue chaining intermediate results. +function chainResult(instance, obj) { + return instance._chain ? Object(__WEBPACK_IMPORTED_MODULE_0__underscore_js__["a" /* default */])(obj).chain() : obj; +} + + +/***/ }), +/* 210 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var $ = __webpack_require__(0); +var fails = __webpack_require__(4); +var isArray = __webpack_require__(80); +var isObject = __webpack_require__(17); +var toObject = __webpack_require__(35); +var lengthOfArrayLike = __webpack_require__(42); +var doesNotExceedSafeInteger = __webpack_require__(354); +var createProperty = __webpack_require__(99); +var arraySpeciesCreate = __webpack_require__(211); +var arrayMethodHasSpeciesSupport = __webpack_require__(100); +var wellKnownSymbol = __webpack_require__(8); +var V8_VERSION = __webpack_require__(84); + +var IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable'); + +// We can't use this feature detection in V8 since it causes +// deoptimization and serious performance degradation +// https://github.com/zloirock/core-js/issues/679 +var IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () { + var array = []; + array[IS_CONCAT_SPREADABLE] = false; + return array.concat()[0] !== array; +}); + +var SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat'); + +var isConcatSpreadable = function (O) { + if (!isObject(O)) return false; + var spreadable = O[IS_CONCAT_SPREADABLE]; + return spreadable !== undefined ? !!spreadable : isArray(O); +}; + +var FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT; + +// `Array.prototype.concat` method +// https://tc39.es/ecma262/#sec-array.prototype.concat +// with adding support of @@isConcatSpreadable and @@species +$({ target: 'Array', proto: true, arity: 1, forced: FORCED }, { + // eslint-disable-next-line no-unused-vars -- required for `.length` + concat: function concat(arg) { + var O = toObject(this); + var A = arraySpeciesCreate(O, 0); + var n = 0; + var i, k, length, len, E; + for (i = -1, length = arguments.length; i < length; i++) { + E = i === -1 ? O : arguments[i]; + if (isConcatSpreadable(E)) { + len = lengthOfArrayLike(E); + doesNotExceedSafeInteger(n + len); + for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]); + } else { + doesNotExceedSafeInteger(n + 1); + createProperty(A, n++, E); + } + } + A.length = n; + return A; + } +}); + + +/***/ }), +/* 211 */ +/***/ (function(module, exports, __webpack_require__) { + +var arraySpeciesConstructor = __webpack_require__(355); + +// `ArraySpeciesCreate` abstract operation +// https://tc39.es/ecma262/#sec-arrayspeciescreate +module.exports = function (originalArray, length) { + return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length); +}; + + +/***/ }), +/* 212 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__(360); + +/***/ }), +/* 213 */ +/***/ (function(module, exports, __webpack_require__) { + +var $ = __webpack_require__(0); +var getBuiltIn = __webpack_require__(16); +var apply = __webpack_require__(62); +var call = __webpack_require__(11); +var uncurryThis = __webpack_require__(6); +var fails = __webpack_require__(4); +var isArray = __webpack_require__(80); +var isCallable = __webpack_require__(7); +var isObject = __webpack_require__(17); +var isSymbol = __webpack_require__(83); +var arraySlice = __webpack_require__(94); +var NATIVE_SYMBOL = __webpack_require__(49); + +var $stringify = getBuiltIn('JSON', 'stringify'); +var exec = uncurryThis(/./.exec); +var charAt = uncurryThis(''.charAt); +var charCodeAt = uncurryThis(''.charCodeAt); +var replace = uncurryThis(''.replace); +var numberToString = uncurryThis(1.0.toString); + +var tester = /[\uD800-\uDFFF]/g; +var low = /^[\uD800-\uDBFF]$/; +var hi = /^[\uDC00-\uDFFF]$/; + +var WRONG_SYMBOLS_CONVERSION = !NATIVE_SYMBOL || fails(function () { + var symbol = getBuiltIn('Symbol')(); + // MS Edge converts symbol values to JSON as {} + return $stringify([symbol]) != '[null]' + // WebKit converts symbol values to JSON as null + || $stringify({ a: symbol }) != '{}' + // V8 throws on boxed symbols + || $stringify(Object(symbol)) != '{}'; +}); + +// https://github.com/tc39/proposal-well-formed-stringify +var ILL_FORMED_UNICODE = fails(function () { + return $stringify('\uDF06\uD834') !== '"\\udf06\\ud834"' + || $stringify('\uDEAD') !== '"\\udead"'; +}); + +var stringifyWithSymbolsFix = function (it, replacer) { + var args = arraySlice(arguments); + var $replacer = replacer; + if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined + if (!isArray(replacer)) replacer = function (key, value) { + if (isCallable($replacer)) value = call($replacer, this, key, value); + if (!isSymbol(value)) return value; + }; + args[1] = replacer; + return apply($stringify, null, args); +}; + +var fixIllFormed = function (match, offset, string) { + var prev = charAt(string, offset - 1); + var next = charAt(string, offset + 1); + if ((exec(low, match) && !exec(hi, next)) || (exec(hi, match) && !exec(low, prev))) { + return '\\u' + numberToString(charCodeAt(match, 0), 16); + } return match; +}; + +if ($stringify) { + // `JSON.stringify` method + // https://tc39.es/ecma262/#sec-json.stringify + $({ target: 'JSON', stat: true, arity: 3, forced: WRONG_SYMBOLS_CONVERSION || ILL_FORMED_UNICODE }, { + // eslint-disable-next-line no-unused-vars -- required for `.length` + stringify: function stringify(it, replacer, space) { + var args = arraySlice(arguments); + var result = apply(WRONG_SYMBOLS_CONVERSION ? stringifyWithSymbolsFix : $stringify, null, args); + return ILL_FORMED_UNICODE && typeof result == 'string' ? replace(result, tester, fixIllFormed) : result; + } + }); +} + + +/***/ }), +/* 214 */ +/***/ (function(module, exports, __webpack_require__) { + +var rng = __webpack_require__(373); +var bytesToUuid = __webpack_require__(374); + +function v4(options, buf, offset) { + var i = buf && offset || 0; + + if (typeof(options) == 'string') { + buf = options === 'binary' ? new Array(16) : null; + options = null; + } + options = options || {}; + + var rnds = options.random || (options.rng || rng)(); + + // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` + rnds[6] = (rnds[6] & 0x0f) | 0x40; + rnds[8] = (rnds[8] & 0x3f) | 0x80; + + // Copy bytes to buffer, if provided + if (buf) { + for (var ii = 0; ii < 16; ++ii) { + buf[i + ii] = rnds[ii]; + } + } + + return buf || bytesToUuid(rnds); +} + +module.exports = v4; + + +/***/ }), +/* 215 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__(216); + +/***/ }), +/* 216 */ +/***/ (function(module, exports, __webpack_require__) { + +var parent = __webpack_require__(377); + +module.exports = parent; + + +/***/ }), +/* 217 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +module.exports = '4.15.1'; + +/***/ }), +/* 218 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var has = Object.prototype.hasOwnProperty + , prefix = '~'; + +/** + * Constructor to create a storage for our `EE` objects. + * An `Events` instance is a plain object whose properties are event names. + * + * @constructor + * @api private + */ +function Events() {} + +// +// We try to not inherit from `Object.prototype`. In some engines creating an +// instance in this way is faster than calling `Object.create(null)` directly. +// If `Object.create(null)` is not supported we prefix the event names with a +// character to make sure that the built-in object properties are not +// overridden or used as an attack vector. +// +if (Object.create) { + Events.prototype = Object.create(null); + + // + // This hack is needed because the `__proto__` property is still inherited in + // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5. + // + if (!new Events().__proto__) prefix = false; +} + +/** + * Representation of a single event listener. + * + * @param {Function} fn The listener function. + * @param {Mixed} context The context to invoke the listener with. + * @param {Boolean} [once=false] Specify if the listener is a one-time listener. + * @constructor + * @api private + */ +function EE(fn, context, once) { + this.fn = fn; + this.context = context; + this.once = once || false; +} + +/** + * Minimal `EventEmitter` interface that is molded against the Node.js + * `EventEmitter` interface. + * + * @constructor + * @api public + */ +function EventEmitter() { + this._events = new Events(); + this._eventsCount = 0; +} + +/** + * Return an array listing the events for which the emitter has registered + * listeners. + * + * @returns {Array} + * @api public + */ +EventEmitter.prototype.eventNames = function eventNames() { + var names = [] + , events + , name; + + if (this._eventsCount === 0) return names; + + for (name in (events = this._events)) { + if (has.call(events, name)) names.push(prefix ? name.slice(1) : name); + } + + if (Object.getOwnPropertySymbols) { + return names.concat(Object.getOwnPropertySymbols(events)); + } + + return names; +}; + +/** + * Return the listeners registered for a given event. + * + * @param {String|Symbol} event The event name. + * @param {Boolean} exists Only check if there are listeners. + * @returns {Array|Boolean} + * @api public + */ +EventEmitter.prototype.listeners = function listeners(event, exists) { + var evt = prefix ? prefix + event : event + , available = this._events[evt]; + + if (exists) return !!available; + if (!available) return []; + if (available.fn) return [available.fn]; + + for (var i = 0, l = available.length, ee = new Array(l); i < l; i++) { + ee[i] = available[i].fn; + } + + return ee; +}; + +/** + * Calls each of the listeners registered for a given event. + * + * @param {String|Symbol} event The event name. + * @returns {Boolean} `true` if the event had listeners, else `false`. + * @api public + */ +EventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) { + var evt = prefix ? prefix + event : event; + + if (!this._events[evt]) return false; + + var listeners = this._events[evt] + , len = arguments.length + , args + , i; + + if (listeners.fn) { + if (listeners.once) this.removeListener(event, listeners.fn, undefined, true); + + switch (len) { + case 1: return listeners.fn.call(listeners.context), true; + case 2: return listeners.fn.call(listeners.context, a1), true; + case 3: return listeners.fn.call(listeners.context, a1, a2), true; + case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true; + case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true; + case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true; + } + + for (i = 1, args = new Array(len -1); i < len; i++) { + args[i - 1] = arguments[i]; + } + + listeners.fn.apply(listeners.context, args); + } else { + var length = listeners.length + , j; + + for (i = 0; i < length; i++) { + if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true); + + switch (len) { + case 1: listeners[i].fn.call(listeners[i].context); break; + case 2: listeners[i].fn.call(listeners[i].context, a1); break; + case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break; + case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break; + default: + if (!args) for (j = 1, args = new Array(len -1); j < len; j++) { + args[j - 1] = arguments[j]; + } + + listeners[i].fn.apply(listeners[i].context, args); + } + } + } + + return true; +}; + +/** + * Add a listener for a given event. + * + * @param {String|Symbol} event The event name. + * @param {Function} fn The listener function. + * @param {Mixed} [context=this] The context to invoke the listener with. + * @returns {EventEmitter} `this`. + * @api public + */ +EventEmitter.prototype.on = function on(event, fn, context) { + var listener = new EE(fn, context || this) + , evt = prefix ? prefix + event : event; + + if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++; + else if (!this._events[evt].fn) this._events[evt].push(listener); + else this._events[evt] = [this._events[evt], listener]; + + return this; +}; + +/** + * Add a one-time listener for a given event. + * + * @param {String|Symbol} event The event name. + * @param {Function} fn The listener function. + * @param {Mixed} [context=this] The context to invoke the listener with. + * @returns {EventEmitter} `this`. + * @api public + */ +EventEmitter.prototype.once = function once(event, fn, context) { + var listener = new EE(fn, context || this, true) + , evt = prefix ? prefix + event : event; + + if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++; + else if (!this._events[evt].fn) this._events[evt].push(listener); + else this._events[evt] = [this._events[evt], listener]; + + return this; +}; + +/** + * Remove the listeners of a given event. + * + * @param {String|Symbol} event The event name. + * @param {Function} fn Only remove the listeners that match this function. + * @param {Mixed} context Only remove the listeners that have this context. + * @param {Boolean} once Only remove one-time listeners. + * @returns {EventEmitter} `this`. + * @api public + */ +EventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) { + var evt = prefix ? prefix + event : event; + + if (!this._events[evt]) return this; + if (!fn) { + if (--this._eventsCount === 0) this._events = new Events(); + else delete this._events[evt]; + return this; + } + + var listeners = this._events[evt]; + + if (listeners.fn) { + if ( + listeners.fn === fn + && (!once || listeners.once) + && (!context || listeners.context === context) + ) { + if (--this._eventsCount === 0) this._events = new Events(); + else delete this._events[evt]; + } + } else { + for (var i = 0, events = [], length = listeners.length; i < length; i++) { + if ( + listeners[i].fn !== fn + || (once && !listeners[i].once) + || (context && listeners[i].context !== context) + ) { + events.push(listeners[i]); + } + } + + // + // Reset the array, or remove it completely if we have no more listeners. + // + if (events.length) this._events[evt] = events.length === 1 ? events[0] : events; + else if (--this._eventsCount === 0) this._events = new Events(); + else delete this._events[evt]; + } + + return this; +}; + +/** + * Remove all listeners, or those of the specified event. + * + * @param {String|Symbol} [event] The event name. + * @returns {EventEmitter} `this`. + * @api public + */ +EventEmitter.prototype.removeAllListeners = function removeAllListeners(event) { + var evt; + + if (event) { + evt = prefix ? prefix + event : event; + if (this._events[evt]) { + if (--this._eventsCount === 0) this._events = new Events(); + else delete this._events[evt]; + } + } else { + this._events = new Events(); + this._eventsCount = 0; + } + + return this; +}; + +// +// Alias methods names because people roll like that. +// +EventEmitter.prototype.off = EventEmitter.prototype.removeListener; +EventEmitter.prototype.addListener = EventEmitter.prototype.on; + +// +// This function doesn't apply anymore. +// +EventEmitter.prototype.setMaxListeners = function setMaxListeners() { + return this; +}; + +// +// Expose the prefix. +// +EventEmitter.prefixed = prefix; + +// +// Allow `EventEmitter` to be imported as module namespace. +// +EventEmitter.EventEmitter = EventEmitter; + +// +// Expose the module. +// +if (true) { + module.exports = EventEmitter; +} + + +/***/ }), +/* 219 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(2); + +var _promise = _interopRequireDefault(__webpack_require__(10)); + +var _require = __webpack_require__(61), + getAdapter = _require.getAdapter; + +var syncApiNames = ['getItem', 'setItem', 'removeItem', 'clear']; +var localStorage = { + get async() { + return getAdapter('storage').async; + } + +}; // wrap sync apis with async ones. + +syncApiNames.forEach(function (apiName) { + localStorage[apiName + 'Async'] = function () { + var storage = getAdapter('storage'); + return _promise.default.resolve(storage[apiName].apply(storage, arguments)); + }; + + localStorage[apiName] = function () { + var storage = getAdapter('storage'); + + if (!storage.async) { + return storage[apiName].apply(storage, arguments); + } + + var error = new Error('Synchronous API [' + apiName + '] is not available in this runtime.'); + error.code = 'SYNC_API_NOT_AVAILABLE'; + throw error; + }; +}); +module.exports = localStorage; + +/***/ }), +/* 220 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(2); + +var _concat = _interopRequireDefault(__webpack_require__(29)); + +var _stringify = _interopRequireDefault(__webpack_require__(34)); + +var storage = __webpack_require__(219); + +var AV = __webpack_require__(59); + +var removeAsync = exports.removeAsync = storage.removeItemAsync.bind(storage); + +var getCacheData = function getCacheData(cacheData, key) { + try { + cacheData = JSON.parse(cacheData); + } catch (e) { + return null; + } + + if (cacheData) { + var expired = cacheData.expiredAt && cacheData.expiredAt < Date.now(); + + if (!expired) { + return cacheData.value; + } + + return removeAsync(key).then(function () { + return null; + }); + } + + return null; +}; + +exports.getAsync = function (key) { + var _context; + + key = (0, _concat.default)(_context = "AV/".concat(AV.applicationId, "/")).call(_context, key); + return storage.getItemAsync(key).then(function (cache) { + return getCacheData(cache, key); + }); +}; + +exports.setAsync = function (key, value, ttl) { + var _context2; + + var cache = { + value: value + }; + + if (typeof ttl === 'number') { + cache.expiredAt = Date.now() + ttl; + } + + return storage.setItemAsync((0, _concat.default)(_context2 = "AV/".concat(AV.applicationId, "/")).call(_context2, key), (0, _stringify.default)(cache)); +}; + +/***/ }), +/* 221 */ +/***/ (function(module, exports, __webpack_require__) { + +var parent = __webpack_require__(380); + +module.exports = parent; + + +/***/ }), +/* 222 */ +/***/ (function(module, exports, __webpack_require__) { + +var parent = __webpack_require__(383); + +module.exports = parent; + + +/***/ }), +/* 223 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__(224); + +/***/ }), +/* 224 */ +/***/ (function(module, exports, __webpack_require__) { + +var parent = __webpack_require__(386); + +module.exports = parent; + + +/***/ }), +/* 225 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__(389); + +/***/ }), +/* 226 */ +/***/ (function(module, exports, __webpack_require__) { + +var parent = __webpack_require__(392); +__webpack_require__(73); + +module.exports = parent; + + +/***/ }), +/* 227 */ +/***/ (function(module, exports, __webpack_require__) { + +var call = __webpack_require__(11); +var getBuiltIn = __webpack_require__(16); +var wellKnownSymbol = __webpack_require__(8); +var defineBuiltIn = __webpack_require__(43); + +module.exports = function () { + var Symbol = getBuiltIn('Symbol'); + var SymbolPrototype = Symbol && Symbol.prototype; + var valueOf = SymbolPrototype && SymbolPrototype.valueOf; + var TO_PRIMITIVE = wellKnownSymbol('toPrimitive'); + + if (SymbolPrototype && !SymbolPrototype[TO_PRIMITIVE]) { + // `Symbol.prototype[@@toPrimitive]` method + // https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive + // eslint-disable-next-line no-unused-vars -- required for .length + defineBuiltIn(SymbolPrototype, TO_PRIMITIVE, function (hint) { + return call(valueOf, this); + }, { arity: 1 }); + } +}; + + +/***/ }), +/* 228 */ +/***/ (function(module, exports, __webpack_require__) { + +var NATIVE_SYMBOL = __webpack_require__(49); + +/* eslint-disable es-x/no-symbol -- safe */ +module.exports = NATIVE_SYMBOL && !!Symbol['for'] && !!Symbol.keyFor; + + +/***/ }), +/* 229 */ +/***/ (function(module, exports, __webpack_require__) { + +var defineWellKnownSymbol = __webpack_require__(5); + +// `Symbol.iterator` well-known symbol +// https://tc39.es/ecma262/#sec-symbol.iterator +defineWellKnownSymbol('iterator'); + + +/***/ }), +/* 230 */ +/***/ (function(module, exports, __webpack_require__) { + +var parent = __webpack_require__(449); + +module.exports = parent; + + +/***/ }), +/* 231 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__(454); + +/***/ }), +/* 232 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var uncurryThis = __webpack_require__(6); +var aCallable = __webpack_require__(30); +var isObject = __webpack_require__(17); +var hasOwn = __webpack_require__(14); +var arraySlice = __webpack_require__(94); +var NATIVE_BIND = __webpack_require__(63); + +var $Function = Function; +var concat = uncurryThis([].concat); +var join = uncurryThis([].join); +var factories = {}; + +var construct = function (C, argsLength, args) { + if (!hasOwn(factories, argsLength)) { + for (var list = [], i = 0; i < argsLength; i++) list[i] = 'a[' + i + ']'; + factories[argsLength] = $Function('C,a', 'return new C(' + join(list, ',') + ')'); + } return factories[argsLength](C, args); +}; + +// `Function.prototype.bind` method implementation +// https://tc39.es/ecma262/#sec-function.prototype.bind +module.exports = NATIVE_BIND ? $Function.bind : function bind(that /* , ...args */) { + var F = aCallable(this); + var Prototype = F.prototype; + var partArgs = arraySlice(arguments, 1); + var boundFunction = function bound(/* args... */) { + var args = concat(partArgs, arraySlice(arguments)); + return this instanceof boundFunction ? construct(F, args.length, args) : F.apply(that, args); + }; + if (isObject(Prototype)) boundFunction.prototype = Prototype; + return boundFunction; +}; + + +/***/ }), +/* 233 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__(475); + +/***/ }), +/* 234 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__(478); + +/***/ }), +/* 235 */ +/***/ (function(module, exports) { + +var charenc = { + // UTF-8 encoding + utf8: { + // Convert a string to a byte array + stringToBytes: function(str) { + return charenc.bin.stringToBytes(unescape(encodeURIComponent(str))); + }, + + // Convert a byte array to a string + bytesToString: function(bytes) { + return decodeURIComponent(escape(charenc.bin.bytesToString(bytes))); + } + }, + + // Binary encoding + bin: { + // Convert a string to a byte array + stringToBytes: function(str) { + for (var bytes = [], i = 0; i < str.length; i++) + bytes.push(str.charCodeAt(i) & 0xFF); + return bytes; + }, + + // Convert a byte array to a string + bytesToString: function(bytes) { + for (var str = [], i = 0; i < bytes.length; i++) + str.push(String.fromCharCode(bytes[i])); + return str.join(''); + } + } +}; + +module.exports = charenc; + + +/***/ }), +/* 236 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +module.exports = __webpack_require__(237); + +/***/ }), +/* 237 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(2); + +var _promise = _interopRequireDefault(__webpack_require__(10)); + +/*! + * LeanCloud JavaScript SDK + * https://leancloud.cn + * + * Copyright 2016 LeanCloud.cn, Inc. + * The LeanCloud JavaScript SDK is freely distributable under the MIT license. + */ +var _ = __webpack_require__(1); + +var AV = __webpack_require__(59); + +AV._ = _; +AV.version = __webpack_require__(217); +AV.Promise = _promise.default; +AV.localStorage = __webpack_require__(219); +AV.Cache = __webpack_require__(220); +AV.Error = __webpack_require__(40); + +__webpack_require__(382); + +__webpack_require__(436)(AV); + +__webpack_require__(437)(AV); + +__webpack_require__(438)(AV); + +__webpack_require__(439)(AV); + +__webpack_require__(444)(AV); + +__webpack_require__(445)(AV); + +__webpack_require__(500)(AV); + +__webpack_require__(526)(AV); + +__webpack_require__(527)(AV); + +__webpack_require__(529)(AV); + +__webpack_require__(530)(AV); + +__webpack_require__(531)(AV); + +__webpack_require__(532)(AV); + +__webpack_require__(533)(AV); + +__webpack_require__(534)(AV); + +__webpack_require__(535)(AV); + +__webpack_require__(536)(AV); + +__webpack_require__(537)(AV); + +AV.Conversation = __webpack_require__(538); + +__webpack_require__(539); + +module.exports = AV; +/** + * Options to controll the authentication for an operation + * @typedef {Object} AuthOptions + * @property {String} [sessionToken] Specify a user to excute the operation as. + * @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. + * @property {Boolean} [useMasterKey] Indicates whether masterKey is used for this operation. Only valid when masterKey is set. + */ + +/** + * Options to controll the authentication for an SMS operation + * @typedef {Object} SMSAuthOptions + * @property {String} [sessionToken] Specify a user to excute the operation as. + * @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. + * @property {Boolean} [useMasterKey] Indicates whether masterKey is used for this operation. Only valid when masterKey is set. + * @property {String} [validateToken] a validate token returned by {@link AV.Cloud.verifyCaptcha} + */ + +/***/ }), +/* 238 */ +/***/ (function(module, exports, __webpack_require__) { + +var parent = __webpack_require__(239); +__webpack_require__(73); + +module.exports = parent; + + +/***/ }), +/* 239 */ +/***/ (function(module, exports, __webpack_require__) { + +__webpack_require__(240); +__webpack_require__(70); +__webpack_require__(92); +__webpack_require__(258); +__webpack_require__(274); +__webpack_require__(275); +__webpack_require__(276); +__webpack_require__(95); +var path = __webpack_require__(13); + +module.exports = path.Promise; + + +/***/ }), +/* 240 */ +/***/ (function(module, exports, __webpack_require__) { + +// TODO: Remove this module from `core-js@4` since it's replaced to module below +__webpack_require__(241); + + +/***/ }), +/* 241 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var $ = __webpack_require__(0); +var isPrototypeOf = __webpack_require__(20); +var getPrototypeOf = __webpack_require__(86); +var setPrototypeOf = __webpack_require__(88); +var copyConstructorProperties = __webpack_require__(246); +var create = __webpack_require__(51); +var createNonEnumerableProperty = __webpack_require__(36); +var createPropertyDescriptor = __webpack_require__(41); +var clearErrorStack = __webpack_require__(250); +var installErrorCause = __webpack_require__(251); +var iterate = __webpack_require__(68); +var normalizeStringArgument = __webpack_require__(252); +var wellKnownSymbol = __webpack_require__(8); +var ERROR_STACK_INSTALLABLE = __webpack_require__(253); + +var TO_STRING_TAG = wellKnownSymbol('toStringTag'); +var $Error = Error; +var push = [].push; + +var $AggregateError = function AggregateError(errors, message /* , options */) { + var options = arguments.length > 2 ? arguments[2] : undefined; + var isInstance = isPrototypeOf(AggregateErrorPrototype, this); + var that; + if (setPrototypeOf) { + that = setPrototypeOf(new $Error(), isInstance ? getPrototypeOf(this) : AggregateErrorPrototype); + } else { + that = isInstance ? this : create(AggregateErrorPrototype); + createNonEnumerableProperty(that, TO_STRING_TAG, 'Error'); + } + if (message !== undefined) createNonEnumerableProperty(that, 'message', normalizeStringArgument(message)); + if (ERROR_STACK_INSTALLABLE) createNonEnumerableProperty(that, 'stack', clearErrorStack(that.stack, 1)); + installErrorCause(that, options); + var errorsArray = []; + iterate(errors, push, { that: errorsArray }); + createNonEnumerableProperty(that, 'errors', errorsArray); + return that; +}; + +if (setPrototypeOf) setPrototypeOf($AggregateError, $Error); +else copyConstructorProperties($AggregateError, $Error, { name: true }); + +var AggregateErrorPrototype = $AggregateError.prototype = create($Error.prototype, { + constructor: createPropertyDescriptor(1, $AggregateError), + message: createPropertyDescriptor(1, ''), + name: createPropertyDescriptor(1, 'AggregateError') +}); + +// `AggregateError` constructor +// https://tc39.es/ecma262/#sec-aggregate-error-constructor +$({ global: true, constructor: true, arity: 2 }, { + AggregateError: $AggregateError +}); + + +/***/ }), +/* 242 */ +/***/ (function(module, exports, __webpack_require__) { + +var call = __webpack_require__(11); +var isObject = __webpack_require__(17); +var isSymbol = __webpack_require__(83); +var getMethod = __webpack_require__(107); +var ordinaryToPrimitive = __webpack_require__(243); +var wellKnownSymbol = __webpack_require__(8); + +var $TypeError = TypeError; +var TO_PRIMITIVE = wellKnownSymbol('toPrimitive'); + +// `ToPrimitive` abstract operation +// https://tc39.es/ecma262/#sec-toprimitive +module.exports = function (input, pref) { + if (!isObject(input) || isSymbol(input)) return input; + var exoticToPrim = getMethod(input, TO_PRIMITIVE); + var result; + if (exoticToPrim) { + if (pref === undefined) pref = 'default'; + result = call(exoticToPrim, input, pref); + if (!isObject(result) || isSymbol(result)) return result; + throw $TypeError("Can't convert object to primitive value"); + } + if (pref === undefined) pref = 'number'; + return ordinaryToPrimitive(input, pref); +}; + + +/***/ }), +/* 243 */ +/***/ (function(module, exports, __webpack_require__) { + +var call = __webpack_require__(11); +var isCallable = __webpack_require__(7); +var isObject = __webpack_require__(17); + +var $TypeError = TypeError; + +// `OrdinaryToPrimitive` abstract operation +// https://tc39.es/ecma262/#sec-ordinarytoprimitive +module.exports = function (input, pref) { + var fn, val; + if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val; + if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val; + if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val; + throw $TypeError("Can't convert object to primitive value"); +}; + + +/***/ }), +/* 244 */ +/***/ (function(module, exports, __webpack_require__) { + +var global = __webpack_require__(9); + +// eslint-disable-next-line es-x/no-object-defineproperty -- safe +var defineProperty = Object.defineProperty; + +module.exports = function (key, value) { + try { + defineProperty(global, key, { value: value, configurable: true, writable: true }); + } catch (error) { + global[key] = value; + } return value; +}; + + +/***/ }), +/* 245 */ +/***/ (function(module, exports, __webpack_require__) { + +var isCallable = __webpack_require__(7); + +var $String = String; +var $TypeError = TypeError; + +module.exports = function (argument) { + if (typeof argument == 'object' || isCallable(argument)) return argument; + throw $TypeError("Can't set " + $String(argument) + ' as a prototype'); +}; + + +/***/ }), +/* 246 */ +/***/ (function(module, exports, __webpack_require__) { + +var hasOwn = __webpack_require__(14); +var ownKeys = __webpack_require__(247); +var getOwnPropertyDescriptorModule = __webpack_require__(64); +var definePropertyModule = __webpack_require__(32); + +module.exports = function (target, source, exceptions) { + var keys = ownKeys(source); + var defineProperty = definePropertyModule.f; + var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f; + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) { + defineProperty(target, key, getOwnPropertyDescriptor(source, key)); + } + } +}; + + +/***/ }), +/* 247 */ +/***/ (function(module, exports, __webpack_require__) { + +var getBuiltIn = __webpack_require__(16); +var uncurryThis = __webpack_require__(6); +var getOwnPropertyNamesModule = __webpack_require__(111); +var getOwnPropertySymbolsModule = __webpack_require__(115); +var anObject = __webpack_require__(21); + +var concat = uncurryThis([].concat); + +// all object keys, includes non-enumerable and symbols +module.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) { + var keys = getOwnPropertyNamesModule.f(anObject(it)); + var getOwnPropertySymbols = getOwnPropertySymbolsModule.f; + return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys; +}; + + +/***/ }), +/* 248 */ +/***/ (function(module, exports) { + +var ceil = Math.ceil; +var floor = Math.floor; + +// `Math.trunc` method +// https://tc39.es/ecma262/#sec-math.trunc +// eslint-disable-next-line es-x/no-math-trunc -- safe +module.exports = Math.trunc || function trunc(x) { + var n = +x; + return (n > 0 ? floor : ceil)(n); +}; + + +/***/ }), +/* 249 */ +/***/ (function(module, exports, __webpack_require__) { + +var toIntegerOrInfinity = __webpack_require__(113); + +var min = Math.min; + +// `ToLength` abstract operation +// https://tc39.es/ecma262/#sec-tolength +module.exports = function (argument) { + return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991 +}; + + +/***/ }), +/* 250 */ +/***/ (function(module, exports, __webpack_require__) { + +var uncurryThis = __webpack_require__(6); + +var $Error = Error; +var replace = uncurryThis(''.replace); + +var TEST = (function (arg) { return String($Error(arg).stack); })('zxcasd'); +var V8_OR_CHAKRA_STACK_ENTRY = /\n\s*at [^:]*:[^\n]*/; +var IS_V8_OR_CHAKRA_STACK = V8_OR_CHAKRA_STACK_ENTRY.test(TEST); + +module.exports = function (stack, dropEntries) { + if (IS_V8_OR_CHAKRA_STACK && typeof stack == 'string' && !$Error.prepareStackTrace) { + while (dropEntries--) stack = replace(stack, V8_OR_CHAKRA_STACK_ENTRY, ''); + } return stack; +}; + + +/***/ }), +/* 251 */ +/***/ (function(module, exports, __webpack_require__) { + +var isObject = __webpack_require__(17); +var createNonEnumerableProperty = __webpack_require__(36); + +// `InstallErrorCause` abstract operation +// https://tc39.es/proposal-error-cause/#sec-errorobjects-install-error-cause +module.exports = function (O, options) { + if (isObject(options) && 'cause' in options) { + createNonEnumerableProperty(O, 'cause', options.cause); + } +}; + + +/***/ }), +/* 252 */ +/***/ (function(module, exports, __webpack_require__) { + +var toString = __webpack_require__(69); + +module.exports = function (argument, $default) { + return argument === undefined ? arguments.length < 2 ? '' : $default : toString(argument); +}; + + +/***/ }), +/* 253 */ +/***/ (function(module, exports, __webpack_require__) { + +var fails = __webpack_require__(4); +var createPropertyDescriptor = __webpack_require__(41); + +module.exports = !fails(function () { + var error = Error('a'); + if (!('stack' in error)) return true; + // eslint-disable-next-line es-x/no-object-defineproperty -- safe + Object.defineProperty(error, 'stack', createPropertyDescriptor(1, 7)); + return error.stack !== 7; +}); + + +/***/ }), +/* 254 */ +/***/ (function(module, exports, __webpack_require__) { + +var global = __webpack_require__(9); +var isCallable = __webpack_require__(7); +var inspectSource = __webpack_require__(118); + +var WeakMap = global.WeakMap; + +module.exports = isCallable(WeakMap) && /native code/.test(inspectSource(WeakMap)); + + +/***/ }), +/* 255 */ +/***/ (function(module, exports, __webpack_require__) { + +var DESCRIPTORS = __webpack_require__(19); +var hasOwn = __webpack_require__(14); + +var FunctionPrototype = Function.prototype; +// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe +var getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor; + +var EXISTS = hasOwn(FunctionPrototype, 'name'); +// additional protection from minified / mangled / dropped function names +var PROPER = EXISTS && (function something() { /* empty */ }).name === 'something'; +var CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable)); + +module.exports = { + EXISTS: EXISTS, + PROPER: PROPER, + CONFIGURABLE: CONFIGURABLE +}; + + +/***/ }), +/* 256 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var IteratorPrototype = __webpack_require__(154).IteratorPrototype; +var create = __webpack_require__(51); +var createPropertyDescriptor = __webpack_require__(41); +var setToStringTag = __webpack_require__(54); +var Iterators = __webpack_require__(52); + +var returnThis = function () { return this; }; + +module.exports = function (IteratorConstructor, NAME, next, ENUMERABLE_NEXT) { + var TO_STRING_TAG = NAME + ' Iterator'; + IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(+!ENUMERABLE_NEXT, next) }); + setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true); + Iterators[TO_STRING_TAG] = returnThis; + return IteratorConstructor; +}; + + +/***/ }), +/* 257 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var TO_STRING_TAG_SUPPORT = __webpack_require__(117); +var classof = __webpack_require__(53); + +// `Object.prototype.toString` method implementation +// https://tc39.es/ecma262/#sec-object.prototype.tostring +module.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() { + return '[object ' + classof(this) + ']'; +}; + + +/***/ }), +/* 258 */ +/***/ (function(module, exports, __webpack_require__) { + +// TODO: Remove this module from `core-js@4` since it's split to modules listed below +__webpack_require__(259); +__webpack_require__(269); +__webpack_require__(270); +__webpack_require__(271); +__webpack_require__(272); +__webpack_require__(273); + + +/***/ }), +/* 259 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var $ = __webpack_require__(0); +var IS_PURE = __webpack_require__(31); +var IS_NODE = __webpack_require__(119); +var global = __webpack_require__(9); +var call = __webpack_require__(11); +var defineBuiltIn = __webpack_require__(43); +var setPrototypeOf = __webpack_require__(88); +var setToStringTag = __webpack_require__(54); +var setSpecies = __webpack_require__(260); +var aCallable = __webpack_require__(30); +var isCallable = __webpack_require__(7); +var isObject = __webpack_require__(17); +var anInstance = __webpack_require__(261); +var speciesConstructor = __webpack_require__(155); +var task = __webpack_require__(157).set; +var microtask = __webpack_require__(263); +var hostReportErrors = __webpack_require__(266); +var perform = __webpack_require__(71); +var Queue = __webpack_require__(267); +var InternalStateModule = __webpack_require__(91); +var NativePromiseConstructor = __webpack_require__(55); +var PromiseConstructorDetection = __webpack_require__(72); +var newPromiseCapabilityModule = __webpack_require__(44); + +var PROMISE = 'Promise'; +var FORCED_PROMISE_CONSTRUCTOR = PromiseConstructorDetection.CONSTRUCTOR; +var NATIVE_PROMISE_REJECTION_EVENT = PromiseConstructorDetection.REJECTION_EVENT; +var NATIVE_PROMISE_SUBCLASSING = PromiseConstructorDetection.SUBCLASSING; +var getInternalPromiseState = InternalStateModule.getterFor(PROMISE); +var setInternalState = InternalStateModule.set; +var NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype; +var PromiseConstructor = NativePromiseConstructor; +var PromisePrototype = NativePromisePrototype; +var TypeError = global.TypeError; +var document = global.document; +var process = global.process; +var newPromiseCapability = newPromiseCapabilityModule.f; +var newGenericPromiseCapability = newPromiseCapability; + +var DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent); +var UNHANDLED_REJECTION = 'unhandledrejection'; +var REJECTION_HANDLED = 'rejectionhandled'; +var PENDING = 0; +var FULFILLED = 1; +var REJECTED = 2; +var HANDLED = 1; +var UNHANDLED = 2; + +var Internal, OwnPromiseCapability, PromiseWrapper, nativeThen; + +// helpers +var isThenable = function (it) { + var then; + return isObject(it) && isCallable(then = it.then) ? then : false; +}; + +var callReaction = function (reaction, state) { + var value = state.value; + var ok = state.state == FULFILLED; + var handler = ok ? reaction.ok : reaction.fail; + var resolve = reaction.resolve; + var reject = reaction.reject; + var domain = reaction.domain; + var result, then, exited; + try { + if (handler) { + if (!ok) { + if (state.rejection === UNHANDLED) onHandleUnhandled(state); + state.rejection = HANDLED; + } + if (handler === true) result = value; + else { + if (domain) domain.enter(); + result = handler(value); // can throw + if (domain) { + domain.exit(); + exited = true; + } + } + if (result === reaction.promise) { + reject(TypeError('Promise-chain cycle')); + } else if (then = isThenable(result)) { + call(then, result, resolve, reject); + } else resolve(result); + } else reject(value); + } catch (error) { + if (domain && !exited) domain.exit(); + reject(error); + } +}; + +var notify = function (state, isReject) { + if (state.notified) return; + state.notified = true; + microtask(function () { + var reactions = state.reactions; + var reaction; + while (reaction = reactions.get()) { + callReaction(reaction, state); + } + state.notified = false; + if (isReject && !state.rejection) onUnhandled(state); + }); +}; + +var dispatchEvent = function (name, promise, reason) { + var event, handler; + if (DISPATCH_EVENT) { + event = document.createEvent('Event'); + event.promise = promise; + event.reason = reason; + event.initEvent(name, false, true); + global.dispatchEvent(event); + } else event = { promise: promise, reason: reason }; + if (!NATIVE_PROMISE_REJECTION_EVENT && (handler = global['on' + name])) handler(event); + else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason); +}; + +var onUnhandled = function (state) { + call(task, global, function () { + var promise = state.facade; + var value = state.value; + var IS_UNHANDLED = isUnhandled(state); + var result; + if (IS_UNHANDLED) { + result = perform(function () { + if (IS_NODE) { + process.emit('unhandledRejection', value, promise); + } else dispatchEvent(UNHANDLED_REJECTION, promise, value); + }); + // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should + state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED; + if (result.error) throw result.value; + } + }); +}; + +var isUnhandled = function (state) { + return state.rejection !== HANDLED && !state.parent; +}; + +var onHandleUnhandled = function (state) { + call(task, global, function () { + var promise = state.facade; + if (IS_NODE) { + process.emit('rejectionHandled', promise); + } else dispatchEvent(REJECTION_HANDLED, promise, state.value); + }); +}; + +var bind = function (fn, state, unwrap) { + return function (value) { + fn(state, value, unwrap); + }; +}; + +var internalReject = function (state, value, unwrap) { + if (state.done) return; + state.done = true; + if (unwrap) state = unwrap; + state.value = value; + state.state = REJECTED; + notify(state, true); +}; + +var internalResolve = function (state, value, unwrap) { + if (state.done) return; + state.done = true; + if (unwrap) state = unwrap; + try { + if (state.facade === value) throw TypeError("Promise can't be resolved itself"); + var then = isThenable(value); + if (then) { + microtask(function () { + var wrapper = { done: false }; + try { + call(then, value, + bind(internalResolve, wrapper, state), + bind(internalReject, wrapper, state) + ); + } catch (error) { + internalReject(wrapper, error, state); + } + }); + } else { + state.value = value; + state.state = FULFILLED; + notify(state, false); + } + } catch (error) { + internalReject({ done: false }, error, state); + } +}; + +// constructor polyfill +if (FORCED_PROMISE_CONSTRUCTOR) { + // 25.4.3.1 Promise(executor) + PromiseConstructor = function Promise(executor) { + anInstance(this, PromisePrototype); + aCallable(executor); + call(Internal, this); + var state = getInternalPromiseState(this); + try { + executor(bind(internalResolve, state), bind(internalReject, state)); + } catch (error) { + internalReject(state, error); + } + }; + + PromisePrototype = PromiseConstructor.prototype; + + // eslint-disable-next-line no-unused-vars -- required for `.length` + Internal = function Promise(executor) { + setInternalState(this, { + type: PROMISE, + done: false, + notified: false, + parent: false, + reactions: new Queue(), + rejection: false, + state: PENDING, + value: undefined + }); + }; + + // `Promise.prototype.then` method + // https://tc39.es/ecma262/#sec-promise.prototype.then + Internal.prototype = defineBuiltIn(PromisePrototype, 'then', function then(onFulfilled, onRejected) { + var state = getInternalPromiseState(this); + var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor)); + state.parent = true; + reaction.ok = isCallable(onFulfilled) ? onFulfilled : true; + reaction.fail = isCallable(onRejected) && onRejected; + reaction.domain = IS_NODE ? process.domain : undefined; + if (state.state == PENDING) state.reactions.add(reaction); + else microtask(function () { + callReaction(reaction, state); + }); + return reaction.promise; + }); + + OwnPromiseCapability = function () { + var promise = new Internal(); + var state = getInternalPromiseState(promise); + this.promise = promise; + this.resolve = bind(internalResolve, state); + this.reject = bind(internalReject, state); + }; + + newPromiseCapabilityModule.f = newPromiseCapability = function (C) { + return C === PromiseConstructor || C === PromiseWrapper + ? new OwnPromiseCapability(C) + : newGenericPromiseCapability(C); + }; + + if (!IS_PURE && isCallable(NativePromiseConstructor) && NativePromisePrototype !== Object.prototype) { + nativeThen = NativePromisePrototype.then; + + if (!NATIVE_PROMISE_SUBCLASSING) { + // make `Promise#then` return a polyfilled `Promise` for native promise-based APIs + defineBuiltIn(NativePromisePrototype, 'then', function then(onFulfilled, onRejected) { + var that = this; + return new PromiseConstructor(function (resolve, reject) { + call(nativeThen, that, resolve, reject); + }).then(onFulfilled, onRejected); + // https://github.com/zloirock/core-js/issues/640 + }, { unsafe: true }); + } + + // make `.constructor === Promise` work for native promise-based APIs + try { + delete NativePromisePrototype.constructor; + } catch (error) { /* empty */ } + + // make `instanceof Promise` work for native promise-based APIs + if (setPrototypeOf) { + setPrototypeOf(NativePromisePrototype, PromisePrototype); + } + } +} + +$({ global: true, constructor: true, wrap: true, forced: FORCED_PROMISE_CONSTRUCTOR }, { + Promise: PromiseConstructor +}); + +setToStringTag(PromiseConstructor, PROMISE, false, true); +setSpecies(PROMISE); + + +/***/ }), +/* 260 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var getBuiltIn = __webpack_require__(16); +var definePropertyModule = __webpack_require__(32); +var wellKnownSymbol = __webpack_require__(8); +var DESCRIPTORS = __webpack_require__(19); + +var SPECIES = wellKnownSymbol('species'); + +module.exports = function (CONSTRUCTOR_NAME) { + var Constructor = getBuiltIn(CONSTRUCTOR_NAME); + var defineProperty = definePropertyModule.f; + + if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) { + defineProperty(Constructor, SPECIES, { + configurable: true, + get: function () { return this; } + }); + } +}; + + +/***/ }), +/* 261 */ +/***/ (function(module, exports, __webpack_require__) { + +var isPrototypeOf = __webpack_require__(20); + +var $TypeError = TypeError; + +module.exports = function (it, Prototype) { + if (isPrototypeOf(Prototype, it)) return it; + throw $TypeError('Incorrect invocation'); +}; + + +/***/ }), +/* 262 */ +/***/ (function(module, exports) { + +var $TypeError = TypeError; + +module.exports = function (passed, required) { + if (passed < required) throw $TypeError('Not enough arguments'); + return passed; +}; + + +/***/ }), +/* 263 */ +/***/ (function(module, exports, __webpack_require__) { + +var global = __webpack_require__(9); +var bind = __webpack_require__(50); +var getOwnPropertyDescriptor = __webpack_require__(64).f; +var macrotask = __webpack_require__(157).set; +var IS_IOS = __webpack_require__(158); +var IS_IOS_PEBBLE = __webpack_require__(264); +var IS_WEBOS_WEBKIT = __webpack_require__(265); +var IS_NODE = __webpack_require__(119); + +var MutationObserver = global.MutationObserver || global.WebKitMutationObserver; +var document = global.document; +var process = global.process; +var Promise = global.Promise; +// Node.js 11 shows ExperimentalWarning on getting `queueMicrotask` +var queueMicrotaskDescriptor = getOwnPropertyDescriptor(global, 'queueMicrotask'); +var queueMicrotask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value; + +var flush, head, last, notify, toggle, node, promise, then; + +// modern engines have queueMicrotask method +if (!queueMicrotask) { + flush = function () { + var parent, fn; + if (IS_NODE && (parent = process.domain)) parent.exit(); + while (head) { + fn = head.fn; + head = head.next; + try { + fn(); + } catch (error) { + if (head) notify(); + else last = undefined; + throw error; + } + } last = undefined; + if (parent) parent.enter(); + }; + + // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339 + // also except WebOS Webkit https://github.com/zloirock/core-js/issues/898 + if (!IS_IOS && !IS_NODE && !IS_WEBOS_WEBKIT && MutationObserver && document) { + toggle = true; + node = document.createTextNode(''); + new MutationObserver(flush).observe(node, { characterData: true }); + notify = function () { + node.data = toggle = !toggle; + }; + // environments with maybe non-completely correct, but existent Promise + } else if (!IS_IOS_PEBBLE && Promise && Promise.resolve) { + // Promise.resolve without an argument throws an error in LG WebOS 2 + promise = Promise.resolve(undefined); + // workaround of WebKit ~ iOS Safari 10.1 bug + promise.constructor = Promise; + then = bind(promise.then, promise); + notify = function () { + then(flush); + }; + // Node.js without promises + } else if (IS_NODE) { + notify = function () { + process.nextTick(flush); + }; + // for other environments - macrotask based on: + // - setImmediate + // - MessageChannel + // - window.postMessage + // - onreadystatechange + // - setTimeout + } else { + // strange IE + webpack dev server bug - use .bind(global) + macrotask = bind(macrotask, global); + notify = function () { + macrotask(flush); + }; + } +} + +module.exports = queueMicrotask || function (fn) { + var task = { fn: fn, next: undefined }; + if (last) last.next = task; + if (!head) { + head = task; + notify(); + } last = task; +}; + + +/***/ }), +/* 264 */ +/***/ (function(module, exports, __webpack_require__) { + +var userAgent = __webpack_require__(85); +var global = __webpack_require__(9); + +module.exports = /ipad|iphone|ipod/i.test(userAgent) && global.Pebble !== undefined; + + +/***/ }), +/* 265 */ +/***/ (function(module, exports, __webpack_require__) { + +var userAgent = __webpack_require__(85); + +module.exports = /web0s(?!.*chrome)/i.test(userAgent); + + +/***/ }), +/* 266 */ +/***/ (function(module, exports, __webpack_require__) { + +var global = __webpack_require__(9); + +module.exports = function (a, b) { + var console = global.console; + if (console && console.error) { + arguments.length == 1 ? console.error(a) : console.error(a, b); + } +}; + + +/***/ }), +/* 267 */ +/***/ (function(module, exports) { + +var Queue = function () { + this.head = null; + this.tail = null; +}; + +Queue.prototype = { + add: function (item) { + var entry = { item: item, next: null }; + if (this.head) this.tail.next = entry; + else this.head = entry; + this.tail = entry; + }, + get: function () { + var entry = this.head; + if (entry) { + this.head = entry.next; + if (this.tail === entry) this.tail = null; + return entry.item; + } + } +}; + +module.exports = Queue; + + +/***/ }), +/* 268 */ +/***/ (function(module, exports) { + +module.exports = typeof window == 'object' && typeof Deno != 'object'; + + +/***/ }), +/* 269 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var $ = __webpack_require__(0); +var call = __webpack_require__(11); +var aCallable = __webpack_require__(30); +var newPromiseCapabilityModule = __webpack_require__(44); +var perform = __webpack_require__(71); +var iterate = __webpack_require__(68); +var PROMISE_STATICS_INCORRECT_ITERATION = __webpack_require__(159); + +// `Promise.all` method +// https://tc39.es/ecma262/#sec-promise.all +$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, { + all: function all(iterable) { + var C = this; + var capability = newPromiseCapabilityModule.f(C); + var resolve = capability.resolve; + var reject = capability.reject; + var result = perform(function () { + var $promiseResolve = aCallable(C.resolve); + var values = []; + var counter = 0; + var remaining = 1; + iterate(iterable, function (promise) { + var index = counter++; + var alreadyCalled = false; + remaining++; + call($promiseResolve, C, promise).then(function (value) { + if (alreadyCalled) return; + alreadyCalled = true; + values[index] = value; + --remaining || resolve(values); + }, reject); + }); + --remaining || resolve(values); + }); + if (result.error) reject(result.value); + return capability.promise; + } +}); + + +/***/ }), +/* 270 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var $ = __webpack_require__(0); +var IS_PURE = __webpack_require__(31); +var FORCED_PROMISE_CONSTRUCTOR = __webpack_require__(72).CONSTRUCTOR; +var NativePromiseConstructor = __webpack_require__(55); +var getBuiltIn = __webpack_require__(16); +var isCallable = __webpack_require__(7); +var defineBuiltIn = __webpack_require__(43); + +var NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype; + +// `Promise.prototype.catch` method +// https://tc39.es/ecma262/#sec-promise.prototype.catch +$({ target: 'Promise', proto: true, forced: FORCED_PROMISE_CONSTRUCTOR, real: true }, { + 'catch': function (onRejected) { + return this.then(undefined, onRejected); + } +}); + +// makes sure that native promise-based APIs `Promise#catch` properly works with patched `Promise#then` +if (!IS_PURE && isCallable(NativePromiseConstructor)) { + var method = getBuiltIn('Promise').prototype['catch']; + if (NativePromisePrototype['catch'] !== method) { + defineBuiltIn(NativePromisePrototype, 'catch', method, { unsafe: true }); + } +} + + +/***/ }), +/* 271 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var $ = __webpack_require__(0); +var call = __webpack_require__(11); +var aCallable = __webpack_require__(30); +var newPromiseCapabilityModule = __webpack_require__(44); +var perform = __webpack_require__(71); +var iterate = __webpack_require__(68); +var PROMISE_STATICS_INCORRECT_ITERATION = __webpack_require__(159); + +// `Promise.race` method +// https://tc39.es/ecma262/#sec-promise.race +$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, { + race: function race(iterable) { + var C = this; + var capability = newPromiseCapabilityModule.f(C); + var reject = capability.reject; + var result = perform(function () { + var $promiseResolve = aCallable(C.resolve); + iterate(iterable, function (promise) { + call($promiseResolve, C, promise).then(capability.resolve, reject); + }); + }); + if (result.error) reject(result.value); + return capability.promise; + } +}); + + +/***/ }), +/* 272 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var $ = __webpack_require__(0); +var call = __webpack_require__(11); +var newPromiseCapabilityModule = __webpack_require__(44); +var FORCED_PROMISE_CONSTRUCTOR = __webpack_require__(72).CONSTRUCTOR; + +// `Promise.reject` method +// https://tc39.es/ecma262/#sec-promise.reject +$({ target: 'Promise', stat: true, forced: FORCED_PROMISE_CONSTRUCTOR }, { + reject: function reject(r) { + var capability = newPromiseCapabilityModule.f(this); + call(capability.reject, undefined, r); + return capability.promise; + } +}); + + +/***/ }), +/* 273 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var $ = __webpack_require__(0); +var getBuiltIn = __webpack_require__(16); +var IS_PURE = __webpack_require__(31); +var NativePromiseConstructor = __webpack_require__(55); +var FORCED_PROMISE_CONSTRUCTOR = __webpack_require__(72).CONSTRUCTOR; +var promiseResolve = __webpack_require__(161); + +var PromiseConstructorWrapper = getBuiltIn('Promise'); +var CHECK_WRAPPER = IS_PURE && !FORCED_PROMISE_CONSTRUCTOR; + +// `Promise.resolve` method +// https://tc39.es/ecma262/#sec-promise.resolve +$({ target: 'Promise', stat: true, forced: IS_PURE || FORCED_PROMISE_CONSTRUCTOR }, { + resolve: function resolve(x) { + return promiseResolve(CHECK_WRAPPER && this === PromiseConstructorWrapper ? NativePromiseConstructor : this, x); + } +}); + + +/***/ }), +/* 274 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var $ = __webpack_require__(0); +var call = __webpack_require__(11); +var aCallable = __webpack_require__(30); +var newPromiseCapabilityModule = __webpack_require__(44); +var perform = __webpack_require__(71); +var iterate = __webpack_require__(68); + +// `Promise.allSettled` method +// https://tc39.es/ecma262/#sec-promise.allsettled +$({ target: 'Promise', stat: true }, { + allSettled: function allSettled(iterable) { + var C = this; + var capability = newPromiseCapabilityModule.f(C); + var resolve = capability.resolve; + var reject = capability.reject; + var result = perform(function () { + var promiseResolve = aCallable(C.resolve); + var values = []; + var counter = 0; + var remaining = 1; + iterate(iterable, function (promise) { + var index = counter++; + var alreadyCalled = false; + remaining++; + call(promiseResolve, C, promise).then(function (value) { + if (alreadyCalled) return; + alreadyCalled = true; + values[index] = { status: 'fulfilled', value: value }; + --remaining || resolve(values); + }, function (error) { + if (alreadyCalled) return; + alreadyCalled = true; + values[index] = { status: 'rejected', reason: error }; + --remaining || resolve(values); + }); + }); + --remaining || resolve(values); + }); + if (result.error) reject(result.value); + return capability.promise; + } +}); + + +/***/ }), +/* 275 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var $ = __webpack_require__(0); +var call = __webpack_require__(11); +var aCallable = __webpack_require__(30); +var getBuiltIn = __webpack_require__(16); +var newPromiseCapabilityModule = __webpack_require__(44); +var perform = __webpack_require__(71); +var iterate = __webpack_require__(68); + +var PROMISE_ANY_ERROR = 'No one promise resolved'; + +// `Promise.any` method +// https://tc39.es/ecma262/#sec-promise.any +$({ target: 'Promise', stat: true }, { + any: function any(iterable) { + var C = this; + var AggregateError = getBuiltIn('AggregateError'); + var capability = newPromiseCapabilityModule.f(C); + var resolve = capability.resolve; + var reject = capability.reject; + var result = perform(function () { + var promiseResolve = aCallable(C.resolve); + var errors = []; + var counter = 0; + var remaining = 1; + var alreadyResolved = false; + iterate(iterable, function (promise) { + var index = counter++; + var alreadyRejected = false; + remaining++; + call(promiseResolve, C, promise).then(function (value) { + if (alreadyRejected || alreadyResolved) return; + alreadyResolved = true; + resolve(value); + }, function (error) { + if (alreadyRejected || alreadyResolved) return; + alreadyRejected = true; + errors[index] = error; + --remaining || reject(new AggregateError(errors, PROMISE_ANY_ERROR)); + }); + }); + --remaining || reject(new AggregateError(errors, PROMISE_ANY_ERROR)); + }); + if (result.error) reject(result.value); + return capability.promise; + } +}); + + +/***/ }), +/* 276 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var $ = __webpack_require__(0); +var IS_PURE = __webpack_require__(31); +var NativePromiseConstructor = __webpack_require__(55); +var fails = __webpack_require__(4); +var getBuiltIn = __webpack_require__(16); +var isCallable = __webpack_require__(7); +var speciesConstructor = __webpack_require__(155); +var promiseResolve = __webpack_require__(161); +var defineBuiltIn = __webpack_require__(43); + +var NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype; + +// Safari bug https://bugs.webkit.org/show_bug.cgi?id=200829 +var NON_GENERIC = !!NativePromiseConstructor && fails(function () { + // eslint-disable-next-line unicorn/no-thenable -- required for testing + NativePromisePrototype['finally'].call({ then: function () { /* empty */ } }, function () { /* empty */ }); +}); + +// `Promise.prototype.finally` method +// https://tc39.es/ecma262/#sec-promise.prototype.finally +$({ target: 'Promise', proto: true, real: true, forced: NON_GENERIC }, { + 'finally': function (onFinally) { + var C = speciesConstructor(this, getBuiltIn('Promise')); + var isFunction = isCallable(onFinally); + return this.then( + isFunction ? function (x) { + return promiseResolve(C, onFinally()).then(function () { return x; }); + } : onFinally, + isFunction ? function (e) { + return promiseResolve(C, onFinally()).then(function () { throw e; }); + } : onFinally + ); + } +}); + +// makes sure that native promise-based APIs `Promise#finally` properly works with patched `Promise#then` +if (!IS_PURE && isCallable(NativePromiseConstructor)) { + var method = getBuiltIn('Promise').prototype['finally']; + if (NativePromisePrototype['finally'] !== method) { + defineBuiltIn(NativePromisePrototype, 'finally', method, { unsafe: true }); + } +} + + +/***/ }), +/* 277 */ +/***/ (function(module, exports, __webpack_require__) { + +var uncurryThis = __webpack_require__(6); +var toIntegerOrInfinity = __webpack_require__(113); +var toString = __webpack_require__(69); +var requireObjectCoercible = __webpack_require__(106); + +var charAt = uncurryThis(''.charAt); +var charCodeAt = uncurryThis(''.charCodeAt); +var stringSlice = uncurryThis(''.slice); + +var createMethod = function (CONVERT_TO_STRING) { + return function ($this, pos) { + var S = toString(requireObjectCoercible($this)); + var position = toIntegerOrInfinity(pos); + var size = S.length; + var first, second; + if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined; + first = charCodeAt(S, position); + return first < 0xD800 || first > 0xDBFF || position + 1 === size + || (second = charCodeAt(S, position + 1)) < 0xDC00 || second > 0xDFFF + ? CONVERT_TO_STRING + ? charAt(S, position) + : first + : CONVERT_TO_STRING + ? stringSlice(S, position, position + 2) + : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000; + }; +}; + +module.exports = { + // `String.prototype.codePointAt` method + // https://tc39.es/ecma262/#sec-string.prototype.codepointat + codeAt: createMethod(false), + // `String.prototype.at` method + // https://github.com/mathiasbynens/String.prototype.at + charAt: createMethod(true) +}; + + +/***/ }), +/* 278 */ +/***/ (function(module, exports) { + +// iterable DOM collections +// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods +module.exports = { + CSSRuleList: 0, + CSSStyleDeclaration: 0, + CSSValueList: 0, + ClientRectList: 0, + DOMRectList: 0, + DOMStringList: 0, + DOMTokenList: 1, + DataTransferItemList: 0, + FileList: 0, + HTMLAllCollection: 0, + HTMLCollection: 0, + HTMLFormElement: 0, + HTMLSelectElement: 0, + MediaList: 0, + MimeTypeArray: 0, + NamedNodeMap: 0, + NodeList: 1, + PaintRequestList: 0, + Plugin: 0, + PluginArray: 0, + SVGLengthList: 0, + SVGNumberList: 0, + SVGPathSegList: 0, + SVGPointList: 0, + SVGStringList: 0, + SVGTransformList: 0, + SourceBufferList: 0, + StyleSheetList: 0, + TextTrackCueList: 0, + TextTrackList: 0, + TouchList: 0 +}; + + +/***/ }), +/* 279 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__index_js__ = __webpack_require__(120); +// Default Export +// ============== +// In this module, we mix our bundled exports into the `_` object and export +// the result. This is analogous to setting `module.exports = _` in CommonJS. +// Hence, this module is also the entry point of our UMD bundle and the package +// entry point for CommonJS and AMD users. In other words, this is (the source +// of) the module you are interfacing with when you do any of the following: +// +// ```js +// // CommonJS +// var _ = require('underscore'); +// +// // AMD +// define(['underscore'], function(_) {...}); +// +// // UMD in the browser +// // _ is available as a global variable +// ``` + + + +// Add all of the Underscore functions to the wrapper object. +var _ = Object(__WEBPACK_IMPORTED_MODULE_0__index_js__["mixin"])(__WEBPACK_IMPORTED_MODULE_0__index_js__); +// Legacy Node.js API. +_._ = _; +// Export the Underscore API. +/* harmony default export */ __webpack_exports__["a"] = (_); + + +/***/ }), +/* 280 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = isNull; +// Is a given value equal to null? +function isNull(obj) { + return obj === null; +} + + +/***/ }), +/* 281 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = isElement; +// Is a given value a DOM element? +function isElement(obj) { + return !!(obj && obj.nodeType === 1); +} + + +/***/ }), +/* 282 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__tagTester_js__ = __webpack_require__(15); + + +/* harmony default export */ __webpack_exports__["a"] = (Object(__WEBPACK_IMPORTED_MODULE_0__tagTester_js__["a" /* default */])('Date')); + + +/***/ }), +/* 283 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__tagTester_js__ = __webpack_require__(15); + + +/* harmony default export */ __webpack_exports__["a"] = (Object(__WEBPACK_IMPORTED_MODULE_0__tagTester_js__["a" /* default */])('RegExp')); + + +/***/ }), +/* 284 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__tagTester_js__ = __webpack_require__(15); + + +/* harmony default export */ __webpack_exports__["a"] = (Object(__WEBPACK_IMPORTED_MODULE_0__tagTester_js__["a" /* default */])('Error')); + + +/***/ }), +/* 285 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__tagTester_js__ = __webpack_require__(15); + + +/* harmony default export */ __webpack_exports__["a"] = (Object(__WEBPACK_IMPORTED_MODULE_0__tagTester_js__["a" /* default */])('Object')); + + +/***/ }), +/* 286 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = isFinite; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__setup_js__ = __webpack_require__(3); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__isSymbol_js__ = __webpack_require__(165); + + + +// Is a given object a finite number? +function isFinite(obj) { + return !Object(__WEBPACK_IMPORTED_MODULE_1__isSymbol_js__["a" /* default */])(obj) && Object(__WEBPACK_IMPORTED_MODULE_0__setup_js__["f" /* _isFinite */])(obj) && !isNaN(parseFloat(obj)); +} + + +/***/ }), +/* 287 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__createSizePropertyCheck_js__ = __webpack_require__(170); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__getByteLength_js__ = __webpack_require__(124); + + + +// Internal helper to determine whether we should spend extensive checks against +// `ArrayBuffer` et al. +/* harmony default export */ __webpack_exports__["a"] = (Object(__WEBPACK_IMPORTED_MODULE_0__createSizePropertyCheck_js__["a" /* default */])(__WEBPACK_IMPORTED_MODULE_1__getByteLength_js__["a" /* default */])); + + +/***/ }), +/* 288 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = isEmpty; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__getLength_js__ = __webpack_require__(27); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__isArray_js__ = __webpack_require__(46); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__isString_js__ = __webpack_require__(121); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__isArguments_js__ = __webpack_require__(123); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__keys_js__ = __webpack_require__(12); + + + + + + +// Is a given array, string, or object empty? +// An "empty" object has no enumerable own-properties. +function isEmpty(obj) { + if (obj == null) return true; + // Skip the more expensive `toString`-based type checks if `obj` has no + // `.length`. + var length = Object(__WEBPACK_IMPORTED_MODULE_0__getLength_js__["a" /* default */])(obj); + if (typeof length == 'number' && ( + Object(__WEBPACK_IMPORTED_MODULE_1__isArray_js__["a" /* default */])(obj) || Object(__WEBPACK_IMPORTED_MODULE_2__isString_js__["a" /* default */])(obj) || Object(__WEBPACK_IMPORTED_MODULE_3__isArguments_js__["a" /* default */])(obj) + )) return length === 0; + return Object(__WEBPACK_IMPORTED_MODULE_0__getLength_js__["a" /* default */])(Object(__WEBPACK_IMPORTED_MODULE_4__keys_js__["a" /* default */])(obj)) === 0; +} + + +/***/ }), +/* 289 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = isEqual; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__underscore_js__ = __webpack_require__(23); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__setup_js__ = __webpack_require__(3); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__getByteLength_js__ = __webpack_require__(124); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__isTypedArray_js__ = __webpack_require__(168); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__isFunction_js__ = __webpack_require__(26); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__stringTagBug_js__ = __webpack_require__(74); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__isDataView_js__ = __webpack_require__(122); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__keys_js__ = __webpack_require__(12); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__has_js__ = __webpack_require__(37); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__toBufferView_js__ = __webpack_require__(290); + + + + + + + + + + + +// We use this string twice, so give it a name for minification. +var tagDataView = '[object DataView]'; + +// Internal recursive comparison function for `_.isEqual`. +function eq(a, b, aStack, bStack) { + // Identical objects are equal. `0 === -0`, but they aren't identical. + // See the [Harmony `egal` proposal](https://wiki.ecmascript.org/doku.php?id=harmony:egal). + if (a === b) return a !== 0 || 1 / a === 1 / b; + // `null` or `undefined` only equal to itself (strict comparison). + if (a == null || b == null) return false; + // `NaN`s are equivalent, but non-reflexive. + if (a !== a) return b !== b; + // Exhaust primitive checks + var type = typeof a; + if (type !== 'function' && type !== 'object' && typeof b != 'object') return false; + return deepEq(a, b, aStack, bStack); +} + +// Internal recursive comparison function for `_.isEqual`. +function deepEq(a, b, aStack, bStack) { + // Unwrap any wrapped objects. + if (a instanceof __WEBPACK_IMPORTED_MODULE_0__underscore_js__["a" /* default */]) a = a._wrapped; + if (b instanceof __WEBPACK_IMPORTED_MODULE_0__underscore_js__["a" /* default */]) b = b._wrapped; + // Compare `[[Class]]` names. + var className = __WEBPACK_IMPORTED_MODULE_1__setup_js__["t" /* toString */].call(a); + if (className !== __WEBPACK_IMPORTED_MODULE_1__setup_js__["t" /* toString */].call(b)) return false; + // Work around a bug in IE 10 - Edge 13. + if (__WEBPACK_IMPORTED_MODULE_5__stringTagBug_js__["a" /* hasStringTagBug */] && className == '[object Object]' && Object(__WEBPACK_IMPORTED_MODULE_6__isDataView_js__["a" /* default */])(a)) { + if (!Object(__WEBPACK_IMPORTED_MODULE_6__isDataView_js__["a" /* default */])(b)) return false; + className = tagDataView; + } + switch (className) { + // These types are compared by value. + case '[object RegExp]': + // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i') + case '[object String]': + // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is + // equivalent to `new String("5")`. + return '' + a === '' + b; + case '[object Number]': + // `NaN`s are equivalent, but non-reflexive. + // Object(NaN) is equivalent to NaN. + if (+a !== +a) return +b !== +b; + // An `egal` comparison is performed for other numeric values. + return +a === 0 ? 1 / +a === 1 / b : +a === +b; + case '[object Date]': + case '[object Boolean]': + // Coerce dates and booleans to numeric primitive values. Dates are compared by their + // millisecond representations. Note that invalid dates with millisecond representations + // of `NaN` are not equivalent. + return +a === +b; + case '[object Symbol]': + return __WEBPACK_IMPORTED_MODULE_1__setup_js__["d" /* SymbolProto */].valueOf.call(a) === __WEBPACK_IMPORTED_MODULE_1__setup_js__["d" /* SymbolProto */].valueOf.call(b); + case '[object ArrayBuffer]': + case tagDataView: + // Coerce to typed array so we can fall through. + return deepEq(Object(__WEBPACK_IMPORTED_MODULE_9__toBufferView_js__["a" /* default */])(a), Object(__WEBPACK_IMPORTED_MODULE_9__toBufferView_js__["a" /* default */])(b), aStack, bStack); + } + + var areArrays = className === '[object Array]'; + if (!areArrays && Object(__WEBPACK_IMPORTED_MODULE_3__isTypedArray_js__["a" /* default */])(a)) { + var byteLength = Object(__WEBPACK_IMPORTED_MODULE_2__getByteLength_js__["a" /* default */])(a); + if (byteLength !== Object(__WEBPACK_IMPORTED_MODULE_2__getByteLength_js__["a" /* default */])(b)) return false; + if (a.buffer === b.buffer && a.byteOffset === b.byteOffset) return true; + areArrays = true; + } + if (!areArrays) { + if (typeof a != 'object' || typeof b != 'object') return false; + + // Objects with different constructors are not equivalent, but `Object`s or `Array`s + // from different frames are. + var aCtor = a.constructor, bCtor = b.constructor; + if (aCtor !== bCtor && !(Object(__WEBPACK_IMPORTED_MODULE_4__isFunction_js__["a" /* default */])(aCtor) && aCtor instanceof aCtor && + Object(__WEBPACK_IMPORTED_MODULE_4__isFunction_js__["a" /* default */])(bCtor) && bCtor instanceof bCtor) + && ('constructor' in a && 'constructor' in b)) { + return false; + } + } + // Assume equality for cyclic structures. The algorithm for detecting cyclic + // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`. + + // Initializing stack of traversed objects. + // It's done here since we only need them for objects and arrays comparison. + aStack = aStack || []; + bStack = bStack || []; + var length = aStack.length; + while (length--) { + // Linear search. Performance is inversely proportional to the number of + // unique nested structures. + if (aStack[length] === a) return bStack[length] === b; + } + + // Add the first object to the stack of traversed objects. + aStack.push(a); + bStack.push(b); + + // Recursively compare objects and arrays. + if (areArrays) { + // Compare array lengths to determine if a deep comparison is necessary. + length = a.length; + if (length !== b.length) return false; + // Deep compare the contents, ignoring non-numeric properties. + while (length--) { + if (!eq(a[length], b[length], aStack, bStack)) return false; + } + } else { + // Deep compare objects. + var _keys = Object(__WEBPACK_IMPORTED_MODULE_7__keys_js__["a" /* default */])(a), key; + length = _keys.length; + // Ensure that both objects contain the same number of properties before comparing deep equality. + if (Object(__WEBPACK_IMPORTED_MODULE_7__keys_js__["a" /* default */])(b).length !== length) return false; + while (length--) { + // Deep compare each member + key = _keys[length]; + if (!(Object(__WEBPACK_IMPORTED_MODULE_8__has_js__["a" /* default */])(b, key) && eq(a[key], b[key], aStack, bStack))) return false; + } + } + // Remove the first object from the stack of traversed objects. + aStack.pop(); + bStack.pop(); + return true; +} + +// Perform a deep comparison to check if two objects are equal. +function isEqual(a, b) { + return eq(a, b); +} + + +/***/ }), +/* 290 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = toBufferView; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__getByteLength_js__ = __webpack_require__(124); + + +// Internal function to wrap or shallow-copy an ArrayBuffer, +// typed array or DataView to a new view, reusing the buffer. +function toBufferView(bufferSource) { + return new Uint8Array( + bufferSource.buffer || bufferSource, + bufferSource.byteOffset || 0, + Object(__WEBPACK_IMPORTED_MODULE_0__getByteLength_js__["a" /* default */])(bufferSource) + ); +} + + +/***/ }), +/* 291 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__tagTester_js__ = __webpack_require__(15); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__stringTagBug_js__ = __webpack_require__(74); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__methodFingerprint_js__ = __webpack_require__(125); + + + + +/* harmony default export */ __webpack_exports__["a"] = (__WEBPACK_IMPORTED_MODULE_1__stringTagBug_js__["b" /* isIE11 */] ? Object(__WEBPACK_IMPORTED_MODULE_2__methodFingerprint_js__["a" /* ie11fingerprint */])(__WEBPACK_IMPORTED_MODULE_2__methodFingerprint_js__["b" /* mapMethods */]) : Object(__WEBPACK_IMPORTED_MODULE_0__tagTester_js__["a" /* default */])('Map')); + + +/***/ }), +/* 292 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__tagTester_js__ = __webpack_require__(15); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__stringTagBug_js__ = __webpack_require__(74); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__methodFingerprint_js__ = __webpack_require__(125); + + + + +/* harmony default export */ __webpack_exports__["a"] = (__WEBPACK_IMPORTED_MODULE_1__stringTagBug_js__["b" /* isIE11 */] ? Object(__WEBPACK_IMPORTED_MODULE_2__methodFingerprint_js__["a" /* ie11fingerprint */])(__WEBPACK_IMPORTED_MODULE_2__methodFingerprint_js__["d" /* weakMapMethods */]) : Object(__WEBPACK_IMPORTED_MODULE_0__tagTester_js__["a" /* default */])('WeakMap')); + + +/***/ }), +/* 293 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__tagTester_js__ = __webpack_require__(15); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__stringTagBug_js__ = __webpack_require__(74); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__methodFingerprint_js__ = __webpack_require__(125); + + + + +/* harmony default export */ __webpack_exports__["a"] = (__WEBPACK_IMPORTED_MODULE_1__stringTagBug_js__["b" /* isIE11 */] ? Object(__WEBPACK_IMPORTED_MODULE_2__methodFingerprint_js__["a" /* ie11fingerprint */])(__WEBPACK_IMPORTED_MODULE_2__methodFingerprint_js__["c" /* setMethods */]) : Object(__WEBPACK_IMPORTED_MODULE_0__tagTester_js__["a" /* default */])('Set')); + + +/***/ }), +/* 294 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__tagTester_js__ = __webpack_require__(15); + + +/* harmony default export */ __webpack_exports__["a"] = (Object(__WEBPACK_IMPORTED_MODULE_0__tagTester_js__["a" /* default */])('WeakSet')); + + +/***/ }), +/* 295 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = pairs; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__keys_js__ = __webpack_require__(12); + + +// Convert an object into a list of `[key, value]` pairs. +// The opposite of `_.object` with one argument. +function pairs(obj) { + var _keys = Object(__WEBPACK_IMPORTED_MODULE_0__keys_js__["a" /* default */])(obj); + var length = _keys.length; + var pairs = Array(length); + for (var i = 0; i < length; i++) { + pairs[i] = [_keys[i], obj[_keys[i]]]; + } + return pairs; +} + + +/***/ }), +/* 296 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = create; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__baseCreate_js__ = __webpack_require__(178); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__extendOwn_js__ = __webpack_require__(127); + + + +// Creates an object that inherits from the given prototype object. +// If additional properties are provided then they will be added to the +// created object. +function create(prototype, props) { + var result = Object(__WEBPACK_IMPORTED_MODULE_0__baseCreate_js__["a" /* default */])(prototype); + if (props) Object(__WEBPACK_IMPORTED_MODULE_1__extendOwn_js__["a" /* default */])(result, props); + return result; +} + + +/***/ }), +/* 297 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = tap; +// Invokes `interceptor` with the `obj` and then returns `obj`. +// The primary purpose of this method is to "tap into" a method chain, in +// order to perform operations on intermediate results within the chain. +function tap(obj, interceptor) { + interceptor(obj); + return obj; +} + + +/***/ }), +/* 298 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = has; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__has_js__ = __webpack_require__(37); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__toPath_js__ = __webpack_require__(76); + + + +// Shortcut function for checking if an object has a given property directly on +// itself (in other words, not on a prototype). Unlike the internal `has` +// function, this public version can also traverse nested properties. +function has(obj, path) { + path = Object(__WEBPACK_IMPORTED_MODULE_1__toPath_js__["a" /* default */])(path); + var length = path.length; + for (var i = 0; i < length; i++) { + var key = path[i]; + if (!Object(__WEBPACK_IMPORTED_MODULE_0__has_js__["a" /* default */])(obj, key)) return false; + obj = obj[key]; + } + return !!length; +} + + +/***/ }), +/* 299 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = mapObject; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__cb_js__ = __webpack_require__(18); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__keys_js__ = __webpack_require__(12); + + + +// Returns the results of applying the `iteratee` to each element of `obj`. +// In contrast to `_.map` it returns an object. +function mapObject(obj, iteratee, context) { + iteratee = Object(__WEBPACK_IMPORTED_MODULE_0__cb_js__["a" /* default */])(iteratee, context); + var _keys = Object(__WEBPACK_IMPORTED_MODULE_1__keys_js__["a" /* default */])(obj), + length = _keys.length, + results = {}; + for (var index = 0; index < length; index++) { + var currentKey = _keys[index]; + results[currentKey] = iteratee(obj[currentKey], currentKey, obj); + } + return results; +} + + +/***/ }), +/* 300 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = propertyOf; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__noop_js__ = __webpack_require__(184); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__get_js__ = __webpack_require__(180); + + + +// Generates a function for a given object that returns a given property. +function propertyOf(obj) { + if (obj == null) return __WEBPACK_IMPORTED_MODULE_0__noop_js__["a" /* default */]; + return function(path) { + return Object(__WEBPACK_IMPORTED_MODULE_1__get_js__["a" /* default */])(obj, path); + }; +} + + +/***/ }), +/* 301 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = times; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__optimizeCb_js__ = __webpack_require__(77); + + +// Run a function **n** times. +function times(n, iteratee, context) { + var accum = Array(Math.max(0, n)); + iteratee = Object(__WEBPACK_IMPORTED_MODULE_0__optimizeCb_js__["a" /* default */])(iteratee, context, 1); + for (var i = 0; i < n; i++) accum[i] = iteratee(i); + return accum; +} + + +/***/ }), +/* 302 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__createEscaper_js__ = __webpack_require__(186); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__escapeMap_js__ = __webpack_require__(187); + + + +// Function for escaping strings to HTML interpolation. +/* harmony default export */ __webpack_exports__["a"] = (Object(__WEBPACK_IMPORTED_MODULE_0__createEscaper_js__["a" /* default */])(__WEBPACK_IMPORTED_MODULE_1__escapeMap_js__["a" /* default */])); + + +/***/ }), +/* 303 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__createEscaper_js__ = __webpack_require__(186); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__unescapeMap_js__ = __webpack_require__(304); + + + +// Function for unescaping strings from HTML interpolation. +/* harmony default export */ __webpack_exports__["a"] = (Object(__WEBPACK_IMPORTED_MODULE_0__createEscaper_js__["a" /* default */])(__WEBPACK_IMPORTED_MODULE_1__unescapeMap_js__["a" /* default */])); + + +/***/ }), +/* 304 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__invert_js__ = __webpack_require__(174); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__escapeMap_js__ = __webpack_require__(187); + + + +// Internal list of HTML entities for unescaping. +/* harmony default export */ __webpack_exports__["a"] = (Object(__WEBPACK_IMPORTED_MODULE_0__invert_js__["a" /* default */])(__WEBPACK_IMPORTED_MODULE_1__escapeMap_js__["a" /* default */])); + + +/***/ }), +/* 305 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = template; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__defaults_js__ = __webpack_require__(177); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__underscore_js__ = __webpack_require__(23); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__templateSettings_js__ = __webpack_require__(188); + + + + +// When customizing `_.templateSettings`, if you don't want to define an +// interpolation, evaluation or escaping regex, we need one that is +// guaranteed not to match. +var noMatch = /(.)^/; + +// Certain characters need to be escaped so that they can be put into a +// string literal. +var escapes = { + "'": "'", + '\\': '\\', + '\r': 'r', + '\n': 'n', + '\u2028': 'u2028', + '\u2029': 'u2029' +}; + +var escapeRegExp = /\\|'|\r|\n|\u2028|\u2029/g; + +function escapeChar(match) { + return '\\' + escapes[match]; +} + +var bareIdentifier = /^\s*(\w|\$)+\s*$/; + +// JavaScript micro-templating, similar to John Resig's implementation. +// Underscore templating handles arbitrary delimiters, preserves whitespace, +// and correctly escapes quotes within interpolated code. +// NB: `oldSettings` only exists for backwards compatibility. +function template(text, settings, oldSettings) { + if (!settings && oldSettings) settings = oldSettings; + settings = Object(__WEBPACK_IMPORTED_MODULE_0__defaults_js__["a" /* default */])({}, settings, __WEBPACK_IMPORTED_MODULE_1__underscore_js__["a" /* default */].templateSettings); + + // Combine delimiters into one regular expression via alternation. + var matcher = RegExp([ + (settings.escape || noMatch).source, + (settings.interpolate || noMatch).source, + (settings.evaluate || noMatch).source + ].join('|') + '|$', 'g'); + + // Compile the template source, escaping string literals appropriately. + var index = 0; + var source = "__p+='"; + text.replace(matcher, function(match, escape, interpolate, evaluate, offset) { + source += text.slice(index, offset).replace(escapeRegExp, escapeChar); + index = offset + match.length; + + if (escape) { + source += "'+\n((__t=(" + escape + "))==null?'':_.escape(__t))+\n'"; + } else if (interpolate) { + source += "'+\n((__t=(" + interpolate + "))==null?'':__t)+\n'"; + } else if (evaluate) { + source += "';\n" + evaluate + "\n__p+='"; + } + + // Adobe VMs need the match returned to produce the correct offset. + return match; + }); + source += "';\n"; + + var argument = settings.variable; + if (argument) { + if (!bareIdentifier.test(argument)) throw new Error(argument); + } else { + // If a variable is not specified, place data values in local scope. + source = 'with(obj||{}){\n' + source + '}\n'; + argument = 'obj'; + } + + source = "var __t,__p='',__j=Array.prototype.join," + + "print=function(){__p+=__j.call(arguments,'');};\n" + + source + 'return __p;\n'; + + var render; + try { + render = new Function(argument, '_', source); + } catch (e) { + e.source = source; + throw e; + } + + var template = function(data) { + return render.call(this, data, __WEBPACK_IMPORTED_MODULE_1__underscore_js__["a" /* default */]); + }; + + // Provide the compiled source as a convenience for precompilation. + template.source = 'function(' + argument + '){\n' + source + '}'; + + return template; +} + + +/***/ }), +/* 306 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = result; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__isFunction_js__ = __webpack_require__(26); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__toPath_js__ = __webpack_require__(76); + + + +// Traverses the children of `obj` along `path`. If a child is a function, it +// is invoked with its parent as context. Returns the value of the final +// child, or `fallback` if any child is undefined. +function result(obj, path, fallback) { + path = Object(__WEBPACK_IMPORTED_MODULE_1__toPath_js__["a" /* default */])(path); + var length = path.length; + if (!length) { + return Object(__WEBPACK_IMPORTED_MODULE_0__isFunction_js__["a" /* default */])(fallback) ? fallback.call(obj) : fallback; + } + for (var i = 0; i < length; i++) { + var prop = obj == null ? void 0 : obj[path[i]]; + if (prop === void 0) { + prop = fallback; + i = length; // Ensure we don't continue iterating. + } + obj = Object(__WEBPACK_IMPORTED_MODULE_0__isFunction_js__["a" /* default */])(prop) ? prop.call(obj) : prop; + } + return obj; +} + + +/***/ }), +/* 307 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = uniqueId; +// Generate a unique integer id (unique within the entire client session). +// Useful for temporary DOM ids. +var idCounter = 0; +function uniqueId(prefix) { + var id = ++idCounter + ''; + return prefix ? prefix + id : id; +} + + +/***/ }), +/* 308 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = chain; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__underscore_js__ = __webpack_require__(23); + + +// Start chaining a wrapped Underscore object. +function chain(obj) { + var instance = Object(__WEBPACK_IMPORTED_MODULE_0__underscore_js__["a" /* default */])(obj); + instance._chain = true; + return instance; +} + + +/***/ }), +/* 309 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__restArguments_js__ = __webpack_require__(22); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__flatten_js__ = __webpack_require__(57); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__bind_js__ = __webpack_require__(190); + + + + +// Bind a number of an object's methods to that object. Remaining arguments +// are the method names to be bound. Useful for ensuring that all callbacks +// defined on an object belong to it. +/* harmony default export */ __webpack_exports__["a"] = (Object(__WEBPACK_IMPORTED_MODULE_0__restArguments_js__["a" /* default */])(function(obj, keys) { + keys = Object(__WEBPACK_IMPORTED_MODULE_1__flatten_js__["a" /* default */])(keys, false, false); + var index = keys.length; + if (index < 1) throw new Error('bindAll must be passed function names'); + while (index--) { + var key = keys[index]; + obj[key] = Object(__WEBPACK_IMPORTED_MODULE_2__bind_js__["a" /* default */])(obj[key], obj); + } + return obj; +})); + + +/***/ }), +/* 310 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = memoize; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__has_js__ = __webpack_require__(37); + + +// Memoize an expensive function by storing its results. +function memoize(func, hasher) { + var memoize = function(key) { + var cache = memoize.cache; + var address = '' + (hasher ? hasher.apply(this, arguments) : key); + if (!Object(__WEBPACK_IMPORTED_MODULE_0__has_js__["a" /* default */])(cache, address)) cache[address] = func.apply(this, arguments); + return cache[address]; + }; + memoize.cache = {}; + return memoize; +} + + +/***/ }), +/* 311 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__partial_js__ = __webpack_require__(97); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__delay_js__ = __webpack_require__(191); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__underscore_js__ = __webpack_require__(23); + + + + +// Defers a function, scheduling it to run after the current call stack has +// cleared. +/* harmony default export */ __webpack_exports__["a"] = (Object(__WEBPACK_IMPORTED_MODULE_0__partial_js__["a" /* default */])(__WEBPACK_IMPORTED_MODULE_1__delay_js__["a" /* default */], __WEBPACK_IMPORTED_MODULE_2__underscore_js__["a" /* default */], 1)); + + +/***/ }), +/* 312 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = throttle; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__now_js__ = __webpack_require__(131); + + +// Returns a function, that, when invoked, will only be triggered at most once +// during a given window of time. Normally, the throttled function will run +// as much as it can, without ever going more than once per `wait` duration; +// but if you'd like to disable the execution on the leading edge, pass +// `{leading: false}`. To disable execution on the trailing edge, ditto. +function throttle(func, wait, options) { + var timeout, context, args, result; + var previous = 0; + if (!options) options = {}; + + var later = function() { + previous = options.leading === false ? 0 : Object(__WEBPACK_IMPORTED_MODULE_0__now_js__["a" /* default */])(); + timeout = null; + result = func.apply(context, args); + if (!timeout) context = args = null; + }; + + var throttled = function() { + var _now = Object(__WEBPACK_IMPORTED_MODULE_0__now_js__["a" /* default */])(); + if (!previous && options.leading === false) previous = _now; + var remaining = wait - (_now - previous); + context = this; + args = arguments; + if (remaining <= 0 || remaining > wait) { + if (timeout) { + clearTimeout(timeout); + timeout = null; + } + previous = _now; + result = func.apply(context, args); + if (!timeout) context = args = null; + } else if (!timeout && options.trailing !== false) { + timeout = setTimeout(later, remaining); + } + return result; + }; + + throttled.cancel = function() { + clearTimeout(timeout); + previous = 0; + timeout = context = args = null; + }; + + return throttled; +} + + +/***/ }), +/* 313 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = debounce; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__restArguments_js__ = __webpack_require__(22); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__now_js__ = __webpack_require__(131); + + + +// When a sequence of calls of the returned function ends, the argument +// function is triggered. The end of a sequence is defined by the `wait` +// parameter. If `immediate` is passed, the argument function will be +// triggered at the beginning of the sequence instead of at the end. +function debounce(func, wait, immediate) { + var timeout, previous, args, result, context; + + var later = function() { + var passed = Object(__WEBPACK_IMPORTED_MODULE_1__now_js__["a" /* default */])() - previous; + if (wait > passed) { + timeout = setTimeout(later, wait - passed); + } else { + timeout = null; + if (!immediate) result = func.apply(context, args); + // This check is needed because `func` can recursively invoke `debounced`. + if (!timeout) args = context = null; + } + }; + + var debounced = Object(__WEBPACK_IMPORTED_MODULE_0__restArguments_js__["a" /* default */])(function(_args) { + context = this; + args = _args; + previous = Object(__WEBPACK_IMPORTED_MODULE_1__now_js__["a" /* default */])(); + if (!timeout) { + timeout = setTimeout(later, wait); + if (immediate) result = func.apply(context, args); + } + return result; + }); + + debounced.cancel = function() { + clearTimeout(timeout); + timeout = args = context = null; + }; + + return debounced; +} + + +/***/ }), +/* 314 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = wrap; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__partial_js__ = __webpack_require__(97); + + +// Returns the first function passed as an argument to the second, +// allowing you to adjust arguments, run code before and after, and +// conditionally execute the original function. +function wrap(func, wrapper) { + return Object(__WEBPACK_IMPORTED_MODULE_0__partial_js__["a" /* default */])(wrapper, func); +} + + +/***/ }), +/* 315 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = compose; +// Returns a function that is the composition of a list of functions, each +// consuming the return value of the function that follows. +function compose() { + var args = arguments; + var start = args.length - 1; + return function() { + var i = start; + var result = args[start].apply(this, arguments); + while (i--) result = args[i].call(this, result); + return result; + }; +} + + +/***/ }), +/* 316 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = after; +// Returns a function that will only be executed on and after the Nth call. +function after(times, func) { + return function() { + if (--times < 1) { + return func.apply(this, arguments); + } + }; +} + + +/***/ }), +/* 317 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__partial_js__ = __webpack_require__(97); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__before_js__ = __webpack_require__(192); + + + +// Returns a function that will be executed at most one time, no matter how +// often you call it. Useful for lazy initialization. +/* harmony default export */ __webpack_exports__["a"] = (Object(__WEBPACK_IMPORTED_MODULE_0__partial_js__["a" /* default */])(__WEBPACK_IMPORTED_MODULE_1__before_js__["a" /* default */], 2)); + + +/***/ }), +/* 318 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__findLastIndex_js__ = __webpack_require__(195); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__createIndexFinder_js__ = __webpack_require__(198); + + + +// Return the position of the last occurrence of an item in an array, +// or -1 if the item is not included in the array. +/* harmony default export */ __webpack_exports__["a"] = (Object(__WEBPACK_IMPORTED_MODULE_1__createIndexFinder_js__["a" /* default */])(-1, __WEBPACK_IMPORTED_MODULE_0__findLastIndex_js__["a" /* default */])); + + +/***/ }), +/* 319 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = findWhere; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__find_js__ = __webpack_require__(199); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__matcher_js__ = __webpack_require__(96); + + + +// Convenience version of a common use case of `_.find`: getting the first +// object containing specific `key:value` pairs. +function findWhere(obj, attrs) { + return Object(__WEBPACK_IMPORTED_MODULE_0__find_js__["a" /* default */])(obj, Object(__WEBPACK_IMPORTED_MODULE_1__matcher_js__["a" /* default */])(attrs)); +} + + +/***/ }), +/* 320 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__createReduce_js__ = __webpack_require__(200); + + +// **Reduce** builds up a single result from a list of values, aka `inject`, +// or `foldl`. +/* harmony default export */ __webpack_exports__["a"] = (Object(__WEBPACK_IMPORTED_MODULE_0__createReduce_js__["a" /* default */])(1)); + + +/***/ }), +/* 321 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__createReduce_js__ = __webpack_require__(200); + + +// The right-associative version of reduce, also known as `foldr`. +/* harmony default export */ __webpack_exports__["a"] = (Object(__WEBPACK_IMPORTED_MODULE_0__createReduce_js__["a" /* default */])(-1)); + + +/***/ }), +/* 322 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = reject; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__filter_js__ = __webpack_require__(78); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__negate_js__ = __webpack_require__(132); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__cb_js__ = __webpack_require__(18); + + + + +// Return all the elements for which a truth test fails. +function reject(obj, predicate, context) { + return Object(__WEBPACK_IMPORTED_MODULE_0__filter_js__["a" /* default */])(obj, Object(__WEBPACK_IMPORTED_MODULE_1__negate_js__["a" /* default */])(Object(__WEBPACK_IMPORTED_MODULE_2__cb_js__["a" /* default */])(predicate)), context); +} + + +/***/ }), +/* 323 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = every; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__cb_js__ = __webpack_require__(18); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__isArrayLike_js__ = __webpack_require__(24); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__keys_js__ = __webpack_require__(12); + + + + +// Determine whether all of the elements pass a truth test. +function every(obj, predicate, context) { + predicate = Object(__WEBPACK_IMPORTED_MODULE_0__cb_js__["a" /* default */])(predicate, context); + var _keys = !Object(__WEBPACK_IMPORTED_MODULE_1__isArrayLike_js__["a" /* default */])(obj) && Object(__WEBPACK_IMPORTED_MODULE_2__keys_js__["a" /* default */])(obj), + length = (_keys || obj).length; + for (var index = 0; index < length; index++) { + var currentKey = _keys ? _keys[index] : index; + if (!predicate(obj[currentKey], currentKey, obj)) return false; + } + return true; +} + + +/***/ }), +/* 324 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = some; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__cb_js__ = __webpack_require__(18); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__isArrayLike_js__ = __webpack_require__(24); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__keys_js__ = __webpack_require__(12); + + + + +// Determine if at least one element in the object passes a truth test. +function some(obj, predicate, context) { + predicate = Object(__WEBPACK_IMPORTED_MODULE_0__cb_js__["a" /* default */])(predicate, context); + var _keys = !Object(__WEBPACK_IMPORTED_MODULE_1__isArrayLike_js__["a" /* default */])(obj) && Object(__WEBPACK_IMPORTED_MODULE_2__keys_js__["a" /* default */])(obj), + length = (_keys || obj).length; + for (var index = 0; index < length; index++) { + var currentKey = _keys ? _keys[index] : index; + if (predicate(obj[currentKey], currentKey, obj)) return true; + } + return false; +} + + +/***/ }), +/* 325 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__restArguments_js__ = __webpack_require__(22); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__isFunction_js__ = __webpack_require__(26); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__map_js__ = __webpack_require__(58); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__deepGet_js__ = __webpack_require__(128); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__toPath_js__ = __webpack_require__(76); + + + + + + +// Invoke a method (with arguments) on every item in a collection. +/* harmony default export */ __webpack_exports__["a"] = (Object(__WEBPACK_IMPORTED_MODULE_0__restArguments_js__["a" /* default */])(function(obj, path, args) { + var contextPath, func; + if (Object(__WEBPACK_IMPORTED_MODULE_1__isFunction_js__["a" /* default */])(path)) { + func = path; + } else { + path = Object(__WEBPACK_IMPORTED_MODULE_4__toPath_js__["a" /* default */])(path); + contextPath = path.slice(0, -1); + path = path[path.length - 1]; + } + return Object(__WEBPACK_IMPORTED_MODULE_2__map_js__["a" /* default */])(obj, function(context) { + var method = func; + if (!method) { + if (contextPath && contextPath.length) { + context = Object(__WEBPACK_IMPORTED_MODULE_3__deepGet_js__["a" /* default */])(context, contextPath); + } + if (context == null) return void 0; + method = context[path]; + } + return method == null ? method : method.apply(context, args); + }); +})); + + +/***/ }), +/* 326 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = where; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__filter_js__ = __webpack_require__(78); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__matcher_js__ = __webpack_require__(96); + + + +// Convenience version of a common use case of `_.filter`: selecting only +// objects containing specific `key:value` pairs. +function where(obj, attrs) { + return Object(__WEBPACK_IMPORTED_MODULE_0__filter_js__["a" /* default */])(obj, Object(__WEBPACK_IMPORTED_MODULE_1__matcher_js__["a" /* default */])(attrs)); +} + + +/***/ }), +/* 327 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = min; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__isArrayLike_js__ = __webpack_require__(24); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__values_js__ = __webpack_require__(56); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__cb_js__ = __webpack_require__(18); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__each_js__ = __webpack_require__(47); + + + + + +// Return the minimum element (or element-based computation). +function min(obj, iteratee, context) { + var result = Infinity, lastComputed = Infinity, + value, computed; + if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) { + obj = Object(__WEBPACK_IMPORTED_MODULE_0__isArrayLike_js__["a" /* default */])(obj) ? obj : Object(__WEBPACK_IMPORTED_MODULE_1__values_js__["a" /* default */])(obj); + for (var i = 0, length = obj.length; i < length; i++) { + value = obj[i]; + if (value != null && value < result) { + result = value; + } + } + } else { + iteratee = Object(__WEBPACK_IMPORTED_MODULE_2__cb_js__["a" /* default */])(iteratee, context); + Object(__WEBPACK_IMPORTED_MODULE_3__each_js__["a" /* default */])(obj, function(v, index, list) { + computed = iteratee(v, index, list); + if (computed < lastComputed || computed === Infinity && result === Infinity) { + result = v; + lastComputed = computed; + } + }); + } + return result; +} + + +/***/ }), +/* 328 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = shuffle; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__sample_js__ = __webpack_require__(202); + + +// Shuffle a collection. +function shuffle(obj) { + return Object(__WEBPACK_IMPORTED_MODULE_0__sample_js__["a" /* default */])(obj, Infinity); +} + + +/***/ }), +/* 329 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = sortBy; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__cb_js__ = __webpack_require__(18); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__pluck_js__ = __webpack_require__(134); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__map_js__ = __webpack_require__(58); + + + + +// Sort the object's values by a criterion produced by an iteratee. +function sortBy(obj, iteratee, context) { + var index = 0; + iteratee = Object(__WEBPACK_IMPORTED_MODULE_0__cb_js__["a" /* default */])(iteratee, context); + return Object(__WEBPACK_IMPORTED_MODULE_1__pluck_js__["a" /* default */])(Object(__WEBPACK_IMPORTED_MODULE_2__map_js__["a" /* default */])(obj, function(value, key, list) { + return { + value: value, + index: index++, + criteria: iteratee(value, key, list) + }; + }).sort(function(left, right) { + var a = left.criteria; + var b = right.criteria; + if (a !== b) { + if (a > b || a === void 0) return 1; + if (a < b || b === void 0) return -1; + } + return left.index - right.index; + }), 'value'); +} + + +/***/ }), +/* 330 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__group_js__ = __webpack_require__(98); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__has_js__ = __webpack_require__(37); + + + +// Groups the object's values by a criterion. Pass either a string attribute +// to group by, or a function that returns the criterion. +/* harmony default export */ __webpack_exports__["a"] = (Object(__WEBPACK_IMPORTED_MODULE_0__group_js__["a" /* default */])(function(result, value, key) { + if (Object(__WEBPACK_IMPORTED_MODULE_1__has_js__["a" /* default */])(result, key)) result[key].push(value); else result[key] = [value]; +})); + + +/***/ }), +/* 331 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__group_js__ = __webpack_require__(98); + + +// Indexes the object's values by a criterion, similar to `_.groupBy`, but for +// when you know that your index values will be unique. +/* harmony default export */ __webpack_exports__["a"] = (Object(__WEBPACK_IMPORTED_MODULE_0__group_js__["a" /* default */])(function(result, value, key) { + result[key] = value; +})); + + +/***/ }), +/* 332 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__group_js__ = __webpack_require__(98); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__has_js__ = __webpack_require__(37); + + + +// Counts instances of an object that group by a certain criterion. Pass +// either a string attribute to count by, or a function that returns the +// criterion. +/* harmony default export */ __webpack_exports__["a"] = (Object(__WEBPACK_IMPORTED_MODULE_0__group_js__["a" /* default */])(function(result, value, key) { + if (Object(__WEBPACK_IMPORTED_MODULE_1__has_js__["a" /* default */])(result, key)) result[key]++; else result[key] = 1; +})); + + +/***/ }), +/* 333 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__group_js__ = __webpack_require__(98); + + +// Split a collection into two arrays: one whose elements all pass the given +// truth test, and one whose elements all do not pass the truth test. +/* harmony default export */ __webpack_exports__["a"] = (Object(__WEBPACK_IMPORTED_MODULE_0__group_js__["a" /* default */])(function(result, value, pass) { + result[pass ? 0 : 1].push(value); +}, true)); + + +/***/ }), +/* 334 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = toArray; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__isArray_js__ = __webpack_require__(46); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__setup_js__ = __webpack_require__(3); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__isString_js__ = __webpack_require__(121); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__isArrayLike_js__ = __webpack_require__(24); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__map_js__ = __webpack_require__(58); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__identity_js__ = __webpack_require__(129); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__values_js__ = __webpack_require__(56); + + + + + + + + +// Safely create a real, live array from anything iterable. +var reStrSymbol = /[^\ud800-\udfff]|[\ud800-\udbff][\udc00-\udfff]|[\ud800-\udfff]/g; +function toArray(obj) { + if (!obj) return []; + if (Object(__WEBPACK_IMPORTED_MODULE_0__isArray_js__["a" /* default */])(obj)) return __WEBPACK_IMPORTED_MODULE_1__setup_js__["q" /* slice */].call(obj); + if (Object(__WEBPACK_IMPORTED_MODULE_2__isString_js__["a" /* default */])(obj)) { + // Keep surrogate pair characters together. + return obj.match(reStrSymbol); + } + if (Object(__WEBPACK_IMPORTED_MODULE_3__isArrayLike_js__["a" /* default */])(obj)) return Object(__WEBPACK_IMPORTED_MODULE_4__map_js__["a" /* default */])(obj, __WEBPACK_IMPORTED_MODULE_5__identity_js__["a" /* default */]); + return Object(__WEBPACK_IMPORTED_MODULE_6__values_js__["a" /* default */])(obj); +} + + +/***/ }), +/* 335 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = size; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__isArrayLike_js__ = __webpack_require__(24); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__keys_js__ = __webpack_require__(12); + + + +// Return the number of elements in a collection. +function size(obj) { + if (obj == null) return 0; + return Object(__WEBPACK_IMPORTED_MODULE_0__isArrayLike_js__["a" /* default */])(obj) ? obj.length : Object(__WEBPACK_IMPORTED_MODULE_1__keys_js__["a" /* default */])(obj).length; +} + + +/***/ }), +/* 336 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = keyInObj; +// Internal `_.pick` helper function to determine whether `key` is an enumerable +// property name of `obj`. +function keyInObj(value, key, obj) { + return key in obj; +} + + +/***/ }), +/* 337 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__restArguments_js__ = __webpack_require__(22); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__isFunction_js__ = __webpack_require__(26); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__negate_js__ = __webpack_require__(132); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__map_js__ = __webpack_require__(58); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__flatten_js__ = __webpack_require__(57); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__contains_js__ = __webpack_require__(79); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__pick_js__ = __webpack_require__(203); + + + + + + + + +// Return a copy of the object without the disallowed properties. +/* harmony default export */ __webpack_exports__["a"] = (Object(__WEBPACK_IMPORTED_MODULE_0__restArguments_js__["a" /* default */])(function(obj, keys) { + var iteratee = keys[0], context; + if (Object(__WEBPACK_IMPORTED_MODULE_1__isFunction_js__["a" /* default */])(iteratee)) { + iteratee = Object(__WEBPACK_IMPORTED_MODULE_2__negate_js__["a" /* default */])(iteratee); + if (keys.length > 1) context = keys[1]; + } else { + keys = Object(__WEBPACK_IMPORTED_MODULE_3__map_js__["a" /* default */])(Object(__WEBPACK_IMPORTED_MODULE_4__flatten_js__["a" /* default */])(keys, false, false), String); + iteratee = function(value, key) { + return !Object(__WEBPACK_IMPORTED_MODULE_5__contains_js__["a" /* default */])(keys, key); + }; + } + return Object(__WEBPACK_IMPORTED_MODULE_6__pick_js__["a" /* default */])(obj, iteratee, context); +})); + + +/***/ }), +/* 338 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = first; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__initial_js__ = __webpack_require__(204); + + +// Get the first element of an array. Passing **n** will return the first N +// values in the array. The **guard** check allows it to work with `_.map`. +function first(array, n, guard) { + if (array == null || array.length < 1) return n == null || guard ? void 0 : []; + if (n == null || guard) return array[0]; + return Object(__WEBPACK_IMPORTED_MODULE_0__initial_js__["a" /* default */])(array, array.length - n); +} + + +/***/ }), +/* 339 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = last; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__rest_js__ = __webpack_require__(205); + + +// Get the last element of an array. Passing **n** will return the last N +// values in the array. +function last(array, n, guard) { + if (array == null || array.length < 1) return n == null || guard ? void 0 : []; + if (n == null || guard) return array[array.length - 1]; + return Object(__WEBPACK_IMPORTED_MODULE_0__rest_js__["a" /* default */])(array, Math.max(0, array.length - n)); +} + + +/***/ }), +/* 340 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = compact; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__filter_js__ = __webpack_require__(78); + + +// Trim out all falsy values from an array. +function compact(array) { + return Object(__WEBPACK_IMPORTED_MODULE_0__filter_js__["a" /* default */])(array, Boolean); +} + + +/***/ }), +/* 341 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = flatten; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__flatten_js__ = __webpack_require__(57); + + +// Flatten out an array, either recursively (by default), or up to `depth`. +// Passing `true` or `false` as `depth` means `1` or `Infinity`, respectively. +function flatten(array, depth) { + return Object(__WEBPACK_IMPORTED_MODULE_0__flatten_js__["a" /* default */])(array, depth, false); +} + + +/***/ }), +/* 342 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__restArguments_js__ = __webpack_require__(22); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__difference_js__ = __webpack_require__(206); + + + +// Return a version of the array that does not contain the specified value(s). +/* harmony default export */ __webpack_exports__["a"] = (Object(__WEBPACK_IMPORTED_MODULE_0__restArguments_js__["a" /* default */])(function(array, otherArrays) { + return Object(__WEBPACK_IMPORTED_MODULE_1__difference_js__["a" /* default */])(array, otherArrays); +})); + + +/***/ }), +/* 343 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__restArguments_js__ = __webpack_require__(22); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__uniq_js__ = __webpack_require__(207); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__flatten_js__ = __webpack_require__(57); + + + + +// Produce an array that contains the union: each distinct element from all of +// the passed-in arrays. +/* harmony default export */ __webpack_exports__["a"] = (Object(__WEBPACK_IMPORTED_MODULE_0__restArguments_js__["a" /* default */])(function(arrays) { + return Object(__WEBPACK_IMPORTED_MODULE_1__uniq_js__["a" /* default */])(Object(__WEBPACK_IMPORTED_MODULE_2__flatten_js__["a" /* default */])(arrays, true, true)); +})); + + +/***/ }), +/* 344 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = intersection; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__getLength_js__ = __webpack_require__(27); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__contains_js__ = __webpack_require__(79); + + + +// Produce an array that contains every item shared between all the +// passed-in arrays. +function intersection(array) { + var result = []; + var argsLength = arguments.length; + for (var i = 0, length = Object(__WEBPACK_IMPORTED_MODULE_0__getLength_js__["a" /* default */])(array); i < length; i++) { + var item = array[i]; + if (Object(__WEBPACK_IMPORTED_MODULE_1__contains_js__["a" /* default */])(result, item)) continue; + var j; + for (j = 1; j < argsLength; j++) { + if (!Object(__WEBPACK_IMPORTED_MODULE_1__contains_js__["a" /* default */])(arguments[j], item)) break; + } + if (j === argsLength) result.push(item); + } + return result; +} + + +/***/ }), +/* 345 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__restArguments_js__ = __webpack_require__(22); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__unzip_js__ = __webpack_require__(208); + + + +// Zip together multiple lists into a single array -- elements that share +// an index go together. +/* harmony default export */ __webpack_exports__["a"] = (Object(__WEBPACK_IMPORTED_MODULE_0__restArguments_js__["a" /* default */])(__WEBPACK_IMPORTED_MODULE_1__unzip_js__["a" /* default */])); + + +/***/ }), +/* 346 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = object; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__getLength_js__ = __webpack_require__(27); + + +// Converts lists into objects. Pass either a single array of `[key, value]` +// pairs, or two parallel arrays of the same length -- one of keys, and one of +// the corresponding values. Passing by pairs is the reverse of `_.pairs`. +function object(list, values) { + var result = {}; + for (var i = 0, length = Object(__WEBPACK_IMPORTED_MODULE_0__getLength_js__["a" /* default */])(list); i < length; i++) { + if (values) { + result[list[i]] = values[i]; + } else { + result[list[i][0]] = list[i][1]; + } + } + return result; +} + + +/***/ }), +/* 347 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = range; +// Generate an integer Array containing an arithmetic progression. A port of +// the native Python `range()` function. See +// [the Python documentation](https://docs.python.org/library/functions.html#range). +function range(start, stop, step) { + if (stop == null) { + stop = start || 0; + start = 0; + } + if (!step) { + step = stop < start ? -1 : 1; + } + + var length = Math.max(Math.ceil((stop - start) / step), 0); + var range = Array(length); + + for (var idx = 0; idx < length; idx++, start += step) { + range[idx] = start; + } + + return range; +} + + +/***/ }), +/* 348 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = chunk; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__setup_js__ = __webpack_require__(3); + + +// Chunk a single array into multiple arrays, each containing `count` or fewer +// items. +function chunk(array, count) { + if (count == null || count < 1) return []; + var result = []; + var i = 0, length = array.length; + while (i < length) { + result.push(__WEBPACK_IMPORTED_MODULE_0__setup_js__["q" /* slice */].call(array, i, i += count)); + } + return result; +} + + +/***/ }), +/* 349 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = mixin; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__underscore_js__ = __webpack_require__(23); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__each_js__ = __webpack_require__(47); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__functions_js__ = __webpack_require__(175); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__setup_js__ = __webpack_require__(3); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__chainResult_js__ = __webpack_require__(209); + + + + + + +// Add your own custom functions to the Underscore object. +function mixin(obj) { + Object(__WEBPACK_IMPORTED_MODULE_1__each_js__["a" /* default */])(Object(__WEBPACK_IMPORTED_MODULE_2__functions_js__["a" /* default */])(obj), function(name) { + var func = __WEBPACK_IMPORTED_MODULE_0__underscore_js__["a" /* default */][name] = obj[name]; + __WEBPACK_IMPORTED_MODULE_0__underscore_js__["a" /* default */].prototype[name] = function() { + var args = [this._wrapped]; + __WEBPACK_IMPORTED_MODULE_3__setup_js__["o" /* push */].apply(args, arguments); + return Object(__WEBPACK_IMPORTED_MODULE_4__chainResult_js__["a" /* default */])(this, func.apply(__WEBPACK_IMPORTED_MODULE_0__underscore_js__["a" /* default */], args)); + }; + }); + return __WEBPACK_IMPORTED_MODULE_0__underscore_js__["a" /* default */]; +} + + +/***/ }), +/* 350 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__underscore_js__ = __webpack_require__(23); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__each_js__ = __webpack_require__(47); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__setup_js__ = __webpack_require__(3); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__chainResult_js__ = __webpack_require__(209); + + + + + +// Add all mutator `Array` functions to the wrapper. +Object(__WEBPACK_IMPORTED_MODULE_1__each_js__["a" /* default */])(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) { + var method = __WEBPACK_IMPORTED_MODULE_2__setup_js__["a" /* ArrayProto */][name]; + __WEBPACK_IMPORTED_MODULE_0__underscore_js__["a" /* default */].prototype[name] = function() { + var obj = this._wrapped; + if (obj != null) { + method.apply(obj, arguments); + if ((name === 'shift' || name === 'splice') && obj.length === 0) { + delete obj[0]; + } + } + return Object(__WEBPACK_IMPORTED_MODULE_3__chainResult_js__["a" /* default */])(this, obj); + }; +}); + +// Add all accessor `Array` functions to the wrapper. +Object(__WEBPACK_IMPORTED_MODULE_1__each_js__["a" /* default */])(['concat', 'join', 'slice'], function(name) { + var method = __WEBPACK_IMPORTED_MODULE_2__setup_js__["a" /* ArrayProto */][name]; + __WEBPACK_IMPORTED_MODULE_0__underscore_js__["a" /* default */].prototype[name] = function() { + var obj = this._wrapped; + if (obj != null) obj = method.apply(obj, arguments); + return Object(__WEBPACK_IMPORTED_MODULE_3__chainResult_js__["a" /* default */])(this, obj); + }; +}); + +/* harmony default export */ __webpack_exports__["a"] = (__WEBPACK_IMPORTED_MODULE_0__underscore_js__["a" /* default */]); + + +/***/ }), +/* 351 */ +/***/ (function(module, exports, __webpack_require__) { + +var parent = __webpack_require__(352); + +module.exports = parent; + + +/***/ }), +/* 352 */ +/***/ (function(module, exports, __webpack_require__) { + +var isPrototypeOf = __webpack_require__(20); +var method = __webpack_require__(353); + +var ArrayPrototype = Array.prototype; + +module.exports = function (it) { + var own = it.concat; + return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.concat) ? method : own; +}; + + +/***/ }), +/* 353 */ +/***/ (function(module, exports, __webpack_require__) { + +__webpack_require__(210); +var entryVirtual = __webpack_require__(38); + +module.exports = entryVirtual('Array').concat; + + +/***/ }), +/* 354 */ +/***/ (function(module, exports) { + +var $TypeError = TypeError; +var MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; // 2 ** 53 - 1 == 9007199254740991 + +module.exports = function (it) { + if (it > MAX_SAFE_INTEGER) throw $TypeError('Maximum allowed index exceeded'); + return it; +}; + + +/***/ }), +/* 355 */ +/***/ (function(module, exports, __webpack_require__) { + +var isArray = __webpack_require__(80); +var isConstructor = __webpack_require__(93); +var isObject = __webpack_require__(17); +var wellKnownSymbol = __webpack_require__(8); + +var SPECIES = wellKnownSymbol('species'); +var $Array = Array; + +// a part of `ArraySpeciesCreate` abstract operation +// https://tc39.es/ecma262/#sec-arrayspeciescreate +module.exports = function (originalArray) { + var C; + if (isArray(originalArray)) { + C = originalArray.constructor; + // cross-realm fallback + if (isConstructor(C) && (C === $Array || isArray(C.prototype))) C = undefined; + else if (isObject(C)) { + C = C[SPECIES]; + if (C === null) C = undefined; + } + } return C === undefined ? $Array : C; +}; + + +/***/ }), +/* 356 */ +/***/ (function(module, exports, __webpack_require__) { + +var parent = __webpack_require__(357); + +module.exports = parent; + + +/***/ }), +/* 357 */ +/***/ (function(module, exports, __webpack_require__) { + +var isPrototypeOf = __webpack_require__(20); +var method = __webpack_require__(358); + +var ArrayPrototype = Array.prototype; + +module.exports = function (it) { + var own = it.map; + return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.map) ? method : own; +}; + + +/***/ }), +/* 358 */ +/***/ (function(module, exports, __webpack_require__) { + +__webpack_require__(359); +var entryVirtual = __webpack_require__(38); + +module.exports = entryVirtual('Array').map; + + +/***/ }), +/* 359 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var $ = __webpack_require__(0); +var $map = __webpack_require__(101).map; +var arrayMethodHasSpeciesSupport = __webpack_require__(100); + +var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map'); + +// `Array.prototype.map` method +// https://tc39.es/ecma262/#sec-array.prototype.map +// with adding support of @@species +$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, { + map: function map(callbackfn /* , thisArg */) { + return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); + } +}); + + +/***/ }), +/* 360 */ +/***/ (function(module, exports, __webpack_require__) { + +var parent = __webpack_require__(361); + +module.exports = parent; + + +/***/ }), +/* 361 */ +/***/ (function(module, exports, __webpack_require__) { + +__webpack_require__(362); +var path = __webpack_require__(13); + +module.exports = path.Object.keys; + + +/***/ }), +/* 362 */ +/***/ (function(module, exports, __webpack_require__) { + +var $ = __webpack_require__(0); +var toObject = __webpack_require__(35); +var nativeKeys = __webpack_require__(116); +var fails = __webpack_require__(4); + +var FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); }); + +// `Object.keys` method +// https://tc39.es/ecma262/#sec-object.keys +$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, { + keys: function keys(it) { + return nativeKeys(toObject(it)); + } +}); + + +/***/ }), +/* 363 */ +/***/ (function(module, exports, __webpack_require__) { + +var parent = __webpack_require__(364); + +module.exports = parent; + + +/***/ }), +/* 364 */ +/***/ (function(module, exports, __webpack_require__) { + +__webpack_require__(213); +var path = __webpack_require__(13); +var apply = __webpack_require__(62); + +// eslint-disable-next-line es-x/no-json -- safe +if (!path.JSON) path.JSON = { stringify: JSON.stringify }; + +// eslint-disable-next-line no-unused-vars -- required for `.length` +module.exports = function stringify(it, replacer, space) { + return apply(path.JSON.stringify, null, arguments); +}; + + +/***/ }), +/* 365 */ +/***/ (function(module, exports, __webpack_require__) { + +var parent = __webpack_require__(366); + +module.exports = parent; + + +/***/ }), +/* 366 */ +/***/ (function(module, exports, __webpack_require__) { + +var isPrototypeOf = __webpack_require__(20); +var method = __webpack_require__(367); + +var ArrayPrototype = Array.prototype; + +module.exports = function (it) { + var own = it.indexOf; + return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.indexOf) ? method : own; +}; + + +/***/ }), +/* 367 */ +/***/ (function(module, exports, __webpack_require__) { + +__webpack_require__(368); +var entryVirtual = __webpack_require__(38); + +module.exports = entryVirtual('Array').indexOf; + + +/***/ }), +/* 368 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +/* eslint-disable es-x/no-array-prototype-indexof -- required for testing */ +var $ = __webpack_require__(0); +var uncurryThis = __webpack_require__(6); +var $IndexOf = __webpack_require__(146).indexOf; +var arrayMethodIsStrict = __webpack_require__(369); + +var un$IndexOf = uncurryThis([].indexOf); + +var NEGATIVE_ZERO = !!un$IndexOf && 1 / un$IndexOf([1], 1, -0) < 0; +var STRICT_METHOD = arrayMethodIsStrict('indexOf'); + +// `Array.prototype.indexOf` method +// https://tc39.es/ecma262/#sec-array.prototype.indexof +$({ target: 'Array', proto: true, forced: NEGATIVE_ZERO || !STRICT_METHOD }, { + indexOf: function indexOf(searchElement /* , fromIndex = 0 */) { + var fromIndex = arguments.length > 1 ? arguments[1] : undefined; + return NEGATIVE_ZERO + // convert -0 to +0 + ? un$IndexOf(this, searchElement, fromIndex) || 0 + : $IndexOf(this, searchElement, fromIndex); + } +}); + + +/***/ }), +/* 369 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var fails = __webpack_require__(4); + +module.exports = function (METHOD_NAME, argument) { + var method = [][METHOD_NAME]; + return !!method && fails(function () { + // eslint-disable-next-line no-useless-call -- required for testing + method.call(null, argument || function () { return 1; }, 1); + }); +}; + + +/***/ }), +/* 370 */ +/***/ (function(module, exports, __webpack_require__) { + +__webpack_require__(73); +var classof = __webpack_require__(53); +var hasOwn = __webpack_require__(14); +var isPrototypeOf = __webpack_require__(20); +var method = __webpack_require__(371); + +var ArrayPrototype = Array.prototype; + +var DOMIterables = { + DOMTokenList: true, + NodeList: true +}; + +module.exports = function (it) { + var own = it.keys; + return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.keys) + || hasOwn(DOMIterables, classof(it)) ? method : own; +}; + + +/***/ }), +/* 371 */ +/***/ (function(module, exports, __webpack_require__) { + +var parent = __webpack_require__(372); + +module.exports = parent; + + +/***/ }), +/* 372 */ +/***/ (function(module, exports, __webpack_require__) { + +__webpack_require__(70); +__webpack_require__(92); +var entryVirtual = __webpack_require__(38); + +module.exports = entryVirtual('Array').keys; + + +/***/ }), +/* 373 */ +/***/ (function(module, exports) { + +// Unique ID creation requires a high quality random # generator. In the +// browser this is a little complicated due to unknown quality of Math.random() +// and inconsistent support for the `crypto` API. We do the best we can via +// feature-detection + +// getRandomValues needs to be invoked in a context where "this" is a Crypto +// implementation. Also, find the complete implementation of crypto on IE11. +var getRandomValues = (typeof(crypto) != 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto)) || + (typeof(msCrypto) != 'undefined' && typeof window.msCrypto.getRandomValues == 'function' && msCrypto.getRandomValues.bind(msCrypto)); + +if (getRandomValues) { + // WHATWG crypto RNG - http://wiki.whatwg.org/wiki/Crypto + var rnds8 = new Uint8Array(16); // eslint-disable-line no-undef + + module.exports = function whatwgRNG() { + getRandomValues(rnds8); + return rnds8; + }; +} else { + // Math.random()-based (RNG) + // + // If all else fails, use Math.random(). It's fast, but is of unspecified + // quality. + var rnds = new Array(16); + + module.exports = function mathRNG() { + for (var i = 0, r; i < 16; i++) { + if ((i & 0x03) === 0) r = Math.random() * 0x100000000; + rnds[i] = r >>> ((i & 0x03) << 3) & 0xff; + } + + return rnds; + }; +} + + +/***/ }), +/* 374 */ +/***/ (function(module, exports) { + +/** + * Convert array of 16 byte values to UUID string format of the form: + * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX + */ +var byteToHex = []; +for (var i = 0; i < 256; ++i) { + byteToHex[i] = (i + 0x100).toString(16).substr(1); +} + +function bytesToUuid(buf, offset) { + var i = offset || 0; + var bth = byteToHex; + // join used to fix memory issue caused by concatenation: https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4 + return ([bth[buf[i++]], bth[buf[i++]], + bth[buf[i++]], bth[buf[i++]], '-', + bth[buf[i++]], bth[buf[i++]], '-', + bth[buf[i++]], bth[buf[i++]], '-', + bth[buf[i++]], bth[buf[i++]], '-', + bth[buf[i++]], bth[buf[i++]], + bth[buf[i++]], bth[buf[i++]], + bth[buf[i++]], bth[buf[i++]]]).join(''); +} + +module.exports = bytesToUuid; + + +/***/ }), +/* 375 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +/** + * This is the common logic for both the Node.js and web browser + * implementations of `debug()`. + */ +function setup(env) { + createDebug.debug = createDebug; + createDebug.default = createDebug; + createDebug.coerce = coerce; + createDebug.disable = disable; + createDebug.enable = enable; + createDebug.enabled = enabled; + createDebug.humanize = __webpack_require__(376); + Object.keys(env).forEach(function (key) { + createDebug[key] = env[key]; + }); + /** + * Active `debug` instances. + */ + + createDebug.instances = []; + /** + * The currently active debug mode names, and names to skip. + */ + + createDebug.names = []; + createDebug.skips = []; + /** + * Map of special "%n" handling functions, for the debug "format" argument. + * + * Valid key names are a single, lower or upper-case letter, i.e. "n" and "N". + */ + + createDebug.formatters = {}; + /** + * Selects a color for a debug namespace + * @param {String} namespace The namespace string for the for the debug instance to be colored + * @return {Number|String} An ANSI color code for the given namespace + * @api private + */ + + function selectColor(namespace) { + var hash = 0; + + for (var i = 0; i < namespace.length; i++) { + hash = (hash << 5) - hash + namespace.charCodeAt(i); + hash |= 0; // Convert to 32bit integer + } + + return createDebug.colors[Math.abs(hash) % createDebug.colors.length]; + } + + createDebug.selectColor = selectColor; + /** + * Create a debugger with the given `namespace`. + * + * @param {String} namespace + * @return {Function} + * @api public + */ + + function createDebug(namespace) { + var prevTime; + + function debug() { + // Disabled? + if (!debug.enabled) { + return; + } + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + var self = debug; // Set `diff` timestamp + + var curr = Number(new Date()); + var ms = curr - (prevTime || curr); + self.diff = ms; + self.prev = prevTime; + self.curr = curr; + prevTime = curr; + args[0] = createDebug.coerce(args[0]); + + if (typeof args[0] !== 'string') { + // Anything else let's inspect with %O + args.unshift('%O'); + } // Apply any `formatters` transformations + + + var index = 0; + args[0] = args[0].replace(/%([a-zA-Z%])/g, function (match, format) { + // If we encounter an escaped % then don't increase the array index + if (match === '%%') { + return match; + } + + index++; + var formatter = createDebug.formatters[format]; + + if (typeof formatter === 'function') { + var val = args[index]; + match = formatter.call(self, val); // Now we need to remove `args[index]` since it's inlined in the `format` + + args.splice(index, 1); + index--; + } + + return match; + }); // Apply env-specific formatting (colors, etc.) + + createDebug.formatArgs.call(self, args); + var logFn = self.log || createDebug.log; + logFn.apply(self, args); + } + + debug.namespace = namespace; + debug.enabled = createDebug.enabled(namespace); + debug.useColors = createDebug.useColors(); + debug.color = selectColor(namespace); + debug.destroy = destroy; + debug.extend = extend; // Debug.formatArgs = formatArgs; + // debug.rawLog = rawLog; + // env-specific initialization logic for debug instances + + if (typeof createDebug.init === 'function') { + createDebug.init(debug); + } + + createDebug.instances.push(debug); + return debug; + } + + function destroy() { + var index = createDebug.instances.indexOf(this); + + if (index !== -1) { + createDebug.instances.splice(index, 1); + return true; + } + + return false; + } + + function extend(namespace, delimiter) { + return createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace); + } + /** + * Enables a debug mode by namespaces. This can include modes + * separated by a colon and wildcards. + * + * @param {String} namespaces + * @api public + */ + + + function enable(namespaces) { + createDebug.save(namespaces); + createDebug.names = []; + createDebug.skips = []; + var i; + var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\s,]+/); + var len = split.length; + + for (i = 0; i < len; i++) { + if (!split[i]) { + // ignore empty strings + continue; + } + + namespaces = split[i].replace(/\*/g, '.*?'); + + if (namespaces[0] === '-') { + createDebug.skips.push(new RegExp('^' + namespaces.substr(1) + '$')); + } else { + createDebug.names.push(new RegExp('^' + namespaces + '$')); + } + } + + for (i = 0; i < createDebug.instances.length; i++) { + var instance = createDebug.instances[i]; + instance.enabled = createDebug.enabled(instance.namespace); + } + } + /** + * Disable debug output. + * + * @api public + */ + + + function disable() { + createDebug.enable(''); + } + /** + * Returns true if the given mode name is enabled, false otherwise. + * + * @param {String} name + * @return {Boolean} + * @api public + */ + + + function enabled(name) { + if (name[name.length - 1] === '*') { + return true; + } + + var i; + var len; + + for (i = 0, len = createDebug.skips.length; i < len; i++) { + if (createDebug.skips[i].test(name)) { + return false; + } + } + + for (i = 0, len = createDebug.names.length; i < len; i++) { + if (createDebug.names[i].test(name)) { + return true; + } + } + + return false; + } + /** + * Coerce `val`. + * + * @param {Mixed} val + * @return {Mixed} + * @api private + */ + + + function coerce(val) { + if (val instanceof Error) { + return val.stack || val.message; + } + + return val; + } + + createDebug.enable(createDebug.load()); + return createDebug; +} + +module.exports = setup; + + + +/***/ }), +/* 376 */ +/***/ (function(module, exports) { + +/** + * Helpers. + */ + +var s = 1000; +var m = s * 60; +var h = m * 60; +var d = h * 24; +var w = d * 7; +var y = d * 365.25; + +/** + * Parse or format the given `val`. + * + * Options: + * + * - `long` verbose formatting [false] + * + * @param {String|Number} val + * @param {Object} [options] + * @throws {Error} throw an error if val is not a non-empty string or a number + * @return {String|Number} + * @api public + */ + +module.exports = function(val, options) { + options = options || {}; + var type = typeof val; + if (type === 'string' && val.length > 0) { + return parse(val); + } else if (type === 'number' && isFinite(val)) { + return options.long ? fmtLong(val) : fmtShort(val); + } + throw new Error( + 'val is not a non-empty string or a valid number. val=' + + JSON.stringify(val) + ); +}; + +/** + * Parse the given `str` and return milliseconds. + * + * @param {String} str + * @return {Number} + * @api private + */ + +function parse(str) { + str = String(str); + if (str.length > 100) { + return; + } + 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( + str + ); + if (!match) { + return; + } + var n = parseFloat(match[1]); + var type = (match[2] || 'ms').toLowerCase(); + switch (type) { + case 'years': + case 'year': + case 'yrs': + case 'yr': + case 'y': + return n * y; + case 'weeks': + case 'week': + case 'w': + return n * w; + case 'days': + case 'day': + case 'd': + return n * d; + case 'hours': + case 'hour': + case 'hrs': + case 'hr': + case 'h': + return n * h; + case 'minutes': + case 'minute': + case 'mins': + case 'min': + case 'm': + return n * m; + case 'seconds': + case 'second': + case 'secs': + case 'sec': + case 's': + return n * s; + case 'milliseconds': + case 'millisecond': + case 'msecs': + case 'msec': + case 'ms': + return n; + default: + return undefined; + } +} + +/** + * Short format for `ms`. + * + * @param {Number} ms + * @return {String} + * @api private + */ + +function fmtShort(ms) { + var msAbs = Math.abs(ms); + if (msAbs >= d) { + return Math.round(ms / d) + 'd'; + } + if (msAbs >= h) { + return Math.round(ms / h) + 'h'; + } + if (msAbs >= m) { + return Math.round(ms / m) + 'm'; + } + if (msAbs >= s) { + return Math.round(ms / s) + 's'; + } + return ms + 'ms'; +} + +/** + * Long format for `ms`. + * + * @param {Number} ms + * @return {String} + * @api private + */ + +function fmtLong(ms) { + var msAbs = Math.abs(ms); + if (msAbs >= d) { + return plural(ms, msAbs, d, 'day'); + } + if (msAbs >= h) { + return plural(ms, msAbs, h, 'hour'); + } + if (msAbs >= m) { + return plural(ms, msAbs, m, 'minute'); + } + if (msAbs >= s) { + return plural(ms, msAbs, s, 'second'); + } + return ms + ' ms'; +} + +/** + * Pluralization helper. + */ + +function plural(ms, msAbs, n, name) { + var isPlural = msAbs >= n * 1.5; + return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : ''); +} + + +/***/ }), +/* 377 */ +/***/ (function(module, exports, __webpack_require__) { + +__webpack_require__(378); +var path = __webpack_require__(13); + +module.exports = path.Object.getPrototypeOf; + + +/***/ }), +/* 378 */ +/***/ (function(module, exports, __webpack_require__) { + +var $ = __webpack_require__(0); +var fails = __webpack_require__(4); +var toObject = __webpack_require__(35); +var nativeGetPrototypeOf = __webpack_require__(86); +var CORRECT_PROTOTYPE_GETTER = __webpack_require__(144); + +var FAILS_ON_PRIMITIVES = fails(function () { nativeGetPrototypeOf(1); }); + +// `Object.getPrototypeOf` method +// https://tc39.es/ecma262/#sec-object.getprototypeof +$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !CORRECT_PROTOTYPE_GETTER }, { + getPrototypeOf: function getPrototypeOf(it) { + return nativeGetPrototypeOf(toObject(it)); + } +}); + + + +/***/ }), +/* 379 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__(221); + +/***/ }), +/* 380 */ +/***/ (function(module, exports, __webpack_require__) { + +__webpack_require__(381); +var path = __webpack_require__(13); + +module.exports = path.Object.setPrototypeOf; + + +/***/ }), +/* 381 */ +/***/ (function(module, exports, __webpack_require__) { + +var $ = __webpack_require__(0); +var setPrototypeOf = __webpack_require__(88); + +// `Object.setPrototypeOf` method +// https://tc39.es/ecma262/#sec-object.setprototypeof +$({ target: 'Object', stat: true }, { + setPrototypeOf: setPrototypeOf +}); + + +/***/ }), +/* 382 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(2); + +var _slice = _interopRequireDefault(__webpack_require__(81)); + +var _concat = _interopRequireDefault(__webpack_require__(29)); + +var _defineProperty = _interopRequireDefault(__webpack_require__(223)); + +var AV = __webpack_require__(59); + +var AppRouter = __webpack_require__(388); + +var _require = __webpack_require__(28), + isNullOrUndefined = _require.isNullOrUndefined; + +var _require2 = __webpack_require__(1), + extend = _require2.extend, + isObject = _require2.isObject, + isEmpty = _require2.isEmpty; + +var isCNApp = function isCNApp(appId) { + return (0, _slice.default)(appId).call(appId, -9) !== '-MdYXbMMI'; +}; + +var fillServerURLs = function fillServerURLs(url) { + return { + push: url, + stats: url, + engine: url, + api: url, + rtm: url + }; +}; + +function getDefaultServerURLs(appId) { + var _context, _context2, _context3, _context4, _context5; + + if (isCNApp(appId)) { + return {}; + } + + var id = (0, _slice.default)(appId).call(appId, 0, 8).toLowerCase(); + var domain = 'lncldglobal.com'; + return { + push: (0, _concat.default)(_context = "https://".concat(id, ".push.")).call(_context, domain), + stats: (0, _concat.default)(_context2 = "https://".concat(id, ".stats.")).call(_context2, domain), + engine: (0, _concat.default)(_context3 = "https://".concat(id, ".engine.")).call(_context3, domain), + api: (0, _concat.default)(_context4 = "https://".concat(id, ".api.")).call(_context4, domain), + rtm: (0, _concat.default)(_context5 = "https://".concat(id, ".rtm.")).call(_context5, domain) + }; +} + +var _disableAppRouter = false; +var _initialized = false; +/** + * URLs for services + * @typedef {Object} ServerURLs + * @property {String} [api] serverURL for API service + * @property {String} [engine] serverURL for engine service + * @property {String} [stats] serverURL for stats service + * @property {String} [push] serverURL for push service + * @property {String} [rtm] serverURL for LiveQuery service + */ + +/** + * Call this method first to set up your authentication tokens for AV. + * You can get your app keys from the LeanCloud dashboard on http://leancloud.cn . + * @function AV.init + * @param {Object} options + * @param {String} options.appId application id + * @param {String} options.appKey application key + * @param {String} [options.masterKey] application master key + * @param {Boolean} [options.production] + * @param {String|ServerURLs} [options.serverURL] URLs for services. if a string was given, it will be applied for all services. + * @param {Boolean} [options.disableCurrentUser] + */ + +AV.init = function init(options) { + if (!isObject(options)) { + return AV.init({ + appId: options, + appKey: arguments.length <= 1 ? undefined : arguments[1], + masterKey: arguments.length <= 2 ? undefined : arguments[2] + }); + } + + var appId = options.appId, + appKey = options.appKey, + masterKey = options.masterKey, + hookKey = options.hookKey, + serverURL = options.serverURL, + _options$serverURLs = options.serverURLs, + serverURLs = _options$serverURLs === void 0 ? serverURL : _options$serverURLs, + disableCurrentUser = options.disableCurrentUser, + production = options.production, + realtime = options.realtime; + if (_initialized) console.warn('Initializing LeanCloud Storage SDK which has already been initialized. Reinitializing the SDK might cause problems like unexpected cross-app data writing and invalid relations.'); + if (!appId) throw new TypeError('appId must be a string'); + if (!appKey) throw new TypeError('appKey must be a string'); + if (undefined !== 'NODE_JS' && masterKey) console.warn('MasterKey is not supposed to be used at client side.'); + + if (isCNApp(appId)) { + if (!serverURLs && isEmpty(AV._config.serverURLs)) { + throw new TypeError("serverURL option is required for apps from CN region"); + } + } + + if (appId !== AV._config.applicationId) { + // overwrite all keys when reinitializing as a new app + AV._config.masterKey = masterKey; + AV._config.hookKey = hookKey; + } else { + if (masterKey) AV._config.masterKey = masterKey; + if (hookKey) AV._config.hookKey = hookKey; + } + + AV._config.applicationId = appId; + AV._config.applicationKey = appKey; + + if (!isNullOrUndefined(production)) { + AV.setProduction(production); + } + + if (typeof disableCurrentUser !== 'undefined') AV._config.disableCurrentUser = disableCurrentUser; + var disableAppRouter = _disableAppRouter || typeof serverURLs !== 'undefined'; + + if (!disableAppRouter) { + AV._appRouter = new AppRouter(AV); + } + + AV._setServerURLs(extend({}, getDefaultServerURLs(appId), AV._config.serverURLs, typeof serverURLs === 'string' ? fillServerURLs(serverURLs) : serverURLs), disableAppRouter); + + if (realtime) { + AV._config.realtime = realtime; + } else if (AV._sharedConfig.liveQueryRealtime) { + var _AV$_config$serverURL = AV._config.serverURLs, + api = _AV$_config$serverURL.api, + rtm = _AV$_config$serverURL.rtm; + AV._config.realtime = new AV._sharedConfig.liveQueryRealtime({ + appId: appId, + appKey: appKey, + server: { + api: api, + RTMRouter: rtm + } + }); + } + + _initialized = true; +}; // If we're running in node.js, allow using the master key. + + +if (undefined === 'NODE_JS') { + AV.Cloud = AV.Cloud || {}; + /** + * Switches the LeanCloud SDK to using the Master key. The Master key grants + * priveleged access to the data in LeanCloud and can be used to bypass ACLs and + * other restrictions that are applied to the client SDKs. + *

    Available in Cloud Code and Node.js only. + *

    + */ + + AV.Cloud.useMasterKey = function () { + AV._config.useMasterKey = true; + }; +} +/** + * Call this method to set production environment variable. + * @function AV.setProduction + * @param {Boolean} production True is production environment,and + * it's true by default. + */ + + +AV.setProduction = function (production) { + if (!isNullOrUndefined(production)) { + AV._config.production = production ? 1 : 0; + } else { + // change to default value + AV._config.production = null; + } +}; + +AV._setServerURLs = function (urls) { + var disableAppRouter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + + if (typeof urls !== 'string') { + extend(AV._config.serverURLs, urls); + } else { + AV._config.serverURLs = fillServerURLs(urls); + } + + if (disableAppRouter) { + if (AV._appRouter) { + AV._appRouter.disable(); + } else { + _disableAppRouter = true; + } + } +}; +/** + * Set server URLs for services. + * @function AV.setServerURL + * @since 4.3.0 + * @param {String|ServerURLs} urls URLs for services. if a string was given, it will be applied for all services. + * You can also set them when initializing SDK with `options.serverURL` + */ + + +AV.setServerURL = function (urls) { + return AV._setServerURLs(urls); +}; + +AV.setServerURLs = AV.setServerURL; + +AV.keepErrorRawMessage = function (value) { + AV._sharedConfig.keepErrorRawMessage = value; +}; +/** + * Set a deadline for requests to complete. + * Note that file upload requests are not affected. + * @function AV.setRequestTimeout + * @since 3.6.0 + * @param {number} ms + */ + + +AV.setRequestTimeout = function (ms) { + AV._config.requestTimeout = ms; +}; // backword compatible + + +AV.initialize = AV.init; + +var defineConfig = function defineConfig(property) { + return (0, _defineProperty.default)(AV, property, { + get: function get() { + return AV._config[property]; + }, + set: function set(value) { + AV._config[property] = value; + } + }); +}; + +['applicationId', 'applicationKey', 'masterKey', 'hookKey'].forEach(defineConfig); + +/***/ }), +/* 383 */ +/***/ (function(module, exports, __webpack_require__) { + +var isPrototypeOf = __webpack_require__(20); +var method = __webpack_require__(384); + +var ArrayPrototype = Array.prototype; + +module.exports = function (it) { + var own = it.slice; + return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.slice) ? method : own; +}; + + +/***/ }), +/* 384 */ +/***/ (function(module, exports, __webpack_require__) { + +__webpack_require__(385); +var entryVirtual = __webpack_require__(38); + +module.exports = entryVirtual('Array').slice; + + +/***/ }), +/* 385 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var $ = __webpack_require__(0); +var isArray = __webpack_require__(80); +var isConstructor = __webpack_require__(93); +var isObject = __webpack_require__(17); +var toAbsoluteIndex = __webpack_require__(112); +var lengthOfArrayLike = __webpack_require__(42); +var toIndexedObject = __webpack_require__(33); +var createProperty = __webpack_require__(99); +var wellKnownSymbol = __webpack_require__(8); +var arrayMethodHasSpeciesSupport = __webpack_require__(100); +var un$Slice = __webpack_require__(94); + +var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice'); + +var SPECIES = wellKnownSymbol('species'); +var $Array = Array; +var max = Math.max; + +// `Array.prototype.slice` method +// https://tc39.es/ecma262/#sec-array.prototype.slice +// fallback for not array-like ES3 strings and DOM objects +$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, { + slice: function slice(start, end) { + var O = toIndexedObject(this); + var length = lengthOfArrayLike(O); + var k = toAbsoluteIndex(start, length); + var fin = toAbsoluteIndex(end === undefined ? length : end, length); + // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible + var Constructor, result, n; + if (isArray(O)) { + Constructor = O.constructor; + // cross-realm fallback + if (isConstructor(Constructor) && (Constructor === $Array || isArray(Constructor.prototype))) { + Constructor = undefined; + } else if (isObject(Constructor)) { + Constructor = Constructor[SPECIES]; + if (Constructor === null) Constructor = undefined; + } + if (Constructor === $Array || Constructor === undefined) { + return un$Slice(O, k, fin); + } + } + result = new (Constructor === undefined ? $Array : Constructor)(max(fin - k, 0)); + for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]); + result.length = n; + return result; + } +}); + + +/***/ }), +/* 386 */ +/***/ (function(module, exports, __webpack_require__) { + +__webpack_require__(387); +var path = __webpack_require__(13); + +var Object = path.Object; + +var defineProperty = module.exports = function defineProperty(it, key, desc) { + return Object.defineProperty(it, key, desc); +}; + +if (Object.defineProperty.sham) defineProperty.sham = true; + + +/***/ }), +/* 387 */ +/***/ (function(module, exports, __webpack_require__) { + +var $ = __webpack_require__(0); +var DESCRIPTORS = __webpack_require__(19); +var defineProperty = __webpack_require__(32).f; + +// `Object.defineProperty` method +// https://tc39.es/ecma262/#sec-object.defineproperty +// eslint-disable-next-line es-x/no-object-defineproperty -- safe +$({ target: 'Object', stat: true, forced: Object.defineProperty !== defineProperty, sham: !DESCRIPTORS }, { + defineProperty: defineProperty +}); + + +/***/ }), +/* 388 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var ajax = __webpack_require__(103); + +var Cache = __webpack_require__(220); + +function AppRouter(AV) { + var _this = this; + + this.AV = AV; + this.lockedUntil = 0; + Cache.getAsync('serverURLs').then(function (data) { + if (_this.disabled) return; + if (!data) return _this.lock(0); + var serverURLs = data.serverURLs, + lockedUntil = data.lockedUntil; + + _this.AV._setServerURLs(serverURLs, false); + + _this.lockedUntil = lockedUntil; + }).catch(function () { + return _this.lock(0); + }); +} + +AppRouter.prototype.disable = function disable() { + this.disabled = true; +}; + +AppRouter.prototype.lock = function lock(ttl) { + this.lockedUntil = Date.now() + ttl; +}; + +AppRouter.prototype.refresh = function refresh() { + var _this2 = this; + + if (this.disabled) return; + if (Date.now() < this.lockedUntil) return; + this.lock(10); + var url = 'https://app-router.com/2/route'; + return ajax({ + method: 'get', + url: url, + query: { + appId: this.AV.applicationId + } + }).then(function (servers) { + if (_this2.disabled) return; + var ttl = servers.ttl; + if (!ttl) throw new Error('missing ttl'); + ttl = ttl * 1000; + var protocal = 'https://'; + var serverURLs = { + push: protocal + servers.push_server, + stats: protocal + servers.stats_server, + engine: protocal + servers.engine_server, + api: protocal + servers.api_server + }; + + _this2.AV._setServerURLs(serverURLs, false); + + _this2.lock(ttl); + + return Cache.setAsync('serverURLs', { + serverURLs: serverURLs, + lockedUntil: _this2.lockedUntil + }, ttl); + }).catch(function (error) { + // bypass all errors + console.warn("refresh server URLs failed: ".concat(error.message)); + + _this2.lock(600); + }); +}; + +module.exports = AppRouter; + +/***/ }), +/* 389 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__(390); + + +/***/ }), +/* 390 */ +/***/ (function(module, exports, __webpack_require__) { + +var parent = __webpack_require__(391); +__webpack_require__(416); +__webpack_require__(417); +__webpack_require__(418); +__webpack_require__(419); +__webpack_require__(420); +// TODO: Remove from `core-js@4` +__webpack_require__(421); +__webpack_require__(422); +__webpack_require__(423); + +module.exports = parent; + + +/***/ }), +/* 391 */ +/***/ (function(module, exports, __webpack_require__) { + +var parent = __webpack_require__(226); + +module.exports = parent; + + +/***/ }), +/* 392 */ +/***/ (function(module, exports, __webpack_require__) { + +__webpack_require__(210); +__webpack_require__(92); +__webpack_require__(393); +__webpack_require__(400); +__webpack_require__(401); +__webpack_require__(402); +__webpack_require__(403); +__webpack_require__(229); +__webpack_require__(404); +__webpack_require__(405); +__webpack_require__(406); +__webpack_require__(407); +__webpack_require__(408); +__webpack_require__(409); +__webpack_require__(410); +__webpack_require__(411); +__webpack_require__(412); +__webpack_require__(413); +__webpack_require__(414); +__webpack_require__(415); +var path = __webpack_require__(13); + +module.exports = path.Symbol; + + +/***/ }), +/* 393 */ +/***/ (function(module, exports, __webpack_require__) { + +// TODO: Remove this module from `core-js@4` since it's split to modules listed below +__webpack_require__(394); +__webpack_require__(397); +__webpack_require__(398); +__webpack_require__(213); +__webpack_require__(399); + + +/***/ }), +/* 394 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var $ = __webpack_require__(0); +var global = __webpack_require__(9); +var call = __webpack_require__(11); +var uncurryThis = __webpack_require__(6); +var IS_PURE = __webpack_require__(31); +var DESCRIPTORS = __webpack_require__(19); +var NATIVE_SYMBOL = __webpack_require__(49); +var fails = __webpack_require__(4); +var hasOwn = __webpack_require__(14); +var isPrototypeOf = __webpack_require__(20); +var anObject = __webpack_require__(21); +var toIndexedObject = __webpack_require__(33); +var toPropertyKey = __webpack_require__(82); +var $toString = __webpack_require__(69); +var createPropertyDescriptor = __webpack_require__(41); +var nativeObjectCreate = __webpack_require__(51); +var objectKeys = __webpack_require__(116); +var getOwnPropertyNamesModule = __webpack_require__(111); +var getOwnPropertyNamesExternal = __webpack_require__(395); +var getOwnPropertySymbolsModule = __webpack_require__(115); +var getOwnPropertyDescriptorModule = __webpack_require__(64); +var definePropertyModule = __webpack_require__(32); +var definePropertiesModule = __webpack_require__(147); +var propertyIsEnumerableModule = __webpack_require__(138); +var defineBuiltIn = __webpack_require__(43); +var shared = __webpack_require__(67); +var sharedKey = __webpack_require__(87); +var hiddenKeys = __webpack_require__(89); +var uid = __webpack_require__(109); +var wellKnownSymbol = __webpack_require__(8); +var wrappedWellKnownSymbolModule = __webpack_require__(136); +var defineWellKnownSymbol = __webpack_require__(5); +var defineSymbolToPrimitive = __webpack_require__(227); +var setToStringTag = __webpack_require__(54); +var InternalStateModule = __webpack_require__(91); +var $forEach = __webpack_require__(101).forEach; + +var HIDDEN = sharedKey('hidden'); +var SYMBOL = 'Symbol'; +var PROTOTYPE = 'prototype'; + +var setInternalState = InternalStateModule.set; +var getInternalState = InternalStateModule.getterFor(SYMBOL); + +var ObjectPrototype = Object[PROTOTYPE]; +var $Symbol = global.Symbol; +var SymbolPrototype = $Symbol && $Symbol[PROTOTYPE]; +var TypeError = global.TypeError; +var QObject = global.QObject; +var nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f; +var nativeDefineProperty = definePropertyModule.f; +var nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f; +var nativePropertyIsEnumerable = propertyIsEnumerableModule.f; +var push = uncurryThis([].push); + +var AllSymbols = shared('symbols'); +var ObjectPrototypeSymbols = shared('op-symbols'); +var WellKnownSymbolsStore = shared('wks'); + +// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173 +var USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild; + +// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687 +var setSymbolDescriptor = DESCRIPTORS && fails(function () { + return nativeObjectCreate(nativeDefineProperty({}, 'a', { + get: function () { return nativeDefineProperty(this, 'a', { value: 7 }).a; } + })).a != 7; +}) ? function (O, P, Attributes) { + var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P); + if (ObjectPrototypeDescriptor) delete ObjectPrototype[P]; + nativeDefineProperty(O, P, Attributes); + if (ObjectPrototypeDescriptor && O !== ObjectPrototype) { + nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor); + } +} : nativeDefineProperty; + +var wrap = function (tag, description) { + var symbol = AllSymbols[tag] = nativeObjectCreate(SymbolPrototype); + setInternalState(symbol, { + type: SYMBOL, + tag: tag, + description: description + }); + if (!DESCRIPTORS) symbol.description = description; + return symbol; +}; + +var $defineProperty = function defineProperty(O, P, Attributes) { + if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes); + anObject(O); + var key = toPropertyKey(P); + anObject(Attributes); + if (hasOwn(AllSymbols, key)) { + if (!Attributes.enumerable) { + if (!hasOwn(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, {})); + O[HIDDEN][key] = true; + } else { + if (hasOwn(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false; + Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) }); + } return setSymbolDescriptor(O, key, Attributes); + } return nativeDefineProperty(O, key, Attributes); +}; + +var $defineProperties = function defineProperties(O, Properties) { + anObject(O); + var properties = toIndexedObject(Properties); + var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties)); + $forEach(keys, function (key) { + if (!DESCRIPTORS || call($propertyIsEnumerable, properties, key)) $defineProperty(O, key, properties[key]); + }); + return O; +}; + +var $create = function create(O, Properties) { + return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties); +}; + +var $propertyIsEnumerable = function propertyIsEnumerable(V) { + var P = toPropertyKey(V); + var enumerable = call(nativePropertyIsEnumerable, this, P); + if (this === ObjectPrototype && hasOwn(AllSymbols, P) && !hasOwn(ObjectPrototypeSymbols, P)) return false; + return enumerable || !hasOwn(this, P) || !hasOwn(AllSymbols, P) || hasOwn(this, HIDDEN) && this[HIDDEN][P] + ? enumerable : true; +}; + +var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) { + var it = toIndexedObject(O); + var key = toPropertyKey(P); + if (it === ObjectPrototype && hasOwn(AllSymbols, key) && !hasOwn(ObjectPrototypeSymbols, key)) return; + var descriptor = nativeGetOwnPropertyDescriptor(it, key); + if (descriptor && hasOwn(AllSymbols, key) && !(hasOwn(it, HIDDEN) && it[HIDDEN][key])) { + descriptor.enumerable = true; + } + return descriptor; +}; + +var $getOwnPropertyNames = function getOwnPropertyNames(O) { + var names = nativeGetOwnPropertyNames(toIndexedObject(O)); + var result = []; + $forEach(names, function (key) { + if (!hasOwn(AllSymbols, key) && !hasOwn(hiddenKeys, key)) push(result, key); + }); + return result; +}; + +var $getOwnPropertySymbols = function (O) { + var IS_OBJECT_PROTOTYPE = O === ObjectPrototype; + var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O)); + var result = []; + $forEach(names, function (key) { + if (hasOwn(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || hasOwn(ObjectPrototype, key))) { + push(result, AllSymbols[key]); + } + }); + return result; +}; + +// `Symbol` constructor +// https://tc39.es/ecma262/#sec-symbol-constructor +if (!NATIVE_SYMBOL) { + $Symbol = function Symbol() { + if (isPrototypeOf(SymbolPrototype, this)) throw TypeError('Symbol is not a constructor'); + var description = !arguments.length || arguments[0] === undefined ? undefined : $toString(arguments[0]); + var tag = uid(description); + var setter = function (value) { + if (this === ObjectPrototype) call(setter, ObjectPrototypeSymbols, value); + if (hasOwn(this, HIDDEN) && hasOwn(this[HIDDEN], tag)) this[HIDDEN][tag] = false; + setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value)); + }; + if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter }); + return wrap(tag, description); + }; + + SymbolPrototype = $Symbol[PROTOTYPE]; + + defineBuiltIn(SymbolPrototype, 'toString', function toString() { + return getInternalState(this).tag; + }); + + defineBuiltIn($Symbol, 'withoutSetter', function (description) { + return wrap(uid(description), description); + }); + + propertyIsEnumerableModule.f = $propertyIsEnumerable; + definePropertyModule.f = $defineProperty; + definePropertiesModule.f = $defineProperties; + getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor; + getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames; + getOwnPropertySymbolsModule.f = $getOwnPropertySymbols; + + wrappedWellKnownSymbolModule.f = function (name) { + return wrap(wellKnownSymbol(name), name); + }; + + if (DESCRIPTORS) { + // https://github.com/tc39/proposal-Symbol-description + nativeDefineProperty(SymbolPrototype, 'description', { + configurable: true, + get: function description() { + return getInternalState(this).description; + } + }); + if (!IS_PURE) { + defineBuiltIn(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true }); + } + } +} + +$({ global: true, constructor: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, { + Symbol: $Symbol +}); + +$forEach(objectKeys(WellKnownSymbolsStore), function (name) { + defineWellKnownSymbol(name); +}); + +$({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, { + useSetter: function () { USE_SETTER = true; }, + useSimple: function () { USE_SETTER = false; } +}); + +$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, { + // `Object.create` method + // https://tc39.es/ecma262/#sec-object.create + create: $create, + // `Object.defineProperty` method + // https://tc39.es/ecma262/#sec-object.defineproperty + defineProperty: $defineProperty, + // `Object.defineProperties` method + // https://tc39.es/ecma262/#sec-object.defineproperties + defineProperties: $defineProperties, + // `Object.getOwnPropertyDescriptor` method + // https://tc39.es/ecma262/#sec-object.getownpropertydescriptors + getOwnPropertyDescriptor: $getOwnPropertyDescriptor +}); + +$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, { + // `Object.getOwnPropertyNames` method + // https://tc39.es/ecma262/#sec-object.getownpropertynames + getOwnPropertyNames: $getOwnPropertyNames +}); + +// `Symbol.prototype[@@toPrimitive]` method +// https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive +defineSymbolToPrimitive(); + +// `Symbol.prototype[@@toStringTag]` property +// https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag +setToStringTag($Symbol, SYMBOL); + +hiddenKeys[HIDDEN] = true; + + +/***/ }), +/* 395 */ +/***/ (function(module, exports, __webpack_require__) { + +/* eslint-disable es-x/no-object-getownpropertynames -- safe */ +var classof = __webpack_require__(65); +var toIndexedObject = __webpack_require__(33); +var $getOwnPropertyNames = __webpack_require__(111).f; +var arraySlice = __webpack_require__(396); + +var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames + ? Object.getOwnPropertyNames(window) : []; + +var getWindowNames = function (it) { + try { + return $getOwnPropertyNames(it); + } catch (error) { + return arraySlice(windowNames); + } +}; + +// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window +module.exports.f = function getOwnPropertyNames(it) { + return windowNames && classof(it) == 'Window' + ? getWindowNames(it) + : $getOwnPropertyNames(toIndexedObject(it)); +}; + + +/***/ }), +/* 396 */ +/***/ (function(module, exports, __webpack_require__) { + +var toAbsoluteIndex = __webpack_require__(112); +var lengthOfArrayLike = __webpack_require__(42); +var createProperty = __webpack_require__(99); + +var $Array = Array; +var max = Math.max; + +module.exports = function (O, start, end) { + var length = lengthOfArrayLike(O); + var k = toAbsoluteIndex(start, length); + var fin = toAbsoluteIndex(end === undefined ? length : end, length); + var result = $Array(max(fin - k, 0)); + for (var n = 0; k < fin; k++, n++) createProperty(result, n, O[k]); + result.length = n; + return result; +}; + + +/***/ }), +/* 397 */ +/***/ (function(module, exports, __webpack_require__) { + +var $ = __webpack_require__(0); +var getBuiltIn = __webpack_require__(16); +var hasOwn = __webpack_require__(14); +var toString = __webpack_require__(69); +var shared = __webpack_require__(67); +var NATIVE_SYMBOL_REGISTRY = __webpack_require__(228); + +var StringToSymbolRegistry = shared('string-to-symbol-registry'); +var SymbolToStringRegistry = shared('symbol-to-string-registry'); + +// `Symbol.for` method +// https://tc39.es/ecma262/#sec-symbol.for +$({ target: 'Symbol', stat: true, forced: !NATIVE_SYMBOL_REGISTRY }, { + 'for': function (key) { + var string = toString(key); + if (hasOwn(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string]; + var symbol = getBuiltIn('Symbol')(string); + StringToSymbolRegistry[string] = symbol; + SymbolToStringRegistry[symbol] = string; + return symbol; + } +}); + + +/***/ }), +/* 398 */ +/***/ (function(module, exports, __webpack_require__) { + +var $ = __webpack_require__(0); +var hasOwn = __webpack_require__(14); +var isSymbol = __webpack_require__(83); +var tryToString = __webpack_require__(66); +var shared = __webpack_require__(67); +var NATIVE_SYMBOL_REGISTRY = __webpack_require__(228); + +var SymbolToStringRegistry = shared('symbol-to-string-registry'); + +// `Symbol.keyFor` method +// https://tc39.es/ecma262/#sec-symbol.keyfor +$({ target: 'Symbol', stat: true, forced: !NATIVE_SYMBOL_REGISTRY }, { + keyFor: function keyFor(sym) { + if (!isSymbol(sym)) throw TypeError(tryToString(sym) + ' is not a symbol'); + if (hasOwn(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym]; + } +}); + + +/***/ }), +/* 399 */ +/***/ (function(module, exports, __webpack_require__) { + +var $ = __webpack_require__(0); +var NATIVE_SYMBOL = __webpack_require__(49); +var fails = __webpack_require__(4); +var getOwnPropertySymbolsModule = __webpack_require__(115); +var toObject = __webpack_require__(35); + +// V8 ~ Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives +// https://bugs.chromium.org/p/v8/issues/detail?id=3443 +var FORCED = !NATIVE_SYMBOL || fails(function () { getOwnPropertySymbolsModule.f(1); }); + +// `Object.getOwnPropertySymbols` method +// https://tc39.es/ecma262/#sec-object.getownpropertysymbols +$({ target: 'Object', stat: true, forced: FORCED }, { + getOwnPropertySymbols: function getOwnPropertySymbols(it) { + var $getOwnPropertySymbols = getOwnPropertySymbolsModule.f; + return $getOwnPropertySymbols ? $getOwnPropertySymbols(toObject(it)) : []; + } +}); + + +/***/ }), +/* 400 */ +/***/ (function(module, exports, __webpack_require__) { + +var defineWellKnownSymbol = __webpack_require__(5); + +// `Symbol.asyncIterator` well-known symbol +// https://tc39.es/ecma262/#sec-symbol.asynciterator +defineWellKnownSymbol('asyncIterator'); + + +/***/ }), +/* 401 */ +/***/ (function(module, exports) { + +// empty + + +/***/ }), +/* 402 */ +/***/ (function(module, exports, __webpack_require__) { + +var defineWellKnownSymbol = __webpack_require__(5); + +// `Symbol.hasInstance` well-known symbol +// https://tc39.es/ecma262/#sec-symbol.hasinstance +defineWellKnownSymbol('hasInstance'); + + +/***/ }), +/* 403 */ +/***/ (function(module, exports, __webpack_require__) { + +var defineWellKnownSymbol = __webpack_require__(5); + +// `Symbol.isConcatSpreadable` well-known symbol +// https://tc39.es/ecma262/#sec-symbol.isconcatspreadable +defineWellKnownSymbol('isConcatSpreadable'); + + +/***/ }), +/* 404 */ +/***/ (function(module, exports, __webpack_require__) { + +var defineWellKnownSymbol = __webpack_require__(5); + +// `Symbol.match` well-known symbol +// https://tc39.es/ecma262/#sec-symbol.match +defineWellKnownSymbol('match'); + + +/***/ }), +/* 405 */ +/***/ (function(module, exports, __webpack_require__) { + +var defineWellKnownSymbol = __webpack_require__(5); + +// `Symbol.matchAll` well-known symbol +// https://tc39.es/ecma262/#sec-symbol.matchall +defineWellKnownSymbol('matchAll'); + + +/***/ }), +/* 406 */ +/***/ (function(module, exports, __webpack_require__) { + +var defineWellKnownSymbol = __webpack_require__(5); + +// `Symbol.replace` well-known symbol +// https://tc39.es/ecma262/#sec-symbol.replace +defineWellKnownSymbol('replace'); + + +/***/ }), +/* 407 */ +/***/ (function(module, exports, __webpack_require__) { + +var defineWellKnownSymbol = __webpack_require__(5); + +// `Symbol.search` well-known symbol +// https://tc39.es/ecma262/#sec-symbol.search +defineWellKnownSymbol('search'); + + +/***/ }), +/* 408 */ +/***/ (function(module, exports, __webpack_require__) { + +var defineWellKnownSymbol = __webpack_require__(5); + +// `Symbol.species` well-known symbol +// https://tc39.es/ecma262/#sec-symbol.species +defineWellKnownSymbol('species'); + + +/***/ }), +/* 409 */ +/***/ (function(module, exports, __webpack_require__) { + +var defineWellKnownSymbol = __webpack_require__(5); + +// `Symbol.split` well-known symbol +// https://tc39.es/ecma262/#sec-symbol.split +defineWellKnownSymbol('split'); + + +/***/ }), +/* 410 */ +/***/ (function(module, exports, __webpack_require__) { + +var defineWellKnownSymbol = __webpack_require__(5); +var defineSymbolToPrimitive = __webpack_require__(227); + +// `Symbol.toPrimitive` well-known symbol +// https://tc39.es/ecma262/#sec-symbol.toprimitive +defineWellKnownSymbol('toPrimitive'); + +// `Symbol.prototype[@@toPrimitive]` method +// https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive +defineSymbolToPrimitive(); + + +/***/ }), +/* 411 */ +/***/ (function(module, exports, __webpack_require__) { + +var getBuiltIn = __webpack_require__(16); +var defineWellKnownSymbol = __webpack_require__(5); +var setToStringTag = __webpack_require__(54); + +// `Symbol.toStringTag` well-known symbol +// https://tc39.es/ecma262/#sec-symbol.tostringtag +defineWellKnownSymbol('toStringTag'); + +// `Symbol.prototype[@@toStringTag]` property +// https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag +setToStringTag(getBuiltIn('Symbol'), 'Symbol'); + + +/***/ }), +/* 412 */ +/***/ (function(module, exports, __webpack_require__) { + +var defineWellKnownSymbol = __webpack_require__(5); + +// `Symbol.unscopables` well-known symbol +// https://tc39.es/ecma262/#sec-symbol.unscopables +defineWellKnownSymbol('unscopables'); + + +/***/ }), +/* 413 */ +/***/ (function(module, exports, __webpack_require__) { + +var global = __webpack_require__(9); +var setToStringTag = __webpack_require__(54); + +// JSON[@@toStringTag] property +// https://tc39.es/ecma262/#sec-json-@@tostringtag +setToStringTag(global.JSON, 'JSON', true); + + +/***/ }), +/* 414 */ +/***/ (function(module, exports) { + +// empty + + +/***/ }), +/* 415 */ +/***/ (function(module, exports) { + +// empty + + +/***/ }), +/* 416 */ +/***/ (function(module, exports, __webpack_require__) { + +var defineWellKnownSymbol = __webpack_require__(5); + +// `Symbol.asyncDispose` well-known symbol +// https://github.com/tc39/proposal-using-statement +defineWellKnownSymbol('asyncDispose'); + + +/***/ }), +/* 417 */ +/***/ (function(module, exports, __webpack_require__) { + +var defineWellKnownSymbol = __webpack_require__(5); + +// `Symbol.dispose` well-known symbol +// https://github.com/tc39/proposal-using-statement +defineWellKnownSymbol('dispose'); + + +/***/ }), +/* 418 */ +/***/ (function(module, exports, __webpack_require__) { + +var defineWellKnownSymbol = __webpack_require__(5); + +// `Symbol.matcher` well-known symbol +// https://github.com/tc39/proposal-pattern-matching +defineWellKnownSymbol('matcher'); + + +/***/ }), +/* 419 */ +/***/ (function(module, exports, __webpack_require__) { + +var defineWellKnownSymbol = __webpack_require__(5); + +// `Symbol.metadataKey` well-known symbol +// https://github.com/tc39/proposal-decorator-metadata +defineWellKnownSymbol('metadataKey'); + + +/***/ }), +/* 420 */ +/***/ (function(module, exports, __webpack_require__) { + +var defineWellKnownSymbol = __webpack_require__(5); + +// `Symbol.observable` well-known symbol +// https://github.com/tc39/proposal-observable +defineWellKnownSymbol('observable'); + + +/***/ }), +/* 421 */ +/***/ (function(module, exports, __webpack_require__) { + +// TODO: Remove from `core-js@4` +var defineWellKnownSymbol = __webpack_require__(5); + +// `Symbol.metadata` well-known symbol +// https://github.com/tc39/proposal-decorators +defineWellKnownSymbol('metadata'); + + +/***/ }), +/* 422 */ +/***/ (function(module, exports, __webpack_require__) { + +// TODO: remove from `core-js@4` +var defineWellKnownSymbol = __webpack_require__(5); + +// `Symbol.patternMatch` well-known symbol +// https://github.com/tc39/proposal-pattern-matching +defineWellKnownSymbol('patternMatch'); + + +/***/ }), +/* 423 */ +/***/ (function(module, exports, __webpack_require__) { + +// TODO: remove from `core-js@4` +var defineWellKnownSymbol = __webpack_require__(5); + +defineWellKnownSymbol('replaceAll'); + + +/***/ }), +/* 424 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__(425); + +/***/ }), +/* 425 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__(426); + + +/***/ }), +/* 426 */ +/***/ (function(module, exports, __webpack_require__) { + +var parent = __webpack_require__(427); + +module.exports = parent; + + +/***/ }), +/* 427 */ +/***/ (function(module, exports, __webpack_require__) { + +var parent = __webpack_require__(428); + +module.exports = parent; + + +/***/ }), +/* 428 */ +/***/ (function(module, exports, __webpack_require__) { + +var parent = __webpack_require__(429); +__webpack_require__(73); + +module.exports = parent; + + +/***/ }), +/* 429 */ +/***/ (function(module, exports, __webpack_require__) { + +__webpack_require__(70); +__webpack_require__(92); +__webpack_require__(95); +__webpack_require__(229); +var WrappedWellKnownSymbolModule = __webpack_require__(136); + +module.exports = WrappedWellKnownSymbolModule.f('iterator'); + + +/***/ }), +/* 430 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__(431); + +/***/ }), +/* 431 */ +/***/ (function(module, exports, __webpack_require__) { + +var parent = __webpack_require__(432); + +module.exports = parent; + + +/***/ }), +/* 432 */ +/***/ (function(module, exports, __webpack_require__) { + +var isPrototypeOf = __webpack_require__(20); +var method = __webpack_require__(433); + +var ArrayPrototype = Array.prototype; + +module.exports = function (it) { + var own = it.filter; + return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.filter) ? method : own; +}; + + +/***/ }), +/* 433 */ +/***/ (function(module, exports, __webpack_require__) { + +__webpack_require__(434); +var entryVirtual = __webpack_require__(38); + +module.exports = entryVirtual('Array').filter; + + +/***/ }), +/* 434 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var $ = __webpack_require__(0); +var $filter = __webpack_require__(101).filter; +var arrayMethodHasSpeciesSupport = __webpack_require__(100); + +var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter'); + +// `Array.prototype.filter` method +// https://tc39.es/ecma262/#sec-array.prototype.filter +// with adding support of @@species +$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, { + filter: function filter(callbackfn /* , thisArg */) { + return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); + } +}); + + +/***/ }), +/* 435 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +// Copyright (c) 2015-2017 David M. Lee, II + + +/** + * Local reference to TimeoutError + * @private + */ +var TimeoutError; + +/** + * Rejects a promise with a {@link TimeoutError} if it does not settle within + * the specified timeout. + * + * @param {Promise} promise The promise. + * @param {number} timeoutMillis Number of milliseconds to wait on settling. + * @returns {Promise} Either resolves/rejects with `promise`, or rejects with + * `TimeoutError`, whichever settles first. + */ +var timeout = module.exports.timeout = function(promise, timeoutMillis) { + var error = new TimeoutError(), + timeout; + + return Promise.race([ + promise, + new Promise(function(resolve, reject) { + timeout = setTimeout(function() { + reject(error); + }, timeoutMillis); + }), + ]).then(function(v) { + clearTimeout(timeout); + return v; + }, function(err) { + clearTimeout(timeout); + throw err; + }); +}; + +/** + * Exception indicating that the timeout expired. + */ +TimeoutError = module.exports.TimeoutError = function() { + Error.call(this) + this.stack = Error().stack + this.message = 'Timeout'; +}; + +TimeoutError.prototype = Object.create(Error.prototype); +TimeoutError.prototype.name = "TimeoutError"; + + +/***/ }), +/* 436 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(2); + +var _slice = _interopRequireDefault(__webpack_require__(81)); + +var _keys = _interopRequireDefault(__webpack_require__(48)); + +var _concat = _interopRequireDefault(__webpack_require__(29)); + +var _ = __webpack_require__(1); + +module.exports = function (AV) { + var eventSplitter = /\s+/; + var slice = (0, _slice.default)(Array.prototype); + /** + * @class + * + *

    AV.Events is a fork of Backbone's Events module, provided for your + * convenience.

    + * + *

    A module that can be mixed in to any object in order to provide + * it with custom events. You may bind callback functions to an event + * with `on`, or remove these functions with `off`. + * Triggering an event fires all callbacks in the order that `on` was + * called. + * + * @private + * @example + * var object = {}; + * _.extend(object, AV.Events); + * object.on('expand', function(){ alert('expanded'); }); + * object.trigger('expand');

    + * + */ + + AV.Events = { + /** + * Bind one or more space separated events, `events`, to a `callback` + * function. Passing `"all"` will bind the callback to all events fired. + */ + on: function on(events, callback, context) { + var calls, event, node, tail, list; + + if (!callback) { + return this; + } + + events = events.split(eventSplitter); + calls = this._callbacks || (this._callbacks = {}); // Create an immutable callback list, allowing traversal during + // modification. The tail is an empty object that will always be used + // as the next node. + + event = events.shift(); + + while (event) { + list = calls[event]; + node = list ? list.tail : {}; + node.next = tail = {}; + node.context = context; + node.callback = callback; + calls[event] = { + tail: tail, + next: list ? list.next : node + }; + event = events.shift(); + } + + return this; + }, + + /** + * Remove one or many callbacks. If `context` is null, removes all callbacks + * with that function. If `callback` is null, removes all callbacks for the + * event. If `events` is null, removes all bound callbacks for all events. + */ + off: function off(events, callback, context) { + var event, calls, node, tail, cb, ctx; // No events, or removing *all* events. + + if (!(calls = this._callbacks)) { + return; + } + + if (!(events || callback || context)) { + delete this._callbacks; + return this; + } // Loop through the listed events and contexts, splicing them out of the + // linked list of callbacks if appropriate. + + + events = events ? events.split(eventSplitter) : (0, _keys.default)(_).call(_, calls); + event = events.shift(); + + while (event) { + node = calls[event]; + delete calls[event]; + + if (!node || !(callback || context)) { + continue; + } // Create a new list, omitting the indicated callbacks. + + + tail = node.tail; + node = node.next; + + while (node !== tail) { + cb = node.callback; + ctx = node.context; + + if (callback && cb !== callback || context && ctx !== context) { + this.on(event, cb, ctx); + } + + node = node.next; + } + + event = events.shift(); + } + + return this; + }, + + /** + * Trigger one or many events, firing all bound callbacks. Callbacks are + * passed the same arguments as `trigger` is, apart from the event name + * (unless you're listening on `"all"`, which will cause your callback to + * receive the true name of the event as the first argument). + */ + trigger: function trigger(events) { + var event, node, calls, tail, args, all, rest; + + if (!(calls = this._callbacks)) { + return this; + } + + all = calls.all; + events = events.split(eventSplitter); + rest = slice.call(arguments, 1); // For each event, walk through the linked list of callbacks twice, + // first to trigger the event, then to trigger any `"all"` callbacks. + + event = events.shift(); + + while (event) { + node = calls[event]; + + if (node) { + tail = node.tail; + + while ((node = node.next) !== tail) { + node.callback.apply(node.context || this, rest); + } + } + + node = all; + + if (node) { + var _context; + + tail = node.tail; + args = (0, _concat.default)(_context = [event]).call(_context, rest); + + while ((node = node.next) !== tail) { + node.callback.apply(node.context || this, args); + } + } + + event = events.shift(); + } + + return this; + } + }; + /** + * @function + */ + + AV.Events.bind = AV.Events.on; + /** + * @function + */ + + AV.Events.unbind = AV.Events.off; +}; + +/***/ }), +/* 437 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(2); + +var _promise = _interopRequireDefault(__webpack_require__(10)); + +var _ = __webpack_require__(1); +/*global navigator: false */ + + +module.exports = function (AV) { + /** + * Creates a new GeoPoint with any of the following forms:
    + * @example + * new GeoPoint(otherGeoPoint) + * new GeoPoint(30, 30) + * new GeoPoint([30, 30]) + * new GeoPoint({latitude: 30, longitude: 30}) + * new GeoPoint() // defaults to (0, 0) + * @class + * + *

    Represents a latitude / longitude point that may be associated + * with a key in a AVObject or used as a reference point for geo queries. + * This allows proximity-based queries on the key.

    + * + *

    Only one key in a class may contain a GeoPoint.

    + * + *

    Example:

    +   *   var point = new AV.GeoPoint(30.0, -20.0);
    +   *   var object = new AV.Object("PlaceObject");
    +   *   object.set("location", point);
    +   *   object.save();

    + */ + AV.GeoPoint = function (arg1, arg2) { + if (_.isArray(arg1)) { + AV.GeoPoint._validate(arg1[0], arg1[1]); + + this.latitude = arg1[0]; + this.longitude = arg1[1]; + } else if (_.isObject(arg1)) { + AV.GeoPoint._validate(arg1.latitude, arg1.longitude); + + this.latitude = arg1.latitude; + this.longitude = arg1.longitude; + } else if (_.isNumber(arg1) && _.isNumber(arg2)) { + AV.GeoPoint._validate(arg1, arg2); + + this.latitude = arg1; + this.longitude = arg2; + } else { + this.latitude = 0; + this.longitude = 0; + } // Add properties so that anyone using Webkit or Mozilla will get an error + // if they try to set values that are out of bounds. + + + var self = this; + + if (this.__defineGetter__ && this.__defineSetter__) { + // Use _latitude and _longitude to actually store the values, and add + // getters and setters for latitude and longitude. + this._latitude = this.latitude; + this._longitude = this.longitude; + + this.__defineGetter__('latitude', function () { + return self._latitude; + }); + + this.__defineGetter__('longitude', function () { + return self._longitude; + }); + + this.__defineSetter__('latitude', function (val) { + AV.GeoPoint._validate(val, self.longitude); + + self._latitude = val; + }); + + this.__defineSetter__('longitude', function (val) { + AV.GeoPoint._validate(self.latitude, val); + + self._longitude = val; + }); + } + }; + /** + * @lends AV.GeoPoint.prototype + * @property {float} latitude North-south portion of the coordinate, in range + * [-90, 90]. Throws an exception if set out of range in a modern browser. + * @property {float} longitude East-west portion of the coordinate, in range + * [-180, 180]. Throws if set out of range in a modern browser. + */ + + /** + * Throws an exception if the given lat-long is out of bounds. + * @private + */ + + + AV.GeoPoint._validate = function (latitude, longitude) { + if (latitude < -90.0) { + throw new Error('AV.GeoPoint latitude ' + latitude + ' < -90.0.'); + } + + if (latitude > 90.0) { + throw new Error('AV.GeoPoint latitude ' + latitude + ' > 90.0.'); + } + + if (longitude < -180.0) { + throw new Error('AV.GeoPoint longitude ' + longitude + ' < -180.0.'); + } + + if (longitude > 180.0) { + throw new Error('AV.GeoPoint longitude ' + longitude + ' > 180.0.'); + } + }; + /** + * Creates a GeoPoint with the user's current location, if available. + * @return {Promise.} + */ + + + AV.GeoPoint.current = function () { + return new _promise.default(function (resolve, reject) { + navigator.geolocation.getCurrentPosition(function (location) { + resolve(new AV.GeoPoint({ + latitude: location.coords.latitude, + longitude: location.coords.longitude + })); + }, reject); + }); + }; + + _.extend(AV.GeoPoint.prototype, + /** @lends AV.GeoPoint.prototype */ + { + /** + * Returns a JSON representation of the GeoPoint, suitable for AV. + * @return {Object} + */ + toJSON: function toJSON() { + AV.GeoPoint._validate(this.latitude, this.longitude); + + return { + __type: 'GeoPoint', + latitude: this.latitude, + longitude: this.longitude + }; + }, + + /** + * Returns the distance from this GeoPoint to another in radians. + * @param {AV.GeoPoint} point the other AV.GeoPoint. + * @return {Number} + */ + radiansTo: function radiansTo(point) { + var d2r = Math.PI / 180.0; + var lat1rad = this.latitude * d2r; + var long1rad = this.longitude * d2r; + var lat2rad = point.latitude * d2r; + var long2rad = point.longitude * d2r; + var deltaLat = lat1rad - lat2rad; + var deltaLong = long1rad - long2rad; + var sinDeltaLatDiv2 = Math.sin(deltaLat / 2); + var sinDeltaLongDiv2 = Math.sin(deltaLong / 2); // Square of half the straight line chord distance between both points. + + var a = sinDeltaLatDiv2 * sinDeltaLatDiv2 + Math.cos(lat1rad) * Math.cos(lat2rad) * sinDeltaLongDiv2 * sinDeltaLongDiv2; + a = Math.min(1.0, a); + return 2 * Math.asin(Math.sqrt(a)); + }, + + /** + * Returns the distance from this GeoPoint to another in kilometers. + * @param {AV.GeoPoint} point the other AV.GeoPoint. + * @return {Number} + */ + kilometersTo: function kilometersTo(point) { + return this.radiansTo(point) * 6371.0; + }, + + /** + * Returns the distance from this GeoPoint to another in miles. + * @param {AV.GeoPoint} point the other AV.GeoPoint. + * @return {Number} + */ + milesTo: function milesTo(point) { + return this.radiansTo(point) * 3958.8; + } + }); +}; + +/***/ }), +/* 438 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _ = __webpack_require__(1); + +module.exports = function (AV) { + var PUBLIC_KEY = '*'; + /** + * Creates a new ACL. + * If no argument is given, the ACL has no permissions for anyone. + * If the argument is a AV.User, the ACL will have read and write + * permission for only that user. + * If the argument is any other JSON object, that object will be interpretted + * as a serialized ACL created with toJSON(). + * @see AV.Object#setACL + * @class + * + *

    An ACL, or Access Control List can be added to any + * AV.Object to restrict access to only a subset of users + * of your application.

    + */ + + AV.ACL = function (arg1) { + var self = this; + self.permissionsById = {}; + + if (_.isObject(arg1)) { + if (arg1 instanceof AV.User) { + self.setReadAccess(arg1, true); + self.setWriteAccess(arg1, true); + } else { + if (_.isFunction(arg1)) { + throw new Error('AV.ACL() called with a function. Did you forget ()?'); + } + + AV._objectEach(arg1, function (accessList, userId) { + if (!_.isString(userId)) { + throw new Error('Tried to create an ACL with an invalid userId.'); + } + + self.permissionsById[userId] = {}; + + AV._objectEach(accessList, function (allowed, permission) { + if (permission !== 'read' && permission !== 'write') { + throw new Error('Tried to create an ACL with an invalid permission type.'); + } + + if (!_.isBoolean(allowed)) { + throw new Error('Tried to create an ACL with an invalid permission value.'); + } + + self.permissionsById[userId][permission] = allowed; + }); + }); + } + } + }; + /** + * Returns a JSON-encoded version of the ACL. + * @return {Object} + */ + + + AV.ACL.prototype.toJSON = function () { + return _.clone(this.permissionsById); + }; + + AV.ACL.prototype._setAccess = function (accessType, userId, allowed) { + if (userId instanceof AV.User) { + userId = userId.id; + } else if (userId instanceof AV.Role) { + userId = 'role:' + userId.getName(); + } + + if (!_.isString(userId)) { + throw new Error('userId must be a string.'); + } + + if (!_.isBoolean(allowed)) { + throw new Error('allowed must be either true or false.'); + } + + var permissions = this.permissionsById[userId]; + + if (!permissions) { + if (!allowed) { + // The user already doesn't have this permission, so no action needed. + return; + } else { + permissions = {}; + this.permissionsById[userId] = permissions; + } + } + + if (allowed) { + this.permissionsById[userId][accessType] = true; + } else { + delete permissions[accessType]; + + if (_.isEmpty(permissions)) { + delete this.permissionsById[userId]; + } + } + }; + + AV.ACL.prototype._getAccess = function (accessType, userId) { + if (userId instanceof AV.User) { + userId = userId.id; + } else if (userId instanceof AV.Role) { + userId = 'role:' + userId.getName(); + } + + var permissions = this.permissionsById[userId]; + + if (!permissions) { + return false; + } + + return permissions[accessType] ? true : false; + }; + /** + * Set whether the given user is allowed to read this object. + * @param userId An instance of AV.User or its objectId. + * @param {Boolean} allowed Whether that user should have read access. + */ + + + AV.ACL.prototype.setReadAccess = function (userId, allowed) { + this._setAccess('read', userId, allowed); + }; + /** + * Get whether the given user id is *explicitly* allowed to read this object. + * Even if this returns false, the user may still be able to access it if + * getPublicReadAccess returns true or a role that the user belongs to has + * write access. + * @param userId An instance of AV.User or its objectId, or a AV.Role. + * @return {Boolean} + */ + + + AV.ACL.prototype.getReadAccess = function (userId) { + return this._getAccess('read', userId); + }; + /** + * Set whether the given user id is allowed to write this object. + * @param userId An instance of AV.User or its objectId, or a AV.Role.. + * @param {Boolean} allowed Whether that user should have write access. + */ + + + AV.ACL.prototype.setWriteAccess = function (userId, allowed) { + this._setAccess('write', userId, allowed); + }; + /** + * Get whether the given user id is *explicitly* allowed to write this object. + * Even if this returns false, the user may still be able to write it if + * getPublicWriteAccess returns true or a role that the user belongs to has + * write access. + * @param userId An instance of AV.User or its objectId, or a AV.Role. + * @return {Boolean} + */ + + + AV.ACL.prototype.getWriteAccess = function (userId) { + return this._getAccess('write', userId); + }; + /** + * Set whether the public is allowed to read this object. + * @param {Boolean} allowed + */ + + + AV.ACL.prototype.setPublicReadAccess = function (allowed) { + this.setReadAccess(PUBLIC_KEY, allowed); + }; + /** + * Get whether the public is allowed to read this object. + * @return {Boolean} + */ + + + AV.ACL.prototype.getPublicReadAccess = function () { + return this.getReadAccess(PUBLIC_KEY); + }; + /** + * Set whether the public is allowed to write this object. + * @param {Boolean} allowed + */ + + + AV.ACL.prototype.setPublicWriteAccess = function (allowed) { + this.setWriteAccess(PUBLIC_KEY, allowed); + }; + /** + * Get whether the public is allowed to write this object. + * @return {Boolean} + */ + + + AV.ACL.prototype.getPublicWriteAccess = function () { + return this.getWriteAccess(PUBLIC_KEY); + }; + /** + * Get whether users belonging to the given role are allowed + * to read this object. Even if this returns false, the role may + * still be able to write it if a parent role has read access. + * + * @param role The name of the role, or a AV.Role object. + * @return {Boolean} true if the role has read access. false otherwise. + * @throws {String} If role is neither a AV.Role nor a String. + */ + + + AV.ACL.prototype.getRoleReadAccess = function (role) { + if (role instanceof AV.Role) { + // Normalize to the String name + role = role.getName(); + } + + if (_.isString(role)) { + return this.getReadAccess('role:' + role); + } + + throw new Error('role must be a AV.Role or a String'); + }; + /** + * Get whether users belonging to the given role are allowed + * to write this object. Even if this returns false, the role may + * still be able to write it if a parent role has write access. + * + * @param role The name of the role, or a AV.Role object. + * @return {Boolean} true if the role has write access. false otherwise. + * @throws {String} If role is neither a AV.Role nor a String. + */ + + + AV.ACL.prototype.getRoleWriteAccess = function (role) { + if (role instanceof AV.Role) { + // Normalize to the String name + role = role.getName(); + } + + if (_.isString(role)) { + return this.getWriteAccess('role:' + role); + } + + throw new Error('role must be a AV.Role or a String'); + }; + /** + * Set whether users belonging to the given role are allowed + * to read this object. + * + * @param role The name of the role, or a AV.Role object. + * @param {Boolean} allowed Whether the given role can read this object. + * @throws {String} If role is neither a AV.Role nor a String. + */ + + + AV.ACL.prototype.setRoleReadAccess = function (role, allowed) { + if (role instanceof AV.Role) { + // Normalize to the String name + role = role.getName(); + } + + if (_.isString(role)) { + this.setReadAccess('role:' + role, allowed); + return; + } + + throw new Error('role must be a AV.Role or a String'); + }; + /** + * Set whether users belonging to the given role are allowed + * to write this object. + * + * @param role The name of the role, or a AV.Role object. + * @param {Boolean} allowed Whether the given role can write this object. + * @throws {String} If role is neither a AV.Role nor a String. + */ + + + AV.ACL.prototype.setRoleWriteAccess = function (role, allowed) { + if (role instanceof AV.Role) { + // Normalize to the String name + role = role.getName(); + } + + if (_.isString(role)) { + this.setWriteAccess('role:' + role, allowed); + return; + } + + throw new Error('role must be a AV.Role or a String'); + }; +}; + +/***/ }), +/* 439 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(2); + +var _concat = _interopRequireDefault(__webpack_require__(29)); + +var _find = _interopRequireDefault(__webpack_require__(104)); + +var _indexOf = _interopRequireDefault(__webpack_require__(102)); + +var _map = _interopRequireDefault(__webpack_require__(39)); + +var _ = __webpack_require__(1); + +module.exports = function (AV) { + /** + * @private + * @class + * A AV.Op is an atomic operation that can be applied to a field in a + * AV.Object. For example, calling object.set("foo", "bar") + * is an example of a AV.Op.Set. Calling object.unset("foo") + * is a AV.Op.Unset. These operations are stored in a AV.Object and + * sent to the server as part of object.save() operations. + * Instances of AV.Op should be immutable. + * + * You should not create subclasses of AV.Op or instantiate AV.Op + * directly. + */ + AV.Op = function () { + this._initialize.apply(this, arguments); + }; + + _.extend(AV.Op.prototype, + /** @lends AV.Op.prototype */ + { + _initialize: function _initialize() {} + }); + + _.extend(AV.Op, { + /** + * To create a new Op, call AV.Op._extend(); + * @private + */ + _extend: AV._extend, + // A map of __op string to decoder function. + _opDecoderMap: {}, + + /** + * Registers a function to convert a json object with an __op field into an + * instance of a subclass of AV.Op. + * @private + */ + _registerDecoder: function _registerDecoder(opName, decoder) { + AV.Op._opDecoderMap[opName] = decoder; + }, + + /** + * Converts a json object into an instance of a subclass of AV.Op. + * @private + */ + _decode: function _decode(json) { + var decoder = AV.Op._opDecoderMap[json.__op]; + + if (decoder) { + return decoder(json); + } else { + return undefined; + } + } + }); + /* + * Add a handler for Batch ops. + */ + + + AV.Op._registerDecoder('Batch', function (json) { + var op = null; + + AV._arrayEach(json.ops, function (nextOp) { + nextOp = AV.Op._decode(nextOp); + op = nextOp._mergeWithPrevious(op); + }); + + return op; + }); + /** + * @private + * @class + * A Set operation indicates that either the field was changed using + * AV.Object.set, or it is a mutable container that was detected as being + * changed. + */ + + + AV.Op.Set = AV.Op._extend( + /** @lends AV.Op.Set.prototype */ + { + _initialize: function _initialize(value) { + this._value = value; + }, + + /** + * Returns the new value of this field after the set. + */ + value: function value() { + return this._value; + }, + + /** + * Returns a JSON version of the operation suitable for sending to AV. + * @return {Object} + */ + toJSON: function toJSON() { + return AV._encode(this.value()); + }, + _mergeWithPrevious: function _mergeWithPrevious(previous) { + return this; + }, + _estimate: function _estimate(oldValue) { + return this.value(); + } + }); + /** + * A sentinel value that is returned by AV.Op.Unset._estimate to + * indicate the field should be deleted. Basically, if you find _UNSET as a + * value in your object, you should remove that key. + */ + + AV.Op._UNSET = {}; + /** + * @private + * @class + * An Unset operation indicates that this field has been deleted from the + * object. + */ + + AV.Op.Unset = AV.Op._extend( + /** @lends AV.Op.Unset.prototype */ + { + /** + * Returns a JSON version of the operation suitable for sending to AV. + * @return {Object} + */ + toJSON: function toJSON() { + return { + __op: 'Delete' + }; + }, + _mergeWithPrevious: function _mergeWithPrevious(previous) { + return this; + }, + _estimate: function _estimate(oldValue) { + return AV.Op._UNSET; + } + }); + + AV.Op._registerDecoder('Delete', function (json) { + return new AV.Op.Unset(); + }); + /** + * @private + * @class + * An Increment is an atomic operation where the numeric value for the field + * will be increased by a given amount. + */ + + + AV.Op.Increment = AV.Op._extend( + /** @lends AV.Op.Increment.prototype */ + { + _initialize: function _initialize(amount) { + this._amount = amount; + }, + + /** + * Returns the amount to increment by. + * @return {Number} the amount to increment by. + */ + amount: function amount() { + return this._amount; + }, + + /** + * Returns a JSON version of the operation suitable for sending to AV. + * @return {Object} + */ + toJSON: function toJSON() { + return { + __op: 'Increment', + amount: this._amount + }; + }, + _mergeWithPrevious: function _mergeWithPrevious(previous) { + if (!previous) { + return this; + } else if (previous instanceof AV.Op.Unset) { + return new AV.Op.Set(this.amount()); + } else if (previous instanceof AV.Op.Set) { + return new AV.Op.Set(previous.value() + this.amount()); + } else if (previous instanceof AV.Op.Increment) { + return new AV.Op.Increment(this.amount() + previous.amount()); + } else { + throw new Error('Op is invalid after previous op.'); + } + }, + _estimate: function _estimate(oldValue) { + if (!oldValue) { + return this.amount(); + } + + return oldValue + this.amount(); + } + }); + + AV.Op._registerDecoder('Increment', function (json) { + return new AV.Op.Increment(json.amount); + }); + /** + * @private + * @class + * BitAnd is an atomic operation where the given value will be bit and to the + * value than is stored in this field. + */ + + + AV.Op.BitAnd = AV.Op._extend( + /** @lends AV.Op.BitAnd.prototype */ + { + _initialize: function _initialize(value) { + this._value = value; + }, + value: function value() { + return this._value; + }, + + /** + * Returns a JSON version of the operation suitable for sending to AV. + * @return {Object} + */ + toJSON: function toJSON() { + return { + __op: 'BitAnd', + value: this.value() + }; + }, + _mergeWithPrevious: function _mergeWithPrevious(previous) { + if (!previous) { + return this; + } else if (previous instanceof AV.Op.Unset) { + return new AV.Op.Set(0); + } else if (previous instanceof AV.Op.Set) { + return new AV.Op.Set(previous.value() & this.value()); + } else { + throw new Error('Op is invalid after previous op.'); + } + }, + _estimate: function _estimate(oldValue) { + return oldValue & this.value(); + } + }); + + AV.Op._registerDecoder('BitAnd', function (json) { + return new AV.Op.BitAnd(json.value); + }); + /** + * @private + * @class + * BitOr is an atomic operation where the given value will be bit and to the + * value than is stored in this field. + */ + + + AV.Op.BitOr = AV.Op._extend( + /** @lends AV.Op.BitOr.prototype */ + { + _initialize: function _initialize(value) { + this._value = value; + }, + value: function value() { + return this._value; + }, + + /** + * Returns a JSON version of the operation suitable for sending to AV. + * @return {Object} + */ + toJSON: function toJSON() { + return { + __op: 'BitOr', + value: this.value() + }; + }, + _mergeWithPrevious: function _mergeWithPrevious(previous) { + if (!previous) { + return this; + } else if (previous instanceof AV.Op.Unset) { + return new AV.Op.Set(this.value()); + } else if (previous instanceof AV.Op.Set) { + return new AV.Op.Set(previous.value() | this.value()); + } else { + throw new Error('Op is invalid after previous op.'); + } + }, + _estimate: function _estimate(oldValue) { + return oldValue | this.value(); + } + }); + + AV.Op._registerDecoder('BitOr', function (json) { + return new AV.Op.BitOr(json.value); + }); + /** + * @private + * @class + * BitXor is an atomic operation where the given value will be bit and to the + * value than is stored in this field. + */ + + + AV.Op.BitXor = AV.Op._extend( + /** @lends AV.Op.BitXor.prototype */ + { + _initialize: function _initialize(value) { + this._value = value; + }, + value: function value() { + return this._value; + }, + + /** + * Returns a JSON version of the operation suitable for sending to AV. + * @return {Object} + */ + toJSON: function toJSON() { + return { + __op: 'BitXor', + value: this.value() + }; + }, + _mergeWithPrevious: function _mergeWithPrevious(previous) { + if (!previous) { + return this; + } else if (previous instanceof AV.Op.Unset) { + return new AV.Op.Set(this.value()); + } else if (previous instanceof AV.Op.Set) { + return new AV.Op.Set(previous.value() ^ this.value()); + } else { + throw new Error('Op is invalid after previous op.'); + } + }, + _estimate: function _estimate(oldValue) { + return oldValue ^ this.value(); + } + }); + + AV.Op._registerDecoder('BitXor', function (json) { + return new AV.Op.BitXor(json.value); + }); + /** + * @private + * @class + * Add is an atomic operation where the given objects will be appended to the + * array that is stored in this field. + */ + + + AV.Op.Add = AV.Op._extend( + /** @lends AV.Op.Add.prototype */ + { + _initialize: function _initialize(objects) { + this._objects = objects; + }, + + /** + * Returns the objects to be added to the array. + * @return {Array} The objects to be added to the array. + */ + objects: function objects() { + return this._objects; + }, + + /** + * Returns a JSON version of the operation suitable for sending to AV. + * @return {Object} + */ + toJSON: function toJSON() { + return { + __op: 'Add', + objects: AV._encode(this.objects()) + }; + }, + _mergeWithPrevious: function _mergeWithPrevious(previous) { + if (!previous) { + return this; + } else if (previous instanceof AV.Op.Unset) { + return new AV.Op.Set(this.objects()); + } else if (previous instanceof AV.Op.Set) { + return new AV.Op.Set(this._estimate(previous.value())); + } else if (previous instanceof AV.Op.Add) { + var _context; + + return new AV.Op.Add((0, _concat.default)(_context = previous.objects()).call(_context, this.objects())); + } else { + throw new Error('Op is invalid after previous op.'); + } + }, + _estimate: function _estimate(oldValue) { + if (!oldValue) { + return _.clone(this.objects()); + } else { + return (0, _concat.default)(oldValue).call(oldValue, this.objects()); + } + } + }); + + AV.Op._registerDecoder('Add', function (json) { + return new AV.Op.Add(AV._decode(json.objects)); + }); + /** + * @private + * @class + * AddUnique is an atomic operation where the given items will be appended to + * the array that is stored in this field only if they were not already + * present in the array. + */ + + + AV.Op.AddUnique = AV.Op._extend( + /** @lends AV.Op.AddUnique.prototype */ + { + _initialize: function _initialize(objects) { + this._objects = _.uniq(objects); + }, + + /** + * Returns the objects to be added to the array. + * @return {Array} The objects to be added to the array. + */ + objects: function objects() { + return this._objects; + }, + + /** + * Returns a JSON version of the operation suitable for sending to AV. + * @return {Object} + */ + toJSON: function toJSON() { + return { + __op: 'AddUnique', + objects: AV._encode(this.objects()) + }; + }, + _mergeWithPrevious: function _mergeWithPrevious(previous) { + if (!previous) { + return this; + } else if (previous instanceof AV.Op.Unset) { + return new AV.Op.Set(this.objects()); + } else if (previous instanceof AV.Op.Set) { + return new AV.Op.Set(this._estimate(previous.value())); + } else if (previous instanceof AV.Op.AddUnique) { + return new AV.Op.AddUnique(this._estimate(previous.objects())); + } else { + throw new Error('Op is invalid after previous op.'); + } + }, + _estimate: function _estimate(oldValue) { + if (!oldValue) { + return _.clone(this.objects()); + } else { + // We can't just take the _.uniq(_.union(...)) of oldValue and + // this.objects, because the uniqueness may not apply to oldValue + // (especially if the oldValue was set via .set()) + var newValue = _.clone(oldValue); + + AV._arrayEach(this.objects(), function (obj) { + if (obj instanceof AV.Object && obj.id) { + var matchingObj = (0, _find.default)(_).call(_, newValue, function (anObj) { + return anObj instanceof AV.Object && anObj.id === obj.id; + }); + + if (!matchingObj) { + newValue.push(obj); + } else { + var index = (0, _indexOf.default)(_).call(_, newValue, matchingObj); + newValue[index] = obj; + } + } else if (!_.contains(newValue, obj)) { + newValue.push(obj); + } + }); + + return newValue; + } + } + }); + + AV.Op._registerDecoder('AddUnique', function (json) { + return new AV.Op.AddUnique(AV._decode(json.objects)); + }); + /** + * @private + * @class + * Remove is an atomic operation where the given objects will be removed from + * the array that is stored in this field. + */ + + + AV.Op.Remove = AV.Op._extend( + /** @lends AV.Op.Remove.prototype */ + { + _initialize: function _initialize(objects) { + this._objects = _.uniq(objects); + }, + + /** + * Returns the objects to be removed from the array. + * @return {Array} The objects to be removed from the array. + */ + objects: function objects() { + return this._objects; + }, + + /** + * Returns a JSON version of the operation suitable for sending to AV. + * @return {Object} + */ + toJSON: function toJSON() { + return { + __op: 'Remove', + objects: AV._encode(this.objects()) + }; + }, + _mergeWithPrevious: function _mergeWithPrevious(previous) { + if (!previous) { + return this; + } else if (previous instanceof AV.Op.Unset) { + return previous; + } else if (previous instanceof AV.Op.Set) { + return new AV.Op.Set(this._estimate(previous.value())); + } else if (previous instanceof AV.Op.Remove) { + return new AV.Op.Remove(_.union(previous.objects(), this.objects())); + } else { + throw new Error('Op is invalid after previous op.'); + } + }, + _estimate: function _estimate(oldValue) { + if (!oldValue) { + return []; + } else { + var newValue = _.difference(oldValue, this.objects()); // If there are saved AV Objects being removed, also remove them. + + + AV._arrayEach(this.objects(), function (obj) { + if (obj instanceof AV.Object && obj.id) { + newValue = _.reject(newValue, function (other) { + return other instanceof AV.Object && other.id === obj.id; + }); + } + }); + + return newValue; + } + } + }); + + AV.Op._registerDecoder('Remove', function (json) { + return new AV.Op.Remove(AV._decode(json.objects)); + }); + /** + * @private + * @class + * A Relation operation indicates that the field is an instance of + * AV.Relation, and objects are being added to, or removed from, that + * relation. + */ + + + AV.Op.Relation = AV.Op._extend( + /** @lends AV.Op.Relation.prototype */ + { + _initialize: function _initialize(adds, removes) { + this._targetClassName = null; + var self = this; + + var pointerToId = function pointerToId(object) { + if (object instanceof AV.Object) { + if (!object.id) { + throw new Error("You can't add an unsaved AV.Object to a relation."); + } + + if (!self._targetClassName) { + self._targetClassName = object.className; + } + + if (self._targetClassName !== object.className) { + throw new Error('Tried to create a AV.Relation with 2 different types: ' + self._targetClassName + ' and ' + object.className + '.'); + } + + return object.id; + } + + return object; + }; + + this.relationsToAdd = _.uniq((0, _map.default)(_).call(_, adds, pointerToId)); + this.relationsToRemove = _.uniq((0, _map.default)(_).call(_, removes, pointerToId)); + }, + + /** + * Returns an array of unfetched AV.Object that are being added to the + * relation. + * @return {Array} + */ + added: function added() { + var self = this; + return (0, _map.default)(_).call(_, this.relationsToAdd, function (objectId) { + var object = AV.Object._create(self._targetClassName); + + object.id = objectId; + return object; + }); + }, + + /** + * Returns an array of unfetched AV.Object that are being removed from + * the relation. + * @return {Array} + */ + removed: function removed() { + var self = this; + return (0, _map.default)(_).call(_, this.relationsToRemove, function (objectId) { + var object = AV.Object._create(self._targetClassName); + + object.id = objectId; + return object; + }); + }, + + /** + * Returns a JSON version of the operation suitable for sending to AV. + * @return {Object} + */ + toJSON: function toJSON() { + var adds = null; + var removes = null; + var self = this; + + var idToPointer = function idToPointer(id) { + return { + __type: 'Pointer', + className: self._targetClassName, + objectId: id + }; + }; + + var pointers = null; + + if (this.relationsToAdd.length > 0) { + pointers = (0, _map.default)(_).call(_, this.relationsToAdd, idToPointer); + adds = { + __op: 'AddRelation', + objects: pointers + }; + } + + if (this.relationsToRemove.length > 0) { + pointers = (0, _map.default)(_).call(_, this.relationsToRemove, idToPointer); + removes = { + __op: 'RemoveRelation', + objects: pointers + }; + } + + if (adds && removes) { + return { + __op: 'Batch', + ops: [adds, removes] + }; + } + + return adds || removes || {}; + }, + _mergeWithPrevious: function _mergeWithPrevious(previous) { + if (!previous) { + return this; + } else if (previous instanceof AV.Op.Unset) { + throw new Error("You can't modify a relation after deleting it."); + } else if (previous instanceof AV.Op.Relation) { + if (previous._targetClassName && previous._targetClassName !== this._targetClassName) { + throw new Error('Related object must be of class ' + previous._targetClassName + ', but ' + this._targetClassName + ' was passed in.'); + } + + var newAdd = _.union(_.difference(previous.relationsToAdd, this.relationsToRemove), this.relationsToAdd); + + var newRemove = _.union(_.difference(previous.relationsToRemove, this.relationsToAdd), this.relationsToRemove); + + var newRelation = new AV.Op.Relation(newAdd, newRemove); + newRelation._targetClassName = this._targetClassName; + return newRelation; + } else { + throw new Error('Op is invalid after previous op.'); + } + }, + _estimate: function _estimate(oldValue, object, key) { + if (!oldValue) { + var relation = new AV.Relation(object, key); + relation.targetClassName = this._targetClassName; + } else if (oldValue instanceof AV.Relation) { + if (this._targetClassName) { + if (oldValue.targetClassName) { + if (oldValue.targetClassName !== this._targetClassName) { + throw new Error('Related object must be a ' + oldValue.targetClassName + ', but a ' + this._targetClassName + ' was passed in.'); + } + } else { + oldValue.targetClassName = this._targetClassName; + } + } + + return oldValue; + } else { + throw new Error('Op is invalid after previous op.'); + } + } + }); + + AV.Op._registerDecoder('AddRelation', function (json) { + return new AV.Op.Relation(AV._decode(json.objects), []); + }); + + AV.Op._registerDecoder('RemoveRelation', function (json) { + return new AV.Op.Relation([], AV._decode(json.objects)); + }); +}; + +/***/ }), +/* 440 */ +/***/ (function(module, exports, __webpack_require__) { + +var parent = __webpack_require__(441); + +module.exports = parent; + + +/***/ }), +/* 441 */ +/***/ (function(module, exports, __webpack_require__) { + +var isPrototypeOf = __webpack_require__(20); +var method = __webpack_require__(442); + +var ArrayPrototype = Array.prototype; + +module.exports = function (it) { + var own = it.find; + return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.find) ? method : own; +}; + + +/***/ }), +/* 442 */ +/***/ (function(module, exports, __webpack_require__) { + +__webpack_require__(443); +var entryVirtual = __webpack_require__(38); + +module.exports = entryVirtual('Array').find; + + +/***/ }), +/* 443 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var $ = __webpack_require__(0); +var $find = __webpack_require__(101).find; +var addToUnscopables = __webpack_require__(152); + +var FIND = 'find'; +var SKIPS_HOLES = true; + +// Shouldn't skip holes +if (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; }); + +// `Array.prototype.find` method +// https://tc39.es/ecma262/#sec-array.prototype.find +$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, { + find: function find(callbackfn /* , that = undefined */) { + return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); + } +}); + +// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables +addToUnscopables(FIND); + + +/***/ }), +/* 444 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _ = __webpack_require__(1); + +module.exports = function (AV) { + /** + * Creates a new Relation for the given parent object and key. This + * constructor should rarely be used directly, but rather created by + * {@link AV.Object#relation}. + * @param {AV.Object} parent The parent of this relation. + * @param {String} key The key for this relation on the parent. + * @see AV.Object#relation + * @class + * + *

    + * A class that is used to access all of the children of a many-to-many + * relationship. Each instance of AV.Relation is associated with a + * particular parent object and key. + *

    + */ + AV.Relation = function (parent, key) { + if (!_.isString(key)) { + throw new TypeError('key must be a string'); + } + + this.parent = parent; + this.key = key; + this.targetClassName = null; + }; + /** + * Creates a query that can be used to query the parent objects in this relation. + * @param {String} parentClass The parent class or name. + * @param {String} relationKey The relation field key in parent. + * @param {AV.Object} child The child object. + * @return {AV.Query} + */ + + + AV.Relation.reverseQuery = function (parentClass, relationKey, child) { + var query = new AV.Query(parentClass); + query.equalTo(relationKey, child._toPointer()); + return query; + }; + + _.extend(AV.Relation.prototype, + /** @lends AV.Relation.prototype */ + { + /** + * Makes sure that this relation has the right parent and key. + * @private + */ + _ensureParentAndKey: function _ensureParentAndKey(parent, key) { + this.parent = this.parent || parent; + this.key = this.key || key; + + if (this.parent !== parent) { + throw new Error('Internal Error. Relation retrieved from two different Objects.'); + } + + if (this.key !== key) { + throw new Error('Internal Error. Relation retrieved from two different keys.'); + } + }, + + /** + * Adds a AV.Object or an array of AV.Objects to the relation. + * @param {AV.Object|AV.Object[]} objects The item or items to add. + */ + add: function add(objects) { + if (!_.isArray(objects)) { + objects = [objects]; + } + + var change = new AV.Op.Relation(objects, []); + this.parent.set(this.key, change); + this.targetClassName = change._targetClassName; + }, + + /** + * Removes a AV.Object or an array of AV.Objects from this relation. + * @param {AV.Object|AV.Object[]} objects The item or items to remove. + */ + remove: function remove(objects) { + if (!_.isArray(objects)) { + objects = [objects]; + } + + var change = new AV.Op.Relation([], objects); + this.parent.set(this.key, change); + this.targetClassName = change._targetClassName; + }, + + /** + * Returns a JSON version of the object suitable for saving to disk. + * @return {Object} + */ + toJSON: function toJSON() { + return { + __type: 'Relation', + className: this.targetClassName + }; + }, + + /** + * Returns a AV.Query that is limited to objects in this + * relation. + * @return {AV.Query} + */ + query: function query() { + var targetClass; + var query; + + if (!this.targetClassName) { + targetClass = AV.Object._getSubclass(this.parent.className); + query = new AV.Query(targetClass); + query._defaultParams.redirectClassNameForKey = this.key; + } else { + targetClass = AV.Object._getSubclass(this.targetClassName); + query = new AV.Query(targetClass); + } + + query._addCondition('$relatedTo', 'object', this.parent._toPointer()); + + query._addCondition('$relatedTo', 'key', this.key); + + return query; + } + }); +}; + +/***/ }), +/* 445 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(2); + +var _promise = _interopRequireDefault(__webpack_require__(10)); + +var _ = __webpack_require__(1); + +var cos = __webpack_require__(446); + +var qiniu = __webpack_require__(447); + +var s3 = __webpack_require__(495); + +var AVError = __webpack_require__(40); + +var _require = __webpack_require__(25), + request = _require.request, + AVRequest = _require._request; + +var _require2 = __webpack_require__(28), + tap = _require2.tap, + transformFetchOptions = _require2.transformFetchOptions; + +var debug = __webpack_require__(60)('leancloud:file'); + +var parseBase64 = __webpack_require__(499); + +module.exports = function (AV) { + // port from browserify path module + // since react-native packager won't shim node modules. + var extname = function extname(path) { + if (!_.isString(path)) return ''; + return path.match(/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/)[4]; + }; + + var b64Digit = function b64Digit(number) { + if (number < 26) { + return String.fromCharCode(65 + number); + } + + if (number < 52) { + return String.fromCharCode(97 + (number - 26)); + } + + if (number < 62) { + return String.fromCharCode(48 + (number - 52)); + } + + if (number === 62) { + return '+'; + } + + if (number === 63) { + return '/'; + } + + throw new Error('Tried to encode large digit ' + number + ' in base64.'); + }; + + var encodeBase64 = function encodeBase64(array) { + var chunks = []; + chunks.length = Math.ceil(array.length / 3); + + _.times(chunks.length, function (i) { + var b1 = array[i * 3]; + var b2 = array[i * 3 + 1] || 0; + var b3 = array[i * 3 + 2] || 0; + var has2 = i * 3 + 1 < array.length; + var has3 = i * 3 + 2 < array.length; + chunks[i] = [b64Digit(b1 >> 2 & 0x3f), b64Digit(b1 << 4 & 0x30 | b2 >> 4 & 0x0f), has2 ? b64Digit(b2 << 2 & 0x3c | b3 >> 6 & 0x03) : '=', has3 ? b64Digit(b3 & 0x3f) : '='].join(''); + }); + + return chunks.join(''); + }; + /** + * An AV.File is a local representation of a file that is saved to the AV + * cloud. + * @param name {String} The file's name. This will change to a unique value + * once the file has finished saving. + * @param data {Array} The data for the file, as either: + * 1. an Array of byte value Numbers, or + * 2. an Object like { base64: "..." } with a base64-encoded String. + * 3. a Blob(File) selected with a file upload control in a browser. + * 4. an Object like { blob: {uri: "..."} } that mimics Blob + * in some non-browser environments such as React Native. + * 5. a Buffer in Node.js runtime. + * 6. a Stream in Node.js runtime. + * + * For example:
    +   * var fileUploadControl = $("#profilePhotoFileUpload")[0];
    +   * if (fileUploadControl.files.length > 0) {
    +   *   var file = fileUploadControl.files[0];
    +   *   var name = "photo.jpg";
    +   *   var file = new AV.File(name, file);
    +   *   file.save().then(function() {
    +   *     // The file has been saved to AV.
    +   *   }, function(error) {
    +   *     // The file either could not be read, or could not be saved to AV.
    +   *   });
    +   * }
    + * + * @class + * @param [mimeType] {String} Content-Type header to use for the file. If + * this is omitted, the content type will be inferred from the name's + * extension. + */ + + + AV.File = function (name, data, mimeType) { + this.attributes = { + name: name, + url: '', + metaData: {}, + // 用来存储转换后要上传的 base64 String + base64: '' + }; + + if (_.isString(data)) { + throw new TypeError('Creating an AV.File from a String is not yet supported.'); + } + + if (_.isArray(data)) { + this.attributes.metaData.size = data.length; + data = { + base64: encodeBase64(data) + }; + } + + this._extName = ''; + this._data = data; + this._uploadHeaders = {}; + + if (data && data.blob && typeof data.blob.uri === 'string') { + this._extName = extname(data.blob.uri); + } + + if (typeof Blob !== 'undefined' && data instanceof Blob) { + if (data.size) { + this.attributes.metaData.size = data.size; + } + + if (data.name) { + this._extName = extname(data.name); + } + } + + var owner; + + if (data && data.owner) { + owner = data.owner; + } else if (!AV._config.disableCurrentUser) { + try { + owner = AV.User.current(); + } catch (error) { + if ('SYNC_API_NOT_AVAILABLE' !== error.code) { + throw error; + } + } + } + + this.attributes.metaData.owner = owner ? owner.id : 'unknown'; + this.set('mime_type', mimeType); + }; + /** + * Creates a fresh AV.File object with exists url for saving to AVOS Cloud. + * @param {String} name the file name + * @param {String} url the file url. + * @param {Object} [metaData] the file metadata object. + * @param {String} [type] Content-Type header to use for the file. If + * this is omitted, the content type will be inferred from the name's + * extension. + * @return {AV.File} the file object + */ + + + AV.File.withURL = function (name, url, metaData, type) { + if (!name || !url) { + throw new Error('Please provide file name and url'); + } + + var file = new AV.File(name, null, type); //copy metaData properties to file. + + if (metaData) { + for (var prop in metaData) { + if (!file.attributes.metaData[prop]) file.attributes.metaData[prop] = metaData[prop]; + } + } + + file.attributes.url = url; //Mark the file is from external source. + + file.attributes.metaData.__source = 'external'; + file.attributes.metaData.size = 0; + return file; + }; + /** + * Creates a file object with exists objectId. + * @param {String} objectId The objectId string + * @return {AV.File} the file object + */ + + + AV.File.createWithoutData = function (objectId) { + if (!objectId) { + throw new TypeError('The objectId must be provided'); + } + + var file = new AV.File(); + file.id = objectId; + return file; + }; + /** + * Request file censor. + * @since 4.13.0 + * @param {String} objectId + * @return {Promise.} + */ + + + AV.File.censor = function (objectId) { + if (!AV._config.masterKey) { + throw new Error('Cannot censor a file without masterKey'); + } + + return request({ + method: 'POST', + path: "/files/".concat(objectId, "/censor"), + authOptions: { + useMasterKey: true + } + }).then(function (res) { + return res.censorResult; + }); + }; + + _.extend(AV.File.prototype, + /** @lends AV.File.prototype */ + { + className: '_File', + _toFullJSON: function _toFullJSON(seenObjects) { + var _this = this; + + var full = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + + var json = _.clone(this.attributes); + + AV._objectEach(json, function (val, key) { + json[key] = AV._encode(val, seenObjects, undefined, full); + }); + + AV._objectEach(this._operations, function (val, key) { + json[key] = val; + }); + + if (_.has(this, 'id')) { + json.objectId = this.id; + } + + ['createdAt', 'updatedAt'].forEach(function (key) { + if (_.has(_this, key)) { + var val = _this[key]; + json[key] = _.isDate(val) ? val.toJSON() : val; + } + }); + + if (full) { + json.__type = 'File'; + } + + return json; + }, + + /** + * Returns a JSON version of the file with meta data. + * Inverse to {@link AV.parseJSON} + * @since 3.0.0 + * @return {Object} + */ + toFullJSON: function toFullJSON() { + var seenObjects = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; + return this._toFullJSON(seenObjects); + }, + + /** + * Returns a JSON version of the object. + * @return {Object} + */ + toJSON: function toJSON(key, holder) { + var seenObjects = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [this]; + return this._toFullJSON(seenObjects, false); + }, + + /** + * Gets a Pointer referencing this file. + * @private + */ + _toPointer: function _toPointer() { + return { + __type: 'Pointer', + className: this.className, + objectId: this.id + }; + }, + + /** + * Returns the ACL for this file. + * @returns {AV.ACL} An instance of AV.ACL. + */ + getACL: function getACL() { + return this._acl; + }, + + /** + * Sets the ACL to be used for this file. + * @param {AV.ACL} acl An instance of AV.ACL. + */ + setACL: function setACL(acl) { + if (!(acl instanceof AV.ACL)) { + return new AVError(AVError.OTHER_CAUSE, 'ACL must be a AV.ACL.'); + } + + this._acl = acl; + return this; + }, + + /** + * Gets the name of the file. Before save is called, this is the filename + * given by the user. After save is called, that name gets prefixed with a + * unique identifier. + */ + name: function name() { + return this.get('name'); + }, + + /** + * Gets the url of the file. It is only available after you save the file or + * after you get the file from a AV.Object. + * @return {String} + */ + url: function url() { + return this.get('url'); + }, + + /** + * Gets the attributs of the file object. + * @param {String} The attribute name which want to get. + * @returns {Any} + */ + get: function get(attrName) { + switch (attrName) { + case 'objectId': + return this.id; + + case 'url': + case 'name': + case 'mime_type': + case 'metaData': + case 'createdAt': + case 'updatedAt': + return this.attributes[attrName]; + + default: + return this.attributes.metaData[attrName]; + } + }, + + /** + * Set the metaData of the file object. + * @param {Object} Object is an key value Object for setting metaData. + * @param {String} attr is an optional metadata key. + * @param {Object} value is an optional metadata value. + * @returns {String|Number|Array|Object} + */ + set: function set() { + var _this2 = this; + + var set = function set(attrName, value) { + switch (attrName) { + case 'name': + case 'url': + case 'mime_type': + case 'base64': + case 'metaData': + _this2.attributes[attrName] = value; + break; + + default: + // File 并非一个 AVObject,不能完全自定义其他属性,所以只能都放在 metaData 上面 + _this2.attributes.metaData[attrName] = value; + break; + } + }; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + switch (args.length) { + case 1: + // 传入一个 Object + for (var k in args[0]) { + set(k, args[0][k]); + } + + break; + + case 2: + set(args[0], args[1]); + break; + } + + return this; + }, + + /** + * Set a header for the upload request. + * For more infomation, go to https://url.leanapp.cn/avfile-upload-headers + * + * @param {String} key header key + * @param {String} value header value + * @return {AV.File} this + */ + setUploadHeader: function setUploadHeader(key, value) { + this._uploadHeaders[key] = value; + return this; + }, + + /** + *

    Returns the file's metadata JSON object if no arguments is given.Returns the + * metadata value if a key is given.Set metadata value if key and value are both given.

    + *

    +     *  var metadata = file.metaData(); //Get metadata JSON object.
    +     *  var size = file.metaData('size');  // Get the size metadata value.
    +     *  file.metaData('format', 'jpeg'); //set metadata attribute and value.
    +     *

    + * @return {Object} The file's metadata JSON object. + * @param {String} attr an optional metadata key. + * @param {Object} value an optional metadata value. + **/ + metaData: function metaData(attr, value) { + if (attr && value) { + this.attributes.metaData[attr] = value; + return this; + } else if (attr && !value) { + return this.attributes.metaData[attr]; + } else { + return this.attributes.metaData; + } + }, + + /** + * 如果文件是图片,获取图片的缩略图URL。可以传入宽度、高度、质量、格式等参数。 + * @return {String} 缩略图URL + * @param {Number} width 宽度,单位:像素 + * @param {Number} heigth 高度,单位:像素 + * @param {Number} quality 质量,1-100的数字,默认100 + * @param {Number} scaleToFit 是否将图片自适应大小。默认为true。 + * @param {String} fmt 格式,默认为png,也可以为jpeg,gif等格式。 + */ + thumbnailURL: function thumbnailURL(width, height) { + var quality = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 100; + var scaleToFit = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true; + var fmt = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 'png'; + var url = this.attributes.url; + + if (!url) { + throw new Error('Invalid url.'); + } + + if (!width || !height || width <= 0 || height <= 0) { + throw new Error('Invalid width or height value.'); + } + + if (quality <= 0 || quality > 100) { + throw new Error('Invalid quality value.'); + } + + var mode = scaleToFit ? 2 : 1; + return url + '?imageView/' + mode + '/w/' + width + '/h/' + height + '/q/' + quality + '/format/' + fmt; + }, + + /** + * Returns the file's size. + * @return {Number} The file's size in bytes. + **/ + size: function size() { + return this.metaData().size; + }, + + /** + * Returns the file's owner. + * @return {String} The file's owner id. + */ + ownerId: function ownerId() { + return this.metaData().owner; + }, + + /** + * Destroy the file. + * @param {AuthOptions} options + * @return {Promise} A promise that is fulfilled when the destroy + * completes. + */ + destroy: function destroy(options) { + if (!this.id) { + return _promise.default.reject(new Error('The file id does not eixst.')); + } + + var request = AVRequest('files', null, this.id, 'DELETE', null, options); + return request; + }, + + /** + * Request Qiniu upload token + * @param {string} type + * @return {Promise} Resolved with the response + * @private + */ + _fileToken: function _fileToken(type, authOptions) { + var name = this.attributes.name; + var extName = extname(name); + + if (!extName && this._extName) { + name += this._extName; + extName = this._extName; + } + + var data = { + name: name, + keep_file_name: authOptions.keepFileName, + key: authOptions.key, + ACL: this._acl, + mime_type: type, + metaData: this.attributes.metaData + }; + return AVRequest('fileTokens', null, null, 'POST', data, authOptions); + }, + + /** + * @callback UploadProgressCallback + * @param {XMLHttpRequestProgressEvent} event - The progress event with 'loaded' and 'total' attributes + */ + + /** + * Saves the file to the AV cloud. + * @param {AuthOptions} [options] AuthOptions plus: + * @param {UploadProgressCallback} [options.onprogress] 文件上传进度,在 Node.js 中无效,回调参数说明详见 {@link UploadProgressCallback}。 + * @param {boolean} [options.keepFileName = false] 保留下载文件的文件名。 + * @param {string} [options.key] 指定文件的 key。设置该选项需要使用 masterKey + * @return {Promise} Promise that is resolved when the save finishes. + */ + save: function save() { + var _this3 = this; + + var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + + if (this.id) { + throw new Error('File is already saved.'); + } + + if (!this._previousSave) { + if (this._data) { + var mimeType = this.get('mime_type'); + this._previousSave = this._fileToken(mimeType, options).then(function (uploadInfo) { + if (uploadInfo.mime_type) { + mimeType = uploadInfo.mime_type; + + _this3.set('mime_type', mimeType); + } + + _this3._token = uploadInfo.token; + return _promise.default.resolve().then(function () { + var data = _this3._data; + + if (data && data.base64) { + return parseBase64(data.base64, mimeType); + } + + if (data && data.blob) { + if (!data.blob.type && mimeType) { + data.blob.type = mimeType; + } + + if (!data.blob.name) { + data.blob.name = _this3.get('name'); + } + + return data.blob; + } + + if (typeof Blob !== 'undefined' && data instanceof Blob) { + return data; + } + + throw new TypeError('malformed file data'); + }).then(function (data) { + var _options = _.extend({}, options); // filter out download progress events + + + if (options.onprogress) { + _options.onprogress = function (event) { + if (event.direction === 'download') return; + return options.onprogress(event); + }; + } + + switch (uploadInfo.provider) { + case 's3': + return s3(uploadInfo, data, _this3, _options); + + case 'qcloud': + return cos(uploadInfo, data, _this3, _options); + + case 'qiniu': + default: + return qiniu(uploadInfo, data, _this3, _options); + } + }).then(tap(function () { + return _this3._callback(true); + }), function (error) { + _this3._callback(false); + + throw error; + }); + }); + } else if (this.attributes.url && this.attributes.metaData.__source === 'external') { + // external link file. + var data = { + name: this.attributes.name, + ACL: this._acl, + metaData: this.attributes.metaData, + mime_type: this.mimeType, + url: this.attributes.url + }; + this._previousSave = AVRequest('files', null, null, 'post', data, options).then(function (response) { + _this3.id = response.objectId; + return _this3; + }); + } + } + + return this._previousSave; + }, + _callback: function _callback(success) { + AVRequest('fileCallback', null, null, 'post', { + token: this._token, + result: success + }).catch(debug); + delete this._token; + delete this._data; + }, + + /** + * fetch the file from server. If the server's representation of the + * model differs from its current attributes, they will be overriden, + * @param {Object} fetchOptions Optional options to set 'keys', + * 'include' and 'includeACL' option. + * @param {AuthOptions} options + * @return {Promise} A promise that is fulfilled when the fetch + * completes. + */ + fetch: function fetch(fetchOptions, options) { + if (!this.id) { + throw new Error('Cannot fetch unsaved file'); + } + + var request = AVRequest('files', null, this.id, 'GET', transformFetchOptions(fetchOptions), options); + return request.then(this._finishFetch.bind(this)); + }, + _finishFetch: function _finishFetch(response) { + var value = AV.Object.prototype.parse(response); + value.attributes = { + name: value.name, + url: value.url, + mime_type: value.mime_type, + bucket: value.bucket + }; + value.attributes.metaData = value.metaData || {}; + value.id = value.objectId; // clean + + delete value.objectId; + delete value.metaData; + delete value.url; + delete value.name; + delete value.mime_type; + delete value.bucket; + + _.extend(this, value); + + return this; + }, + + /** + * Request file censor + * @since 4.13.0 + * @return {Promise.} + */ + censor: function censor() { + if (!this.id) { + throw new Error('Cannot censor an unsaved file'); + } + + return AV.File.censor(this.id); + } + }); +}; + +/***/ }), +/* 446 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _require = __webpack_require__(61), + getAdapter = _require.getAdapter; + +var debug = __webpack_require__(60)('cos'); + +module.exports = function (uploadInfo, data, file) { + var saveOptions = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {}; + var url = uploadInfo.upload_url + '?sign=' + encodeURIComponent(uploadInfo.token); + var fileFormData = { + field: 'fileContent', + data: data, + name: file.attributes.name + }; + var options = { + headers: file._uploadHeaders, + data: { + op: 'upload' + }, + onprogress: saveOptions.onprogress + }; + debug('url: %s, file: %o, options: %o', url, fileFormData, options); + var upload = getAdapter('upload'); + return upload(url, fileFormData, options).then(function (response) { + debug(response.status, response.data); + + if (response.ok === false) { + var error = new Error(response.status); + error.response = response; + throw error; + } + + file.attributes.url = uploadInfo.url; + file._bucket = uploadInfo.bucket; + file.id = uploadInfo.objectId; + return file; + }, function (error) { + var response = error.response; + + if (response) { + debug(response.status, response.data); + error.statusCode = response.status; + error.response = response.data; + } + + throw error; + }); +}; + +/***/ }), +/* 447 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _sliceInstanceProperty2 = __webpack_require__(81); + +var _Array$from = __webpack_require__(448); + +var _Symbol = __webpack_require__(453); + +var _getIteratorMethod = __webpack_require__(231); + +var _Reflect$construct = __webpack_require__(459); + +var _interopRequireDefault = __webpack_require__(2); + +var _inherits2 = _interopRequireDefault(__webpack_require__(463)); + +var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(485)); + +var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(487)); + +var _classCallCheck2 = _interopRequireDefault(__webpack_require__(492)); + +var _createClass2 = _interopRequireDefault(__webpack_require__(493)); + +var _stringify = _interopRequireDefault(__webpack_require__(34)); + +var _concat = _interopRequireDefault(__webpack_require__(29)); + +var _promise = _interopRequireDefault(__webpack_require__(10)); + +var _slice = _interopRequireDefault(__webpack_require__(81)); + +function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof _Symbol !== "undefined" && _getIteratorMethod(o) || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; } + +function _unsupportedIterableToArray(o, minLen) { var _context8; if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = _sliceInstanceProperty2(_context8 = Object.prototype.toString.call(o)).call(_context8, 8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return _Array$from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +var _require = __webpack_require__(61), + getAdapter = _require.getAdapter; + +var debug = __webpack_require__(60)('leancloud:qiniu'); + +var ajax = __webpack_require__(103); + +var btoa = __webpack_require__(494); + +var SHARD_THRESHOLD = 1024 * 1024 * 64; +var CHUNK_SIZE = 1024 * 1024 * 16; + +function upload(uploadInfo, data, file) { + var saveOptions = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {}; + // Get the uptoken to upload files to qiniu. + var uptoken = uploadInfo.token; + var url = uploadInfo.upload_url || 'https://upload.qiniup.com'; + var fileFormData = { + field: 'file', + data: data, + name: file.attributes.name + }; + var options = { + headers: file._uploadHeaders, + data: { + name: file.attributes.name, + key: uploadInfo.key, + token: uptoken + }, + onprogress: saveOptions.onprogress + }; + debug('url: %s, file: %o, options: %o', url, fileFormData, options); + var upload = getAdapter('upload'); + return upload(url, fileFormData, options).then(function (response) { + debug(response.status, response.data); + + if (response.ok === false) { + var message = response.status; + + if (response.data) { + if (response.data.error) { + message = response.data.error; + } else { + message = (0, _stringify.default)(response.data); + } + } + + var error = new Error(message); + error.response = response; + throw error; + } + + file.attributes.url = uploadInfo.url; + file._bucket = uploadInfo.bucket; + file.id = uploadInfo.objectId; + return file; + }, function (error) { + var response = error.response; + + if (response) { + debug(response.status, response.data); + error.statusCode = response.status; + error.response = response.data; + } + + throw error; + }); +} + +function urlSafeBase64(string) { + var base64 = btoa(unescape(encodeURIComponent(string))); + var result = ''; + + var _iterator = _createForOfIteratorHelper(base64), + _step; + + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var ch = _step.value; + + switch (ch) { + case '+': + result += '-'; + break; + + case '/': + result += '_'; + break; + + default: + result += ch; + } + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + + return result; +} + +var ShardUploader = /*#__PURE__*/function () { + function ShardUploader(uploadInfo, data, file, saveOptions) { + var _context, + _context2, + _this = this; + + (0, _classCallCheck2.default)(this, ShardUploader); + this.uploadInfo = uploadInfo; + this.data = data; + this.file = file; + this.size = undefined; + this.offset = 0; + this.uploadedChunks = 0; + var key = urlSafeBase64(uploadInfo.key); + var uploadURL = uploadInfo.upload_url || 'https://upload.qiniup.com'; + this.baseURL = (0, _concat.default)(_context = (0, _concat.default)(_context2 = "".concat(uploadURL, "/buckets/")).call(_context2, uploadInfo.bucket, "/objects/")).call(_context, key, "/uploads"); + this.upToken = 'UpToken ' + uploadInfo.token; + this.uploaded = 0; + + if (saveOptions && saveOptions.onprogress) { + this.onProgress = function (_ref) { + var loaded = _ref.loaded; + loaded += _this.uploadedChunks * CHUNK_SIZE; + + if (loaded <= _this.uploaded) { + return; + } + + if (_this.size) { + saveOptions.onprogress({ + loaded: loaded, + total: _this.size, + percent: loaded / _this.size * 100 + }); + } else { + saveOptions.onprogress({ + loaded: loaded + }); + } + + _this.uploaded = loaded; + }; + } + } + /** + * @returns {Promise} + */ + + + (0, _createClass2.default)(ShardUploader, [{ + key: "getUploadId", + value: function getUploadId() { + return ajax({ + method: 'POST', + url: this.baseURL, + headers: { + Authorization: this.upToken + } + }).then(function (res) { + return res.uploadId; + }); + } + }, { + key: "getChunk", + value: function getChunk() { + throw new Error('Not implemented'); + } + /** + * @param {string} uploadId + * @param {number} partNumber + * @param {any} data + * @returns {Promise<{ partNumber: number, etag: string }>} + */ + + }, { + key: "uploadPart", + value: function uploadPart(uploadId, partNumber, data) { + var _context3, _context4; + + return ajax({ + method: 'PUT', + url: (0, _concat.default)(_context3 = (0, _concat.default)(_context4 = "".concat(this.baseURL, "/")).call(_context4, uploadId, "/")).call(_context3, partNumber), + headers: { + Authorization: this.upToken + }, + data: data, + onprogress: this.onProgress + }).then(function (_ref2) { + var etag = _ref2.etag; + return { + partNumber: partNumber, + etag: etag + }; + }); + } + }, { + key: "stopUpload", + value: function stopUpload(uploadId) { + var _context5; + + return ajax({ + method: 'DELETE', + url: (0, _concat.default)(_context5 = "".concat(this.baseURL, "/")).call(_context5, uploadId), + headers: { + Authorization: this.upToken + } + }); + } + }, { + key: "upload", + value: function upload() { + var _this2 = this; + + var parts = []; + return this.getUploadId().then(function (uploadId) { + var uploadPart = function uploadPart() { + return _promise.default.resolve(_this2.getChunk()).then(function (chunk) { + if (!chunk) { + return; + } + + var partNumber = parts.length + 1; + return _this2.uploadPart(uploadId, partNumber, chunk).then(function (part) { + parts.push(part); + _this2.uploadedChunks++; + return uploadPart(); + }); + }).catch(function (error) { + return _this2.stopUpload(uploadId).then(function () { + return _promise.default.reject(error); + }); + }); + }; + + return uploadPart().then(function () { + var _context6; + + return ajax({ + method: 'POST', + url: (0, _concat.default)(_context6 = "".concat(_this2.baseURL, "/")).call(_context6, uploadId), + headers: { + Authorization: _this2.upToken + }, + data: { + parts: parts, + fname: _this2.file.attributes.name, + mimeType: _this2.file.attributes.mime_type + } + }); + }); + }).then(function () { + _this2.file.attributes.url = _this2.uploadInfo.url; + _this2.file._bucket = _this2.uploadInfo.bucket; + _this2.file.id = _this2.uploadInfo.objectId; + return _this2.file; + }); + } + }]); + return ShardUploader; +}(); + +var BlobUploader = /*#__PURE__*/function (_ShardUploader) { + (0, _inherits2.default)(BlobUploader, _ShardUploader); + + var _super = _createSuper(BlobUploader); + + function BlobUploader(uploadInfo, data, file, saveOptions) { + var _this3; + + (0, _classCallCheck2.default)(this, BlobUploader); + _this3 = _super.call(this, uploadInfo, data, file, saveOptions); + _this3.size = data.size; + return _this3; + } + /** + * @returns {Blob | null} + */ + + + (0, _createClass2.default)(BlobUploader, [{ + key: "getChunk", + value: function getChunk() { + var _context7; + + if (this.offset >= this.size) { + return null; + } + + var chunk = (0, _slice.default)(_context7 = this.data).call(_context7, this.offset, this.offset + CHUNK_SIZE); + this.offset += chunk.size; + return chunk; + } + }]); + return BlobUploader; +}(ShardUploader); + +function isBlob(data) { + return typeof Blob !== 'undefined' && data instanceof Blob; +} + +module.exports = function (uploadInfo, data, file) { + var saveOptions = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {}; + + if (isBlob(data) && data.size >= SHARD_THRESHOLD) { + return new BlobUploader(uploadInfo, data, file, saveOptions).upload(); + } + + return upload(uploadInfo, data, file, saveOptions); +}; + +/***/ }), +/* 448 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__(230); + +/***/ }), +/* 449 */ +/***/ (function(module, exports, __webpack_require__) { + +__webpack_require__(95); +__webpack_require__(450); +var path = __webpack_require__(13); + +module.exports = path.Array.from; + + +/***/ }), +/* 450 */ +/***/ (function(module, exports, __webpack_require__) { + +var $ = __webpack_require__(0); +var from = __webpack_require__(451); +var checkCorrectnessOfIteration = __webpack_require__(160); + +var INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) { + // eslint-disable-next-line es-x/no-array-from -- required for testing + Array.from(iterable); +}); + +// `Array.from` method +// https://tc39.es/ecma262/#sec-array.from +$({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, { + from: from +}); + + +/***/ }), +/* 451 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var bind = __webpack_require__(50); +var call = __webpack_require__(11); +var toObject = __webpack_require__(35); +var callWithSafeIterationClosing = __webpack_require__(452); +var isArrayIteratorMethod = __webpack_require__(149); +var isConstructor = __webpack_require__(93); +var lengthOfArrayLike = __webpack_require__(42); +var createProperty = __webpack_require__(99); +var getIterator = __webpack_require__(150); +var getIteratorMethod = __webpack_require__(90); + +var $Array = Array; + +// `Array.from` method implementation +// https://tc39.es/ecma262/#sec-array.from +module.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) { + var O = toObject(arrayLike); + var IS_CONSTRUCTOR = isConstructor(this); + var argumentsLength = arguments.length; + var mapfn = argumentsLength > 1 ? arguments[1] : undefined; + var mapping = mapfn !== undefined; + if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined); + var iteratorMethod = getIteratorMethod(O); + var index = 0; + var length, result, step, iterator, next, value; + // if the target is not iterable or it's an array with the default iterator - use a simple case + if (iteratorMethod && !(this === $Array && isArrayIteratorMethod(iteratorMethod))) { + iterator = getIterator(O, iteratorMethod); + next = iterator.next; + result = IS_CONSTRUCTOR ? new this() : []; + for (;!(step = call(next, iterator)).done; index++) { + value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value; + createProperty(result, index, value); + } + } else { + length = lengthOfArrayLike(O); + result = IS_CONSTRUCTOR ? new this(length) : $Array(length); + for (;length > index; index++) { + value = mapping ? mapfn(O[index], index) : O[index]; + createProperty(result, index, value); + } + } + result.length = index; + return result; +}; + + +/***/ }), +/* 452 */ +/***/ (function(module, exports, __webpack_require__) { + +var anObject = __webpack_require__(21); +var iteratorClose = __webpack_require__(151); + +// call something on iterator step with safe closing on error +module.exports = function (iterator, fn, value, ENTRIES) { + try { + return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value); + } catch (error) { + iteratorClose(iterator, 'throw', error); + } +}; + + +/***/ }), +/* 453 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__(226); + +/***/ }), +/* 454 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__(455); + + +/***/ }), +/* 455 */ +/***/ (function(module, exports, __webpack_require__) { + +var parent = __webpack_require__(456); + +module.exports = parent; + + +/***/ }), +/* 456 */ +/***/ (function(module, exports, __webpack_require__) { + +var parent = __webpack_require__(457); + +module.exports = parent; + + +/***/ }), +/* 457 */ +/***/ (function(module, exports, __webpack_require__) { + +var parent = __webpack_require__(458); +__webpack_require__(73); + +module.exports = parent; + + +/***/ }), +/* 458 */ +/***/ (function(module, exports, __webpack_require__) { + +__webpack_require__(70); +__webpack_require__(95); +var getIteratorMethod = __webpack_require__(90); + +module.exports = getIteratorMethod; + + +/***/ }), +/* 459 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__(460); + +/***/ }), +/* 460 */ +/***/ (function(module, exports, __webpack_require__) { + +var parent = __webpack_require__(461); + +module.exports = parent; + + +/***/ }), +/* 461 */ +/***/ (function(module, exports, __webpack_require__) { + +__webpack_require__(462); +var path = __webpack_require__(13); + +module.exports = path.Reflect.construct; + + +/***/ }), +/* 462 */ +/***/ (function(module, exports, __webpack_require__) { + +var $ = __webpack_require__(0); +var getBuiltIn = __webpack_require__(16); +var apply = __webpack_require__(62); +var bind = __webpack_require__(232); +var aConstructor = __webpack_require__(156); +var anObject = __webpack_require__(21); +var isObject = __webpack_require__(17); +var create = __webpack_require__(51); +var fails = __webpack_require__(4); + +var nativeConstruct = getBuiltIn('Reflect', 'construct'); +var ObjectPrototype = Object.prototype; +var push = [].push; + +// `Reflect.construct` method +// https://tc39.es/ecma262/#sec-reflect.construct +// MS Edge supports only 2 arguments and argumentsList argument is optional +// FF Nightly sets third argument as `new.target`, but does not create `this` from it +var NEW_TARGET_BUG = fails(function () { + function F() { /* empty */ } + return !(nativeConstruct(function () { /* empty */ }, [], F) instanceof F); +}); + +var ARGS_BUG = !fails(function () { + nativeConstruct(function () { /* empty */ }); +}); + +var FORCED = NEW_TARGET_BUG || ARGS_BUG; + +$({ target: 'Reflect', stat: true, forced: FORCED, sham: FORCED }, { + construct: function construct(Target, args /* , newTarget */) { + aConstructor(Target); + anObject(args); + var newTarget = arguments.length < 3 ? Target : aConstructor(arguments[2]); + if (ARGS_BUG && !NEW_TARGET_BUG) return nativeConstruct(Target, args, newTarget); + if (Target == newTarget) { + // w/o altered newTarget, optimization for 0-4 arguments + switch (args.length) { + case 0: return new Target(); + case 1: return new Target(args[0]); + case 2: return new Target(args[0], args[1]); + case 3: return new Target(args[0], args[1], args[2]); + case 4: return new Target(args[0], args[1], args[2], args[3]); + } + // w/o altered newTarget, lot of arguments case + var $args = [null]; + apply(push, $args, args); + return new (apply(bind, Target, $args))(); + } + // with altered newTarget, not support built-in constructors + var proto = newTarget.prototype; + var instance = create(isObject(proto) ? proto : ObjectPrototype); + var result = apply(Target, instance, args); + return isObject(result) ? result : instance; + } +}); + + +/***/ }), +/* 463 */ +/***/ (function(module, exports, __webpack_require__) { + +var _Object$create = __webpack_require__(464); + +var _Object$defineProperty = __webpack_require__(137); + +var setPrototypeOf = __webpack_require__(474); + +function _inherits(subClass, superClass) { + if (typeof superClass !== "function" && superClass !== null) { + throw new TypeError("Super expression must either be null or a function"); + } + + subClass.prototype = _Object$create(superClass && superClass.prototype, { + constructor: { + value: subClass, + writable: true, + configurable: true + } + }); + + _Object$defineProperty(subClass, "prototype", { + writable: false + }); + + if (superClass) setPrototypeOf(subClass, superClass); +} + +module.exports = _inherits, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), +/* 464 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__(465); + +/***/ }), +/* 465 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__(466); + + +/***/ }), +/* 466 */ +/***/ (function(module, exports, __webpack_require__) { + +var parent = __webpack_require__(467); + +module.exports = parent; + + +/***/ }), +/* 467 */ +/***/ (function(module, exports, __webpack_require__) { + +var parent = __webpack_require__(468); + +module.exports = parent; + + +/***/ }), +/* 468 */ +/***/ (function(module, exports, __webpack_require__) { + +var parent = __webpack_require__(469); + +module.exports = parent; + + +/***/ }), +/* 469 */ +/***/ (function(module, exports, __webpack_require__) { + +__webpack_require__(470); +var path = __webpack_require__(13); + +var Object = path.Object; + +module.exports = function create(P, D) { + return Object.create(P, D); +}; + + +/***/ }), +/* 470 */ +/***/ (function(module, exports, __webpack_require__) { + +// TODO: Remove from `core-js@4` +var $ = __webpack_require__(0); +var DESCRIPTORS = __webpack_require__(19); +var create = __webpack_require__(51); + +// `Object.create` method +// https://tc39.es/ecma262/#sec-object.create +$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, { + create: create +}); + + +/***/ }), +/* 471 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__(472); + + +/***/ }), +/* 472 */ +/***/ (function(module, exports, __webpack_require__) { + +var parent = __webpack_require__(473); + +module.exports = parent; + + +/***/ }), +/* 473 */ +/***/ (function(module, exports, __webpack_require__) { + +var parent = __webpack_require__(224); + +module.exports = parent; + + +/***/ }), +/* 474 */ +/***/ (function(module, exports, __webpack_require__) { + +var _Object$setPrototypeOf = __webpack_require__(233); + +var _bindInstanceProperty = __webpack_require__(234); + +function _setPrototypeOf(o, p) { + var _context; + + module.exports = _setPrototypeOf = _Object$setPrototypeOf ? _bindInstanceProperty(_context = _Object$setPrototypeOf).call(_context) : function _setPrototypeOf(o, p) { + o.__proto__ = p; + return o; + }, module.exports.__esModule = true, module.exports["default"] = module.exports; + return _setPrototypeOf(o, p); +} + +module.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), +/* 475 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__(476); + + +/***/ }), +/* 476 */ +/***/ (function(module, exports, __webpack_require__) { + +var parent = __webpack_require__(477); + +module.exports = parent; + + +/***/ }), +/* 477 */ +/***/ (function(module, exports, __webpack_require__) { + +var parent = __webpack_require__(221); + +module.exports = parent; + + +/***/ }), +/* 478 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__(479); + + +/***/ }), +/* 479 */ +/***/ (function(module, exports, __webpack_require__) { + +var parent = __webpack_require__(480); + +module.exports = parent; + + +/***/ }), +/* 480 */ +/***/ (function(module, exports, __webpack_require__) { + +var parent = __webpack_require__(481); + +module.exports = parent; + + +/***/ }), +/* 481 */ +/***/ (function(module, exports, __webpack_require__) { + +var parent = __webpack_require__(482); + +module.exports = parent; + + +/***/ }), +/* 482 */ +/***/ (function(module, exports, __webpack_require__) { + +var isPrototypeOf = __webpack_require__(20); +var method = __webpack_require__(483); + +var FunctionPrototype = Function.prototype; + +module.exports = function (it) { + var own = it.bind; + return it === FunctionPrototype || (isPrototypeOf(FunctionPrototype, it) && own === FunctionPrototype.bind) ? method : own; +}; + + +/***/ }), +/* 483 */ +/***/ (function(module, exports, __webpack_require__) { + +__webpack_require__(484); +var entryVirtual = __webpack_require__(38); + +module.exports = entryVirtual('Function').bind; + + +/***/ }), +/* 484 */ +/***/ (function(module, exports, __webpack_require__) { + +// TODO: Remove from `core-js@4` +var $ = __webpack_require__(0); +var bind = __webpack_require__(232); + +// `Function.prototype.bind` method +// https://tc39.es/ecma262/#sec-function.prototype.bind +$({ target: 'Function', proto: true, forced: Function.bind !== bind }, { + bind: bind +}); + + +/***/ }), +/* 485 */ +/***/ (function(module, exports, __webpack_require__) { + +var _typeof = __webpack_require__(135)["default"]; + +var assertThisInitialized = __webpack_require__(486); + +function _possibleConstructorReturn(self, call) { + if (call && (_typeof(call) === "object" || typeof call === "function")) { + return call; + } else if (call !== void 0) { + throw new TypeError("Derived constructors may only return object or undefined"); + } + + return assertThisInitialized(self); +} + +module.exports = _possibleConstructorReturn, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), +/* 486 */ +/***/ (function(module, exports) { + +function _assertThisInitialized(self) { + if (self === void 0) { + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + } + + return self; +} + +module.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), +/* 487 */ +/***/ (function(module, exports, __webpack_require__) { + +var _Object$setPrototypeOf = __webpack_require__(233); + +var _bindInstanceProperty = __webpack_require__(234); + +var _Object$getPrototypeOf = __webpack_require__(488); + +function _getPrototypeOf(o) { + var _context; + + module.exports = _getPrototypeOf = _Object$setPrototypeOf ? _bindInstanceProperty(_context = _Object$getPrototypeOf).call(_context) : function _getPrototypeOf(o) { + return o.__proto__ || _Object$getPrototypeOf(o); + }, module.exports.__esModule = true, module.exports["default"] = module.exports; + return _getPrototypeOf(o); +} + +module.exports = _getPrototypeOf, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), +/* 488 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__(489); + +/***/ }), +/* 489 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__(490); + + +/***/ }), +/* 490 */ +/***/ (function(module, exports, __webpack_require__) { + +var parent = __webpack_require__(491); + +module.exports = parent; + + +/***/ }), +/* 491 */ +/***/ (function(module, exports, __webpack_require__) { + +var parent = __webpack_require__(216); + +module.exports = parent; + + +/***/ }), +/* 492 */ +/***/ (function(module, exports) { + +function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } +} + +module.exports = _classCallCheck, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), +/* 493 */ +/***/ (function(module, exports, __webpack_require__) { + +var _Object$defineProperty = __webpack_require__(137); + +function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + + _Object$defineProperty(target, descriptor.key, descriptor); + } +} + +function _createClass(Constructor, protoProps, staticProps) { + if (protoProps) _defineProperties(Constructor.prototype, protoProps); + if (staticProps) _defineProperties(Constructor, staticProps); + + _Object$defineProperty(Constructor, "prototype", { + writable: false + }); + + return Constructor; +} + +module.exports = _createClass, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), +/* 494 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(2); + +var _slice = _interopRequireDefault(__webpack_require__(81)); + +// base64 character set, plus padding character (=) +var b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; + +module.exports = function (string) { + var result = ''; + + for (var i = 0; i < string.length;) { + var a = string.charCodeAt(i++); + var b = string.charCodeAt(i++); + var c = string.charCodeAt(i++); + + if (a > 255 || b > 255 || c > 255) { + throw new TypeError('Failed to encode base64: The string to be encoded contains characters outside of the Latin1 range.'); + } + + var bitmap = a << 16 | b << 8 | c; + result += b64.charAt(bitmap >> 18 & 63) + b64.charAt(bitmap >> 12 & 63) + b64.charAt(bitmap >> 6 & 63) + b64.charAt(bitmap & 63); + } // To determine the final padding + + + var rest = string.length % 3; // If there's need of padding, replace the last 'A's with equal signs + + return rest ? (0, _slice.default)(result).call(result, 0, rest - 3) + '==='.substring(rest) : result; +}; + +/***/ }), +/* 495 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _ = __webpack_require__(1); + +var ajax = __webpack_require__(103); + +module.exports = function upload(uploadInfo, data, file) { + var saveOptions = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {}; + return ajax({ + url: uploadInfo.upload_url, + method: 'PUT', + data: data, + headers: _.extend({ + 'Content-Type': file.get('mime_type'), + 'Cache-Control': 'public, max-age=31536000' + }, file._uploadHeaders), + onprogress: saveOptions.onprogress + }).then(function () { + file.attributes.url = uploadInfo.url; + file._bucket = uploadInfo.bucket; + file.id = uploadInfo.objectId; + return file; + }); +}; + +/***/ }), +/* 496 */ +/***/ (function(module, exports, __webpack_require__) { + +(function(){ + var crypt = __webpack_require__(497), + utf8 = __webpack_require__(235).utf8, + isBuffer = __webpack_require__(498), + bin = __webpack_require__(235).bin, + + // The core + md5 = function (message, options) { + // Convert to byte array + if (message.constructor == String) + if (options && options.encoding === 'binary') + message = bin.stringToBytes(message); + else + message = utf8.stringToBytes(message); + else if (isBuffer(message)) + message = Array.prototype.slice.call(message, 0); + else if (!Array.isArray(message)) + message = message.toString(); + // else, assume byte array already + + var m = crypt.bytesToWords(message), + l = message.length * 8, + a = 1732584193, + b = -271733879, + c = -1732584194, + d = 271733878; + + // Swap endian + for (var i = 0; i < m.length; i++) { + m[i] = ((m[i] << 8) | (m[i] >>> 24)) & 0x00FF00FF | + ((m[i] << 24) | (m[i] >>> 8)) & 0xFF00FF00; + } + + // Padding + m[l >>> 5] |= 0x80 << (l % 32); + m[(((l + 64) >>> 9) << 4) + 14] = l; + + // Method shortcuts + var FF = md5._ff, + GG = md5._gg, + HH = md5._hh, + II = md5._ii; + + for (var i = 0; i < m.length; i += 16) { + + var aa = a, + bb = b, + cc = c, + dd = d; + + a = FF(a, b, c, d, m[i+ 0], 7, -680876936); + d = FF(d, a, b, c, m[i+ 1], 12, -389564586); + c = FF(c, d, a, b, m[i+ 2], 17, 606105819); + b = FF(b, c, d, a, m[i+ 3], 22, -1044525330); + a = FF(a, b, c, d, m[i+ 4], 7, -176418897); + d = FF(d, a, b, c, m[i+ 5], 12, 1200080426); + c = FF(c, d, a, b, m[i+ 6], 17, -1473231341); + b = FF(b, c, d, a, m[i+ 7], 22, -45705983); + a = FF(a, b, c, d, m[i+ 8], 7, 1770035416); + d = FF(d, a, b, c, m[i+ 9], 12, -1958414417); + c = FF(c, d, a, b, m[i+10], 17, -42063); + b = FF(b, c, d, a, m[i+11], 22, -1990404162); + a = FF(a, b, c, d, m[i+12], 7, 1804603682); + d = FF(d, a, b, c, m[i+13], 12, -40341101); + c = FF(c, d, a, b, m[i+14], 17, -1502002290); + b = FF(b, c, d, a, m[i+15], 22, 1236535329); + + a = GG(a, b, c, d, m[i+ 1], 5, -165796510); + d = GG(d, a, b, c, m[i+ 6], 9, -1069501632); + c = GG(c, d, a, b, m[i+11], 14, 643717713); + b = GG(b, c, d, a, m[i+ 0], 20, -373897302); + a = GG(a, b, c, d, m[i+ 5], 5, -701558691); + d = GG(d, a, b, c, m[i+10], 9, 38016083); + c = GG(c, d, a, b, m[i+15], 14, -660478335); + b = GG(b, c, d, a, m[i+ 4], 20, -405537848); + a = GG(a, b, c, d, m[i+ 9], 5, 568446438); + d = GG(d, a, b, c, m[i+14], 9, -1019803690); + c = GG(c, d, a, b, m[i+ 3], 14, -187363961); + b = GG(b, c, d, a, m[i+ 8], 20, 1163531501); + a = GG(a, b, c, d, m[i+13], 5, -1444681467); + d = GG(d, a, b, c, m[i+ 2], 9, -51403784); + c = GG(c, d, a, b, m[i+ 7], 14, 1735328473); + b = GG(b, c, d, a, m[i+12], 20, -1926607734); + + a = HH(a, b, c, d, m[i+ 5], 4, -378558); + d = HH(d, a, b, c, m[i+ 8], 11, -2022574463); + c = HH(c, d, a, b, m[i+11], 16, 1839030562); + b = HH(b, c, d, a, m[i+14], 23, -35309556); + a = HH(a, b, c, d, m[i+ 1], 4, -1530992060); + d = HH(d, a, b, c, m[i+ 4], 11, 1272893353); + c = HH(c, d, a, b, m[i+ 7], 16, -155497632); + b = HH(b, c, d, a, m[i+10], 23, -1094730640); + a = HH(a, b, c, d, m[i+13], 4, 681279174); + d = HH(d, a, b, c, m[i+ 0], 11, -358537222); + c = HH(c, d, a, b, m[i+ 3], 16, -722521979); + b = HH(b, c, d, a, m[i+ 6], 23, 76029189); + a = HH(a, b, c, d, m[i+ 9], 4, -640364487); + d = HH(d, a, b, c, m[i+12], 11, -421815835); + c = HH(c, d, a, b, m[i+15], 16, 530742520); + b = HH(b, c, d, a, m[i+ 2], 23, -995338651); + + a = II(a, b, c, d, m[i+ 0], 6, -198630844); + d = II(d, a, b, c, m[i+ 7], 10, 1126891415); + c = II(c, d, a, b, m[i+14], 15, -1416354905); + b = II(b, c, d, a, m[i+ 5], 21, -57434055); + a = II(a, b, c, d, m[i+12], 6, 1700485571); + d = II(d, a, b, c, m[i+ 3], 10, -1894986606); + c = II(c, d, a, b, m[i+10], 15, -1051523); + b = II(b, c, d, a, m[i+ 1], 21, -2054922799); + a = II(a, b, c, d, m[i+ 8], 6, 1873313359); + d = II(d, a, b, c, m[i+15], 10, -30611744); + c = II(c, d, a, b, m[i+ 6], 15, -1560198380); + b = II(b, c, d, a, m[i+13], 21, 1309151649); + a = II(a, b, c, d, m[i+ 4], 6, -145523070); + d = II(d, a, b, c, m[i+11], 10, -1120210379); + c = II(c, d, a, b, m[i+ 2], 15, 718787259); + b = II(b, c, d, a, m[i+ 9], 21, -343485551); + + a = (a + aa) >>> 0; + b = (b + bb) >>> 0; + c = (c + cc) >>> 0; + d = (d + dd) >>> 0; + } + + return crypt.endian([a, b, c, d]); + }; + + // Auxiliary functions + md5._ff = function (a, b, c, d, x, s, t) { + var n = a + (b & c | ~b & d) + (x >>> 0) + t; + return ((n << s) | (n >>> (32 - s))) + b; + }; + md5._gg = function (a, b, c, d, x, s, t) { + var n = a + (b & d | c & ~d) + (x >>> 0) + t; + return ((n << s) | (n >>> (32 - s))) + b; + }; + md5._hh = function (a, b, c, d, x, s, t) { + var n = a + (b ^ c ^ d) + (x >>> 0) + t; + return ((n << s) | (n >>> (32 - s))) + b; + }; + md5._ii = function (a, b, c, d, x, s, t) { + var n = a + (c ^ (b | ~d)) + (x >>> 0) + t; + return ((n << s) | (n >>> (32 - s))) + b; + }; + + // Package private blocksize + md5._blocksize = 16; + md5._digestsize = 16; + + module.exports = function (message, options) { + if (message === undefined || message === null) + throw new Error('Illegal argument ' + message); + + var digestbytes = crypt.wordsToBytes(md5(message, options)); + return options && options.asBytes ? digestbytes : + options && options.asString ? bin.bytesToString(digestbytes) : + crypt.bytesToHex(digestbytes); + }; + +})(); + + +/***/ }), +/* 497 */ +/***/ (function(module, exports) { + +(function() { + var base64map + = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/', + + crypt = { + // Bit-wise rotation left + rotl: function(n, b) { + return (n << b) | (n >>> (32 - b)); + }, + + // Bit-wise rotation right + rotr: function(n, b) { + return (n << (32 - b)) | (n >>> b); + }, + + // Swap big-endian to little-endian and vice versa + endian: function(n) { + // If number given, swap endian + if (n.constructor == Number) { + return crypt.rotl(n, 8) & 0x00FF00FF | crypt.rotl(n, 24) & 0xFF00FF00; + } + + // Else, assume array and swap all items + for (var i = 0; i < n.length; i++) + n[i] = crypt.endian(n[i]); + return n; + }, + + // Generate an array of any length of random bytes + randomBytes: function(n) { + for (var bytes = []; n > 0; n--) + bytes.push(Math.floor(Math.random() * 256)); + return bytes; + }, + + // Convert a byte array to big-endian 32-bit words + bytesToWords: function(bytes) { + for (var words = [], i = 0, b = 0; i < bytes.length; i++, b += 8) + words[b >>> 5] |= bytes[i] << (24 - b % 32); + return words; + }, + + // Convert big-endian 32-bit words to a byte array + wordsToBytes: function(words) { + for (var bytes = [], b = 0; b < words.length * 32; b += 8) + bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF); + return bytes; + }, + + // Convert a byte array to a hex string + bytesToHex: function(bytes) { + for (var hex = [], i = 0; i < bytes.length; i++) { + hex.push((bytes[i] >>> 4).toString(16)); + hex.push((bytes[i] & 0xF).toString(16)); + } + return hex.join(''); + }, + + // Convert a hex string to a byte array + hexToBytes: function(hex) { + for (var bytes = [], c = 0; c < hex.length; c += 2) + bytes.push(parseInt(hex.substr(c, 2), 16)); + return bytes; + }, + + // Convert a byte array to a base-64 string + bytesToBase64: function(bytes) { + for (var base64 = [], i = 0; i < bytes.length; i += 3) { + var triplet = (bytes[i] << 16) | (bytes[i + 1] << 8) | bytes[i + 2]; + for (var j = 0; j < 4; j++) + if (i * 8 + j * 6 <= bytes.length * 8) + base64.push(base64map.charAt((triplet >>> 6 * (3 - j)) & 0x3F)); + else + base64.push('='); + } + return base64.join(''); + }, + + // Convert a base-64 string to a byte array + base64ToBytes: function(base64) { + // Remove non-base-64 characters + base64 = base64.replace(/[^A-Z0-9+\/]/ig, ''); + + for (var bytes = [], i = 0, imod4 = 0; i < base64.length; + imod4 = ++i % 4) { + if (imod4 == 0) continue; + bytes.push(((base64map.indexOf(base64.charAt(i - 1)) + & (Math.pow(2, -2 * imod4 + 8) - 1)) << (imod4 * 2)) + | (base64map.indexOf(base64.charAt(i)) >>> (6 - imod4 * 2))); + } + return bytes; + } + }; + + module.exports = crypt; +})(); + + +/***/ }), +/* 498 */ +/***/ (function(module, exports) { + +/*! + * Determine if an object is a Buffer + * + * @author Feross Aboukhadijeh + * @license MIT + */ + +// The _isBuffer check is for Safari 5-7 support, because it's missing +// Object.prototype.constructor. Remove this eventually +module.exports = function (obj) { + return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer) +} + +function isBuffer (obj) { + return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj) +} + +// For Node v0.10 support. Remove this eventually. +function isSlowBuffer (obj) { + return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0)) +} + + +/***/ }), +/* 499 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(2); + +var _indexOf = _interopRequireDefault(__webpack_require__(102)); + +var dataURItoBlob = function dataURItoBlob(dataURI, type) { + var _context; + + var byteString; // 传入的 base64,不是 dataURL + + if ((0, _indexOf.default)(dataURI).call(dataURI, 'base64') < 0) { + byteString = atob(dataURI); + } else if ((0, _indexOf.default)(_context = dataURI.split(',')[0]).call(_context, 'base64') >= 0) { + type = type || dataURI.split(',')[0].split(':')[1].split(';')[0]; + byteString = atob(dataURI.split(',')[1]); + } else { + byteString = unescape(dataURI.split(',')[1]); + } + + var ia = new Uint8Array(byteString.length); + + for (var i = 0; i < byteString.length; i++) { + ia[i] = byteString.charCodeAt(i); + } + + return new Blob([ia], { + type: type + }); +}; + +module.exports = dataURItoBlob; + +/***/ }), +/* 500 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(2); + +var _slicedToArray2 = _interopRequireDefault(__webpack_require__(501)); + +var _map = _interopRequireDefault(__webpack_require__(39)); + +var _indexOf = _interopRequireDefault(__webpack_require__(102)); + +var _find = _interopRequireDefault(__webpack_require__(104)); + +var _promise = _interopRequireDefault(__webpack_require__(10)); + +var _concat = _interopRequireDefault(__webpack_require__(29)); + +var _keys2 = _interopRequireDefault(__webpack_require__(48)); + +var _stringify = _interopRequireDefault(__webpack_require__(34)); + +var _defineProperty = _interopRequireDefault(__webpack_require__(223)); + +var _getOwnPropertyDescriptor = _interopRequireDefault(__webpack_require__(522)); + +var _ = __webpack_require__(1); + +var AVError = __webpack_require__(40); + +var _require = __webpack_require__(25), + _request = _require._request; + +var _require2 = __webpack_require__(28), + isNullOrUndefined = _require2.isNullOrUndefined, + ensureArray = _require2.ensureArray, + transformFetchOptions = _require2.transformFetchOptions, + setValue = _require2.setValue, + findValue = _require2.findValue, + isPlainObject = _require2.isPlainObject, + continueWhile = _require2.continueWhile; + +var recursiveToPointer = function recursiveToPointer(value) { + if (_.isArray(value)) return (0, _map.default)(value).call(value, recursiveToPointer); + if (isPlainObject(value)) return _.mapObject(value, recursiveToPointer); + if (_.isObject(value) && value._toPointer) return value._toPointer(); + return value; +}; + +var RESERVED_KEYS = ['objectId', 'createdAt', 'updatedAt']; + +var checkReservedKey = function checkReservedKey(key) { + if ((0, _indexOf.default)(RESERVED_KEYS).call(RESERVED_KEYS, key) !== -1) { + throw new Error("key[".concat(key, "] is reserved")); + } +}; + +var handleBatchResults = function handleBatchResults(results) { + var firstError = (0, _find.default)(_).call(_, results, function (result) { + return result instanceof Error; + }); + + if (!firstError) { + return results; + } + + var error = new AVError(firstError.code, firstError.message); + error.results = results; + throw error; +}; // Helper function to get a value from a Backbone object as a property +// or as a function. + + +function getValue(object, prop) { + if (!(object && object[prop])) { + return null; + } + + return _.isFunction(object[prop]) ? object[prop]() : object[prop]; +} // AV.Object is analogous to the Java AVObject. +// It also implements the same interface as a Backbone model. + + +module.exports = function (AV) { + /** + * Creates a new model with defined attributes. A client id (cid) is + * automatically generated and assigned for you. + * + *

    You won't normally call this method directly. It is recommended that + * you use a subclass of AV.Object instead, created by calling + * extend.

    + * + *

    However, if you don't want to use a subclass, or aren't sure which + * subclass is appropriate, you can use this form:

    +   *     var object = new AV.Object("ClassName");
    +   * 
    + * That is basically equivalent to:
    +   *     var MyClass = AV.Object.extend("ClassName");
    +   *     var object = new MyClass();
    +   * 

    + * + * @param {Object} attributes The initial set of data to store in the object. + * @param {Object} options A set of Backbone-like options for creating the + * object. The only option currently supported is "collection". + * @see AV.Object.extend + * + * @class + * + *

    The fundamental unit of AV data, which implements the Backbone Model + * interface.

    + */ + AV.Object = function (attributes, options) { + // Allow new AV.Object("ClassName") as a shortcut to _create. + if (_.isString(attributes)) { + return AV.Object._create.apply(this, arguments); + } + + attributes = attributes || {}; + + if (options && options.parse) { + attributes = this.parse(attributes); + attributes = this._mergeMagicFields(attributes); + } + + var defaults = getValue(this, 'defaults'); + + if (defaults) { + attributes = _.extend({}, defaults, attributes); + } + + if (options && options.collection) { + this.collection = options.collection; + } + + this._serverData = {}; // The last known data for this object from cloud. + + this._opSetQueue = [{}]; // List of sets of changes to the data. + + this._flags = {}; + this.attributes = {}; // The best estimate of this's current data. + + this._hashedJSON = {}; // Hash of values of containers at last save. + + this._escapedAttributes = {}; + this.cid = _.uniqueId('c'); + this.changed = {}; + this._silent = {}; + this._pending = {}; + this.set(attributes, { + silent: true + }); + this.changed = {}; + this._silent = {}; + this._pending = {}; + this._hasData = true; + this._previousAttributes = _.clone(this.attributes); + this.initialize.apply(this, arguments); + }; + /** + * @lends AV.Object.prototype + * @property {String} id The objectId of the AV Object. + */ + + /** + * Saves the given list of AV.Object. + * If any error is encountered, stops and calls the error handler. + * + * @example + * AV.Object.saveAll([object1, object2, ...]).then(function(list) { + * // All the objects were saved. + * }, function(error) { + * // An error occurred while saving one of the objects. + * }); + * + * @param {Array} list A list of AV.Object. + */ + + + AV.Object.saveAll = function (list, options) { + return AV.Object._deepSaveAsync(list, null, options); + }; + /** + * Fetch the given list of AV.Object. + * + * @param {AV.Object[]} objects A list of AV.Object + * @param {AuthOptions} options + * @return {Promise.} The given list of AV.Object, updated + */ + + + AV.Object.fetchAll = function (objects, options) { + return _promise.default.resolve().then(function () { + return _request('batch', null, null, 'POST', { + requests: (0, _map.default)(_).call(_, objects, function (object) { + var _context; + + if (!object.className) throw new Error('object must have className to fetch'); + if (!object.id) throw new Error('object must have id to fetch'); + if (object.dirty()) throw new Error('object is modified but not saved'); + return { + method: 'GET', + path: (0, _concat.default)(_context = "/1.1/classes/".concat(object.className, "/")).call(_context, object.id) + }; + }) + }, options); + }).then(function (response) { + var results = (0, _map.default)(_).call(_, objects, function (object, i) { + if (response[i].success) { + var fetchedAttrs = object.parse(response[i].success); + + object._cleanupUnsetKeys(fetchedAttrs); + + object._finishFetch(fetchedAttrs); + + return object; + } + + if (response[i].success === null) { + return new AVError(AVError.OBJECT_NOT_FOUND, 'Object not found.'); + } + + return new AVError(response[i].error.code, response[i].error.error); + }); + return handleBatchResults(results); + }); + }; // Attach all inheritable methods to the AV.Object prototype. + + + _.extend(AV.Object.prototype, AV.Events, + /** @lends AV.Object.prototype */ + { + _fetchWhenSave: false, + + /** + * Initialize is an empty function by default. Override it with your own + * initialization logic. + */ + initialize: function initialize() {}, + + /** + * Set whether to enable fetchWhenSave option when updating object. + * When set true, SDK would fetch the latest object after saving. + * Default is false. + * + * @deprecated use AV.Object#save with options.fetchWhenSave instead + * @param {boolean} enable true to enable fetchWhenSave option. + */ + fetchWhenSave: function fetchWhenSave(enable) { + console.warn('AV.Object#fetchWhenSave is deprecated, use AV.Object#save with options.fetchWhenSave instead.'); + + if (!_.isBoolean(enable)) { + throw new Error('Expect boolean value for fetchWhenSave'); + } + + this._fetchWhenSave = enable; + }, + + /** + * Returns the object's objectId. + * @return {String} the objectId. + */ + getObjectId: function getObjectId() { + return this.id; + }, + + /** + * Returns the object's createdAt attribute. + * @return {Date} + */ + getCreatedAt: function getCreatedAt() { + return this.createdAt; + }, + + /** + * Returns the object's updatedAt attribute. + * @return {Date} + */ + getUpdatedAt: function getUpdatedAt() { + return this.updatedAt; + }, + + /** + * Returns a JSON version of the object. + * @return {Object} + */ + toJSON: function toJSON(key, holder) { + var seenObjects = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : []; + return this._toFullJSON(seenObjects, false); + }, + + /** + * Returns a JSON version of the object with meta data. + * Inverse to {@link AV.parseJSON} + * @since 3.0.0 + * @return {Object} + */ + toFullJSON: function toFullJSON() { + var seenObjects = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; + return this._toFullJSON(seenObjects); + }, + _toFullJSON: function _toFullJSON(seenObjects) { + var _this = this; + + var full = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + + var json = _.clone(this.attributes); + + if (_.isArray(seenObjects)) { + var newSeenObjects = (0, _concat.default)(seenObjects).call(seenObjects, this); + } + + AV._objectEach(json, function (val, key) { + json[key] = AV._encode(val, newSeenObjects, undefined, full); + }); + + AV._objectEach(this._operations, function (val, key) { + json[key] = val; + }); + + if (_.has(this, 'id')) { + json.objectId = this.id; + } + + ['createdAt', 'updatedAt'].forEach(function (key) { + if (_.has(_this, key)) { + var val = _this[key]; + json[key] = _.isDate(val) ? val.toJSON() : val; + } + }); + + if (full) { + json.__type = 'Object'; + if (_.isArray(seenObjects) && seenObjects.length) json.__type = 'Pointer'; + json.className = this.className; + } + + return json; + }, + + /** + * Updates _hashedJSON to reflect the current state of this object. + * Adds any changed hash values to the set of pending changes. + * @private + */ + _refreshCache: function _refreshCache() { + var self = this; + + if (self._refreshingCache) { + return; + } + + self._refreshingCache = true; + + AV._objectEach(this.attributes, function (value, key) { + if (value instanceof AV.Object) { + value._refreshCache(); + } else if (_.isObject(value)) { + if (self._resetCacheForKey(key)) { + self.set(key, new AV.Op.Set(value), { + silent: true + }); + } + } + }); + + delete self._refreshingCache; + }, + + /** + * Returns true if this object has been modified since its last + * save/refresh. If an attribute is specified, it returns true only if that + * particular attribute has been modified since the last save/refresh. + * @param {String} attr An attribute name (optional). + * @return {Boolean} + */ + dirty: function dirty(attr) { + this._refreshCache(); + + var currentChanges = _.last(this._opSetQueue); + + if (attr) { + return currentChanges[attr] ? true : false; + } + + if (!this.id) { + return true; + } + + if ((0, _keys2.default)(_).call(_, currentChanges).length > 0) { + return true; + } + + return false; + }, + + /** + * Returns the keys of the modified attribute since its last save/refresh. + * @return {String[]} + */ + dirtyKeys: function dirtyKeys() { + this._refreshCache(); + + var currentChanges = _.last(this._opSetQueue); + + return (0, _keys2.default)(_).call(_, currentChanges); + }, + + /** + * Gets a Pointer referencing this Object. + * @private + */ + _toPointer: function _toPointer() { + // if (!this.id) { + // throw new Error("Can't serialize an unsaved AV.Object"); + // } + return { + __type: 'Pointer', + className: this.className, + objectId: this.id + }; + }, + + /** + * Gets the value of an attribute. + * @param {String} attr The string name of an attribute. + */ + get: function get(attr) { + switch (attr) { + case 'objectId': + return this.id; + + case 'createdAt': + case 'updatedAt': + return this[attr]; + + default: + return this.attributes[attr]; + } + }, + + /** + * Gets a relation on the given class for the attribute. + * @param {String} attr The attribute to get the relation for. + * @return {AV.Relation} + */ + relation: function relation(attr) { + var value = this.get(attr); + + if (value) { + if (!(value instanceof AV.Relation)) { + throw new Error('Called relation() on non-relation field ' + attr); + } + + value._ensureParentAndKey(this, attr); + + return value; + } else { + return new AV.Relation(this, attr); + } + }, + + /** + * Gets the HTML-escaped value of an attribute. + */ + escape: function escape(attr) { + var html = this._escapedAttributes[attr]; + + if (html) { + return html; + } + + var val = this.attributes[attr]; + var escaped; + + if (isNullOrUndefined(val)) { + escaped = ''; + } else { + escaped = _.escape(val.toString()); + } + + this._escapedAttributes[attr] = escaped; + return escaped; + }, + + /** + * Returns true if the attribute contains a value that is not + * null or undefined. + * @param {String} attr The string name of the attribute. + * @return {Boolean} + */ + has: function has(attr) { + return !isNullOrUndefined(this.attributes[attr]); + }, + + /** + * Pulls "special" fields like objectId, createdAt, etc. out of attrs + * and puts them on "this" directly. Removes them from attrs. + * @param attrs - A dictionary with the data for this AV.Object. + * @private + */ + _mergeMagicFields: function _mergeMagicFields(attrs) { + // Check for changes of magic fields. + var model = this; + var specialFields = ['objectId', 'createdAt', 'updatedAt']; + + AV._arrayEach(specialFields, function (attr) { + if (attrs[attr]) { + if (attr === 'objectId') { + model.id = attrs[attr]; + } else if ((attr === 'createdAt' || attr === 'updatedAt') && !_.isDate(attrs[attr])) { + model[attr] = AV._parseDate(attrs[attr]); + } else { + model[attr] = attrs[attr]; + } + + delete attrs[attr]; + } + }); + + return attrs; + }, + + /** + * Returns the json to be sent to the server. + * @private + */ + _startSave: function _startSave() { + this._opSetQueue.push({}); + }, + + /** + * Called when a save fails because of an error. Any changes that were part + * of the save need to be merged with changes made after the save. This + * might throw an exception is you do conflicting operations. For example, + * if you do: + * object.set("foo", "bar"); + * object.set("invalid field name", "baz"); + * object.save(); + * object.increment("foo"); + * then this will throw when the save fails and the client tries to merge + * "bar" with the +1. + * @private + */ + _cancelSave: function _cancelSave() { + var failedChanges = _.first(this._opSetQueue); + + this._opSetQueue = _.rest(this._opSetQueue); + + var nextChanges = _.first(this._opSetQueue); + + AV._objectEach(failedChanges, function (op, key) { + var op1 = failedChanges[key]; + var op2 = nextChanges[key]; + + if (op1 && op2) { + nextChanges[key] = op2._mergeWithPrevious(op1); + } else if (op1) { + nextChanges[key] = op1; + } + }); + + this._saving = this._saving - 1; + }, + + /** + * Called when a save completes successfully. This merges the changes that + * were saved into the known server data, and overrides it with any data + * sent directly from the server. + * @private + */ + _finishSave: function _finishSave(serverData) { + var _context2; + + // Grab a copy of any object referenced by this object. These instances + // may have already been fetched, and we don't want to lose their data. + // Note that doing it like this means we will unify separate copies of the + // same object, but that's a risk we have to take. + var fetchedObjects = {}; + + AV._traverse(this.attributes, function (object) { + if (object instanceof AV.Object && object.id && object._hasData) { + fetchedObjects[object.id] = object; + } + }); + + var savedChanges = _.first(this._opSetQueue); + + this._opSetQueue = _.rest(this._opSetQueue); + + this._applyOpSet(savedChanges, this._serverData); + + this._mergeMagicFields(serverData); + + var self = this; + + AV._objectEach(serverData, function (value, key) { + self._serverData[key] = AV._decode(value, key); // Look for any objects that might have become unfetched and fix them + // by replacing their values with the previously observed values. + + var fetched = AV._traverse(self._serverData[key], function (object) { + if (object instanceof AV.Object && fetchedObjects[object.id]) { + return fetchedObjects[object.id]; + } + }); + + if (fetched) { + self._serverData[key] = fetched; + } + }); + + this._rebuildAllEstimatedData(); + + var opSetQueue = (0, _map.default)(_context2 = this._opSetQueue).call(_context2, _.clone); + + this._refreshCache(); + + this._opSetQueue = opSetQueue; + this._saving = this._saving - 1; + }, + + /** + * Called when a fetch or login is complete to set the known server data to + * the given object. + * @private + */ + _finishFetch: function _finishFetch(serverData, hasData) { + // Clear out any changes the user might have made previously. + this._opSetQueue = [{}]; // Bring in all the new server data. + + this._mergeMagicFields(serverData); + + var self = this; + + AV._objectEach(serverData, function (value, key) { + self._serverData[key] = AV._decode(value, key); + }); // Refresh the attributes. + + + this._rebuildAllEstimatedData(); // Clear out the cache of mutable containers. + + + this._refreshCache(); + + this._opSetQueue = [{}]; + this._hasData = hasData; + }, + + /** + * Applies the set of AV.Op in opSet to the object target. + * @private + */ + _applyOpSet: function _applyOpSet(opSet, target) { + var self = this; + + AV._objectEach(opSet, function (change, key) { + var _findValue = findValue(target, key), + _findValue2 = (0, _slicedToArray2.default)(_findValue, 3), + value = _findValue2[0], + actualTarget = _findValue2[1], + actualKey = _findValue2[2]; + + setValue(target, key, change._estimate(value, self, key)); + + if (actualTarget && actualTarget[actualKey] === AV.Op._UNSET) { + delete actualTarget[actualKey]; + } + }); + }, + + /** + * Replaces the cached value for key with the current value. + * Returns true if the new value is different than the old value. + * @private + */ + _resetCacheForKey: function _resetCacheForKey(key) { + var value = this.attributes[key]; + + if (_.isObject(value) && !(value instanceof AV.Object) && !(value instanceof AV.File)) { + var json = (0, _stringify.default)(recursiveToPointer(value)); + + if (this._hashedJSON[key] !== json) { + var wasSet = !!this._hashedJSON[key]; + this._hashedJSON[key] = json; + return wasSet; + } + } + + return false; + }, + + /** + * Populates attributes[key] by starting with the last known data from the + * server, and applying all of the local changes that have been made to that + * key since then. + * @private + */ + _rebuildEstimatedDataForKey: function _rebuildEstimatedDataForKey(key) { + var self = this; + delete this.attributes[key]; + + if (this._serverData[key]) { + this.attributes[key] = this._serverData[key]; + } + + AV._arrayEach(this._opSetQueue, function (opSet) { + var op = opSet[key]; + + if (op) { + var _findValue3 = findValue(self.attributes, key), + _findValue4 = (0, _slicedToArray2.default)(_findValue3, 4), + value = _findValue4[0], + actualTarget = _findValue4[1], + actualKey = _findValue4[2], + firstKey = _findValue4[3]; + + setValue(self.attributes, key, op._estimate(value, self, key)); + + if (actualTarget && actualTarget[actualKey] === AV.Op._UNSET) { + delete actualTarget[actualKey]; + } + + self._resetCacheForKey(firstKey); + } + }); + }, + + /** + * Populates attributes by starting with the last known data from the + * server, and applying all of the local changes that have been made since + * then. + * @private + */ + _rebuildAllEstimatedData: function _rebuildAllEstimatedData() { + var self = this; + + var previousAttributes = _.clone(this.attributes); + + this.attributes = _.clone(this._serverData); + + AV._arrayEach(this._opSetQueue, function (opSet) { + self._applyOpSet(opSet, self.attributes); + + AV._objectEach(opSet, function (op, key) { + self._resetCacheForKey(key); + }); + }); // Trigger change events for anything that changed because of the fetch. + + + AV._objectEach(previousAttributes, function (oldValue, key) { + if (self.attributes[key] !== oldValue) { + self.trigger('change:' + key, self, self.attributes[key], {}); + } + }); + + AV._objectEach(this.attributes, function (newValue, key) { + if (!_.has(previousAttributes, key)) { + self.trigger('change:' + key, self, newValue, {}); + } + }); + }, + + /** + * Sets a hash of model attributes on the object, firing + * "change" unless you choose to silence it. + * + *

    You can call it with an object containing keys and values, or with one + * key and value. For example:

    + * + * @example + * gameTurn.set({ + * player: player1, + * diceRoll: 2 + * }); + * + * game.set("currentPlayer", player2); + * + * game.set("finished", true); + * + * @param {String} key The key to set. + * @param {Any} value The value to give it. + * @param {Object} [options] + * @param {Boolean} [options.silent] + * @return {AV.Object} self if succeeded, throws if the value is not valid. + * @see AV.Object#validate + */ + set: function set(key, value, options) { + var attrs; + + if (_.isObject(key) || isNullOrUndefined(key)) { + attrs = _.mapObject(key, function (v, k) { + checkReservedKey(k); + return AV._decode(v, k); + }); + options = value; + } else { + attrs = {}; + checkReservedKey(key); + attrs[key] = AV._decode(value, key); + } // Extract attributes and options. + + + options = options || {}; + + if (!attrs) { + return this; + } + + if (attrs instanceof AV.Object) { + attrs = attrs.attributes; + } // If the unset option is used, every attribute should be a Unset. + + + if (options.unset) { + AV._objectEach(attrs, function (unused_value, key) { + attrs[key] = new AV.Op.Unset(); + }); + } // Apply all the attributes to get the estimated values. + + + var dataToValidate = _.clone(attrs); + + var self = this; + + AV._objectEach(dataToValidate, function (value, key) { + if (value instanceof AV.Op) { + dataToValidate[key] = value._estimate(self.attributes[key], self, key); + + if (dataToValidate[key] === AV.Op._UNSET) { + delete dataToValidate[key]; + } + } + }); // Run validation. + + + this._validate(attrs, options); + + options.changes = {}; + var escaped = this._escapedAttributes; // Update attributes. + + AV._arrayEach((0, _keys2.default)(_).call(_, attrs), function (attr) { + var val = attrs[attr]; // If this is a relation object we need to set the parent correctly, + // since the location where it was parsed does not have access to + // this object. + + if (val instanceof AV.Relation) { + val.parent = self; + } + + if (!(val instanceof AV.Op)) { + val = new AV.Op.Set(val); + } // See if this change will actually have any effect. + + + var isRealChange = true; + + if (val instanceof AV.Op.Set && _.isEqual(self.attributes[attr], val.value)) { + isRealChange = false; + } + + if (isRealChange) { + delete escaped[attr]; + + if (options.silent) { + self._silent[attr] = true; + } else { + options.changes[attr] = true; + } + } + + var currentChanges = _.last(self._opSetQueue); + + currentChanges[attr] = val._mergeWithPrevious(currentChanges[attr]); + + self._rebuildEstimatedDataForKey(attr); + + if (isRealChange) { + self.changed[attr] = self.attributes[attr]; + + if (!options.silent) { + self._pending[attr] = true; + } + } else { + delete self.changed[attr]; + delete self._pending[attr]; + } + }); + + if (!options.silent) { + this.change(options); + } + + return this; + }, + + /** + * Remove an attribute from the model, firing "change" unless + * you choose to silence it. This is a noop if the attribute doesn't + * exist. + * @param key {String} The key. + */ + unset: function unset(attr, options) { + options = options || {}; + options.unset = true; + return this.set(attr, null, options); + }, + + /** + * Atomically increments the value of the given attribute the next time the + * object is saved. If no amount is specified, 1 is used by default. + * + * @param key {String} The key. + * @param amount {Number} The amount to increment by. + */ + increment: function increment(attr, amount) { + if (_.isUndefined(amount) || _.isNull(amount)) { + amount = 1; + } + + return this.set(attr, new AV.Op.Increment(amount)); + }, + + /** + * Atomically add an object to the end of the array associated with a given + * key. + * @param key {String} The key. + * @param item {} The item to add. + */ + add: function add(attr, item) { + return this.set(attr, new AV.Op.Add(ensureArray(item))); + }, + + /** + * Atomically add an object to the array associated with a given key, only + * if it is not already present in the array. The position of the insert is + * not guaranteed. + * + * @param key {String} The key. + * @param item {} The object to add. + */ + addUnique: function addUnique(attr, item) { + return this.set(attr, new AV.Op.AddUnique(ensureArray(item))); + }, + + /** + * Atomically remove all instances of an object from the array associated + * with a given key. + * + * @param key {String} The key. + * @param item {} The object to remove. + */ + remove: function remove(attr, item) { + return this.set(attr, new AV.Op.Remove(ensureArray(item))); + }, + + /** + * Atomically apply a "bit and" operation on the value associated with a + * given key. + * + * @param key {String} The key. + * @param value {Number} The value to apply. + */ + bitAnd: function bitAnd(attr, value) { + return this.set(attr, new AV.Op.BitAnd(value)); + }, + + /** + * Atomically apply a "bit or" operation on the value associated with a + * given key. + * + * @param key {String} The key. + * @param value {Number} The value to apply. + */ + bitOr: function bitOr(attr, value) { + return this.set(attr, new AV.Op.BitOr(value)); + }, + + /** + * Atomically apply a "bit xor" operation on the value associated with a + * given key. + * + * @param key {String} The key. + * @param value {Number} The value to apply. + */ + bitXor: function bitXor(attr, value) { + return this.set(attr, new AV.Op.BitXor(value)); + }, + + /** + * Returns an instance of a subclass of AV.Op describing what kind of + * modification has been performed on this field since the last time it was + * saved. For example, after calling object.increment("x"), calling + * object.op("x") would return an instance of AV.Op.Increment. + * + * @param key {String} The key. + * @returns {AV.Op} The operation, or undefined if none. + */ + op: function op(attr) { + return _.last(this._opSetQueue)[attr]; + }, + + /** + * Clear all attributes on the model, firing "change" unless + * you choose to silence it. + */ + clear: function clear(options) { + options = options || {}; + options.unset = true; + + var keysToClear = _.extend(this.attributes, this._operations); + + return this.set(keysToClear, options); + }, + + /** + * Clears any (or specific) changes to the model made since the last save. + * @param {string|string[]} [keys] specify keys to revert. + */ + revert: function revert(keys) { + var lastOp = _.last(this._opSetQueue); + + var _keys = ensureArray(keys || (0, _keys2.default)(_).call(_, lastOp)); + + _keys.forEach(function (key) { + delete lastOp[key]; + }); + + this._rebuildAllEstimatedData(); + + return this; + }, + + /** + * Returns a JSON-encoded set of operations to be sent with the next save + * request. + * @private + */ + _getSaveJSON: function _getSaveJSON() { + var json = _.clone(_.first(this._opSetQueue)); + + AV._objectEach(json, function (op, key) { + json[key] = op.toJSON(); + }); + + return json; + }, + + /** + * Returns true if this object can be serialized for saving. + * @private + */ + _canBeSerialized: function _canBeSerialized() { + return AV.Object._canBeSerializedAsValue(this.attributes); + }, + + /** + * Fetch the model from the server. If the server's representation of the + * model differs from its current attributes, they will be overriden, + * triggering a "change" event. + * @param {Object} fetchOptions Optional options to set 'keys', + * 'include' and 'includeACL' option. + * @param {AuthOptions} options + * @return {Promise} A promise that is fulfilled when the fetch + * completes. + */ + fetch: function fetch() { + var fetchOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + var options = arguments.length > 1 ? arguments[1] : undefined; + + if (!this.id) { + throw new Error('Cannot fetch unsaved object'); + } + + var self = this; + + var request = _request('classes', this.className, this.id, 'GET', transformFetchOptions(fetchOptions), options); + + return request.then(function (response) { + var fetchedAttrs = self.parse(response); + + self._cleanupUnsetKeys(fetchedAttrs, (0, _keys2.default)(fetchOptions) ? ensureArray((0, _keys2.default)(fetchOptions)).join(',').split(',') : undefined); + + self._finishFetch(fetchedAttrs, true); + + return self; + }); + }, + _cleanupUnsetKeys: function _cleanupUnsetKeys(fetchedAttrs) { + var _this2 = this; + + var fetchedKeys = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : (0, _keys2.default)(_).call(_, this._serverData); + + _.forEach(fetchedKeys, function (key) { + if (fetchedAttrs[key] === undefined) delete _this2._serverData[key]; + }); + }, + + /** + * Set a hash of model attributes, and save the model to the server. + * updatedAt will be updated when the request returns. + * You can either call it as:
    +     *   object.save();
    + * or
    +     *   object.save(null, options);
    + * or
    +     *   object.save(attrs, options);
    + * or
    +     *   object.save(key, value, options);
    + * + * @example + * gameTurn.save({ + * player: "Jake Cutter", + * diceRoll: 2 + * }).then(function(gameTurnAgain) { + * // The save was successful. + * }, function(error) { + * // The save failed. Error is an instance of AVError. + * }); + * + * @param {AuthOptions} options AuthOptions plus: + * @param {Boolean} options.fetchWhenSave fetch and update object after save succeeded + * @param {AV.Query} options.query Save object only when it matches the query + * @return {Promise} A promise that is fulfilled when the save + * completes. + * @see AVError + */ + save: function save(arg1, arg2, arg3) { + var attrs, current, options; + + if (_.isObject(arg1) || isNullOrUndefined(arg1)) { + attrs = arg1; + options = arg2; + } else { + attrs = {}; + attrs[arg1] = arg2; + options = arg3; + } + + options = _.clone(options) || {}; + + if (options.wait) { + current = _.clone(this.attributes); + } + + var setOptions = _.clone(options) || {}; + + if (setOptions.wait) { + setOptions.silent = true; + } + + if (attrs) { + this.set(attrs, setOptions); + } + + var model = this; + var unsavedChildren = []; + var unsavedFiles = []; + + AV.Object._findUnsavedChildren(model, unsavedChildren, unsavedFiles); + + if (unsavedChildren.length + unsavedFiles.length > 1) { + return AV.Object._deepSaveAsync(this, model, options); + } + + this._startSave(); + + this._saving = (this._saving || 0) + 1; + this._allPreviousSaves = this._allPreviousSaves || _promise.default.resolve(); + this._allPreviousSaves = this._allPreviousSaves.catch(function (e) {}).then(function () { + var method = model.id ? 'PUT' : 'POST'; + + var json = model._getSaveJSON(); + + var query = {}; + + if (model._fetchWhenSave || options.fetchWhenSave) { + query['new'] = 'true'; + } // user login option + + + if (options._failOnNotExist) { + query.failOnNotExist = 'true'; + } + + if (options.query) { + var queryParams; + + if (typeof options.query._getParams === 'function') { + queryParams = options.query._getParams(); + + if (queryParams) { + query.where = queryParams.where; + } + } + + if (!query.where) { + var error = new Error('options.query is not an AV.Query'); + throw error; + } + } + + _.extend(json, model._flags); + + var route = 'classes'; + var className = model.className; + + if (model.className === '_User' && !model.id) { + // Special-case user sign-up. + route = 'users'; + className = null; + } //hook makeRequest in options. + + + var makeRequest = options._makeRequest || _request; + var requestPromise = makeRequest(route, className, model.id, method, json, options, query); + requestPromise = requestPromise.then(function (resp) { + var serverAttrs = model.parse(resp); + + if (options.wait) { + serverAttrs = _.extend(attrs || {}, serverAttrs); + } + + model._finishSave(serverAttrs); + + if (options.wait) { + model.set(current, setOptions); + } + + return model; + }, function (error) { + model._cancelSave(); + + throw error; + }); + return requestPromise; + }); + return this._allPreviousSaves; + }, + + /** + * Destroy this model on the server if it was already persisted. + * Optimistically removes the model from its collection, if it has one. + * @param {AuthOptions} options AuthOptions plus: + * @param {Boolean} [options.wait] wait for the server to respond + * before removal. + * + * @return {Promise} A promise that is fulfilled when the destroy + * completes. + */ + destroy: function destroy(options) { + options = options || {}; + var model = this; + + var triggerDestroy = function triggerDestroy() { + model.trigger('destroy', model, model.collection, options); + }; + + if (!this.id) { + return triggerDestroy(); + } + + if (!options.wait) { + triggerDestroy(); + } + + var request = _request('classes', this.className, this.id, 'DELETE', this._flags, options); + + return request.then(function () { + if (options.wait) { + triggerDestroy(); + } + + return model; + }); + }, + + /** + * Converts a response into the hash of attributes to be set on the model. + * @ignore + */ + parse: function parse(resp) { + var output = _.clone(resp); + + ['createdAt', 'updatedAt'].forEach(function (key) { + if (output[key]) { + output[key] = AV._parseDate(output[key]); + } + }); + + if (output.createdAt && !output.updatedAt) { + output.updatedAt = output.createdAt; + } + + return output; + }, + + /** + * Creates a new model with identical attributes to this one. + * @return {AV.Object} + */ + clone: function clone() { + return new this.constructor(this.attributes); + }, + + /** + * Returns true if this object has never been saved to AV. + * @return {Boolean} + */ + isNew: function isNew() { + return !this.id; + }, + + /** + * Call this method to manually fire a `"change"` event for this model and + * a `"change:attribute"` event for each changed attribute. + * Calling this will cause all objects observing the model to update. + */ + change: function change(options) { + options = options || {}; + var changing = this._changing; + this._changing = true; // Silent changes become pending changes. + + var self = this; + + AV._objectEach(this._silent, function (attr) { + self._pending[attr] = true; + }); // Silent changes are triggered. + + + var changes = _.extend({}, options.changes, this._silent); + + this._silent = {}; + + AV._objectEach(changes, function (unused_value, attr) { + self.trigger('change:' + attr, self, self.get(attr), options); + }); + + if (changing) { + return this; + } // This is to get around lint not letting us make a function in a loop. + + + var deleteChanged = function deleteChanged(value, attr) { + if (!self._pending[attr] && !self._silent[attr]) { + delete self.changed[attr]; + } + }; // Continue firing `"change"` events while there are pending changes. + + + while (!_.isEmpty(this._pending)) { + this._pending = {}; + this.trigger('change', this, options); // Pending and silent changes still remain. + + AV._objectEach(this.changed, deleteChanged); + + self._previousAttributes = _.clone(this.attributes); + } + + this._changing = false; + return this; + }, + + /** + * Gets the previous value of an attribute, recorded at the time the last + * "change" event was fired. + * @param {String} attr Name of the attribute to get. + */ + previous: function previous(attr) { + if (!arguments.length || !this._previousAttributes) { + return null; + } + + return this._previousAttributes[attr]; + }, + + /** + * Gets all of the attributes of the model at the time of the previous + * "change" event. + * @return {Object} + */ + previousAttributes: function previousAttributes() { + return _.clone(this._previousAttributes); + }, + + /** + * Checks if the model is currently in a valid state. It's only possible to + * get into an *invalid* state if you're using silent changes. + * @return {Boolean} + */ + isValid: function isValid() { + try { + this.validate(this.attributes); + } catch (error) { + return false; + } + + return true; + }, + + /** + * You should not call this function directly unless you subclass + * AV.Object, in which case you can override this method + * to provide additional validation on set and + * save. Your implementation should throw an Error if + * the attrs is invalid + * + * @param {Object} attrs The current data to validate. + * @see AV.Object#set + */ + validate: function validate(attrs) { + if (_.has(attrs, 'ACL') && !(attrs.ACL instanceof AV.ACL)) { + throw new AVError(AVError.OTHER_CAUSE, 'ACL must be a AV.ACL.'); + } + }, + + /** + * Run validation against a set of incoming attributes, returning `true` + * if all is well. If a specific `error` callback has been passed, + * call that instead of firing the general `"error"` event. + * @private + */ + _validate: function _validate(attrs, options) { + if (options.silent || !this.validate) { + return; + } + + attrs = _.extend({}, this.attributes, attrs); + this.validate(attrs); + }, + + /** + * Returns the ACL for this object. + * @returns {AV.ACL} An instance of AV.ACL. + * @see AV.Object#get + */ + getACL: function getACL() { + return this.get('ACL'); + }, + + /** + * Sets the ACL to be used for this object. + * @param {AV.ACL} acl An instance of AV.ACL. + * @param {Object} options Optional Backbone-like options object to be + * passed in to set. + * @return {AV.Object} self + * @see AV.Object#set + */ + setACL: function setACL(acl, options) { + return this.set('ACL', acl, options); + }, + disableBeforeHook: function disableBeforeHook() { + this.ignoreHook('beforeSave'); + this.ignoreHook('beforeUpdate'); + this.ignoreHook('beforeDelete'); + }, + disableAfterHook: function disableAfterHook() { + this.ignoreHook('afterSave'); + this.ignoreHook('afterUpdate'); + this.ignoreHook('afterDelete'); + }, + ignoreHook: function ignoreHook(hookName) { + if (!_.contains(['beforeSave', 'afterSave', 'beforeUpdate', 'afterUpdate', 'beforeDelete', 'afterDelete'], hookName)) { + throw new Error('Unsupported hookName: ' + hookName); + } + + if (!AV.hookKey) { + throw new Error('ignoreHook required hookKey'); + } + + if (!this._flags.__ignore_hooks) { + this._flags.__ignore_hooks = []; + } + + this._flags.__ignore_hooks.push(hookName); + } + }); + /** + * Creates an instance of a subclass of AV.Object for the give classname + * and id. + * @param {String|Function} class the className or a subclass of AV.Object. + * @param {String} id The object id of this model. + * @return {AV.Object} A new subclass instance of AV.Object. + */ + + + AV.Object.createWithoutData = function (klass, id, hasData) { + var _klass; + + if (_.isString(klass)) { + _klass = AV.Object._getSubclass(klass); + } else if (klass.prototype && klass.prototype instanceof AV.Object) { + _klass = klass; + } else { + throw new Error('class must be a string or a subclass of AV.Object.'); + } + + if (!id) { + throw new TypeError('The objectId must be provided'); + } + + var object = new _klass(); + object.id = id; + object._hasData = hasData; + return object; + }; + /** + * Delete objects in batch. + * @param {AV.Object[]} objects The AV.Object array to be deleted. + * @param {AuthOptions} options + * @return {Promise} A promise that is fulfilled when the save + * completes. + */ + + + AV.Object.destroyAll = function (objects) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + if (!objects || objects.length === 0) { + return _promise.default.resolve(); + } + + var objectsByClassNameAndFlags = _.groupBy(objects, function (object) { + return (0, _stringify.default)({ + className: object.className, + flags: object._flags + }); + }); + + var body = { + requests: (0, _map.default)(_).call(_, objectsByClassNameAndFlags, function (objects) { + var _context3; + + var ids = (0, _map.default)(_).call(_, objects, 'id').join(','); + return { + method: 'DELETE', + path: (0, _concat.default)(_context3 = "/1.1/classes/".concat(objects[0].className, "/")).call(_context3, ids), + body: objects[0]._flags + }; + }) + }; + return _request('batch', null, null, 'POST', body, options).then(function (response) { + var firstError = (0, _find.default)(_).call(_, response, function (result) { + return !result.success; + }); + if (firstError) throw new AVError(firstError.error.code, firstError.error.error); + return undefined; + }); + }; + /** + * Returns the appropriate subclass for making new instances of the given + * className string. + * @private + */ + + + AV.Object._getSubclass = function (className) { + if (!_.isString(className)) { + throw new Error('AV.Object._getSubclass requires a string argument.'); + } + + var ObjectClass = AV.Object._classMap[className]; + + if (!ObjectClass) { + ObjectClass = AV.Object.extend(className); + AV.Object._classMap[className] = ObjectClass; + } + + return ObjectClass; + }; + /** + * Creates an instance of a subclass of AV.Object for the given classname. + * @private + */ + + + AV.Object._create = function (className, attributes, options) { + var ObjectClass = AV.Object._getSubclass(className); + + return new ObjectClass(attributes, options); + }; // Set up a map of className to class so that we can create new instances of + // AV Objects from JSON automatically. + + + AV.Object._classMap = {}; + AV.Object._extend = AV._extend; + /** + * Creates a new model with defined attributes, + * It's the same with + *
    +   *   new AV.Object(attributes, options);
    +   *  
    + * @param {Object} attributes The initial set of data to store in the object. + * @param {Object} options A set of Backbone-like options for creating the + * object. The only option currently supported is "collection". + * @return {AV.Object} + * @since v0.4.4 + * @see AV.Object + * @see AV.Object.extend + */ + + AV.Object['new'] = function (attributes, options) { + return new AV.Object(attributes, options); + }; + /** + * Creates a new subclass of AV.Object for the given AV class name. + * + *

    Every extension of a AV class will inherit from the most recent + * previous extension of that class. When a AV.Object is automatically + * created by parsing JSON, it will use the most recent extension of that + * class.

    + * + * @example + * var MyClass = AV.Object.extend("MyClass", { + * // Instance properties + * }, { + * // Class properties + * }); + * + * @param {String} className The name of the AV class backing this model. + * @param {Object} protoProps Instance properties to add to instances of the + * class returned from this method. + * @param {Object} classProps Class properties to add the class returned from + * this method. + * @return {Class} A new subclass of AV.Object. + */ + + + AV.Object.extend = function (className, protoProps, classProps) { + // Handle the case with only two args. + if (!_.isString(className)) { + if (className && _.has(className, 'className')) { + return AV.Object.extend(className.className, className, protoProps); + } else { + throw new Error("AV.Object.extend's first argument should be the className."); + } + } // If someone tries to subclass "User", coerce it to the right type. + + + if (className === 'User') { + className = '_User'; + } + + var NewClassObject = null; + + if (_.has(AV.Object._classMap, className)) { + var OldClassObject = AV.Object._classMap[className]; // This new subclass has been told to extend both from "this" and from + // OldClassObject. This is multiple inheritance, which isn't supported. + // For now, let's just pick one. + + if (protoProps || classProps) { + NewClassObject = OldClassObject._extend(protoProps, classProps); + } else { + return OldClassObject; + } + } else { + protoProps = protoProps || {}; + protoProps._className = className; + NewClassObject = this._extend(protoProps, classProps); + } // Extending a subclass should reuse the classname automatically. + + + NewClassObject.extend = function (arg0) { + var _context4; + + if (_.isString(arg0) || arg0 && _.has(arg0, 'className')) { + return AV.Object.extend.apply(NewClassObject, arguments); + } + + var newArguments = (0, _concat.default)(_context4 = [className]).call(_context4, _.toArray(arguments)); + return AV.Object.extend.apply(NewClassObject, newArguments); + }; // Add the query property descriptor. + + + (0, _defineProperty.default)(NewClassObject, 'query', (0, _getOwnPropertyDescriptor.default)(AV.Object, 'query')); + + NewClassObject['new'] = function (attributes, options) { + return new NewClassObject(attributes, options); + }; + + AV.Object._classMap[className] = NewClassObject; + return NewClassObject; + }; // ES6 class syntax support + + + (0, _defineProperty.default)(AV.Object.prototype, 'className', { + get: function get() { + var className = this._className || this.constructor._LCClassName || this.constructor.name; // If someone tries to subclass "User", coerce it to the right type. + + if (className === 'User') { + return '_User'; + } + + return className; + } + }); + /** + * Register a class. + * If a subclass of AV.Object is defined with your own implement + * rather then AV.Object.extend, the subclass must be registered. + * @param {Function} klass A subclass of AV.Object + * @param {String} [name] Specify the name of the class. Useful when the class might be uglified. + * @example + * class Person extend AV.Object {} + * AV.Object.register(Person); + */ + + AV.Object.register = function (klass, name) { + if (!(klass.prototype instanceof AV.Object)) { + throw new Error('registered class is not a subclass of AV.Object'); + } + + var className = name || klass.name; + + if (!className.length) { + throw new Error('registered class must be named'); + } + + if (name) { + klass._LCClassName = name; + } + + AV.Object._classMap[className] = klass; + }; + /** + * Get a new Query of the current class + * @name query + * @memberof AV.Object + * @type AV.Query + * @readonly + * @since v3.1.0 + * @example + * const Post = AV.Object.extend('Post'); + * Post.query.equalTo('author', 'leancloud').find().then(); + */ + + + (0, _defineProperty.default)(AV.Object, 'query', { + get: function get() { + return new AV.Query(this.prototype.className); + } + }); + + AV.Object._findUnsavedChildren = function (objects, children, files) { + AV._traverse(objects, function (object) { + if (object instanceof AV.Object) { + if (object.dirty()) { + children.push(object); + } + + return; + } + + if (object instanceof AV.File) { + if (!object.id) { + files.push(object); + } + + return; + } + }); + }; + + AV.Object._canBeSerializedAsValue = function (object) { + var canBeSerializedAsValue = true; + + if (object instanceof AV.Object || object instanceof AV.File) { + canBeSerializedAsValue = !!object.id; + } else if (_.isArray(object)) { + AV._arrayEach(object, function (child) { + if (!AV.Object._canBeSerializedAsValue(child)) { + canBeSerializedAsValue = false; + } + }); + } else if (_.isObject(object)) { + AV._objectEach(object, function (child) { + if (!AV.Object._canBeSerializedAsValue(child)) { + canBeSerializedAsValue = false; + } + }); + } + + return canBeSerializedAsValue; + }; + + AV.Object._deepSaveAsync = function (object, model, options) { + var unsavedChildren = []; + var unsavedFiles = []; + + AV.Object._findUnsavedChildren(object, unsavedChildren, unsavedFiles); + + unsavedFiles = _.uniq(unsavedFiles); + + var promise = _promise.default.resolve(); + + _.each(unsavedFiles, function (file) { + promise = promise.then(function () { + return file.save(); + }); + }); + + var objects = _.uniq(unsavedChildren); + + var remaining = _.uniq(objects); + + return promise.then(function () { + return continueWhile(function () { + return remaining.length > 0; + }, function () { + // Gather up all the objects that can be saved in this batch. + var batch = []; + var newRemaining = []; + + AV._arrayEach(remaining, function (object) { + if (object._canBeSerialized()) { + batch.push(object); + } else { + newRemaining.push(object); + } + }); + + remaining = newRemaining; // If we can't save any objects, there must be a circular reference. + + if (batch.length === 0) { + return _promise.default.reject(new AVError(AVError.OTHER_CAUSE, 'Tried to save a batch with a cycle.')); + } // Reserve a spot in every object's save queue. + + + var readyToStart = _promise.default.resolve((0, _map.default)(_).call(_, batch, function (object) { + return object._allPreviousSaves || _promise.default.resolve(); + })); // Save a single batch, whether previous saves succeeded or failed. + + + var bathSavePromise = readyToStart.then(function () { + return _request('batch', null, null, 'POST', { + requests: (0, _map.default)(_).call(_, batch, function (object) { + var method = object.id ? 'PUT' : 'POST'; + + var json = object._getSaveJSON(); + + _.extend(json, object._flags); + + var route = 'classes'; + var className = object.className; + var path = "/".concat(route, "/").concat(className); + + if (object.className === '_User' && !object.id) { + // Special-case user sign-up. + path = '/users'; + } + + var path = "/1.1".concat(path); + + if (object.id) { + path = path + '/' + object.id; + } + + object._startSave(); + + return { + method: method, + path: path, + body: json, + params: options && options.fetchWhenSave ? { + fetchWhenSave: true + } : undefined + }; + }) + }, options).then(function (response) { + var results = (0, _map.default)(_).call(_, batch, function (object, i) { + if (response[i].success) { + object._finishSave(object.parse(response[i].success)); + + return object; + } + + object._cancelSave(); + + return new AVError(response[i].error.code, response[i].error.error); + }); + return handleBatchResults(results); + }); + }); + + AV._arrayEach(batch, function (object) { + object._allPreviousSaves = bathSavePromise; + }); + + return bathSavePromise; + }); + }).then(function () { + return object; + }); + }; +}; + +/***/ }), +/* 501 */ +/***/ (function(module, exports, __webpack_require__) { + +var arrayWithHoles = __webpack_require__(502); + +var iterableToArrayLimit = __webpack_require__(510); + +var unsupportedIterableToArray = __webpack_require__(511); + +var nonIterableRest = __webpack_require__(521); + +function _slicedToArray(arr, i) { + return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest(); +} + +module.exports = _slicedToArray, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), +/* 502 */ +/***/ (function(module, exports, __webpack_require__) { + +var _Array$isArray = __webpack_require__(503); + +function _arrayWithHoles(arr) { + if (_Array$isArray(arr)) return arr; +} + +module.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), +/* 503 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__(504); + +/***/ }), +/* 504 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__(505); + + +/***/ }), +/* 505 */ +/***/ (function(module, exports, __webpack_require__) { + +var parent = __webpack_require__(506); + +module.exports = parent; + + +/***/ }), +/* 506 */ +/***/ (function(module, exports, __webpack_require__) { + +var parent = __webpack_require__(507); + +module.exports = parent; + + +/***/ }), +/* 507 */ +/***/ (function(module, exports, __webpack_require__) { + +var parent = __webpack_require__(508); + +module.exports = parent; + + +/***/ }), +/* 508 */ +/***/ (function(module, exports, __webpack_require__) { + +__webpack_require__(509); +var path = __webpack_require__(13); + +module.exports = path.Array.isArray; + + +/***/ }), +/* 509 */ +/***/ (function(module, exports, __webpack_require__) { + +var $ = __webpack_require__(0); +var isArray = __webpack_require__(80); + +// `Array.isArray` method +// https://tc39.es/ecma262/#sec-array.isarray +$({ target: 'Array', stat: true }, { + isArray: isArray +}); + + +/***/ }), +/* 510 */ +/***/ (function(module, exports, __webpack_require__) { + +var _Symbol = __webpack_require__(225); + +var _getIteratorMethod = __webpack_require__(231); + +function _iterableToArrayLimit(arr, i) { + var _i = arr == null ? null : typeof _Symbol !== "undefined" && _getIteratorMethod(arr) || arr["@@iterator"]; + + if (_i == null) return; + var _arr = []; + var _n = true; + var _d = false; + + var _s, _e; + + try { + for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { + _arr.push(_s.value); + + if (i && _arr.length === i) break; + } + } catch (err) { + _d = true; + _e = err; + } finally { + try { + if (!_n && _i["return"] != null) _i["return"](); + } finally { + if (_d) throw _e; + } + } + + return _arr; +} + +module.exports = _iterableToArrayLimit, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), +/* 511 */ +/***/ (function(module, exports, __webpack_require__) { + +var _sliceInstanceProperty = __webpack_require__(512); + +var _Array$from = __webpack_require__(516); + +var arrayLikeToArray = __webpack_require__(520); + +function _unsupportedIterableToArray(o, minLen) { + var _context; + + if (!o) return; + if (typeof o === "string") return arrayLikeToArray(o, minLen); + + var n = _sliceInstanceProperty(_context = Object.prototype.toString.call(o)).call(_context, 8, -1); + + if (n === "Object" && o.constructor) n = o.constructor.name; + if (n === "Map" || n === "Set") return _Array$from(o); + if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen); +} + +module.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), +/* 512 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__(513); + +/***/ }), +/* 513 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__(514); + + +/***/ }), +/* 514 */ +/***/ (function(module, exports, __webpack_require__) { + +var parent = __webpack_require__(515); + +module.exports = parent; + + +/***/ }), +/* 515 */ +/***/ (function(module, exports, __webpack_require__) { + +var parent = __webpack_require__(222); + +module.exports = parent; + + +/***/ }), +/* 516 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__(517); + +/***/ }), +/* 517 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__(518); + + +/***/ }), +/* 518 */ +/***/ (function(module, exports, __webpack_require__) { + +var parent = __webpack_require__(519); + +module.exports = parent; + + +/***/ }), +/* 519 */ +/***/ (function(module, exports, __webpack_require__) { + +var parent = __webpack_require__(230); + +module.exports = parent; + + +/***/ }), +/* 520 */ +/***/ (function(module, exports) { + +function _arrayLikeToArray(arr, len) { + if (len == null || len > arr.length) len = arr.length; + + for (var i = 0, arr2 = new Array(len); i < len; i++) { + arr2[i] = arr[i]; + } + + return arr2; +} + +module.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), +/* 521 */ +/***/ (function(module, exports) { + +function _nonIterableRest() { + throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); +} + +module.exports = _nonIterableRest, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), +/* 522 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__(523); + +/***/ }), +/* 523 */ +/***/ (function(module, exports, __webpack_require__) { + +var parent = __webpack_require__(524); + +module.exports = parent; + + +/***/ }), +/* 524 */ +/***/ (function(module, exports, __webpack_require__) { + +__webpack_require__(525); +var path = __webpack_require__(13); + +var Object = path.Object; + +var getOwnPropertyDescriptor = module.exports = function getOwnPropertyDescriptor(it, key) { + return Object.getOwnPropertyDescriptor(it, key); +}; + +if (Object.getOwnPropertyDescriptor.sham) getOwnPropertyDescriptor.sham = true; + + +/***/ }), +/* 525 */ +/***/ (function(module, exports, __webpack_require__) { + +var $ = __webpack_require__(0); +var fails = __webpack_require__(4); +var toIndexedObject = __webpack_require__(33); +var nativeGetOwnPropertyDescriptor = __webpack_require__(64).f; +var DESCRIPTORS = __webpack_require__(19); + +var FAILS_ON_PRIMITIVES = fails(function () { nativeGetOwnPropertyDescriptor(1); }); +var FORCED = !DESCRIPTORS || FAILS_ON_PRIMITIVES; + +// `Object.getOwnPropertyDescriptor` method +// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor +$({ target: 'Object', stat: true, forced: FORCED, sham: !DESCRIPTORS }, { + getOwnPropertyDescriptor: function getOwnPropertyDescriptor(it, key) { + return nativeGetOwnPropertyDescriptor(toIndexedObject(it), key); + } +}); + + +/***/ }), +/* 526 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _ = __webpack_require__(1); + +var AVError = __webpack_require__(40); + +module.exports = function (AV) { + AV.Role = AV.Object.extend('_Role', + /** @lends AV.Role.prototype */ + { + // Instance Methods + + /** + * Represents a Role on the AV server. Roles represent groupings of + * Users for the purposes of granting permissions (e.g. specifying an ACL + * for an Object). Roles are specified by their sets of child users and + * child roles, all of which are granted any permissions that the parent + * role has. + * + *

    Roles must have a name (which cannot be changed after creation of the + * role), and must specify an ACL.

    + * An AV.Role is a local representation of a role persisted to the AV + * cloud. + * @class AV.Role + * @param {String} name The name of the Role to create. + * @param {AV.ACL} acl The ACL for this role. + */ + constructor: function constructor(name, acl) { + if (_.isString(name)) { + AV.Object.prototype.constructor.call(this, null, null); + this.setName(name); + } else { + AV.Object.prototype.constructor.call(this, name, acl); + } + + if (acl) { + if (!(acl instanceof AV.ACL)) { + throw new TypeError('acl must be an instance of AV.ACL'); + } else { + this.setACL(acl); + } + } + }, + + /** + * Gets the name of the role. You can alternatively call role.get("name") + * + * @return {String} the name of the role. + */ + getName: function getName() { + return this.get('name'); + }, + + /** + * Sets the name for a role. This value must be set before the role has + * been saved to the server, and cannot be set once the role has been + * saved. + * + *

    + * A role's name can only contain alphanumeric characters, _, -, and + * spaces. + *

    + * + *

    This is equivalent to calling role.set("name", name)

    + * + * @param {String} name The name of the role. + */ + setName: function setName(name, options) { + return this.set('name', name, options); + }, + + /** + * Gets the AV.Relation for the AV.Users that are direct + * children of this role. These users are granted any privileges that this + * role has been granted (e.g. read or write access through ACLs). You can + * add or remove users from the role through this relation. + * + *

    This is equivalent to calling role.relation("users")

    + * + * @return {AV.Relation} the relation for the users belonging to this + * role. + */ + getUsers: function getUsers() { + return this.relation('users'); + }, + + /** + * Gets the AV.Relation for the AV.Roles that are direct + * children of this role. These roles' users are granted any privileges that + * this role has been granted (e.g. read or write access through ACLs). You + * can add or remove child roles from this role through this relation. + * + *

    This is equivalent to calling role.relation("roles")

    + * + * @return {AV.Relation} the relation for the roles belonging to this + * role. + */ + getRoles: function getRoles() { + return this.relation('roles'); + }, + + /** + * @ignore + */ + validate: function validate(attrs, options) { + if ('name' in attrs && attrs.name !== this.getName()) { + var newName = attrs.name; + + if (this.id && this.id !== attrs.objectId) { + // Check to see if the objectId being set matches this.id. + // This happens during a fetch -- the id is set before calling fetch. + // Let the name be set in this case. + return new AVError(AVError.OTHER_CAUSE, "A role's name can only be set before it has been saved."); + } + + if (!_.isString(newName)) { + return new AVError(AVError.OTHER_CAUSE, "A role's name must be a String."); + } + + if (!/^[0-9a-zA-Z\-_ ]+$/.test(newName)) { + return new AVError(AVError.OTHER_CAUSE, "A role's name can only contain alphanumeric characters, _," + ' -, and spaces.'); + } + } + + if (AV.Object.prototype.validate) { + return AV.Object.prototype.validate.call(this, attrs, options); + } + + return false; + } + }); +}; + +/***/ }), +/* 527 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(2); + +var _defineProperty2 = _interopRequireDefault(__webpack_require__(528)); + +var _promise = _interopRequireDefault(__webpack_require__(10)); + +var _map = _interopRequireDefault(__webpack_require__(39)); + +var _find = _interopRequireDefault(__webpack_require__(104)); + +var _stringify = _interopRequireDefault(__webpack_require__(34)); + +var _ = __webpack_require__(1); + +var uuid = __webpack_require__(214); + +var AVError = __webpack_require__(40); + +var _require = __webpack_require__(25), + AVRequest = _require._request, + request = _require.request; + +var _require2 = __webpack_require__(61), + getAdapter = _require2.getAdapter; + +var PLATFORM_ANONYMOUS = 'anonymous'; +var PLATFORM_QQAPP = 'lc_qqapp'; + +var mergeUnionDataIntoAuthData = function mergeUnionDataIntoAuthData() { + var defaultUnionIdPlatform = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'weixin'; + return function (authData, unionId) { + var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}, + _ref$unionIdPlatform = _ref.unionIdPlatform, + unionIdPlatform = _ref$unionIdPlatform === void 0 ? defaultUnionIdPlatform : _ref$unionIdPlatform, + _ref$asMainAccount = _ref.asMainAccount, + asMainAccount = _ref$asMainAccount === void 0 ? false : _ref$asMainAccount; + + if (typeof unionId !== 'string') throw new AVError(AVError.OTHER_CAUSE, 'unionId is not a string'); + if (typeof unionIdPlatform !== 'string') throw new AVError(AVError.OTHER_CAUSE, 'unionIdPlatform is not a string'); + return _.extend({}, authData, { + platform: unionIdPlatform, + unionid: unionId, + main_account: Boolean(asMainAccount) + }); + }; +}; + +module.exports = function (AV) { + /** + * @class + * + *

    An AV.User object is a local representation of a user persisted to the + * LeanCloud server. This class is a subclass of an AV.Object, and retains the + * same functionality of an AV.Object, but also extends it with various + * user specific methods, like authentication, signing up, and validation of + * uniqueness.

    + */ + AV.User = AV.Object.extend('_User', + /** @lends AV.User.prototype */ + { + // Instance Variables + _isCurrentUser: false, + // Instance Methods + + /** + * Internal method to handle special fields in a _User response. + * @private + */ + _mergeMagicFields: function _mergeMagicFields(attrs) { + if (attrs.sessionToken) { + this._sessionToken = attrs.sessionToken; + delete attrs.sessionToken; + } + + return AV.User.__super__._mergeMagicFields.call(this, attrs); + }, + + /** + * Removes null values from authData (which exist temporarily for + * unlinking) + * @private + */ + _cleanupAuthData: function _cleanupAuthData() { + if (!this.isCurrent()) { + return; + } + + var authData = this.get('authData'); + + if (!authData) { + return; + } + + AV._objectEach(this.get('authData'), function (value, key) { + if (!authData[key]) { + delete authData[key]; + } + }); + }, + + /** + * Synchronizes authData for all providers. + * @private + */ + _synchronizeAllAuthData: function _synchronizeAllAuthData() { + var authData = this.get('authData'); + + if (!authData) { + return; + } + + var self = this; + + AV._objectEach(this.get('authData'), function (value, key) { + self._synchronizeAuthData(key); + }); + }, + + /** + * Synchronizes auth data for a provider (e.g. puts the access token in the + * right place to be used by the Facebook SDK). + * @private + */ + _synchronizeAuthData: function _synchronizeAuthData(provider) { + if (!this.isCurrent()) { + return; + } + + var authType; + + if (_.isString(provider)) { + authType = provider; + provider = AV.User._authProviders[authType]; + } else { + authType = provider.getAuthType(); + } + + var authData = this.get('authData'); + + if (!authData || !provider) { + return; + } + + var success = provider.restoreAuthentication(authData[authType]); + + if (!success) { + this.dissociateAuthData(provider); + } + }, + _handleSaveResult: function _handleSaveResult(makeCurrent) { + // Clean up and synchronize the authData object, removing any unset values + if (makeCurrent && !AV._config.disableCurrentUser) { + this._isCurrentUser = true; + } + + this._cleanupAuthData(); + + this._synchronizeAllAuthData(); // Don't keep the password around. + + + delete this._serverData.password; + + this._rebuildEstimatedDataForKey('password'); + + this._refreshCache(); + + if ((makeCurrent || this.isCurrent()) && !AV._config.disableCurrentUser) { + // Some old version of leanengine-node-sdk will overwrite + // AV.User._saveCurrentUser which returns no Promise. + // So we need a Promise wrapper. + return _promise.default.resolve(AV.User._saveCurrentUser(this)); + } else { + return _promise.default.resolve(); + } + }, + + /** + * Unlike in the Android/iOS SDKs, logInWith is unnecessary, since you can + * call linkWith on the user (even if it doesn't exist yet on the server). + * @private + */ + _linkWith: function _linkWith(provider, data) { + var _this = this; + + var _ref2 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}, + _ref2$failOnNotExist = _ref2.failOnNotExist, + failOnNotExist = _ref2$failOnNotExist === void 0 ? false : _ref2$failOnNotExist, + useMasterKey = _ref2.useMasterKey, + sessionToken = _ref2.sessionToken, + user = _ref2.user; + + var authType; + + if (_.isString(provider)) { + authType = provider; + provider = AV.User._authProviders[provider]; + } else { + authType = provider.getAuthType(); + } + + if (data) { + return this.save({ + authData: (0, _defineProperty2.default)({}, authType, data) + }, { + useMasterKey: useMasterKey, + sessionToken: sessionToken, + user: user, + fetchWhenSave: !!this.get('authData'), + _failOnNotExist: failOnNotExist + }).then(function (model) { + return model._handleSaveResult(true).then(function () { + return model; + }); + }); + } else { + return provider.authenticate().then(function (result) { + return _this._linkWith(provider, result); + }); + } + }, + + /** + * Associate the user with a third party authData. + * @since 3.3.0 + * @param {Object} authData The response json data returned from third party token, maybe like { openid: 'abc123', access_token: '123abc', expires_in: 1382686496 } + * @param {string} platform Available platform for sign up. + * @return {Promise} A promise that is fulfilled with the user when completed. + * @example user.associateWithAuthData({ + * openid: 'abc123', + * access_token: '123abc', + * expires_in: 1382686496 + * }, 'weixin').then(function(user) { + * //Access user here + * }).catch(function(error) { + * //console.error("error: ", error); + * }); + */ + associateWithAuthData: function associateWithAuthData(authData, platform) { + return this._linkWith(platform, authData); + }, + + /** + * Associate the user with a third party authData and unionId. + * @since 3.5.0 + * @param {Object} authData The response json data returned from third party token, maybe like { openid: 'abc123', access_token: '123abc', expires_in: 1382686496 } + * @param {string} platform Available platform for sign up. + * @param {string} unionId + * @param {Object} [unionLoginOptions] + * @param {string} [unionLoginOptions.unionIdPlatform = 'weixin'] unionId platform + * @param {boolean} [unionLoginOptions.asMainAccount = false] If true, the unionId will be associated with the user. + * @return {Promise} A promise that is fulfilled with the user when completed. + * @example user.associateWithAuthDataAndUnionId({ + * openid: 'abc123', + * access_token: '123abc', + * expires_in: 1382686496 + * }, 'weixin', 'union123', { + * unionIdPlatform: 'weixin', + * asMainAccount: true, + * }).then(function(user) { + * //Access user here + * }).catch(function(error) { + * //console.error("error: ", error); + * }); + */ + associateWithAuthDataAndUnionId: function associateWithAuthDataAndUnionId(authData, platform, unionId, unionOptions) { + return this._linkWith(platform, mergeUnionDataIntoAuthData()(authData, unionId, unionOptions)); + }, + + /** + * Associate the user with the identity of the current mini-app. + * @since 4.6.0 + * @param {Object} [authInfo] + * @param {Object} [option] + * @param {Boolean} [option.failOnNotExist] If true, the login request will fail when no user matches this authInfo.authData exists. + * @return {Promise} + */ + associateWithMiniApp: function associateWithMiniApp(authInfo, option) { + var _this2 = this; + + if (authInfo === undefined) { + var getAuthInfo = getAdapter('getAuthInfo'); + return getAuthInfo().then(function (authInfo) { + return _this2._linkWith(authInfo.provider, authInfo.authData, option); + }); + } + + return this._linkWith(authInfo.provider, authInfo.authData, option); + }, + + /** + * 将用户与 QQ 小程序用户进行关联。适用于为已经在用户系统中存在的用户关联当前使用 QQ 小程序的微信帐号。 + * 仅在 QQ 小程序中可用。 + * + * @deprecated Please use {@link AV.User#associateWithMiniApp} + * @since 4.2.0 + * @param {Object} [options] + * @param {boolean} [options.preferUnionId = false] 如果服务端在登录时获取到了用户的 UnionId,是否将 UnionId 保存在用户账号中。 + * @param {string} [options.unionIdPlatform = 'qq'] (only take effect when preferUnionId) unionId platform + * @param {boolean} [options.asMainAccount = true] (only take effect when preferUnionId) If true, the unionId will be associated with the user. + * @return {Promise} + */ + associateWithQQApp: function associateWithQQApp() { + var _this3 = this; + + var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, + _ref3$preferUnionId = _ref3.preferUnionId, + preferUnionId = _ref3$preferUnionId === void 0 ? false : _ref3$preferUnionId, + _ref3$unionIdPlatform = _ref3.unionIdPlatform, + unionIdPlatform = _ref3$unionIdPlatform === void 0 ? 'qq' : _ref3$unionIdPlatform, + _ref3$asMainAccount = _ref3.asMainAccount, + asMainAccount = _ref3$asMainAccount === void 0 ? true : _ref3$asMainAccount; + + var getAuthInfo = getAdapter('getAuthInfo'); + return getAuthInfo({ + preferUnionId: preferUnionId, + asMainAccount: asMainAccount, + platform: unionIdPlatform + }).then(function (authInfo) { + authInfo.provider = PLATFORM_QQAPP; + return _this3.associateWithMiniApp(authInfo); + }); + }, + + /** + * 将用户与微信小程序用户进行关联。适用于为已经在用户系统中存在的用户关联当前使用微信小程序的微信帐号。 + * 仅在微信小程序中可用。 + * + * @deprecated Please use {@link AV.User#associateWithMiniApp} + * @since 3.13.0 + * @param {Object} [options] + * @param {boolean} [options.preferUnionId = false] 当用户满足 {@link https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/union-id.html 获取 UnionId 的条件} 时,是否将 UnionId 保存在用户账号中。 + * @param {string} [options.unionIdPlatform = 'weixin'] (only take effect when preferUnionId) unionId platform + * @param {boolean} [options.asMainAccount = true] (only take effect when preferUnionId) If true, the unionId will be associated with the user. + * @return {Promise} + */ + associateWithWeapp: function associateWithWeapp() { + var _this4 = this; + + var _ref4 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, + _ref4$preferUnionId = _ref4.preferUnionId, + preferUnionId = _ref4$preferUnionId === void 0 ? false : _ref4$preferUnionId, + _ref4$unionIdPlatform = _ref4.unionIdPlatform, + unionIdPlatform = _ref4$unionIdPlatform === void 0 ? 'weixin' : _ref4$unionIdPlatform, + _ref4$asMainAccount = _ref4.asMainAccount, + asMainAccount = _ref4$asMainAccount === void 0 ? true : _ref4$asMainAccount; + + var getAuthInfo = getAdapter('getAuthInfo'); + return getAuthInfo({ + preferUnionId: preferUnionId, + asMainAccount: asMainAccount, + platform: unionIdPlatform + }).then(function (authInfo) { + return _this4.associateWithMiniApp(authInfo); + }); + }, + + /** + * @deprecated renamed to {@link AV.User#associateWithWeapp} + * @return {Promise} + */ + linkWithWeapp: function linkWithWeapp(options) { + console.warn('DEPRECATED: User#linkWithWeapp 已废弃,请使用 User#associateWithWeapp 代替'); + return this.associateWithWeapp(options); + }, + + /** + * 将用户与 QQ 小程序用户进行关联。适用于为已经在用户系统中存在的用户关联当前使用 QQ 小程序的 QQ 帐号。 + * 仅在 QQ 小程序中可用。 + * + * @deprecated Please use {@link AV.User#associateWithMiniApp} + * @since 4.2.0 + * @param {string} unionId + * @param {Object} [unionOptions] + * @param {string} [unionOptions.unionIdPlatform = 'qq'] unionId platform + * @param {boolean} [unionOptions.asMainAccount = false] If true, the unionId will be associated with the user. + * @return {Promise} + */ + associateWithQQAppWithUnionId: function associateWithQQAppWithUnionId(unionId) { + var _this5 = this; + + var _ref5 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, + _ref5$unionIdPlatform = _ref5.unionIdPlatform, + unionIdPlatform = _ref5$unionIdPlatform === void 0 ? 'qq' : _ref5$unionIdPlatform, + _ref5$asMainAccount = _ref5.asMainAccount, + asMainAccount = _ref5$asMainAccount === void 0 ? false : _ref5$asMainAccount; + + var getAuthInfo = getAdapter('getAuthInfo'); + return getAuthInfo({ + platform: unionIdPlatform + }).then(function (authInfo) { + authInfo = AV.User.mergeUnionId(authInfo, unionId, { + asMainAccount: asMainAccount + }); + authInfo.provider = PLATFORM_QQAPP; + return _this5.associateWithMiniApp(authInfo); + }); + }, + + /** + * 将用户与微信小程序用户进行关联。适用于为已经在用户系统中存在的用户关联当前使用微信小程序的微信帐号。 + * 仅在微信小程序中可用。 + * + * @deprecated Please use {@link AV.User#associateWithMiniApp} + * @since 3.13.0 + * @param {string} unionId + * @param {Object} [unionOptions] + * @param {string} [unionOptions.unionIdPlatform = 'weixin'] unionId platform + * @param {boolean} [unionOptions.asMainAccount = false] If true, the unionId will be associated with the user. + * @return {Promise} + */ + associateWithWeappWithUnionId: function associateWithWeappWithUnionId(unionId) { + var _this6 = this; + + var _ref6 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, + _ref6$unionIdPlatform = _ref6.unionIdPlatform, + unionIdPlatform = _ref6$unionIdPlatform === void 0 ? 'weixin' : _ref6$unionIdPlatform, + _ref6$asMainAccount = _ref6.asMainAccount, + asMainAccount = _ref6$asMainAccount === void 0 ? false : _ref6$asMainAccount; + + var getAuthInfo = getAdapter('getAuthInfo'); + return getAuthInfo({ + platform: unionIdPlatform + }).then(function (authInfo) { + authInfo = AV.User.mergeUnionId(authInfo, unionId, { + asMainAccount: asMainAccount + }); + return _this6.associateWithMiniApp(authInfo); + }); + }, + + /** + * Unlinks a user from a service. + * @param {string} platform + * @return {Promise} + * @since 3.3.0 + */ + dissociateAuthData: function dissociateAuthData(provider) { + this.unset("authData.".concat(provider)); + return this.save().then(function (model) { + return model._handleSaveResult(true).then(function () { + return model; + }); + }); + }, + + /** + * @private + * @deprecated + */ + _unlinkFrom: function _unlinkFrom(provider) { + console.warn('DEPRECATED: User#_unlinkFrom 已废弃,请使用 User#dissociateAuthData 代替'); + return this.dissociateAuthData(provider); + }, + + /** + * Checks whether a user is linked to a service. + * @private + */ + _isLinked: function _isLinked(provider) { + var authType; + + if (_.isString(provider)) { + authType = provider; + } else { + authType = provider.getAuthType(); + } + + var authData = this.get('authData') || {}; + return !!authData[authType]; + }, + + /** + * Checks whether a user is anonymous. + * @since 3.9.0 + * @return {boolean} + */ + isAnonymous: function isAnonymous() { + return this._isLinked(PLATFORM_ANONYMOUS); + }, + logOut: function logOut() { + this._logOutWithAll(); + + this._isCurrentUser = false; + }, + + /** + * Deauthenticates all providers. + * @private + */ + _logOutWithAll: function _logOutWithAll() { + var authData = this.get('authData'); + + if (!authData) { + return; + } + + var self = this; + + AV._objectEach(this.get('authData'), function (value, key) { + self._logOutWith(key); + }); + }, + + /** + * Deauthenticates a single provider (e.g. removing access tokens from the + * Facebook SDK). + * @private + */ + _logOutWith: function _logOutWith(provider) { + if (!this.isCurrent()) { + return; + } + + if (_.isString(provider)) { + provider = AV.User._authProviders[provider]; + } + + if (provider && provider.deauthenticate) { + provider.deauthenticate(); + } + }, + + /** + * Signs up a new user. You should call this instead of save for + * new AV.Users. This will create a new AV.User on the server, and + * also persist the session on disk so that you can access the user using + * current. + * + *

    A username and password must be set before calling signUp.

    + * + * @param {Object} attrs Extra fields to set on the new user, or null. + * @param {AuthOptions} options + * @return {Promise} A promise that is fulfilled when the signup + * finishes. + * @see AV.User.signUp + */ + signUp: function signUp(attrs, options) { + var error; + var username = attrs && attrs.username || this.get('username'); + + if (!username || username === '') { + error = new AVError(AVError.OTHER_CAUSE, 'Cannot sign up user with an empty name.'); + throw error; + } + + var password = attrs && attrs.password || this.get('password'); + + if (!password || password === '') { + error = new AVError(AVError.OTHER_CAUSE, 'Cannot sign up user with an empty password.'); + throw error; + } + + return this.save(attrs, options).then(function (model) { + if (model.isAnonymous()) { + model.unset("authData.".concat(PLATFORM_ANONYMOUS)); + model._opSetQueue = [{}]; + } + + return model._handleSaveResult(true).then(function () { + return model; + }); + }); + }, + + /** + * Signs up a new user with mobile phone and sms code. + * You should call this instead of save for + * new AV.Users. This will create a new AV.User on the server, and + * also persist the session on disk so that you can access the user using + * current. + * + *

    A username and password must be set before calling signUp.

    + * + * @param {Object} attrs Extra fields to set on the new user, or null. + * @param {AuthOptions} options + * @return {Promise} A promise that is fulfilled when the signup + * finishes. + * @see AV.User.signUpOrlogInWithMobilePhone + * @see AV.Cloud.requestSmsCode + */ + signUpOrlogInWithMobilePhone: function signUpOrlogInWithMobilePhone(attrs) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var error; + var mobilePhoneNumber = attrs && attrs.mobilePhoneNumber || this.get('mobilePhoneNumber'); + + if (!mobilePhoneNumber || mobilePhoneNumber === '') { + error = new AVError(AVError.OTHER_CAUSE, 'Cannot sign up or login user by mobilePhoneNumber ' + 'with an empty mobilePhoneNumber.'); + throw error; + } + + var smsCode = attrs && attrs.smsCode || this.get('smsCode'); + + if (!smsCode || smsCode === '') { + error = new AVError(AVError.OTHER_CAUSE, 'Cannot sign up or login user by mobilePhoneNumber ' + 'with an empty smsCode.'); + throw error; + } + + options._makeRequest = function (route, className, id, method, json) { + return AVRequest('usersByMobilePhone', null, null, 'POST', json); + }; + + return this.save(attrs, options).then(function (model) { + delete model.attributes.smsCode; + delete model._serverData.smsCode; + return model._handleSaveResult(true).then(function () { + return model; + }); + }); + }, + + /** + * The same with {@link AV.User.loginWithAuthData}, except that you can set attributes before login. + * @since 3.7.0 + */ + loginWithAuthData: function loginWithAuthData(authData, platform, options) { + return this._linkWith(platform, authData, options); + }, + + /** + * The same with {@link AV.User.loginWithAuthDataAndUnionId}, except that you can set attributes before login. + * @since 3.7.0 + */ + loginWithAuthDataAndUnionId: function loginWithAuthDataAndUnionId(authData, platform, unionId, unionLoginOptions) { + return this.loginWithAuthData(mergeUnionDataIntoAuthData()(authData, unionId, unionLoginOptions), platform, unionLoginOptions); + }, + + /** + * The same with {@link AV.User.loginWithWeapp}, except that you can set attributes before login. + * @deprecated please use {@link AV.User#loginWithMiniApp} + * @since 3.7.0 + * @param {Object} [options] + * @param {boolean} [options.failOnNotExist] If true, the login request will fail when no user matches this authData exists. + * @param {boolean} [options.preferUnionId] 当用户满足 {@link https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/union-id.html 获取 UnionId 的条件} 时,是否使用 UnionId 登录。(since 3.13.0) + * @param {string} [options.unionIdPlatform = 'weixin'] (only take effect when preferUnionId) unionId platform + * @param {boolean} [options.asMainAccount = true] (only take effect when preferUnionId) If true, the unionId will be associated with the user. + * @return {Promise} + */ + loginWithWeapp: function loginWithWeapp() { + var _this7 = this; + + var _ref7 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, + _ref7$preferUnionId = _ref7.preferUnionId, + preferUnionId = _ref7$preferUnionId === void 0 ? false : _ref7$preferUnionId, + _ref7$unionIdPlatform = _ref7.unionIdPlatform, + unionIdPlatform = _ref7$unionIdPlatform === void 0 ? 'weixin' : _ref7$unionIdPlatform, + _ref7$asMainAccount = _ref7.asMainAccount, + asMainAccount = _ref7$asMainAccount === void 0 ? true : _ref7$asMainAccount, + _ref7$failOnNotExist = _ref7.failOnNotExist, + failOnNotExist = _ref7$failOnNotExist === void 0 ? false : _ref7$failOnNotExist, + useMasterKey = _ref7.useMasterKey, + sessionToken = _ref7.sessionToken, + user = _ref7.user; + + var getAuthInfo = getAdapter('getAuthInfo'); + return getAuthInfo({ + preferUnionId: preferUnionId, + asMainAccount: asMainAccount, + platform: unionIdPlatform + }).then(function (authInfo) { + return _this7.loginWithMiniApp(authInfo, { + failOnNotExist: failOnNotExist, + useMasterKey: useMasterKey, + sessionToken: sessionToken, + user: user + }); + }); + }, + + /** + * The same with {@link AV.User.loginWithWeappWithUnionId}, except that you can set attributes before login. + * @deprecated please use {@link AV.User#loginWithMiniApp} + * @since 3.13.0 + */ + loginWithWeappWithUnionId: function loginWithWeappWithUnionId(unionId) { + var _this8 = this; + + var _ref8 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, + _ref8$unionIdPlatform = _ref8.unionIdPlatform, + unionIdPlatform = _ref8$unionIdPlatform === void 0 ? 'weixin' : _ref8$unionIdPlatform, + _ref8$asMainAccount = _ref8.asMainAccount, + asMainAccount = _ref8$asMainAccount === void 0 ? false : _ref8$asMainAccount, + _ref8$failOnNotExist = _ref8.failOnNotExist, + failOnNotExist = _ref8$failOnNotExist === void 0 ? false : _ref8$failOnNotExist, + useMasterKey = _ref8.useMasterKey, + sessionToken = _ref8.sessionToken, + user = _ref8.user; + + var getAuthInfo = getAdapter('getAuthInfo'); + return getAuthInfo({ + platform: unionIdPlatform + }).then(function (authInfo) { + authInfo = AV.User.mergeUnionId(authInfo, unionId, { + asMainAccount: asMainAccount + }); + return _this8.loginWithMiniApp(authInfo, { + failOnNotExist: failOnNotExist, + useMasterKey: useMasterKey, + sessionToken: sessionToken, + user: user + }); + }); + }, + + /** + * The same with {@link AV.User.loginWithQQApp}, except that you can set attributes before login. + * @deprecated please use {@link AV.User#loginWithMiniApp} + * @since 4.2.0 + * @param {Object} [options] + * @param {boolean} [options.failOnNotExist] If true, the login request will fail when no user matches this authData exists. + * @param {boolean} [options.preferUnionId] 如果服务端在登录时获取到了用户的 UnionId,是否将 UnionId 保存在用户账号中。 + * @param {string} [options.unionIdPlatform = 'qq'] (only take effect when preferUnionId) unionId platform + * @param {boolean} [options.asMainAccount = true] (only take effect when preferUnionId) If true, the unionId will be associated with the user. + */ + loginWithQQApp: function loginWithQQApp() { + var _this9 = this; + + var _ref9 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, + _ref9$preferUnionId = _ref9.preferUnionId, + preferUnionId = _ref9$preferUnionId === void 0 ? false : _ref9$preferUnionId, + _ref9$unionIdPlatform = _ref9.unionIdPlatform, + unionIdPlatform = _ref9$unionIdPlatform === void 0 ? 'qq' : _ref9$unionIdPlatform, + _ref9$asMainAccount = _ref9.asMainAccount, + asMainAccount = _ref9$asMainAccount === void 0 ? true : _ref9$asMainAccount, + _ref9$failOnNotExist = _ref9.failOnNotExist, + failOnNotExist = _ref9$failOnNotExist === void 0 ? false : _ref9$failOnNotExist, + useMasterKey = _ref9.useMasterKey, + sessionToken = _ref9.sessionToken, + user = _ref9.user; + + var getAuthInfo = getAdapter('getAuthInfo'); + return getAuthInfo({ + preferUnionId: preferUnionId, + asMainAccount: asMainAccount, + platform: unionIdPlatform + }).then(function (authInfo) { + authInfo.provider = PLATFORM_QQAPP; + return _this9.loginWithMiniApp(authInfo, { + failOnNotExist: failOnNotExist, + useMasterKey: useMasterKey, + sessionToken: sessionToken, + user: user + }); + }); + }, + + /** + * The same with {@link AV.User.loginWithQQAppWithUnionId}, except that you can set attributes before login. + * @deprecated please use {@link AV.User#loginWithMiniApp} + * @since 4.2.0 + */ + loginWithQQAppWithUnionId: function loginWithQQAppWithUnionId(unionId) { + var _this10 = this; + + var _ref10 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, + _ref10$unionIdPlatfor = _ref10.unionIdPlatform, + unionIdPlatform = _ref10$unionIdPlatfor === void 0 ? 'qq' : _ref10$unionIdPlatfor, + _ref10$asMainAccount = _ref10.asMainAccount, + asMainAccount = _ref10$asMainAccount === void 0 ? false : _ref10$asMainAccount, + _ref10$failOnNotExist = _ref10.failOnNotExist, + failOnNotExist = _ref10$failOnNotExist === void 0 ? false : _ref10$failOnNotExist, + useMasterKey = _ref10.useMasterKey, + sessionToken = _ref10.sessionToken, + user = _ref10.user; + + var getAuthInfo = getAdapter('getAuthInfo'); + return getAuthInfo({ + platform: unionIdPlatform + }).then(function (authInfo) { + authInfo = AV.User.mergeUnionId(authInfo, unionId, { + asMainAccount: asMainAccount + }); + authInfo.provider = PLATFORM_QQAPP; + return _this10.loginWithMiniApp(authInfo, { + failOnNotExist: failOnNotExist, + useMasterKey: useMasterKey, + sessionToken: sessionToken, + user: user + }); + }); + }, + + /** + * The same with {@link AV.User.loginWithMiniApp}, except that you can set attributes before login. + * @since 4.6.0 + */ + loginWithMiniApp: function loginWithMiniApp(authInfo, option) { + var _this11 = this; + + if (authInfo === undefined) { + var getAuthInfo = getAdapter('getAuthInfo'); + return getAuthInfo().then(function (authInfo) { + return _this11.loginWithAuthData(authInfo.authData, authInfo.provider, option); + }); + } + + return this.loginWithAuthData(authInfo.authData, authInfo.provider, option); + }, + + /** + * Logs in a AV.User. On success, this saves the session to localStorage, + * so you can retrieve the currently logged in user using + * current. + * + *

    A username and password must be set before calling logIn.

    + * + * @see AV.User.logIn + * @return {Promise} A promise that is fulfilled with the user when + * the login is complete. + */ + logIn: function logIn() { + var model = this; + var request = AVRequest('login', null, null, 'POST', this.toJSON()); + return request.then(function (resp) { + var serverAttrs = model.parse(resp); + + model._finishFetch(serverAttrs); + + return model._handleSaveResult(true).then(function () { + if (!serverAttrs.smsCode) delete model.attributes['smsCode']; + return model; + }); + }); + }, + + /** + * @see AV.Object#save + */ + save: function save(arg1, arg2, arg3) { + var attrs, options; + + if (_.isObject(arg1) || _.isNull(arg1) || _.isUndefined(arg1)) { + attrs = arg1; + options = arg2; + } else { + attrs = {}; + attrs[arg1] = arg2; + options = arg3; + } + + options = options || {}; + return AV.Object.prototype.save.call(this, attrs, options).then(function (model) { + return model._handleSaveResult(false).then(function () { + return model; + }); + }); + }, + + /** + * Follow a user + * @since 0.3.0 + * @param {Object | AV.User | String} options if an AV.User or string is given, it will be used as the target user. + * @param {AV.User | String} options.user The target user or user's objectId to follow. + * @param {Object} [options.attributes] key-value attributes dictionary to be used as + * conditions of followerQuery/followeeQuery. + * @param {AuthOptions} [authOptions] + */ + follow: function follow(options, authOptions) { + if (!this.id) { + throw new Error('Please signin.'); + } + + var user; + var attributes; + + if (options.user) { + user = options.user; + attributes = options.attributes; + } else { + user = options; + } + + var userObjectId = _.isString(user) ? user : user.id; + + if (!userObjectId) { + throw new Error('Invalid target user.'); + } + + var route = 'users/' + this.id + '/friendship/' + userObjectId; + var request = AVRequest(route, null, null, 'POST', AV._encode(attributes), authOptions); + return request; + }, + + /** + * Unfollow a user. + * @since 0.3.0 + * @param {Object | AV.User | String} options if an AV.User or string is given, it will be used as the target user. + * @param {AV.User | String} options.user The target user or user's objectId to unfollow. + * @param {AuthOptions} [authOptions] + */ + unfollow: function unfollow(options, authOptions) { + if (!this.id) { + throw new Error('Please signin.'); + } + + var user; + + if (options.user) { + user = options.user; + } else { + user = options; + } + + var userObjectId = _.isString(user) ? user : user.id; + + if (!userObjectId) { + throw new Error('Invalid target user.'); + } + + var route = 'users/' + this.id + '/friendship/' + userObjectId; + var request = AVRequest(route, null, null, 'DELETE', null, authOptions); + return request; + }, + + /** + * Get the user's followers and followees. + * @since 4.8.0 + * @param {Object} [options] + * @param {Number} [options.skip] + * @param {Number} [options.limit] + * @param {AuthOptions} [authOptions] + */ + getFollowersAndFollowees: function getFollowersAndFollowees(options, authOptions) { + if (!this.id) { + throw new Error('Please signin.'); + } + + return request({ + method: 'GET', + path: "/users/".concat(this.id, "/followersAndFollowees"), + query: { + skip: options && options.skip, + limit: options && options.limit, + include: 'follower,followee', + keys: 'follower,followee' + }, + authOptions: authOptions + }).then(function (_ref11) { + var followers = _ref11.followers, + followees = _ref11.followees; + return { + followers: (0, _map.default)(followers).call(followers, function (_ref12) { + var follower = _ref12.follower; + return AV._decode(follower); + }), + followees: (0, _map.default)(followees).call(followees, function (_ref13) { + var followee = _ref13.followee; + return AV._decode(followee); + }) + }; + }); + }, + + /** + *Create a follower query to query the user's followers. + * @since 0.3.0 + * @see AV.User#followerQuery + */ + followerQuery: function followerQuery() { + return AV.User.followerQuery(this.id); + }, + + /** + *Create a followee query to query the user's followees. + * @since 0.3.0 + * @see AV.User#followeeQuery + */ + followeeQuery: function followeeQuery() { + return AV.User.followeeQuery(this.id); + }, + + /** + * @see AV.Object#fetch + */ + fetch: function fetch(fetchOptions, options) { + return AV.Object.prototype.fetch.call(this, fetchOptions, options).then(function (model) { + return model._handleSaveResult(false).then(function () { + return model; + }); + }); + }, + + /** + * Update user's new password safely based on old password. + * @param {String} oldPassword the old password. + * @param {String} newPassword the new password. + * @param {AuthOptions} options + */ + updatePassword: function updatePassword(oldPassword, newPassword, options) { + var _this12 = this; + + var route = 'users/' + this.id + '/updatePassword'; + var params = { + old_password: oldPassword, + new_password: newPassword + }; + var request = AVRequest(route, null, null, 'PUT', params, options); + return request.then(function (resp) { + _this12._finishFetch(_this12.parse(resp)); + + return _this12._handleSaveResult(true).then(function () { + return resp; + }); + }); + }, + + /** + * Returns true if current would return this user. + * @see AV.User#current + */ + isCurrent: function isCurrent() { + return this._isCurrentUser; + }, + + /** + * Returns get("username"). + * @return {String} + * @see AV.Object#get + */ + getUsername: function getUsername() { + return this.get('username'); + }, + + /** + * Returns get("mobilePhoneNumber"). + * @return {String} + * @see AV.Object#get + */ + getMobilePhoneNumber: function getMobilePhoneNumber() { + return this.get('mobilePhoneNumber'); + }, + + /** + * Calls set("mobilePhoneNumber", phoneNumber, options) and returns the result. + * @param {String} mobilePhoneNumber + * @return {Boolean} + * @see AV.Object#set + */ + setMobilePhoneNumber: function setMobilePhoneNumber(phone, options) { + return this.set('mobilePhoneNumber', phone, options); + }, + + /** + * Calls set("username", username, options) and returns the result. + * @param {String} username + * @return {Boolean} + * @see AV.Object#set + */ + setUsername: function setUsername(username, options) { + return this.set('username', username, options); + }, + + /** + * Calls set("password", password, options) and returns the result. + * @param {String} password + * @return {Boolean} + * @see AV.Object#set + */ + setPassword: function setPassword(password, options) { + return this.set('password', password, options); + }, + + /** + * Returns get("email"). + * @return {String} + * @see AV.Object#get + */ + getEmail: function getEmail() { + return this.get('email'); + }, + + /** + * Calls set("email", email, options) and returns the result. + * @param {String} email + * @param {AuthOptions} options + * @return {Boolean} + * @see AV.Object#set + */ + setEmail: function setEmail(email, options) { + return this.set('email', email, options); + }, + + /** + * Checks whether this user is the current user and has been authenticated. + * @deprecated 如果要判断当前用户的登录状态是否有效,请使用 currentUser.isAuthenticated().then(), + * 如果要判断该用户是否是当前登录用户,请使用 user.id === currentUser.id + * @return (Boolean) whether this user is the current user and is logged in. + */ + authenticated: function authenticated() { + console.warn('DEPRECATED: 如果要判断当前用户的登录状态是否有效,请使用 currentUser.isAuthenticated().then(),如果要判断该用户是否是当前登录用户,请使用 user.id === currentUser.id。'); + return !!this._sessionToken && !AV._config.disableCurrentUser && AV.User.current() && AV.User.current().id === this.id; + }, + + /** + * Detects if current sessionToken is valid. + * + * @since 2.0.0 + * @return Promise. + */ + isAuthenticated: function isAuthenticated() { + var _this13 = this; + + return _promise.default.resolve().then(function () { + return !!_this13._sessionToken && AV.User._fetchUserBySessionToken(_this13._sessionToken).then(function () { + return true; + }, function (error) { + if (error.code === 211) { + return false; + } + + throw error; + }); + }); + }, + + /** + * Get sessionToken of current user. + * @return {String} sessionToken + */ + getSessionToken: function getSessionToken() { + return this._sessionToken; + }, + + /** + * Refresh sessionToken of current user. + * @since 2.1.0 + * @param {AuthOptions} [options] + * @return {Promise.} user with refreshed sessionToken + */ + refreshSessionToken: function refreshSessionToken(options) { + var _this14 = this; + + return AVRequest("users/".concat(this.id, "/refreshSessionToken"), null, null, 'PUT', null, options).then(function (response) { + _this14._finishFetch(response); + + return _this14._handleSaveResult(true).then(function () { + return _this14; + }); + }); + }, + + /** + * Get this user's Roles. + * @param {AuthOptions} [options] + * @return {Promise.} A promise that is fulfilled with the roles when + * the query is complete. + */ + getRoles: function getRoles(options) { + var _context; + + return (0, _find.default)(_context = AV.Relation.reverseQuery('_Role', 'users', this)).call(_context, options); + } + }, + /** @lends AV.User */ + { + // Class Variables + // The currently logged-in user. + _currentUser: null, + // Whether currentUser is known to match the serialized version on disk. + // This is useful for saving a localstorage check if you try to load + // _currentUser frequently while there is none stored. + _currentUserMatchesDisk: false, + // The localStorage key suffix that the current user is stored under. + _CURRENT_USER_KEY: 'currentUser', + // The mapping of auth provider names to actual providers + _authProviders: {}, + // Class Methods + + /** + * Signs up a new user with a username (or email) and password. + * This will create a new AV.User on the server, and also persist the + * session in localStorage so that you can access the user using + * {@link #current}. + * + * @param {String} username The username (or email) to sign up with. + * @param {String} password The password to sign up with. + * @param {Object} [attrs] Extra fields to set on the new user. + * @param {AuthOptions} [options] + * @return {Promise} A promise that is fulfilled with the user when + * the signup completes. + * @see AV.User#signUp + */ + signUp: function signUp(username, password, attrs, options) { + attrs = attrs || {}; + attrs.username = username; + attrs.password = password; + + var user = AV.Object._create('_User'); + + return user.signUp(attrs, options); + }, + + /** + * Logs in a user with a username (or email) and password. On success, this + * saves the session to disk, so you can retrieve the currently logged in + * user using current. + * + * @param {String} username The username (or email) to log in with. + * @param {String} password The password to log in with. + * @return {Promise} A promise that is fulfilled with the user when + * the login completes. + * @see AV.User#logIn + */ + logIn: function logIn(username, password) { + var user = AV.Object._create('_User'); + + user._finishFetch({ + username: username, + password: password + }); + + return user.logIn(); + }, + + /** + * Logs in a user with a session token. On success, this saves the session + * to disk, so you can retrieve the currently logged in user using + * current. + * + * @param {String} sessionToken The sessionToken to log in with. + * @return {Promise} A promise that is fulfilled with the user when + * the login completes. + */ + become: function become(sessionToken) { + return this._fetchUserBySessionToken(sessionToken).then(function (user) { + return user._handleSaveResult(true).then(function () { + return user; + }); + }); + }, + _fetchUserBySessionToken: function _fetchUserBySessionToken(sessionToken) { + if (sessionToken === undefined) { + return _promise.default.reject(new Error('The sessionToken cannot be undefined')); + } + + var user = AV.Object._create('_User'); + + return request({ + method: 'GET', + path: '/users/me', + authOptions: { + sessionToken: sessionToken + } + }).then(function (resp) { + var serverAttrs = user.parse(resp); + + user._finishFetch(serverAttrs); + + return user; + }); + }, + + /** + * Logs in a user with a mobile phone number and sms code sent by + * AV.User.requestLoginSmsCode.On success, this + * saves the session to disk, so you can retrieve the currently logged in + * user using current. + * + * @param {String} mobilePhone The user's mobilePhoneNumber + * @param {String} smsCode The sms code sent by AV.User.requestLoginSmsCode + * @return {Promise} A promise that is fulfilled with the user when + * the login completes. + * @see AV.User#logIn + */ + logInWithMobilePhoneSmsCode: function logInWithMobilePhoneSmsCode(mobilePhone, smsCode) { + var user = AV.Object._create('_User'); + + user._finishFetch({ + mobilePhoneNumber: mobilePhone, + smsCode: smsCode + }); + + return user.logIn(); + }, + + /** + * Signs up or logs in a user with a mobilePhoneNumber and smsCode. + * On success, this saves the session to disk, so you can retrieve the currently + * logged in user using current. + * + * @param {String} mobilePhoneNumber The user's mobilePhoneNumber. + * @param {String} smsCode The sms code sent by AV.Cloud.requestSmsCode + * @param {Object} attributes The user's other attributes such as username etc. + * @param {AuthOptions} options + * @return {Promise} A promise that is fulfilled with the user when + * the login completes. + * @see AV.User#signUpOrlogInWithMobilePhone + * @see AV.Cloud.requestSmsCode + */ + signUpOrlogInWithMobilePhone: function signUpOrlogInWithMobilePhone(mobilePhoneNumber, smsCode, attrs, options) { + attrs = attrs || {}; + attrs.mobilePhoneNumber = mobilePhoneNumber; + attrs.smsCode = smsCode; + + var user = AV.Object._create('_User'); + + return user.signUpOrlogInWithMobilePhone(attrs, options); + }, + + /** + * Logs in a user with a mobile phone number and password. On success, this + * saves the session to disk, so you can retrieve the currently logged in + * user using current. + * + * @param {String} mobilePhone The user's mobilePhoneNumber + * @param {String} password The password to log in with. + * @return {Promise} A promise that is fulfilled with the user when + * the login completes. + * @see AV.User#logIn + */ + logInWithMobilePhone: function logInWithMobilePhone(mobilePhone, password) { + var user = AV.Object._create('_User'); + + user._finishFetch({ + mobilePhoneNumber: mobilePhone, + password: password + }); + + return user.logIn(); + }, + + /** + * Logs in a user with email and password. + * + * @since 3.13.0 + * @param {String} email The user's email. + * @param {String} password The password to log in with. + * @return {Promise} A promise that is fulfilled with the user when + * the login completes. + */ + loginWithEmail: function loginWithEmail(email, password) { + var user = AV.Object._create('_User'); + + user._finishFetch({ + email: email, + password: password + }); + + return user.logIn(); + }, + + /** + * Signs up or logs in a user with a third party auth data(AccessToken). + * On success, this saves the session to disk, so you can retrieve the currently + * logged in user using current. + * + * @since 3.7.0 + * @param {Object} authData The response json data returned from third party token, maybe like { openid: 'abc123', access_token: '123abc', expires_in: 1382686496 } + * @param {string} platform Available platform for sign up. + * @param {Object} [options] + * @param {boolean} [options.failOnNotExist] If true, the login request will fail when no user matches this authData exists. + * @return {Promise} A promise that is fulfilled with the user when + * the login completes. + * @example AV.User.loginWithAuthData({ + * openid: 'abc123', + * access_token: '123abc', + * expires_in: 1382686496 + * }, 'weixin').then(function(user) { + * //Access user here + * }).catch(function(error) { + * //console.error("error: ", error); + * }); + * @see {@link https://leancloud.cn/docs/js_guide.html#绑定第三方平台账户} + */ + loginWithAuthData: function loginWithAuthData(authData, platform, options) { + return AV.User._logInWith(platform, authData, options); + }, + + /** + * @deprecated renamed to {@link AV.User.loginWithAuthData} + */ + signUpOrlogInWithAuthData: function signUpOrlogInWithAuthData() { + console.warn('DEPRECATED: User.signUpOrlogInWithAuthData 已废弃,请使用 User#loginWithAuthData 代替'); + return this.loginWithAuthData.apply(this, arguments); + }, + + /** + * Signs up or logs in a user with a third party authData and unionId. + * @since 3.7.0 + * @param {Object} authData The response json data returned from third party token, maybe like { openid: 'abc123', access_token: '123abc', expires_in: 1382686496 } + * @param {string} platform Available platform for sign up. + * @param {string} unionId + * @param {Object} [unionLoginOptions] + * @param {string} [unionLoginOptions.unionIdPlatform = 'weixin'] unionId platform + * @param {boolean} [unionLoginOptions.asMainAccount = false] If true, the unionId will be associated with the user. + * @param {boolean} [unionLoginOptions.failOnNotExist] If true, the login request will fail when no user matches this authData exists. + * @return {Promise} A promise that is fulfilled with the user when completed. + * @example AV.User.loginWithAuthDataAndUnionId({ + * openid: 'abc123', + * access_token: '123abc', + * expires_in: 1382686496 + * }, 'weixin', 'union123', { + * unionIdPlatform: 'weixin', + * asMainAccount: true, + * }).then(function(user) { + * //Access user here + * }).catch(function(error) { + * //console.error("error: ", error); + * }); + */ + loginWithAuthDataAndUnionId: function loginWithAuthDataAndUnionId(authData, platform, unionId, unionLoginOptions) { + return this.loginWithAuthData(mergeUnionDataIntoAuthData()(authData, unionId, unionLoginOptions), platform, unionLoginOptions); + }, + + /** + * @deprecated renamed to {@link AV.User.loginWithAuthDataAndUnionId} + * @since 3.5.0 + */ + signUpOrlogInWithAuthDataAndUnionId: function signUpOrlogInWithAuthDataAndUnionId() { + console.warn('DEPRECATED: User.signUpOrlogInWithAuthDataAndUnionId 已废弃,请使用 User#loginWithAuthDataAndUnionId 代替'); + return this.loginWithAuthDataAndUnionId.apply(this, arguments); + }, + + /** + * Merge unionId into authInfo. + * @since 4.6.0 + * @param {Object} authInfo + * @param {String} unionId + * @param {Object} [unionIdOption] + * @param {Boolean} [unionIdOption.asMainAccount] If true, the unionId will be associated with the user. + */ + mergeUnionId: function mergeUnionId(authInfo, unionId) { + var _ref14 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}, + _ref14$asMainAccount = _ref14.asMainAccount, + asMainAccount = _ref14$asMainAccount === void 0 ? false : _ref14$asMainAccount; + + authInfo = JSON.parse((0, _stringify.default)(authInfo)); + var _authInfo = authInfo, + authData = _authInfo.authData, + platform = _authInfo.platform; + authData.platform = platform; + authData.main_account = asMainAccount; + authData.unionid = unionId; + return authInfo; + }, + + /** + * 使用当前使用微信小程序的微信用户身份注册或登录,成功后用户的 session 会在设备上持久化保存,之后可以使用 AV.User.current() 获取当前登录用户。 + * 仅在微信小程序中可用。 + * + * @deprecated please use {@link AV.User.loginWithMiniApp} + * @since 2.0.0 + * @param {Object} [options] + * @param {boolean} [options.preferUnionId] 当用户满足 {@link https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/union-id.html 获取 UnionId 的条件} 时,是否使用 UnionId 登录。(since 3.13.0) + * @param {string} [options.unionIdPlatform = 'weixin'] (only take effect when preferUnionId) unionId platform + * @param {boolean} [options.asMainAccount = true] (only take effect when preferUnionId) If true, the unionId will be associated with the user. + * @param {boolean} [options.failOnNotExist] If true, the login request will fail when no user matches this authData exists. (since v3.7.0) + * @return {Promise.} + */ + loginWithWeapp: function loginWithWeapp() { + var _this15 = this; + + var _ref15 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, + _ref15$preferUnionId = _ref15.preferUnionId, + preferUnionId = _ref15$preferUnionId === void 0 ? false : _ref15$preferUnionId, + _ref15$unionIdPlatfor = _ref15.unionIdPlatform, + unionIdPlatform = _ref15$unionIdPlatfor === void 0 ? 'weixin' : _ref15$unionIdPlatfor, + _ref15$asMainAccount = _ref15.asMainAccount, + asMainAccount = _ref15$asMainAccount === void 0 ? true : _ref15$asMainAccount, + _ref15$failOnNotExist = _ref15.failOnNotExist, + failOnNotExist = _ref15$failOnNotExist === void 0 ? false : _ref15$failOnNotExist, + useMasterKey = _ref15.useMasterKey, + sessionToken = _ref15.sessionToken, + user = _ref15.user; + + var getAuthInfo = getAdapter('getAuthInfo'); + return getAuthInfo({ + preferUnionId: preferUnionId, + asMainAccount: asMainAccount, + platform: unionIdPlatform + }).then(function (authInfo) { + return _this15.loginWithMiniApp(authInfo, { + failOnNotExist: failOnNotExist, + useMasterKey: useMasterKey, + sessionToken: sessionToken, + user: user + }); + }); + }, + + /** + * 使用当前使用微信小程序的微信用户身份注册或登录, + * 仅在微信小程序中可用。 + * + * @deprecated please use {@link AV.User.loginWithMiniApp} + * @since 3.13.0 + * @param {Object} [unionLoginOptions] + * @param {string} [unionLoginOptions.unionIdPlatform = 'weixin'] unionId platform + * @param {boolean} [unionLoginOptions.asMainAccount = false] If true, the unionId will be associated with the user. + * @param {boolean} [unionLoginOptions.failOnNotExist] If true, the login request will fail when no user matches this authData exists. * @return {Promise.} + */ + loginWithWeappWithUnionId: function loginWithWeappWithUnionId(unionId) { + var _this16 = this; + + var _ref16 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, + _ref16$unionIdPlatfor = _ref16.unionIdPlatform, + unionIdPlatform = _ref16$unionIdPlatfor === void 0 ? 'weixin' : _ref16$unionIdPlatfor, + _ref16$asMainAccount = _ref16.asMainAccount, + asMainAccount = _ref16$asMainAccount === void 0 ? false : _ref16$asMainAccount, + _ref16$failOnNotExist = _ref16.failOnNotExist, + failOnNotExist = _ref16$failOnNotExist === void 0 ? false : _ref16$failOnNotExist, + useMasterKey = _ref16.useMasterKey, + sessionToken = _ref16.sessionToken, + user = _ref16.user; + + var getAuthInfo = getAdapter('getAuthInfo'); + return getAuthInfo({ + platform: unionIdPlatform + }).then(function (authInfo) { + authInfo = AV.User.mergeUnionId(authInfo, unionId, { + asMainAccount: asMainAccount + }); + return _this16.loginWithMiniApp(authInfo, { + failOnNotExist: failOnNotExist, + useMasterKey: useMasterKey, + sessionToken: sessionToken, + user: user + }); + }); + }, + + /** + * 使用当前使用 QQ 小程序的 QQ 用户身份注册或登录,成功后用户的 session 会在设备上持久化保存,之后可以使用 AV.User.current() 获取当前登录用户。 + * 仅在 QQ 小程序中可用。 + * + * @deprecated please use {@link AV.User.loginWithMiniApp} + * @since 4.2.0 + * @param {Object} [options] + * @param {boolean} [options.preferUnionId] 如果服务端在登录时获取到了用户的 UnionId,是否将 UnionId 保存在用户账号中。 + * @param {string} [options.unionIdPlatform = 'qq'] (only take effect when preferUnionId) unionId platform + * @param {boolean} [options.asMainAccount = true] (only take effect when preferUnionId) If true, the unionId will be associated with the user. + * @param {boolean} [options.failOnNotExist] If true, the login request will fail when no user matches this authData exists. (since v3.7.0) + * @return {Promise.} + */ + loginWithQQApp: function loginWithQQApp() { + var _this17 = this; + + var _ref17 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, + _ref17$preferUnionId = _ref17.preferUnionId, + preferUnionId = _ref17$preferUnionId === void 0 ? false : _ref17$preferUnionId, + _ref17$unionIdPlatfor = _ref17.unionIdPlatform, + unionIdPlatform = _ref17$unionIdPlatfor === void 0 ? 'qq' : _ref17$unionIdPlatfor, + _ref17$asMainAccount = _ref17.asMainAccount, + asMainAccount = _ref17$asMainAccount === void 0 ? true : _ref17$asMainAccount, + _ref17$failOnNotExist = _ref17.failOnNotExist, + failOnNotExist = _ref17$failOnNotExist === void 0 ? false : _ref17$failOnNotExist, + useMasterKey = _ref17.useMasterKey, + sessionToken = _ref17.sessionToken, + user = _ref17.user; + + var getAuthInfo = getAdapter('getAuthInfo'); + return getAuthInfo({ + preferUnionId: preferUnionId, + asMainAccount: asMainAccount, + platform: unionIdPlatform + }).then(function (authInfo) { + authInfo.provider = PLATFORM_QQAPP; + return _this17.loginWithMiniApp(authInfo, { + failOnNotExist: failOnNotExist, + useMasterKey: useMasterKey, + sessionToken: sessionToken, + user: user + }); + }); + }, + + /** + * 使用当前使用 QQ 小程序的 QQ 用户身份注册或登录, + * 仅在 QQ 小程序中可用。 + * + * @deprecated please use {@link AV.User.loginWithMiniApp} + * @since 4.2.0 + * @param {Object} [unionLoginOptions] + * @param {string} [unionLoginOptions.unionIdPlatform = 'qq'] unionId platform + * @param {boolean} [unionLoginOptions.asMainAccount = false] If true, the unionId will be associated with the user. + * @param {boolean} [unionLoginOptions.failOnNotExist] If true, the login request will fail when no user matches this authData exists. + * @return {Promise.} + */ + loginWithQQAppWithUnionId: function loginWithQQAppWithUnionId(unionId) { + var _this18 = this; + + var _ref18 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, + _ref18$unionIdPlatfor = _ref18.unionIdPlatform, + unionIdPlatform = _ref18$unionIdPlatfor === void 0 ? 'qq' : _ref18$unionIdPlatfor, + _ref18$asMainAccount = _ref18.asMainAccount, + asMainAccount = _ref18$asMainAccount === void 0 ? false : _ref18$asMainAccount, + _ref18$failOnNotExist = _ref18.failOnNotExist, + failOnNotExist = _ref18$failOnNotExist === void 0 ? false : _ref18$failOnNotExist, + useMasterKey = _ref18.useMasterKey, + sessionToken = _ref18.sessionToken, + user = _ref18.user; + + var getAuthInfo = getAdapter('getAuthInfo'); + return getAuthInfo({ + platform: unionIdPlatform + }).then(function (authInfo) { + authInfo = AV.User.mergeUnionId(authInfo, unionId, { + asMainAccount: asMainAccount + }); + authInfo.provider = PLATFORM_QQAPP; + return _this18.loginWithMiniApp(authInfo, { + failOnNotExist: failOnNotExist, + useMasterKey: useMasterKey, + sessionToken: sessionToken, + user: user + }); + }); + }, + + /** + * Register or login using the identity of the current mini-app. + * @param {Object} authInfo + * @param {Object} [option] + * @param {Boolean} [option.failOnNotExist] If true, the login request will fail when no user matches this authInfo.authData exists. + */ + loginWithMiniApp: function loginWithMiniApp(authInfo, option) { + var _this19 = this; + + if (authInfo === undefined) { + var getAuthInfo = getAdapter('getAuthInfo'); + return getAuthInfo().then(function (authInfo) { + return _this19.loginWithAuthData(authInfo.authData, authInfo.provider, option); + }); + } + + return this.loginWithAuthData(authInfo.authData, authInfo.provider, option); + }, + + /** + * Only use for DI in tests to produce deterministic IDs. + */ + _genId: function _genId() { + return uuid(); + }, + + /** + * Creates an anonymous user. + * + * @since 3.9.0 + * @return {Promise.} + */ + loginAnonymously: function loginAnonymously() { + return this.loginWithAuthData({ + id: AV.User._genId() + }, 'anonymous'); + }, + associateWithAuthData: function associateWithAuthData(userObj, platform, authData) { + console.warn('DEPRECATED: User.associateWithAuthData 已废弃,请使用 User#associateWithAuthData 代替'); + return userObj._linkWith(platform, authData); + }, + + /** + * Logs out the currently logged in user session. This will remove the + * session from disk, log out of linked services, and future calls to + * current will return null. + * @return {Promise} + */ + logOut: function logOut() { + if (AV._config.disableCurrentUser) { + console.warn('AV.User.current() was disabled in multi-user environment, call logOut() from user object instead https://leancloud.cn/docs/leanengine-node-sdk-upgrade-1.html'); + return _promise.default.resolve(null); + } + + if (AV.User._currentUser !== null) { + AV.User._currentUser._logOutWithAll(); + + AV.User._currentUser._isCurrentUser = false; + } + + AV.User._currentUserMatchesDisk = true; + AV.User._currentUser = null; + return AV.localStorage.removeItemAsync(AV._getAVPath(AV.User._CURRENT_USER_KEY)).then(function () { + return AV._refreshSubscriptionId(); + }); + }, + + /** + *Create a follower query for special user to query the user's followers. + * @param {String} userObjectId The user object id. + * @return {AV.FriendShipQuery} + * @since 0.3.0 + */ + followerQuery: function followerQuery(userObjectId) { + if (!userObjectId || !_.isString(userObjectId)) { + throw new Error('Invalid user object id.'); + } + + var query = new AV.FriendShipQuery('_Follower'); + query._friendshipTag = 'follower'; + query.equalTo('user', AV.Object.createWithoutData('_User', userObjectId)); + return query; + }, + + /** + *Create a followee query for special user to query the user's followees. + * @param {String} userObjectId The user object id. + * @return {AV.FriendShipQuery} + * @since 0.3.0 + */ + followeeQuery: function followeeQuery(userObjectId) { + if (!userObjectId || !_.isString(userObjectId)) { + throw new Error('Invalid user object id.'); + } + + var query = new AV.FriendShipQuery('_Followee'); + query._friendshipTag = 'followee'; + query.equalTo('user', AV.Object.createWithoutData('_User', userObjectId)); + return query; + }, + + /** + * Requests a password reset email to be sent to the specified email address + * associated with the user account. This email allows the user to securely + * reset their password on the AV site. + * + * @param {String} email The email address associated with the user that + * forgot their password. + * @return {Promise} + */ + requestPasswordReset: function requestPasswordReset(email) { + var json = { + email: email + }; + var request = AVRequest('requestPasswordReset', null, null, 'POST', json); + return request; + }, + + /** + * Requests a verify email to be sent to the specified email address + * associated with the user account. This email allows the user to securely + * verify their email address on the AV site. + * + * @param {String} email The email address associated with the user that + * doesn't verify their email address. + * @return {Promise} + */ + requestEmailVerify: function requestEmailVerify(email) { + var json = { + email: email + }; + var request = AVRequest('requestEmailVerify', null, null, 'POST', json); + return request; + }, + + /** + * Requests a verify sms code to be sent to the specified mobile phone + * number associated with the user account. This sms code allows the user to + * verify their mobile phone number by calling AV.User.verifyMobilePhone + * + * @param {String} mobilePhoneNumber The mobile phone number associated with the + * user that doesn't verify their mobile phone number. + * @param {SMSAuthOptions} [options] + * @return {Promise} + */ + requestMobilePhoneVerify: function requestMobilePhoneVerify(mobilePhoneNumber) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var data = { + mobilePhoneNumber: mobilePhoneNumber + }; + + if (options.validateToken) { + data.validate_token = options.validateToken; + } + + var request = AVRequest('requestMobilePhoneVerify', null, null, 'POST', data, options); + return request; + }, + + /** + * Requests a reset password sms code to be sent to the specified mobile phone + * number associated with the user account. This sms code allows the user to + * reset their account's password by calling AV.User.resetPasswordBySmsCode + * + * @param {String} mobilePhoneNumber The mobile phone number associated with the + * user that doesn't verify their mobile phone number. + * @param {SMSAuthOptions} [options] + * @return {Promise} + */ + requestPasswordResetBySmsCode: function requestPasswordResetBySmsCode(mobilePhoneNumber) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var data = { + mobilePhoneNumber: mobilePhoneNumber + }; + + if (options.validateToken) { + data.validate_token = options.validateToken; + } + + var request = AVRequest('requestPasswordResetBySmsCode', null, null, 'POST', data, options); + return request; + }, + + /** + * Requests a change mobile phone number sms code to be sent to the mobilePhoneNumber. + * This sms code allows current user to reset it's mobilePhoneNumber by + * calling {@link AV.User.changePhoneNumber} + * @since 4.7.0 + * @param {String} mobilePhoneNumber + * @param {Number} [ttl] ttl of sms code (default is 6 minutes) + * @param {SMSAuthOptions} [options] + * @return {Promise} + */ + requestChangePhoneNumber: function requestChangePhoneNumber(mobilePhoneNumber, ttl, options) { + var data = { + mobilePhoneNumber: mobilePhoneNumber + }; + + if (ttl) { + data.ttl = options.ttl; + } + + if (options && options.validateToken) { + data.validate_token = options.validateToken; + } + + return AVRequest('requestChangePhoneNumber', null, null, 'POST', data, options); + }, + + /** + * Makes a call to reset user's account mobilePhoneNumber by sms code. + * The sms code is sent by {@link AV.User.requestChangePhoneNumber} + * @since 4.7.0 + * @param {String} mobilePhoneNumber + * @param {String} code The sms code. + * @return {Promise} + */ + changePhoneNumber: function changePhoneNumber(mobilePhoneNumber, code) { + var data = { + mobilePhoneNumber: mobilePhoneNumber, + code: code + }; + return AVRequest('changePhoneNumber', null, null, 'POST', data); + }, + + /** + * Makes a call to reset user's account password by sms code and new password. + * The sms code is sent by AV.User.requestPasswordResetBySmsCode. + * @param {String} code The sms code sent by AV.User.Cloud.requestSmsCode + * @param {String} password The new password. + * @return {Promise} A promise that will be resolved with the result + * of the function. + */ + resetPasswordBySmsCode: function resetPasswordBySmsCode(code, password) { + var json = { + password: password + }; + var request = AVRequest('resetPasswordBySmsCode', null, code, 'PUT', json); + return request; + }, + + /** + * Makes a call to verify sms code that sent by AV.User.Cloud.requestSmsCode + * If verify successfully,the user mobilePhoneVerified attribute will be true. + * @param {String} code The sms code sent by AV.User.Cloud.requestSmsCode + * @return {Promise} A promise that will be resolved with the result + * of the function. + */ + verifyMobilePhone: function verifyMobilePhone(code) { + var request = AVRequest('verifyMobilePhone', null, code, 'POST', null); + return request; + }, + + /** + * Requests a logIn sms code to be sent to the specified mobile phone + * number associated with the user account. This sms code allows the user to + * login by AV.User.logInWithMobilePhoneSmsCode function. + * + * @param {String} mobilePhoneNumber The mobile phone number associated with the + * user that want to login by AV.User.logInWithMobilePhoneSmsCode + * @param {SMSAuthOptions} [options] + * @return {Promise} + */ + requestLoginSmsCode: function requestLoginSmsCode(mobilePhoneNumber) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var data = { + mobilePhoneNumber: mobilePhoneNumber + }; + + if (options.validateToken) { + data.validate_token = options.validateToken; + } + + var request = AVRequest('requestLoginSmsCode', null, null, 'POST', data, options); + return request; + }, + + /** + * Retrieves the currently logged in AVUser with a valid session, + * either from memory or localStorage, if necessary. + * @return {Promise.} resolved with the currently logged in AV.User. + */ + currentAsync: function currentAsync() { + if (AV._config.disableCurrentUser) { + console.warn('AV.User.currentAsync() was disabled in multi-user environment, access user from request instead https://leancloud.cn/docs/leanengine-node-sdk-upgrade-1.html'); + return _promise.default.resolve(null); + } + + if (AV.User._currentUser) { + return _promise.default.resolve(AV.User._currentUser); + } + + if (AV.User._currentUserMatchesDisk) { + return _promise.default.resolve(AV.User._currentUser); + } + + return AV.localStorage.getItemAsync(AV._getAVPath(AV.User._CURRENT_USER_KEY)).then(function (userData) { + if (!userData) { + return null; + } // Load the user from local storage. + + + AV.User._currentUserMatchesDisk = true; + AV.User._currentUser = AV.Object._create('_User'); + AV.User._currentUser._isCurrentUser = true; + var json = JSON.parse(userData); + AV.User._currentUser.id = json._id; + delete json._id; + AV.User._currentUser._sessionToken = json._sessionToken; + delete json._sessionToken; + + AV.User._currentUser._finishFetch(json); //AV.User._currentUser.set(json); + + + AV.User._currentUser._synchronizeAllAuthData(); + + AV.User._currentUser._refreshCache(); + + AV.User._currentUser._opSetQueue = [{}]; + return AV.User._currentUser; + }); + }, + + /** + * Retrieves the currently logged in AVUser with a valid session, + * either from memory or localStorage, if necessary. + * @return {AV.User} The currently logged in AV.User. + */ + current: function current() { + if (AV._config.disableCurrentUser) { + console.warn('AV.User.current() was disabled in multi-user environment, access user from request instead https://leancloud.cn/docs/leanengine-node-sdk-upgrade-1.html'); + return null; + } + + if (AV.localStorage.async) { + var error = new Error('Synchronous API User.current() is not available in this runtime. Use User.currentAsync() instead.'); + error.code = 'SYNC_API_NOT_AVAILABLE'; + throw error; + } + + if (AV.User._currentUser) { + return AV.User._currentUser; + } + + if (AV.User._currentUserMatchesDisk) { + return AV.User._currentUser; + } // Load the user from local storage. + + + AV.User._currentUserMatchesDisk = true; + var userData = AV.localStorage.getItem(AV._getAVPath(AV.User._CURRENT_USER_KEY)); + + if (!userData) { + return null; + } + + AV.User._currentUser = AV.Object._create('_User'); + AV.User._currentUser._isCurrentUser = true; + var json = JSON.parse(userData); + AV.User._currentUser.id = json._id; + delete json._id; + AV.User._currentUser._sessionToken = json._sessionToken; + delete json._sessionToken; + + AV.User._currentUser._finishFetch(json); //AV.User._currentUser.set(json); + + + AV.User._currentUser._synchronizeAllAuthData(); + + AV.User._currentUser._refreshCache(); + + AV.User._currentUser._opSetQueue = [{}]; + return AV.User._currentUser; + }, + + /** + * Persists a user as currentUser to localStorage, and into the singleton. + * @private + */ + _saveCurrentUser: function _saveCurrentUser(user) { + var promise; + + if (AV.User._currentUser !== user) { + promise = AV.User.logOut(); + } else { + promise = _promise.default.resolve(); + } + + return promise.then(function () { + user._isCurrentUser = true; + AV.User._currentUser = user; + + var json = user._toFullJSON(); + + json._id = user.id; + json._sessionToken = user._sessionToken; + return AV.localStorage.setItemAsync(AV._getAVPath(AV.User._CURRENT_USER_KEY), (0, _stringify.default)(json)).then(function () { + AV.User._currentUserMatchesDisk = true; + return AV._refreshSubscriptionId(); + }); + }); + }, + _registerAuthenticationProvider: function _registerAuthenticationProvider(provider) { + AV.User._authProviders[provider.getAuthType()] = provider; // Synchronize the current user with the auth provider. + + if (!AV._config.disableCurrentUser && AV.User.current()) { + AV.User.current()._synchronizeAuthData(provider.getAuthType()); + } + }, + _logInWith: function _logInWith(provider, authData, options) { + var user = AV.Object._create('_User'); + + return user._linkWith(provider, authData, options); + } + }); +}; + +/***/ }), +/* 528 */ +/***/ (function(module, exports, __webpack_require__) { + +var _Object$defineProperty = __webpack_require__(137); + +function _defineProperty(obj, key, value) { + if (key in obj) { + _Object$defineProperty(obj, key, { + value: value, + enumerable: true, + configurable: true, + writable: true + }); + } else { + obj[key] = value; + } + + return obj; +} + +module.exports = _defineProperty, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), +/* 529 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(2); + +var _map = _interopRequireDefault(__webpack_require__(39)); + +var _promise = _interopRequireDefault(__webpack_require__(10)); + +var _keys = _interopRequireDefault(__webpack_require__(48)); + +var _stringify = _interopRequireDefault(__webpack_require__(34)); + +var _find = _interopRequireDefault(__webpack_require__(104)); + +var _concat = _interopRequireDefault(__webpack_require__(29)); + +var _ = __webpack_require__(1); + +var debug = __webpack_require__(60)('leancloud:query'); + +var AVError = __webpack_require__(40); + +var _require = __webpack_require__(25), + _request = _require._request, + request = _require.request; + +var _require2 = __webpack_require__(28), + ensureArray = _require2.ensureArray, + transformFetchOptions = _require2.transformFetchOptions, + continueWhile = _require2.continueWhile; + +var requires = function requires(value, message) { + if (value === undefined) { + throw new Error(message); + } +}; // AV.Query is a way to create a list of AV.Objects. + + +module.exports = function (AV) { + /** + * Creates a new AV.Query for the given AV.Object subclass. + * @param {Class|String} objectClass An instance of a subclass of AV.Object, or a AV className string. + * @class + * + *

    AV.Query defines a query that is used to fetch AV.Objects. The + * most common use case is finding all objects that match a query through the + * find method. For example, this sample code fetches all objects + * of class MyClass. It calls a different function depending on + * whether the fetch succeeded or not. + * + *

    +   * var query = new AV.Query(MyClass);
    +   * query.find().then(function(results) {
    +   *   // results is an array of AV.Object.
    +   * }, function(error) {
    +   *   // error is an instance of AVError.
    +   * });

    + * + *

    An AV.Query can also be used to retrieve a single object whose id is + * known, through the get method. For example, this sample code fetches an + * object of class MyClass and id myId. It calls a + * different function depending on whether the fetch succeeded or not. + * + *

    +   * var query = new AV.Query(MyClass);
    +   * query.get(myId).then(function(object) {
    +   *   // object is an instance of AV.Object.
    +   * }, function(error) {
    +   *   // error is an instance of AVError.
    +   * });

    + * + *

    An AV.Query can also be used to count the number of objects that match + * the query without retrieving all of those objects. For example, this + * sample code counts the number of objects of the class MyClass + *

    +   * var query = new AV.Query(MyClass);
    +   * query.count().then(function(number) {
    +   *   // There are number instances of MyClass.
    +   * }, function(error) {
    +   *   // error is an instance of AVError.
    +   * });

    + */ + AV.Query = function (objectClass) { + if (_.isString(objectClass)) { + objectClass = AV.Object._getSubclass(objectClass); + } + + this.objectClass = objectClass; + this.className = objectClass.prototype.className; + this._where = {}; + this._include = []; + this._select = []; + this._limit = -1; // negative limit means, do not send a limit + + this._skip = 0; + this._defaultParams = {}; + }; + /** + * Constructs a AV.Query that is the OR of the passed in queries. For + * example: + *
    var compoundQuery = AV.Query.or(query1, query2, query3);
    + * + * will create a compoundQuery that is an or of the query1, query2, and + * query3. + * @param {...AV.Query} var_args The list of queries to OR. + * @return {AV.Query} The query that is the OR of the passed in queries. + */ + + + AV.Query.or = function () { + var queries = _.toArray(arguments); + + var className = null; + + AV._arrayEach(queries, function (q) { + if (_.isNull(className)) { + className = q.className; + } + + if (className !== q.className) { + throw new Error('All queries must be for the same class'); + } + }); + + var query = new AV.Query(className); + + query._orQuery(queries); + + return query; + }; + /** + * Constructs a AV.Query that is the AND of the passed in queries. For + * example: + *
    var compoundQuery = AV.Query.and(query1, query2, query3);
    + * + * will create a compoundQuery that is an 'and' of the query1, query2, and + * query3. + * @param {...AV.Query} var_args The list of queries to AND. + * @return {AV.Query} The query that is the AND of the passed in queries. + */ + + + AV.Query.and = function () { + var queries = _.toArray(arguments); + + var className = null; + + AV._arrayEach(queries, function (q) { + if (_.isNull(className)) { + className = q.className; + } + + if (className !== q.className) { + throw new Error('All queries must be for the same class'); + } + }); + + var query = new AV.Query(className); + + query._andQuery(queries); + + return query; + }; + /** + * Retrieves a list of AVObjects that satisfy the CQL. + * CQL syntax please see {@link https://leancloud.cn/docs/cql_guide.html CQL Guide}. + * + * @param {String} cql A CQL string, see {@link https://leancloud.cn/docs/cql_guide.html CQL Guide}. + * @param {Array} pvalues An array contains placeholder values. + * @param {AuthOptions} options + * @return {Promise} A promise that is resolved with the results when + * the query completes. + */ + + + AV.Query.doCloudQuery = function (cql, pvalues, options) { + var params = { + cql: cql + }; + + if (_.isArray(pvalues)) { + params.pvalues = pvalues; + } else { + options = pvalues; + } + + var request = _request('cloudQuery', null, null, 'GET', params, options); + + return request.then(function (response) { + //query to process results. + var query = new AV.Query(response.className); + var results = (0, _map.default)(_).call(_, response.results, function (json) { + var obj = query._newObject(response); + + if (obj._finishFetch) { + obj._finishFetch(query._processResult(json), true); + } + + return obj; + }); + return { + results: results, + count: response.count, + className: response.className + }; + }); + }; + /** + * Return a query with conditions from json. + * This can be useful to send a query from server side to client side. + * @since 4.0.0 + * @param {Object} json from {@link AV.Query#toJSON} + * @return {AV.Query} + */ + + + AV.Query.fromJSON = function (_ref) { + var className = _ref.className, + where = _ref.where, + include = _ref.include, + select = _ref.select, + includeACL = _ref.includeACL, + limit = _ref.limit, + skip = _ref.skip, + order = _ref.order; + + if (typeof className !== 'string') { + throw new TypeError('Invalid Query JSON, className must be a String.'); + } + + var query = new AV.Query(className); + + _.extend(query, { + _where: where, + _include: include, + _select: select, + _includeACL: includeACL, + _limit: limit, + _skip: skip, + _order: order + }); + + return query; + }; + + AV.Query._extend = AV._extend; + + _.extend(AV.Query.prototype, + /** @lends AV.Query.prototype */ + { + //hook to iterate result. Added by dennis. + _processResult: function _processResult(obj) { + return obj; + }, + + /** + * Constructs an AV.Object whose id is already known by fetching data from + * the server. + * + * @param {String} objectId The id of the object to be fetched. + * @param {AuthOptions} options + * @return {Promise.} + */ + get: function get(objectId, options) { + if (!_.isString(objectId)) { + throw new Error('objectId must be a string'); + } + + if (objectId === '') { + return _promise.default.reject(new AVError(AVError.OBJECT_NOT_FOUND, 'Object not found.')); + } + + var obj = this._newObject(); + + obj.id = objectId; + + var queryJSON = this._getParams(); + + var fetchOptions = {}; + if ((0, _keys.default)(queryJSON)) fetchOptions.keys = (0, _keys.default)(queryJSON); + if (queryJSON.include) fetchOptions.include = queryJSON.include; + if (queryJSON.includeACL) fetchOptions.includeACL = queryJSON.includeACL; + return _request('classes', this.className, objectId, 'GET', transformFetchOptions(fetchOptions), options).then(function (response) { + if (_.isEmpty(response)) throw new AVError(AVError.OBJECT_NOT_FOUND, 'Object not found.'); + + obj._finishFetch(obj.parse(response), true); + + return obj; + }); + }, + + /** + * Returns a JSON representation of this query. + * @return {Object} + */ + toJSON: function toJSON() { + var className = this.className, + where = this._where, + include = this._include, + select = this._select, + includeACL = this._includeACL, + limit = this._limit, + skip = this._skip, + order = this._order; + return { + className: className, + where: where, + include: include, + select: select, + includeACL: includeACL, + limit: limit, + skip: skip, + order: order + }; + }, + _getParams: function _getParams() { + var params = _.extend({}, this._defaultParams, { + where: this._where + }); + + if (this._include.length > 0) { + params.include = this._include.join(','); + } + + if (this._select.length > 0) { + params.keys = this._select.join(','); + } + + if (this._includeACL !== undefined) { + params.returnACL = this._includeACL; + } + + if (this._limit >= 0) { + params.limit = this._limit; + } + + if (this._skip > 0) { + params.skip = this._skip; + } + + if (this._order !== undefined) { + params.order = this._order; + } + + return params; + }, + _newObject: function _newObject(response) { + var obj; + + if (response && response.className) { + obj = new AV.Object(response.className); + } else { + obj = new this.objectClass(); + } + + return obj; + }, + _createRequest: function _createRequest() { + var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this._getParams(); + var options = arguments.length > 1 ? arguments[1] : undefined; + var path = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "/classes/".concat(this.className); + + if (encodeURIComponent((0, _stringify.default)(params)).length > 2000) { + var body = { + requests: [{ + method: 'GET', + path: "/1.1".concat(path), + params: params + }] + }; + return request({ + path: '/batch', + method: 'POST', + data: body, + authOptions: options + }).then(function (response) { + var result = response[0]; + + if (result.success) { + return result.success; + } + + var error = new AVError(result.error.code, result.error.error || 'Unknown batch error'); + throw error; + }); + } + + return request({ + method: 'GET', + path: path, + query: params, + authOptions: options + }); + }, + _parseResponse: function _parseResponse(response) { + var _this = this; + + return (0, _map.default)(_).call(_, response.results, function (json) { + var obj = _this._newObject(response); + + if (obj._finishFetch) { + obj._finishFetch(_this._processResult(json), true); + } + + return obj; + }); + }, + + /** + * Retrieves a list of AVObjects that satisfy this query. + * + * @param {AuthOptions} options + * @return {Promise} A promise that is resolved with the results when + * the query completes. + */ + find: function find(options) { + var request = this._createRequest(undefined, options); + + return request.then(this._parseResponse.bind(this)); + }, + + /** + * Retrieves both AVObjects and total count. + * + * @since 4.12.0 + * @param {AuthOptions} options + * @return {Promise} A tuple contains results and count. + */ + findAndCount: function findAndCount(options) { + var _this2 = this; + + var params = this._getParams(); + + params.count = 1; + + var request = this._createRequest(params, options); + + return request.then(function (response) { + return [_this2._parseResponse(response), response.count]; + }); + }, + + /** + * scan a Query. masterKey required. + * + * @since 2.1.0 + * @param {object} [options] + * @param {string} [options.orderedBy] specify the key to sort + * @param {number} [options.batchSize] specify the batch size for each request + * @param {AuthOptions} [authOptions] + * @return {AsyncIterator.} + * @example const testIterator = { + * [Symbol.asyncIterator]() { + * return new Query('Test').scan(undefined, { useMasterKey: true }); + * }, + * }; + * for await (const test of testIterator) { + * console.log(test.id); + * } + */ + scan: function scan() { + var _this3 = this; + + var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, + orderedBy = _ref2.orderedBy, + batchSize = _ref2.batchSize; + + var authOptions = arguments.length > 1 ? arguments[1] : undefined; + + var condition = this._getParams(); + + debug('scan %O', condition); + + if (condition.order) { + console.warn('The order of the query is ignored for Query#scan. Checkout the orderedBy option of Query#scan.'); + delete condition.order; + } + + if (condition.skip) { + console.warn('The skip option of the query is ignored for Query#scan.'); + delete condition.skip; + } + + if (condition.limit) { + console.warn('The limit option of the query is ignored for Query#scan.'); + delete condition.limit; + } + + if (orderedBy) condition.scan_key = orderedBy; + if (batchSize) condition.limit = batchSize; + var cursor; + var remainResults = []; + return { + next: function next() { + if (remainResults.length) { + return _promise.default.resolve({ + done: false, + value: remainResults.shift() + }); + } + + if (cursor === null) { + return _promise.default.resolve({ + done: true + }); + } + + return _request('scan/classes', _this3.className, null, 'GET', cursor ? _.extend({}, condition, { + cursor: cursor + }) : condition, authOptions).then(function (response) { + cursor = response.cursor; + + if (response.results.length) { + var results = _this3._parseResponse(response); + + results.forEach(function (result) { + return remainResults.push(result); + }); + } + + if (cursor === null && remainResults.length === 0) { + return { + done: true + }; + } + + return { + done: false, + value: remainResults.shift() + }; + }); + } + }; + }, + + /** + * Delete objects retrieved by this query. + * @param {AuthOptions} options + * @return {Promise} A promise that is fulfilled when the save + * completes. + */ + destroyAll: function destroyAll(options) { + var self = this; + return (0, _find.default)(self).call(self, options).then(function (objects) { + return AV.Object.destroyAll(objects, options); + }); + }, + + /** + * Counts the number of objects that match this query. + * + * @param {AuthOptions} options + * @return {Promise} A promise that is resolved with the count when + * the query completes. + */ + count: function count(options) { + var params = this._getParams(); + + params.limit = 0; + params.count = 1; + + var request = this._createRequest(params, options); + + return request.then(function (response) { + return response.count; + }); + }, + + /** + * Retrieves at most one AV.Object that satisfies this query. + * + * @param {AuthOptions} options + * @return {Promise} A promise that is resolved with the object when + * the query completes. + */ + first: function first(options) { + var self = this; + + var params = this._getParams(); + + params.limit = 1; + + var request = this._createRequest(params, options); + + return request.then(function (response) { + return (0, _map.default)(_).call(_, response.results, function (json) { + var obj = self._newObject(); + + if (obj._finishFetch) { + obj._finishFetch(self._processResult(json), true); + } + + return obj; + })[0]; + }); + }, + + /** + * Sets the number of results to skip before returning any results. + * This is useful for pagination. + * Default is to skip zero results. + * @param {Number} n the number of results to skip. + * @return {AV.Query} Returns the query, so you can chain this call. + */ + skip: function skip(n) { + requires(n, 'undefined is not a valid skip value'); + this._skip = n; + return this; + }, + + /** + * Sets the limit of the number of results to return. The default limit is + * 100, with a maximum of 1000 results being returned at a time. + * @param {Number} n the number of results to limit to. + * @return {AV.Query} Returns the query, so you can chain this call. + */ + limit: function limit(n) { + requires(n, 'undefined is not a valid limit value'); + this._limit = n; + return this; + }, + + /** + * Add a constraint to the query that requires a particular key's value to + * be equal to the provided value. + * @param {String} key The key to check. + * @param value The value that the AV.Object must contain. + * @return {AV.Query} Returns the query, so you can chain this call. + */ + equalTo: function equalTo(key, value) { + requires(key, 'undefined is not a valid key'); + requires(value, 'undefined is not a valid value'); + this._where[key] = AV._encode(value); + return this; + }, + + /** + * Helper for condition queries + * @private + */ + _addCondition: function _addCondition(key, condition, value) { + requires(key, 'undefined is not a valid condition key'); + requires(condition, 'undefined is not a valid condition'); + requires(value, 'undefined is not a valid condition value'); // Check if we already have a condition + + if (!this._where[key]) { + this._where[key] = {}; + } + + this._where[key][condition] = AV._encode(value); + return this; + }, + + /** + * Add a constraint to the query that requires a particular + * array key's length to be equal to the provided value. + * @param {String} key The array key to check. + * @param {number} value The length value. + * @return {AV.Query} Returns the query, so you can chain this call. + */ + sizeEqualTo: function sizeEqualTo(key, value) { + this._addCondition(key, '$size', value); + + return this; + }, + + /** + * Add a constraint to the query that requires a particular key's value to + * be not equal to the provided value. + * @param {String} key The key to check. + * @param value The value that must not be equalled. + * @return {AV.Query} Returns the query, so you can chain this call. + */ + notEqualTo: function notEqualTo(key, value) { + this._addCondition(key, '$ne', value); + + return this; + }, + + /** + * Add a constraint to the query that requires a particular key's value to + * be less than the provided value. + * @param {String} key The key to check. + * @param value The value that provides an upper bound. + * @return {AV.Query} Returns the query, so you can chain this call. + */ + lessThan: function lessThan(key, value) { + this._addCondition(key, '$lt', value); + + return this; + }, + + /** + * Add a constraint to the query that requires a particular key's value to + * be greater than the provided value. + * @param {String} key The key to check. + * @param value The value that provides an lower bound. + * @return {AV.Query} Returns the query, so you can chain this call. + */ + greaterThan: function greaterThan(key, value) { + this._addCondition(key, '$gt', value); + + return this; + }, + + /** + * Add a constraint to the query that requires a particular key's value to + * be less than or equal to the provided value. + * @param {String} key The key to check. + * @param value The value that provides an upper bound. + * @return {AV.Query} Returns the query, so you can chain this call. + */ + lessThanOrEqualTo: function lessThanOrEqualTo(key, value) { + this._addCondition(key, '$lte', value); + + return this; + }, + + /** + * Add a constraint to the query that requires a particular key's value to + * be greater than or equal to the provided value. + * @param {String} key The key to check. + * @param value The value that provides an lower bound. + * @return {AV.Query} Returns the query, so you can chain this call. + */ + greaterThanOrEqualTo: function greaterThanOrEqualTo(key, value) { + this._addCondition(key, '$gte', value); + + return this; + }, + + /** + * Add a constraint to the query that requires a particular key's value to + * be contained in the provided list of values. + * @param {String} key The key to check. + * @param {Array} values The values that will match. + * @return {AV.Query} Returns the query, so you can chain this call. + */ + containedIn: function containedIn(key, values) { + this._addCondition(key, '$in', values); + + return this; + }, + + /** + * Add a constraint to the query that requires a particular key's value to + * not be contained in the provided list of values. + * @param {String} key The key to check. + * @param {Array} values The values that will not match. + * @return {AV.Query} Returns the query, so you can chain this call. + */ + notContainedIn: function notContainedIn(key, values) { + this._addCondition(key, '$nin', values); + + return this; + }, + + /** + * Add a constraint to the query that requires a particular key's value to + * contain each one of the provided list of values. + * @param {String} key The key to check. This key's value must be an array. + * @param {Array} values The values that will match. + * @return {AV.Query} Returns the query, so you can chain this call. + */ + containsAll: function containsAll(key, values) { + this._addCondition(key, '$all', values); + + return this; + }, + + /** + * Add a constraint for finding objects that contain the given key. + * @param {String} key The key that should exist. + * @return {AV.Query} Returns the query, so you can chain this call. + */ + exists: function exists(key) { + this._addCondition(key, '$exists', true); + + return this; + }, + + /** + * Add a constraint for finding objects that do not contain a given key. + * @param {String} key The key that should not exist + * @return {AV.Query} Returns the query, so you can chain this call. + */ + doesNotExist: function doesNotExist(key) { + this._addCondition(key, '$exists', false); + + return this; + }, + + /** + * Add a regular expression constraint for finding string values that match + * the provided regular expression. + * This may be slow for large datasets. + * @param {String} key The key that the string to match is stored in. + * @param {RegExp} regex The regular expression pattern to match. + * @return {AV.Query} Returns the query, so you can chain this call. + */ + matches: function matches(key, regex, modifiers) { + this._addCondition(key, '$regex', regex); + + if (!modifiers) { + modifiers = ''; + } // Javascript regex options support mig as inline options but store them + // as properties of the object. We support mi & should migrate them to + // modifiers + + + if (regex.ignoreCase) { + modifiers += 'i'; + } + + if (regex.multiline) { + modifiers += 'm'; + } + + if (modifiers && modifiers.length) { + this._addCondition(key, '$options', modifiers); + } + + return this; + }, + + /** + * Add a constraint that requires that a key's value matches a AV.Query + * constraint. + * @param {String} key The key that the contains the object to match the + * query. + * @param {AV.Query} query The query that should match. + * @return {AV.Query} Returns the query, so you can chain this call. + */ + matchesQuery: function matchesQuery(key, query) { + var queryJSON = query._getParams(); + + queryJSON.className = query.className; + + this._addCondition(key, '$inQuery', queryJSON); + + return this; + }, + + /** + * Add a constraint that requires that a key's value not matches a + * AV.Query constraint. + * @param {String} key The key that the contains the object to match the + * query. + * @param {AV.Query} query The query that should not match. + * @return {AV.Query} Returns the query, so you can chain this call. + */ + doesNotMatchQuery: function doesNotMatchQuery(key, query) { + var queryJSON = query._getParams(); + + queryJSON.className = query.className; + + this._addCondition(key, '$notInQuery', queryJSON); + + return this; + }, + + /** + * Add a constraint that requires that a key's value matches a value in + * an object returned by a different AV.Query. + * @param {String} key The key that contains the value that is being + * matched. + * @param {String} queryKey The key in the objects returned by the query to + * match against. + * @param {AV.Query} query The query to run. + * @return {AV.Query} Returns the query, so you can chain this call. + */ + matchesKeyInQuery: function matchesKeyInQuery(key, queryKey, query) { + var queryJSON = query._getParams(); + + queryJSON.className = query.className; + + this._addCondition(key, '$select', { + key: queryKey, + query: queryJSON + }); + + return this; + }, + + /** + * Add a constraint that requires that a key's value not match a value in + * an object returned by a different AV.Query. + * @param {String} key The key that contains the value that is being + * excluded. + * @param {String} queryKey The key in the objects returned by the query to + * match against. + * @param {AV.Query} query The query to run. + * @return {AV.Query} Returns the query, so you can chain this call. + */ + doesNotMatchKeyInQuery: function doesNotMatchKeyInQuery(key, queryKey, query) { + var queryJSON = query._getParams(); + + queryJSON.className = query.className; + + this._addCondition(key, '$dontSelect', { + key: queryKey, + query: queryJSON + }); + + return this; + }, + + /** + * Add constraint that at least one of the passed in queries matches. + * @param {Array} queries + * @return {AV.Query} Returns the query, so you can chain this call. + * @private + */ + _orQuery: function _orQuery(queries) { + var queryJSON = (0, _map.default)(_).call(_, queries, function (q) { + return q._getParams().where; + }); + this._where.$or = queryJSON; + return this; + }, + + /** + * Add constraint that both of the passed in queries matches. + * @param {Array} queries + * @return {AV.Query} Returns the query, so you can chain this call. + * @private + */ + _andQuery: function _andQuery(queries) { + var queryJSON = (0, _map.default)(_).call(_, queries, function (q) { + return q._getParams().where; + }); + this._where.$and = queryJSON; + return this; + }, + + /** + * Converts a string into a regex that matches it. + * Surrounding with \Q .. \E does this, we just need to escape \E's in + * the text separately. + * @private + */ + _quote: function _quote(s) { + return '\\Q' + s.replace('\\E', '\\E\\\\E\\Q') + '\\E'; + }, + + /** + * Add a constraint for finding string values that contain a provided + * string. This may be slow for large datasets. + * @param {String} key The key that the string to match is stored in. + * @param {String} substring The substring that the value must contain. + * @return {AV.Query} Returns the query, so you can chain this call. + */ + contains: function contains(key, value) { + this._addCondition(key, '$regex', this._quote(value)); + + return this; + }, + + /** + * Add a constraint for finding string values that start with a provided + * string. This query will use the backend index, so it will be fast even + * for large datasets. + * @param {String} key The key that the string to match is stored in. + * @param {String} prefix The substring that the value must start with. + * @return {AV.Query} Returns the query, so you can chain this call. + */ + startsWith: function startsWith(key, value) { + this._addCondition(key, '$regex', '^' + this._quote(value)); + + return this; + }, + + /** + * Add a constraint for finding string values that end with a provided + * string. This will be slow for large datasets. + * @param {String} key The key that the string to match is stored in. + * @param {String} suffix The substring that the value must end with. + * @return {AV.Query} Returns the query, so you can chain this call. + */ + endsWith: function endsWith(key, value) { + this._addCondition(key, '$regex', this._quote(value) + '$'); + + return this; + }, + + /** + * Sorts the results in ascending order by the given key. + * + * @param {String} key The key to order by. + * @return {AV.Query} Returns the query, so you can chain this call. + */ + ascending: function ascending(key) { + requires(key, 'undefined is not a valid key'); + this._order = key; + return this; + }, + + /** + * Also sorts the results in ascending order by the given key. The previous sort keys have + * precedence over this key. + * + * @param {String} key The key to order by + * @return {AV.Query} Returns the query so you can chain this call. + */ + addAscending: function addAscending(key) { + requires(key, 'undefined is not a valid key'); + if (this._order) this._order += ',' + key;else this._order = key; + return this; + }, + + /** + * Sorts the results in descending order by the given key. + * + * @param {String} key The key to order by. + * @return {AV.Query} Returns the query, so you can chain this call. + */ + descending: function descending(key) { + requires(key, 'undefined is not a valid key'); + this._order = '-' + key; + return this; + }, + + /** + * Also sorts the results in descending order by the given key. The previous sort keys have + * precedence over this key. + * + * @param {String} key The key to order by + * @return {AV.Query} Returns the query so you can chain this call. + */ + addDescending: function addDescending(key) { + requires(key, 'undefined is not a valid key'); + if (this._order) this._order += ',-' + key;else this._order = '-' + key; + return this; + }, + + /** + * Add a proximity based constraint for finding objects with key point + * values near the point given. + * @param {String} key The key that the AV.GeoPoint is stored in. + * @param {AV.GeoPoint} point The reference AV.GeoPoint that is used. + * @return {AV.Query} Returns the query, so you can chain this call. + */ + near: function near(key, point) { + if (!(point instanceof AV.GeoPoint)) { + // Try to cast it to a GeoPoint, so that near("loc", [20,30]) works. + point = new AV.GeoPoint(point); + } + + this._addCondition(key, '$nearSphere', point); + + return this; + }, + + /** + * Add a proximity based constraint for finding objects with key point + * values near the point given and within the maximum distance given. + * @param {String} key The key that the AV.GeoPoint is stored in. + * @param {AV.GeoPoint} point The reference AV.GeoPoint that is used. + * @param maxDistance Maximum distance (in radians) of results to return. + * @return {AV.Query} Returns the query, so you can chain this call. + */ + withinRadians: function withinRadians(key, point, distance) { + this.near(key, point); + + this._addCondition(key, '$maxDistance', distance); + + return this; + }, + + /** + * Add a proximity based constraint for finding objects with key point + * values near the point given and within the maximum distance given. + * Radius of earth used is 3958.8 miles. + * @param {String} key The key that the AV.GeoPoint is stored in. + * @param {AV.GeoPoint} point The reference AV.GeoPoint that is used. + * @param {Number} maxDistance Maximum distance (in miles) of results to + * return. + * @return {AV.Query} Returns the query, so you can chain this call. + */ + withinMiles: function withinMiles(key, point, distance) { + return this.withinRadians(key, point, distance / 3958.8); + }, + + /** + * Add a proximity based constraint for finding objects with key point + * values near the point given and within the maximum distance given. + * Radius of earth used is 6371.0 kilometers. + * @param {String} key The key that the AV.GeoPoint is stored in. + * @param {AV.GeoPoint} point The reference AV.GeoPoint that is used. + * @param {Number} maxDistance Maximum distance (in kilometers) of results + * to return. + * @return {AV.Query} Returns the query, so you can chain this call. + */ + withinKilometers: function withinKilometers(key, point, distance) { + return this.withinRadians(key, point, distance / 6371.0); + }, + + /** + * Add a constraint to the query that requires a particular key's + * coordinates be contained within a given rectangular geographic bounding + * box. + * @param {String} key The key to be constrained. + * @param {AV.GeoPoint} southwest + * The lower-left inclusive corner of the box. + * @param {AV.GeoPoint} northeast + * The upper-right inclusive corner of the box. + * @return {AV.Query} Returns the query, so you can chain this call. + */ + withinGeoBox: function withinGeoBox(key, southwest, northeast) { + if (!(southwest instanceof AV.GeoPoint)) { + southwest = new AV.GeoPoint(southwest); + } + + if (!(northeast instanceof AV.GeoPoint)) { + northeast = new AV.GeoPoint(northeast); + } + + this._addCondition(key, '$within', { + $box: [southwest, northeast] + }); + + return this; + }, + + /** + * Include nested AV.Objects for the provided key. You can use dot + * notation to specify which fields in the included object are also fetch. + * @param {String[]} keys The name of the key to include. + * @return {AV.Query} Returns the query, so you can chain this call. + */ + include: function include(keys) { + var _this4 = this; + + requires(keys, 'undefined is not a valid key'); + + _.forEach(arguments, function (keys) { + var _context; + + _this4._include = (0, _concat.default)(_context = _this4._include).call(_context, ensureArray(keys)); + }); + + return this; + }, + + /** + * Include the ACL. + * @param {Boolean} [value=true] Whether to include the ACL + * @return {AV.Query} Returns the query, so you can chain this call. + */ + includeACL: function includeACL() { + var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true; + this._includeACL = value; + return this; + }, + + /** + * Restrict the fields of the returned AV.Objects to include only the + * provided keys. If this is called multiple times, then all of the keys + * specified in each of the calls will be included. + * @param {String[]} keys The names of the keys to include. + * @return {AV.Query} Returns the query, so you can chain this call. + */ + select: function select(keys) { + var _this5 = this; + + requires(keys, 'undefined is not a valid key'); + + _.forEach(arguments, function (keys) { + var _context2; + + _this5._select = (0, _concat.default)(_context2 = _this5._select).call(_context2, ensureArray(keys)); + }); + + return this; + }, + + /** + * Iterates over each result of a query, calling a callback for each one. If + * the callback returns a promise, the iteration will not continue until + * that promise has been fulfilled. If the callback returns a rejected + * promise, then iteration will stop with that error. The items are + * processed in an unspecified order. The query may not have any sort order, + * and may not use limit or skip. + * @param callback {Function} Callback that will be called with each result + * of the query. + * @return {Promise} A promise that will be fulfilled once the + * iteration has completed. + */ + each: function each(callback) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + if (this._order || this._skip || this._limit >= 0) { + var error = new Error('Cannot iterate on a query with sort, skip, or limit.'); + return _promise.default.reject(error); + } + + var query = new AV.Query(this.objectClass); // We can override the batch size from the options. + // This is undocumented, but useful for testing. + + query._limit = options.batchSize || 100; + query._where = _.clone(this._where); + query._include = _.clone(this._include); + query.ascending('objectId'); + var finished = false; + return continueWhile(function () { + return !finished; + }, function () { + return (0, _find.default)(query).call(query, options).then(function (results) { + var callbacksDone = _promise.default.resolve(); + + _.each(results, function (result) { + callbacksDone = callbacksDone.then(function () { + return callback(result); + }); + }); + + return callbacksDone.then(function () { + if (results.length >= query._limit) { + query.greaterThan('objectId', results[results.length - 1].id); + } else { + finished = true; + } + }); + }); + }); + }, + + /** + * Subscribe the changes of this query. + * + * LiveQuery is not included in the default bundle: {@link https://url.leanapp.cn/enable-live-query}. + * + * @since 3.0.0 + * @return {AV.LiveQuery} An eventemitter which can be used to get LiveQuery updates; + */ + subscribe: function subscribe(options) { + return AV.LiveQuery.init(this, options); + } + }); + + AV.FriendShipQuery = AV.Query._extend({ + _newObject: function _newObject() { + var UserClass = AV.Object._getSubclass('_User'); + + return new UserClass(); + }, + _processResult: function _processResult(json) { + if (json && json[this._friendshipTag]) { + var user = json[this._friendshipTag]; + + if (user.__type === 'Pointer' && user.className === '_User') { + delete user.__type; + delete user.className; + } + + return user; + } else { + return null; + } + } + }); +}; + +/***/ }), +/* 530 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(2); + +var _promise = _interopRequireDefault(__webpack_require__(10)); + +var _keys = _interopRequireDefault(__webpack_require__(48)); + +var _ = __webpack_require__(1); + +var EventEmitter = __webpack_require__(218); + +var _require = __webpack_require__(28), + inherits = _require.inherits; + +var _require2 = __webpack_require__(25), + request = _require2.request; + +var subscribe = function subscribe(queryJSON, subscriptionId) { + return request({ + method: 'POST', + path: '/LiveQuery/subscribe', + data: { + query: queryJSON, + id: subscriptionId + } + }); +}; + +module.exports = function (AV) { + var requireRealtime = function requireRealtime() { + if (!AV._config.realtime) { + throw new Error('LiveQuery not supported. Please use the LiveQuery bundle. https://url.leanapp.cn/enable-live-query'); + } + }; + /** + * @class + * A LiveQuery, created by {@link AV.Query#subscribe} is an EventEmitter notifies changes of the Query. + * @since 3.0.0 + */ + + + AV.LiveQuery = inherits(EventEmitter, + /** @lends AV.LiveQuery.prototype */ + { + constructor: function constructor(id, client, queryJSON, subscriptionId) { + var _this = this; + + EventEmitter.apply(this); + this.id = id; + this._client = client; + + this._client.register(this); + + this._queryJSON = queryJSON; + this._subscriptionId = subscriptionId; + this._onMessage = this._dispatch.bind(this); + + this._onReconnect = function () { + subscribe(_this._queryJSON, _this._subscriptionId).catch(function (error) { + return console.error("LiveQuery resubscribe error: ".concat(error.message)); + }); + }; + + client.on('message', this._onMessage); + client.on('reconnect', this._onReconnect); + }, + _dispatch: function _dispatch(message) { + var _this2 = this; + + message.forEach(function (_ref) { + var op = _ref.op, + object = _ref.object, + queryId = _ref.query_id, + updatedKeys = _ref.updatedKeys; + if (queryId !== _this2.id) return; + var target = AV.parseJSON(_.extend({ + __type: object.className === '_File' ? 'File' : 'Object' + }, object)); + + if (updatedKeys) { + /** + * An existing AV.Object which fulfills the Query you subscribe is updated. + * @event AV.LiveQuery#update + * @param {AV.Object|AV.File} target updated object + * @param {String[]} updatedKeys updated keys + */ + + /** + * An existing AV.Object which doesn't fulfill the Query is updated and now it fulfills the Query. + * @event AV.LiveQuery#enter + * @param {AV.Object|AV.File} target updated object + * @param {String[]} updatedKeys updated keys + */ + + /** + * An existing AV.Object which fulfills the Query is updated and now it doesn't fulfill the Query. + * @event AV.LiveQuery#leave + * @param {AV.Object|AV.File} target updated object + * @param {String[]} updatedKeys updated keys + */ + _this2.emit(op, target, updatedKeys); + } else { + /** + * A new AV.Object which fulfills the Query you subscribe is created. + * @event AV.LiveQuery#create + * @param {AV.Object|AV.File} target updated object + */ + + /** + * An existing AV.Object which fulfills the Query you subscribe is deleted. + * @event AV.LiveQuery#delete + * @param {AV.Object|AV.File} target updated object + */ + _this2.emit(op, target); + } + }); + }, + + /** + * unsubscribe the query + * + * @return {Promise} + */ + unsubscribe: function unsubscribe() { + var client = this._client; + client.off('message', this._onMessage); + client.off('reconnect', this._onReconnect); + client.deregister(this); + return request({ + method: 'POST', + path: '/LiveQuery/unsubscribe', + data: { + id: client.id, + query_id: this.id + } + }); + } + }, + /** @lends AV.LiveQuery */ + { + init: function init(query) { + var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, + _ref2$subscriptionId = _ref2.subscriptionId, + userDefinedSubscriptionId = _ref2$subscriptionId === void 0 ? AV._getSubscriptionId() : _ref2$subscriptionId; + + requireRealtime(); + if (!(query instanceof AV.Query)) throw new TypeError('LiveQuery must be inited with a Query'); + return _promise.default.resolve(userDefinedSubscriptionId).then(function (subscriptionId) { + return AV._config.realtime.createLiveQueryClient(subscriptionId).then(function (liveQueryClient) { + var _query$_getParams = query._getParams(), + where = _query$_getParams.where, + keys = (0, _keys.default)(_query$_getParams), + returnACL = _query$_getParams.returnACL; + + var queryJSON = { + where: where, + keys: keys, + returnACL: returnACL, + className: query.className + }; + var promise = subscribe(queryJSON, subscriptionId).then(function (_ref3) { + var queryId = _ref3.query_id; + return new AV.LiveQuery(queryId, liveQueryClient, queryJSON, subscriptionId); + }).finally(function () { + liveQueryClient.deregister(promise); + }); + liveQueryClient.register(promise); + return promise; + }); + }); + }, + + /** + * Pause the LiveQuery connection. This is useful to deactivate the SDK when the app is swtiched to background. + * @static + * @return void + */ + pause: function pause() { + requireRealtime(); + return AV._config.realtime.pause(); + }, + + /** + * Resume the LiveQuery connection. All subscriptions will be restored after reconnection. + * @static + * @return void + */ + resume: function resume() { + requireRealtime(); + return AV._config.realtime.resume(); + } + }); +}; + +/***/ }), +/* 531 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _ = __webpack_require__(1); + +var _require = __webpack_require__(28), + tap = _require.tap; + +module.exports = function (AV) { + /** + * @class + * @example + * AV.Captcha.request().then(captcha => { + * captcha.bind({ + * textInput: 'code', // the id for textInput + * image: 'captcha', + * verifyButton: 'verify', + * }, { + * success: (validateCode) => {}, // next step + * error: (error) => {}, // present error.message to user + * }); + * }); + */ + AV.Captcha = function Captcha(options, authOptions) { + this._options = options; + this._authOptions = authOptions; + /** + * The image url of the captcha + * @type string + */ + + this.url = undefined; + /** + * The captchaToken of the captcha. + * @type string + */ + + this.captchaToken = undefined; + /** + * The validateToken of the captcha. + * @type string + */ + + this.validateToken = undefined; + }; + /** + * Refresh the captcha + * @return {Promise.} a new capcha url + */ + + + AV.Captcha.prototype.refresh = function refresh() { + var _this = this; + + return AV.Cloud._requestCaptcha(this._options, this._authOptions).then(function (_ref) { + var captchaToken = _ref.captchaToken, + url = _ref.url; + + _.extend(_this, { + captchaToken: captchaToken, + url: url + }); + + return url; + }); + }; + /** + * Verify the captcha + * @param {String} code The code from user input + * @return {Promise.} validateToken if the code is valid + */ + + + AV.Captcha.prototype.verify = function verify(code) { + var _this2 = this; + + return AV.Cloud.verifyCaptcha(code, this.captchaToken).then(tap(function (validateToken) { + return _this2.validateToken = validateToken; + })); + }; + + if (undefined === 'Browser') { + /** + * Bind the captcha to HTMLElements. ONLY AVAILABLE in browsers. + * @param [elements] + * @param {String|HTMLInputElement} [elements.textInput] An input element typed text, or the id for the element. + * @param {String|HTMLImageElement} [elements.image] An image element, or the id for the element. + * @param {String|HTMLElement} [elements.verifyButton] A button element, or the id for the element. + * @param [callbacks] + * @param {Function} [callbacks.success] Success callback will be called if the code is verified. The param `validateCode` can be used for further SMS request. + * @param {Function} [callbacks.error] Error callback will be called if something goes wrong, detailed in param `error.message`. + */ + AV.Captcha.prototype.bind = function bind(_ref2, _ref3) { + var _this3 = this; + + var textInput = _ref2.textInput, + image = _ref2.image, + verifyButton = _ref2.verifyButton; + var success = _ref3.success, + error = _ref3.error; + + if (typeof textInput === 'string') { + textInput = document.getElementById(textInput); + if (!textInput) throw new Error("textInput with id ".concat(textInput, " not found")); + } + + if (typeof image === 'string') { + image = document.getElementById(image); + if (!image) throw new Error("image with id ".concat(image, " not found")); + } + + if (typeof verifyButton === 'string') { + verifyButton = document.getElementById(verifyButton); + if (!verifyButton) throw new Error("verifyButton with id ".concat(verifyButton, " not found")); + } + + this.__refresh = function () { + return _this3.refresh().then(function (url) { + image.src = url; + + if (textInput) { + textInput.value = ''; + textInput.focus(); + } + }).catch(function (err) { + return console.warn("refresh captcha fail: ".concat(err.message)); + }); + }; + + if (image) { + this.__image = image; + image.src = this.url; + image.addEventListener('click', this.__refresh); + } + + this.__verify = function () { + var code = textInput.value; + + _this3.verify(code).catch(function (err) { + _this3.__refresh(); + + throw err; + }).then(success, error).catch(function (err) { + return console.warn("verify captcha fail: ".concat(err.message)); + }); + }; + + if (textInput && verifyButton) { + this.__verifyButton = verifyButton; + verifyButton.addEventListener('click', this.__verify); + } + }; + /** + * unbind the captcha from HTMLElements. ONLY AVAILABLE in browsers. + */ + + + AV.Captcha.prototype.unbind = function unbind() { + if (this.__image) this.__image.removeEventListener('click', this.__refresh); + if (this.__verifyButton) this.__verifyButton.removeEventListener('click', this.__verify); + }; + } + /** + * Request a captcha + * @param [options] + * @param {Number} [options.width] width(px) of the captcha, ranged 60-200 + * @param {Number} [options.height] height(px) of the captcha, ranged 30-100 + * @param {Number} [options.size=4] length of the captcha, ranged 3-6. MasterKey required. + * @param {Number} [options.ttl=60] time to live(s), ranged 10-180. MasterKey required. + * @return {Promise.} + */ + + + AV.Captcha.request = function (options, authOptions) { + var captcha = new AV.Captcha(options, authOptions); + return captcha.refresh().then(function () { + return captcha; + }); + }; +}; + +/***/ }), +/* 532 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(2); + +var _promise = _interopRequireDefault(__webpack_require__(10)); + +var _ = __webpack_require__(1); + +var _require = __webpack_require__(25), + _request = _require._request, + request = _require.request; + +module.exports = function (AV) { + /** + * Contains functions for calling and declaring + *

    + * Some functions are only available from Cloud Code. + *

    + * + * @namespace + * @borrows AV.Captcha.request as requestCaptcha + */ + AV.Cloud = AV.Cloud || {}; + + _.extend(AV.Cloud, + /** @lends AV.Cloud */ + { + /** + * Makes a call to a cloud function. + * @param {String} name The function name. + * @param {Object} [data] The parameters to send to the cloud function. + * @param {AuthOptions} [options] + * @return {Promise} A promise that will be resolved with the result + * of the function. + */ + run: function run(name, data, options) { + return request({ + service: 'engine', + method: 'POST', + path: "/functions/".concat(name), + data: AV._encode(data, null, true), + authOptions: options + }).then(function (resp) { + return AV._decode(resp).result; + }); + }, + + /** + * Makes a call to a cloud function, you can send {AV.Object} as param or a field of param; the response + * from server will also be parsed as an {AV.Object}, array of {AV.Object}, or object includes {AV.Object} + * @param {String} name The function name. + * @param {Object} [data] The parameters to send to the cloud function. + * @param {AuthOptions} [options] + * @return {Promise} A promise that will be resolved with the result of the function. + */ + rpc: function rpc(name, data, options) { + if (_.isArray(data)) { + return _promise.default.reject(new Error("Can't pass Array as the param of rpc function in JavaScript SDK.")); + } + + return request({ + service: 'engine', + method: 'POST', + path: "/call/".concat(name), + data: AV._encodeObjectOrArray(data), + authOptions: options + }).then(function (resp) { + return AV._decode(resp).result; + }); + }, + + /** + * Make a call to request server date time. + * @return {Promise.} A promise that will be resolved with the result + * of the function. + * @since 0.5.9 + */ + getServerDate: function getServerDate() { + return _request('date', null, null, 'GET').then(function (resp) { + return AV._decode(resp); + }); + }, + + /** + * Makes a call to request an sms code for operation verification. + * @param {String|Object} data The mobile phone number string or a JSON + * object that contains mobilePhoneNumber,template,sign,op,ttl,name etc. + * @param {String} data.mobilePhoneNumber + * @param {String} [data.template] sms template name + * @param {String} [data.sign] sms signature name + * @param {String} [data.smsType] sending code by `sms` (default) or `voice` call + * @param {SMSAuthOptions} [options] + * @return {Promise} A promise that will be resolved if the request succeed + */ + requestSmsCode: function requestSmsCode(data) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + if (_.isString(data)) { + data = { + mobilePhoneNumber: data + }; + } + + if (!data.mobilePhoneNumber) { + throw new Error('Missing mobilePhoneNumber.'); + } + + if (options.validateToken) { + data = _.extend({}, data, { + validate_token: options.validateToken + }); + } + + return _request('requestSmsCode', null, null, 'POST', data, options); + }, + + /** + * Makes a call to verify sms code that sent by AV.Cloud.requestSmsCode + * @param {String} code The sms code sent by AV.Cloud.requestSmsCode + * @param {phone} phone The mobile phoner number. + * @return {Promise} A promise that will be resolved with the result + * of the function. + */ + verifySmsCode: function verifySmsCode(code, phone) { + if (!code) throw new Error('Missing sms code.'); + var params = {}; + + if (_.isString(phone)) { + params['mobilePhoneNumber'] = phone; + } + + return _request('verifySmsCode', code, null, 'POST', params); + }, + _requestCaptcha: function _requestCaptcha(options, authOptions) { + return _request('requestCaptcha', null, null, 'GET', options, authOptions).then(function (_ref) { + var url = _ref.captcha_url, + captchaToken = _ref.captcha_token; + return { + captchaToken: captchaToken, + url: url + }; + }); + }, + + /** + * Request a captcha. + */ + requestCaptcha: AV.Captcha.request, + + /** + * Verify captcha code. This is the low-level API for captcha. + * Checkout {@link AV.Captcha} for high abstract APIs. + * @param {String} code the code from user input + * @param {String} captchaToken captchaToken returned by {@link AV.Cloud.requestCaptcha} + * @return {Promise.} validateToken if the code is valid + */ + verifyCaptcha: function verifyCaptcha(code, captchaToken) { + return _request('verifyCaptcha', null, null, 'POST', { + captcha_code: code, + captcha_token: captchaToken + }).then(function (_ref2) { + var validateToken = _ref2.validate_token; + return validateToken; + }); + } + }); +}; + +/***/ }), +/* 533 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var request = __webpack_require__(25).request; + +module.exports = function (AV) { + AV.Installation = AV.Object.extend('_Installation'); + /** + * @namespace + */ + + AV.Push = AV.Push || {}; + /** + * Sends a push notification. + * @param {Object} data The data of the push notification. + * @param {String[]} [data.channels] An Array of channels to push to. + * @param {Date} [data.push_time] A Date object for when to send the push. + * @param {Date} [data.expiration_time] A Date object for when to expire + * the push. + * @param {Number} [data.expiration_interval] The seconds from now to expire the push. + * @param {Number} [data.flow_control] The clients to notify per second + * @param {AV.Query} [data.where] An AV.Query over AV.Installation that is used to match + * a set of installations to push to. + * @param {String} [data.cql] A CQL statement over AV.Installation that is used to match + * a set of installations to push to. + * @param {Object} data.data The data to send as part of the push. + More details: https://url.leanapp.cn/pushData + * @param {AuthOptions} [options] + * @return {Promise} + */ + + AV.Push.send = function (data, options) { + if (data.where) { + data.where = data.where._getParams().where; + } + + if (data.where && data.cql) { + throw new Error("Both where and cql can't be set"); + } + + if (data.push_time) { + data.push_time = data.push_time.toJSON(); + } + + if (data.expiration_time) { + data.expiration_time = data.expiration_time.toJSON(); + } + + if (data.expiration_time && data.expiration_interval) { + throw new Error("Both expiration_time and expiration_interval can't be set"); + } + + return request({ + service: 'push', + method: 'POST', + path: '/push', + data: data, + authOptions: options + }); + }; +}; + +/***/ }), +/* 534 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(2); + +var _promise = _interopRequireDefault(__webpack_require__(10)); + +var _typeof2 = _interopRequireDefault(__webpack_require__(135)); + +var _ = __webpack_require__(1); + +var AVRequest = __webpack_require__(25)._request; + +var _require = __webpack_require__(28), + getSessionToken = _require.getSessionToken; + +module.exports = function (AV) { + var getUser = function getUser() { + var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + var sessionToken = getSessionToken(options); + + if (sessionToken) { + return AV.User._fetchUserBySessionToken(getSessionToken(options)); + } + + return AV.User.currentAsync(); + }; + + var getUserPointer = function getUserPointer(options) { + return getUser(options).then(function (currUser) { + return AV.Object.createWithoutData('_User', currUser.id)._toPointer(); + }); + }; + /** + * Contains functions to deal with Status in LeanCloud. + * @class + */ + + + AV.Status = function (imageUrl, message) { + this.data = {}; + this.inboxType = 'default'; + this.query = null; + + if (imageUrl && (0, _typeof2.default)(imageUrl) === 'object') { + this.data = imageUrl; + } else { + if (imageUrl) { + this.data.image = imageUrl; + } + + if (message) { + this.data.message = message; + } + } + + return this; + }; + + _.extend(AV.Status.prototype, + /** @lends AV.Status.prototype */ + { + /** + * Gets the value of an attribute in status data. + * @param {String} attr The string name of an attribute. + */ + get: function get(attr) { + return this.data[attr]; + }, + + /** + * Sets a hash of model attributes on the status data. + * @param {String} key The key to set. + * @param {any} value The value to give it. + */ + set: function set(key, value) { + this.data[key] = value; + return this; + }, + + /** + * Destroy this status,then it will not be avaiable in other user's inboxes. + * @param {AuthOptions} options + * @return {Promise} A promise that is fulfilled when the destroy + * completes. + */ + destroy: function destroy(options) { + if (!this.id) return _promise.default.reject(new Error('The status id is not exists.')); + var request = AVRequest('statuses', null, this.id, 'DELETE', options); + return request; + }, + + /** + * Cast the AV.Status object to an AV.Object pointer. + * @return {AV.Object} A AV.Object pointer. + */ + toObject: function toObject() { + if (!this.id) return null; + return AV.Object.createWithoutData('_Status', this.id); + }, + _getDataJSON: function _getDataJSON() { + var json = _.clone(this.data); + + return AV._encode(json); + }, + + /** + * Send a status by a AV.Query object. + * @since 0.3.0 + * @param {AuthOptions} options + * @return {Promise} A promise that is fulfilled when the send + * completes. + * @example + * // send a status to male users + * var status = new AVStatus('image url', 'a message'); + * status.query = new AV.Query('_User'); + * status.query.equalTo('gender', 'male'); + * status.send().then(function(){ + * //send status successfully. + * }, function(err){ + * //an error threw. + * console.dir(err); + * }); + */ + send: function send() { + var _this = this; + + var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + + if (!getSessionToken(options) && !AV.User.current()) { + throw new Error('Please signin an user.'); + } + + if (!this.query) { + return AV.Status.sendStatusToFollowers(this, options); + } + + return getUserPointer(options).then(function (currUser) { + var query = _this.query._getParams(); + + query.className = _this.query.className; + var data = {}; + data.query = query; + _this.data = _this.data || {}; + _this.data.source = _this.data.source || currUser; + data.data = _this._getDataJSON(); + data.inboxType = _this.inboxType || 'default'; + return AVRequest('statuses', null, null, 'POST', data, options); + }).then(function (response) { + _this.id = response.objectId; + _this.createdAt = AV._parseDate(response.createdAt); + return _this; + }); + }, + _finishFetch: function _finishFetch(serverData) { + this.id = serverData.objectId; + this.createdAt = AV._parseDate(serverData.createdAt); + this.updatedAt = AV._parseDate(serverData.updatedAt); + this.messageId = serverData.messageId; + delete serverData.messageId; + delete serverData.objectId; + delete serverData.createdAt; + delete serverData.updatedAt; + this.data = AV._decode(serverData); + } + }); + /** + * Send a status to current signined user's followers. + * @since 0.3.0 + * @param {AV.Status} status A status object to be send to followers. + * @param {AuthOptions} options + * @return {Promise} A promise that is fulfilled when the send + * completes. + * @example + * var status = new AVStatus('image url', 'a message'); + * AV.Status.sendStatusToFollowers(status).then(function(){ + * //send status successfully. + * }, function(err){ + * //an error threw. + * console.dir(err); + * }); + */ + + + AV.Status.sendStatusToFollowers = function (status) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + if (!getSessionToken(options) && !AV.User.current()) { + throw new Error('Please signin an user.'); + } + + return getUserPointer(options).then(function (currUser) { + var query = {}; + query.className = '_Follower'; + query.keys = 'follower'; + query.where = { + user: currUser + }; + var data = {}; + data.query = query; + status.data = status.data || {}; + status.data.source = status.data.source || currUser; + data.data = status._getDataJSON(); + data.inboxType = status.inboxType || 'default'; + var request = AVRequest('statuses', null, null, 'POST', data, options); + return request.then(function (response) { + status.id = response.objectId; + status.createdAt = AV._parseDate(response.createdAt); + return status; + }); + }); + }; + /** + *

    Send a status from current signined user to other user's private status inbox.

    + * @since 0.3.0 + * @param {AV.Status} status A status object to be send to followers. + * @param {String} target The target user or user's objectId. + * @param {AuthOptions} options + * @return {Promise} A promise that is fulfilled when the send + * completes. + * @example + * // send a private status to user '52e84e47e4b0f8de283b079b' + * var status = new AVStatus('image url', 'a message'); + * AV.Status.sendPrivateStatus(status, '52e84e47e4b0f8de283b079b').then(function(){ + * //send status successfully. + * }, function(err){ + * //an error threw. + * console.dir(err); + * }); + */ + + + AV.Status.sendPrivateStatus = function (status, target) { + var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + + if (!getSessionToken(options) && !AV.User.current()) { + throw new Error('Please signin an user.'); + } + + if (!target) { + throw new Error('Invalid target user.'); + } + + var userObjectId = _.isString(target) ? target : target.id; + + if (!userObjectId) { + throw new Error('Invalid target user.'); + } + + return getUserPointer(options).then(function (currUser) { + var query = {}; + query.className = '_User'; + query.where = { + objectId: userObjectId + }; + var data = {}; + data.query = query; + status.data = status.data || {}; + status.data.source = status.data.source || currUser; + data.data = status._getDataJSON(); + data.inboxType = 'private'; + status.inboxType = 'private'; + var request = AVRequest('statuses', null, null, 'POST', data, options); + return request.then(function (response) { + status.id = response.objectId; + status.createdAt = AV._parseDate(response.createdAt); + return status; + }); + }); + }; + /** + * Count unread statuses in someone's inbox. + * @since 0.3.0 + * @param {AV.User} owner The status owner. + * @param {String} inboxType The inbox type, 'default' by default. + * @param {AuthOptions} options + * @return {Promise} A promise that is fulfilled when the count + * completes. + * @example + * AV.Status.countUnreadStatuses(AV.User.current()).then(function(response){ + * console.log(response.unread); //unread statuses number. + * console.log(response.total); //total statuses number. + * }); + */ + + + AV.Status.countUnreadStatuses = function (owner) { + var inboxType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'default'; + var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + if (!_.isString(inboxType)) options = inboxType; + + if (!getSessionToken(options) && owner == null && !AV.User.current()) { + throw new Error('Please signin an user or pass the owner objectId.'); + } + + return _promise.default.resolve(owner || getUser(options)).then(function (owner) { + var params = {}; + params.inboxType = AV._encode(inboxType); + params.owner = AV._encode(owner); + return AVRequest('subscribe/statuses/count', null, null, 'GET', params, options); + }); + }; + /** + * reset unread statuses count in someone's inbox. + * @since 2.1.0 + * @param {AV.User} owner The status owner. + * @param {String} inboxType The inbox type, 'default' by default. + * @param {AuthOptions} options + * @return {Promise} A promise that is fulfilled when the reset + * completes. + * @example + * AV.Status.resetUnreadCount(AV.User.current()).then(function(response){ + * console.log(response.unread); //unread statuses number. + * console.log(response.total); //total statuses number. + * }); + */ + + + AV.Status.resetUnreadCount = function (owner) { + var inboxType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'default'; + var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + if (!_.isString(inboxType)) options = inboxType; + + if (!getSessionToken(options) && owner == null && !AV.User.current()) { + throw new Error('Please signin an user or pass the owner objectId.'); + } + + return _promise.default.resolve(owner || getUser(options)).then(function (owner) { + var params = {}; + params.inboxType = AV._encode(inboxType); + params.owner = AV._encode(owner); + return AVRequest('subscribe/statuses/resetUnreadCount', null, null, 'POST', params, options); + }); + }; + /** + * Create a status query to find someone's published statuses. + * @since 0.3.0 + * @param {AV.User} source The status source, typically the publisher. + * @return {AV.Query} The query object for status. + * @example + * //Find current user's published statuses. + * var query = AV.Status.statusQuery(AV.User.current()); + * query.find().then(function(statuses){ + * //process statuses + * }); + */ + + + AV.Status.statusQuery = function (source) { + var query = new AV.Query('_Status'); + + if (source) { + query.equalTo('source', source); + } + + return query; + }; + /** + *

    AV.InboxQuery defines a query that is used to fetch somebody's inbox statuses.

    + * @class + */ + + + AV.InboxQuery = AV.Query._extend( + /** @lends AV.InboxQuery.prototype */ + { + _objectClass: AV.Status, + _sinceId: 0, + _maxId: 0, + _inboxType: 'default', + _owner: null, + _newObject: function _newObject() { + return new AV.Status(); + }, + _createRequest: function _createRequest(params, options) { + return AV.InboxQuery.__super__._createRequest.call(this, params, options, '/subscribe/statuses'); + }, + + /** + * Sets the messageId of results to skip before returning any results. + * This is useful for pagination. + * Default is zero. + * @param {Number} n the mesage id. + * @return {AV.InboxQuery} Returns the query, so you can chain this call. + */ + sinceId: function sinceId(id) { + this._sinceId = id; + return this; + }, + + /** + * Sets the maximal messageId of results。 + * This is useful for pagination. + * Default is zero that is no limition. + * @param {Number} n the mesage id. + * @return {AV.InboxQuery} Returns the query, so you can chain this call. + */ + maxId: function maxId(id) { + this._maxId = id; + return this; + }, + + /** + * Sets the owner of the querying inbox. + * @param {AV.User} owner The inbox owner. + * @return {AV.InboxQuery} Returns the query, so you can chain this call. + */ + owner: function owner(_owner) { + this._owner = _owner; + return this; + }, + + /** + * Sets the querying inbox type.default is 'default'. + * @param {String} type The inbox type. + * @return {AV.InboxQuery} Returns the query, so you can chain this call. + */ + inboxType: function inboxType(type) { + this._inboxType = type; + return this; + }, + _getParams: function _getParams() { + var params = AV.InboxQuery.__super__._getParams.call(this); + + params.owner = AV._encode(this._owner); + params.inboxType = AV._encode(this._inboxType); + params.sinceId = AV._encode(this._sinceId); + params.maxId = AV._encode(this._maxId); + return params; + } + }); + /** + * Create a inbox status query to find someone's inbox statuses. + * @since 0.3.0 + * @param {AV.User} owner The inbox's owner + * @param {String} inboxType The inbox type,'default' by default. + * @return {AV.InboxQuery} The inbox query object. + * @see AV.InboxQuery + * @example + * //Find current user's default inbox statuses. + * var query = AV.Status.inboxQuery(AV.User.current()); + * //find the statuses after the last message id + * query.sinceId(lastMessageId); + * query.find().then(function(statuses){ + * //process statuses + * }); + */ + + AV.Status.inboxQuery = function (owner, inboxType) { + var query = new AV.InboxQuery(AV.Status); + + if (owner) { + query._owner = owner; + } + + if (inboxType) { + query._inboxType = inboxType; + } + + return query; + }; +}; + +/***/ }), +/* 535 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(2); + +var _stringify = _interopRequireDefault(__webpack_require__(34)); + +var _map = _interopRequireDefault(__webpack_require__(39)); + +var _ = __webpack_require__(1); + +var AVRequest = __webpack_require__(25)._request; + +module.exports = function (AV) { + /** + * A builder to generate sort string for app searching.For example: + * @class + * @since 0.5.1 + * @example + * var builder = new AV.SearchSortBuilder(); + * builder.ascending('key1').descending('key2','max'); + * var query = new AV.SearchQuery('Player'); + * query.sortBy(builder); + * query.find().then(); + */ + AV.SearchSortBuilder = function () { + this._sortFields = []; + }; + + _.extend(AV.SearchSortBuilder.prototype, + /** @lends AV.SearchSortBuilder.prototype */ + { + _addField: function _addField(key, order, mode, missing) { + var field = {}; + field[key] = { + order: order || 'asc', + mode: mode || 'avg', + missing: '_' + (missing || 'last') + }; + + this._sortFields.push(field); + + return this; + }, + + /** + * Sorts the results in ascending order by the given key and options. + * + * @param {String} key The key to order by. + * @param {String} mode The sort mode, default is 'avg', you can choose + * 'max' or 'min' too. + * @param {String} missing The missing key behaviour, default is 'last', + * you can choose 'first' too. + * @return {AV.SearchSortBuilder} Returns the builder, so you can chain this call. + */ + ascending: function ascending(key, mode, missing) { + return this._addField(key, 'asc', mode, missing); + }, + + /** + * Sorts the results in descending order by the given key and options. + * + * @param {String} key The key to order by. + * @param {String} mode The sort mode, default is 'avg', you can choose + * 'max' or 'min' too. + * @param {String} missing The missing key behaviour, default is 'last', + * you can choose 'first' too. + * @return {AV.SearchSortBuilder} Returns the builder, so you can chain this call. + */ + descending: function descending(key, mode, missing) { + return this._addField(key, 'desc', mode, missing); + }, + + /** + * Add a proximity based constraint for finding objects with key point + * values near the point given. + * @param {String} key The key that the AV.GeoPoint is stored in. + * @param {AV.GeoPoint} point The reference AV.GeoPoint that is used. + * @param {Object} options The other options such as mode,order, unit etc. + * @return {AV.SearchSortBuilder} Returns the builder, so you can chain this call. + */ + whereNear: function whereNear(key, point, options) { + options = options || {}; + var field = {}; + var geo = { + lat: point.latitude, + lon: point.longitude + }; + var m = { + order: options.order || 'asc', + mode: options.mode || 'avg', + unit: options.unit || 'km' + }; + m[key] = geo; + field['_geo_distance'] = m; + + this._sortFields.push(field); + + return this; + }, + + /** + * Build a sort string by configuration. + * @return {String} the sort string. + */ + build: function build() { + return (0, _stringify.default)(AV._encode(this._sortFields)); + } + }); + /** + * App searching query.Use just like AV.Query: + * + * Visit App Searching Guide + * for more details. + * @class + * @since 0.5.1 + * @example + * var query = new AV.SearchQuery('Player'); + * query.queryString('*'); + * query.find().then(function(results) { + * console.log('Found %d objects', query.hits()); + * //Process results + * }); + */ + + + AV.SearchQuery = AV.Query._extend( + /** @lends AV.SearchQuery.prototype */ + { + _sid: null, + _hits: 0, + _queryString: null, + _highlights: null, + _sortBuilder: null, + _clazz: null, + constructor: function constructor(className) { + if (className) { + this._clazz = className; + } else { + className = '__INVALID_CLASS'; + } + + AV.Query.call(this, className); + }, + _createRequest: function _createRequest(params, options) { + return AVRequest('search/select', null, null, 'GET', params || this._getParams(), options); + }, + + /** + * Sets the sid of app searching query.Default is null. + * @param {String} sid Scroll id for searching. + * @return {AV.SearchQuery} Returns the query, so you can chain this call. + */ + sid: function sid(_sid) { + this._sid = _sid; + return this; + }, + + /** + * Sets the query string of app searching. + * @param {String} q The query string. + * @return {AV.SearchQuery} Returns the query, so you can chain this call. + */ + queryString: function queryString(q) { + this._queryString = q; + return this; + }, + + /** + * Sets the highlight fields. Such as + *
    
    +     *   query.highlights('title');
    +     *   //or pass an array.
    +     *   query.highlights(['title', 'content'])
    +     * 
    + * @param {String|String[]} highlights a list of fields. + * @return {AV.SearchQuery} Returns the query, so you can chain this call. + */ + highlights: function highlights(_highlights) { + var objects; + + if (_highlights && _.isString(_highlights)) { + objects = _.toArray(arguments); + } else { + objects = _highlights; + } + + this._highlights = objects; + return this; + }, + + /** + * Sets the sort builder for this query. + * @see AV.SearchSortBuilder + * @param { AV.SearchSortBuilder} builder The sort builder. + * @return {AV.SearchQuery} Returns the query, so you can chain this call. + * + */ + sortBy: function sortBy(builder) { + this._sortBuilder = builder; + return this; + }, + + /** + * Returns the number of objects that match this query. + * @return {Number} + */ + hits: function hits() { + if (!this._hits) { + this._hits = 0; + } + + return this._hits; + }, + _processResult: function _processResult(json) { + delete json['className']; + delete json['_app_url']; + delete json['_deeplink']; + return json; + }, + + /** + * Returns true when there are more documents can be retrieved by this + * query instance, you can call find function to get more results. + * @see AV.SearchQuery#find + * @return {Boolean} + */ + hasMore: function hasMore() { + return !this._hitEnd; + }, + + /** + * Reset current query instance state(such as sid, hits etc) except params + * for a new searching. After resetting, hasMore() will return true. + */ + reset: function reset() { + this._hitEnd = false; + this._sid = null; + this._hits = 0; + }, + + /** + * Retrieves a list of AVObjects that satisfy this query. + * Either options.success or options.error is called when the find + * completes. + * + * @see AV.Query#find + * @param {AuthOptions} options + * @return {Promise} A promise that is resolved with the results when + * the query completes. + */ + find: function find(options) { + var self = this; + + var request = this._createRequest(undefined, options); + + return request.then(function (response) { + //update sid for next querying. + if (response.sid) { + self._oldSid = self._sid; + self._sid = response.sid; + } else { + self._sid = null; + self._hitEnd = true; + } + + self._hits = response.hits || 0; + return (0, _map.default)(_).call(_, response.results, function (json) { + if (json.className) { + response.className = json.className; + } + + var obj = self._newObject(response); + + obj.appURL = json['_app_url']; + + obj._finishFetch(self._processResult(json), true); + + return obj; + }); + }); + }, + _getParams: function _getParams() { + var params = AV.SearchQuery.__super__._getParams.call(this); + + delete params.where; + + if (this._clazz) { + params.clazz = this.className; + } + + if (this._sid) { + params.sid = this._sid; + } + + if (!this._queryString) { + throw new Error('Please set query string.'); + } else { + params.q = this._queryString; + } + + if (this._highlights) { + params.highlights = this._highlights.join(','); + } + + if (this._sortBuilder && params.order) { + throw new Error('sort and order can not be set at same time.'); + } + + if (this._sortBuilder) { + params.sort = this._sortBuilder.build(); + } + + return params; + } + }); +}; +/** + * Sorts the results in ascending order by the given key. + * + * @method AV.SearchQuery#ascending + * @param {String} key The key to order by. + * @return {AV.SearchQuery} Returns the query, so you can chain this call. + */ + +/** + * Also sorts the results in ascending order by the given key. The previous sort keys have + * precedence over this key. + * + * @method AV.SearchQuery#addAscending + * @param {String} key The key to order by + * @return {AV.SearchQuery} Returns the query so you can chain this call. + */ + +/** + * Sorts the results in descending order by the given key. + * + * @method AV.SearchQuery#descending + * @param {String} key The key to order by. + * @return {AV.SearchQuery} Returns the query, so you can chain this call. + */ + +/** + * Also sorts the results in descending order by the given key. The previous sort keys have + * precedence over this key. + * + * @method AV.SearchQuery#addDescending + * @param {String} key The key to order by + * @return {AV.SearchQuery} Returns the query so you can chain this call. + */ + +/** + * Include nested AV.Objects for the provided key. You can use dot + * notation to specify which fields in the included object are also fetch. + * @method AV.SearchQuery#include + * @param {String[]} keys The name of the key to include. + * @return {AV.SearchQuery} Returns the query, so you can chain this call. + */ + +/** + * Sets the number of results to skip before returning any results. + * This is useful for pagination. + * Default is to skip zero results. + * @method AV.SearchQuery#skip + * @param {Number} n the number of results to skip. + * @return {AV.SearchQuery} Returns the query, so you can chain this call. + */ + +/** + * Sets the limit of the number of results to return. The default limit is + * 100, with a maximum of 1000 results being returned at a time. + * @method AV.SearchQuery#limit + * @param {Number} n the number of results to limit to. + * @return {AV.SearchQuery} Returns the query, so you can chain this call. + */ + +/***/ }), +/* 536 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(2); + +var _promise = _interopRequireDefault(__webpack_require__(10)); + +var _ = __webpack_require__(1); + +var AVError = __webpack_require__(40); + +var _require = __webpack_require__(25), + request = _require.request; + +module.exports = function (AV) { + /** + * 包含了使用了 LeanCloud + * 离线数据分析功能的函数。 + *

    + * 仅在云引擎运行环境下有效。 + *

    + * @namespace + */ + AV.Insight = AV.Insight || {}; + + _.extend(AV.Insight, + /** @lends AV.Insight */ + { + /** + * 开始一个 Insight 任务。结果里将返回 Job id,你可以拿得到的 id 使用 + * AV.Insight.JobQuery 查询任务状态和结果。 + * @param {Object} jobConfig 任务配置的 JSON 对象,例如:
    +     *                   { "sql" : "select count(*) as c,gender from _User group by gender",
    +     *                     "saveAs": {
    +     *                         "className" : "UserGender",
    +     *                         "limit": 1
    +     *                      }
    +     *                   }
    +     *                  
    + * sql 指定任务执行的 SQL 语句, saveAs(可选) 指定将结果保存在哪张表里,limit 最大 1000。 + * @param {AuthOptions} [options] + * @return {Promise} A promise that will be resolved with the result + * of the function. + */ + startJob: function startJob(jobConfig, options) { + if (!jobConfig || !jobConfig.sql) { + throw new Error('Please provide the sql to run the job.'); + } + + var data = { + jobConfig: jobConfig, + appId: AV.applicationId + }; + return request({ + path: '/bigquery/jobs', + method: 'POST', + data: AV._encode(data, null, true), + authOptions: options, + signKey: false + }).then(function (resp) { + return AV._decode(resp).id; + }); + }, + + /** + * 监听 Insight 任务事件(未来推出独立部署的离线分析服务后开放) + *

    + * 仅在云引擎运行环境下有效。 + *

    + * @param {String} event 监听的事件,目前尚不支持。 + * @param {Function} 监听回调函数,接收 (err, id) 两个参数,err 表示错误信息, + * id 表示任务 id。接下来你可以拿这个 id 使用AV.Insight.JobQuery 查询任务状态和结果。 + * + */ + on: function on(event, cb) {} + }); + /** + * 创建一个对象,用于查询 Insight 任务状态和结果。 + * @class + * @param {String} id 任务 id + * @since 0.5.5 + */ + + + AV.Insight.JobQuery = function (id, className) { + if (!id) { + throw new Error('Please provide the job id.'); + } + + this.id = id; + this.className = className; + this._skip = 0; + this._limit = 100; + }; + + _.extend(AV.Insight.JobQuery.prototype, + /** @lends AV.Insight.JobQuery.prototype */ + { + /** + * Sets the number of results to skip before returning any results. + * This is useful for pagination. + * Default is to skip zero results. + * @param {Number} n the number of results to skip. + * @return {AV.Query} Returns the query, so you can chain this call. + */ + skip: function skip(n) { + this._skip = n; + return this; + }, + + /** + * Sets the limit of the number of results to return. The default limit is + * 100, with a maximum of 1000 results being returned at a time. + * @param {Number} n the number of results to limit to. + * @return {AV.Query} Returns the query, so you can chain this call. + */ + limit: function limit(n) { + this._limit = n; + return this; + }, + + /** + * 查询任务状态和结果,任务结果为一个 JSON 对象,包括 status 表示任务状态, totalCount 表示总数, + * results 数组表示任务结果数组,previewCount 表示可以返回的结果总数,任务的开始和截止时间 + * startTime、endTime 等信息。 + * + * @param {AuthOptions} [options] + * @return {Promise} A promise that will be resolved with the result + * of the function. + * + */ + find: function find(options) { + var params = { + skip: this._skip, + limit: this._limit + }; + return request({ + path: "/bigquery/jobs/".concat(this.id), + method: 'GET', + query: params, + authOptions: options, + signKey: false + }).then(function (response) { + if (response.error) { + return _promise.default.reject(new AVError(response.code, response.error)); + } + + return _promise.default.resolve(response); + }); + } + }); +}; + +/***/ }), +/* 537 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(2); + +var _promise = _interopRequireDefault(__webpack_require__(10)); + +var _ = __webpack_require__(1); + +var _require = __webpack_require__(25), + LCRequest = _require.request; + +var _require2 = __webpack_require__(28), + getSessionToken = _require2.getSessionToken; + +module.exports = function (AV) { + var getUserWithSessionToken = function getUserWithSessionToken(authOptions) { + if (authOptions.user) { + if (!authOptions.user._sessionToken) { + throw new Error('authOptions.user is not signed in.'); + } + + return _promise.default.resolve(authOptions.user); + } + + if (authOptions.sessionToken) { + return AV.User._fetchUserBySessionToken(authOptions.sessionToken); + } + + return AV.User.currentAsync(); + }; + + var getSessionTokenAsync = function getSessionTokenAsync(authOptions) { + var sessionToken = getSessionToken(authOptions); + + if (sessionToken) { + return _promise.default.resolve(sessionToken); + } + + return AV.User.currentAsync().then(function (user) { + if (user) { + return user.getSessionToken(); + } + }); + }; + /** + * Contains functions to deal with Friendship in LeanCloud. + * @class + */ + + + AV.Friendship = { + /** + * Request friendship. + * @since 4.8.0 + * @param {String | AV.User | Object} options if an AV.User or string is given, it will be used as the friend. + * @param {AV.User | string} options.friend The friend (or friend's objectId) to follow. + * @param {Object} [options.attributes] key-value attributes dictionary to be used as conditions of followeeQuery. + * @param {AuthOptions} [authOptions] + * @return {Promise} + */ + request: function request(options) { + var authOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var friend; + var attributes; + + if (options.friend) { + friend = options.friend; + attributes = options.attributes; + } else { + friend = options; + } + + var friendObj = _.isString(friend) ? AV.Object.createWithoutData('_User', friend) : friend; + return getUserWithSessionToken(authOptions).then(function (userObj) { + if (!userObj) { + throw new Error('Please signin an user.'); + } + + return LCRequest({ + method: 'POST', + path: '/users/friendshipRequests', + data: { + user: userObj._toPointer(), + friend: friendObj._toPointer(), + friendship: attributes + }, + authOptions: authOptions + }); + }); + }, + + /** + * Accept a friendship request. + * @since 4.8.0 + * @param {AV.Object | string | Object} options if an AV.Object or string is given, it will be used as the request in _FriendshipRequest. + * @param {AV.Object} options.request The request (or it's objectId) to be accepted. + * @param {Object} [options.attributes] key-value attributes dictionary to be used as conditions of {@link AV#followeeQuery}. + * @param {AuthOptions} [authOptions] + * @return {Promise} + */ + acceptRequest: function acceptRequest(options) { + var authOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var request; + var attributes; + + if (options.request) { + request = options.request; + attributes = options.attributes; + } else { + request = options; + } + + var requestId = _.isString(request) ? request : request.id; + return getSessionTokenAsync(authOptions).then(function (sessionToken) { + if (!sessionToken) { + throw new Error('Please signin an user.'); + } + + return LCRequest({ + method: 'PUT', + path: '/users/friendshipRequests/' + requestId + '/accept', + data: { + friendship: AV._encode(attributes) + }, + authOptions: authOptions + }); + }); + }, + + /** + * Decline a friendship request. + * @param {AV.Object | string} request The request (or it's objectId) to be declined. + * @param {AuthOptions} [authOptions] + * @return {Promise} + */ + declineRequest: function declineRequest(request) { + var authOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var requestId = _.isString(request) ? request : request.id; + return getSessionTokenAsync(authOptions).then(function (sessionToken) { + if (!sessionToken) { + throw new Error('Please signin an user.'); + } + + return LCRequest({ + method: 'PUT', + path: '/users/friendshipRequests/' + requestId + '/decline', + authOptions: authOptions + }); + }); + } + }; +}; + +/***/ }), +/* 538 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(2); + +var _stringify = _interopRequireDefault(__webpack_require__(34)); + +var _ = __webpack_require__(1); + +var _require = __webpack_require__(25), + _request = _require._request; + +var AV = __webpack_require__(59); + +var serializeMessage = function serializeMessage(message) { + if (typeof message === 'string') { + return message; + } + + if (typeof message.getPayload === 'function') { + return (0, _stringify.default)(message.getPayload()); + } + + return (0, _stringify.default)(message); +}; +/** + *

    An AV.Conversation is a local representation of a LeanCloud realtime's + * conversation. This class is a subclass of AV.Object, and retains the + * same functionality of an AV.Object, but also extends it with various + * conversation specific methods, like get members, creators of this conversation. + *

    + * + * @class AV.Conversation + * @param {String} name The name of the Role to create. + * @param {Object} [options] + * @param {Boolean} [options.isSystem] Set this conversation as system conversation. + * @param {Boolean} [options.isTransient] Set this conversation as transient conversation. + */ + + +module.exports = AV.Object.extend('_Conversation', +/** @lends AV.Conversation.prototype */ +{ + constructor: function constructor(name) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + AV.Object.prototype.constructor.call(this, null, null); + this.set('name', name); + + if (options.isSystem !== undefined) { + this.set('sys', options.isSystem ? true : false); + } + + if (options.isTransient !== undefined) { + this.set('tr', options.isTransient ? true : false); + } + }, + + /** + * Get current conversation's creator. + * + * @return {String} + */ + getCreator: function getCreator() { + return this.get('c'); + }, + + /** + * Get the last message's time. + * + * @return {Date} + */ + getLastMessageAt: function getLastMessageAt() { + return this.get('lm'); + }, + + /** + * Get this conversation's members + * + * @return {String[]} + */ + getMembers: function getMembers() { + return this.get('m'); + }, + + /** + * Add a member to this conversation + * + * @param {String} member + */ + addMember: function addMember(member) { + return this.add('m', member); + }, + + /** + * Get this conversation's members who set this conversation as muted. + * + * @return {String[]} + */ + getMutedMembers: function getMutedMembers() { + return this.get('mu'); + }, + + /** + * Get this conversation's name field. + * + * @return String + */ + getName: function getName() { + return this.get('name'); + }, + + /** + * Returns true if this conversation is transient conversation. + * + * @return {Boolean} + */ + isTransient: function isTransient() { + return this.get('tr'); + }, + + /** + * Returns true if this conversation is system conversation. + * + * @return {Boolean} + */ + isSystem: function isSystem() { + return this.get('sys'); + }, + + /** + * Send realtime message to this conversation, using HTTP request. + * + * @param {String} fromClient Sender's client id. + * @param {String|Object} message The message which will send to conversation. + * It could be a raw string, or an object with a `toJSON` method, like a + * realtime SDK's Message object. See more: {@link https://leancloud.cn/docs/realtime_guide-js.html#消息} + * @param {Object} [options] + * @param {Boolean} [options.transient] Whether send this message as transient message or not. + * @param {String[]} [options.toClients] Ids of clients to send to. This option can be used only in system conversation. + * @param {Object} [options.pushData] Push data to this message. See more: {@link https://url.leanapp.cn/pushData 推送消息内容} + * @param {AuthOptions} [authOptions] + * @return {Promise} + */ + send: function send(fromClient, message) { + var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + var authOptions = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {}; + var data = { + from_peer: fromClient, + conv_id: this.id, + transient: false, + message: serializeMessage(message) + }; + + if (options.toClients !== undefined) { + data.to_peers = options.toClients; + } + + if (options.transient !== undefined) { + data.transient = options.transient ? true : false; + } + + if (options.pushData !== undefined) { + data.push_data = options.pushData; + } + + return _request('rtm', 'messages', null, 'POST', data, authOptions); + }, + + /** + * Send realtime broadcast message to all clients, via this conversation, using HTTP request. + * + * @param {String} fromClient Sender's client id. + * @param {String|Object} message The message which will send to conversation. + * It could be a raw string, or an object with a `toJSON` method, like a + * realtime SDK's Message object. See more: {@link https://leancloud.cn/docs/realtime_guide-js.html#消息}. + * @param {Object} [options] + * @param {Object} [options.pushData] Push data to this message. See more: {@link https://url.leanapp.cn/pushData 推送消息内容}. + * @param {Object} [options.validTill] The message will valid till this time. + * @param {AuthOptions} [authOptions] + * @return {Promise} + */ + broadcast: function broadcast(fromClient, message) { + var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + var authOptions = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {}; + var data = { + from_peer: fromClient, + conv_id: this.id, + message: serializeMessage(message) + }; + + if (options.pushData !== undefined) { + data.push = options.pushData; + } + + if (options.validTill !== undefined) { + var ts = options.validTill; + + if (_.isDate(ts)) { + ts = ts.getTime(); + } + + options.valid_till = ts; + } + + return _request('rtm', 'broadcast', null, 'POST', data, authOptions); + } +}); + +/***/ }), +/* 539 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(2); + +var _promise = _interopRequireDefault(__webpack_require__(10)); + +var _map = _interopRequireDefault(__webpack_require__(39)); + +var _concat = _interopRequireDefault(__webpack_require__(29)); + +var _ = __webpack_require__(1); + +var _require = __webpack_require__(25), + request = _require.request; + +var _require2 = __webpack_require__(28), + ensureArray = _require2.ensureArray, + parseDate = _require2.parseDate; + +var AV = __webpack_require__(59); +/** + * The version change interval for Leaderboard + * @enum + */ + + +AV.LeaderboardVersionChangeInterval = { + NEVER: 'never', + DAY: 'day', + WEEK: 'week', + MONTH: 'month' +}; +/** + * The order of the leaderboard results + * @enum + */ + +AV.LeaderboardOrder = { + ASCENDING: 'ascending', + DESCENDING: 'descending' +}; +/** + * The update strategy for Leaderboard + * @enum + */ + +AV.LeaderboardUpdateStrategy = { + /** Only keep the best statistic. If the leaderboard is in descending order, the best statistic is the highest one. */ + BETTER: 'better', + + /** Keep the last updated statistic */ + LAST: 'last', + + /** Keep the sum of all updated statistics */ + SUM: 'sum' +}; +/** + * @typedef {Object} Ranking + * @property {number} rank Starts at 0 + * @property {number} value the statistic value of this ranking + * @property {AV.User} user The user of this ranking + * @property {Statistic[]} [includedStatistics] Other statistics of the user, specified by the `includeStatistic` option of `AV.Leaderboard.getResults()` + */ + +/** + * @typedef {Object} LeaderboardArchive + * @property {string} statisticName + * @property {number} version version of the leaderboard + * @property {string} status + * @property {string} url URL for the downloadable archive + * @property {Date} activatedAt time when this version became active + * @property {Date} deactivatedAt time when this version was deactivated by a version incrementing + */ + +/** + * @class + */ + +function Statistic(_ref) { + var name = _ref.name, + value = _ref.value, + version = _ref.version; + + /** + * @type {string} + */ + this.name = name; + /** + * @type {number} + */ + + this.value = value; + /** + * @type {number?} + */ + + this.version = version; +} + +var parseStatisticData = function parseStatisticData(statisticData) { + var _AV$_decode = AV._decode(statisticData), + name = _AV$_decode.statisticName, + value = _AV$_decode.statisticValue, + version = _AV$_decode.version; + + return new Statistic({ + name: name, + value: value, + version: version + }); +}; +/** + * @class + */ + + +AV.Leaderboard = function Leaderboard(statisticName) { + /** + * @type {string} + */ + this.statisticName = statisticName; + /** + * @type {AV.LeaderboardOrder} + */ + + this.order = undefined; + /** + * @type {AV.LeaderboardUpdateStrategy} + */ + + this.updateStrategy = undefined; + /** + * @type {AV.LeaderboardVersionChangeInterval} + */ + + this.versionChangeInterval = undefined; + /** + * @type {number} + */ + + this.version = undefined; + /** + * @type {Date?} + */ + + this.nextResetAt = undefined; + /** + * @type {Date?} + */ + + this.createdAt = undefined; +}; + +var Leaderboard = AV.Leaderboard; +/** + * Create an instance of Leaderboard for the give statistic name. + * @param {string} statisticName + * @return {AV.Leaderboard} + */ + +AV.Leaderboard.createWithoutData = function (statisticName) { + return new Leaderboard(statisticName); +}; +/** + * (masterKey required) Create a new Leaderboard. + * @param {Object} options + * @param {string} options.statisticName + * @param {AV.LeaderboardOrder} options.order + * @param {AV.LeaderboardVersionChangeInterval} [options.versionChangeInterval] default to WEEK + * @param {AV.LeaderboardUpdateStrategy} [options.updateStrategy] default to BETTER + * @param {AuthOptions} [authOptions] + * @return {Promise} + */ + + +AV.Leaderboard.createLeaderboard = function (_ref2, authOptions) { + var statisticName = _ref2.statisticName, + order = _ref2.order, + versionChangeInterval = _ref2.versionChangeInterval, + updateStrategy = _ref2.updateStrategy; + return request({ + method: 'POST', + path: '/leaderboard/leaderboards', + data: { + statisticName: statisticName, + order: order, + versionChangeInterval: versionChangeInterval, + updateStrategy: updateStrategy + }, + authOptions: authOptions + }).then(function (data) { + var leaderboard = new Leaderboard(statisticName); + return leaderboard._finishFetch(data); + }); +}; +/** + * Get the Leaderboard with the specified statistic name. + * @param {string} statisticName + * @param {AuthOptions} [authOptions] + * @return {Promise} + */ + + +AV.Leaderboard.getLeaderboard = function (statisticName, authOptions) { + return Leaderboard.createWithoutData(statisticName).fetch(authOptions); +}; +/** + * Get Statistics for the specified user. + * @param {AV.User} user The specified AV.User pointer. + * @param {Object} [options] + * @param {string[]} [options.statisticNames] Specify the statisticNames. If not set, all statistics of the user will be fetched. + * @param {AuthOptions} [authOptions] + * @return {Promise} + */ + + +AV.Leaderboard.getStatistics = function (user) { + var _ref3 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, + statisticNames = _ref3.statisticNames; + + var authOptions = arguments.length > 2 ? arguments[2] : undefined; + return _promise.default.resolve().then(function () { + if (!(user && user.id)) throw new Error('user must be an AV.User'); + return request({ + method: 'GET', + path: "/leaderboard/users/".concat(user.id, "/statistics"), + query: { + statistics: statisticNames ? ensureArray(statisticNames).join(',') : undefined + }, + authOptions: authOptions + }).then(function (_ref4) { + var results = _ref4.results; + return (0, _map.default)(results).call(results, parseStatisticData); + }); + }); +}; +/** + * Update Statistics for the specified user. + * @param {AV.User} user The specified AV.User pointer. + * @param {Object} statistics A name-value pair representing the statistics to update. + * @param {AuthOptions} [options] AuthOptions plus: + * @param {boolean} [options.overwrite] Wethere to overwrite these statistics disregarding the updateStrategy of there leaderboards + * @return {Promise} + */ + + +AV.Leaderboard.updateStatistics = function (user, statistics) { + var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + return _promise.default.resolve().then(function () { + if (!(user && user.id)) throw new Error('user must be an AV.User'); + var data = (0, _map.default)(_).call(_, statistics, function (value, key) { + return { + statisticName: key, + statisticValue: value + }; + }); + var overwrite = options.overwrite; + return request({ + method: 'POST', + path: "/leaderboard/users/".concat(user.id, "/statistics"), + query: { + overwrite: overwrite ? 1 : undefined + }, + data: data, + authOptions: options + }).then(function (_ref5) { + var results = _ref5.results; + return (0, _map.default)(results).call(results, parseStatisticData); + }); + }); +}; +/** + * Delete Statistics for the specified user. + * @param {AV.User} user The specified AV.User pointer. + * @param {Object} statistics A name-value pair representing the statistics to delete. + * @param {AuthOptions} [options] + * @return {Promise} + */ + + +AV.Leaderboard.deleteStatistics = function (user, statisticNames, authOptions) { + return _promise.default.resolve().then(function () { + if (!(user && user.id)) throw new Error('user must be an AV.User'); + return request({ + method: 'DELETE', + path: "/leaderboard/users/".concat(user.id, "/statistics"), + query: { + statistics: ensureArray(statisticNames).join(',') + }, + authOptions: authOptions + }).then(function () { + return undefined; + }); + }); +}; + +_.extend(Leaderboard.prototype, +/** @lends AV.Leaderboard.prototype */ +{ + _finishFetch: function _finishFetch(data) { + var _this = this; + + _.forEach(data, function (value, key) { + if (key === 'updatedAt' || key === 'objectId') return; + + if (key === 'expiredAt') { + key = 'nextResetAt'; + } + + if (key === 'createdAt') { + value = parseDate(value); + } + + if (value && value.__type === 'Date') { + value = parseDate(value.iso); + } + + _this[key] = value; + }); + + return this; + }, + + /** + * Fetch data from the srever. + * @param {AuthOptions} [authOptions] + * @return {Promise} + */ + fetch: function fetch(authOptions) { + var _this2 = this; + + return request({ + method: 'GET', + path: "/leaderboard/leaderboards/".concat(this.statisticName), + authOptions: authOptions + }).then(function (data) { + return _this2._finishFetch(data); + }); + }, + + /** + * Counts the number of users participated in this leaderboard + * @param {Object} [options] + * @param {number} [options.version] Specify the version of the leaderboard + * @param {AuthOptions} [authOptions] + * @return {Promise} + */ + count: function count() { + var _ref6 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, + version = _ref6.version; + + var authOptions = arguments.length > 1 ? arguments[1] : undefined; + return request({ + method: 'GET', + path: "/leaderboard/leaderboards/".concat(this.statisticName, "/ranks"), + query: { + count: 1, + limit: 0, + version: version + }, + authOptions: authOptions + }).then(function (_ref7) { + var count = _ref7.count; + return count; + }); + }, + _getResults: function _getResults(_ref8, authOptions, userId) { + var _context; + + var skip = _ref8.skip, + limit = _ref8.limit, + selectUserKeys = _ref8.selectUserKeys, + includeUserKeys = _ref8.includeUserKeys, + includeStatistics = _ref8.includeStatistics, + version = _ref8.version; + return request({ + method: 'GET', + path: (0, _concat.default)(_context = "/leaderboard/leaderboards/".concat(this.statisticName, "/ranks")).call(_context, userId ? "/".concat(userId) : ''), + query: { + skip: skip, + limit: limit, + selectUserKeys: _.union(ensureArray(selectUserKeys), ensureArray(includeUserKeys)).join(',') || undefined, + includeUser: includeUserKeys ? ensureArray(includeUserKeys).join(',') : undefined, + includeStatistics: includeStatistics ? ensureArray(includeStatistics).join(',') : undefined, + version: version + }, + authOptions: authOptions + }).then(function (_ref9) { + var rankings = _ref9.results; + return (0, _map.default)(rankings).call(rankings, function (rankingData) { + var _AV$_decode2 = AV._decode(rankingData), + user = _AV$_decode2.user, + value = _AV$_decode2.statisticValue, + rank = _AV$_decode2.rank, + _AV$_decode2$statisti = _AV$_decode2.statistics, + statistics = _AV$_decode2$statisti === void 0 ? [] : _AV$_decode2$statisti; + + return { + user: user, + value: value, + rank: rank, + includedStatistics: (0, _map.default)(statistics).call(statistics, parseStatisticData) + }; + }); + }); + }, + + /** + * Retrieve a list of ranked users for this Leaderboard. + * @param {Object} [options] + * @param {number} [options.skip] The number of results to skip. This is useful for pagination. + * @param {number} [options.limit] The limit of the number of results. + * @param {string[]} [options.selectUserKeys] Specify keys of the users to include in the Rankings + * @param {string[]} [options.includeUserKeys] If the value of a selected user keys is a Pointer, use this options to include its value. + * @param {string[]} [options.includeStatistics] Specify other statistics to include in the Rankings + * @param {number} [options.version] Specify the version of the leaderboard + * @param {AuthOptions} [authOptions] + * @return {Promise} + */ + getResults: function getResults() { + var _ref10 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, + skip = _ref10.skip, + limit = _ref10.limit, + selectUserKeys = _ref10.selectUserKeys, + includeUserKeys = _ref10.includeUserKeys, + includeStatistics = _ref10.includeStatistics, + version = _ref10.version; + + var authOptions = arguments.length > 1 ? arguments[1] : undefined; + return this._getResults({ + skip: skip, + limit: limit, + selectUserKeys: selectUserKeys, + includeUserKeys: includeUserKeys, + includeStatistics: includeStatistics, + version: version + }, authOptions); + }, + + /** + * Retrieve a list of ranked users for this Leaderboard, centered on the specified user. + * @param {AV.User} user The specified AV.User pointer. + * @param {Object} [options] + * @param {number} [options.limit] The limit of the number of results. + * @param {string[]} [options.selectUserKeys] Specify keys of the users to include in the Rankings + * @param {string[]} [options.includeUserKeys] If the value of a selected user keys is a Pointer, use this options to include its value. + * @param {string[]} [options.includeStatistics] Specify other statistics to include in the Rankings + * @param {number} [options.version] Specify the version of the leaderboard + * @param {AuthOptions} [authOptions] + * @return {Promise} + */ + getResultsAroundUser: function getResultsAroundUser(user) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var authOptions = arguments.length > 2 ? arguments[2] : undefined; + + // getResultsAroundUser(options, authOptions) + if (user && typeof user.id !== 'string') { + return this.getResultsAroundUser(undefined, user, options); + } + + var limit = options.limit, + selectUserKeys = options.selectUserKeys, + includeUserKeys = options.includeUserKeys, + includeStatistics = options.includeStatistics, + version = options.version; + return this._getResults({ + limit: limit, + selectUserKeys: selectUserKeys, + includeUserKeys: includeUserKeys, + includeStatistics: includeStatistics, + version: version + }, authOptions, user ? user.id : 'self'); + }, + _update: function _update(data, authOptions) { + var _this3 = this; + + return request({ + method: 'PUT', + path: "/leaderboard/leaderboards/".concat(this.statisticName), + data: data, + authOptions: authOptions + }).then(function (result) { + return _this3._finishFetch(result); + }); + }, + + /** + * (masterKey required) Update the version change interval of the Leaderboard. + * @param {AV.LeaderboardVersionChangeInterval} versionChangeInterval + * @param {AuthOptions} [authOptions] + * @return {Promise} + */ + updateVersionChangeInterval: function updateVersionChangeInterval(versionChangeInterval, authOptions) { + return this._update({ + versionChangeInterval: versionChangeInterval + }, authOptions); + }, + + /** + * (masterKey required) Update the version change interval of the Leaderboard. + * @param {AV.LeaderboardUpdateStrategy} updateStrategy + * @param {AuthOptions} [authOptions] + * @return {Promise} + */ + updateUpdateStrategy: function updateUpdateStrategy(updateStrategy, authOptions) { + return this._update({ + updateStrategy: updateStrategy + }, authOptions); + }, + + /** + * (masterKey required) Reset the Leaderboard. The version of the Leaderboard will be incremented by 1. + * @param {AuthOptions} [authOptions] + * @return {Promise} + */ + reset: function reset(authOptions) { + var _this4 = this; + + return request({ + method: 'PUT', + path: "/leaderboard/leaderboards/".concat(this.statisticName, "/incrementVersion"), + authOptions: authOptions + }).then(function (data) { + return _this4._finishFetch(data); + }); + }, + + /** + * (masterKey required) Delete the Leaderboard and its all archived versions. + * @param {AuthOptions} [authOptions] + * @return {void} + */ + destroy: function destroy(authOptions) { + return AV.request({ + method: 'DELETE', + path: "/leaderboard/leaderboards/".concat(this.statisticName), + authOptions: authOptions + }).then(function () { + return undefined; + }); + }, + + /** + * (masterKey required) Get archived versions. + * @param {Object} [options] + * @param {number} [options.skip] The number of results to skip. This is useful for pagination. + * @param {number} [options.limit] The limit of the number of results. + * @param {AuthOptions} [authOptions] + * @return {Promise} + */ + getArchives: function getArchives() { + var _this5 = this; + + var _ref11 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, + skip = _ref11.skip, + limit = _ref11.limit; + + var authOptions = arguments.length > 1 ? arguments[1] : undefined; + return request({ + method: 'GET', + path: "/leaderboard/leaderboards/".concat(this.statisticName, "/archives"), + query: { + skip: skip, + limit: limit + }, + authOptions: authOptions + }).then(function (_ref12) { + var results = _ref12.results; + return (0, _map.default)(results).call(results, function (_ref13) { + var version = _ref13.version, + status = _ref13.status, + url = _ref13.url, + activatedAt = _ref13.activatedAt, + deactivatedAt = _ref13.deactivatedAt; + return { + statisticName: _this5.statisticName, + version: version, + status: status, + url: url, + activatedAt: parseDate(activatedAt.iso), + deactivatedAt: parseDate(deactivatedAt.iso) + }; + }); + }); + } +}); + +/***/ }) +/******/ ]); +}); +//# sourceMappingURL=av-core.js.map \ No newline at end of file diff --git a/dist/av-core.js.map b/dist/av-core.js.map new file mode 100644 index 000000000..4a6acfc19 --- /dev/null +++ b/dist/av-core.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap f5e1032ccd19ab85d8cf","webpack:///./node_modules/core-js-pure/internals/export.js","webpack:///./node_modules/underscore/modules/index-all.js","webpack:///./node_modules/@babel/runtime-corejs3/helpers/interopRequireDefault.js","webpack:///./node_modules/underscore/modules/_setup.js","webpack:///./node_modules/core-js-pure/internals/fails.js","webpack:///./node_modules/core-js-pure/internals/define-well-known-symbol.js","webpack:///./node_modules/core-js-pure/internals/function-uncurry-this.js","webpack:///./node_modules/core-js-pure/internals/is-callable.js","webpack:///./node_modules/core-js-pure/internals/well-known-symbol.js","webpack:///./node_modules/core-js-pure/internals/global.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js-stable/promise.js","webpack:///./node_modules/core-js-pure/internals/function-call.js","webpack:///./node_modules/underscore/modules/keys.js","webpack:///./node_modules/core-js-pure/internals/path.js","webpack:///./node_modules/core-js-pure/internals/has-own-property.js","webpack:///./node_modules/underscore/modules/_tagTester.js","webpack:///./node_modules/core-js-pure/internals/get-built-in.js","webpack:///./node_modules/core-js-pure/internals/is-object.js","webpack:///./node_modules/underscore/modules/_cb.js","webpack:///./node_modules/core-js-pure/internals/descriptors.js","webpack:///./node_modules/core-js-pure/internals/object-is-prototype-of.js","webpack:///./node_modules/core-js-pure/internals/an-object.js","webpack:///./node_modules/underscore/modules/restArguments.js","webpack:///./node_modules/underscore/modules/underscore.js","webpack:///./node_modules/underscore/modules/_isArrayLike.js","webpack:///./src/request.js","webpack:///./node_modules/underscore/modules/isFunction.js","webpack:///./node_modules/underscore/modules/_getLength.js","webpack:///./src/utils/index.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js-stable/instance/concat.js","webpack:///./node_modules/core-js-pure/internals/a-callable.js","webpack:///./node_modules/core-js-pure/internals/is-pure.js","webpack:///./node_modules/core-js-pure/internals/object-define-property.js","webpack:///./node_modules/core-js-pure/internals/to-indexed-object.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js-stable/json/stringify.js","webpack:///./node_modules/core-js-pure/internals/to-object.js","webpack:///./node_modules/core-js-pure/internals/create-non-enumerable-property.js","webpack:///./node_modules/underscore/modules/_has.js","webpack:///./node_modules/core-js-pure/internals/entry-virtual.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js-stable/instance/map.js","webpack:///./src/error.js","webpack:///./node_modules/core-js-pure/internals/create-property-descriptor.js","webpack:///./node_modules/core-js-pure/internals/length-of-array-like.js","webpack:///./node_modules/core-js-pure/internals/define-built-in.js","webpack:///./node_modules/core-js-pure/internals/new-promise-capability.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/@babel/runtime-corejs3/core-js-stable/instance/keys.js","webpack:///./node_modules/core-js-pure/internals/native-symbol.js","webpack:///./node_modules/core-js-pure/internals/function-bind-context.js","webpack:///./node_modules/core-js-pure/internals/object-create.js","webpack:///./node_modules/core-js-pure/internals/iterators.js","webpack:///./node_modules/core-js-pure/internals/classof.js","webpack:///./node_modules/core-js-pure/internals/set-to-string-tag.js","webpack:///./node_modules/core-js-pure/internals/promise-native-constructor.js","webpack:///./node_modules/underscore/modules/values.js","webpack:///./node_modules/underscore/modules/_flatten.js","webpack:///./node_modules/underscore/modules/map.js","webpack:///./src/av.js","webpack:///./node_modules/debug/src/browser.js","webpack:///./src/adapter.js","webpack:///./node_modules/core-js-pure/internals/function-apply.js","webpack:///./node_modules/core-js-pure/internals/function-bind-native.js","webpack:///./node_modules/core-js-pure/internals/object-get-own-property-descriptor.js","webpack:///./node_modules/core-js-pure/internals/classof-raw.js","webpack:///./node_modules/core-js-pure/internals/try-to-string.js","webpack:///./node_modules/core-js-pure/internals/shared.js","webpack:///./node_modules/core-js-pure/internals/iterate.js","webpack:///./node_modules/core-js-pure/internals/to-string.js","webpack:///./node_modules/core-js-pure/modules/es.array.iterator.js","webpack:///./node_modules/core-js-pure/internals/perform.js","webpack:///./node_modules/core-js-pure/internals/promise-constructor-detection.js","webpack:///./node_modules/core-js-pure/modules/web.dom-collections.iterator.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-pure/internals/is-array.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js-stable/instance/slice.js","webpack:///./node_modules/core-js-pure/internals/to-property-key.js","webpack:///./node_modules/core-js-pure/internals/is-symbol.js","webpack:///./node_modules/core-js-pure/internals/engine-v8-version.js","webpack:///./node_modules/core-js-pure/internals/engine-user-agent.js","webpack:///./node_modules/core-js-pure/internals/object-get-prototype-of.js","webpack:///./node_modules/core-js-pure/internals/shared-key.js","webpack:///./node_modules/core-js-pure/internals/object-set-prototype-of.js","webpack:///./node_modules/core-js-pure/internals/hidden-keys.js","webpack:///./node_modules/core-js-pure/internals/get-iterator-method.js","webpack:///./node_modules/core-js-pure/internals/internal-state.js","webpack:///./node_modules/core-js-pure/modules/es.object.to-string.js","webpack:///./node_modules/core-js-pure/internals/is-constructor.js","webpack:///./node_modules/core-js-pure/internals/array-slice.js","webpack:///./node_modules/core-js-pure/modules/es.string.iterator.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-pure/internals/create-property.js","webpack:///./node_modules/core-js-pure/internals/array-method-has-species-support.js","webpack:///./node_modules/core-js-pure/internals/array-iteration.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js-stable/instance/index-of.js","webpack:///./src/utils/ajax.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js-stable/instance/find.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/core-js-pure/internals/require-object-coercible.js","webpack:///./node_modules/core-js-pure/internals/get-method.js","webpack:///./node_modules/core-js-pure/internals/shared-store.js","webpack:///./node_modules/core-js-pure/internals/uid.js","webpack:///./node_modules/core-js-pure/internals/document-create-element.js","webpack:///./node_modules/core-js-pure/internals/object-get-own-property-names.js","webpack:///./node_modules/core-js-pure/internals/to-absolute-index.js","webpack:///./node_modules/core-js-pure/internals/to-integer-or-infinity.js","webpack:///./node_modules/core-js-pure/internals/enum-bug-keys.js","webpack:///./node_modules/core-js-pure/internals/object-get-own-property-symbols.js","webpack:///./node_modules/core-js-pure/internals/object-keys.js","webpack:///./node_modules/core-js-pure/internals/to-string-tag-support.js","webpack:///./node_modules/core-js-pure/internals/inspect-source.js","webpack:///./node_modules/core-js-pure/internals/engine-is-node.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-corejs3/helpers/typeof.js","webpack:///./node_modules/core-js-pure/internals/well-known-symbol-wrapped.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js/object/define-property.js","webpack:///./node_modules/core-js-pure/internals/object-property-is-enumerable.js","webpack:///./node_modules/core-js-pure/internals/indexed-object.js","webpack:///./node_modules/core-js-pure/internals/use-symbol-as-uid.js","webpack:///./node_modules/core-js-pure/internals/ie8-dom-define.js","webpack:///./node_modules/core-js-pure/internals/is-forced.js","webpack:///./node_modules/core-js-pure/internals/v8-prototype-define-bug.js","webpack:///./node_modules/core-js-pure/internals/correct-prototype-getter.js","webpack:///./node_modules/core-js-pure/internals/object-keys-internal.js","webpack:///./node_modules/core-js-pure/internals/array-includes.js","webpack:///./node_modules/core-js-pure/internals/object-define-properties.js","webpack:///./node_modules/core-js-pure/internals/html.js","webpack:///./node_modules/core-js-pure/internals/is-array-iterator-method.js","webpack:///./node_modules/core-js-pure/internals/get-iterator.js","webpack:///./node_modules/core-js-pure/internals/iterator-close.js","webpack:///./node_modules/core-js-pure/internals/add-to-unscopables.js","webpack:///./node_modules/core-js-pure/internals/define-iterator.js","webpack:///./node_modules/core-js-pure/internals/iterators-core.js","webpack:///./node_modules/core-js-pure/internals/species-constructor.js","webpack:///./node_modules/core-js-pure/internals/a-constructor.js","webpack:///./node_modules/core-js-pure/internals/task.js","webpack:///./node_modules/core-js-pure/internals/engine-is-ios.js","webpack:///./node_modules/core-js-pure/internals/promise-statics-incorrect-iteration.js","webpack:///./node_modules/core-js-pure/internals/check-correctness-of-iteration.js","webpack:///./node_modules/core-js-pure/internals/promise-resolve.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/core-js-pure/modules/es.array.concat.js","webpack:///./node_modules/core-js-pure/internals/array-species-create.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js-stable/object/keys.js","webpack:///./node_modules/core-js-pure/modules/es.json.stringify.js","webpack:///./node_modules/uuid/v4.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js-stable/object/get-prototype-of.js","webpack:///./node_modules/core-js-pure/stable/object/get-prototype-of.js","webpack:///./src/version.js","webpack:///./node_modules/eventemitter3/index.js","webpack:///./src/localstorage.js","webpack:///./src/cache.js","webpack:///./node_modules/core-js-pure/stable/object/set-prototype-of.js","webpack:///./node_modules/core-js-pure/stable/instance/slice.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js-stable/object/define-property.js","webpack:///./node_modules/core-js-pure/stable/object/define-property.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js/symbol.js","webpack:///./node_modules/core-js-pure/stable/symbol/index.js","webpack:///./node_modules/core-js-pure/internals/symbol-define-to-primitive.js","webpack:///./node_modules/core-js-pure/internals/native-symbol-registry.js","webpack:///./node_modules/core-js-pure/modules/es.symbol.iterator.js","webpack:///./node_modules/core-js-pure/stable/array/from.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js/get-iterator-method.js","webpack:///./node_modules/core-js-pure/internals/function-bind.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js/object/set-prototype-of.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js/instance/bind.js","webpack:///./node_modules/charenc/charenc.js","webpack:///./src/entry/core.js","webpack:///./src/index.js","webpack:///./node_modules/core-js-pure/stable/promise/index.js","webpack:///./node_modules/core-js-pure/es/promise/index.js","webpack:///./node_modules/core-js-pure/modules/es.aggregate-error.js","webpack:///./node_modules/core-js-pure/modules/es.aggregate-error.constructor.js","webpack:///./node_modules/core-js-pure/internals/to-primitive.js","webpack:///./node_modules/core-js-pure/internals/ordinary-to-primitive.js","webpack:///./node_modules/core-js-pure/internals/define-global-property.js","webpack:///./node_modules/core-js-pure/internals/a-possible-prototype.js","webpack:///./node_modules/core-js-pure/internals/copy-constructor-properties.js","webpack:///./node_modules/core-js-pure/internals/own-keys.js","webpack:///./node_modules/core-js-pure/internals/math-trunc.js","webpack:///./node_modules/core-js-pure/internals/to-length.js","webpack:///./node_modules/core-js-pure/internals/clear-error-stack.js","webpack:///./node_modules/core-js-pure/internals/install-error-cause.js","webpack:///./node_modules/core-js-pure/internals/normalize-string-argument.js","webpack:///./node_modules/core-js-pure/internals/error-stack-installable.js","webpack:///./node_modules/core-js-pure/internals/native-weak-map.js","webpack:///./node_modules/core-js-pure/internals/function-name.js","webpack:///./node_modules/core-js-pure/internals/create-iterator-constructor.js","webpack:///./node_modules/core-js-pure/internals/object-to-string.js","webpack:///./node_modules/core-js-pure/modules/es.promise.js","webpack:///./node_modules/core-js-pure/modules/es.promise.constructor.js","webpack:///./node_modules/core-js-pure/internals/set-species.js","webpack:///./node_modules/core-js-pure/internals/an-instance.js","webpack:///./node_modules/core-js-pure/internals/validate-arguments-length.js","webpack:///./node_modules/core-js-pure/internals/microtask.js","webpack:///./node_modules/core-js-pure/internals/engine-is-ios-pebble.js","webpack:///./node_modules/core-js-pure/internals/engine-is-webos-webkit.js","webpack:///./node_modules/core-js-pure/internals/host-report-errors.js","webpack:///./node_modules/core-js-pure/internals/queue.js","webpack:///./node_modules/core-js-pure/internals/engine-is-browser.js","webpack:///./node_modules/core-js-pure/modules/es.promise.all.js","webpack:///./node_modules/core-js-pure/modules/es.promise.catch.js","webpack:///./node_modules/core-js-pure/modules/es.promise.race.js","webpack:///./node_modules/core-js-pure/modules/es.promise.reject.js","webpack:///./node_modules/core-js-pure/modules/es.promise.resolve.js","webpack:///./node_modules/core-js-pure/modules/es.promise.all-settled.js","webpack:///./node_modules/core-js-pure/modules/es.promise.any.js","webpack:///./node_modules/core-js-pure/modules/es.promise.finally.js","webpack:///./node_modules/core-js-pure/internals/string-multibyte.js","webpack:///./node_modules/core-js-pure/internals/dom-iterables.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-pure/stable/instance/concat.js","webpack:///./node_modules/core-js-pure/es/instance/concat.js","webpack:///./node_modules/core-js-pure/es/array/virtual/concat.js","webpack:///./node_modules/core-js-pure/internals/does-not-exceed-safe-integer.js","webpack:///./node_modules/core-js-pure/internals/array-species-constructor.js","webpack:///./node_modules/core-js-pure/stable/instance/map.js","webpack:///./node_modules/core-js-pure/es/instance/map.js","webpack:///./node_modules/core-js-pure/es/array/virtual/map.js","webpack:///./node_modules/core-js-pure/modules/es.array.map.js","webpack:///./node_modules/core-js-pure/stable/object/keys.js","webpack:///./node_modules/core-js-pure/es/object/keys.js","webpack:///./node_modules/core-js-pure/modules/es.object.keys.js","webpack:///./node_modules/core-js-pure/stable/json/stringify.js","webpack:///./node_modules/core-js-pure/es/json/stringify.js","webpack:///./node_modules/core-js-pure/stable/instance/index-of.js","webpack:///./node_modules/core-js-pure/es/instance/index-of.js","webpack:///./node_modules/core-js-pure/es/array/virtual/index-of.js","webpack:///./node_modules/core-js-pure/modules/es.array.index-of.js","webpack:///./node_modules/core-js-pure/internals/array-method-is-strict.js","webpack:///./node_modules/core-js-pure/stable/instance/keys.js","webpack:///./node_modules/core-js-pure/stable/array/virtual/keys.js","webpack:///./node_modules/core-js-pure/es/array/virtual/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-pure/es/object/get-prototype-of.js","webpack:///./node_modules/core-js-pure/modules/es.object.get-prototype-of.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js-stable/object/set-prototype-of.js","webpack:///./node_modules/core-js-pure/es/object/set-prototype-of.js","webpack:///./node_modules/core-js-pure/modules/es.object.set-prototype-of.js","webpack:///./src/init.js","webpack:///./node_modules/core-js-pure/es/instance/slice.js","webpack:///./node_modules/core-js-pure/es/array/virtual/slice.js","webpack:///./node_modules/core-js-pure/modules/es.array.slice.js","webpack:///./node_modules/core-js-pure/es/object/define-property.js","webpack:///./node_modules/core-js-pure/modules/es.object.define-property.js","webpack:///./src/app-router.js","webpack:///./node_modules/core-js-pure/features/symbol/index.js","webpack:///./node_modules/core-js-pure/full/symbol/index.js","webpack:///./node_modules/core-js-pure/actual/symbol/index.js","webpack:///./node_modules/core-js-pure/es/symbol/index.js","webpack:///./node_modules/core-js-pure/modules/es.symbol.js","webpack:///./node_modules/core-js-pure/modules/es.symbol.constructor.js","webpack:///./node_modules/core-js-pure/internals/object-get-own-property-names-external.js","webpack:///./node_modules/core-js-pure/internals/array-slice-simple.js","webpack:///./node_modules/core-js-pure/modules/es.symbol.for.js","webpack:///./node_modules/core-js-pure/modules/es.symbol.key-for.js","webpack:///./node_modules/core-js-pure/modules/es.object.get-own-property-symbols.js","webpack:///./node_modules/core-js-pure/modules/es.symbol.async-iterator.js","webpack:///./node_modules/core-js-pure/modules/es.symbol.description.js","webpack:///./node_modules/core-js-pure/modules/es.symbol.has-instance.js","webpack:///./node_modules/core-js-pure/modules/es.symbol.is-concat-spreadable.js","webpack:///./node_modules/core-js-pure/modules/es.symbol.match.js","webpack:///./node_modules/core-js-pure/modules/es.symbol.match-all.js","webpack:///./node_modules/core-js-pure/modules/es.symbol.replace.js","webpack:///./node_modules/core-js-pure/modules/es.symbol.search.js","webpack:///./node_modules/core-js-pure/modules/es.symbol.species.js","webpack:///./node_modules/core-js-pure/modules/es.symbol.split.js","webpack:///./node_modules/core-js-pure/modules/es.symbol.to-primitive.js","webpack:///./node_modules/core-js-pure/modules/es.symbol.to-string-tag.js","webpack:///./node_modules/core-js-pure/modules/es.symbol.unscopables.js","webpack:///./node_modules/core-js-pure/modules/es.json.to-string-tag.js","webpack:///./node_modules/core-js-pure/modules/es.math.to-string-tag.js","webpack:///./node_modules/core-js-pure/modules/es.reflect.to-string-tag.js","webpack:///./node_modules/core-js-pure/modules/esnext.symbol.async-dispose.js","webpack:///./node_modules/core-js-pure/modules/esnext.symbol.dispose.js","webpack:///./node_modules/core-js-pure/modules/esnext.symbol.matcher.js","webpack:///./node_modules/core-js-pure/modules/esnext.symbol.metadata-key.js","webpack:///./node_modules/core-js-pure/modules/esnext.symbol.observable.js","webpack:///./node_modules/core-js-pure/modules/esnext.symbol.metadata.js","webpack:///./node_modules/core-js-pure/modules/esnext.symbol.pattern-match.js","webpack:///./node_modules/core-js-pure/modules/esnext.symbol.replace-all.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js/symbol/iterator.js","webpack:///./node_modules/core-js-pure/features/symbol/iterator.js","webpack:///./node_modules/core-js-pure/full/symbol/iterator.js","webpack:///./node_modules/core-js-pure/actual/symbol/iterator.js","webpack:///./node_modules/core-js-pure/stable/symbol/iterator.js","webpack:///./node_modules/core-js-pure/es/symbol/iterator.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js-stable/instance/filter.js","webpack:///./node_modules/core-js-pure/stable/instance/filter.js","webpack:///./node_modules/core-js-pure/es/instance/filter.js","webpack:///./node_modules/core-js-pure/es/array/virtual/filter.js","webpack:///./node_modules/core-js-pure/modules/es.array.filter.js","webpack:///./node_modules/promise-timeout/index.js","webpack:///./src/event.js","webpack:///./src/geopoint.js","webpack:///./src/acl.js","webpack:///./src/op.js","webpack:///./node_modules/core-js-pure/stable/instance/find.js","webpack:///./node_modules/core-js-pure/es/instance/find.js","webpack:///./node_modules/core-js-pure/es/array/virtual/find.js","webpack:///./node_modules/core-js-pure/modules/es.array.find.js","webpack:///./src/relation.js","webpack:///./src/file.js","webpack:///./src/uploader/cos.js","webpack:///./src/uploader/qiniu.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js-stable/array/from.js","webpack:///./node_modules/core-js-pure/es/array/from.js","webpack:///./node_modules/core-js-pure/modules/es.array.from.js","webpack:///./node_modules/core-js-pure/internals/array-from.js","webpack:///./node_modules/core-js-pure/internals/call-with-safe-iteration-closing.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js-stable/symbol.js","webpack:///./node_modules/core-js-pure/features/get-iterator-method.js","webpack:///./node_modules/core-js-pure/full/get-iterator-method.js","webpack:///./node_modules/core-js-pure/actual/get-iterator-method.js","webpack:///./node_modules/core-js-pure/stable/get-iterator-method.js","webpack:///./node_modules/core-js-pure/es/get-iterator-method.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js-stable/reflect/construct.js","webpack:///./node_modules/core-js-pure/stable/reflect/construct.js","webpack:///./node_modules/core-js-pure/es/reflect/construct.js","webpack:///./node_modules/core-js-pure/modules/es.reflect.construct.js","webpack:///./node_modules/@babel/runtime-corejs3/helpers/inherits.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js/object/create.js","webpack:///./node_modules/core-js-pure/features/object/create.js","webpack:///./node_modules/core-js-pure/full/object/create.js","webpack:///./node_modules/core-js-pure/actual/object/create.js","webpack:///./node_modules/core-js-pure/stable/object/create.js","webpack:///./node_modules/core-js-pure/es/object/create.js","webpack:///./node_modules/core-js-pure/modules/es.object.create.js","webpack:///./node_modules/core-js-pure/features/object/define-property.js","webpack:///./node_modules/core-js-pure/full/object/define-property.js","webpack:///./node_modules/core-js-pure/actual/object/define-property.js","webpack:///./node_modules/@babel/runtime-corejs3/helpers/setPrototypeOf.js","webpack:///./node_modules/core-js-pure/features/object/set-prototype-of.js","webpack:///./node_modules/core-js-pure/full/object/set-prototype-of.js","webpack:///./node_modules/core-js-pure/actual/object/set-prototype-of.js","webpack:///./node_modules/core-js-pure/features/instance/bind.js","webpack:///./node_modules/core-js-pure/full/instance/bind.js","webpack:///./node_modules/core-js-pure/actual/instance/bind.js","webpack:///./node_modules/core-js-pure/stable/instance/bind.js","webpack:///./node_modules/core-js-pure/es/instance/bind.js","webpack:///./node_modules/core-js-pure/es/function/virtual/bind.js","webpack:///./node_modules/core-js-pure/modules/es.function.bind.js","webpack:///./node_modules/@babel/runtime-corejs3/helpers/possibleConstructorReturn.js","webpack:///./node_modules/@babel/runtime-corejs3/helpers/assertThisInitialized.js","webpack:///./node_modules/@babel/runtime-corejs3/helpers/getPrototypeOf.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js/object/get-prototype-of.js","webpack:///./node_modules/core-js-pure/features/object/get-prototype-of.js","webpack:///./node_modules/core-js-pure/full/object/get-prototype-of.js","webpack:///./node_modules/core-js-pure/actual/object/get-prototype-of.js","webpack:///./node_modules/@babel/runtime-corejs3/helpers/classCallCheck.js","webpack:///./node_modules/@babel/runtime-corejs3/helpers/createClass.js","webpack:///./src/utils/btoa.js","webpack:///./src/uploader/s3.js","webpack:///./node_modules/md5/md5.js","webpack:///./node_modules/crypt/crypt.js","webpack:///./node_modules/is-buffer/index.js","webpack:///./src/utils/parse-base64-browser.js","webpack:///./src/object.js","webpack:///./node_modules/@babel/runtime-corejs3/helpers/slicedToArray.js","webpack:///./node_modules/@babel/runtime-corejs3/helpers/arrayWithHoles.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js/array/is-array.js","webpack:///./node_modules/core-js-pure/features/array/is-array.js","webpack:///./node_modules/core-js-pure/full/array/is-array.js","webpack:///./node_modules/core-js-pure/actual/array/is-array.js","webpack:///./node_modules/core-js-pure/stable/array/is-array.js","webpack:///./node_modules/core-js-pure/es/array/is-array.js","webpack:///./node_modules/core-js-pure/modules/es.array.is-array.js","webpack:///./node_modules/@babel/runtime-corejs3/helpers/iterableToArrayLimit.js","webpack:///./node_modules/@babel/runtime-corejs3/helpers/unsupportedIterableToArray.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js/instance/slice.js","webpack:///./node_modules/core-js-pure/features/instance/slice.js","webpack:///./node_modules/core-js-pure/full/instance/slice.js","webpack:///./node_modules/core-js-pure/actual/instance/slice.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js/array/from.js","webpack:///./node_modules/core-js-pure/features/array/from.js","webpack:///./node_modules/core-js-pure/full/array/from.js","webpack:///./node_modules/core-js-pure/actual/array/from.js","webpack:///./node_modules/@babel/runtime-corejs3/helpers/arrayLikeToArray.js","webpack:///./node_modules/@babel/runtime-corejs3/helpers/nonIterableRest.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor.js","webpack:///./node_modules/core-js-pure/stable/object/get-own-property-descriptor.js","webpack:///./node_modules/core-js-pure/es/object/get-own-property-descriptor.js","webpack:///./node_modules/core-js-pure/modules/es.object.get-own-property-descriptor.js","webpack:///./src/role.js","webpack:///./src/user.js","webpack:///./node_modules/@babel/runtime-corejs3/helpers/defineProperty.js","webpack:///./src/query.js","webpack:///./src/live-query.js","webpack:///./src/captcha.js","webpack:///./src/cloudfunction.js","webpack:///./src/push.js","webpack:///./src/status.js","webpack:///./src/search.js","webpack:///./src/insight.js","webpack:///./src/friendship.js","webpack:///./src/conversation.js","webpack:///./src/leaderboard.js"],"names":["_","require","md5","extend","AV","AVError","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","error","errorJSON","code","message","responseText","response","JSON","parse","e","rawMessage","keepErrorRawMessage","statusCode","err","_request","route","className","objectId","_fetchWhenSave","_where","toLowerCase","module","exports","isNullOrUndefined","x","isNull","isUndefined","ensureArray","target","isArray","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","wx","iso8601","setValue","segs","split","lastSeg","pop","currentTarget","forEach","seg","findValue","firstSeg","i","isPlainObject","obj","isObject","Object","continueWhile","predicate","asyncFunction","create","enumerable","writable","configurable","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","platformInfo","ua","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","ACL","toJSON","isDate","__type","iso","GeoPoint","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","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","qs","count","promise","status","header","ok","enabled","syncApiNames","async","apiName","storage","removeAsync","removeItemAsync","getCacheData","cacheData","expired","expiredAt","getAsync","cache","setAsync","ttl","Promise","Cache","Conversation","AppRouter","isEmpty","isCNApp","appId","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","slice","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","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","censor","res","censorResult","_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","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","results","firstError","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","_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","find","findAndCount","scan","orderedBy","batchSize","condition","scan_key","cursor","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","getUserWithSessionToken","getSessionTokenAsync","Friendship","friend","friendObj","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"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;QCVA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,KAAK;QACL;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;QAEA;QACA;;;;;;;;AC7Da;AACb,aAAa,mBAAO,CAAC,CAAqB;AAC1C,YAAY,mBAAO,CAAC,EAA6B;AACjD,kBAAkB,mBAAO,CAAC,CAAoC;AAC9D,iBAAiB,mBAAO,CAAC,CAA0B;AACnD,+BAA+B,mBAAO,CAAC,EAAiD;AACxF,eAAe,mBAAO,CAAC,GAAwB;AAC/C,WAAW,mBAAO,CAAC,EAAmB;AACtC,WAAW,mBAAO,CAAC,EAAoC;AACvD,kCAAkC,mBAAO,CAAC,EAA6C;AACvF,aAAa,mBAAO,CAAC,EAA+B;;AAEpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,sFAAsF;;AAEtF,2FAA2F;AAC3F;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC6C;AAClB;;;;;;;ACjB3B;AACA;AACA;AACA;AACA;;AAEA,sH;;;;;;;ACNA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACO;;AAEP;AACA;AACA;AACO;AACP;AACA;AACA;;AAEA;AACO;AACA;;AAEP;AACO;AACP;AACA;AACA;;AAEA;AACO;AACP;;AAEA;AACA;AACO;AACP;AACA;AACA;;AAEA;AACO;AACP;;AAEA;AACO,mBAAmB,eAAe;AAClC;AACP;;AAEA;AACO;;;;;;;;AC1CP;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;;;;;;ACNA,WAAW,mBAAO,CAAC,EAAmB;AACtC,aAAa,mBAAO,CAAC,EAA+B;AACpD,mCAAmC,mBAAO,CAAC,GAAwC;AACnF,qBAAqB,mBAAO,CAAC,EAAqC;;AAElE;AACA,+CAA+C;AAC/C;AACA;AACA,GAAG;AACH;;;;;;;ACVA,kBAAkB,mBAAO,CAAC,EAAmC;;AAE7D;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;;;;;;;ACbA;AACA;AACA;AACA;AACA;;;;;;;ACJA,aAAa,mBAAO,CAAC,CAAqB;AAC1C,aAAa,mBAAO,CAAC,EAAqB;AAC1C,aAAa,mBAAO,CAAC,EAA+B;AACpD,UAAU,mBAAO,CAAC,GAAkB;AACpC,oBAAoB,mBAAO,CAAC,EAA4B;AACxD,wBAAwB,mBAAO,CAAC,GAAgC;;AAEhE;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;;;;;;;ACvBA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,aAAa,EAAE;;;;;;;;ACb/B,iBAAiB,mBAAO,CAAC,GAA6B,E;;;;;;ACAtD,kBAAkB,mBAAO,CAAC,EAAmC;;AAE7D;;AAEA;AACA;AACA;;;;;;;;ACNA;AAAA;AAAA;AAAA;AAAA;AAAqC;AACgB;AACzB;AACgC;;AAE5D;AACA;AACe;AACf,OAAO,qEAAQ;AACf,MAAM,6DAAU,SAAS,qEAAU;AACnC;AACA,2BAA2B,gEAAG;AAC9B;AACA,MAAM,6DAAU,EAAE,gFAAmB;AACrC;AACA;;;;;;;ACfA;;;;;;;ACAA,kBAAkB,mBAAO,CAAC,CAAoC;AAC9D,eAAe,mBAAO,CAAC,EAAwB;;AAE/C,mCAAmC;;AAEnC;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACVA;AAAA;AAAuC;;AAEvC;AACe;AACf;AACA;AACA,WAAW,2DAAQ;AACnB;AACA;;;;;;;ACRA,WAAW,mBAAO,CAAC,EAAmB;AACtC,aAAa,mBAAO,CAAC,CAAqB;AAC1C,iBAAiB,mBAAO,CAAC,CAA0B;;AAEnD;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;ACXA,iBAAiB,mBAAO,CAAC,CAA0B;;AAEnD;AACA;AACA;;;;;;;;ACJA;AAAA;AAAA;AAAA;AAAgC;AACc;AACT;;AAErC;AACA;AACe;AACf,MAAM,+DAAC,cAAc,6DAAQ,SAAS,+DAAC;AACvC,SAAS,yEAAY;AACrB;;;;;;;ACTA,YAAY,mBAAO,CAAC,CAAoB;;AAExC;AACA;AACA;AACA,iCAAiC,MAAM,mBAAmB,UAAU,EAAE,EAAE;AACxE,CAAC;;;;;;;ACND,kBAAkB,mBAAO,CAAC,CAAoC;;AAE9D,+BAA+B;;;;;;;ACF/B,eAAe,mBAAO,CAAC,EAAwB;;AAE/C;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;ACTA;AAAA;AACA;AACA;AACA;AACA;AACe;AACf;AACA;AACA;AACA;AACA;AACA,UAAU,gBAAgB;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,oBAAoB;AACvC;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1BA;AAAA;AAAsC;;AAEtC;AACA;AACA;AACe;AACf;AACA;AACA;AACA;;AAEA,YAAY,0DAAO;;AAEnB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;ACxBA;AAAA;AAAoE;AAC5B;;AAExC;AACA;AACA;AACA;AACe,6IAAuB,CAAC,8DAAS,CAAC,EAAC;;;;;;;;;;;;;;;;ACPlD,IAAMA,CAAC,GAAGC,mBAAO,CAAC,CAAD,CAAjB;;AACA,IAAMC,GAAG,GAAGD,mBAAO,CAAC,GAAD,CAAnB;;AACA,eAAmBA,mBAAO,CAAC,CAAD,CAA1B;AAAA,IAAQE,MAAR,YAAQA,MAAR;;AACA,IAAMC,EAAE,GAAGH,mBAAO,CAAC,EAAD,CAAlB;;AACA,IAAMI,OAAO,GAAGJ,mBAAO,CAAC,EAAD,CAAvB;;AACA,gBAA4BA,mBAAO,CAAC,EAAD,CAAnC;AAAA,IAAQK,eAAR,aAAQA,eAAR;;AACA,IAAMC,IAAI,GAAGN,mBAAO,CAAC,GAAD,CAApB,C,CAEA;;;AACA,IAAMO,IAAI,GAAG,SAAPA,IAAO,CAACC,GAAD,EAAMC,WAAN,EAAsB;EAAA;;EACjC,IAAMC,GAAG,GAAG,IAAIC,IAAJ,GAAWC,OAAX,EAAZ;EACA,IAAMC,SAAS,GAAGZ,GAAG,CAACS,GAAG,GAAGF,GAAP,CAArB;;EACA,IAAIC,WAAJ,EAAiB;IAAA;;IACf,iDAAUI,SAAV,uBAAuBH,GAAvB;EACD;;EACD,kDAAUG,SAAV,wBAAuBH,GAAvB;AACD,CAPD;;AASA,IAAMI,SAAS,GAAG,SAAZA,SAAY,CAACC,OAAD,EAAUC,OAAV,EAAsB;EACtC,IAAIA,OAAJ,EAAa;IACXD,OAAO,CAAC,WAAD,CAAP,GAAuBR,IAAI,CAACJ,EAAE,CAACc,cAAJ,CAA3B;EACD,CAFD,MAEO;IACLF,OAAO,CAAC,UAAD,CAAP,GAAsBZ,EAAE,CAACc,cAAzB;EACD;AACF,CAND;;AAQA,IAAMC,UAAU,GAAG,SAAbA,UAAa,GAA+B;EAAA,IAA9BC,WAA8B,uEAAhB,EAAgB;EAAA,IAAZH,OAAY;EAChD,IAAMD,OAAO,GAAG;IACd,WAAWZ,EAAE,CAACiB,aADA;IAEd,gBAAgB;EAFF,CAAhB;EAIA,IAAIC,YAAY,GAAG,KAAnB;;EACA,IAAI,OAAOF,WAAW,CAACE,YAAnB,KAAoC,SAAxC,EAAmD;IACjDA,YAAY,GAAGF,WAAW,CAACE,YAA3B;EACD,CAFD,MAEO,IAAI,OAAOlB,EAAE,CAACmB,OAAH,CAAWD,YAAlB,KAAmC,SAAvC,EAAkD;IACvDA,YAAY,GAAGlB,EAAE,CAACmB,OAAH,CAAWD,YAA1B;EACD;;EACD,IAAIA,YAAJ,EAAkB;IAChB,IAAIlB,EAAE,CAACoB,SAAP,EAAkB;MAChB,IAAIP,OAAJ,EAAa;QACXD,OAAO,CAAC,WAAD,CAAP,GAAuBR,IAAI,CAACJ,EAAE,CAACoB,SAAJ,EAAe,IAAf,CAA3B;MACD,CAFD,MAEO;QACLR,OAAO,CAAC,UAAD,CAAP,aAAyBZ,EAAE,CAACoB,SAA5B;MACD;IACF,CAND,MAMO;MACLC,OAAO,CAACC,IAAR,CAAa,+CAAb;MACAX,SAAS,CAACC,OAAD,EAAUC,OAAV,CAAT;IACD;EACF,CAXD,MAWO;IACLF,SAAS,CAACC,OAAD,EAAUC,OAAV,CAAT;EACD;;EACD,IAAIb,EAAE,CAACuB,OAAP,EAAgB;IACdX,OAAO,CAAC,eAAD,CAAP,GAA2BZ,EAAE,CAACuB,OAA9B;EACD;;EACD,IAAIvB,EAAE,CAACmB,OAAH,CAAWK,UAAX,KAA0B,IAA9B,EAAoC;IAClCZ,OAAO,CAAC,WAAD,CAAP,GAAuBa,MAAM,CAACzB,EAAE,CAACmB,OAAH,CAAWK,UAAZ,CAA7B;EACD;;EACDZ,OAAO,CAAC,cAAyB,SAAzB,GAAqC,YAArC,GAAoD,SAArD,CAAP,GACEZ,EAAE,CAAC0B,aAAH,CAAiBC,SADnB;EAGA,OAAO,iBAAQC,OAAR,GAAkBC,IAAlB,CAAuB,YAAM;IAClC;IACA,IAAMC,YAAY,GAAG5B,eAAe,CAACc,WAAD,CAApC;;IACA,IAAIc,YAAJ,EAAkB;MAChBlB,OAAO,CAAC,cAAD,CAAP,GAA0BkB,YAA1B;IACD,CAFD,MAEO,IAAI,CAAC9B,EAAE,CAACmB,OAAH,CAAWY,kBAAhB,EAAoC;MACzC,OAAO/B,EAAE,CAACgC,IAAH,CAAQC,YAAR,GAAuBJ,IAAvB,CAA4B,UAAAK,WAAW,EAAI;QAChD,IAAIA,WAAW,IAAIA,WAAW,CAACC,aAA/B,EAA8C;UAC5CvB,OAAO,CAAC,cAAD,CAAP,GAA0BsB,WAAW,CAACC,aAAtC;QACD;;QACD,OAAOvB,OAAP;MACD,CALM,CAAP;IAMD;;IACD,OAAOA,OAAP;EACD,CAdM,CAAP;AAeD,CAjDD;;AAmDA,IAAMwB,YAAY,GAAG,SAAfA,YAAe,OAOf;EAAA,wBANJC,OAMI;EAAA,IANJA,OAMI,6BANM,KAMN;EAAA,wBALJC,OAKI;EAAA,IALJA,OAKI,6BALM,KAKN;EAAA,IAJJC,IAII,QAJJA,IAII;EACJ,IAAIC,MAAM,GAAGxC,EAAE,CAACmB,OAAH,CAAWsB,UAAX,CAAsBJ,OAAtB,CAAb;EAEA,IAAI,CAACG,MAAL,EAAa,MAAM,IAAIE,KAAJ,oCAAsCL,OAAtC,EAAN;;EAEb,IAAIG,MAAM,CAACG,MAAP,CAAcH,MAAM,CAACI,MAAP,GAAgB,CAA9B,MAAqC,GAAzC,EAA8C;IAC5CJ,MAAM,IAAI,GAAV;EACD;;EACDA,MAAM,IAAIF,OAAV;;EACA,IAAIC,IAAJ,EAAU;IACRC,MAAM,IAAID,IAAV;EACD;;EAED,OAAOC,MAAP;AACD,CArBD;AAuBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,IAAMK,OAAO,GAAG,SAAVA,OAAU,QASV;EAAA,IARJR,OAQI,SARJA,OAQI;EAAA,IAPJC,OAOI,SAPJA,OAOI;EAAA,IANJQ,MAMI,SANJA,MAMI;EAAA,IALJP,IAKI,SALJA,IAKI;EAAA,IAJJQ,KAII,SAJJA,KAII;EAAA,IAHJC,IAGI,SAHJA,IAGI;EAAA,IAFJhC,WAEI,SAFJA,WAEI;EAAA,0BADJH,OACI;EAAA,IADJA,OACI,8BADM,IACN;;EACJ,IAAI,EAAEb,EAAE,CAACiB,aAAH,KAAqBjB,EAAE,CAACc,cAAH,IAAqBd,EAAE,CAACoB,SAA7C,CAAF,CAAJ,EAAgE;IAC9D,MAAM,IAAIsB,KAAJ,CAAU,iBAAV,CAAN;EACD;;EACD,IAAI1C,EAAE,CAACiD,UAAP,EAAmB;IACjBjD,EAAE,CAACiD,UAAH,CAAcC,OAAd;EACD;;EACD,IAAwBC,OAAxB,GAAoCnD,EAAE,CAACmB,OAAvC,CAAQiC,cAAR;EACA,IAAMC,GAAG,GAAGjB,YAAY,CAAC;IAAEC,OAAO,EAAPA,OAAF;IAAWE,IAAI,EAAJA,IAAX;IAAiBD,OAAO,EAAPA;EAAjB,CAAD,CAAxB;EACA,OAAOvB,UAAU,CAACC,WAAD,EAAcH,OAAd,CAAV,CAAiCgB,IAAjC,CAAsC,UAAAjB,OAAO;IAAA,OAClDT,IAAI,CAAC;MAAE2C,MAAM,EAANA,MAAF;MAAUO,GAAG,EAAHA,GAAV;MAAeN,KAAK,EAALA,KAAf;MAAsBC,IAAI,EAAJA,IAAtB;MAA4BpC,OAAO,EAAPA,OAA5B;MAAqCuC,OAAO,EAAPA;IAArC,CAAD,CAAJ,CAAqDG,KAArD,CAA2D,UAAAC,KAAK,EAAI;MAClE,IAAIC,SAAS,GAAG;QACdC,IAAI,EAAEF,KAAK,CAACE,IAAN,IAAc,CAAC,CADP;QAEdF,KAAK,EAAEA,KAAK,CAACG,OAAN,IAAiBH,KAAK,CAACI;MAFhB,CAAhB;;MAIA,IAAIJ,KAAK,CAACK,QAAN,IAAkBL,KAAK,CAACK,QAAN,CAAeH,IAArC,EAA2C;QACzCD,SAAS,GAAGD,KAAK,CAACK,QAAlB;MACD,CAFD,MAEO,IAAIL,KAAK,CAACI,YAAV,EAAwB;QAC7B,IAAI;UACFH,SAAS,GAAGK,IAAI,CAACC,KAAL,CAAWP,KAAK,CAACI,YAAjB,CAAZ;QACD,CAFD,CAEE,OAAOI,CAAP,EAAU,CACV;QACD;MACF;;MACDP,SAAS,CAACQ,UAAV,GAAuBR,SAAS,CAACQ,UAAV,IAAwBR,SAAS,CAACD,KAAzD;;MACA,IAAI,CAACvD,EAAE,CAAC0B,aAAH,CAAiBuC,mBAAtB,EAA2C;QAAA;;QACzCT,SAAS,CAACD,KAAV,kFAAwBA,KAAK,CAACW,UAAN,IAAoB,KAA5C,wBAAqDpB,MAArD,wBAA+DO,GAA/D;MACD,CAjBiE,CAkBlE;MACA;;;MACA,IAAMc,GAAG,GAAG,IAAIlE,OAAJ,CAAYuD,SAAS,CAACC,IAAtB,EAA4BD,SAAS,CAACD,KAAtC,CAAZ;MACA,OAAOC,SAAS,CAACD,KAAjB;MACA,MAAM3D,CAAC,CAACG,MAAF,CAASoE,GAAT,EAAcX,SAAd,CAAN;IACD,CAvBD,CADkD;EAAA,CAA7C,CAAP;AA0BD,CA5CD,C,CA8CA;;;AACA,IAAMY,QAAQ,GAAG,SAAXA,QAAW,CACfC,KADe,EAEfC,SAFe,EAGfC,QAHe,EAIfzB,MAJe,EAKfE,IALe,EAMfhC,WANe,EAOf+B,KAPe,EAQZ;EACH,IAAIR,IAAI,GAAG,EAAX;EACA,IAAI8B,KAAJ,EAAW9B,IAAI,eAAQ8B,KAAR,CAAJ;EACX,IAAIC,SAAJ,EAAe/B,IAAI,eAAQ+B,SAAR,CAAJ;EACf,IAAIC,QAAJ,EAAchC,IAAI,eAAQgC,QAAR,CAAJ,CAJX,CAKH;;EACA,IAAIvB,IAAI,IAAIA,IAAI,CAACwB,cAAjB,EACE,MAAM,IAAI9B,KAAJ,CAAU,uCAAV,CAAN;EACF,IAAIM,IAAI,IAAIA,IAAI,CAACyB,MAAjB,EAAyB,MAAM,IAAI/B,KAAJ,CAAU,+BAAV,CAAN;;EACzB,IAAII,MAAM,IAAIA,MAAM,CAAC4B,WAAP,OAAyB,KAAvC,EAA8C;IAC5C3B,KAAK,GAAGhD,MAAM,CAAC,EAAD,EAAKgD,KAAL,EAAYC,IAAZ,CAAd;IACAA,IAAI,GAAG,IAAP;EACD;;EACD,OAAOH,OAAO,CAAC;IACbC,MAAM,EAANA,MADa;IAEbP,IAAI,EAAJA,IAFa;IAGbQ,KAAK,EAALA,KAHa;IAIbC,IAAI,EAAJA,IAJa;IAKbhC,WAAW,EAAXA;EALa,CAAD,CAAd;AAOD,CA5BD;;AA8BAhB,EAAE,CAAC6C,OAAH,GAAaA,OAAb;AAEA8B,MAAM,CAACC,OAAP,GAAiB;EACfR,QAAQ,EAARA,QADe;EAEfvB,OAAO,EAAPA;AAFe,CAAjB,C;;;;;;;AChMA;AAAA;AAAwC;AACL;;AAEnC,iBAAiB,sEAAS;;AAE1B;AACA;AACA,eAAe,uDAAI,aAAa,uDAAI;AACpC;AACA;AACA;AACA;AACA;;AAEe,mEAAU,EAAC;;;;;;;;ACd1B;AAAoD;;AAEpD;AACe,qIAAe,UAAU,EAAC;;;;;;;;;;;;;;;;;;ACHzC,IAAMjD,CAAC,GAAGC,mBAAO,CAAC,CAAD,CAAjB,C,CAEA;;;AACA,IAAMgF,iBAAiB,GAAG,SAApBA,iBAAoB,CAAAC,CAAC;EAAA,OAAIlF,CAAC,CAACmF,MAAF,CAASD,CAAT,KAAelF,CAAC,CAACoF,WAAF,CAAcF,CAAd,CAAnB;AAAA,CAA3B;;AAEA,IAAMG,WAAW,GAAG,SAAdA,WAAc,CAAAC,MAAM,EAAI;EAC5B,IAAItF,CAAC,CAACuF,OAAF,CAAUD,MAAV,CAAJ,EAAuB;IACrB,OAAOA,MAAP;EACD;;EACD,IAAIA,MAAM,KAAKE,SAAX,IAAwBF,MAAM,KAAK,IAAvC,EAA6C;IAC3C,OAAO,EAAP;EACD;;EACD,OAAO,CAACA,MAAD,CAAP;AACD,CARD;;AAUA,IAAMG,qBAAqB,GAAG,SAAxBA,qBAAwB,GAAwC;EAAA,+EAAP,EAAO;EAAA,IAArCC,IAAqC;EAAA,IAA/BC,OAA+B,QAA/BA,OAA+B;EAAA,IAAtBC,UAAsB,QAAtBA,UAAsB;;EACpE,IAAMC,YAAY,GAAG,EAArB;;EACA,IAAIH,IAAJ,EAAU;IACRG,YAAY,CAACH,IAAb,GAAoBL,WAAW,CAACK,IAAD,CAAX,CAAkBI,IAAlB,CAAuB,GAAvB,CAApB;EACD;;EACD,IAAIH,OAAJ,EAAa;IACXE,YAAY,CAACF,OAAb,GAAuBN,WAAW,CAACM,OAAD,CAAX,CAAqBG,IAArB,CAA0B,GAA1B,CAAvB;EACD;;EACD,IAAIF,UAAJ,EAAgB;IACdC,YAAY,CAACE,SAAb,GAAyBH,UAAzB;EACD;;EACD,OAAOC,YAAP;AACD,CAZD;;AAcA,IAAMvF,eAAe,GAAG,SAAlBA,eAAkB,CAAAc,WAAW,EAAI;EACrC,IAAIA,WAAW,CAACc,YAAhB,EAA8B;IAC5B,OAAOd,WAAW,CAACc,YAAnB;EACD;;EACD,IACEd,WAAW,CAAC4E,IAAZ,IACA,OAAO5E,WAAW,CAAC4E,IAAZ,CAAiB1F,eAAxB,KAA4C,UAF9C,EAGE;IACA,OAAOc,WAAW,CAAC4E,IAAZ,CAAiB1F,eAAjB,EAAP;EACD;AACF,CAVD;;AAYA,IAAM2F,GAAG,GAAG,SAANA,GAAM,CAAAC,WAAW;EAAA,OAAI,UAAAC,KAAK;IAAA,OAAKD,WAAW,CAACC,KAAD,CAAX,EAAoBA,KAAzB;EAAA,CAAT;AAAA,CAAvB,C,CAEA;;;AACA,IAAMC,gBAAgB,GAAG,SAAnBA,gBAAmB,GAAW,CAAE,CAAtC,C,CAEA;AACA;AACA;;;AACA,IAAMC,QAAQ,GAAG,SAASA,QAAT,CAAkBC,MAAlB,EAA0BC,UAA1B,EAAsCC,WAAtC,EAAmD;EAClE,IAAIC,KAAJ,CADkE,CAGlE;EACA;EACA;;EACA,IAAIF,UAAU,IAAIA,UAAU,CAACG,cAAX,CAA0B,aAA1B,CAAlB,EAA4D;IAC1DD,KAAK,GAAGF,UAAU,CAACI,WAAnB;EACD,CAFD,MAEO;IACL;IACAF,KAAK,GAAG,iBAAW;MACjBH,MAAM,CAACM,KAAP,CAAa,IAAb,EAAmBC,SAAnB;IACD,CAFD;EAGD,CAbiE,CAelE;;;EACA7G,CAAC,CAACG,MAAF,CAASsG,KAAT,EAAgBH,MAAhB,EAhBkE,CAkBlE;EACA;;;EACAF,gBAAgB,CAACU,SAAjB,GAA6BR,MAAM,CAACQ,SAApC;EACAL,KAAK,CAACK,SAAN,GAAkB,IAAIV,gBAAJ,EAAlB,CArBkE,CAuBlE;EACA;;EACA,IAAIG,UAAJ,EAAgB;IACdvG,CAAC,CAACG,MAAF,CAASsG,KAAK,CAACK,SAAf,EAA0BP,UAA1B;EACD,CA3BiE,CA6BlE;;;EACA,IAAIC,WAAJ,EAAiB;IACfxG,CAAC,CAACG,MAAF,CAASsG,KAAT,EAAgBD,WAAhB;EACD,CAhCiE,CAkClE;;;EACAC,KAAK,CAACK,SAAN,CAAgBH,WAAhB,GAA8BF,KAA9B,CAnCkE,CAqClE;EACA;;EACAA,KAAK,CAACM,SAAN,GAAkBT,MAAM,CAACQ,SAAzB;EAEA,OAAOL,KAAP;AACD,CA1CD,C,CA4CA;AACA;;;AACA,IAAMO,SAAS,GACb,OAAOC,EAAP,KAAc,WAAd,GACI,UAAAC,OAAO;EAAA,OAAI,IAAItG,IAAJ,CAASsG,OAAT,CAAJ;AAAA,CADX,GAEI,UAAAA,OAAO;EAAA,OAAI,IAAItG,IAAJ,CAASA,IAAI,CAACsD,KAAL,CAAWgD,OAAX,CAAT,CAAJ;AAAA,CAHb;;AAKA,IAAMC,QAAQ,GAAG,SAAXA,QAAW,CAAC7B,MAAD,EAAS7E,GAAT,EAAc0F,KAAd,EAAwB;EACvC;EACA,IAAMiB,IAAI,GAAG3G,GAAG,CAAC4G,KAAJ,CAAU,GAAV,CAAb;EACA,IAAMC,OAAO,GAAGF,IAAI,CAACG,GAAL,EAAhB;EACA,IAAIC,aAAa,GAAGlC,MAApB;EACA8B,IAAI,CAACK,OAAL,CAAa,UAAAC,GAAG,EAAI;IAClB,IAAIF,aAAa,CAACE,GAAD,CAAb,KAAuBlC,SAA3B,EAAsCgC,aAAa,CAACE,GAAD,CAAb,GAAqB,EAArB;IACtCF,aAAa,GAAGA,aAAa,CAACE,GAAD,CAA7B;EACD,CAHD;EAIAF,aAAa,CAACF,OAAD,CAAb,GAAyBnB,KAAzB;EACA,OAAOb,MAAP;AACD,CAXD;;AAaA,IAAMqC,SAAS,GAAG,SAAZA,SAAY,CAACrC,MAAD,EAAS7E,GAAT,EAAiB;EACjC,IAAM2G,IAAI,GAAG3G,GAAG,CAAC4G,KAAJ,CAAU,GAAV,CAAb;EACA,IAAMO,QAAQ,GAAGR,IAAI,CAAC,CAAD,CAArB;EACA,IAAME,OAAO,GAAGF,IAAI,CAACG,GAAL,EAAhB;EACA,IAAIC,aAAa,GAAGlC,MAApB;;EACA,KAAK,IAAIuC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGT,IAAI,CAACpE,MAAzB,EAAiC6E,CAAC,EAAlC,EAAsC;IACpCL,aAAa,GAAGA,aAAa,CAACJ,IAAI,CAACS,CAAD,CAAL,CAA7B;;IACA,IAAIL,aAAa,KAAKhC,SAAtB,EAAiC;MAC/B,OAAO,CAACA,SAAD,EAAYA,SAAZ,EAAuB8B,OAAvB,CAAP;IACD;EACF;;EACD,IAAMnB,KAAK,GAAGqB,aAAa,CAACF,OAAD,CAA3B;EACA,OAAO,CAACnB,KAAD,EAAQqB,aAAR,EAAuBF,OAAvB,EAAgCM,QAAhC,CAAP;AACD,CAbD;;AAeA,IAAME,aAAa,GAAG,SAAhBA,aAAgB,CAAAC,GAAG;EAAA,OACvB/H,CAAC,CAACgI,QAAF,CAAWD,GAAX,KAAmB,6BAAsBA,GAAtB,MAA+BE,MAAM,CAACnB,SADlC;AAAA,CAAzB;;AAGA,IAAMoB,aAAa,GAAG,SAAhBA,aAAgB,CAASC,SAAT,EAAoBC,aAApB,EAAmC;EACvD,IAAID,SAAS,EAAb,EAAiB;IACf,OAAOC,aAAa,GAAGnG,IAAhB,CAAqB,YAAW;MACrC,OAAOiG,aAAa,CAACC,SAAD,EAAYC,aAAZ,CAApB;IACD,CAFM,CAAP;EAGD;;EACD,OAAO,iBAAQpG,OAAR,EAAP;AACD,CAPD;;AASA+C,MAAM,CAACC,OAAP,GAAiB;EACfC,iBAAiB,EAAjBA,iBADe;EAEfI,WAAW,EAAXA,WAFe;EAGfI,qBAAqB,EAArBA,qBAHe;EAIfnF,eAAe,EAAfA,eAJe;EAKf2F,GAAG,EAAHA,GALe;EAMfI,QAAQ,EAARA,QANe;EAOfW,SAAS,EAATA,SAPe;EAQfG,QAAQ,EAARA,QARe;EASfQ,SAAS,EAATA,SATe;EAUfG,aAAa,EAAbA,aAVe;EAWfI,aAAa,EAAbA;AAXe,CAAjB,C;;;;;;AC5IA,iBAAiB,mBAAO,CAAC,GAAqC,E;;;;;;ACA9D,iBAAiB,mBAAO,CAAC,CAA0B;AACnD,kBAAkB,mBAAO,CAAC,EAA4B;;AAEtD;;AAEA;AACA;AACA;AACA;AACA;;;;;;;ACTA;;;;;;;ACAA,kBAAkB,mBAAO,CAAC,EAA0B;AACpD,qBAAqB,mBAAO,CAAC,GAA6B;AAC1D,8BAA8B,mBAAO,CAAC,GAAsC;AAC5E,eAAe,mBAAO,CAAC,EAAwB;AAC/C,oBAAoB,mBAAO,CAAC,EAA8B;;AAE1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,GAAG,gBAAgB;AACnB;AACA;AACA;AACA;;;;;;;AC1CA;AACA,oBAAoB,mBAAO,CAAC,GAA6B;AACzD,6BAA6B,mBAAO,CAAC,GAAuC;;AAE5E;AACA;AACA;;;;;;;ACNA,iBAAiB,mBAAO,CAAC,GAAoC,E;;;;;;ACA7D,6BAA6B,mBAAO,CAAC,GAAuC;;AAE5E;;AAEA;AACA;AACA;AACA;AACA;;;;;;;ACRA,kBAAkB,mBAAO,CAAC,EAA0B;AACpD,2BAA2B,mBAAO,CAAC,EAAqC;AACxE,+BAA+B,mBAAO,CAAC,EAAyC;;AAEhF;AACA;AACA,CAAC;AACD;AACA;AACA;;;;;;;;ACTA;AAAA;AAA6C;;AAE7C;AACe;AACf,wBAAwB,iEAAc;AACtC;;;;;;;ACLA,WAAW,mBAAO,CAAC,EAAmB;;AAEtC;AACA;AACA;;;;;;;ACJA,iBAAiB,mBAAO,CAAC,GAAkC,E;;;;;;;;;;;;;;;ACA3D,IAAMlI,CAAC,GAAGC,mBAAO,CAAC,CAAD,CAAjB;AAEA;AACA;AACA;;;AAEA,SAASI,OAAT,CAAiBwD,IAAjB,EAAuBC,OAAvB,EAAgC;EAC9B,oBADOzD,OACP,8BAAgB;IACd,IAAMsD,KAAK,GAAG,IAAIb,KAAJ,CAAUgB,OAAV,CAAd;IACA,6BAAsBH,KAAtB,EAA6B,6BAAsB,IAAtB,CAA7B;IACAA,KAAK,CAACE,IAAN,GAAaA,IAAb;IACA,OAAOF,KAAP;EACD;;EACD,OAAO,IAAItD,OAAJ,CAAYwD,IAAZ,EAAkBC,OAAlB,CAAP;AACD;;AAEDzD,OAAO,CAACyG,SAAR,GAAoBmB,MAAM,CAACI,MAAP,CAAcvF,KAAK,CAACgE,SAApB,EAA+B;EACjDH,WAAW,EAAE;IACXR,KAAK,EAAErD,KADI;IAEXwF,UAAU,EAAE,KAFD;IAGXC,QAAQ,EAAE,IAHC;IAIXC,YAAY,EAAE;EAJH;AADoC,CAA/B,CAApB;AASA,6BAAsBnI,OAAtB,EAA+ByC,KAA/B;;AAEA9C,CAAC,CAACG,MAAF,CACEE,OADF;AAEE;AAAuB;EACrB;AACJ;AACA;AACA;EACIoI,WAAW,EAAE,CAAC,CALO;;EAOrB;AACJ;AACA;AACA;AACA;EACIC,qBAAqB,EAAE,CAZF;;EAcrB;AACJ;AACA;AACA;EACIC,iBAAiB,EAAE,GAlBE;;EAoBrB;AACJ;AACA;AACA;EACIC,gBAAgB,EAAE,GAxBG;;EA0BrB;AACJ;AACA;AACA;AACA;EACIC,aAAa,EAAE,GA/BM;;EAiCrB;AACJ;AACA;AACA;AACA;AACA;EACIC,kBAAkB,EAAE,GAvCC;;EAyCrB;AACJ;AACA;AACA;EACIC,iBAAiB,EAAE,GA7CE;;EA+CrB;AACJ;AACA;AACA;AACA;EACIC,gBAAgB,EAAE,GApDG;;EAsDrB;AACJ;AACA;AACA;AACA;EACIC,eAAe,EAAE,GA3DI;;EA6DrB;AACJ;AACA;AACA;AACA;AACA;EACIC,YAAY,EAAE,GAnEO;;EAqErB;AACJ;AACA;AACA;AACA;EACIC,mBAAmB,EAAE,GA1EA;;EA4ErB;AACJ;AACA;AACA;EACIC,eAAe,EAAE,GAhFI;;EAkFrB;AACJ;AACA;AACA;EACIC,cAAc,EAAE,GAtFK;;EAwFrB;AACJ;AACA;AACA;AACA;AACA;EACIC,oBAAoB,EAAE,GA9FD;;EAgGrB;AACJ;AACA;AACA;EACIC,kBAAkB,EAAE,GApGC;;EAsGrB;AACJ;AACA;AACA;EACIC,gBAAgB,EAAE,GA1GG;;EA4GrB;AACJ;AACA;AACA;EACIC,mBAAmB,EAAE,GAhHA;;EAkHrB;AACJ;AACA;AACA;EACIC,UAAU,EAAE,GAtHS;;EAwHrB;AACJ;AACA;AACA;AACA;EACIC,kBAAkB,EAAE,GA7HC;;EA+HrB;AACJ;AACA;AACA;AACA;AACA;EACIC,iBAAiB,EAAE,GArIE;;EAuIrB;AACJ;AACA;AACA;EACIC,WAAW,EAAE,GA3IQ;;EA6IrB;AACJ;AACA;AACA;AACA;EACIC,OAAO,EAAE,GAlJY;;EAoJrB;AACJ;AACA;AACA;EACIC,qBAAqB,EAAE,GAxJF;;EA0JrB;AACJ;AACA;AACA;EACIC,oBAAoB,EAAE,GA9JD;;EAgKrB;AACJ;AACA;AACA;EACIC,sBAAsB,EAAE,GApKH;;EAsKrB;AACJ;AACA;AACA;EACIC,sBAAsB,EAAE,GA1KH;;EA4KrB;AACJ;AACA;AACA;EACIC,cAAc,EAAE,GAhLK;;EAkLrB;AACJ;AACA;AACA;EACIC,eAAe,EAAE,GAtLI;;EAwLrB;AACJ;AACA;AACA;EACIC,iBAAiB,EAAE,GA5LE;;EA8LrB;AACJ;AACA;AACA;AACA;EACIC,eAAe,EAAE,GAnMI;;EAqMrB;AACJ;AACA;AACA;EACIC,iBAAiB,EAAE,GAzME;;EA2MrB;AACJ;AACA;AACA;AACA;EACIC,cAAc,EAAE,GAhNK;;EAkNrB;AACJ;AACA;AACA;EACIC,aAAa,EAAE,GAtNM;;EAwNrB;AACJ;AACA;AACA;EACIC,gBAAgB,EAAE,GA5NG;;EA8NrB;AACJ;AACA;AACA;EACIC,kBAAkB,EAAE,GAlOC;;EAoOrB;AACJ;AACA;AACA;EACIC,kBAAkB,EAAE,GAxOC;;EA0OrB;AACJ;AACA;AACA;EACIC,uBAAuB,EAAE,GA9OJ;;EAgPrB;AACJ;AACA;AACA;EACIC,gBAAgB,EAAE,GApPG;;EAsPrB;AACJ;AACA;AACA;EACIC,gBAAgB,EAAE,GA1PG;;EA4PrB;AACJ;AACA;AACA;EACIC,cAAc,EAAE,GAhQK;;EAkQrB;AACJ;AACA;AACA;EACIC,WAAW,EAAE,GAtQQ;;EAwQrB;AACJ;AACA;AACA;EACIC,aAAa,EAAE,GA5QM;;EA8QrB;AACJ;AACA;AACA;EACIC,eAAe,EAAE,GAlRI;;EAoRrB;AACJ;AACA;AACA;AACA;EACIC,eAAe,EAAE,GAzRI;;EA2RrB;AACJ;AACA;AACA;EACIC,+BAA+B,EAAE,GA/RZ;;EAiSrB;AACJ;AACA;AACA;AACA;EACIC,sBAAsB,EAAE,GAtSH;;EAwSrB;AACJ;AACA;AACA;AACA;EACIC,iBAAiB,EAAE,GA7SE;;EA+SrB;AACJ;AACA;AACA;AACA;EACIC,sBAAsB,EAAE,GApTH;;EAsTrB;AACJ;AACA;AACA;AACA;EACIC,mBAAmB,EAAE,GA3TA;;EA4TrB;AACJ;AACA;AACA;AACA;AACA;AACA;EACIC,gBAAgB,EAAE;AAnUG,CAFzB;;AAyUA3G,MAAM,CAACC,OAAP,GAAiB3E,OAAjB,C;;;;;;ACpWA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACPA,eAAe,mBAAO,CAAC,GAAwB;;AAE/C;AACA;AACA;AACA;AACA;;;;;;;ACNA,kCAAkC,mBAAO,CAAC,EAA6C;;AAEvF;AACA;AACA;AACA;AACA;;;;;;;;ACNa;AACb,gBAAgB,mBAAO,CAAC,EAAyB;;AAEjD;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;AClBA;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,iBAAiB,mBAAO,CAAC,GAAmC,E;;;;;;ACA5D;AACA,iBAAiB,mBAAO,CAAC,EAAgC;AACzD,YAAY,mBAAO,CAAC,CAAoB;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;ACZD,kBAAkB,mBAAO,CAAC,CAAoC;AAC9D,gBAAgB,mBAAO,CAAC,EAAyB;AACjD,kBAAkB,mBAAO,CAAC,EAAmC;;AAE7D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACZA;AACA,eAAe,mBAAO,CAAC,EAAwB;AAC/C,6BAA6B,mBAAO,CAAC,GAAuC;AAC5E,kBAAkB,mBAAO,CAAC,GAA4B;AACtD,iBAAiB,mBAAO,CAAC,EAA0B;AACnD,WAAW,mBAAO,CAAC,GAAmB;AACtC,4BAA4B,mBAAO,CAAC,GAAsC;AAC1E,gBAAgB,mBAAO,CAAC,EAAyB;;AAEjD;AACA;AACA;AACA;AACA;;AAEA,oCAAoC;;AAEpC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;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,GAAG,gBAAgB;AACnB;AACA;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;;;;;;AClFA;;;;;;;ACAA,4BAA4B,mBAAO,CAAC,GAAoC;AACxE,iBAAiB,mBAAO,CAAC,CAA0B;AACnD,iBAAiB,mBAAO,CAAC,EAA0B;AACnD,sBAAsB,mBAAO,CAAC,CAAgC;;AAE9D;AACA;;AAEA;AACA,gDAAgD,kBAAkB,EAAE;;AAEpE;AACA;AACA;AACA;AACA,GAAG,gBAAgB;AACnB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC5BA,4BAA4B,mBAAO,CAAC,GAAoC;AACxE,qBAAqB,mBAAO,CAAC,EAAqC;AAClE,kCAAkC,mBAAO,CAAC,EAA6C;AACvF,aAAa,mBAAO,CAAC,EAA+B;AACpD,eAAe,mBAAO,CAAC,GAA+B;AACtD,sBAAsB,mBAAO,CAAC,CAAgC;;AAE9D;;AAEA;AACA;AACA;AACA;AACA,6CAA6C,iCAAiC;AAC9E;AACA;AACA;AACA;AACA;AACA;;;;;;;ACnBA,aAAa,mBAAO,CAAC,CAAqB;;AAE1C;;;;;;;;ACFA;AAAA;AAA6B;;AAE7B;AACe;AACf,cAAc,iEAAI;AAClB;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;;;;;;;;ACXA;AAAA;AAAA;AAAA;AAAA;AAAwC;AACI;AACT;AACQ;;AAE3C;AACe;AACf;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,2BAA2B,sEAAS,QAAQ,YAAY;AACxD;AACA,QAAQ,wEAAW,YAAY,oEAAO,WAAW,wEAAW;AAC5D;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;;;;;;;AC9BA;AAAA;AAAA;AAAA;AAA0B;AACkB;AACf;;AAE7B;AACe;AACf,aAAa,+DAAE;AACf,eAAe,wEAAW,SAAS,iEAAI;AACvC;AACA;AACA,qBAAqB,gBAAgB;AACrC;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;ACfA,IAAML,CAAC,GAAGC,mBAAO,CAAC,CAAD,CAAjB;;AACA,IAAM0L,IAAI,GAAG1L,mBAAO,CAAC,GAAD,CAApB;;AACA,IAAM2L,KAAK,GAAG3L,mBAAO,CAAC,EAAD,CAArB;;AACA,eAAgCA,mBAAO,CAAC,EAAD,CAAvC;AAAA,IAAQoG,QAAR,YAAQA,QAAR;AAAA,IAAkBW,SAAlB,YAAkBA,SAAlB;;AACA,IAAMtE,OAAO,GAAGzC,mBAAO,CAAC,GAAD,CAAvB;;AACA,gBAAwCA,mBAAO,CAAC,EAAD,CAA/C;AAAA,IAAQ4L,WAAR,aAAQA,WAAR;AAAA,IAAqBC,cAArB,aAAqBA,cAArB;;AAEA,IAAM1L,EAAE,GAAG2L,MAAM,CAAC3L,EAAP,IAAa,EAAxB,C,CAEA;;AACAA,EAAE,CAACmB,OAAH,GAAa;EACXsB,UAAU,EAAE,EADD;EAEXvB,YAAY,EAAE,KAFH;EAGXM,UAAU,EAAE,IAHD;EAIXoK,QAAQ,EAAE,IAJC;EAKXxI,cAAc,EAAE;AALL,CAAb;AAQA,IAAMyI,gBAAgB,8BAAuBvJ,OAAvB,CAAtB,C,CAEA;;AACAtC,EAAE,CAAC0B,aAAH,GAAmB;EACjBC,SAAS,EAAEkK,gBADM;EAEjBC,iBAAiB,EAAE;AAFF,CAAnB;AAKAJ,cAAc,CAACK,EAAf,CAAkB,cAAlB,EAAkC,UAAAC,YAAY,EAAI;EAChD,IAAIC,EAAE,GAAGJ,gBAAT;;EACA,IAAIG,YAAJ,EAAkB;IAChB,IAAIA,YAAY,CAACrK,SAAjB,EAA4B;MAC1BsK,EAAE,GAAGD,YAAY,CAACrK,SAAlB;IACD,CAFD,MAEO;MACL,IAAIuK,QAAQ,GAAGF,YAAY,CAACG,IAA5B;;MACA,IAAIH,YAAY,CAAC1J,OAAjB,EAA0B;QACxB4J,QAAQ,eAAQF,YAAY,CAAC1J,OAArB,CAAR;MACD;;MACD,IAAI0J,YAAY,CAACI,KAAjB,EAAwB;QACtBF,QAAQ,gBAASF,YAAY,CAACI,KAAtB,CAAR;MACD;;MACDH,EAAE,gBAASC,QAAT,MAAF;IACD;EACF;;EACDlM,EAAE,CAAC0B,aAAH,CAAiBC,SAAjB,GAA6BsK,EAA7B;AACD,CAjBD;AAmBA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AACAjM,EAAE,CAACqM,UAAH,GAAgB,UAAS9J,IAAT,EAAe;EAC7B,IAAI,CAACvC,EAAE,CAACiB,aAAR,EAAuB;IACrB,MAAM,IAAIyB,KAAJ,CAAU,iDAAV,CAAN;EACD;;EACD,IAAI,CAACH,IAAL,EAAW;IACTA,IAAI,GAAG,EAAP;EACD;;EACD,IAAI,CAAC3C,CAAC,CAAC0M,QAAF,CAAW/J,IAAX,CAAL,EAAuB;IACrB,MAAM,IAAIG,KAAJ,CAAU,wDAAV,CAAN;EACD;;EACD,IAAIH,IAAI,CAAC,CAAD,CAAJ,KAAY,GAAhB,EAAqB;IACnBA,IAAI,GAAGA,IAAI,CAACgK,SAAL,CAAe,CAAf,CAAP;EACD;;EACD,OAAO,QAAQvM,EAAE,CAACiB,aAAX,GAA2B,GAA3B,GAAiCsB,IAAxC;AACD,CAdD;AAgBA;AACA;AACA;AACA;AACA;;;AACAvC,EAAE,CAACwM,eAAH,GAAqB,IAArB;;AACAxM,EAAE,CAACyM,kBAAH,GAAwB,YAAM;EAC5B;EACA,IAAIzM,EAAE,CAACwM,eAAP,EAAwB;IACtB,OAAO,iBAAQ5K,OAAR,CAAgB5B,EAAE,CAACwM,eAAnB,CAAP;EACD,CAJ2B,CAM5B;;;EACA,IAAMjK,IAAI,GAAGvC,EAAE,CAACqM,UAAH,CAAc,gBAAd,CAAb;;EACA,OAAOrM,EAAE,CAAC0M,YAAH,CAAgBC,YAAhB,CAA6BpK,IAA7B,EAAmCV,IAAnC,CAAwC,UAAA2K,eAAe,EAAI;IAChExM,EAAE,CAACwM,eAAH,GAAqBA,eAArB;;IACA,IAAI,CAACxM,EAAE,CAACwM,eAAR,EAAyB;MACvB;MACAxM,EAAE,CAACwM,eAAH,GAAqBA,eAAe,GAAGjB,IAAI,EAA3C;MACA,OAAOvL,EAAE,CAAC0M,YAAH,CACJE,YADI,CACSrK,IADT,EACeiK,eADf,EAEJ3K,IAFI,CAEC;QAAA,OAAM2K,eAAN;MAAA,CAFD,CAAP;IAGD;;IACD,OAAOA,eAAP;EACD,CAVM,CAAP;AAWD,CAnBD;;AAqBAxM,EAAE,CAAC6M,eAAH,GAAqB,IAArB;;AACA7M,EAAE,CAAC8M,sBAAH,GAA4B,YAA4C;EAAA,IAA3CvK,IAA2C,uEAApCvC,EAAE,CAACqM,UAAH,CAAc,gBAAd,CAAoC;EACtE,IAAMU,cAAc,GAAI/M,EAAE,CAAC6M,eAAH,GAAqBtB,IAAI,EAAjD;EACA,OAAOvL,EAAE,CAAC0M,YAAH,CACJE,YADI,CACSrK,IADT,EACewK,cADf,EAEJlL,IAFI,CAEC;IAAA,OAAMkL,cAAN;EAAA,CAFD,CAAP;AAGD,CALD;;AAMA/M,EAAE,CAACgN,kBAAH,GAAwB,YAAM;EAC5B;EACA,IAAIhN,EAAE,CAAC6M,eAAP,EAAwB;IACtB,OAAO,iBAAQjL,OAAR,CAAgB5B,EAAE,CAAC6M,eAAnB,CAAP;EACD,CAJ2B,CAM5B;;;EACA,IAAMtK,IAAI,GAAGvC,EAAE,CAACqM,UAAH,CAAc,gBAAd,CAAb;;EACA,OAAOrM,EAAE,CAAC0M,YAAH,CAAgBC,YAAhB,CAA6BpK,IAA7B,EAAmCV,IAAnC,CAAwC,UAAAgL,eAAe,EAAI;IAChE7M,EAAE,CAAC6M,eAAH,GAAqBA,eAArB;;IACA,IAAI,CAAC7M,EAAE,CAAC6M,eAAR,EAAyB;MACvB;MACAA,eAAe,GAAG7M,EAAE,CAAC8M,sBAAH,CAA0BvK,IAA1B,CAAlB;IACD;;IACD,OAAOsK,eAAP;EACD,CAPM,CAAP;AAQD,CAhBD;;AAkBA7M,EAAE,CAACiN,UAAH,GAAgBrG,SAAhB,C,CAEA;;AACA5G,EAAE,CAACkN,OAAH,GAAa,UAAS/G,UAAT,EAAqBgH,UAArB,EAAiC;EAC5C,IAAI9G,KAAK,GAAGJ,QAAQ,CAAC,IAAD,EAAOE,UAAP,EAAmBgH,UAAnB,CAApB;EACA9G,KAAK,CAACtG,MAAN,GAAe,KAAKA,MAApB;EACA,OAAOsG,KAAP;AACD,CAJD;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACArG,EAAE,CAACoN,OAAH,GAAa,UAASrH,KAAT,EAAgBsH,WAAhB,EAA6BC,eAA7B,EAA2D;EAAA,IAAbC,IAAa,uEAAN,IAAM;;EACtE,IAAIxH,KAAK,YAAY/F,EAAE,CAAC6H,MAAxB,EAAgC;IAC9B,IAAIyF,eAAJ,EAAqB;MACnB,MAAM,IAAI5K,KAAJ,CAAU,6BAAV,CAAN;IACD;;IACD,IAAI,CAAC2K,WAAD,IAAgBzN,CAAC,CAAC2F,OAAF,CAAU8H,WAAV,EAAuBtH,KAAvB,CAAhB,IAAiD,CAACA,KAAK,CAACyH,QAA5D,EAAsE;MACpE,OAAOzH,KAAK,CAAC0H,UAAN,EAAP;IACD;;IACD,OAAO1H,KAAK,CAAC2H,WAAN,CAAkB,qBAAAL,WAAW,MAAX,CAAAA,WAAW,EAAQtH,KAAR,CAA7B,EAA6CwH,IAA7C,CAAP;EACD;;EACD,IAAIxH,KAAK,YAAY/F,EAAE,CAAC2N,GAAxB,EAA6B;IAC3B,OAAO5H,KAAK,CAAC6H,MAAN,EAAP;EACD;;EACD,IAAIhO,CAAC,CAACiO,MAAF,CAAS9H,KAAT,CAAJ,EAAqB;IACnB,OAAOwH,IAAI,GAAG;MAAEO,MAAM,EAAE,MAAV;MAAkBC,GAAG,EAAEhI,KAAK,CAAC6H,MAAN;IAAvB,CAAH,GAA6C7H,KAAK,CAAC6H,MAAN,EAAxD;EACD;;EACD,IAAI7H,KAAK,YAAY/F,EAAE,CAACgO,QAAxB,EAAkC;IAChC,OAAOjI,KAAK,CAAC6H,MAAN,EAAP;EACD;;EACD,IAAIhO,CAAC,CAACuF,OAAF,CAAUY,KAAV,CAAJ,EAAsB;IACpB,OAAO,kBAAAnG,CAAC,MAAD,CAAAA,CAAC,EAAKmG,KAAL,EAAY,UAASjB,CAAT,EAAY;MAC9B,OAAO9E,EAAE,CAACoN,OAAH,CAAWtI,CAAX,EAAcuI,WAAd,EAA2BC,eAA3B,EAA4CC,IAA5C,CAAP;IACD,CAFO,CAAR;EAGD;;EACD,IAAI3N,CAAC,CAACqO,QAAF,CAAWlI,KAAX,CAAJ,EAAuB;IACrB,OAAOA,KAAK,CAACmI,MAAb;EACD;;EACD,IAAInI,KAAK,YAAY/F,EAAE,CAACmO,QAAxB,EAAkC;IAChC,OAAOpI,KAAK,CAAC6H,MAAN,EAAP;EACD;;EACD,IAAI7H,KAAK,YAAY/F,EAAE,CAACoO,EAAxB,EAA4B;IAC1B,OAAOrI,KAAK,CAAC6H,MAAN,EAAP;EACD;;EACD,IAAI7H,KAAK,YAAY/F,EAAE,CAACqO,IAAxB,EAA8B;IAC5B,IAAI,CAACtI,KAAK,CAAC1C,GAAN,EAAD,IAAgB,CAAC0C,KAAK,CAACuI,EAA3B,EAA+B;MAC7B,MAAM,IAAI5L,KAAJ,CAAU,qDAAV,CAAN;IACD;;IACD,OAAOqD,KAAK,CAAC2H,WAAN,CAAkBL,WAAlB,EAA+BE,IAA/B,CAAP;EACD;;EACD,IAAI3N,CAAC,CAACgI,QAAF,CAAW7B,KAAX,CAAJ,EAAuB;IACrB,OAAOnG,CAAC,CAAC2O,SAAF,CAAYxI,KAAZ,EAAmB,UAACyI,CAAD,EAAIC,CAAJ;MAAA,OACxBzO,EAAE,CAACoN,OAAH,CAAWoB,CAAX,EAAcnB,WAAd,EAA2BC,eAA3B,EAA4CC,IAA5C,CADwB;IAAA,CAAnB,CAAP;EAGD;;EACD,OAAOxH,KAAP;AACD,CA7CD;AA+CA;AACA;AACA;AACA;;;AACA/F,EAAE,CAAC0O,OAAH,GAAa,UAAS3I,KAAT,EAAgB1F,GAAhB,EAAqB;EAChC,IAAI,CAACT,CAAC,CAACgI,QAAF,CAAW7B,KAAX,CAAD,IAAsBnG,CAAC,CAACiO,MAAF,CAAS9H,KAAT,CAA1B,EAA2C;IACzC,OAAOA,KAAP;EACD;;EACD,IAAInG,CAAC,CAACuF,OAAF,CAAUY,KAAV,CAAJ,EAAsB;IACpB,OAAO,kBAAAnG,CAAC,MAAD,CAAAA,CAAC,EAAKmG,KAAL,EAAY,UAAAyI,CAAC;MAAA,OAAIxO,EAAE,CAAC0O,OAAH,CAAWF,CAAX,CAAJ;IAAA,CAAb,CAAR;EACD;;EACD,IAAIzI,KAAK,YAAY/F,EAAE,CAAC6H,MAAxB,EAAgC;IAC9B,OAAO9B,KAAP;EACD;;EACD,IAAIA,KAAK,YAAY/F,EAAE,CAACqO,IAAxB,EAA8B;IAC5B,OAAOtI,KAAP;EACD;;EACD,IAAIA,KAAK,YAAY/F,EAAE,CAACoO,EAAxB,EAA4B;IAC1B,OAAOrI,KAAP;EACD;;EACD,IAAIA,KAAK,YAAY/F,EAAE,CAACgO,QAAxB,EAAkC;IAChC,OAAOjI,KAAP;EACD;;EACD,IAAIA,KAAK,YAAY/F,EAAE,CAAC2N,GAAxB,EAA6B;IAC3B,OAAO5H,KAAP;EACD;;EACD,IAAI1F,GAAG,KAAK,KAAZ,EAAmB;IACjB,OAAO,IAAIL,EAAE,CAAC2N,GAAP,CAAW5H,KAAX,CAAP;EACD;;EACD,IAAIA,KAAK,CAAC4I,IAAV,EAAgB;IACd,OAAO3O,EAAE,CAACoO,EAAH,CAAMM,OAAN,CAAc3I,KAAd,CAAP;EACD;;EACD,IAAIzB,SAAJ;;EACA,IAAIyB,KAAK,CAAC+H,MAAN,KAAiB,SAArB,EAAgC;IAC9BxJ,SAAS,GAAGyB,KAAK,CAACzB,SAAlB;;IACA,IAAIsK,OAAO,GAAG5O,EAAE,CAAC6H,MAAH,CAAUgH,OAAV,CAAkBvK,SAAlB,CAAd;;IACA,IAAI,mBAAYyB,KAAZ,EAAmBnD,MAAnB,GAA4B,CAAhC,EAAmC;MACjC,IAAM4L,CAAC,GAAG5O,CAAC,CAACkP,KAAF,CAAQ/I,KAAR,CAAV;;MACA,OAAOyI,CAAC,CAACV,MAAT;MACA,OAAOU,CAAC,CAAClK,SAAT;;MACAsK,OAAO,CAACG,YAAR,CAAqBP,CAArB,EAAwB,IAAxB;IACD,CALD,MAKO;MACLI,OAAO,CAACG,YAAR,CAAqB;QAAExK,QAAQ,EAAEwB,KAAK,CAACxB;MAAlB,CAArB,EAAmD,KAAnD;IACD;;IACD,OAAOqK,OAAP;EACD;;EACD,IAAI7I,KAAK,CAAC+H,MAAN,KAAiB,QAArB,EAA+B;IAC7B;IACAxJ,SAAS,GAAGyB,KAAK,CAACzB,SAAlB;;IACA,IAAMkK,EAAC,GAAG5O,CAAC,CAACkP,KAAF,CAAQ/I,KAAR,CAAV;;IACA,OAAOyI,EAAC,CAACV,MAAT;IACA,OAAOU,EAAC,CAAClK,SAAT;;IACA,IAAI0K,MAAM,GAAGhP,EAAE,CAAC6H,MAAH,CAAUgH,OAAV,CAAkBvK,SAAlB,CAAb;;IACA0K,MAAM,CAACD,YAAP,CAAoBP,EAApB,EAAuB,IAAvB;;IACA,OAAOQ,MAAP;EACD;;EACD,IAAIjJ,KAAK,CAAC+H,MAAN,KAAiB,MAArB,EAA6B;IAC3B,OAAO9N,EAAE,CAACiN,UAAH,CAAclH,KAAK,CAACgI,GAApB,CAAP;EACD;;EACD,IAAIhI,KAAK,CAAC+H,MAAN,KAAiB,UAArB,EAAiC;IAC/B,OAAO,IAAI9N,EAAE,CAACgO,QAAP,CAAgB;MACrBiB,QAAQ,EAAElJ,KAAK,CAACkJ,QADK;MAErBC,SAAS,EAAEnJ,KAAK,CAACmJ;IAFI,CAAhB,CAAP;EAID;;EACD,IAAInJ,KAAK,CAAC+H,MAAN,KAAiB,UAArB,EAAiC;IAC/B,IAAI,CAACzN,GAAL,EAAU,MAAM,IAAIqC,KAAJ,CAAU,iCAAV,CAAN;IACV,IAAIyM,QAAQ,GAAG,IAAInP,EAAE,CAACmO,QAAP,CAAgB,IAAhB,EAAsB9N,GAAtB,CAAf;IACA8O,QAAQ,CAACC,eAAT,GAA2BrJ,KAAK,CAACzB,SAAjC;IACA,OAAO6K,QAAP;EACD;;EACD,IAAIpJ,KAAK,CAAC+H,MAAN,KAAiB,MAArB,EAA6B;IAC3B,IAAIuB,IAAI,GAAG,IAAIrP,EAAE,CAACqO,IAAP,CAAYtI,KAAK,CAACoG,IAAlB,CAAX;;IACA,IAAMqC,GAAC,GAAG5O,CAAC,CAACkP,KAAF,CAAQ/I,KAAR,CAAV;;IACA,OAAOyI,GAAC,CAACV,MAAT;;IACAuB,IAAI,CAACN,YAAL,CAAkBP,GAAlB;;IACA,OAAOa,IAAP;EACD;;EACD,OAAOzP,CAAC,CAAC2O,SAAF,CAAYxI,KAAZ,EAAmB/F,EAAE,CAAC0O,OAAtB,CAAP;AACD,CA3ED;AA6EA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA1O,EAAE,CAACsP,SAAH,GAAetP,EAAE,CAAC0O,OAAlB;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA1O,EAAE,CAAC8D,KAAH,GAAW,UAAAyL,IAAI;EAAA,OAAIvP,EAAE,CAACsP,SAAH,CAAazL,IAAI,CAACC,KAAL,CAAWyL,IAAX,CAAb,CAAJ;AAAA,CAAf;AACA;AACA;AACA;AACA;AACA;AACA;;;AACAvP,EAAE,CAACwP,SAAH,GAAe,UAAAtK,MAAM;EAAA,OAAI,wBAAelF,EAAE,CAACoN,OAAH,CAAWlI,MAAX,EAAmB,EAAnB,EAAuB,KAAvB,EAA8B,IAA9B,CAAf,CAAJ;AAAA,CAArB;;AAEAlF,EAAE,CAACyP,oBAAH,GAA0B,UAAS1J,KAAT,EAAgB;EACxC,IAAI2J,cAAc,GAAG,SAAjBA,cAAiB,CAASV,MAAT,EAAiB;IACpC,IAAIA,MAAM,IAAIA,MAAM,CAACtB,WAArB,EAAkC;MAChCsB,MAAM,GAAGA,MAAM,CAACtB,WAAP,CAAmB,EAAnB,CAAT;IACD;;IAED,OAAO9N,CAAC,CAAC2O,SAAF,CAAYS,MAAZ,EAAoB,UAASjJ,KAAT,EAAgB;MACzC,OAAO/F,EAAE,CAACoN,OAAH,CAAWrH,KAAX,EAAkB,EAAlB,CAAP;IACD,CAFM,CAAP;EAGD,CARD;;EAUA,IAAInG,CAAC,CAACuF,OAAF,CAAUY,KAAV,CAAJ,EAAsB;IACpB,OAAO,kBAAAA,KAAK,MAAL,CAAAA,KAAK,EAAK,UAASiJ,MAAT,EAAiB;MAChC,OAAOU,cAAc,CAACV,MAAD,CAArB;IACD,CAFW,CAAZ;EAGD,CAJD,MAIO;IACL,OAAOU,cAAc,CAAC3J,KAAD,CAArB;EACD;AACF,CAlBD;;AAoBA/F,EAAE,CAAC2P,UAAH,GAAgB/P,CAAC,CAACgQ,IAAlB;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA5P,EAAE,CAAC6P,SAAH,GAAe,UAASb,MAAT,EAAiBc,IAAjB,EAAuBC,IAAvB,EAA6B;EAC1C,IAAIf,MAAM,YAAYhP,EAAE,CAAC6H,MAAzB,EAAiC;IAC/BkI,IAAI,GAAGA,IAAI,IAAI,EAAf;;IACA,IAAI,sBAAAnQ,CAAC,MAAD,CAAAA,CAAC,EAASmQ,IAAT,EAAef,MAAf,CAAD,IAA2B,CAA/B,EAAkC;MAChC;MACA;IACD;;IACDe,IAAI,CAACC,IAAL,CAAUhB,MAAV;;IACAhP,EAAE,CAAC6P,SAAH,CAAab,MAAM,CAACiB,UAApB,EAAgCH,IAAhC,EAAsCC,IAAtC;;IACA,OAAOD,IAAI,CAACd,MAAD,CAAX;EACD;;EACD,IAAIA,MAAM,YAAYhP,EAAE,CAACmO,QAArB,IAAiCa,MAAM,YAAYhP,EAAE,CAACqO,IAA1D,EAAgE;IAC9D;IACA;IACA,OAAOyB,IAAI,CAACd,MAAD,CAAX;EACD;;EACD,IAAIpP,CAAC,CAACuF,OAAF,CAAU6J,MAAV,CAAJ,EAAuB;IACrBpP,CAAC,CAACgQ,IAAF,CAAOZ,MAAP,EAAe,UAAS3I,KAAT,EAAgB6J,KAAhB,EAAuB;MACpC,IAAIC,QAAQ,GAAGnQ,EAAE,CAAC6P,SAAH,CAAaxJ,KAAb,EAAoByJ,IAApB,EAA0BC,IAA1B,CAAf;;MACA,IAAII,QAAJ,EAAc;QACZnB,MAAM,CAACkB,KAAD,CAAN,GAAgBC,QAAhB;MACD;IACF,CALD;;IAMA,OAAOL,IAAI,CAACd,MAAD,CAAX;EACD;;EACD,IAAIpP,CAAC,CAACgI,QAAF,CAAWoH,MAAX,CAAJ,EAAwB;IACtBhP,EAAE,CAACoQ,KAAH,CAASpB,MAAT,EAAiB,UAAS3I,KAAT,EAAgBhG,GAAhB,EAAqB;MACpC,IAAI8P,QAAQ,GAAGnQ,EAAE,CAAC6P,SAAH,CAAaxJ,KAAb,EAAoByJ,IAApB,EAA0BC,IAA1B,CAAf;;MACA,IAAII,QAAJ,EAAc;QACZnB,MAAM,CAAC3O,GAAD,CAAN,GAAc8P,QAAd;MACD;IACF,CALD;;IAMA,OAAOL,IAAI,CAACd,MAAD,CAAX;EACD;;EACD,OAAOc,IAAI,CAACd,MAAD,CAAX;AACD,CAnCD;AAqCA;AACA;AACA;AACA;AACA;AACA;;;AACAhP,EAAE,CAACqQ,WAAH,GAAiBrQ,EAAE,CAACoQ,KAAH,GAAW,UAASzI,GAAT,EAAc2I,QAAd,EAAwB;EAClD,IAAI1Q,CAAC,CAACgI,QAAF,CAAWD,GAAX,CAAJ,EAAqB;IACnB/H,CAAC,CAACgQ,IAAF,CAAO,oBAAAhQ,CAAC,MAAD,CAAAA,CAAC,EAAM+H,GAAN,CAAR,EAAoB,UAAStH,GAAT,EAAc;MAChCiQ,QAAQ,CAAC3I,GAAG,CAACtH,GAAD,CAAJ,EAAWA,GAAX,CAAR;IACD,CAFD;EAGD,CAJD,MAIO;IACLT,CAAC,CAACgQ,IAAF,CAAOjI,GAAP,EAAY2I,QAAZ;EACD;AACF,CARD;AAUA;AACA;AACA;AACA;;;AACAtQ,EAAE,CAACwL,KAAH,GAAW;EACT;AACF;AACA;EACE+E,MAAM,EAAE;IAAA,IAACC,UAAD,uEAAc,YAAd;IAAA,OAA+BhF,KAAK,CAAC+E,MAAN,CAAaC,UAAb,CAA/B;EAAA,CAJC;;EAKT;AACF;AACA;EACEC,OAAO,EAAEjF,KAAK,CAACiF;AARN,CAAX;AAWA;AACA;AACA;AACA;AACA;AACA;;AACAzQ,EAAE,CAACyL,WAAH,GAAiBA,WAAjB;AAEA9G,MAAM,CAACC,OAAP,GAAiB5E,EAAjB,C;;;;;;;;ACpZa;;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;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,OAAO;AACnB;AACA;;;AAGA;AACA;;AAEA;AACA;AACA,GAAG,iBAAiB;AACpB;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,GAAG,gBAAgB;AACnB;AACA;AACA;;AAEA,iBAAiB,mBAAO,CAAC,GAAU;AACnC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;;;;;;;;;;;;;;AClLA,IAAMJ,CAAC,GAAGC,mBAAO,CAAC,CAAD,CAAjB;;AACA,IAAM6Q,YAAY,GAAG7Q,mBAAO,CAAC,GAAD,CAA5B;;AACA,eAAqBA,mBAAO,CAAC,EAAD,CAA5B;AAAA,IAAQoG,QAAR,YAAQA,QAAR;;AAEA,IAAM0K,cAAc,GAAG1K,QAAQ,CAACyK,YAAD,EAAe;EAC5CnK,WAD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A;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACsC;AACwB;;AAE9D;AACA;AACA;AACA;;AAEA;AACA;AACoD;AACJ;AACU;AACJ;AACA;AACF;AACA;AACJ;AACI;AACF;AACE;AACU;AACN;AACN;AACM;AACE;AACN;AACN;AACc;AACV;AACA;AACA;AACJ;AACQ;AACR;AACQ;;AAEtD;AAC4C;AACM;AACF;AACF;AACE;AAEM;AACN;AAEM;AACF;AACJ;AACF;AACJ;AACA;AACA;AACY;;AAEtD;AACA;AACA;AACA;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,kB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D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACZA,oBAAoB,mBAAO,CAAC,EAA6B;AACzD,kBAAkB,mBAAO,CAAC,EAA4B;;AAEtD;;AAEA;AACA;AACA;AACA;AACA;;;;;;;ACTA,aAAa,mBAAO,CAAC,CAAqB;AAC1C,YAAY,mBAAO,CAAC,EAA6B;AACjD,WAAW,mBAAO,CAAC,EAAoC;AACvD,iBAAiB,mBAAO,CAAC,CAA0B;AACnD,aAAa,mBAAO,CAAC,EAA+B;AACpD,YAAY,mBAAO,CAAC,CAAoB;AACxC,WAAW,mBAAO,CAAC,GAAmB;AACtC,iBAAiB,mBAAO,CAAC,EAA0B;AACnD,oBAAoB,mBAAO,CAAC,GAAsC;AAClE,8BAA8B,mBAAO,CAAC,GAAwC;AAC9E,aAAa,mBAAO,CAAC,GAA4B;AACjD,cAAc,mBAAO,CAAC,GAA6B;;AAEnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC,gBAAgB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;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,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;ACnHA,gBAAgB,mBAAO,CAAC,EAAgC;;AAExD;;;;;;;ACFA,+BAA+B,mBAAO,CAAC,EAAyC;AAChF,kCAAkC,mBAAO,CAAC,GAA6C;AACvF,iCAAiC,mBAAO,CAAC,EAA4C;;AAErF;AACA,sEAAsE,cAAc;AACpF,CAAC;;;;;;;ACND,sBAA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ACA;AACA;AACA,sEAAsE;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,KAAK,+FAA+F;AACpG;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;;;;;ACvEA,UAAU,mBAAO,CAAC,GAAW;AAC7B,kBAAkB,mBAAO,CAAC,GAAmB;;AAE7C;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,oBAAoB,SAAS;AAC7B;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;AC5BA,iBAAiB,mBAAO,CAAC,GAA6C,E;;;;;;ACAtE,aAAa,mBAAO,CAAC,GAAkC;;AAEvD;;;;;;;;;;ACFAwE,MAAM,CAACC,OAAP,GAAiB,QAAjB,C;;;;;;;ACAa;;AAEb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,2DAA2D,YAAY;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,cAAc;AACzB,aAAa,aAAa;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI,IAA6B;AACjC;AACA;;;;;;;;;;;;;;ACtTA,eAAqB/E,mBAAO,CAAC,EAAD,CAA5B;AAAA,IAAMgR,UAAN,YAAMA,UAAN;;AAEA,IAAImB,YAAY,GAAG,CAAC,SAAD,EAAY,SAAZ,EAAuB,YAAvB,EAAqC,OAArC,CAAnB;AAEA,IAAMtF,YA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O,CAAC,EAAsB;AAC5C,YAAY,mBAAO,CAAC,GAAoB;AACxC,0BAA0B,mBAAO,CAAC,EAA6B;AAC/D,+BAA+B,mBAAO,CAAC,EAAyC;AAChF,kCAAkC,mBAAO,CAAC,EAA4C;AACtF,iCAAiC,mBAAO,CAAC,EAAqC;;AAE9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,eAAe;AAClB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA,GAAG;AACH,oBAAoB,cAAc;AAClC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,OAAO,GAAG,eAAe;AACzB;;AAEA;AACA;AACA;AACA,KAAK,gBAAgB;;AAErB;AACA;AACA;AACA;AACA;AACA;;AAEA,GAAG,kFAAkF;AACrF;AACA,CAAC;;AAED;AACA;;;;;;;;AC/Ra;AACb,iBAAiB,mBAAO,CAAC,EAA2B;AACpD,2BAA2B,mBAAO,CAAC,EAAqC;AACxE,sBAAsB,mBAAO,CAAC,CAAgC;AAC9D,kBAAkB,mBAAO,CAAC,EAA0B;;AAEpD;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,wBAAwB,aAAa;AACrC,KAAK;AACL;AACA;;;;;;;AClBA,oBAAoB,mBAAO,CAAC,EAAqC;;AAEjE;;AAEA;AACA;AACA;AACA;;;;;;;ACPA;;AAEA;AACA;AACA;AACA;;;;;;;ACLA,aAAa,mBAAO,CAAC,CAAqB;AAC1C,WAAW,mBAAO,CAAC,EAAoC;AACvD,+BAA+B,mBAAO,CAAC,EAAiD;AACxF,gBAAgB,mBAAO,CAAC,GAAmB;AAC3C,aAAa,mBAAO,CAAC,GAA4B;AACjD,oBAAoB,mBAAO,CAAC,GAAmC;AAC/D,sBAAsB,mBAAO,CAAC,GAAqC;AACnE,cAAc,mBAAO,CAAC,GAA6B;;AAEnD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,+CAA+C,sBAAsB;AACrE;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA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AACA;AACA,GAAG;AACH,eAAe;;AAEf;AACA;AACA;AACA,GAAG;AACH;AACA,0BAA0B,EAAE,iBAAiB;AAC7C;AACA;;AAEA;AACA,sBAAsB,8BAA8B;AACpD,yBAAyB;;AAEzB;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA,mCAAmC,+DAAC;AACpC;;AAEA;AACA,gDAAgD,iBAAiB;;AAEjE;AACA;;;;;;;;AC5FA;AAAA;AAAA;AAAyC;AACP;;AAElC;AACA;AACA;AACe;AACf,SAAS,mEAAM;AACf;AACA;AACA,WAAW,uEAAU;AACrB;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA,iBAAiB;AACjB;AACA,UAAU,uEAAU;AACpB;AACA;AACA;;;;;;;;ACrBA;AAAA;AACA;AACA;AACe;AACf;AACA;AACA;;;;;;;;ACNA;AAAA;AAAgC;;AAEhC;AACe;AACf,iBAAiB,uEAAC;AAClB;AACA;AACA;;;;;;;;ACPA;AAAA;AAAA;AAA+C;AACX;AACP;;AAE7B;AACA;AACA;AACe,mIAAa;AAC5B,SAAS,oEAAO;AAChB;AACA;AACA;AACA;AACA,eAAe,iEAAI;AACnB;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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CA,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;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;AACA,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;ACjKA,mBAAO,CAAC,GAA0C;AAClD,WAAW,mBAAO,CAAC,EAAsB;;AAEzC;;;;;;;ACHA,QAAQ,mBAAO,CAAC,CAAqB;AACrC,YAAY,mBAAO,CAAC,CAAoB;AACxC,eAAe,mBAAO,CAAC,EAAwB;AAC/C,2BAA2B,mBAAO,CAAC,EAAsC;AACzE,+BAA+B,mBAAO,CAAC,GAAuC;;AAE9E,6CAA6C,yBAAyB,EAAE;;AAExE;AACA;AACA,GAAG,6FAA6F;AAChG;AACA;AACA;AACA,CAAC;;;;;;;;ACdD,iBAAiB,mBAAO,CAAC,GAA6C,E;;;;;;ACAtE,mBAAO,CAAC,GAA0C;AAClD,WAAW,mBAAO,CAAC,EAAsB;;AAEzC;;;;;;;ACHA,QAAQ,mBAAO,CAAC,CAAqB;AACrC,qBAAqB,mBAAO,CAAC,EAAsC;;AAEnE;AACA;AACA,GAAG,+BAA+B;AAClC;AACA,CAAC;;;;;;;;;;;;;;;;;;ACPD,IAAMA,EAAE,GAAGH,mBAAO,CAAC,EAAD,CAAlB;;AACA,IAAMoT,SAAS,GAAGpT,mBAAO,CAAC,GAAD,CAAzB;;AACA,eAA8BA,mBAAO,CAAC,EAAD,CAArC;AAAA,IAAQgF,iBAAR,YAAQA,iBAAR;;AACA,gBAAsChF,mBAAO,CAAC,CAAD,CAA7C;AAAA,IAAQE,MAAR,aAAQA,MAAR;AAAA,IAAgB6H,QAAhB,aAAgBA,QAAhB;AAAA,IAA0BsL,OAA1B,aAA0BA,OAA1B;;AAEA,IAAMC,OAAO,GAAG,SAAVA,OAAU,CAAAC,KAAK;EAAA,OAAI,oBAAAA,KAAK,MAAL,CAAAA,KAAK,EAAO,CAAC,CAAR,CAAL,KAAoB,WAAxB;AAAA,CAArB;;AAEA,IAAMC,cAAc,GAAG,SAAjBA,cAAiB,CAAAhQ,GAAG;EAAA,OAAK;IAC7B2M,IAAI,EAAE3M,GADuB;IAE7BiQ,KAAK,EAAEjQ,GAFsB;IAG7BkQ,MAAM,EAAElQ,GAHqB;IAI7BmQ,GAAG,EAAEnQ,GAJwB;IAK7BoQ,GAAG,EAAEpQ;EALwB,CAAL;AAAA,CAA1B;;AAQA,SAASqQ,oBAAT,CAA8BN,KAA9B,EAAqC;EAAA;;EACnC,IAAID,OAAO,CAACC,KAAD,CAAX,EAAoB;IAClB,OAAO,EAAP;EACD;;EACD,IAAM9E,EAAE,GAAG,oBAAA8E,KAAK,MAAL,CAAAA,KAAK,EAAO,CAAP,EAAU,CAAV,CAAL,CAAkB1O,WAAlB,EAAX;EACA,IAAMiP,MAAM,GAAG,iBAAf;EACA,OAAO;IACL3D,IAAI,oDAAa1B,EAAb,4BAAwBqF,MAAxB,CADC;IAELL,KAAK,qDAAahF,EAAb,8BAAyBqF,MAAzB,CAFA;IAGLJ,MAAM,qDAAajF,EAAb,+BAA0BqF,MAA1B,CAHD;IAILH,GAAG,qDAAalF,EAAb,4BAAuBqF,MAAvB,CAJE;IAKLF,GAAG,qDAAanF,EAAb,4BAAuBqF,MAAvB;EALE,CAAP;AAOD;;AAED,IAAIC,iBAAiB,GAAG,KAAxB;AACA,IAAIC,YAAY,GAAG,KAAnB;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA7T,EAAE,CAAC8T,IAAH,GAAU,SAASA,IAAT,CAAcC,OAAd,EAAkC;EAC1C,IAAI,CAACnM,QAAQ,CAACmM,OAAD,CAAb,EAAwB;IACtB,OAAO/T,EAAE,CAAC8T,IAAH,CAAQ;MACbV,KAAK,EAAEW,OADM;MAEbC,MAAM,kDAFO;MAGb5S,SAAS;IAHI,CAAR,CAAP;EAKD;;EACD,IACEgS,KADF,GAUIW,OAVJ,CACEX,KADF;EAAA,IAEEY,MAFF,GAUID,OAVJ,CAEEC,MAFF;EAAA,IAGE5S,SAHF,GAUI2S,OAVJ,CAGE3S,SAHF;EAAA,IAIEG,OAJF,GAUIwS,OAVJ,CAIExS,OAJF;EAAA,IAKE0S,SALF,GAUIF,OAVJ,CAKEE,SALF;EAAA,0BAUIF,OAVJ,CAMEtR,UANF;EAAA,IAMEA,UANF,oCAMewR,SANf;EAAA,IAOElS,kBAPF,GAUIgS,OAVJ,CAOEhS,kBAPF;EAAA,IAQEP,UARF,GAUIuS,OAVJ,CAQEvS,UARF;EAAA,IASEoK,QATF,GAUImI,OAVJ,CASEnI,QATF;EAWA,IAAIiI,YAAJ,EACExS,OAAO,CAACC,IAAR,CACE,kLADF;EAGF,IAAI,CAAC8R,KAAL,EAAY,MAAM,IAAIc,SAAJ,CAAc,wBAAd,CAAN;EACZ,IAAI,CAACF,MAAL,EAAa,MAAM,IAAIE,SAAJ,CAAc,yBAAd,CAAN;EACb,IAAI,cAAyB,SAAzB,IAAsC9S,SAA1C,EACEC,OAAO,CAACC,IAAR,CAAa,sDAAb;;EACF,IAAI6R,OAAO,CAACC,KAAD,CAAX,EAAoB;IAClB,IAAI,CAAC3Q,UAAD,IAAeyQ,OAAO,CAAClT,EAAE,CAACmB,OAAH,CAAWsB,UAAZ,CAA1B,EAAmD;MACjD,MAAM,IAAIyR,SAAJ,wDAAN;IAGD;EACF;;EACD,IAAId,KAAK,KAAKpT,EAAE,CAACmB,OAAH,CAAWF,aAAzB,EAAwC;IACtC;IACAjB,EAAE,CAACmB,OAAH,CAAWC,SAAX,GAAuBA,SAAvB;IACApB,EAAE,CAACmB,OAAH,CAAWI,OAAX,GAAqBA,OAArB;EACD,CAJD,MAIO;IACL,IAAIH,SAAJ,EAAepB,EAAE,CAACmB,OAAH,CAAWC,SAAX,GAAuBA,SAAvB;IACf,IAAIG,OAAJ,EAAavB,EAAE,CAACmB,OAAH,CAAWI,OAAX,GAAqBA,OAArB;EACd;;EACDvB,EAAE,CAACmB,OAAH,CAAWF,aAAX,GAA2BmS,KAA3B;EACApT,EAAE,CAACmB,OAAH,CAAWL,cAAX,GAA4BkT,MAA5B;;EACA,IAAI,CAACnP,iBAAiB,CAACrD,UAAD,CAAtB,EAAoC;IAClCxB,EAAE,CAACmU,aAAH,CAAiB3S,UAAjB;EACD;;EACD,IAAI,OAAOO,kBAAP,KAA8B,WAAlC,EACE/B,EAAE,CAACmB,OAAH,CAAWY,kBAAX,GAAgCA,kBAAhC;EACF,IAAMqS,gBAAgB,GACpBR,iBAAiB,IAAI,OAAOnR,UAAP,KAAsB,WAD7C;;EAEA,IAAI,CAAC2R,gBAAL,EAAuB;IACrBpU,EAAE,CAACiD,UAAH,GAAgB,IAAIgQ,SAAJ,CAAcjT,EAAd,CAAhB;EACD;;EACDA,EAAE,CAACqU,cAAH,CACEtU,MAAM,CACJ,EADI,EAEJ2T,oBAAoB,CAACN,KAAD,CAFhB,EAGJpT,EAAE,CAACmB,OAAH,CAAWsB,UAHP,EAIJ,OAAOA,UAAP,KAAsB,QAAtB,GAAiC4Q,cAAc,CAAC5Q,UAAD,CAA/C,GAA8DA,UAJ1D,CADR,EAOE2R,gBAPF;;EASA,IAAIxI,QAAJ,EAAc;IACZ5L,EAAE,CAACmB,OAAH,CAAWyK,QAAX,GAAsBA,QAAtB;EACD,CAFD,MAEO,IAAI5L,EAAE,CAAC0B,aAAH,CAAiBoK,iBAArB,EAAwC;IAC7C,4BAAqB9L,EAAE,CAACmB,OAAH,CAAWsB,UAAhC;IAAA,IAAQ+Q,GAAR,yBAAQA,GAAR;IAAA,IAAaC,GAAb,yBAAaA,GAAb;IACAzT,EAAE,CAACmB,OAAH,CAAWyK,QAAX,GAAsB,IAAI5L,EAAE,CAAC0B,aAAH,CAAiBoK,iBAArB,CAAuC;MAC3DsH,KAAK,EAALA,KAD2D;MAE3DY,MAAM,EAANA,MAF2D;MAG3DM,MAAM,EAAE;QACNd,GAAG,EAAHA,GADM;QAENe,SAAS,EAAEd;MAFL;IAHmD,CAAvC,CAAtB;EAQD;;EACDI,YAAY,GAAG,IAAf;AACD,CA7ED,C,CA+EA;;;AACA,IAAI,cAAyB,SAA7B,EAAwC;EACtC7T,EAAE,CAACwU,KAAH,GAAWxU,EAAE,CAACwU,KAAH,IAAY,EAAvB;EACA;AACF;AACA;AACA;AACA;AACA;AACA;;EACExU,EAAE,CAACwU,KAAH,CAAStT,YAAT,GAAwB,YAAM;IAC5BlB,EAAE,CAACmB,OAAH,CAAWD,YAAX,GAA0B,IAA1B;EACD,CAFD;AAGD;AAED;AACA;AACA;AACA;AACA;AACA;;;AACAlB,EAAE,CAACmU,aAAH,GAAmB,UAAA3S,UAAU,EAAI;EAC/B,IAAI,CAACqD,iBAAiB,CAACrD,UAAD,CAAtB,EAAoC;IAClCxB,EAAE,CAACmB,OAAH,CAAWK,UAAX,GAAwBA,UAAU,GAAG,CAAH,GAAO,CAAzC;EACD,CAFD,MAEO;IACL;IACAxB,EAAE,CAACmB,OAAH,CAAWK,UAAX,GAAwB,IAAxB;EACD;AACF,CAPD;;AASAxB,EAAE,CAACqU,cAAH,GAAoB,UAACI,IAAD,EAAmC;EAAA,IAA5BL,gBAA4B,uEAAT,IAAS;;EACrD,IAAI,OAAOK,IAAP,KAAgB,QAApB,EAA8B;IAC5B1U,MAAM,CAACC,EAAE,CAACmB,OAAH,CAAWsB,UAAZ,EAAwBgS,IAAxB,CAAN;EACD,CAFD,MAEO;IACLzU,EAAE,CAACmB,OAAH,CAAWsB,UAAX,GAAwB4Q,cAAc,CAACoB,IAAD,CAAtC;EACD;;EACD,IAAIL,gBAAJ,EAAsB;IACpB,IAAIpU,EAAE,CAACiD,UAAP,EAAmB;MACjBjD,EAAE,CAACiD,UAAH,CAAcwN,OAAd;IACD,CAFD,MAEO;MACLmD,iBAAiB,GAAG,IAApB;IACD;EACF;AACF,CAbD;AAcA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA5T,EAAE,CAAC0U,YAAH,GAAkB,UAAAD,IAAI;EAAA,OAAIzU,EAAE,CAACqU,cAAH,CAAkBI,IAAlB,CAAJ;AAAA,CAAtB;;AACAzU,EAAE,CAAC2U,aAAH,GAAmB3U,EAAE,CAAC0U,YAAtB;;AAEA1U,EAAE,CAACiE,mBAAH,GAAyB,UAAA8B,KAAK,EAAI;EAChC/F,EAAE,CAAC0B,aAAH,CAAiBuC,mBAAjB,GAAuC8B,KAAvC;AACD,CAFD;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA/F,EAAE,CAAC4U,iBAAH,GAAuB,UAAAC,EAAE,EAAI;EAC3B7U,EAAE,CAACmB,OAAH,CAAWiC,cAAX,GAA4ByR,EAA5B;AACD,CAFD,C,CAIA;;;AACA7U,EAAE,CAAC8U,UAAH,GAAgB9U,EAAE,CAAC8T,IAAnB;;AAEA,IAAMiB,YAAY,GAAG,SAAfA,YAAe,CAAAC,QAAQ;EAAA,OAC3B,6BAAsBhV,EAAtB,EAA0BgV,QAA1B,EAAoC;IAClCC,GADkC,iBAC5B;MACJ,OAAOjV,EAAE,CAACmB,OAAH,CAAW6T,QAAX,CAAP;IACD,CAHiC;IAIlCE,GAJkC,eAI9BnP,KAJ8B,EAIvB;MACT/F,EAAE,CAACmB,OAAH,CAAW6T,QAAX,IAAuBjP,KAAvB;IACD;EANiC,CAApC,CAD2B;AAAA,CAA7B;;AAUA,CAAC,eAAD,EAAkB,gBAAlB,EAAoC,WAApC,EAAiD,SAAjD,EAA4DsB,OAA5D,CACE0N,YADF,E;;;;;;ACxNA,oBAAoB,mBAAO,CAAC,EAAwC;AACpE,aAAa,mBAAO,CAAC,GAAwB;;AAE7C;;AAEA;AACA;AACA;AACA;;;;;;;ACRA,mBAAO,CAAC,GAAiC;AACzC,mBAAmB,mBAAO,CAAC,EAAkC;;AAE7D;;;;;;;;ACHa;AACb,QAAQ,mBAAO,CAAC,CAAqB;AACrC,cAAc,mBAAO,CAAC,EAAuB;AAC7C,oBAAoB,mBAAO,CAAC,EAA6B;AACzD,eAAe,mBAAO,CAAC,EAAwB;AAC/C,sBAAsB,mBAAO,CAAC,GAAgC;AAC9D,wBAAwB,mBAAO,CAAC,EAAmC;AACnE,sBAAsB,mBAAO,CAAC,EAAgC;AAC9D,qBAAqB,mBAAO,CAAC,EAA8B;AAC3D,sBAAsB,mBAAO,CAAC,CAAgC;AAC9D,mCAAmC,mBAAO,CAAC,GAA+C;AAC1F,eAAe,mBAAO,CAAC,EAA0B;;AAEjD;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG,6DAA6D;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB;AACA;AACA;AACA,CAAC;;;;;;;AChDD,mBAAO,CAAC,GAAyC;AACjD,WAAW,mBAAO,CAAC,EAAsB;;AAEzC;;AAEA;AACA;AACA;;AAEA;;;;;;;ACTA,QAAQ,mBAAO,CAAC,CAAqB;AACrC,kBAAkB,mBAAO,CAAC,EAA0B;AACpD,qBAAqB,mBAAO,CAAC,EAAqC;;AAElE;AACA;AACA;AACA,GAAG,qGAAqG;AACxG;AACA,CAAC;;;;;;;;;;ACTD,IAAM5U,IAAI,GAAGN,mBAAO,CAAC,GAAD,CAApB;;AACA,IAAMkT,KAAK,GAAGlT,mBAAO,CAAC,GAAD,CAArB;;AAEA,SAASoT,SAAT,CAAmBjT,EAAnB,EAAuB;EAAA;;EACrB,KAAKA,EAAL,GAAUA,EAAV;EACA,KAAKmV,WAAL,GAAmB,CAAnB;EACApC,KAAK,CAACL,QAAN,CAAe,YAAf,EACG7Q,IADH,CACQ,UAAAmB,IAAI,EAAI;IACZ,IAAI,KAAI,CAACoS,QAAT,EAAmB;IACnB,IAAI,CAACpS,IAAL,EAAW,OAAO,KAAI,CAACqS,IAAL,CAAU,CAAV,CAAP;IACX,IAAQ5S,UAAR,GAAoCO,IAApC,CAAQP,UAAR;IAAA,IAAoB0S,WAApB,GAAoCnS,IAApC,CAAoBmS,WAApB;;IACA,KAAI,CAACnV,EAAL,CAAQqU,cAAR,CAAuB5R,UAAvB,EAAmC,KAAnC;;IACA,KAAI,CAAC0S,WAAL,GAAmBA,WAAnB;EACD,CAPH,EAQG7R,KARH,CAQS;IAAA,OAAM,KAAI,CAAC+R,IAAL,CAAU,CAAV,CAAN;EAAA,CART;AASD;;AAEDpC,SAAS,CAACvM,SAAV,CAAoB+J,OAApB,GAA8B,SAASA,OAAT,GAAmB;EAC/C,KAAK2E,QAAL,GAAgB,IAAhB;AACD,CAFD;;AAGAnC,SAAS,CAACvM,SAAV,CAAoB2O,IAApB,GAA2B,SAASA,IAAT,CAAcxC,GAAd,EAAmB;EAC5C,KAAKsC,WAAL,GAAmB3U,IAAI,CAACD,GAAL,KAAasS,GAAhC;AACD,CAFD;;AAGAI,SAAS,CAACvM,SAAV,CAAoBxD,OAApB,GAA8B,SAASA,OAAT,GAAmB;EAAA;;EAC/C,IAAI,KAAKkS,QAAT,EAAmB;EACnB,IAAI5U,IAAI,CAACD,GAAL,KAAa,KAAK4U,WAAtB,EAAmC;EACnC,KAAKE,IAAL,CAAU,EAAV;EACA,IAAMhS,GAAG,GAAG,gCAAZ;EACA,OAAOlD,IAAI,CAAC;IACV2C,MAAM,EAAE,KADE;IAEVO,GAAG,EAAHA,GAFU;IAGVN,KAAK,EAAE;MACLqQ,KAAK,EAAE,KAAKpT,EAAL,CAAQiB;IADV;EAHG,CAAD,CAAJ,CAOJY,IAPI,CAOC,UAAAyT,OAAO,EAAI;IACf,IAAI,MAAI,CAACF,QAAT,EAAmB;IACnB,IAAIvC,GAAG,GAAGyC,OAAO,CAACzC,GAAlB;IACA,IAAI,CAACA,GAAL,EAAU,MAAM,IAAInQ,KAAJ,CAAU,aAAV,CAAN;IACVmQ,GAAG,GAAGA,GAAG,GAAG,IAAZ;IACA,IAAM0C,QAAQ,GAAG,UAAjB;IACA,IAAM9S,UAAU,GAAG;MACjBuN,IAAI,EAAEuF,QAAQ,GAAGD,OAAO,CAACE,WADR;MAEjBlC,KAAK,EAAEiC,QAAQ,GAAGD,OAAO,CAACG,YAFT;MAGjBlC,MAAM,EAAEgC,QAAQ,GAAGD,OAAO,CAACI,aAHV;MAIjBlC,GAAG,EAAE+B,QAAQ,GAAGD,OAAO,CAACK;IAJP,CAAnB;;IAMA,MAAI,CAAC3V,EAAL,CAAQqU,cAAR,CAAuB5R,UAAvB,EAAmC,KAAnC;;IACA,MAAI,CAAC4S,IAAL,CAAUxC,GAAV;;IACA,OAAOE,KAAK,CAACH,QAAN,CACL,YADK,EAEL;MACEnQ,UAAU,EAAVA,UADF;MAEE0S,WAAW,EAAE,MAAI,CAACA;IAFpB,CAFK,EAMLtC,GANK,CAAP;EAQD,CA7BI,EA8BJvP,KA9BI,CA8BE,UAAAC,KAAK,EAAI;IACd;IACAlC,OAAO,CAACC,IAAR,uCAA4CiC,KAAK,CAACG,OAAlD;;IACA,MAAI,CAAC2R,IAAL,CAAU,GAAV;EACD,CAlCI,CAAP;AAmCD,CAxCD;;AA0CA1Q,MAAM,CAACC,OAAP,GAAiBqO,SAAjB,C;;;;;;ACjEA,iBAAiB,mBAAO,CAAC,GAAmB;;;;;;;ACA5C,aAAa,mBAAO,CAAC,GAAqB;AAC1C,mBAAO,CAAC,GAA2C;AACnD,mBAAO,CAAC,GAAqC;AAC7C,mBAAO,CAAC,GAAqC;AAC7C,mBAAO,CAAC,GAA0C;AAClD,mBAAO,CAAC,GAAwC;AAChD;AACA,mBAAO,CAAC,GAAsC;AAC9C,mBAAO,CAAC,GAA2C;AACnD,mBAAO,CAAC,GAAyC;;AAEjD;;;;;;;ACXA,aAAa,mBAAO,CAAC,GAAqB;;AAE1C;;;;;;;ACFA,mBAAO,CAAC,GAA+B;AACvC,mBAAO,CAAC,EAAmC;AAC3C,mBAAO,CAAC,GAAyB;AACjC,mBAAO,CAAC,GAAwC;AAChD,mBAAO,CAAC,GAAqC;AAC7C,mBAAO,CAAC,GAAsC;AAC9C,mBAAO,CAAC,GAA8C;AACtD,mBAAO,CAAC,GAAkC;AAC1C,mBAAO,CAAC,GAA+B;AACvC,mBAAO,CAAC,GAAmC;AAC3C,mBAAO,CAAC,GAAiC;AACzC,mBAAO,CAAC,GAAgC;AACxC,mBAAO,CAAC,GAAiC;AACzC,mBAAO,CAAC,GAA+B;AACvC,mBAAO,CAAC,GAAsC;AAC9C,mBAAO,CAAC,GAAuC;AAC/C,mBAAO,CAAC,GAAqC;AAC7C,mBAAO,CAAC,GAAqC;AAC7C,mBAAO,CAAC,GAAqC;AAC7C,mBAAO,CAAC,GAAwC;AAChD,WAAW,mBAAO,CAAC,EAAsB;;AAEzC;;;;;;;ACtBA;AACA,mBAAO,CAAC,GAAkC;AAC1C,mBAAO,CAAC,GAA0B;AAClC,mBAAO,CAAC,GAA8B;AACtC,mBAAO,CAAC,GAA8B;AACtC,mBAAO,CAAC,GAA+C;;;;;;;;ACL1C;AACb,QAAQ,mBAAO,CAAC,CAAqB;AACrC,aAAa,mBAAO,CAAC,CAAqB;AAC1C,WAAW,mBAAO,CAAC,EAA4B;AAC/C,kBAAkB,mBAAO,CAAC,CAAoC;AAC9D,cAAc,mBAAO,CAAC,EAAsB;AAC5C,kBAAkB,mBAAO,CAAC,EAA0B;AACpD,oBAAoB,mBAAO,CAAC,EAA4B;AACxD,YAAY,mBAAO,CAAC,CAAoB;AACxC,aAAa,mBAAO,CAAC,EAA+B;AACpD,oBAAoB,mBAAO,CAAC,EAAqC;AACjE,eAAe,mBAAO,CAAC,EAAwB;AAC/C,sBAAsB,mBAAO,CAAC,EAAgC;AAC9D,oBAAoB,mBAAO,CAAC,EAA8B;AAC1D,gBAAgB,mBAAO,CAAC,EAAwB;AAChD,+BAA+B,mBAAO,CAAC,EAAyC;AAChF,yBAAyB,mBAAO,CAAC,EAA4B;AAC7D,iBAAiB,mBAAO,CAAC,GAA0B;AACnD,gCAAgC,mBAAO,CAAC,GAA4C;AACpF,kCAAkC,mBAAO,CAAC,GAAqD;AAC/F,kCAAkC,mBAAO,CAAC,GAA8C;AACxF,qCAAqC,mBAAO,CAAC,EAAiD;AAC9F,2BAA2B,mBAAO,CAAC,EAAqC;AACxE,6BAA6B,mBAAO,CAAC,GAAuC;AAC5E,iCAAiC,mBAAO,CAAC,GAA4C;AACrF,oBAAoB,mBAAO,CAAC,EAA8B;AAC1D,aAAa,mBAAO,CAAC,EAAqB;AAC1C,gBAAgB,mBAAO,CAAC,EAAyB;AACjD,iBAAiB,mBAAO,CAAC,EAA0B;AACnD,UAAU,mBAAO,CAAC,GAAkB;AACpC,sBAAsB,mBAAO,CAAC,CAAgC;AAC9D,mCAAmC,mBAAO,CAAC,GAAwC;AACnF,4BAA4B,mBAAO,CAAC,CAAuC;AAC3E,8BAA8B,mBAAO,CAAC,GAAyC;AAC/E,qBAAqB,mBAAO,CAAC,EAAgC;AAC7D,0BAA0B,mBAAO,CAAC,EAA6B;AAC/D,eAAe,mBAAO,CAAC,GAA8B;;AAErD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,mDAAmD;AACnD,sBAAsB,yCAAyC,WAAW,IAAI;AAC9E,GAAG;AACH,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4FAA4F;AAC5F;AACA,KAAK;AACL;AACA,mDAAmD,iDAAiD;AACpG,KAAK;AACL,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8EAA8E,kCAAkC;AAChH;AACA;;AAEA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,qFAAqF,eAAe;AACpG;AACA;AACA;;AAEA,GAAG,4FAA4F;AAC/F;AACA,CAAC;;AAED;AACA;AACA,CAAC;;AAED,GAAG,qDAAqD;AACxD,0BAA0B,mBAAmB,EAAE;AAC/C,0BAA0B,oBAAoB;AAC9C,CAAC;;AAED,GAAG,2EAA2E;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,GAAG,uDAAuD;AAC1D;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;AC3PA;AACA,cAAc,mBAAO,CAAC,EAA0B;AAChD,sBAAsB,mBAAO,CAAC,EAAgC;AAC9D,2BAA2B,mBAAO,CAAC,GAA4C;AAC/E,iBAAiB,mBAAO,CAAC,GAAiC;;AAE1D;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACtBA,sBAAsB,mBAAO,CAAC,GAAgC;AAC9D,wBAAwB,mBAAO,CAAC,EAAmC;AACnE,qBAAqB,mBAAO,CAAC,EAA8B;;AAE3D;AACA;;AAEA;AA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A;;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;AACA;AACA,KAAK;;AAEL;AACA;AACA,iCAAiC,uBAAuB;AACxD;AACA;AACA,KAAK;;AAEL;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,iCAAiC,gBAAgB;AACjD;AACA;AACA,KAAK;;AAEL;AACA;AACA,kCAAkC,kBAAkB;AACpD;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;;;;;AC/FD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;A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","file":"av-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 = 236);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap f5e1032ccd19ab85d8cf","'use strict';\nvar global = require('../internals/global');\nvar apply = require('../internals/function-apply');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar isForced = require('../internals/is-forced');\nvar path = require('../internals/path');\nvar bind = require('../internals/function-bind-context');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\n\nvar wrapConstructor = function (NativeConstructor) {\n var Wrapper = function (a, b, c) {\n if (this instanceof Wrapper) {\n switch (arguments.length) {\n case 0: return new NativeConstructor();\n case 1: return new NativeConstructor(a);\n case 2: return new NativeConstructor(a, b);\n } return new NativeConstructor(a, b, c);\n } return apply(NativeConstructor, this, arguments);\n };\n Wrapper.prototype = NativeConstructor.prototype;\n return Wrapper;\n};\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.dontCallGetSet - prevent calling a getter on target\n options.name - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var PROTO = options.proto;\n\n var nativeSource = GLOBAL ? global : STATIC ? global[TARGET] : (global[TARGET] || {}).prototype;\n\n var target = GLOBAL ? path : path[TARGET] || createNonEnumerableProperty(path, TARGET, {})[TARGET];\n var targetPrototype = target.prototype;\n\n var FORCED, USE_NATIVE, VIRTUAL_PROTOTYPE;\n var key, sourceProperty, targetProperty, nativeProperty, resultProperty, descriptor;\n\n for (key in source) {\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contains in native\n USE_NATIVE = !FORCED && nativeSource && hasOwn(nativeSource, key);\n\n targetProperty = target[key];\n\n if (USE_NATIVE) if (options.dontCallGetSet) {\n descriptor = getOwnPropertyDescriptor(nativeSource, key);\n nativeProperty = descriptor && descriptor.value;\n } else nativeProperty = nativeSource[key];\n\n // export native or implementation\n sourceProperty = (USE_NATIVE && nativeProperty) ? nativeProperty : source[key];\n\n if (USE_NATIVE && typeof targetProperty == typeof sourceProperty) continue;\n\n // bind timers to global for call from export context\n if (options.bind && USE_NATIVE) resultProperty = bind(sourceProperty, global);\n // wrap global constructors for prevent changs in this version\n else if (options.wrap && USE_NATIVE) resultProperty = wrapConstructor(sourceProperty);\n // make static versions for prototype methods\n else if (PROTO && isCallable(sourceProperty)) resultProperty = uncurryThis(sourceProperty);\n // default case\n else resultProperty = sourceProperty;\n\n // add a flag to not completely full polyfills\n if (options.sham || (sourceProperty && sourceProperty.sham) || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(resultProperty, 'sham', true);\n }\n\n createNonEnumerableProperty(target, key, resultProperty);\n\n if (PROTO) {\n VIRTUAL_PROTOTYPE = TARGET + 'Prototype';\n if (!hasOwn(path, VIRTUAL_PROTOTYPE)) {\n createNonEnumerableProperty(path, VIRTUAL_PROTOTYPE, {});\n }\n // export virtual prototype methods\n createNonEnumerableProperty(path[VIRTUAL_PROTOTYPE], key, sourceProperty);\n // export real prototype methods\n if (options.real && targetPrototype && !targetPrototype[key]) {\n createNonEnumerableProperty(targetPrototype, key, sourceProperty);\n }\n }\n }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/export.js\n// module id = 0\n// module chunks = 0 1","// 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 = 1\n// module chunks = 0 1","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/helpers/interopRequireDefault.js\n// module id = 2\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 = 3\n// module chunks = 0 1","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/fails.js\n// module id = 4\n// module chunks = 0 1","var path = require('../internals/path');\nvar hasOwn = require('../internals/has-own-property');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineProperty = require('../internals/object-define-property').f;\n\nmodule.exports = function (NAME) {\n var Symbol = path.Symbol || (path.Symbol = {});\n if (!hasOwn(Symbol, NAME)) defineProperty(Symbol, NAME, {\n value: wrappedWellKnownSymbolModule.f(NAME)\n });\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/define-well-known-symbol.js\n// module id = 5\n// module chunks = 0 1","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar bind = FunctionPrototype.bind;\nvar call = FunctionPrototype.call;\nvar uncurryThis = NATIVE_BIND && bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? function (fn) {\n return fn && uncurryThis(fn);\n} : function (fn) {\n return fn && function () {\n return call.apply(fn, arguments);\n };\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/function-uncurry-this.js\n// module id = 6\n// module chunks = 0 1","// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\nmodule.exports = function (argument) {\n return typeof argument == 'function';\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/is-callable.js\n// module id = 7\n// module chunks = 0 1","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar symbolFor = Symbol && Symbol['for'];\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!hasOwn(WellKnownSymbolsStore, name) || !(NATIVE_SYMBOL || typeof WellKnownSymbolsStore[name] == 'string')) {\n var description = 'Symbol.' + name;\n if (NATIVE_SYMBOL && hasOwn(Symbol, name)) {\n WellKnownSymbolsStore[name] = Symbol[name];\n } else if (USE_SYMBOL_AS_UID && symbolFor) {\n WellKnownSymbolsStore[name] = symbolFor(description);\n } else {\n WellKnownSymbolsStore[name] = createWellKnownSymbol(description);\n }\n } return WellKnownSymbolsStore[name];\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/well-known-symbol.js\n// module id = 8\n// module chunks = 0 1","var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es-x/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/global.js\n// module id = 9\n// module chunks = 0 1","module.exports = require(\"core-js-pure/stable/promise\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js-stable/promise.js\n// module id = 10\n// module chunks = 0 1","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar call = Function.prototype.call;\n\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n return call.apply(call, arguments);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/function-call.js\n// module id = 11\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 = 12\n// module chunks = 0 1","module.exports = {};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/path.js\n// module id = 13\n// module chunks = 0 1","var uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\n// eslint-disable-next-line es-x/no-object-hasown -- safe\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty(toObject(it), key);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/has-own-property.js\n// module id = 14\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 = 15\n// module chunks = 0 1","var path = require('../internals/path');\nvar global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (variable) {\n return isCallable(variable) ? variable : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])\n : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/get-built-in.js\n// module id = 16\n// module chunks = 0 1","var isCallable = require('../internals/is-callable');\n\nmodule.exports = function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/is-object.js\n// module id = 17\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 = 18\n// module chunks = 0 1","var fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es-x/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/descriptors.js\n// module id = 19\n// module chunks = 0 1","var uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/object-is-prototype-of.js\n// module id = 20\n// module chunks = 0 1","var isObject = require('../internals/is-object');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n if (isObject(argument)) return argument;\n throw $TypeError($String(argument) + ' is not an object');\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/an-object.js\n// module id = 21\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 = 22\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 = 23\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 = 24\n// module chunks = 0 1","const _ = require('underscore');\nconst md5 = require('md5');\nconst { extend } = require('underscore');\nconst AV = require('./av');\nconst AVError = require('./error');\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 AVError(errorJSON.code, errorJSON.error);\n delete errorJSON.error;\n throw _.extend(err, errorJSON);\n })\n );\n};\n\n// lagecy request\nconst _request = (\n route,\n className,\n objectId,\n method,\n data,\n authOptions,\n query\n) => {\n let path = '';\n if (route) path += `/${route}`;\n if (className) path += `/${className}`;\n if (objectId) path += `/${objectId}`;\n // for migeration\n if (data && data._fetchWhenSave)\n throw new Error('_fetchWhenSave should be in the query');\n if (data && data._where) throw new Error('_where should be in the query');\n if (method && method.toLowerCase() === 'get') {\n query = extend({}, query, data);\n data = null;\n }\n return request({\n method,\n path,\n query,\n data,\n authOptions,\n });\n};\n\nAV.request = request;\n\nmodule.exports = {\n _request,\n request,\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/request.js","import tagTester from './_tagTester.js';\nimport { root } from './_setup.js';\n\nvar isFunction = tagTester('Function');\n\n// Optimize `isFunction` if appropriate. Work around some `typeof` bugs in old\n// v8, IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236).\nvar nodelist = root.document && root.document.childNodes;\nif (typeof /./ != 'function' && typeof Int8Array != 'object' && typeof nodelist != 'function') {\n isFunction = function(obj) {\n return typeof obj == 'function' || false;\n };\n}\n\nexport default isFunction;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/isFunction.js\n// module id = 26\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 = 27\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\n// Suppress the date string format warning in Weixin DevTools\n// Link: https://developers.weixin.qq.com/community/minihome/doc/00080c6f244718053550067736b401\nconst parseDate =\n typeof wx === 'undefined'\n ? iso8601 => new Date(iso8601)\n : iso8601 => new Date(Date.parse(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","module.exports = require(\"core-js-pure/stable/instance/concat\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js-stable/instance/concat.js\n// module id = 29\n// module chunks = 0 1","var isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n if (isCallable(argument)) return argument;\n throw $TypeError(tryToString(argument) + ' is not a function');\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/a-callable.js\n// module id = 30\n// module chunks = 0 1","module.exports = true;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/is-pure.js\n// module id = 31\n// module chunks = 0 1","var DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es-x/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n var current = $getOwnPropertyDescriptor(O, P);\n if (current && current[WRITABLE]) {\n O[P] = Attributes.value;\n Attributes = {\n configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n writable: false\n };\n }\n } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* 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-pure/internals/object-define-property.js\n// module id = 32\n// module chunks = 0 1","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/to-indexed-object.js\n// module id = 33\n// module chunks = 0 1","module.exports = require(\"core-js-pure/stable/json/stringify\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js-stable/json/stringify.js\n// module id = 34\n// module chunks = 0 1","var requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar $Object = Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return $Object(requireObjectCoercible(argument));\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/to-object.js\n// module id = 35\n// module chunks = 0 1","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(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-pure/internals/create-non-enumerable-property.js\n// module id = 36\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 = 37\n// module chunks = 0 1","var path = require('../internals/path');\n\nmodule.exports = function (CONSTRUCTOR) {\n return path[CONSTRUCTOR + 'Prototype'];\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/entry-virtual.js\n// module id = 38\n// module chunks = 0 1","module.exports = require(\"core-js-pure/stable/instance/map\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js-stable/instance/map.js\n// module id = 39\n// module chunks = 0 1","const _ = require('underscore');\n\n/**\n * @class AV.Error\n */\n\nfunction AVError(code, message) {\n if (new.target) {\n const error = new Error(message);\n Object.setPrototypeOf(error, Object.getPrototypeOf(this));\n error.code = code;\n return error;\n }\n return new AVError(code, message);\n}\n\nAVError.prototype = Object.create(Error.prototype, {\n constructor: {\n value: Error,\n enumerable: false,\n writable: true,\n configurable: true,\n },\n});\n\nObject.setPrototypeOf(AVError, Error);\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.\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 * @constant\n */\n INVALID_PUSH_TIME_ERROR: 152,\n\n /**\n * Error code indicating that the username is missing or empty.\n * @constant\n */\n USERNAME_MISSING: 200,\n\n /**\n * Error code indicating that the password is missing or empty.\n * @constant\n */\n PASSWORD_MISSING: 201,\n\n /**\n * Error code indicating that the username has already been taken.\n * @constant\n */\n USERNAME_TAKEN: 202,\n\n /**\n * Error code indicating that the email has already been taken.\n * @constant\n */\n EMAIL_TAKEN: 203,\n\n /**\n * Error code indicating that the email is missing, but must be specified.\n * @constant\n */\n EMAIL_MISSING: 204,\n\n /**\n * Error code indicating that a user with the specified email was not found.\n * @constant\n */\n EMAIL_NOT_FOUND: 205,\n\n /**\n * Error code indicating that a user object without a valid session could\n * not be altered.\n * @constant\n */\n SESSION_MISSING: 206,\n\n /**\n * Error code indicating that a user can only be created through signup.\n * @constant\n */\n MUST_CREATE_USER_THROUGH_SIGNUP: 207,\n\n /**\n * Error code indicating that an an account being linked is already linked\n * to another user.\n * @constant\n */\n ACCOUNT_ALREADY_LINKED: 208,\n\n /**\n * Error code indicating that a user cannot be linked to an account because\n * that account's id could not be found.\n * @constant\n */\n LINKED_ID_MISSING: 250,\n\n /**\n * Error code indicating that a user with a linked (e.g. Facebook) account\n * has an invalid session.\n * @constant\n */\n INVALID_LINKED_SESSION: 251,\n\n /**\n * Error code indicating that a service being linked (e.g. Facebook or\n * Twitter) is unsupported.\n * @constant\n */\n UNSUPPORTED_SERVICE: 252,\n /**\n * Error code indicating a real error code is unavailable because\n * we had to use an XDomainRequest object to allow CORS requests in\n * Internet Explorer, which strips the body from HTTP responses that have\n * a non-2XX status code.\n * @constant\n */\n X_DOMAIN_REQUEST: 602,\n }\n);\n\nmodule.exports = AVError;\n\n\n\n// WEBPACK FOOTER //\n// ./src/error.js","module.exports = 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-pure/internals/create-property-descriptor.js\n// module id = 41\n// module chunks = 0 1","var toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n return toLength(obj.length);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/length-of-array-like.js\n// module id = 42\n// module chunks = 0 1","var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nmodule.exports = function (target, key, value, options) {\n if (options && options.enumerable) target[key] = value;\n else createNonEnumerableProperty(target, key, value);\n return target;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/define-built-in.js\n// module id = 43\n// module chunks = 0 1","'use strict';\nvar aCallable = require('../internals/a-callable');\n\nvar PromiseCapability = function (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 = aCallable(resolve);\n this.reject = aCallable(reject);\n};\n\n// `NewPromiseCapability` abstract operation\n// https://tc39.es/ecma262/#sec-newpromisecapability\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/new-promise-capability.js\n// module id = 44\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 = 45\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 = 46\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 = 47\n// module chunks = 0 1","module.exports = require(\"core-js-pure/stable/instance/keys\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js-stable/instance/keys.js\n// module id = 48\n// module chunks = 0 1","/* eslint-disable es-x/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\n\n// eslint-disable-next-line es-x/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol();\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n return !String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/native-symbol.js\n// module id = 49\n// module chunks = 0 1","var uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar bind = uncurryThis(uncurryThis.bind);\n\n// optional / simple context binding\nmodule.exports = function (fn, that) {\n aCallable(fn);\n return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/function-bind-context.js\n// module id = 50\n// module chunks = 0 1","/* global ActiveXObject -- old IE, WSH */\nvar anObject = require('../internals/an-object');\nvar definePropertiesModule = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n activeXDocument = null; // avoid memory leak\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n activeXDocument = new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = typeof document != 'undefined'\n ? document.domain && activeXDocument\n ? NullProtoObjectViaActiveX(activeXDocument) // old IE\n : NullProtoObjectViaIFrame()\n : NullProtoObjectViaActiveX(activeXDocument); // WSH\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\n// eslint-disable-next-line es-x/no-object-create -- safe\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : definePropertiesModule.f(result, Properties);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/object-create.js\n// module id = 51\n// module chunks = 0 1","module.exports = {};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/iterators.js\n// module id = 52\n// module chunks = 0 1","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar isCallable = require('../internals/is-callable');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar $Object = Object;\n\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(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 (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/classof.js\n// module id = 53\n// module chunks = 0 1","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar defineProperty = require('../internals/object-define-property').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar toString = require('../internals/object-to-string');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC, SET_METHOD) {\n if (it) {\n var target = STATIC ? it : it.prototype;\n if (!hasOwn(target, TO_STRING_TAG)) {\n defineProperty(target, TO_STRING_TAG, { configurable: true, value: TAG });\n }\n if (SET_METHOD && !TO_STRING_TAG_SUPPORT) {\n createNonEnumerableProperty(target, 'toString', toString);\n }\n }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/set-to-string-tag.js\n// module id = 54\n// module chunks = 0 1","var global = require('../internals/global');\n\nmodule.exports = global.Promise;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/promise-native-constructor.js\n// module id = 55\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 = 56\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 = 57\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 = 58\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 \n * is set, then none of the AV Objects that are serialized can be dirty.\n * @private\n */\nAV._encode = function(value, seenObjects, disallowObjects, full = true) {\n if (value instanceof AV.Object) {\n if (disallowObjects) {\n throw new Error('AV.Objects not allowed here');\n }\n if (!seenObjects || _.include(seenObjects, value) || !value._hasData) {\n return value._toPointer();\n }\n return value._toFullJSON(seenObjects.concat(value), full);\n }\n if (value instanceof AV.ACL) {\n return value.toJSON();\n }\n if (_.isDate(value)) {\n return full ? { __type: 'Date', iso: value.toJSON() } : value.toJSON();\n }\n if (value instanceof AV.GeoPoint) {\n return value.toJSON();\n }\n if (_.isArray(value)) {\n return _.map(value, function(x) {\n return AV._encode(x, seenObjects, disallowObjects, full);\n });\n }\n if (_.isRegExp(value)) {\n return value.source;\n }\n if (value instanceof AV.Relation) {\n return value.toJSON();\n }\n if (value instanceof AV.Op) {\n return value.toJSON();\n }\n if (value instanceof AV.File) {\n if (!value.url() && !value.id) {\n throw new Error('Tried to save an object containing an unsaved file.');\n }\n return value._toFullJSON(seenObjects, full);\n }\n if (_.isObject(value)) {\n return _.mapObject(value, (v, k) =>\n AV._encode(v, seenObjects, disallowObjects, full)\n );\n }\n return value;\n};\n\n/**\n * The inverse function of AV._encode.\n * @private\n */\nAV._decode = function(value, key) {\n if (!_.isObject(value) || _.isDate(value)) {\n return value;\n }\n if (_.isArray(value)) {\n return _.map(value, v => AV._decode(v));\n }\n if (value instanceof AV.Object) {\n return value;\n }\n if (value instanceof AV.File) {\n return value;\n }\n if (value instanceof AV.Op) {\n return value;\n }\n if (value instanceof AV.GeoPoint) {\n return value;\n }\n if (value instanceof AV.ACL) {\n return value;\n }\n if (key === 'ACL') {\n return new AV.ACL(value);\n }\n if (value.__op) {\n return AV.Op._decode(value);\n }\n var className;\n if (value.__type === 'Pointer') {\n className = value.className;\n var pointer = AV.Object._create(className);\n if (Object.keys(value).length > 3) {\n const v = _.clone(value);\n delete v.__type;\n delete v.className;\n pointer._finishFetch(v, true);\n } else {\n pointer._finishFetch({ objectId: value.objectId }, false);\n }\n return pointer;\n }\n if (value.__type === 'Object') {\n // It's an Object included in a query result.\n className = value.className;\n const v = _.clone(value);\n delete v.__type;\n delete v.className;\n var object = AV.Object._create(className);\n object._finishFetch(v, true);\n return object;\n }\n if (value.__type === 'Date') {\n return AV._parseDate(value.iso);\n }\n if (value.__type === 'GeoPoint') {\n return new AV.GeoPoint({\n latitude: value.latitude,\n longitude: value.longitude,\n });\n }\n if (value.__type === 'Relation') {\n if (!key) throw new Error('key missing decoding a Relation');\n var relation = new AV.Relation(null, key);\n relation.targetClassName = value.className;\n return relation;\n }\n if (value.__type === 'File') {\n var file = new AV.File(value.name);\n const v = _.clone(value);\n delete v.__type;\n file._finishFetch(v);\n return file;\n }\n return _.mapObject(value, AV._decode);\n};\n\n/**\n * The inverse function of {@link AV.Object#toFullJSON}.\n * @since 3.0.0\n * @method\n * @param {Object}\n * return {AV.Object|AV.File|any}\n */\nAV.parseJSON = AV._decode;\n\n/**\n * Similar to JSON.parse, except that AV internal types will be used if possible.\n * Inverse to {@link AV.stringify}\n * @since 3.14.0\n * @param {string} text the string to parse.\n * @return {AV.Object|AV.File|any}\n */\nAV.parse = text => AV.parseJSON(JSON.parse(text));\n/**\n * Serialize a target containing AV.Object, similar to JSON.stringify.\n * Inverse to {@link AV.parse}\n * @since 3.14.0\n * @return {string}\n */\nAV.stringify = target => JSON.stringify(AV._encode(target, [], false, true));\n\nAV._encodeObjectOrArray = function(value) {\n var encodeAVObject = function(object) {\n if (object && object._toFullJSON) {\n object = object._toFullJSON([]);\n }\n\n return _.mapObject(object, function(value) {\n return AV._encode(value, []);\n });\n };\n\n if (_.isArray(value)) {\n return value.map(function(object) {\n return encodeAVObject(object);\n });\n } else {\n return encodeAVObject(value);\n }\n};\n\nAV._arrayEach = _.each;\n\n/**\n * Does a deep traversal of every item in object, calling func on every one.\n * @param {Object} object The object or array to traverse deeply.\n * @param {Function} func The function to call for every item. It will\n * be passed the item as an argument. If it returns a truthy value, that\n * value will replace the item in its parent container.\n * @returns {} the result of calling func on the top-level object itself.\n * @private\n */\nAV._traverse = function(object, func, seen) {\n if (object instanceof AV.Object) {\n seen = seen || [];\n if (_.indexOf(seen, object) >= 0) {\n // We've already visited this object in this call.\n return;\n }\n seen.push(object);\n AV._traverse(object.attributes, func, seen);\n return func(object);\n }\n if (object instanceof AV.Relation || object instanceof AV.File) {\n // Nothing needs to be done, but we don't want to recurse into the\n // object's parent infinitely, so we catch this case.\n return func(object);\n }\n if (_.isArray(object)) {\n _.each(object, function(child, index) {\n var newChild = AV._traverse(child, func, seen);\n if (newChild) {\n object[index] = newChild;\n }\n });\n return func(object);\n }\n if (_.isObject(object)) {\n AV._each(object, function(child, key) {\n var newChild = AV._traverse(child, func, seen);\n if (newChild) {\n object[key] = newChild;\n }\n });\n return func(object);\n }\n return func(object);\n};\n\n/**\n * This is like _.each, except:\n * * it doesn't work for so-called array-like objects,\n * * it does work for dictionaries with a \"length\" attribute.\n * @private\n */\nAV._objectEach = AV._each = function(obj, callback) {\n if (_.isObject(obj)) {\n _.each(_.keys(obj), function(key) {\n callback(obj[key], key);\n });\n } else {\n _.each(obj, callback);\n }\n};\n\n/**\n * @namespace\n * @since 3.14.0\n */\nAV.debug = {\n /**\n * Enable debug\n */\n enable: (namespaces = 'leancloud*') => debug.enable(namespaces),\n /**\n * Disable debug\n */\n disable: debug.disable,\n};\n\n/**\n * Specify Adapters\n * @since 4.4.0\n * @function\n * @param {Adapters} newAdapters See {@link https://url.leanapp.cn/adapter-type-definitions @leancloud/adapter-types} for detailed definitions.\n */\nAV.setAdapters = setAdapters;\n\nmodule.exports = AV;\n\n\n\n// WEBPACK FOOTER //\n// ./src/av.js","\"use strict\";\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\n/**\n * Colors.\n */\n\nexports.colors = ['#0000CC', '#0000FF', '#0033CC', '#0033FF', '#0066CC', '#0066FF', '#0099CC', '#0099FF', '#00CC00', '#00CC33', '#00CC66', '#00CC99', '#00CCCC', '#00CCFF', '#3300CC', '#3300FF', '#3333CC', '#3333FF', '#3366CC', '#3366FF', '#3399CC', '#3399FF', '#33CC00', '#33CC33', '#33CC66', '#33CC99', '#33CCCC', '#33CCFF', '#6600CC', '#6600FF', '#6633CC', '#6633FF', '#66CC00', '#66CC33', '#9900CC', '#9900FF', '#9933CC', '#9933FF', '#99CC00', '#99CC33', '#CC0000', '#CC0033', '#CC0066', '#CC0099', '#CC00CC', '#CC00FF', '#CC3300', '#CC3333', '#CC3366', '#CC3399', '#CC33CC', '#CC33FF', '#CC6600', '#CC6633', '#CC9900', '#CC9933', '#CCCC00', '#CCCC33', '#FF0000', '#FF0033', '#FF0066', '#FF0099', '#FF00CC', '#FF00FF', '#FF3300', '#FF3333', '#FF3366', '#FF3399', '#FF33CC', '#FF33FF', '#FF6600', '#FF6633', '#FF9900', '#FF9933', '#FFCC00', '#FFCC33'];\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n// eslint-disable-next-line complexity\n\nfunction useColors() {\n // NB: In an Electron preload script, document will be defined but not fully\n // initialized. Since we know we're in Chrome, we'll just detect this case\n // explicitly\n if (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n return true;\n } // Internet Explorer and Edge do not support colors.\n\n\n if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n return false;\n } // Is webkit? http://stackoverflow.com/a/16459606/376773\n // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\n\n return typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || // Is firebug? http://stackoverflow.com/a/398120/376773\n typeof window !== 'undefined' && window.console && (window.console.firebug || window.console.exception && window.console.table) || // Is firefox >= v31?\n // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31 || // Double check webkit in userAgent just in case we are in a worker\n typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/);\n}\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\n\nfunction formatArgs(args) {\n args[0] = (this.useColors ? '%c' : '') + this.namespace + (this.useColors ? ' %c' : ' ') + args[0] + (this.useColors ? '%c ' : ' ') + '+' + module.exports.humanize(this.diff);\n\n if (!this.useColors) {\n return;\n }\n\n var c = 'color: ' + this.color;\n args.splice(1, 0, c, 'color: inherit'); // The final \"%c\" is somewhat tricky, because there could be other\n // arguments passed either before or after the %c, so we need to\n // figure out the correct index to insert the CSS into\n\n var index = 0;\n var lastC = 0;\n args[0].replace(/%[a-zA-Z%]/g, function (match) {\n if (match === '%%') {\n return;\n }\n\n index++;\n\n if (match === '%c') {\n // We only are interested in the *last* %c\n // (the user may have provided their own)\n lastC = index;\n }\n });\n args.splice(lastC, 0, c);\n}\n/**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\n\n\nfunction log() {\n var _console;\n\n // This hackery is required for IE8/9, where\n // the `console.log` function doesn't have 'apply'\n return (typeof console === \"undefined\" ? \"undefined\" : _typeof(console)) === 'object' && console.log && (_console = console).log.apply(_console, arguments);\n}\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\n\nfunction save(namespaces) {\n try {\n if (namespaces) {\n exports.storage.setItem('debug', namespaces);\n } else {\n exports.storage.removeItem('debug');\n }\n } catch (error) {// Swallow\n // XXX (@Qix-) should we be logging these?\n }\n}\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\n\nfunction load() {\n var r;\n\n try {\n r = exports.storage.getItem('debug');\n } catch (error) {} // Swallow\n // XXX (@Qix-) should we be logging these?\n // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\n\n if (!r && typeof process !== 'undefined' && 'env' in process) {\n r = process.env.DEBUG;\n }\n\n return r;\n}\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\n\nfunction localstorage() {\n try {\n // TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n // The Browser also has localStorage in the global context.\n return localStorage;\n } catch (error) {// Swallow\n // XXX (@Qix-) should we be logging these?\n }\n}\n\nmodule.exports = require('./common')(exports);\nvar formatters = module.exports.formatters;\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n try {\n return JSON.stringify(v);\n } catch (error) {\n return '[UnexpectedJSONParseError]: ' + error.message;\n }\n};\n\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/debug/src/browser.js\n// module id = 60\n// module chunks = 0 1","const _ = require('underscore');\nconst EventEmitter = require('eventemitter3');\nconst { inherits } = require('./utils');\n\nconst AdapterManager = inherits(EventEmitter, {\n constructor() {\n EventEmitter.apply(this);\n this._adapters = {};\n },\n getAdapter(name) {\n const adapter = this._adapters[name];\n if (adapter === undefined) {\n throw new Error(`${name} adapter is not configured`);\n }\n return adapter;\n },\n setAdapters(newAdapters) {\n _.extend(this._adapters, newAdapters);\n _.keys(newAdapters).forEach(name => this.emit(name, newAdapters[name]));\n },\n});\n\nconst adapterManager = new AdapterManager();\n\nmodule.exports = {\n getAdapter: adapterManager.getAdapter.bind(adapterManager),\n setAdapters: adapterManager.setAdapters.bind(adapterManager),\n adapterManager,\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/adapter.js","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar apply = FunctionPrototype.apply;\nvar call = FunctionPrototype.call;\n\n// eslint-disable-next-line es-x/no-reflect -- safe\nmodule.exports = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function () {\n return call.apply(apply, arguments);\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/function-apply.js\n// module id = 62\n// module chunks = 0 1","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es-x/no-function-prototype-bind -- safe\n var test = (function () { /* empty */ }).bind();\n // eslint-disable-next-line no-prototype-builtins -- safe\n return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/function-bind-native.js\n// module id = 63\n// module chunks = 0 1","var DESCRIPTORS = require('../internals/descriptors');\nvar call = require('../internals/function-call');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPropertyKey(P);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/object-get-own-property-descriptor.js\n// module id = 64\n// module chunks = 0 1","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n return stringSlice(toString(it), 8, -1);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/classof-raw.js\n// module id = 65\n// module chunks = 0 1","var $String = String;\n\nmodule.exports = function (argument) {\n try {\n return $String(argument);\n } catch (error) {\n return 'Object';\n }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/try-to-string.js\n// module id = 66\n// module chunks = 0 1","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.23.3',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2014-2022 Denis Pushkarev (zloirock.ru)',\n license: 'https://github.com/zloirock/core-js/blob/v3.23.3/LICENSE',\n source: 'https://github.com/zloirock/core-js'\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/shared.js\n// module id = 67\n// module chunks = 0 1","var bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar tryToString = require('../internals/try-to-string');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar iteratorClose = require('../internals/iterator-close');\n\nvar $TypeError = TypeError;\n\nvar Result = function (stopped, result) {\n this.stopped = stopped;\n this.result = result;\n};\n\nvar ResultPrototype = Result.prototype;\n\nmodule.exports = function (iterable, unboundFunction, options) {\n var that = options && options.that;\n var AS_ENTRIES = !!(options && options.AS_ENTRIES);\n var IS_ITERATOR = !!(options && options.IS_ITERATOR);\n var INTERRUPTED = !!(options && options.INTERRUPTED);\n var fn = bind(unboundFunction, that);\n var iterator, iterFn, index, length, result, next, step;\n\n var stop = function (condition) {\n if (iterator) iteratorClose(iterator, 'normal', condition);\n return new Result(true, condition);\n };\n\n var callFn = function (value) {\n if (AS_ENTRIES) {\n anObject(value);\n return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);\n } return INTERRUPTED ? fn(value, stop) : fn(value);\n };\n\n if (IS_ITERATOR) {\n iterator = iterable;\n } else {\n iterFn = getIteratorMethod(iterable);\n if (!iterFn) throw $TypeError(tryToString(iterable) + ' is not iterable');\n // optimisation for array iterators\n if (isArrayIteratorMethod(iterFn)) {\n for (index = 0, length = lengthOfArrayLike(iterable); length > index; index++) {\n result = callFn(iterable[index]);\n if (result && isPrototypeOf(ResultPrototype, result)) return result;\n } return new Result(false);\n }\n iterator = getIterator(iterable, iterFn);\n }\n\n next = iterator.next;\n while (!(step = call(next, iterator)).done) {\n try {\n result = callFn(step.value);\n } catch (error) {\n iteratorClose(iterator, 'throw', error);\n }\n if (typeof result == 'object' && result && isPrototypeOf(ResultPrototype, result)) return result;\n } return new Result(false);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/iterate.js\n// module id = 68\n// module chunks = 0 1","var classof = require('../internals/classof');\n\nvar $String = String;\n\nmodule.exports = function (argument) {\n if (classof(argument) === 'Symbol') throw TypeError('Cannot convert a Symbol value to a string');\n return $String(argument);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/to-string.js\n// module id = 69\n// module chunks = 0 1","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar Iterators = require('../internals/iterators');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineProperty = require('../internals/object-define-property').f;\nvar defineIterator = require('../internals/define-iterator');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.es/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.es/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.es/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.es/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n setInternalState(this, {\n type: ARRAY_ITERATOR,\n target: toIndexedObject(iterated), // target\n index: 0, // next index\n kind: kind // kind\n });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n var state = getInternalState(this);\n var target = state.target;\n var kind = state.kind;\n var index = state.index++;\n if (!target || index >= target.length) {\n state.target = undefined;\n return { value: undefined, done: true };\n }\n if (kind == 'keys') return { value: index, done: false };\n if (kind == 'values') return { value: target[index], done: false };\n return { value: [index, target[index]], done: false };\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.es/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.es/ecma262/#sec-createmappedargumentsobject\nvar values = Iterators.Arguments = Iterators.Array;\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n// V8 ~ Chrome 45- bug\nif (!IS_PURE && DESCRIPTORS && values.name !== 'values') try {\n defineProperty(values, 'name', { value: 'values' });\n} catch (error) { /* empty */ }\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.array.iterator.js\n// module id = 70\n// module chunks = 0 1","module.exports = function (exec) {\n try {\n return { error: false, value: exec() };\n } catch (error) {\n return { error: true, value: error };\n }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/perform.js\n// module id = 71\n// module chunks = 0 1","var global = require('../internals/global');\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar isCallable = require('../internals/is-callable');\nvar isForced = require('../internals/is-forced');\nvar inspectSource = require('../internals/inspect-source');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_BROWSER = require('../internals/engine-is-browser');\nvar IS_PURE = require('../internals/is-pure');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\nvar SPECIES = wellKnownSymbol('species');\nvar SUBCLASSING = false;\nvar NATIVE_PROMISE_REJECTION_EVENT = isCallable(global.PromiseRejectionEvent);\n\nvar FORCED_PROMISE_CONSTRUCTOR = isForced('Promise', function () {\n var PROMISE_CONSTRUCTOR_SOURCE = inspectSource(NativePromiseConstructor);\n var GLOBAL_CORE_JS_PROMISE = PROMISE_CONSTRUCTOR_SOURCE !== String(NativePromiseConstructor);\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 if (!GLOBAL_CORE_JS_PROMISE && V8_VERSION === 66) return true;\n // We need Promise#{ catch, finally } in the pure version for preventing prototype pollution\n if (IS_PURE && !(NativePromisePrototype['catch'] && NativePromisePrototype['finally'])) return true;\n // We can't use @@species feature detection in V8 since it causes\n // deoptimization and performance degradation\n // https://github.com/zloirock/core-js/issues/679\n if (V8_VERSION >= 51 && /native code/.test(PROMISE_CONSTRUCTOR_SOURCE)) return false;\n // Detect correctness of subclassing with @@species support\n var promise = new NativePromiseConstructor(function (resolve) { resolve(1); });\n var FakePromise = function (exec) {\n exec(function () { /* empty */ }, function () { /* empty */ });\n };\n var constructor = promise.constructor = {};\n constructor[SPECIES] = FakePromise;\n SUBCLASSING = promise.then(function () { /* empty */ }) instanceof FakePromise;\n if (!SUBCLASSING) return true;\n // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return !GLOBAL_CORE_JS_PROMISE && IS_BROWSER && !NATIVE_PROMISE_REJECTION_EVENT;\n});\n\nmodule.exports = {\n CONSTRUCTOR: FORCED_PROMISE_CONSTRUCTOR,\n REJECTION_EVENT: NATIVE_PROMISE_REJECTION_EVENT,\n SUBCLASSING: SUBCLASSING\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/promise-constructor-detection.js\n// module id = 72\n// module chunks = 0 1","require('../modules/es.array.iterator');\nvar DOMIterables = require('../internals/dom-iterables');\nvar global = require('../internals/global');\nvar classof = require('../internals/classof');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nfor (var COLLECTION_NAME in DOMIterables) {\n var Collection = global[COLLECTION_NAME];\n var CollectionPrototype = Collection && Collection.prototype;\n if (CollectionPrototype && classof(CollectionPrototype) !== TO_STRING_TAG) {\n createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\n }\n Iterators[COLLECTION_NAME] = Iterators.Array;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/web.dom-collections.iterator.js\n// module id = 73\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 = 74\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 = 75\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 = 76\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 = 77\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 = 78\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 = 79\n// module chunks = 0 1","var classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es-x/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(argument) {\n return classof(argument) == 'Array';\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/is-array.js\n// module id = 80\n// module chunks = 0 1","module.exports = require(\"core-js-pure/stable/instance/slice\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js-stable/instance/slice.js\n// module id = 81\n// module chunks = 0 1","var toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n var key = toPrimitive(argument, 'string');\n return isSymbol(key) ? key : key + '';\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/to-property-key.js\n// module id = 82\n// module chunks = 0 1","var getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar $Object = Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/is-symbol.js\n// module id = 83\n// module chunks = 0 1","var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n // but their correct versions are not interesting for us\n version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = +match[1];\n }\n}\n\nmodule.exports = version;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/engine-v8-version.js\n// module id = 84\n// module chunks = 0 1","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/engine-user-agent.js\n// module id = 85\n// module chunks = 0 1","var hasOwn = require('../internals/has-own-property');\nvar isCallable = require('../internals/is-callable');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar $Object = Object;\nvar ObjectPrototype = $Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n// eslint-disable-next-line es-x/no-object-getprototypeof -- safe\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function (O) {\n var object = toObject(O);\n if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];\n var constructor = object.constructor;\n if (isCallable(constructor) && object instanceof constructor) {\n return constructor.prototype;\n } return object instanceof $Object ? ObjectPrototype : null;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/object-get-prototype-of.js\n// module id = 86\n// module chunks = 0 1","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/shared-key.js\n// module id = 87\n// module chunks = 0 1","/* eslint-disable no-proto -- safe */\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es-x/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n // eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\n setter = uncurryThis(Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set);\n setter(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n anObject(O);\n aPossiblePrototype(proto);\n if (CORRECT_SETTER) setter(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/object-set-prototype-of.js\n// module id = 88\n// module chunks = 0 1","module.exports = {};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/hidden-keys.js\n// module id = 89\n// module chunks = 0 1","var classof = require('../internals/classof');\nvar getMethod = require('../internals/get-method');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (it != undefined) return getMethod(it, ITERATOR)\n || getMethod(it, '@@iterator')\n || Iterators[classof(it)];\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/get-iterator-method.js\n// module id = 90\n// module chunks = 0 1","var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = global.TypeError;\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n var store = shared.state || (shared.state = new WeakMap());\n var wmget = uncurryThis(store.get);\n var wmhas = uncurryThis(store.has);\n var wmset = uncurryThis(store.set);\n set = function (it, metadata) {\n if (wmhas(store, it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n wmset(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget(store, it) || {};\n };\n has = function (it) {\n return wmhas(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return hasOwn(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return hasOwn(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/internal-state.js\n// module id = 91\n// module chunks = 0 1","// empty\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.object.to-string.js\n// module id = 92\n// module chunks = 0 1","var uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof');\nvar getBuiltIn = require('../internals/get-built-in');\nvar inspectSource = require('../internals/inspect-source');\n\nvar noop = function () { /* empty */ };\nvar empty = [];\nvar construct = getBuiltIn('Reflect', 'construct');\nvar constructorRegExp = /^\\s*(?:class|function)\\b/;\nvar exec = uncurryThis(constructorRegExp.exec);\nvar INCORRECT_TO_STRING = !constructorRegExp.exec(noop);\n\nvar isConstructorModern = function isConstructor(argument) {\n if (!isCallable(argument)) return false;\n try {\n construct(noop, empty, argument);\n return true;\n } catch (error) {\n return false;\n }\n};\n\nvar isConstructorLegacy = function isConstructor(argument) {\n if (!isCallable(argument)) return false;\n switch (classof(argument)) {\n case 'AsyncFunction':\n case 'GeneratorFunction':\n case 'AsyncGeneratorFunction': return false;\n }\n try {\n // we can't check .prototype since constructors produced by .bind haven't it\n // `Function#toString` throws on some built-it function in some legacy engines\n // (for example, `DOMQuad` and similar in FF41-)\n return INCORRECT_TO_STRING || !!exec(constructorRegExp, inspectSource(argument));\n } catch (error) {\n return true;\n }\n};\n\nisConstructorLegacy.sham = true;\n\n// `IsConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-isconstructor\nmodule.exports = !construct || fails(function () {\n var called;\n return isConstructorModern(isConstructorModern.call)\n || !isConstructorModern(Object)\n || !isConstructorModern(function () { called = true; })\n || called;\n}) ? isConstructorLegacy : isConstructorModern;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/is-constructor.js\n// module id = 93\n// module chunks = 0 1","var uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis([].slice);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/array-slice.js\n// module id = 94\n// module chunks = 0 1","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\nvar toString = require('../internals/to-string');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n setInternalState(this, {\n type: STRING_ITERATOR,\n string: toString(iterated),\n index: 0\n });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n var state = getInternalState(this);\n var string = state.string;\n var index = state.index;\n var point;\n if (index >= string.length) return { value: undefined, done: true };\n point = charAt(string, index);\n state.index += point.length;\n return { value: point, done: false };\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.string.iterator.js\n// module id = 95\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 = 96\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 = 97\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 = 98\n// module chunks = 0 1","'use strict';\nvar toPropertyKey = require('../internals/to-property-key');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n var propertyKey = toPropertyKey(key);\n if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n else object[propertyKey] = value;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/create-property.js\n// module id = 99\n// module chunks = 0 1","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n // We can't use this feature detection in V8 since it causes\n // deoptimization and serious performance degradation\n // https://github.com/zloirock/core-js/issues/677\n return V8_VERSION >= 51 || !fails(function () {\n var array = [];\n var constructor = array.constructor = {};\n constructor[SPECIES] = function () {\n return { foo: 1 };\n };\n return array[METHOD_NAME](Boolean).foo !== 1;\n });\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/array-method-has-species-support.js\n// module id = 100\n// module chunks = 0 1","var bind = require('../internals/function-bind-context');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\nvar push = uncurryThis([].push);\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterReject }` methods implementation\nvar createMethod = function (TYPE) {\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 IS_FILTER_REJECT = TYPE == 7;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n return function ($this, callbackfn, that, specificCreate) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var boundFunction = bind(callbackfn, that);\n var length = lengthOfArrayLike(self);\n var index = 0;\n var create = specificCreate || arraySpeciesCreate;\n var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_REJECT ? create($this, 0) : undefined;\n var value, result;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n value = self[index];\n result = boundFunction(value, index, O);\n if (TYPE) {\n if (IS_MAP) target[index] = result; // map\n else if (result) switch (TYPE) {\n case 3: return true; // some\n case 5: return value; // find\n case 6: return index; // findIndex\n case 2: push(target, value); // filter\n } else switch (TYPE) {\n case 4: return false; // every\n case 7: push(target, value); // filterReject\n }\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.forEach` method\n // https://tc39.es/ecma262/#sec-array.prototype.foreach\n forEach: createMethod(0),\n // `Array.prototype.map` method\n // https://tc39.es/ecma262/#sec-array.prototype.map\n map: createMethod(1),\n // `Array.prototype.filter` method\n // https://tc39.es/ecma262/#sec-array.prototype.filter\n filter: createMethod(2),\n // `Array.prototype.some` method\n // https://tc39.es/ecma262/#sec-array.prototype.some\n some: createMethod(3),\n // `Array.prototype.every` method\n // https://tc39.es/ecma262/#sec-array.prototype.every\n every: createMethod(4),\n // `Array.prototype.find` method\n // https://tc39.es/ecma262/#sec-array.prototype.find\n find: createMethod(5),\n // `Array.prototype.findIndex` method\n // https://tc39.es/ecma262/#sec-array.prototype.findIndex\n findIndex: createMethod(6),\n // `Array.prototype.filterReject` method\n // https://github.com/tc39/proposal-array-filtering\n filterReject: createMethod(7)\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/array-iteration.js\n// module id = 101\n// module chunks = 0 1","module.exports = require(\"core-js-pure/stable/instance/index-of\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js-stable/instance/index-of.js\n// module id = 102\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","module.exports = require(\"core-js-pure/stable/instance/find\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js-stable/instance/find.js\n// module id = 104\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 = 105\n// module chunks = 0 1","var $TypeError = TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\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-pure/internals/require-object-coercible.js\n// module id = 106\n// module chunks = 0 1","var aCallable = require('../internals/a-callable');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n var func = V[P];\n return func == null ? undefined : aCallable(func);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/get-method.js\n// module id = 107\n// module chunks = 0 1","var global = require('../internals/global');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || defineGlobalProperty(SHARED, {});\n\nmodule.exports = store;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/shared-store.js\n// module id = 108\n// module chunks = 0 1","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/uid.js\n// module id = 109\n// module chunks = 0 1","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/document-create-element.js\n// module id = 110\n// module chunks = 0 1","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es-x/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/object-get-own-property-names.js\n// module id = 111\n// module chunks = 0 1","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toIntegerOrInfinity(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/to-absolute-index.js\n// module id = 112\n// module chunks = 0 1","var trunc = require('../internals/math-trunc');\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n var number = +argument;\n // eslint-disable-next-line no-self-compare -- NaN check\n return number !== number || number === 0 ? 0 : trunc(number);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/to-integer-or-infinity.js\n// module id = 113\n// module chunks = 0 1","// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/enum-bug-keys.js\n// module id = 114\n// module chunks = 0 1","// eslint-disable-next-line es-x/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/object-get-own-property-symbols.js\n// module id = 115\n// module chunks = 0 1","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es-x/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/object-keys.js\n// module id = 116\n// module chunks = 0 1","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/to-string-tag-support.js\n// module id = 117\n// module chunks = 0 1","var uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n store.inspectSource = function (it) {\n return functionToString(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/inspect-source.js\n// module id = 118\n// module chunks = 0 1","var classof = require('../internals/classof-raw');\nvar global = require('../internals/global');\n\nmodule.exports = classof(global.process) == 'process';\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/engine-is-node.js\n// module id = 119\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 = 120\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 = 121\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 = 122\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 = 123\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 = 124\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 = 125\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 = 126\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 = 127\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 = 128\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 = 129\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 = 130\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 = 131\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 = 132\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 = 133\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 = 134\n// module chunks = 0 1","var _Symbol = require(\"@babel/runtime-corejs3/core-js/symbol\");\n\nvar _Symbol$iterator = require(\"@babel/runtime-corejs3/core-js/symbol/iterator\");\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _typeof = \"function\" == typeof _Symbol && \"symbol\" == typeof _Symbol$iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof _Symbol && obj.constructor === _Symbol && obj !== _Symbol.prototype ? \"symbol\" : typeof obj;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(obj);\n}\n\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/helpers/typeof.js\n// module id = 135\n// module chunks = 0 1","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nexports.f = wellKnownSymbol;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/well-known-symbol-wrapped.js\n// module id = 136\n// module chunks = 0 1","module.exports = require(\"core-js-pure/features/object/define-property\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js/object/define-property.js\n// module id = 137\n// module chunks = 0 1","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/object-property-is-enumerable.js\n// module id = 138\n// module chunks = 0 1","var uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar $Object = Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !$Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split(it, '') : $Object(it);\n} : $Object;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/indexed-object.js\n// module id = 139\n// module chunks = 0 1","/* eslint-disable es-x/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\n\nmodule.exports = NATIVE_SYMBOL\n && !Symbol.sham\n && typeof Symbol.iterator == 'symbol';\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/use-symbol-as-uid.js\n// module id = 140\n// module chunks = 0 1","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es-x/no-object-defineproperty -- required for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/ie8-dom-define.js\n// module id = 141\n// module chunks = 0 1","var fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : isCallable(detection) ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/is-forced.js\n// module id = 142\n// module chunks = 0 1","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n // eslint-disable-next-line es-x/no-object-defineproperty -- required for testing\n return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n value: 42,\n writable: false\n }).prototype != 42;\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/v8-prototype-define-bug.js\n// module id = 143\n// module chunks = 0 1","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n // eslint-disable-next-line es-x/no-object-getprototypeof -- required for testing\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/correct-prototype-getter.js\n// module id = 144\n// module chunks = 0 1","var uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (hasOwn(O, key = names[i++])) {\n ~indexOf(result, key) || push(result, key);\n }\n return result;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/object-keys-internal.js\n// module id = 145\n// module chunks = 0 1","var toIndexedObject = require('../internals/to-indexed-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = lengthOfArrayLike(O);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/array-includes.js\n// module id = 146\n// module chunks = 0 1","var DESCRIPTORS = require('../internals/descriptors');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es-x/no-object-defineproperties -- safe\nexports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var props = toIndexedObject(Properties);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);\n return O;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/object-define-properties.js\n// module id = 147\n// module chunks = 0 1","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/html.js\n// module id = 148\n// module chunks = 0 1","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/is-array-iterator-method.js\n// module id = 149\n// module chunks = 0 1","var call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar tryToString = require('../internals/try-to-string');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument, usingIterator) {\n var iteratorMethod = arguments.length < 2 ? getIteratorMethod(argument) : usingIterator;\n if (aCallable(iteratorMethod)) return anObject(call(iteratorMethod, argument));\n throw $TypeError(tryToString(argument) + ' is not iterable');\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/get-iterator.js\n// module id = 150\n// module chunks = 0 1","var call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar getMethod = require('../internals/get-method');\n\nmodule.exports = function (iterator, kind, value) {\n var innerResult, innerError;\n anObject(iterator);\n try {\n innerResult = getMethod(iterator, 'return');\n if (!innerResult) {\n if (kind === 'throw') throw value;\n return value;\n }\n innerResult = call(innerResult, iterator);\n } catch (error) {\n innerError = true;\n innerResult = error;\n }\n if (kind === 'throw') throw value;\n if (innerError) throw innerResult;\n anObject(innerResult);\n return value;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/iterator-close.js\n// module id = 151\n// module chunks = 0 1","module.exports = function () { /* empty */ };\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/add-to-unscopables.js\n// module id = 152\n// module chunks = 0 1","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar IS_PURE = require('../internals/is-pure');\nvar FunctionName = require('../internals/function-name');\nvar isCallable = require('../internals/is-callable');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar PROPER_FUNCTION_NAME = FunctionName.PROPER;\nvar CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE;\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n createIteratorConstructor(IteratorConstructor, NAME, next);\n\n var getIterationMethod = function (KIND) {\n if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n switch (KIND) {\n case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n } return function () { return new IteratorConstructor(this); };\n };\n\n var TO_STRING_TAG = NAME + ' Iterator';\n var INCORRECT_VALUES_NAME = false;\n var IterablePrototype = Iterable.prototype;\n var nativeIterator = IterablePrototype[ITERATOR]\n || IterablePrototype['@@iterator']\n || DEFAULT && IterablePrototype[DEFAULT];\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n var CurrentIteratorPrototype, methods, KEY;\n\n // fix native\n if (anyNativeIterator) {\n CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n if (CurrentIteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n if (setPrototypeOf) {\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n } else if (!isCallable(CurrentIteratorPrototype[ITERATOR])) {\n defineBuiltIn(CurrentIteratorPrototype, ITERATOR, returnThis);\n }\n }\n // Set @@toStringTag to native iterators\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n }\n }\n\n // fix Array.prototype.{ values, @@iterator }.name in V8 / FF\n if (PROPER_FUNCTION_NAME && DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n if (!IS_PURE && CONFIGURABLE_FUNCTION_NAME) {\n createNonEnumerableProperty(IterablePrototype, 'name', VALUES);\n } else {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values() { return call(nativeIterator, this); };\n }\n }\n\n // export additional methods\n if (DEFAULT) {\n methods = {\n values: getIterationMethod(VALUES),\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n entries: getIterationMethod(ENTRIES)\n };\n if (FORCED) for (KEY in methods) {\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n defineBuiltIn(IterablePrototype, KEY, methods[KEY]);\n }\n } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n }\n\n // define iterator\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n defineBuiltIn(IterablePrototype, ITERATOR, defaultIterator, { name: DEFAULT });\n }\n Iterators[NAME] = defaultIterator;\n\n return methods;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/define-iterator.js\n// module id = 153\n// module chunks = 0 1","'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar create = require('../internals/object-create');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\n// `%IteratorPrototype%` object\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\n/* eslint-disable es-x/no-array-prototype-keys -- safe */\nif ([].keys) {\n arrayIterator = [].keys();\n // Safari 8 has buggy iterators w/o `next`\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\n\nvar NEW_ITERATOR_PROTOTYPE = IteratorPrototype == undefined || fails(function () {\n var test = {};\n // FF44- legacy iterators case\n return IteratorPrototype[ITERATOR].call(test) !== test;\n});\n\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\nelse if (IS_PURE) IteratorPrototype = create(IteratorPrototype);\n\n// `%IteratorPrototype%[@@iterator]()` method\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator\nif (!isCallable(IteratorPrototype[ITERATOR])) {\n defineBuiltIn(IteratorPrototype, ITERATOR, function () {\n return this;\n });\n}\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/iterators-core.js\n// module id = 154\n// module chunks = 0 1","var anObject = require('../internals/an-object');\nvar aConstructor = require('../internals/a-constructor');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aConstructor(S);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/species-constructor.js\n// module id = 155\n// module chunks = 0 1","var isConstructor = require('../internals/is-constructor');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsConstructor(argument) is true`\nmodule.exports = function (argument) {\n if (isConstructor(argument)) return argument;\n throw $TypeError(tryToString(argument) + ' is not a constructor');\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/a-constructor.js\n// module id = 156\n// module chunks = 0 1","var global = require('../internals/global');\nvar apply = require('../internals/function-apply');\nvar bind = require('../internals/function-bind-context');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar fails = require('../internals/fails');\nvar html = require('../internals/html');\nvar arraySlice = require('../internals/array-slice');\nvar createElement = require('../internals/document-create-element');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar set = global.setImmediate;\nvar clear = global.clearImmediate;\nvar process = global.process;\nvar Dispatch = global.Dispatch;\nvar Function = global.Function;\nvar MessageChannel = global.MessageChannel;\nvar String = global.String;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar location, defer, channel, port;\n\ntry {\n // Deno throws a ReferenceError on `location` access without `--location` flag\n location = global.location;\n} catch (error) { /* empty */ }\n\nvar run = function (id) {\n if (hasOwn(queue, id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\n\nvar runner = function (id) {\n return function () {\n run(id);\n };\n};\n\nvar listener = function (event) {\n run(event.data);\n};\n\nvar post = function (id) {\n // old engines have not location.origin\n global.postMessage(String(id), location.protocol + '//' + location.host);\n};\n\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!set || !clear) {\n set = function setImmediate(handler) {\n validateArgumentsLength(arguments.length, 1);\n var fn = isCallable(handler) ? handler : Function(handler);\n var args = arraySlice(arguments, 1);\n queue[++counter] = function () {\n apply(fn, undefined, args);\n };\n defer(counter);\n return counter;\n };\n clear = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (IS_NODE) {\n defer = function (id) {\n process.nextTick(runner(id));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(runner(id));\n };\n // Browsers with MessageChannel, includes WebWorkers\n // except iOS - https://github.com/zloirock/core-js/issues/624\n } else if (MessageChannel && !IS_IOS) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = bind(port.postMessage, port);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (\n global.addEventListener &&\n isCallable(global.postMessage) &&\n !global.importScripts &&\n location && location.protocol !== 'file:' &&\n !fails(post)\n ) {\n defer = post;\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in createElement('script')) {\n defer = function (id) {\n html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(runner(id), 0);\n };\n }\n}\n\nmodule.exports = {\n set: set,\n clear: clear\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/task.js\n// module id = 157\n// module chunks = 0 1","var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /(?:ipad|iphone|ipod).*applewebkit/i.test(userAgent);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/engine-is-ios.js\n// module id = 158\n// module chunks = 0 1","var NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\n\nmodule.exports = FORCED_PROMISE_CONSTRUCTOR || !checkCorrectnessOfIteration(function (iterable) {\n NativePromiseConstructor.all(iterable).then(undefined, function () { /* empty */ });\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/promise-statics-incorrect-iteration.js\n// module id = 159\n// module chunks = 0 1","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function () {\n return { done: !!called++ };\n },\n 'return': function () {\n SAFE_CLOSING = true;\n }\n };\n iteratorWithReturn[ITERATOR] = function () {\n return this;\n };\n // eslint-disable-next-line es-x/no-array-from, no-throw-literal -- required for testing\n Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n object[ITERATOR] = function () {\n return {\n next: function () {\n return { done: ITERATION_SUPPORT = true };\n }\n };\n };\n exec(object);\n } catch (error) { /* empty */ }\n return ITERATION_SUPPORT;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/check-correctness-of-iteration.js\n// module id = 160\n// module chunks = 0 1","var anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar newPromiseCapability = require('../internals/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-pure/internals/promise-resolve.js\n// module id = 161\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 = 162\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 = 163\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 = 164\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 = 165\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 = 166\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 = 167\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 = 168\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 = 169\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 = 170\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 = 171\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 = 172\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 = 173\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 = 174\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 = 175\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 = 176\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 = 177\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 = 178\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 = 179\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 = 180\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 = 181\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 = 182\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 = 183\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 = 184\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 = 185\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 = 186\n// module chunks = 0 1","// Internal list of HTML entities for escaping.\nexport default {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '`': '`'\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_escapeMap.js\n// module id = 187\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 = 188\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 = 189\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 = 190\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 = 191\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 = 192\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 = 193\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 = 194\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 = 195\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 = 196\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 = 197\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 = 198\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 = 199\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 = 200\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 = 201\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 = 202\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 = 203\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 = 204\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 = 205\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 = 206\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 = 207\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 = 208\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 = 209\n// module chunks = 0 1","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\nvar createProperty = require('../internals/create-property');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\n\n// We can't use this feature detection in V8 since it causes\n// deoptimization and serious performance degradation\n// https://github.com/zloirock/core-js/issues/679\nvar IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () {\n var array = [];\n array[IS_CONCAT_SPREADABLE] = false;\n return array.concat()[0] !== array;\n});\n\nvar SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat');\n\nvar isConcatSpreadable = function (O) {\n if (!isObject(O)) return false;\n var spreadable = O[IS_CONCAT_SPREADABLE];\n return spreadable !== undefined ? !!spreadable : isArray(O);\n};\n\nvar FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT;\n\n// `Array.prototype.concat` method\n// https://tc39.es/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\n$({ target: 'Array', proto: true, arity: 1, forced: FORCED }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n concat: function concat(arg) {\n var O = toObject(this);\n var A = arraySpeciesCreate(O, 0);\n var n = 0;\n var i, k, length, len, E;\n for (i = -1, length = arguments.length; i < length; i++) {\n E = i === -1 ? O : arguments[i];\n if (isConcatSpreadable(E)) {\n len = lengthOfArrayLike(E);\n doesNotExceedSafeInteger(n + len);\n for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n } else {\n doesNotExceedSafeInteger(n + 1);\n createProperty(A, n++, E);\n }\n }\n A.length = n;\n return A;\n }\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.array.concat.js\n// module id = 210\n// module chunks = 0 1","var arraySpeciesConstructor = require('../internals/array-species-constructor');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/array-species-create.js\n// module id = 211\n// module chunks = 0 1","module.exports = require(\"core-js-pure/stable/object/keys\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js-stable/object/keys.js\n// module id = 212\n// module chunks = 0 1","var $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar apply = require('../internals/function-apply');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isArray = require('../internals/is-array');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar arraySlice = require('../internals/array-slice');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\n\nvar $stringify = getBuiltIn('JSON', 'stringify');\nvar exec = uncurryThis(/./.exec);\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar replace = uncurryThis(''.replace);\nvar numberToString = uncurryThis(1.0.toString);\n\nvar tester = /[\\uD800-\\uDFFF]/g;\nvar low = /^[\\uD800-\\uDBFF]$/;\nvar hi = /^[\\uDC00-\\uDFFF]$/;\n\nvar WRONG_SYMBOLS_CONVERSION = !NATIVE_SYMBOL || fails(function () {\n var symbol = getBuiltIn('Symbol')();\n // MS Edge converts symbol values to JSON as {}\n return $stringify([symbol]) != '[null]'\n // WebKit converts symbol values to JSON as null\n || $stringify({ a: symbol }) != '{}'\n // V8 throws on boxed symbols\n || $stringify(Object(symbol)) != '{}';\n});\n\n// https://github.com/tc39/proposal-well-formed-stringify\nvar ILL_FORMED_UNICODE = fails(function () {\n return $stringify('\\uDF06\\uD834') !== '\"\\\\udf06\\\\ud834\"'\n || $stringify('\\uDEAD') !== '\"\\\\udead\"';\n});\n\nvar stringifyWithSymbolsFix = function (it, replacer) {\n var args = arraySlice(arguments);\n var $replacer = replacer;\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (isCallable($replacer)) value = call($replacer, this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return apply($stringify, null, args);\n};\n\nvar fixIllFormed = function (match, offset, string) {\n var prev = charAt(string, offset - 1);\n var next = charAt(string, offset + 1);\n if ((exec(low, match) && !exec(hi, next)) || (exec(hi, match) && !exec(low, prev))) {\n return '\\\\u' + numberToString(charCodeAt(match, 0), 16);\n } return match;\n};\n\nif ($stringify) {\n // `JSON.stringify` method\n // https://tc39.es/ecma262/#sec-json.stringify\n $({ target: 'JSON', stat: true, arity: 3, forced: WRONG_SYMBOLS_CONVERSION || ILL_FORMED_UNICODE }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n stringify: function stringify(it, replacer, space) {\n var args = arraySlice(arguments);\n var result = apply(WRONG_SYMBOLS_CONVERSION ? stringifyWithSymbolsFix : $stringify, null, args);\n return ILL_FORMED_UNICODE && typeof result == 'string' ? replace(result, tester, fixIllFormed) : result;\n }\n });\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.json.stringify.js\n// module id = 213\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 = 214\n// module chunks = 0 1","module.exports = require(\"core-js-pure/stable/object/get-prototype-of\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js-stable/object/get-prototype-of.js\n// module id = 215\n// module chunks = 0 1","var parent = require('../../es/object/get-prototype-of');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/stable/object/get-prototype-of.js\n// module id = 216\n// module chunks = 0 1","module.exports = '4.15.1';\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 = 218\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","var parent = require('../../es/object/set-prototype-of');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/stable/object/set-prototype-of.js\n// module id = 221\n// module chunks = 0 1","var parent = require('../../es/instance/slice');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/stable/instance/slice.js\n// module id = 222\n// module chunks = 0 1","module.exports = require(\"core-js-pure/stable/object/define-property\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js-stable/object/define-property.js\n// module id = 223\n// module chunks = 0 1","var parent = require('../../es/object/define-property');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/stable/object/define-property.js\n// module id = 224\n// module chunks = 0 1","module.exports = require(\"core-js-pure/features/symbol\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js/symbol.js\n// module id = 225\n// module chunks = 0 1","var parent = require('../../es/symbol');\nrequire('../../modules/web.dom-collections.iterator');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/stable/symbol/index.js\n// module id = 226\n// module chunks = 0 1","var call = require('../internals/function-call');\nvar getBuiltIn = require('../internals/get-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar defineBuiltIn = require('../internals/define-built-in');\n\nmodule.exports = function () {\n var Symbol = getBuiltIn('Symbol');\n var SymbolPrototype = Symbol && Symbol.prototype;\n var valueOf = SymbolPrototype && SymbolPrototype.valueOf;\n var TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n if (SymbolPrototype && !SymbolPrototype[TO_PRIMITIVE]) {\n // `Symbol.prototype[@@toPrimitive]` method\n // https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\n // eslint-disable-next-line no-unused-vars -- required for .length\n defineBuiltIn(SymbolPrototype, TO_PRIMITIVE, function (hint) {\n return call(valueOf, this);\n }, { arity: 1 });\n }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/symbol-define-to-primitive.js\n// module id = 227\n// module chunks = 0 1","var NATIVE_SYMBOL = require('../internals/native-symbol');\n\n/* eslint-disable es-x/no-symbol -- safe */\nmodule.exports = NATIVE_SYMBOL && !!Symbol['for'] && !!Symbol.keyFor;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/native-symbol-registry.js\n// module id = 228\n// module chunks = 0 1","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.iterator` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.iterator\ndefineWellKnownSymbol('iterator');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.symbol.iterator.js\n// module id = 229\n// module chunks = 0 1","var parent = require('../../es/array/from');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/stable/array/from.js\n// module id = 230\n// module chunks = 0 1","module.exports = require(\"core-js-pure/features/get-iterator-method\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js/get-iterator-method.js\n// module id = 231\n// module chunks = 0 1","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar isObject = require('../internals/is-object');\nvar hasOwn = require('../internals/has-own-property');\nvar arraySlice = require('../internals/array-slice');\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar $Function = Function;\nvar concat = uncurryThis([].concat);\nvar join = uncurryThis([].join);\nvar factories = {};\n\nvar construct = function (C, argsLength, args) {\n if (!hasOwn(factories, argsLength)) {\n for (var list = [], i = 0; i < argsLength; i++) list[i] = 'a[' + i + ']';\n factories[argsLength] = $Function('C,a', 'return new C(' + join(list, ',') + ')');\n } return factories[argsLength](C, args);\n};\n\n// `Function.prototype.bind` method implementation\n// https://tc39.es/ecma262/#sec-function.prototype.bind\nmodule.exports = NATIVE_BIND ? $Function.bind : function bind(that /* , ...args */) {\n var F = aCallable(this);\n var Prototype = F.prototype;\n var partArgs = arraySlice(arguments, 1);\n var boundFunction = function bound(/* args... */) {\n var args = concat(partArgs, arraySlice(arguments));\n return this instanceof boundFunction ? construct(F, args.length, args) : F.apply(that, args);\n };\n if (isObject(Prototype)) boundFunction.prototype = Prototype;\n return boundFunction;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/function-bind.js\n// module id = 232\n// module chunks = 0 1","module.exports = require(\"core-js-pure/features/object/set-prototype-of\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js/object/set-prototype-of.js\n// module id = 233\n// module chunks = 0 1","module.exports = require(\"core-js-pure/features/instance/bind\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js/instance/bind.js\n// module id = 234\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 = 235\n// module chunks = 0 1","module.exports = require('../index');\n\n\n\n// WEBPACK FOOTER //\n// ./src/entry/core.js","/*!\n * LeanCloud JavaScript SDK\n * https://leancloud.cn\n *\n * Copyright 2016 LeanCloud.cn, Inc.\n * The LeanCloud JavaScript SDK is freely distributable under the MIT license.\n */\nconst _ = require('underscore');\n\nconst AV = require('./av');\n\nAV._ = _;\nAV.version = require('./version');\nAV.Promise = Promise;\nAV.localStorage = require('./localstorage');\nAV.Cache = require('./cache');\nAV.Error = require('./error');\n\nrequire('./init');\nrequire('./event')(AV);\nrequire('./geopoint')(AV);\nrequire('./acl')(AV);\nrequire('./op')(AV);\nrequire('./relation')(AV);\nrequire('./file')(AV);\nrequire('./object')(AV);\nrequire('./role')(AV);\nrequire('./user')(AV);\nrequire('./query')(AV);\nrequire('./live-query')(AV);\nrequire('./captcha')(AV);\nrequire('./cloudfunction')(AV);\nrequire('./push')(AV);\nrequire('./status')(AV);\nrequire('./search')(AV);\nrequire('./insight')(AV);\nrequire('./friendship')(AV);\n\nAV.Conversation = require('./conversation');\nrequire('./leaderboard');\nmodule.exports = AV;\n\n/**\n * Options to controll the authentication for an operation\n * @typedef {Object} AuthOptions\n * @property {String} [sessionToken] Specify a user to excute the operation as.\n * @property {AV.User} [user] Specify a user to excute the operation as. The user must have _sessionToken. This option will be ignored if sessionToken option provided.\n * @property {Boolean} [useMasterKey] Indicates whether masterKey is used for this operation. Only valid when masterKey is set.\n */\n\n/**\n * Options to controll the authentication for an SMS operation\n * @typedef {Object} SMSAuthOptions\n * @property {String} [sessionToken] Specify a user to excute the operation as.\n * @property {AV.User} [user] Specify a user to excute the operation as. The user must have _sessionToken. This option will be ignored if sessionToken option provided.\n * @property {Boolean} [useMasterKey] Indicates whether masterKey is used for this operation. Only valid when masterKey is set.\n * @property {String} [validateToken] a validate token returned by {@link AV.Cloud.verifyCaptcha}\n */\n\n\n\n// WEBPACK FOOTER //\n// ./src/index.js","var parent = require('../../es/promise');\nrequire('../../modules/web.dom-collections.iterator');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/stable/promise/index.js\n// module id = 238\n// module chunks = 0 1","require('../../modules/es.aggregate-error');\nrequire('../../modules/es.array.iterator');\nrequire('../../modules/es.object.to-string');\nrequire('../../modules/es.promise');\nrequire('../../modules/es.promise.all-settled');\nrequire('../../modules/es.promise.any');\nrequire('../../modules/es.promise.finally');\nrequire('../../modules/es.string.iterator');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Promise;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/promise/index.js\n// module id = 239\n// module chunks = 0 1","// TODO: Remove this module from `core-js@4` since it's replaced to module below\nrequire('../modules/es.aggregate-error.constructor');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.aggregate-error.js\n// module id = 240\n// module chunks = 0 1","'use strict';\nvar $ = require('../internals/export');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar create = require('../internals/object-create');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar clearErrorStack = require('../internals/clear-error-stack');\nvar installErrorCause = require('../internals/install-error-cause');\nvar iterate = require('../internals/iterate');\nvar normalizeStringArgument = require('../internals/normalize-string-argument');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar ERROR_STACK_INSTALLABLE = require('../internals/error-stack-installable');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar $Error = Error;\nvar push = [].push;\n\nvar $AggregateError = function AggregateError(errors, message /* , options */) {\n var options = arguments.length > 2 ? arguments[2] : undefined;\n var isInstance = isPrototypeOf(AggregateErrorPrototype, this);\n var that;\n if (setPrototypeOf) {\n that = setPrototypeOf(new $Error(), isInstance ? getPrototypeOf(this) : AggregateErrorPrototype);\n } else {\n that = isInstance ? this : create(AggregateErrorPrototype);\n createNonEnumerableProperty(that, TO_STRING_TAG, 'Error');\n }\n if (message !== undefined) createNonEnumerableProperty(that, 'message', normalizeStringArgument(message));\n if (ERROR_STACK_INSTALLABLE) createNonEnumerableProperty(that, 'stack', clearErrorStack(that.stack, 1));\n installErrorCause(that, options);\n var errorsArray = [];\n iterate(errors, push, { that: errorsArray });\n createNonEnumerableProperty(that, 'errors', errorsArray);\n return that;\n};\n\nif (setPrototypeOf) setPrototypeOf($AggregateError, $Error);\nelse copyConstructorProperties($AggregateError, $Error, { name: true });\n\nvar AggregateErrorPrototype = $AggregateError.prototype = create($Error.prototype, {\n constructor: createPropertyDescriptor(1, $AggregateError),\n message: createPropertyDescriptor(1, ''),\n name: createPropertyDescriptor(1, 'AggregateError')\n});\n\n// `AggregateError` constructor\n// https://tc39.es/ecma262/#sec-aggregate-error-constructor\n$({ global: true, constructor: true, arity: 2 }, {\n AggregateError: $AggregateError\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.aggregate-error.constructor.js\n// module id = 241\n// module chunks = 0 1","var call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar $TypeError = TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n var result;\n if (exoticToPrim) {\n if (pref === undefined) pref = 'default';\n result = call(exoticToPrim, input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw $TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/to-primitive.js\n// module id = 242\n// module chunks = 0 1","var call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar $TypeError = TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n var fn, val;\n if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) 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-pure/internals/ordinary-to-primitive.js\n// module id = 243\n// module chunks = 0 1","var global = require('../internals/global');\n\n// eslint-disable-next-line es-x/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n try {\n defineProperty(global, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n global[key] = value;\n } return value;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/define-global-property.js\n// module id = 244\n// module chunks = 0 1","var isCallable = require('../internals/is-callable');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument) {\n if (typeof argument == 'object' || isCallable(argument)) return argument;\n throw $TypeError(\"Can't set \" + $String(argument) + ' as a prototype');\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/a-possible-prototype.js\n// module id = 245\n// module chunks = 0 1","var hasOwn = require('../internals/has-own-property');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source, exceptions) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\n defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/copy-constructor-properties.js\n// module id = 246\n// module chunks = 0 1","var getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\nvar concat = uncurryThis([].concat);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/own-keys.js\n// module id = 247\n// module chunks = 0 1","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `Math.trunc` method\n// https://tc39.es/ecma262/#sec-math.trunc\n// eslint-disable-next-line es-x/no-math-trunc -- safe\nmodule.exports = Math.trunc || function trunc(x) {\n var n = +x;\n return (n > 0 ? floor : ceil)(n);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/math-trunc.js\n// module id = 248\n// module chunks = 0 1","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/to-length.js\n// module id = 249\n// module chunks = 0 1","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar $Error = Error;\nvar replace = uncurryThis(''.replace);\n\nvar TEST = (function (arg) { return String($Error(arg).stack); })('zxcasd');\nvar V8_OR_CHAKRA_STACK_ENTRY = /\\n\\s*at [^:]*:[^\\n]*/;\nvar IS_V8_OR_CHAKRA_STACK = V8_OR_CHAKRA_STACK_ENTRY.test(TEST);\n\nmodule.exports = function (stack, dropEntries) {\n if (IS_V8_OR_CHAKRA_STACK && typeof stack == 'string' && !$Error.prepareStackTrace) {\n while (dropEntries--) stack = replace(stack, V8_OR_CHAKRA_STACK_ENTRY, '');\n } return stack;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/clear-error-stack.js\n// module id = 250\n// module chunks = 0 1","var isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\n// `InstallErrorCause` abstract operation\n// https://tc39.es/proposal-error-cause/#sec-errorobjects-install-error-cause\nmodule.exports = function (O, options) {\n if (isObject(options) && 'cause' in options) {\n createNonEnumerableProperty(O, 'cause', options.cause);\n }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/install-error-cause.js\n// module id = 251\n// module chunks = 0 1","var toString = require('../internals/to-string');\n\nmodule.exports = function (argument, $default) {\n return argument === undefined ? arguments.length < 2 ? '' : $default : toString(argument);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/normalize-string-argument.js\n// module id = 252\n// module chunks = 0 1","var fails = require('../internals/fails');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = !fails(function () {\n var error = Error('a');\n if (!('stack' in error)) return true;\n // eslint-disable-next-line es-x/no-object-defineproperty -- safe\n Object.defineProperty(error, 'stack', createPropertyDescriptor(1, 7));\n return error.stack !== 7;\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/error-stack-installable.js\n// module id = 253\n// module chunks = 0 1","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar inspectSource = require('../internals/inspect-source');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(inspectSource(WeakMap));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/native-weak-map.js\n// module id = 254\n// module chunks = 0 1","var DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n EXISTS: EXISTS,\n PROPER: PROPER,\n CONFIGURABLE: CONFIGURABLE\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/function-name.js\n// module id = 255\n// module chunks = 0 1","'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next, ENUMERABLE_NEXT) {\n var TO_STRING_TAG = NAME + ' Iterator';\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(+!ENUMERABLE_NEXT, next) });\n setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n Iterators[TO_STRING_TAG] = returnThis;\n return IteratorConstructor;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/create-iterator-constructor.js\n// module id = 256\n// module chunks = 0 1","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classof = require('../internals/classof');\n\n// `Object.prototype.toString` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n return '[object ' + classof(this) + ']';\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/object-to-string.js\n// module id = 257\n// module chunks = 0 1","// TODO: Remove this module from `core-js@4` since it's split to modules listed below\nrequire('../modules/es.promise.constructor');\nrequire('../modules/es.promise.all');\nrequire('../modules/es.promise.catch');\nrequire('../modules/es.promise.race');\nrequire('../modules/es.promise.reject');\nrequire('../modules/es.promise.resolve');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.promise.js\n// module id = 258\n// module chunks = 0 1","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar IS_NODE = require('../internals/engine-is-node');\nvar global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar setSpecies = require('../internals/set-species');\nvar aCallable = require('../internals/a-callable');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar anInstance = require('../internals/an-instance');\nvar speciesConstructor = require('../internals/species-constructor');\nvar task = require('../internals/task').set;\nvar microtask = require('../internals/microtask');\nvar hostReportErrors = require('../internals/host-report-errors');\nvar perform = require('../internals/perform');\nvar Queue = require('../internals/queue');\nvar InternalStateModule = require('../internals/internal-state');\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar PromiseConstructorDetection = require('../internals/promise-constructor-detection');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\n\nvar PROMISE = 'Promise';\nvar FORCED_PROMISE_CONSTRUCTOR = PromiseConstructorDetection.CONSTRUCTOR;\nvar NATIVE_PROMISE_REJECTION_EVENT = PromiseConstructorDetection.REJECTION_EVENT;\nvar NATIVE_PROMISE_SUBCLASSING = PromiseConstructorDetection.SUBCLASSING;\nvar getInternalPromiseState = InternalStateModule.getterFor(PROMISE);\nvar setInternalState = InternalStateModule.set;\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\nvar PromiseConstructor = NativePromiseConstructor;\nvar PromisePrototype = NativePromisePrototype;\nvar TypeError = global.TypeError;\nvar document = global.document;\nvar process = global.process;\nvar newPromiseCapability = newPromiseCapabilityModule.f;\nvar newGenericPromiseCapability = newPromiseCapability;\n\nvar DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent);\nvar UNHANDLED_REJECTION = 'unhandledrejection';\nvar REJECTION_HANDLED = 'rejectionhandled';\nvar PENDING = 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\nvar HANDLED = 1;\nvar UNHANDLED = 2;\n\nvar Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && isCallable(then = it.then) ? then : false;\n};\n\nvar callReaction = function (reaction, state) {\n var value = state.value;\n var ok = state.state == FULFILLED;\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 (state.rejection === UNHANDLED) onHandleUnhandled(state);\n state.rejection = HANDLED;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // can 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 call(then, result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (error) {\n if (domain && !exited) domain.exit();\n reject(error);\n }\n};\n\nvar notify = function (state, isReject) {\n if (state.notified) return;\n state.notified = true;\n microtask(function () {\n var reactions = state.reactions;\n var reaction;\n while (reaction = reactions.get()) {\n callReaction(reaction, state);\n }\n state.notified = false;\n if (isReject && !state.rejection) onUnhandled(state);\n });\n};\n\nvar dispatchEvent = function (name, promise, reason) {\n var event, handler;\n if (DISPATCH_EVENT) {\n event = document.createEvent('Event');\n event.promise = promise;\n event.reason = reason;\n event.initEvent(name, false, true);\n global.dispatchEvent(event);\n } else event = { promise: promise, reason: reason };\n if (!NATIVE_PROMISE_REJECTION_EVENT && (handler = global['on' + name])) handler(event);\n else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason);\n};\n\nvar onUnhandled = function (state) {\n call(task, global, function () {\n var promise = state.facade;\n var value = state.value;\n var IS_UNHANDLED = isUnhandled(state);\n var result;\n if (IS_UNHANDLED) {\n result = perform(function () {\n if (IS_NODE) {\n process.emit('unhandledRejection', value, promise);\n } else dispatchEvent(UNHANDLED_REJECTION, promise, value);\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED;\n if (result.error) throw result.value;\n }\n });\n};\n\nvar isUnhandled = function (state) {\n return state.rejection !== HANDLED && !state.parent;\n};\n\nvar onHandleUnhandled = function (state) {\n call(task, global, function () {\n var promise = state.facade;\n if (IS_NODE) {\n process.emit('rejectionHandled', promise);\n } else dispatchEvent(REJECTION_HANDLED, promise, state.value);\n });\n};\n\nvar bind = function (fn, state, unwrap) {\n return function (value) {\n fn(state, value, unwrap);\n };\n};\n\nvar internalReject = function (state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n state.value = value;\n state.state = REJECTED;\n notify(state, true);\n};\n\nvar internalResolve = function (state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n try {\n if (state.facade === value) throw TypeError(\"Promise can't be resolved itself\");\n var then = isThenable(value);\n if (then) {\n microtask(function () {\n var wrapper = { done: false };\n try {\n call(then, value,\n bind(internalResolve, wrapper, state),\n bind(internalReject, wrapper, state)\n );\n } catch (error) {\n internalReject(wrapper, error, state);\n }\n });\n } else {\n state.value = value;\n state.state = FULFILLED;\n notify(state, false);\n }\n } catch (error) {\n internalReject({ done: false }, error, state);\n }\n};\n\n// constructor polyfill\nif (FORCED_PROMISE_CONSTRUCTOR) {\n // 25.4.3.1 Promise(executor)\n PromiseConstructor = function Promise(executor) {\n anInstance(this, PromisePrototype);\n aCallable(executor);\n call(Internal, this);\n var state = getInternalPromiseState(this);\n try {\n executor(bind(internalResolve, state), bind(internalReject, state));\n } catch (error) {\n internalReject(state, error);\n }\n };\n\n PromisePrototype = PromiseConstructor.prototype;\n\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n Internal = function Promise(executor) {\n setInternalState(this, {\n type: PROMISE,\n done: false,\n notified: false,\n parent: false,\n reactions: new Queue(),\n rejection: false,\n state: PENDING,\n value: undefined\n });\n };\n\n // `Promise.prototype.then` method\n // https://tc39.es/ecma262/#sec-promise.prototype.then\n Internal.prototype = defineBuiltIn(PromisePrototype, 'then', function then(onFulfilled, onRejected) {\n var state = getInternalPromiseState(this);\n var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor));\n state.parent = true;\n reaction.ok = isCallable(onFulfilled) ? onFulfilled : true;\n reaction.fail = isCallable(onRejected) && onRejected;\n reaction.domain = IS_NODE ? process.domain : undefined;\n if (state.state == PENDING) state.reactions.add(reaction);\n else microtask(function () {\n callReaction(reaction, state);\n });\n return reaction.promise;\n });\n\n OwnPromiseCapability = function () {\n var promise = new Internal();\n var state = getInternalPromiseState(promise);\n this.promise = promise;\n this.resolve = bind(internalResolve, state);\n this.reject = bind(internalReject, state);\n };\n\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === PromiseConstructor || C === PromiseWrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n\n if (!IS_PURE && isCallable(NativePromiseConstructor) && NativePromisePrototype !== Object.prototype) {\n nativeThen = NativePromisePrototype.then;\n\n if (!NATIVE_PROMISE_SUBCLASSING) {\n // make `Promise#then` return a polyfilled `Promise` for native promise-based APIs\n defineBuiltIn(NativePromisePrototype, 'then', function then(onFulfilled, onRejected) {\n var that = this;\n return new PromiseConstructor(function (resolve, reject) {\n call(nativeThen, that, resolve, reject);\n }).then(onFulfilled, onRejected);\n // https://github.com/zloirock/core-js/issues/640\n }, { unsafe: true });\n }\n\n // make `.constructor === Promise` work for native promise-based APIs\n try {\n delete NativePromisePrototype.constructor;\n } catch (error) { /* empty */ }\n\n // make `instanceof Promise` work for native promise-based APIs\n if (setPrototypeOf) {\n setPrototypeOf(NativePromisePrototype, PromisePrototype);\n }\n }\n}\n\n$({ global: true, constructor: true, wrap: true, forced: FORCED_PROMISE_CONSTRUCTOR }, {\n Promise: PromiseConstructor\n});\n\nsetToStringTag(PromiseConstructor, PROMISE, false, true);\nsetSpecies(PROMISE);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.promise.constructor.js\n// module id = 259\n// module chunks = 0 1","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar definePropertyModule = require('../internals/object-define-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n var defineProperty = definePropertyModule.f;\n\n if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n defineProperty(Constructor, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/set-species.js\n// module id = 260\n// module chunks = 0 1","var isPrototypeOf = require('../internals/object-is-prototype-of');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (it, Prototype) {\n if (isPrototypeOf(Prototype, it)) return it;\n throw $TypeError('Incorrect invocation');\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/an-instance.js\n// module id = 261\n// module chunks = 0 1","var $TypeError = TypeError;\n\nmodule.exports = function (passed, required) {\n if (passed < required) throw $TypeError('Not enough arguments');\n return passed;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/validate-arguments-length.js\n// module id = 262\n// module chunks = 0 1","var global = require('../internals/global');\nvar bind = require('../internals/function-bind-context');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar macrotask = require('../internals/task').set;\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_IOS_PEBBLE = require('../internals/engine-is-ios-pebble');\nvar IS_WEBOS_WEBKIT = require('../internals/engine-is-webos-webkit');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar MutationObserver = global.MutationObserver || global.WebKitMutationObserver;\nvar document = global.document;\nvar process = global.process;\nvar Promise = global.Promise;\n// Node.js 11 shows ExperimentalWarning on getting `queueMicrotask`\nvar queueMicrotaskDescriptor = getOwnPropertyDescriptor(global, 'queueMicrotask');\nvar queueMicrotask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value;\n\nvar flush, head, last, notify, toggle, node, promise, then;\n\n// modern engines have queueMicrotask method\nif (!queueMicrotask) {\n flush = function () {\n var parent, fn;\n if (IS_NODE && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (error) {\n if (head) notify();\n else last = undefined;\n throw error;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339\n // also except WebOS Webkit https://github.com/zloirock/core-js/issues/898\n if (!IS_IOS && !IS_NODE && !IS_WEBOS_WEBKIT && MutationObserver && document) {\n toggle = true;\n node = document.createTextNode('');\n new MutationObserver(flush).observe(node, { characterData: true });\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (!IS_IOS_PEBBLE && Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n promise = Promise.resolve(undefined);\n // workaround of WebKit ~ iOS Safari 10.1 bug\n promise.constructor = Promise;\n then = bind(promise.then, promise);\n notify = function () {\n then(flush);\n };\n // Node.js without promises\n } else if (IS_NODE) {\n notify = function () {\n process.nextTick(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessage\n // - onreadystatechange\n // - setTimeout\n } else {\n // strange IE + webpack dev server bug - use .bind(global)\n macrotask = bind(macrotask, global);\n notify = function () {\n macrotask(flush);\n };\n }\n}\n\nmodule.exports = queueMicrotask || 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// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/microtask.js\n// module id = 263\n// module chunks = 0 1","var userAgent = require('../internals/engine-user-agent');\nvar global = require('../internals/global');\n\nmodule.exports = /ipad|iphone|ipod/i.test(userAgent) && global.Pebble !== undefined;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/engine-is-ios-pebble.js\n// module id = 264\n// module chunks = 0 1","var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /web0s(?!.*chrome)/i.test(userAgent);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/engine-is-webos-webkit.js\n// module id = 265\n// module chunks = 0 1","var global = require('../internals/global');\n\nmodule.exports = function (a, b) {\n var console = global.console;\n if (console && console.error) {\n arguments.length == 1 ? console.error(a) : console.error(a, b);\n }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/host-report-errors.js\n// module id = 266\n// module chunks = 0 1","var Queue = function () {\n this.head = null;\n this.tail = null;\n};\n\nQueue.prototype = {\n add: function (item) {\n var entry = { item: item, next: null };\n if (this.head) this.tail.next = entry;\n else this.head = entry;\n this.tail = entry;\n },\n get: function () {\n var entry = this.head;\n if (entry) {\n this.head = entry.next;\n if (this.tail === entry) this.tail = null;\n return entry.item;\n }\n }\n};\n\nmodule.exports = Queue;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/queue.js\n// module id = 267\n// module chunks = 0 1","module.exports = typeof window == 'object' && typeof Deno != 'object';\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/engine-is-browser.js\n// module id = 268\n// module chunks = 0 1","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar iterate = require('../internals/iterate');\nvar PROMISE_STATICS_INCORRECT_ITERATION = require('../internals/promise-statics-incorrect-iteration');\n\n// `Promise.all` method\n// https://tc39.es/ecma262/#sec-promise.all\n$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, {\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapabilityModule.f(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aCallable(C.resolve);\n var values = [];\n var counter = 0;\n var remaining = 1;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyCalled = false;\n remaining++;\n call($promiseResolve, C, 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.error) reject(result.value);\n return capability.promise;\n }\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.promise.all.js\n// module id = 269\n// module chunks = 0 1","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar defineBuiltIn = require('../internals/define-built-in');\n\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\n\n// `Promise.prototype.catch` method\n// https://tc39.es/ecma262/#sec-promise.prototype.catch\n$({ target: 'Promise', proto: true, forced: FORCED_PROMISE_CONSTRUCTOR, real: true }, {\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n});\n\n// makes sure that native promise-based APIs `Promise#catch` properly works with patched `Promise#then`\nif (!IS_PURE && isCallable(NativePromiseConstructor)) {\n var method = getBuiltIn('Promise').prototype['catch'];\n if (NativePromisePrototype['catch'] !== method) {\n defineBuiltIn(NativePromisePrototype, 'catch', method, { unsafe: true });\n }\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.promise.catch.js\n// module id = 270\n// module chunks = 0 1","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar iterate = require('../internals/iterate');\nvar PROMISE_STATICS_INCORRECT_ITERATION = require('../internals/promise-statics-incorrect-iteration');\n\n// `Promise.race` method\n// https://tc39.es/ecma262/#sec-promise.race\n$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, {\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapabilityModule.f(C);\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aCallable(C.resolve);\n iterate(iterable, function (promise) {\n call($promiseResolve, C, promise).then(capability.resolve, reject);\n });\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.promise.race.js\n// module id = 271\n// module chunks = 0 1","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\n\n// `Promise.reject` method\n// https://tc39.es/ecma262/#sec-promise.reject\n$({ target: 'Promise', stat: true, forced: FORCED_PROMISE_CONSTRUCTOR }, {\n reject: function reject(r) {\n var capability = newPromiseCapabilityModule.f(this);\n call(capability.reject, undefined, r);\n return capability.promise;\n }\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.promise.reject.js\n// module id = 272\n// module chunks = 0 1","'use strict';\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar IS_PURE = require('../internals/is-pure');\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\nvar promiseResolve = require('../internals/promise-resolve');\n\nvar PromiseConstructorWrapper = getBuiltIn('Promise');\nvar CHECK_WRAPPER = IS_PURE && !FORCED_PROMISE_CONSTRUCTOR;\n\n// `Promise.resolve` method\n// https://tc39.es/ecma262/#sec-promise.resolve\n$({ target: 'Promise', stat: true, forced: IS_PURE || FORCED_PROMISE_CONSTRUCTOR }, {\n resolve: function resolve(x) {\n return promiseResolve(CHECK_WRAPPER && this === PromiseConstructorWrapper ? NativePromiseConstructor : this, x);\n }\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.promise.resolve.js\n// module id = 273\n// module chunks = 0 1","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar iterate = require('../internals/iterate');\n\n// `Promise.allSettled` method\n// https://tc39.es/ecma262/#sec-promise.allsettled\n$({ target: 'Promise', stat: true }, {\n allSettled: function allSettled(iterable) {\n var C = this;\n var capability = newPromiseCapabilityModule.f(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var promiseResolve = aCallable(C.resolve);\n var values = [];\n var counter = 0;\n var remaining = 1;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyCalled = false;\n remaining++;\n call(promiseResolve, C, promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[index] = { status: 'fulfilled', value: value };\n --remaining || resolve(values);\n }, function (error) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[index] = { status: 'rejected', reason: error };\n --remaining || resolve(values);\n });\n });\n --remaining || resolve(values);\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.promise.all-settled.js\n// module id = 274\n// module chunks = 0 1","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar getBuiltIn = require('../internals/get-built-in');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar iterate = require('../internals/iterate');\n\nvar PROMISE_ANY_ERROR = 'No one promise resolved';\n\n// `Promise.any` method\n// https://tc39.es/ecma262/#sec-promise.any\n$({ target: 'Promise', stat: true }, {\n any: function any(iterable) {\n var C = this;\n var AggregateError = getBuiltIn('AggregateError');\n var capability = newPromiseCapabilityModule.f(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var promiseResolve = aCallable(C.resolve);\n var errors = [];\n var counter = 0;\n var remaining = 1;\n var alreadyResolved = false;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyRejected = false;\n remaining++;\n call(promiseResolve, C, promise).then(function (value) {\n if (alreadyRejected || alreadyResolved) return;\n alreadyResolved = true;\n resolve(value);\n }, function (error) {\n if (alreadyRejected || alreadyResolved) return;\n alreadyRejected = true;\n errors[index] = error;\n --remaining || reject(new AggregateError(errors, PROMISE_ANY_ERROR));\n });\n });\n --remaining || reject(new AggregateError(errors, PROMISE_ANY_ERROR));\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.promise.any.js\n// module id = 275\n// module chunks = 0 1","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar fails = require('../internals/fails');\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar speciesConstructor = require('../internals/species-constructor');\nvar promiseResolve = require('../internals/promise-resolve');\nvar defineBuiltIn = require('../internals/define-built-in');\n\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\n\n// Safari bug https://bugs.webkit.org/show_bug.cgi?id=200829\nvar NON_GENERIC = !!NativePromiseConstructor && fails(function () {\n // eslint-disable-next-line unicorn/no-thenable -- required for testing\n NativePromisePrototype['finally'].call({ then: function () { /* empty */ } }, function () { /* empty */ });\n});\n\n// `Promise.prototype.finally` method\n// https://tc39.es/ecma262/#sec-promise.prototype.finally\n$({ target: 'Promise', proto: true, real: true, forced: NON_GENERIC }, {\n 'finally': function (onFinally) {\n var C = speciesConstructor(this, getBuiltIn('Promise'));\n var isFunction = isCallable(onFinally);\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// makes sure that native promise-based APIs `Promise#finally` properly works with patched `Promise#then`\nif (!IS_PURE && isCallable(NativePromiseConstructor)) {\n var method = getBuiltIn('Promise').prototype['finally'];\n if (NativePromisePrototype['finally'] !== method) {\n defineBuiltIn(NativePromisePrototype, 'finally', method, { unsafe: true });\n }\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.promise.finally.js\n// module id = 276\n// module chunks = 0 1","var uncurryThis = require('../internals/function-uncurry-this');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar stringSlice = uncurryThis(''.slice);\n\nvar createMethod = function (CONVERT_TO_STRING) {\n return function ($this, pos) {\n var S = toString(requireObjectCoercible($this));\n var position = toIntegerOrInfinity(pos);\n var size = S.length;\n var first, second;\n if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n first = charCodeAt(S, position);\n return first < 0xD800 || first > 0xDBFF || position + 1 === size\n || (second = charCodeAt(S, position + 1)) < 0xDC00 || second > 0xDFFF\n ? CONVERT_TO_STRING\n ? charAt(S, position)\n : first\n : CONVERT_TO_STRING\n ? stringSlice(S, position, position + 2)\n : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n };\n};\n\nmodule.exports = {\n // `String.prototype.codePointAt` method\n // https://tc39.es/ecma262/#sec-string.prototype.codepointat\n codeAt: createMethod(false),\n // `String.prototype.at` method\n // https://github.com/mathiasbynens/String.prototype.at\n charAt: createMethod(true)\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/string-multibyte.js\n// module id = 277\n// module chunks = 0 1","// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n CSSRuleList: 0,\n CSSStyleDeclaration: 0,\n CSSValueList: 0,\n ClientRectList: 0,\n DOMRectList: 0,\n DOMStringList: 0,\n DOMTokenList: 1,\n DataTransferItemList: 0,\n FileList: 0,\n HTMLAllCollection: 0,\n HTMLCollection: 0,\n HTMLFormElement: 0,\n HTMLSelectElement: 0,\n MediaList: 0,\n MimeTypeArray: 0,\n NamedNodeMap: 0,\n NodeList: 1,\n PaintRequestList: 0,\n Plugin: 0,\n PluginArray: 0,\n SVGLengthList: 0,\n SVGNumberList: 0,\n SVGPathSegList: 0,\n SVGPointList: 0,\n SVGStringList: 0,\n SVGTransformList: 0,\n SourceBufferList: 0,\n StyleSheetList: 0,\n TextTrackCueList: 0,\n TextTrackList: 0,\n TouchList: 0\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/dom-iterables.js\n// module id = 278\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 = 279\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 = 280\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 = 281\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 = 282\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 = 283\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 = 284\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 = 285\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 = 286\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 = 287\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 = 288\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 = 289\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 = 290\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 = 291\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 = 292\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 = 293\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 = 294\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 = 295\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 = 296\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 = 297\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 = 298\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 = 299\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 = 300\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 = 301\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 = 302\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 = 303\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 = 304\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 = 305\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 = 306\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 = 307\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 = 308\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 = 309\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 = 310\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 = 311\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 = 312\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 = 313\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 = 314\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 = 315\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 = 316\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 = 317\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 = 318\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 = 319\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 = 320\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 = 321\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 = 322\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 = 323\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 = 324\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 = 325\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 = 326\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 = 327\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 = 328\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 = 329\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 = 330\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 = 331\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 = 332\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 = 333\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 = 334\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 = 335\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 = 336\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 = 337\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 = 338\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 = 339\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 = 340\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 = 341\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 = 342\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 = 343\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 = 344\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 = 345\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 = 346\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 = 347\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 = 348\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 = 349\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 = 350\n// module chunks = 0 1","var parent = require('../../es/instance/concat');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/stable/instance/concat.js\n// module id = 351\n// module chunks = 0 1","var isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../array/virtual/concat');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n var own = it.concat;\n return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.concat) ? method : own;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/instance/concat.js\n// module id = 352\n// module chunks = 0 1","require('../../../modules/es.array.concat');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').concat;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/array/virtual/concat.js\n// module id = 353\n// module chunks = 0 1","var $TypeError = TypeError;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; // 2 ** 53 - 1 == 9007199254740991\n\nmodule.exports = function (it) {\n if (it > MAX_SAFE_INTEGER) throw $TypeError('Maximum allowed index exceeded');\n return it;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/does-not-exceed-safe-integer.js\n// module id = 354\n// module chunks = 0 1","var isArray = require('../internals/is-array');\nvar isConstructor = require('../internals/is-constructor');\nvar isObject = require('../internals/is-object');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\nvar $Array = Array;\n\n// a part of `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray) {\n var C;\n if (isArray(originalArray)) {\n C = originalArray.constructor;\n // cross-realm fallback\n if (isConstructor(C) && (C === $Array || isArray(C.prototype))) C = undefined;\n else 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-pure/internals/array-species-constructor.js\n// module id = 355\n// module chunks = 0 1","var parent = require('../../es/instance/map');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/stable/instance/map.js\n// module id = 356\n// module chunks = 0 1","var isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../array/virtual/map');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n var own = it.map;\n return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.map) ? method : own;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/instance/map.js\n// module id = 357\n// module chunks = 0 1","require('../../../modules/es.array.map');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').map;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/array/virtual/map.js\n// module id = 358\n// module chunks = 0 1","'use strict';\nvar $ = require('../internals/export');\nvar $map = require('../internals/array-iteration').map;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map');\n\n// `Array.prototype.map` method\n// https://tc39.es/ecma262/#sec-array.prototype.map\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.array.map.js\n// module id = 359\n// module chunks = 0 1","var parent = require('../../es/object/keys');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/stable/object/keys.js\n// module id = 360\n// module chunks = 0 1","require('../../modules/es.object.keys');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Object.keys;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/object/keys.js\n// module id = 361\n// module chunks = 0 1","var $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar nativeKeys = require('../internals/object-keys');\nvar fails = require('../internals/fails');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); });\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n keys: function keys(it) {\n return nativeKeys(toObject(it));\n }\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.object.keys.js\n// module id = 362\n// module chunks = 0 1","var parent = require('../../es/json/stringify');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/stable/json/stringify.js\n// module id = 363\n// module chunks = 0 1","require('../../modules/es.json.stringify');\nvar path = require('../../internals/path');\nvar apply = require('../../internals/function-apply');\n\n// eslint-disable-next-line es-x/no-json -- safe\nif (!path.JSON) path.JSON = { stringify: JSON.stringify };\n\n// eslint-disable-next-line no-unused-vars -- required for `.length`\nmodule.exports = function stringify(it, replacer, space) {\n return apply(path.JSON.stringify, null, arguments);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/json/stringify.js\n// module id = 364\n// module chunks = 0 1","var parent = require('../../es/instance/index-of');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/stable/instance/index-of.js\n// module id = 365\n// module chunks = 0 1","var isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../array/virtual/index-of');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n var own = it.indexOf;\n return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.indexOf) ? method : own;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/instance/index-of.js\n// module id = 366\n// module chunks = 0 1","require('../../../modules/es.array.index-of');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').indexOf;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/array/virtual/index-of.js\n// module id = 367\n// module chunks = 0 1","'use strict';\n/* eslint-disable es-x/no-array-prototype-indexof -- required for testing */\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar $IndexOf = require('../internals/array-includes').indexOf;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar un$IndexOf = uncurryThis([].indexOf);\n\nvar NEGATIVE_ZERO = !!un$IndexOf && 1 / un$IndexOf([1], 1, -0) < 0;\nvar STRICT_METHOD = arrayMethodIsStrict('indexOf');\n\n// `Array.prototype.indexOf` method\n// https://tc39.es/ecma262/#sec-array.prototype.indexof\n$({ target: 'Array', proto: true, forced: NEGATIVE_ZERO || !STRICT_METHOD }, {\n indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n var fromIndex = arguments.length > 1 ? arguments[1] : undefined;\n return NEGATIVE_ZERO\n // convert -0 to +0\n ? un$IndexOf(this, searchElement, fromIndex) || 0\n : $IndexOf(this, searchElement, fromIndex);\n }\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.array.index-of.js\n// module id = 368\n// module chunks = 0 1","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = function (METHOD_NAME, argument) {\n var method = [][METHOD_NAME];\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call -- required for testing\n method.call(null, argument || function () { return 1; }, 1);\n });\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/array-method-is-strict.js\n// module id = 369\n// module chunks = 0 1","require('../../modules/web.dom-collections.iterator');\nvar classof = require('../../internals/classof');\nvar hasOwn = require('../../internals/has-own-property');\nvar isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../array/virtual/keys');\n\nvar ArrayPrototype = Array.prototype;\n\nvar DOMIterables = {\n DOMTokenList: true,\n NodeList: true\n};\n\nmodule.exports = function (it) {\n var own = it.keys;\n return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.keys)\n || hasOwn(DOMIterables, classof(it)) ? method : own;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/stable/instance/keys.js\n// module id = 370\n// module chunks = 0 1","var parent = require('../../../es/array/virtual/keys');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/stable/array/virtual/keys.js\n// module id = 371\n// module chunks = 0 1","require('../../../modules/es.array.iterator');\nrequire('../../../modules/es.object.to-string');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').keys;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/array/virtual/keys.js\n// module id = 372\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 = 373\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 = 374\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 = 375\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 = 376\n// module chunks = 0 1","require('../../modules/es.object.get-prototype-of');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Object.getPrototypeOf;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/object/get-prototype-of.js\n// module id = 377\n// module chunks = 0 1","var $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar toObject = require('../internals/to-object');\nvar nativeGetPrototypeOf = require('../internals/object-get-prototype-of');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeGetPrototypeOf(1); });\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !CORRECT_PROTOTYPE_GETTER }, {\n getPrototypeOf: function getPrototypeOf(it) {\n return nativeGetPrototypeOf(toObject(it));\n }\n});\n\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.object.get-prototype-of.js\n// module id = 378\n// module chunks = 0 1","module.exports = require(\"core-js-pure/stable/object/set-prototype-of\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js-stable/object/set-prototype-of.js\n// module id = 379\n// module chunks = 0 1","require('../../modules/es.object.set-prototype-of');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Object.setPrototypeOf;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/object/set-prototype-of.js\n// module id = 380\n// module chunks = 0 1","var $ = require('../internals/export');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n$({ target: 'Object', stat: true }, {\n setPrototypeOf: setPrototypeOf\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.object.set-prototype-of.js\n// module id = 381\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 *

    Available in Cloud Code and Node.js only.\n *

    \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","var isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../array/virtual/slice');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n var own = it.slice;\n return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.slice) ? method : own;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/instance/slice.js\n// module id = 383\n// module chunks = 0 1","require('../../../modules/es.array.slice');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').slice;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/array/virtual/slice.js\n// module id = 384\n// module chunks = 0 1","'use strict';\nvar $ = require('../internals/export');\nvar isArray = require('../internals/is-array');\nvar isConstructor = require('../internals/is-constructor');\nvar isObject = require('../internals/is-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar createProperty = require('../internals/create-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar un$Slice = require('../internals/array-slice');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice');\n\nvar SPECIES = wellKnownSymbol('species');\nvar $Array = Array;\nvar max = Math.max;\n\n// `Array.prototype.slice` method\n// https://tc39.es/ecma262/#sec-array.prototype.slice\n// fallback for not array-like ES3 strings and DOM objects\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n slice: function slice(start, end) {\n var O = toIndexedObject(this);\n var length = lengthOfArrayLike(O);\n var k = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible\n var Constructor, result, n;\n if (isArray(O)) {\n Constructor = O.constructor;\n // cross-realm fallback\n if (isConstructor(Constructor) && (Constructor === $Array || isArray(Constructor.prototype))) {\n Constructor = undefined;\n } else if (isObject(Constructor)) {\n Constructor = Constructor[SPECIES];\n if (Constructor === null) Constructor = undefined;\n }\n if (Constructor === $Array || Constructor === undefined) {\n return un$Slice(O, k, fin);\n }\n }\n result = new (Constructor === undefined ? $Array : Constructor)(max(fin - k, 0));\n for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);\n result.length = n;\n return result;\n }\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.array.slice.js\n// module id = 385\n// module chunks = 0 1","require('../../modules/es.object.define-property');\nvar path = require('../../internals/path');\n\nvar Object = path.Object;\n\nvar defineProperty = module.exports = function defineProperty(it, key, desc) {\n return Object.defineProperty(it, key, desc);\n};\n\nif (Object.defineProperty.sham) defineProperty.sham = true;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/object/define-property.js\n// module id = 386\n// module chunks = 0 1","var $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar defineProperty = require('../internals/object-define-property').f;\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\n// eslint-disable-next-line es-x/no-object-defineproperty -- safe\n$({ target: 'Object', stat: true, forced: Object.defineProperty !== defineProperty, sham: !DESCRIPTORS }, {\n defineProperty: defineProperty\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.object.define-property.js\n// module id = 387\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 = require('../../full/symbol');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/features/symbol/index.js\n// module id = 389\n// module chunks = 0 1","var parent = require('../../actual/symbol');\nrequire('../../modules/esnext.symbol.async-dispose');\nrequire('../../modules/esnext.symbol.dispose');\nrequire('../../modules/esnext.symbol.matcher');\nrequire('../../modules/esnext.symbol.metadata-key');\nrequire('../../modules/esnext.symbol.observable');\n// TODO: Remove from `core-js@4`\nrequire('../../modules/esnext.symbol.metadata');\nrequire('../../modules/esnext.symbol.pattern-match');\nrequire('../../modules/esnext.symbol.replace-all');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/full/symbol/index.js\n// module id = 390\n// module chunks = 0 1","var parent = require('../../stable/symbol');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/actual/symbol/index.js\n// module id = 391\n// module chunks = 0 1","require('../../modules/es.array.concat');\nrequire('../../modules/es.object.to-string');\nrequire('../../modules/es.symbol');\nrequire('../../modules/es.symbol.async-iterator');\nrequire('../../modules/es.symbol.description');\nrequire('../../modules/es.symbol.has-instance');\nrequire('../../modules/es.symbol.is-concat-spreadable');\nrequire('../../modules/es.symbol.iterator');\nrequire('../../modules/es.symbol.match');\nrequire('../../modules/es.symbol.match-all');\nrequire('../../modules/es.symbol.replace');\nrequire('../../modules/es.symbol.search');\nrequire('../../modules/es.symbol.species');\nrequire('../../modules/es.symbol.split');\nrequire('../../modules/es.symbol.to-primitive');\nrequire('../../modules/es.symbol.to-string-tag');\nrequire('../../modules/es.symbol.unscopables');\nrequire('../../modules/es.json.to-string-tag');\nrequire('../../modules/es.math.to-string-tag');\nrequire('../../modules/es.reflect.to-string-tag');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Symbol;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/symbol/index.js\n// module id = 392\n// module chunks = 0 1","// TODO: Remove this module from `core-js@4` since it's split to modules listed below\nrequire('../modules/es.symbol.constructor');\nrequire('../modules/es.symbol.for');\nrequire('../modules/es.symbol.key-for');\nrequire('../modules/es.json.stringify');\nrequire('../modules/es.object.get-own-property-symbols');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.symbol.js\n// module id = 393\n// module chunks = 0 1","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar fails = require('../internals/fails');\nvar hasOwn = require('../internals/has-own-property');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar anObject = require('../internals/an-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar $toString = require('../internals/to-string');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar nativeObjectCreate = require('../internals/object-create');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternal = require('../internals/object-get-own-property-names-external');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\nvar definePropertiesModule = require('../internals/object-define-properties');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar shared = require('../internals/shared');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar uid = require('../internals/uid');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\nvar defineSymbolToPrimitive = require('../internals/symbol-define-to-primitive');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar HIDDEN = sharedKey('hidden');\nvar SYMBOL = 'Symbol';\nvar PROTOTYPE = 'prototype';\n\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(SYMBOL);\n\nvar ObjectPrototype = Object[PROTOTYPE];\nvar $Symbol = global.Symbol;\nvar SymbolPrototype = $Symbol && $Symbol[PROTOTYPE];\nvar TypeError = global.TypeError;\nvar QObject = global.QObject;\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;\nvar nativePropertyIsEnumerable = propertyIsEnumerableModule.f;\nvar push = uncurryThis([].push);\n\nvar AllSymbols = shared('symbols');\nvar ObjectPrototypeSymbols = shared('op-symbols');\nvar WellKnownSymbolsStore = shared('wks');\n\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDescriptor = DESCRIPTORS && fails(function () {\n return nativeObjectCreate(nativeDefineProperty({}, 'a', {\n get: function () { return nativeDefineProperty(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (O, P, Attributes) {\n var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P);\n if (ObjectPrototypeDescriptor) delete ObjectPrototype[P];\n nativeDefineProperty(O, P, Attributes);\n if (ObjectPrototypeDescriptor && O !== ObjectPrototype) {\n nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor);\n }\n} : nativeDefineProperty;\n\nvar wrap = function (tag, description) {\n var symbol = AllSymbols[tag] = nativeObjectCreate(SymbolPrototype);\n setInternalState(symbol, {\n type: SYMBOL,\n tag: tag,\n description: description\n });\n if (!DESCRIPTORS) symbol.description = description;\n return symbol;\n};\n\nvar $defineProperty = function defineProperty(O, P, Attributes) {\n if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes);\n anObject(O);\n var key = toPropertyKey(P);\n anObject(Attributes);\n if (hasOwn(AllSymbols, key)) {\n if (!Attributes.enumerable) {\n if (!hasOwn(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, {}));\n O[HIDDEN][key] = true;\n } else {\n if (hasOwn(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false;\n Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) });\n } return setSymbolDescriptor(O, key, Attributes);\n } return nativeDefineProperty(O, key, Attributes);\n};\n\nvar $defineProperties = function defineProperties(O, Properties) {\n anObject(O);\n var properties = toIndexedObject(Properties);\n var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties));\n $forEach(keys, function (key) {\n if (!DESCRIPTORS || call($propertyIsEnumerable, properties, key)) $defineProperty(O, key, properties[key]);\n });\n return O;\n};\n\nvar $create = function create(O, Properties) {\n return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties);\n};\n\nvar $propertyIsEnumerable = function propertyIsEnumerable(V) {\n var P = toPropertyKey(V);\n var enumerable = call(nativePropertyIsEnumerable, this, P);\n if (this === ObjectPrototype && hasOwn(AllSymbols, P) && !hasOwn(ObjectPrototypeSymbols, P)) return false;\n return enumerable || !hasOwn(this, P) || !hasOwn(AllSymbols, P) || hasOwn(this, HIDDEN) && this[HIDDEN][P]\n ? enumerable : true;\n};\n\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {\n var it = toIndexedObject(O);\n var key = toPropertyKey(P);\n if (it === ObjectPrototype && hasOwn(AllSymbols, key) && !hasOwn(ObjectPrototypeSymbols, key)) return;\n var descriptor = nativeGetOwnPropertyDescriptor(it, key);\n if (descriptor && hasOwn(AllSymbols, key) && !(hasOwn(it, HIDDEN) && it[HIDDEN][key])) {\n descriptor.enumerable = true;\n }\n return descriptor;\n};\n\nvar $getOwnPropertyNames = function getOwnPropertyNames(O) {\n var names = nativeGetOwnPropertyNames(toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (!hasOwn(AllSymbols, key) && !hasOwn(hiddenKeys, key)) push(result, key);\n });\n return result;\n};\n\nvar $getOwnPropertySymbols = function (O) {\n var IS_OBJECT_PROTOTYPE = O === ObjectPrototype;\n var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (hasOwn(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || hasOwn(ObjectPrototype, key))) {\n push(result, AllSymbols[key]);\n }\n });\n return result;\n};\n\n// `Symbol` constructor\n// https://tc39.es/ecma262/#sec-symbol-constructor\nif (!NATIVE_SYMBOL) {\n $Symbol = function Symbol() {\n if (isPrototypeOf(SymbolPrototype, this)) throw TypeError('Symbol is not a constructor');\n var description = !arguments.length || arguments[0] === undefined ? undefined : $toString(arguments[0]);\n var tag = uid(description);\n var setter = function (value) {\n if (this === ObjectPrototype) call(setter, ObjectPrototypeSymbols, value);\n if (hasOwn(this, HIDDEN) && hasOwn(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value));\n };\n if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter });\n return wrap(tag, description);\n };\n\n SymbolPrototype = $Symbol[PROTOTYPE];\n\n defineBuiltIn(SymbolPrototype, 'toString', function toString() {\n return getInternalState(this).tag;\n });\n\n defineBuiltIn($Symbol, 'withoutSetter', function (description) {\n return wrap(uid(description), description);\n });\n\n propertyIsEnumerableModule.f = $propertyIsEnumerable;\n definePropertyModule.f = $defineProperty;\n definePropertiesModule.f = $defineProperties;\n getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor;\n getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;\n getOwnPropertySymbolsModule.f = $getOwnPropertySymbols;\n\n wrappedWellKnownSymbolModule.f = function (name) {\n return wrap(wellKnownSymbol(name), name);\n };\n\n if (DESCRIPTORS) {\n // https://github.com/tc39/proposal-Symbol-description\n nativeDefineProperty(SymbolPrototype, 'description', {\n configurable: true,\n get: function description() {\n return getInternalState(this).description;\n }\n });\n if (!IS_PURE) {\n defineBuiltIn(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });\n }\n }\n}\n\n$({ global: true, constructor: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, {\n Symbol: $Symbol\n});\n\n$forEach(objectKeys(WellKnownSymbolsStore), function (name) {\n defineWellKnownSymbol(name);\n});\n\n$({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, {\n useSetter: function () { USE_SETTER = true; },\n useSimple: function () { USE_SETTER = false; }\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, {\n // `Object.create` method\n // https://tc39.es/ecma262/#sec-object.create\n create: $create,\n // `Object.defineProperty` method\n // https://tc39.es/ecma262/#sec-object.defineproperty\n defineProperty: $defineProperty,\n // `Object.defineProperties` method\n // https://tc39.es/ecma262/#sec-object.defineproperties\n defineProperties: $defineProperties,\n // `Object.getOwnPropertyDescriptor` method\n // https://tc39.es/ecma262/#sec-object.getownpropertydescriptors\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, {\n // `Object.getOwnPropertyNames` method\n // https://tc39.es/ecma262/#sec-object.getownpropertynames\n getOwnPropertyNames: $getOwnPropertyNames\n});\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\ndefineSymbolToPrimitive();\n\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag($Symbol, SYMBOL);\n\nhiddenKeys[HIDDEN] = true;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.symbol.constructor.js\n// module id = 394\n// module chunks = 0 1","/* eslint-disable es-x/no-object-getownpropertynames -- safe */\nvar classof = require('../internals/classof-raw');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar $getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar arraySlice = require('../internals/array-slice-simple');\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return $getOwnPropertyNames(it);\n } catch (error) {\n return arraySlice(windowNames);\n }\n};\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && classof(it) == 'Window'\n ? getWindowNames(it)\n : $getOwnPropertyNames(toIndexedObject(it));\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/object-get-own-property-names-external.js\n// module id = 395\n// module chunks = 0 1","var toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar createProperty = require('../internals/create-property');\n\nvar $Array = Array;\nvar max = Math.max;\n\nmodule.exports = function (O, start, end) {\n var length = lengthOfArrayLike(O);\n var k = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n var result = $Array(max(fin - k, 0));\n for (var n = 0; k < fin; k++, n++) createProperty(result, n, O[k]);\n result.length = n;\n return result;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/array-slice-simple.js\n// module id = 396\n// module chunks = 0 1","var $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar hasOwn = require('../internals/has-own-property');\nvar toString = require('../internals/to-string');\nvar shared = require('../internals/shared');\nvar NATIVE_SYMBOL_REGISTRY = require('../internals/native-symbol-registry');\n\nvar StringToSymbolRegistry = shared('string-to-symbol-registry');\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\n\n// `Symbol.for` method\n// https://tc39.es/ecma262/#sec-symbol.for\n$({ target: 'Symbol', stat: true, forced: !NATIVE_SYMBOL_REGISTRY }, {\n 'for': function (key) {\n var string = toString(key);\n if (hasOwn(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];\n var symbol = getBuiltIn('Symbol')(string);\n StringToSymbolRegistry[string] = symbol;\n SymbolToStringRegistry[symbol] = string;\n return symbol;\n }\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.symbol.for.js\n// module id = 397\n// module chunks = 0 1","var $ = require('../internals/export');\nvar hasOwn = require('../internals/has-own-property');\nvar isSymbol = require('../internals/is-symbol');\nvar tryToString = require('../internals/try-to-string');\nvar shared = require('../internals/shared');\nvar NATIVE_SYMBOL_REGISTRY = require('../internals/native-symbol-registry');\n\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\n\n// `Symbol.keyFor` method\n// https://tc39.es/ecma262/#sec-symbol.keyfor\n$({ target: 'Symbol', stat: true, forced: !NATIVE_SYMBOL_REGISTRY }, {\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(tryToString(sym) + ' is not a symbol');\n if (hasOwn(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];\n }\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.symbol.key-for.js\n// module id = 398\n// module chunks = 0 1","var $ = require('../internals/export');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar fails = require('../internals/fails');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar toObject = require('../internals/to-object');\n\n// V8 ~ Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\nvar FORCED = !NATIVE_SYMBOL || fails(function () { getOwnPropertySymbolsModule.f(1); });\n\n// `Object.getOwnPropertySymbols` method\n// https://tc39.es/ecma262/#sec-object.getownpropertysymbols\n$({ target: 'Object', stat: true, forced: FORCED }, {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n var $getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return $getOwnPropertySymbols ? $getOwnPropertySymbols(toObject(it)) : [];\n }\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.object.get-own-property-symbols.js\n// module id = 399\n// module chunks = 0 1","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.asyncIterator` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.asynciterator\ndefineWellKnownSymbol('asyncIterator');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.symbol.async-iterator.js\n// module id = 400\n// module chunks = 0 1","// empty\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.symbol.description.js\n// module id = 401\n// module chunks = 0 1","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.hasInstance` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.hasinstance\ndefineWellKnownSymbol('hasInstance');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.symbol.has-instance.js\n// module id = 402\n// module chunks = 0 1","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.isConcatSpreadable` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.isconcatspreadable\ndefineWellKnownSymbol('isConcatSpreadable');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.symbol.is-concat-spreadable.js\n// module id = 403\n// module chunks = 0 1","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.match` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.match\ndefineWellKnownSymbol('match');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.symbol.match.js\n// module id = 404\n// module chunks = 0 1","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.matchAll` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.matchall\ndefineWellKnownSymbol('matchAll');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.symbol.match-all.js\n// module id = 405\n// module chunks = 0 1","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.replace` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.replace\ndefineWellKnownSymbol('replace');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.symbol.replace.js\n// module id = 406\n// module chunks = 0 1","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.search` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.search\ndefineWellKnownSymbol('search');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.symbol.search.js\n// module id = 407\n// module chunks = 0 1","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.species` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.species\ndefineWellKnownSymbol('species');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.symbol.species.js\n// module id = 408\n// module chunks = 0 1","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.split` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.split\ndefineWellKnownSymbol('split');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.symbol.split.js\n// module id = 409\n// module chunks = 0 1","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\nvar defineSymbolToPrimitive = require('../internals/symbol-define-to-primitive');\n\n// `Symbol.toPrimitive` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.toprimitive\ndefineWellKnownSymbol('toPrimitive');\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\ndefineSymbolToPrimitive();\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.symbol.to-primitive.js\n// module id = 410\n// module chunks = 0 1","var getBuiltIn = require('../internals/get-built-in');\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\nvar setToStringTag = require('../internals/set-to-string-tag');\n\n// `Symbol.toStringTag` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.tostringtag\ndefineWellKnownSymbol('toStringTag');\n\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag(getBuiltIn('Symbol'), 'Symbol');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.symbol.to-string-tag.js\n// module id = 411\n// module chunks = 0 1","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.unscopables` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.unscopables\ndefineWellKnownSymbol('unscopables');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.symbol.unscopables.js\n// module id = 412\n// module chunks = 0 1","var global = require('../internals/global');\nvar setToStringTag = require('../internals/set-to-string-tag');\n\n// JSON[@@toStringTag] property\n// https://tc39.es/ecma262/#sec-json-@@tostringtag\nsetToStringTag(global.JSON, 'JSON', true);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.json.to-string-tag.js\n// module id = 413\n// module chunks = 0 1","// empty\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.math.to-string-tag.js\n// module id = 414\n// module chunks = 0 1","// empty\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.reflect.to-string-tag.js\n// module id = 415\n// module chunks = 0 1","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.asyncDispose` well-known symbol\n// https://github.com/tc39/proposal-using-statement\ndefineWellKnownSymbol('asyncDispose');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/esnext.symbol.async-dispose.js\n// module id = 416\n// module chunks = 0 1","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.dispose` well-known symbol\n// https://github.com/tc39/proposal-using-statement\ndefineWellKnownSymbol('dispose');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/esnext.symbol.dispose.js\n// module id = 417\n// module chunks = 0 1","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.matcher` well-known symbol\n// https://github.com/tc39/proposal-pattern-matching\ndefineWellKnownSymbol('matcher');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/esnext.symbol.matcher.js\n// module id = 418\n// module chunks = 0 1","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.metadataKey` well-known symbol\n// https://github.com/tc39/proposal-decorator-metadata\ndefineWellKnownSymbol('metadataKey');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/esnext.symbol.metadata-key.js\n// module id = 419\n// module chunks = 0 1","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.observable` well-known symbol\n// https://github.com/tc39/proposal-observable\ndefineWellKnownSymbol('observable');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/esnext.symbol.observable.js\n// module id = 420\n// module chunks = 0 1","// TODO: Remove from `core-js@4`\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.metadata` well-known symbol\n// https://github.com/tc39/proposal-decorators\ndefineWellKnownSymbol('metadata');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/esnext.symbol.metadata.js\n// module id = 421\n// module chunks = 0 1","// TODO: remove from `core-js@4`\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.patternMatch` well-known symbol\n// https://github.com/tc39/proposal-pattern-matching\ndefineWellKnownSymbol('patternMatch');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/esnext.symbol.pattern-match.js\n// module id = 422\n// module chunks = 0 1","// TODO: remove from `core-js@4`\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\ndefineWellKnownSymbol('replaceAll');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/esnext.symbol.replace-all.js\n// module id = 423\n// module chunks = 0 1","module.exports = require(\"core-js-pure/features/symbol/iterator\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js/symbol/iterator.js\n// module id = 424\n// module chunks = 0 1","module.exports = require('../../full/symbol/iterator');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/features/symbol/iterator.js\n// module id = 425\n// module chunks = 0 1","var parent = require('../../actual/symbol/iterator');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/full/symbol/iterator.js\n// module id = 426\n// module chunks = 0 1","var parent = require('../../stable/symbol/iterator');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/actual/symbol/iterator.js\n// module id = 427\n// module chunks = 0 1","var parent = require('../../es/symbol/iterator');\nrequire('../../modules/web.dom-collections.iterator');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/stable/symbol/iterator.js\n// module id = 428\n// module chunks = 0 1","require('../../modules/es.array.iterator');\nrequire('../../modules/es.object.to-string');\nrequire('../../modules/es.string.iterator');\nrequire('../../modules/es.symbol.iterator');\nvar WrappedWellKnownSymbolModule = require('../../internals/well-known-symbol-wrapped');\n\nmodule.exports = WrappedWellKnownSymbolModule.f('iterator');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/symbol/iterator.js\n// module id = 429\n// module chunks = 0 1","module.exports = require(\"core-js-pure/stable/instance/filter\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js-stable/instance/filter.js\n// module id = 430\n// module chunks = 0 1","var parent = require('../../es/instance/filter');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/stable/instance/filter.js\n// module id = 431\n// module chunks = 0 1","var isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../array/virtual/filter');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n var own = it.filter;\n return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.filter) ? method : own;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/instance/filter.js\n// module id = 432\n// module chunks = 0 1","require('../../../modules/es.array.filter');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').filter;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/array/virtual/filter.js\n// module id = 433\n// module chunks = 0 1","'use strict';\nvar $ = require('../internals/export');\nvar $filter = require('../internals/array-iteration').filter;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter');\n\n// `Array.prototype.filter` method\n// https://tc39.es/ecma262/#sec-array.prototype.filter\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n filter: function filter(callbackfn /* , thisArg */) {\n return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.array.filter.js\n// module id = 434\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 = 435\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 *

    AV.Events is a fork of Backbone's Events module, provided for your\n * convenience.

    \n *\n *

    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');

    \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:
    \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 *

    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.

    \n *\n *

    Only one key in a class may contain a GeoPoint.

    \n *\n *

    Example:

    \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();

    \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.}\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 *

    An ACL, or Access Control List can be added to any\n * AV.Object to restrict access to only a subset of users\n * of your application.

    \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 object.set(\"foo\", \"bar\")\n * is an example of a AV.Op.Set. Calling object.unset(\"foo\")\n * is a AV.Op.Unset. These operations are stored in a AV.Object and\n * sent to the server as part of object.save() 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 parent = require('../../es/instance/find');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/stable/instance/find.js\n// module id = 440\n// module chunks = 0 1","var isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../array/virtual/find');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n var own = it.find;\n return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.find) ? method : own;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/instance/find.js\n// module id = 441\n// module chunks = 0 1","require('../../../modules/es.array.find');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').find;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/array/virtual/find.js\n// module id = 442\n// module chunks = 0 1","'use strict';\nvar $ = require('../internals/export');\nvar $find = require('../internals/array-iteration').find;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\nvar FIND = 'find';\nvar SKIPS_HOLES = true;\n\n// Shouldn't skip holes\nif (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.find` method\n// https://tc39.es/ecma262/#sec-array.prototype.find\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.array.find.js\n// module id = 443\n// module chunks = 0 1","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 *

    \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 *

    \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 { request, _request: AVRequest } = require('./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:
    \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   * }
    \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 /**\n * Request file censor.\n * @since 4.13.0\n * @param {String} objectId\n * @return {Promise.}\n */\n AV.File.censor = function(objectId) {\n if (!AV._config.masterKey) {\n throw new Error('Cannot censor a file without masterKey');\n }\n return request({\n method: 'POST',\n path: `/files/${objectId}/censor`,\n authOptions: { useMasterKey: true },\n }).then(res => res.censorResult);\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 *

    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.

    \n *

    \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       *

    \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 * Request file censor\n * @since 4.13.0\n * @return {Promise.}\n */\n censor() {\n if (!this.id) {\n throw new Error('Cannot censor an unsaved file');\n }\n return AV.File.censor(this.id);\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}\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","module.exports = require(\"core-js-pure/stable/array/from\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js-stable/array/from.js\n// module id = 448\n// module chunks = 0 1","require('../../modules/es.string.iterator');\nrequire('../../modules/es.array.from');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Array.from;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/array/from.js\n// module id = 449\n// module chunks = 0 1","var $ = require('../internals/export');\nvar from = require('../internals/array-from');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\n\nvar INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) {\n // eslint-disable-next-line es-x/no-array-from -- required for testing\n Array.from(iterable);\n});\n\n// `Array.from` method\n// https://tc39.es/ecma262/#sec-array.from\n$({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, {\n from: from\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.array.from.js\n// module id = 450\n// module chunks = 0 1","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar toObject = require('../internals/to-object');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar isConstructor = require('../internals/is-constructor');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar createProperty = require('../internals/create-property');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nvar $Array = Array;\n\n// `Array.from` method implementation\n// https://tc39.es/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var IS_CONSTRUCTOR = isConstructor(this);\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined);\n var iteratorMethod = getIteratorMethod(O);\n var index = 0;\n var length, result, step, iterator, next, value;\n // if the target is not iterable or it's an array with the default iterator - use a simple case\n if (iteratorMethod && !(this === $Array && isArrayIteratorMethod(iteratorMethod))) {\n iterator = getIterator(O, iteratorMethod);\n next = iterator.next;\n result = IS_CONSTRUCTOR ? new this() : [];\n for (;!(step = call(next, iterator)).done; index++) {\n value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;\n createProperty(result, index, value);\n }\n } else {\n length = lengthOfArrayLike(O);\n result = IS_CONSTRUCTOR ? new this(length) : $Array(length);\n for (;length > index; index++) {\n value = mapping ? mapfn(O[index], index) : O[index];\n createProperty(result, index, value);\n }\n }\n result.length = index;\n return result;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/array-from.js\n// module id = 451\n// module chunks = 0 1","var anObject = require('../internals/an-object');\nvar iteratorClose = require('../internals/iterator-close');\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n try {\n return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n } catch (error) {\n iteratorClose(iterator, 'throw', error);\n }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/call-with-safe-iteration-closing.js\n// module id = 452\n// module chunks = 0 1","module.exports = require(\"core-js-pure/stable/symbol\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js-stable/symbol.js\n// module id = 453\n// module chunks = 0 1","module.exports = require('../full/get-iterator-method');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/features/get-iterator-method.js\n// module id = 454\n// module chunks = 0 1","var parent = require('../actual/get-iterator-method');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/full/get-iterator-method.js\n// module id = 455\n// module chunks = 0 1","var parent = require('../stable/get-iterator-method');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/actual/get-iterator-method.js\n// module id = 456\n// module chunks = 0 1","var parent = require('../es/get-iterator-method');\nrequire('../modules/web.dom-collections.iterator');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/stable/get-iterator-method.js\n// module id = 457\n// module chunks = 0 1","require('../modules/es.array.iterator');\nrequire('../modules/es.string.iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nmodule.exports = getIteratorMethod;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/get-iterator-method.js\n// module id = 458\n// module chunks = 0 1","module.exports = require(\"core-js-pure/stable/reflect/construct\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js-stable/reflect/construct.js\n// module id = 459\n// module chunks = 0 1","var parent = require('../../es/reflect/construct');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/stable/reflect/construct.js\n// module id = 460\n// module chunks = 0 1","require('../../modules/es.reflect.construct');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Reflect.construct;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/reflect/construct.js\n// module id = 461\n// module chunks = 0 1","var $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar apply = require('../internals/function-apply');\nvar bind = require('../internals/function-bind');\nvar aConstructor = require('../internals/a-constructor');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar fails = require('../internals/fails');\n\nvar nativeConstruct = getBuiltIn('Reflect', 'construct');\nvar ObjectPrototype = Object.prototype;\nvar push = [].push;\n\n// `Reflect.construct` method\n// https://tc39.es/ecma262/#sec-reflect.construct\n// MS Edge supports only 2 arguments and argumentsList argument is optional\n// FF Nightly sets third argument as `new.target`, but does not create `this` from it\nvar NEW_TARGET_BUG = fails(function () {\n function F() { /* empty */ }\n return !(nativeConstruct(function () { /* empty */ }, [], F) instanceof F);\n});\n\nvar ARGS_BUG = !fails(function () {\n nativeConstruct(function () { /* empty */ });\n});\n\nvar FORCED = NEW_TARGET_BUG || ARGS_BUG;\n\n$({ target: 'Reflect', stat: true, forced: FORCED, sham: FORCED }, {\n construct: function construct(Target, args /* , newTarget */) {\n aConstructor(Target);\n anObject(args);\n var newTarget = arguments.length < 3 ? Target : aConstructor(arguments[2]);\n if (ARGS_BUG && !NEW_TARGET_BUG) return nativeConstruct(Target, args, newTarget);\n if (Target == newTarget) {\n // w/o altered newTarget, optimization for 0-4 arguments\n switch (args.length) {\n case 0: return new Target();\n case 1: return new Target(args[0]);\n case 2: return new Target(args[0], args[1]);\n case 3: return new Target(args[0], args[1], args[2]);\n case 4: return new Target(args[0], args[1], args[2], args[3]);\n }\n // w/o altered newTarget, lot of arguments case\n var $args = [null];\n apply(push, $args, args);\n return new (apply(bind, Target, $args))();\n }\n // with altered newTarget, not support built-in constructors\n var proto = newTarget.prototype;\n var instance = create(isObject(proto) ? proto : ObjectPrototype);\n var result = apply(Target, instance, args);\n return isObject(result) ? result : instance;\n }\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.reflect.construct.js\n// module id = 462\n// module chunks = 0 1","var _Object$create = require(\"@babel/runtime-corejs3/core-js/object/create\");\n\nvar _Object$defineProperty = require(\"@babel/runtime-corejs3/core-js/object/define-property\");\n\nvar setPrototypeOf = require(\"./setPrototypeOf.js\");\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = _Object$create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n\n _Object$defineProperty(subClass, \"prototype\", {\n writable: false\n });\n\n if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/helpers/inherits.js\n// module id = 463\n// module chunks = 0 1","module.exports = require(\"core-js-pure/features/object/create\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js/object/create.js\n// module id = 464\n// module chunks = 0 1","module.exports = require('../../full/object/create');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/features/object/create.js\n// module id = 465\n// module chunks = 0 1","var parent = require('../../actual/object/create');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/full/object/create.js\n// module id = 466\n// module chunks = 0 1","var parent = require('../../stable/object/create');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/actual/object/create.js\n// module id = 467\n// module chunks = 0 1","var parent = require('../../es/object/create');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/stable/object/create.js\n// module id = 468\n// module chunks = 0 1","require('../../modules/es.object.create');\nvar path = require('../../internals/path');\n\nvar Object = path.Object;\n\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-pure/es/object/create.js\n// module id = 469\n// module chunks = 0 1","// TODO: Remove from `core-js@4`\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar create = require('../internals/object-create');\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\n$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, {\n create: create\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.object.create.js\n// module id = 470\n// module chunks = 0 1","module.exports = require('../../full/object/define-property');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/features/object/define-property.js\n// module id = 471\n// module chunks = 0 1","var parent = require('../../actual/object/define-property');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/full/object/define-property.js\n// module id = 472\n// module chunks = 0 1","var parent = require('../../stable/object/define-property');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/actual/object/define-property.js\n// module id = 473\n// module chunks = 0 1","var _Object$setPrototypeOf = require(\"@babel/runtime-corejs3/core-js/object/set-prototype-of\");\n\nvar _bindInstanceProperty = require(\"@babel/runtime-corejs3/core-js/instance/bind\");\n\nfunction _setPrototypeOf(o, p) {\n var _context;\n\n module.exports = _setPrototypeOf = _Object$setPrototypeOf ? _bindInstanceProperty(_context = _Object$setPrototypeOf).call(_context) : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/helpers/setPrototypeOf.js\n// module id = 474\n// module chunks = 0 1","module.exports = require('../../full/object/set-prototype-of');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/features/object/set-prototype-of.js\n// module id = 475\n// module chunks = 0 1","var parent = require('../../actual/object/set-prototype-of');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/full/object/set-prototype-of.js\n// module id = 476\n// module chunks = 0 1","var parent = require('../../stable/object/set-prototype-of');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/actual/object/set-prototype-of.js\n// module id = 477\n// module chunks = 0 1","module.exports = require('../../full/instance/bind');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/features/instance/bind.js\n// module id = 478\n// module chunks = 0 1","var parent = require('../../actual/instance/bind');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/full/instance/bind.js\n// module id = 479\n// module chunks = 0 1","var parent = require('../../stable/instance/bind');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/actual/instance/bind.js\n// module id = 480\n// module chunks = 0 1","var parent = require('../../es/instance/bind');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/stable/instance/bind.js\n// module id = 481\n// module chunks = 0 1","var isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../function/virtual/bind');\n\nvar FunctionPrototype = Function.prototype;\n\nmodule.exports = function (it) {\n var own = it.bind;\n return it === FunctionPrototype || (isPrototypeOf(FunctionPrototype, it) && own === FunctionPrototype.bind) ? method : own;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/instance/bind.js\n// module id = 482\n// module chunks = 0 1","require('../../../modules/es.function.bind');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Function').bind;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/function/virtual/bind.js\n// module id = 483\n// module chunks = 0 1","// TODO: Remove from `core-js@4`\nvar $ = require('../internals/export');\nvar bind = require('../internals/function-bind');\n\n// `Function.prototype.bind` method\n// https://tc39.es/ecma262/#sec-function.prototype.bind\n$({ target: 'Function', proto: true, forced: Function.bind !== bind }, {\n bind: bind\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.function.bind.js\n// module id = 484\n// module chunks = 0 1","var _typeof = require(\"./typeof.js\")[\"default\"];\n\nvar assertThisInitialized = require(\"./assertThisInitialized.js\");\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/helpers/possibleConstructorReturn.js\n// module id = 485\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, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/helpers/assertThisInitialized.js\n// module id = 486\n// module chunks = 0 1","var _Object$setPrototypeOf = require(\"@babel/runtime-corejs3/core-js/object/set-prototype-of\");\n\nvar _bindInstanceProperty = require(\"@babel/runtime-corejs3/core-js/instance/bind\");\n\nvar _Object$getPrototypeOf = require(\"@babel/runtime-corejs3/core-js/object/get-prototype-of\");\n\nfunction _getPrototypeOf(o) {\n var _context;\n\n module.exports = _getPrototypeOf = _Object$setPrototypeOf ? _bindInstanceProperty(_context = _Object$getPrototypeOf).call(_context) : function _getPrototypeOf(o) {\n return o.__proto__ || _Object$getPrototypeOf(o);\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/helpers/getPrototypeOf.js\n// module id = 487\n// module chunks = 0 1","module.exports = require(\"core-js-pure/features/object/get-prototype-of\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js/object/get-prototype-of.js\n// module id = 488\n// module chunks = 0 1","module.exports = require('../../full/object/get-prototype-of');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/features/object/get-prototype-of.js\n// module id = 489\n// module chunks = 0 1","var parent = require('../../actual/object/get-prototype-of');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/full/object/get-prototype-of.js\n// module id = 490\n// module chunks = 0 1","var parent = require('../../stable/object/get-prototype-of');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/actual/object/get-prototype-of.js\n// module id = 491\n// module chunks = 0 1","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/helpers/classCallCheck.js\n// module id = 492\n// module chunks = 0 1","var _Object$defineProperty = require(\"@babel/runtime-corejs3/core-js/object/define-property\");\n\nfunction _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\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\n _Object$defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n\n return Constructor;\n}\n\nmodule.exports = _createClass, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/helpers/createClass.js\n// module id = 493\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 = 496\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 = 497\n// module chunks = 0 1","/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh \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 = 498\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 *

    You won't normally call this method directly. It is recommended that\n * you use a subclass of AV.Object instead, created by calling\n * extend.

    \n *\n *

    However, if you don't want to use a subclass, or aren't sure which\n * subclass is appropriate, you can use this form:

    \n   *     var object = new AV.Object(\"ClassName\");\n   * 
    \n * That is basically equivalent to:
    \n   *     var MyClass = AV.Object.extend(\"ClassName\");\n   *     var object = new MyClass();\n   * 

    \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 *

    The fundamental unit of AV data, which implements the Backbone Model\n * interface.

    \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 AV.Object.\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 AV.Object\n * @param {AuthOptions} options\n * @return {Promise.} The given list of AV.Object, 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 true 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 * \"change\" unless you choose to silence it.\n *\n *

    You can call it with an object containing keys and values, or with one\n * key and value. For example:

    \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 \"change\" 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 \"change\" 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 \"change\" 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:
    \n       *   object.save();
    \n * or
    \n       *   object.save(null, options);
    \n * or
    \n       *   object.save(attrs, options);
    \n * or
    \n       *   object.save(key, value, options);
    \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 * \"change\" 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 * \"change\" 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 * AV.Object, in which case you can override this method\n * to provide additional validation on set and\n * save. 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 AV.Object 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 *
    \n   *   new AV.Object(attributes, options);\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 * @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 *

    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.

    \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 AV.Object is defined with your own implement\n * rather then AV.Object.extend, the subclass must be registered.\n * @param {Function} klass A subclass of AV.Object\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","var arrayWithHoles = require(\"./arrayWithHoles.js\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableRest = require(\"./nonIterableRest.js\");\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/helpers/slicedToArray.js\n// module id = 501\n// module chunks = 0 1","var _Array$isArray = require(\"@babel/runtime-corejs3/core-js/array/is-array\");\n\nfunction _arrayWithHoles(arr) {\n if (_Array$isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/helpers/arrayWithHoles.js\n// module id = 502\n// module chunks = 0 1","module.exports = require(\"core-js-pure/features/array/is-array\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js/array/is-array.js\n// module id = 503\n// module chunks = 0 1","module.exports = require('../../full/array/is-array');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/features/array/is-array.js\n// module id = 504\n// module chunks = 0 1","var parent = require('../../actual/array/is-array');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/full/array/is-array.js\n// module id = 505\n// module chunks = 0 1","var parent = require('../../stable/array/is-array');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/actual/array/is-array.js\n// module id = 506\n// module chunks = 0 1","var parent = require('../../es/array/is-array');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/stable/array/is-array.js\n// module id = 507\n// module chunks = 0 1","require('../../modules/es.array.is-array');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Array.isArray;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/array/is-array.js\n// module id = 508\n// module chunks = 0 1","var $ = require('../internals/export');\nvar isArray = require('../internals/is-array');\n\n// `Array.isArray` method\n// https://tc39.es/ecma262/#sec-array.isarray\n$({ target: 'Array', stat: true }, {\n isArray: isArray\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.array.is-array.js\n// module id = 509\n// module chunks = 0 1","var _Symbol = require(\"@babel/runtime-corejs3/core-js/symbol\");\n\nvar _getIteratorMethod = require(\"@babel/runtime-corejs3/core-js/get-iterator-method\");\n\nfunction _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof _Symbol !== \"undefined\" && _getIteratorMethod(arr) || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_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\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/helpers/iterableToArrayLimit.js\n// module id = 510\n// module chunks = 0 1","var _sliceInstanceProperty = require(\"@babel/runtime-corejs3/core-js/instance/slice\");\n\nvar _Array$from = require(\"@babel/runtime-corejs3/core-js/array/from\");\n\nvar arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _unsupportedIterableToArray(o, minLen) {\n var _context;\n\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n\n var n = _sliceInstanceProperty(_context = Object.prototype.toString.call(o)).call(_context, 8, -1);\n\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, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/helpers/unsupportedIterableToArray.js\n// module id = 511\n// module chunks = 0 1","module.exports = require(\"core-js-pure/features/instance/slice\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js/instance/slice.js\n// module id = 512\n// module chunks = 0 1","module.exports = require('../../full/instance/slice');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/features/instance/slice.js\n// module id = 513\n// module chunks = 0 1","var parent = require('../../actual/instance/slice');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/full/instance/slice.js\n// module id = 514\n// module chunks = 0 1","var parent = require('../../stable/instance/slice');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/actual/instance/slice.js\n// module id = 515\n// module chunks = 0 1","module.exports = require(\"core-js-pure/features/array/from\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js/array/from.js\n// module id = 516\n// module chunks = 0 1","module.exports = require('../../full/array/from');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/features/array/from.js\n// module id = 517\n// module chunks = 0 1","var parent = require('../../actual/array/from');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/full/array/from.js\n// module id = 518\n// module chunks = 0 1","var parent = require('../../stable/array/from');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/actual/array/from.js\n// module id = 519\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, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/helpers/arrayLikeToArray.js\n// module id = 520\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, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/helpers/nonIterableRest.js\n// module id = 521\n// module chunks = 0 1","module.exports = require(\"core-js-pure/stable/object/get-own-property-descriptor\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor.js\n// module id = 522\n// module chunks = 0 1","var parent = require('../../es/object/get-own-property-descriptor');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/stable/object/get-own-property-descriptor.js\n// module id = 523\n// module chunks = 0 1","require('../../modules/es.object.get-own-property-descriptor');\nvar path = require('../../internals/path');\n\nvar Object = path.Object;\n\nvar getOwnPropertyDescriptor = module.exports = function getOwnPropertyDescriptor(it, key) {\n return Object.getOwnPropertyDescriptor(it, key);\n};\n\nif (Object.getOwnPropertyDescriptor.sham) getOwnPropertyDescriptor.sham = true;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/object/get-own-property-descriptor.js\n// module id = 524\n// module chunks = 0 1","var $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar nativeGetOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeGetOwnPropertyDescriptor(1); });\nvar FORCED = !DESCRIPTORS || FAILS_ON_PRIMITIVES;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\n$({ target: 'Object', stat: true, forced: FORCED, sham: !DESCRIPTORS }, {\n getOwnPropertyDescriptor: function getOwnPropertyDescriptor(it, key) {\n return nativeGetOwnPropertyDescriptor(toIndexedObject(it), key);\n }\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.object.get-own-property-descriptor.js\n// module id = 525\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 *

    Roles must have a name (which cannot be changed after creation of the\n * role), and must specify an ACL.

    \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 *

    \n * A role's name can only contain alphanumeric characters, _, -, and\n * spaces.\n *

    \n *\n *

    This is equivalent to calling role.set(\"name\", name)

    \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 *

    This is equivalent to calling role.relation(\"users\")

    \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 *

    This is equivalent to calling role.relation(\"roles\")

    \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 *

    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.

    \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(\n provider,\n data,\n { failOnNotExist = false, useMasterKey, sessionToken, user } = {}\n ) {\n var authType;\n if (_.isString(provider)) {\n authType = provider;\n provider = AV.User._authProviders[provider];\n } else {\n authType = provider.getAuthType();\n }\n if (data) {\n return this.save(\n { authData: { [authType]: data } },\n {\n useMasterKey,\n sessionToken,\n user,\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} 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} 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}\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}\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}\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}\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}\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}\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}\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 * current.\n *\n *

    A username and password must be set before calling signUp.

    \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 * current.\n *\n *

    A username and password must be set before calling signUp.

    \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}\n */\n loginWithWeapp({\n preferUnionId = false,\n unionIdPlatform = 'weixin',\n asMainAccount = true,\n failOnNotExist = false,\n useMasterKey,\n sessionToken,\n user,\n } = {}) {\n const getAuthInfo = getAdapter('getAuthInfo');\n return getAuthInfo({\n preferUnionId,\n asMainAccount,\n platform: unionIdPlatform,\n }).then(authInfo =>\n this.loginWithMiniApp(authInfo, {\n failOnNotExist,\n useMasterKey,\n sessionToken,\n user,\n })\n );\n },\n\n /**\n * The same with {@link AV.User.loginWithWeappWithUnionId}, except that you can set attributes before login.\n * @deprecated please use {@link AV.User#loginWithMiniApp}\n * @since 3.13.0\n */\n loginWithWeappWithUnionId(\n unionId,\n {\n unionIdPlatform = 'weixin',\n asMainAccount = false,\n failOnNotExist = false,\n useMasterKey,\n sessionToken,\n user,\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, {\n failOnNotExist,\n useMasterKey,\n sessionToken,\n user,\n });\n });\n },\n\n /**\n * The same with {@link AV.User.loginWithQQApp}, except that you can set attributes before login.\n * @deprecated please use {@link AV.User#loginWithMiniApp}\n * @since 4.2.0\n * @param {Object} [options]\n * @param {boolean} [options.failOnNotExist] If true, the login request will fail when no user matches this authData exists.\n * @param {boolean} [options.preferUnionId] 如果服务端在登录时获取到了用户的 UnionId,是否将 UnionId 保存在用户账号中。\n * @param {string} [options.unionIdPlatform = 'qq'] (only take effect when preferUnionId) unionId platform\n * @param {boolean} [options.asMainAccount = true] (only take effect when preferUnionId) If true, the unionId will be associated with the user.\n */\n loginWithQQApp({\n preferUnionId = false,\n unionIdPlatform = 'qq',\n asMainAccount = true,\n failOnNotExist = false,\n useMasterKey,\n sessionToken,\n user,\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, {\n failOnNotExist,\n useMasterKey,\n sessionToken,\n user,\n });\n });\n },\n\n /**\n * The same with {@link AV.User.loginWithQQAppWithUnionId}, except that you can set attributes before login.\n * @deprecated please use {@link AV.User#loginWithMiniApp}\n * @since 4.2.0\n */\n loginWithQQAppWithUnionId(\n unionId,\n {\n unionIdPlatform = 'qq',\n asMainAccount = false,\n failOnNotExist = false,\n useMasterKey,\n sessionToken,\n user,\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, {\n failOnNotExist,\n useMasterKey,\n sessionToken,\n user,\n });\n });\n },\n\n /**\n * The same with {@link AV.User.loginWithMiniApp}, except that you can set attributes before login.\n * @since 4.6.0\n */\n loginWithMiniApp(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 * current.\n *\n *

    A username and password must be set before calling logIn.

    \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 current 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.\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.} 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.} 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 current.\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 * current.\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 current.\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 current.\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 current.\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 current.\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} 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.}\n */\n loginWithWeapp({\n preferUnionId = false,\n unionIdPlatform = 'weixin',\n asMainAccount = true,\n failOnNotExist = false,\n useMasterKey,\n sessionToken,\n user,\n } = {}) {\n const getAuthInfo = getAdapter('getAuthInfo');\n return getAuthInfo({\n preferUnionId,\n asMainAccount,\n platform: unionIdPlatform,\n }).then(authInfo =>\n this.loginWithMiniApp(authInfo, {\n failOnNotExist,\n useMasterKey,\n sessionToken,\n user,\n })\n );\n },\n\n /**\n * 使用当前使用微信小程序的微信用户身份注册或登录,\n * 仅在微信小程序中可用。\n *\n * @deprecated please use {@link AV.User.loginWithMiniApp}\n * @since 3.13.0\n * @param {Object} [unionLoginOptions]\n * @param {string} [unionLoginOptions.unionIdPlatform = 'weixin'] unionId platform\n * @param {boolean} [unionLoginOptions.asMainAccount = false] If true, the unionId will be associated with the user.\n * @param {boolean} [unionLoginOptions.failOnNotExist] If true, the login request will fail when no user matches this authData exists. * @return {Promise.}\n */\n loginWithWeappWithUnionId(\n unionId,\n {\n unionIdPlatform = 'weixin',\n asMainAccount = false,\n failOnNotExist = false,\n useMasterKey,\n sessionToken,\n user,\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, {\n failOnNotExist,\n useMasterKey,\n sessionToken,\n user,\n });\n });\n },\n\n /**\n * 使用当前使用 QQ 小程序的 QQ 用户身份注册或登录,成功后用户的 session 会在设备上持久化保存,之后可以使用 AV.User.current() 获取当前登录用户。\n * 仅在 QQ 小程序中可用。\n *\n * @deprecated please use {@link AV.User.loginWithMiniApp}\n * @since 4.2.0\n * @param {Object} [options]\n * @param {boolean} [options.preferUnionId] 如果服务端在登录时获取到了用户的 UnionId,是否将 UnionId 保存在用户账号中。\n * @param {string} [options.unionIdPlatform = 'qq'] (only take effect when preferUnionId) unionId platform\n * @param {boolean} [options.asMainAccount = true] (only take effect when preferUnionId) If true, the unionId will be associated with the user.\n * @param {boolean} [options.failOnNotExist] If true, the login request will fail when no user matches this authData exists. (since v3.7.0)\n * @return {Promise.}\n */\n loginWithQQApp({\n preferUnionId = false,\n unionIdPlatform = 'qq',\n asMainAccount = true,\n failOnNotExist = false,\n useMasterKey,\n sessionToken,\n user,\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, {\n failOnNotExist,\n useMasterKey,\n sessionToken,\n user,\n });\n });\n },\n\n /**\n * 使用当前使用 QQ 小程序的 QQ 用户身份注册或登录,\n * 仅在 QQ 小程序中可用。\n *\n * @deprecated please use {@link AV.User.loginWithMiniApp}\n * @since 4.2.0\n * @param {Object} [unionLoginOptions]\n * @param {string} [unionLoginOptions.unionIdPlatform = 'qq'] unionId platform\n * @param {boolean} [unionLoginOptions.asMainAccount = false] If true, the unionId will be associated with the user.\n * @param {boolean} [unionLoginOptions.failOnNotExist] If true, the login request will fail when no user matches this authData exists.\n * @return {Promise.}\n */\n loginWithQQAppWithUnionId(\n unionId,\n {\n unionIdPlatform = 'qq',\n asMainAccount = false,\n failOnNotExist = false,\n useMasterKey,\n sessionToken,\n user,\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, {\n failOnNotExist,\n useMasterKey,\n sessionToken,\n user,\n });\n });\n },\n\n /**\n * Register or login using the identity of the current mini-app.\n * @param {Object} authInfo\n * @param {Object} [option]\n * @param {Boolean} [option.failOnNotExist] If true, the login request will fail when no user matches this authInfo.authData exists.\n */\n loginWithMiniApp(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.}\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 * current will return null.\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.} 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","var _Object$defineProperty = require(\"@babel/runtime-corejs3/core-js/object/define-property\");\n\nfunction _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, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/helpers/defineProperty.js\n// module id = 528\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 *

    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 * find method. For example, this sample code fetches all objects\n * of class MyClass. It calls a different function depending on\n * whether the fetch succeeded or not.\n *\n *

    \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   * });

    \n *\n *

    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 MyClass and id myId. It calls a\n * different function depending on whether the fetch succeeded or not.\n *\n *

    \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   * });

    \n *\n *

    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 MyClass\n *

    \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   * });

    \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 *
    var compoundQuery = AV.Query.or(query1, query2, query3);
    \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 *
    var compoundQuery = AV.Query.and(query1, query2, query3);
    \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.\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.}\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 AVError(\n result.error.code,\n result.error.error || 'Unknown batch error'\n );\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.}\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 cursor;\n let remainResults = [];\n return {\n next: () => {\n if (remainResults.length) {\n return Promise.resolve({\n done: false,\n value: remainResults.shift(),\n });\n }\n if (cursor === null) {\n return Promise.resolve({ done: true });\n }\n return _request(\n 'scan/classes',\n this.className,\n null,\n 'GET',\n cursor ? _.extend({}, condition, { cursor }) : condition,\n authOptions\n ).then(response => {\n cursor = response.cursor;\n if (response.results.length) {\n const results = this._parseResponse(response);\n results.forEach(result => remainResults.push(result));\n }\n if (cursor === null && remainResults.length === 0) {\n return { done: true };\n }\n return {\n done: false,\n value: remainResults.shift(),\n };\n });\n },\n };\n },\n\n /**\n * Delete objects retrieved by this query.\n * @param {AuthOptions} options\n * @return {Promise} A promise that is fulfilled when the save\n * completes.\n */\n destroyAll: function(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 * array key's length to be equal to the provided value.\n * @param {String} key The array key to check.\n * @param {number} 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.} 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.} 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. ONLY AVAILABLE in browsers.\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. ONLY AVAILABLE in browsers.\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.}\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 *

    \n * Some functions are only available from Cloud Code.\n *

    \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.} 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.} 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 {any} 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 *

    Send a status from current signined user to other user's private status inbox.

    \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 *

    AV.InboxQuery defines a query that is used to fetch somebody's inbox statuses.

    \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 {String} 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 App Searching Guide\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 *
    \n       *   query.highlights('title');\n       *   //or pass an array.\n       *   query.highlights(['title', 'content'])\n       * 
    \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 * 离线数据分析功能的函数。\n *

    \n * 仅在云引擎运行环境下有效。\n *

    \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 对象,例如:
    \n       *                   { \"sql\" : \"select count(*) as c,gender from _User group by gender\",\n       *                     \"saveAs\": {\n       *                         \"className\" : \"UserGender\",\n       *                         \"limit\": 1\n       *                      }\n       *                   }\n       *                  
    \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 *

    \n * 仅在云引擎运行环境下有效。\n *

    \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 const getUserWithSessionToken = authOptions => {\n if (authOptions.user) {\n if (!authOptions.user._sessionToken) {\n throw new Error('authOptions.user is not signed in.');\n }\n return Promise.resolve(authOptions.user);\n }\n if (authOptions.sessionToken) {\n return AV.User._fetchUserBySessionToken(authOptions.sessionToken);\n }\n return AV.User.currentAsync();\n };\n\n const getSessionTokenAsync = authOptions => {\n const sessionToken = getSessionToken(authOptions);\n if (sessionToken) {\n return Promise.resolve(sessionToken);\n }\n return AV.User.currentAsync().then(user => {\n if (user) {\n return user.getSessionToken();\n }\n });\n };\n\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} [authOptions]\n * @return {Promise}\n */\n request: function(options, authOptions = {}) {\n let friend;\n let attributes;\n\n if (options.friend) {\n friend = options.friend;\n attributes = options.attributes;\n } else {\n friend = options;\n }\n\n const friendObj = _.isString(friend)\n ? AV.Object.createWithoutData('_User', friend)\n : friend;\n\n return getUserWithSessionToken(authOptions).then(userObj => {\n if (!userObj) {\n throw new Error('Please signin an user.');\n }\n return LCRequest({\n method: 'POST',\n path: '/users/friendshipRequests',\n data: {\n user: userObj._toPointer(),\n friend: friendObj._toPointer(),\n friendship: attributes,\n },\n authOptions,\n });\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}\n */\n acceptRequest: function(options, authOptions = {}) {\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 getSessionTokenAsync(authOptions).then(sessionToken => {\n if (!sessionToken) {\n throw new Error('Please signin an user.');\n }\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 /**\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}\n */\n declineRequest: function(request, authOptions = {}) {\n const requestId = _.isString(request) ? request : request.id;\n return getSessionTokenAsync(authOptions).then(sessionToken => {\n if (!sessionToken) {\n throw new Error('Please signin an user.');\n }\n return LCRequest({\n method: 'PUT',\n path: '/users/friendshipRequests/' + requestId + '/decline',\n authOptions,\n });\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 *

    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 *

    \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}\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}\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}\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}\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}\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}\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}\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}\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}\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}\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}\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}\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}\n */\n getArchives({ skip, limit } = {}, authOptions) {\n return request({\n method: 'GET',\n path: `/leaderboard/leaderboards/${this.statisticName}/archives`,\n query: {\n skip,\n limit,\n },\n authOptions,\n }).then(({ results }) =>\n results.map(({ version, status, url, activatedAt, deactivatedAt }) => ({\n statisticName: this.statisticName,\n version,\n status,\n url,\n activatedAt: parseDate(activatedAt.iso),\n deactivatedAt: parseDate(deactivatedAt.iso),\n }))\n );\n },\n }\n);\n\n\n\n// WEBPACK FOOTER //\n// ./src/leaderboard.js"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/av-live-query-core-min.js b/dist/av-live-query-core-min.js new file mode 100644 index 000000000..29589cd1d --- /dev/null +++ b/dist/av-live-query-core-min.js @@ -0,0 +1,24 @@ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.AV=e():t.AV=e()}("undefined"!=typeof self?self:this,function(){return function(t){function e(r){if(n[r])return n[r].exports;var i=n[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,e),i.l=!0,i.exports}var n={};return e.m=t,e.c=n,e.d=function(t,n,r){e.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:r})},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,"a",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=272)}([function(t,e,n){"use strict";var r=n(7),i=n(73),o=n(4),a=n(8),s=n(60).f,u=n(153),c=n(6),f=n(48),l=n(37),h=n(12),d=function(t){var e=function(n,r,o){if(this instanceof e){switch(arguments.length){case 0:return new t;case 1:return new t(n);case 2:return new t(n,r)}return new t(n,r,o)}return i(t,this,arguments)};return e.prototype=t.prototype,e};t.exports=function(t,e){var n,i,p,v,g,m,y,b,_,w=t.target,E=t.global,O=t.stat,T=t.proto,S=E?r:O?r[w]:(r[w]||{}).prototype,A=E?c:c[w]||l(c,w,{})[w],x=A.prototype;for(v in e)n=u(E?v:w+(O?".":"#")+v,t.forced),i=!n&&S&&h(S,v),m=A[v],i&&(t.dontCallGetSet?(_=s(S,v),y=_&&_.value):y=S[v]),g=i&&y?y:e[v],i&&typeof m==typeof g||(b=t.bind&&i?f(g,r):t.wrap&&i?d(g):T&&a(g)?o(g):g,(t.sham||g&&g.sham||m&&m.sham)&&l(b,"sham",!0),l(A,v,b),T&&(p=w+"Prototype",h(c,p)||l(c,p,{}),l(c[p],v,g),t.real&&x&&!x[v]&&l(x,v,g)))}},function(t,e){function n(t){return t&&t.__esModule?t:{default:t}}t.exports=n,t.exports.__esModule=!0,t.exports.default=t.exports},function(t,e){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(312);n.d(e,"default",function(){return r.a});var i=n(131);n.d(e,"VERSION",function(){return i.VERSION}),n.d(e,"restArguments",function(){return i.restArguments}),n.d(e,"isObject",function(){return i.isObject}),n.d(e,"isNull",function(){return i.isNull}),n.d(e,"isUndefined",function(){return i.isUndefined}),n.d(e,"isBoolean",function(){return i.isBoolean}),n.d(e,"isElement",function(){return i.isElement}),n.d(e,"isString",function(){return i.isString}),n.d(e,"isNumber",function(){return i.isNumber}),n.d(e,"isDate",function(){return i.isDate}),n.d(e,"isRegExp",function(){return i.isRegExp}),n.d(e,"isError",function(){return i.isError}),n.d(e,"isSymbol",function(){return i.isSymbol}),n.d(e,"isArrayBuffer",function(){return i.isArrayBuffer}),n.d(e,"isDataView",function(){return i.isDataView}),n.d(e,"isArray",function(){return i.isArray}),n.d(e,"isFunction",function(){return i.isFunction}),n.d(e,"isArguments",function(){return i.isArguments}),n.d(e,"isFinite",function(){return i.isFinite}),n.d(e,"isNaN",function(){return i.isNaN}),n.d(e,"isTypedArray",function(){return i.isTypedArray}),n.d(e,"isEmpty",function(){return i.isEmpty}),n.d(e,"isMatch",function(){return i.isMatch}),n.d(e,"isEqual",function(){return i.isEqual}),n.d(e,"isMap",function(){return i.isMap}),n.d(e,"isWeakMap",function(){return i.isWeakMap}),n.d(e,"isSet",function(){return i.isSet}),n.d(e,"isWeakSet",function(){return i.isWeakSet}),n.d(e,"keys",function(){return i.keys}),n.d(e,"allKeys",function(){return i.allKeys}),n.d(e,"values",function(){return i.values}),n.d(e,"pairs",function(){return i.pairs}),n.d(e,"invert",function(){return i.invert}),n.d(e,"functions",function(){return i.functions}),n.d(e,"methods",function(){return i.methods}),n.d(e,"extend",function(){return i.extend}),n.d(e,"extendOwn",function(){return i.extendOwn}),n.d(e,"assign",function(){return i.assign}),n.d(e,"defaults",function(){return i.defaults}),n.d(e,"create",function(){return i.create}),n.d(e,"clone",function(){return i.clone}),n.d(e,"tap",function(){return i.tap}),n.d(e,"get",function(){return i.get}),n.d(e,"has",function(){return i.has}),n.d(e,"mapObject",function(){return i.mapObject}),n.d(e,"identity",function(){return i.identity}),n.d(e,"constant",function(){return i.constant}),n.d(e,"noop",function(){return i.noop}),n.d(e,"toPath",function(){return i.toPath}),n.d(e,"property",function(){return i.property}),n.d(e,"propertyOf",function(){return i.propertyOf}),n.d(e,"matcher",function(){return i.matcher}),n.d(e,"matches",function(){return i.matches}),n.d(e,"times",function(){return i.times}),n.d(e,"random",function(){return i.random}),n.d(e,"now",function(){return i.now}),n.d(e,"escape",function(){return i.escape}),n.d(e,"unescape",function(){return i.unescape}),n.d(e,"templateSettings",function(){return i.templateSettings}),n.d(e,"template",function(){return i.template}),n.d(e,"result",function(){return i.result}),n.d(e,"uniqueId",function(){return i.uniqueId}),n.d(e,"chain",function(){return i.chain}),n.d(e,"iteratee",function(){return i.iteratee}),n.d(e,"partial",function(){return i.partial}),n.d(e,"bind",function(){return i.bind}),n.d(e,"bindAll",function(){return i.bindAll}),n.d(e,"memoize",function(){return i.memoize}),n.d(e,"delay",function(){return i.delay}),n.d(e,"defer",function(){return i.defer}),n.d(e,"throttle",function(){return i.throttle}),n.d(e,"debounce",function(){return i.debounce}),n.d(e,"wrap",function(){return i.wrap}),n.d(e,"negate",function(){return i.negate}),n.d(e,"compose",function(){return i.compose}),n.d(e,"after",function(){return i.after}),n.d(e,"before",function(){return i.before}),n.d(e,"once",function(){return i.once}),n.d(e,"findKey",function(){return i.findKey}),n.d(e,"findIndex",function(){return i.findIndex}),n.d(e,"findLastIndex",function(){return i.findLastIndex}),n.d(e,"sortedIndex",function(){return i.sortedIndex}),n.d(e,"indexOf",function(){return i.indexOf}),n.d(e,"lastIndexOf",function(){return i.lastIndexOf}),n.d(e,"find",function(){return i.find}),n.d(e,"detect",function(){return i.detect}),n.d(e,"findWhere",function(){return i.findWhere}),n.d(e,"each",function(){return i.each}),n.d(e,"forEach",function(){return i.forEach}),n.d(e,"map",function(){return i.map}),n.d(e,"collect",function(){return i.collect}),n.d(e,"reduce",function(){return i.reduce}),n.d(e,"foldl",function(){return i.foldl}),n.d(e,"inject",function(){return i.inject}),n.d(e,"reduceRight",function(){return i.reduceRight}),n.d(e,"foldr",function(){return i.foldr}),n.d(e,"filter",function(){return i.filter}),n.d(e,"select",function(){return i.select}),n.d(e,"reject",function(){return i.reject}),n.d(e,"every",function(){return i.every}),n.d(e,"all",function(){return i.all}),n.d(e,"some",function(){return i.some}),n.d(e,"any",function(){return i.any}),n.d(e,"contains",function(){return i.contains}),n.d(e,"includes",function(){return i.includes}),n.d(e,"include",function(){return i.include}),n.d(e,"invoke",function(){return i.invoke}),n.d(e,"pluck",function(){return i.pluck}),n.d(e,"where",function(){return i.where}),n.d(e,"max",function(){return i.max}),n.d(e,"min",function(){return i.min}),n.d(e,"shuffle",function(){return i.shuffle}),n.d(e,"sample",function(){return i.sample}),n.d(e,"sortBy",function(){return i.sortBy}),n.d(e,"groupBy",function(){return i.groupBy}),n.d(e,"indexBy",function(){return i.indexBy}),n.d(e,"countBy",function(){return i.countBy}),n.d(e,"partition",function(){return i.partition}),n.d(e,"toArray",function(){return i.toArray}),n.d(e,"size",function(){return i.size}),n.d(e,"pick",function(){return i.pick}),n.d(e,"omit",function(){return i.omit}),n.d(e,"first",function(){return i.first}),n.d(e,"head",function(){return i.head}),n.d(e,"take",function(){return i.take}),n.d(e,"initial",function(){return i.initial}),n.d(e,"last",function(){return i.last}),n.d(e,"rest",function(){return i.rest}),n.d(e,"tail",function(){return i.tail}),n.d(e,"drop",function(){return i.drop}),n.d(e,"compact",function(){return i.compact}),n.d(e,"flatten",function(){return i.flatten}),n.d(e,"without",function(){return i.without}),n.d(e,"uniq",function(){return i.uniq}),n.d(e,"unique",function(){return i.unique}),n.d(e,"union",function(){return i.union}),n.d(e,"intersection",function(){return i.intersection}),n.d(e,"difference",function(){return i.difference}),n.d(e,"unzip",function(){return i.unzip}),n.d(e,"transpose",function(){return i.transpose}),n.d(e,"zip",function(){return i.zip}),n.d(e,"object",function(){return i.object}),n.d(e,"range",function(){return i.range}),n.d(e,"chunk",function(){return i.chunk}),n.d(e,"mixin",function(){return i.mixin})},function(t,e,n){var r=n(74),i=Function.prototype,o=i.bind,a=i.call,s=r&&o.bind(a,a);t.exports=r?function(t){return t&&s(t)}:function(t){return t&&function(){return a.apply(t,arguments)}}},function(t,e,n){"use strict";(function(t){n.d(e,"e",function(){return r}),n.d(e,"p",function(){return i}),n.d(e,"a",function(){return o}),n.d(e,"c",function(){return a}),n.d(e,"d",function(){return s}),n.d(e,"o",function(){return u}),n.d(e,"q",function(){return c}),n.d(e,"t",function(){return f}),n.d(e,"i",function(){return l}),n.d(e,"r",function(){return h}),n.d(e,"s",function(){return d}),n.d(e,"k",function(){return p}),n.d(e,"m",function(){return v}),n.d(e,"j",function(){return g}),n.d(e,"l",function(){return m}),n.d(e,"g",function(){return y}),n.d(e,"f",function(){return b}),n.d(e,"h",function(){return _}),n.d(e,"n",function(){return w}),n.d(e,"b",function(){return E});var r="1.12.1",i="object"==typeof self&&self.self===self&&self||"object"==typeof t&&t.global===t&&t||Function("return this")()||{},o=Array.prototype,a=Object.prototype,s="undefined"!=typeof Symbol?Symbol.prototype:null,u=o.push,c=o.slice,f=a.toString,l=a.hasOwnProperty,h="undefined"!=typeof ArrayBuffer,d="undefined"!=typeof DataView,p=Array.isArray,v=Object.keys,g=Object.create,m=h&&ArrayBuffer.isView,y=isNaN,b=isFinite,_=!{toString:null}.propertyIsEnumerable("toString"),w=["valueOf","isPrototypeOf","toString","propertyIsEnumerable","hasOwnProperty","toLocaleString"],E=Math.pow(2,53)-1}).call(e,n(72))},function(t,e){t.exports={}},function(t,e,n){(function(e){var n=function(t){return t&&t.Math==Math&&t};t.exports=n("object"==typeof globalThis&&globalThis)||n("object"==typeof window&&window)||n("object"==typeof self&&self)||n("object"==typeof e&&e)||function(){return this}()||Function("return this")()}).call(e,n(72))},function(t,e){t.exports=function(t){return"function"==typeof t}},function(t,e,n){var r=n(7),i=n(77),o=n(12),a=n(98),s=n(62),u=n(151),c=i("wks"),f=r.Symbol,l=f&&f.for,h=u?f:f&&f.withoutSetter||a;t.exports=function(t){if(!o(c,t)||!s&&"string"!=typeof c[t]){var e="Symbol."+t;s&&o(f,t)?c[t]=f[t]:c[t]=u&&l?l(e):h(e)}return c[t]}},function(t,e,n){var r=n(6),i=n(12),o=n(147),a=n(23).f;t.exports=function(t){var e=r.Symbol||(r.Symbol={});i(e,t)||a(e,t,{value:o.f(t)})}},function(t,e,n){var r=n(8);t.exports=function(t){return"object"==typeof t?null!==t:r(t)}},function(t,e,n){var r=n(4),i=n(34),o=r({}.hasOwnProperty);t.exports=Object.hasOwn||function(t,e){return o(i(t),e)}},function(t,e,n){t.exports=n(275)},function(t,e,n){var r=n(2);t.exports=!r(function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]})},function(t,e,n){var r=n(74),i=Function.prototype.call;t.exports=r?i.bind(i):function(){return i.apply(i,arguments)}},function(t,e,n){"use strict";function r(t){if(!Object(i.a)(t))return[];if(o.m)return Object(o.m)(t);var e=[];for(var n in t)Object(a.a)(t,n)&&e.push(n);return o.h&&Object(s.a)(t,e),e}e.a=r;var i=n(54),o=n(5),a=n(45),s=n(184)},function(t,e,n){"use strict";function r(t){var e="[object "+t+"]";return function(t){return i.t.call(t)===e}}e.a=r;var i=n(5)},function(t,e,n){var r=n(6),i=n(7),o=n(8),a=function(t){return o(t)?t:void 0};t.exports=function(t,e){return arguments.length<2?a(r[t])||a(i[t]):r[t]&&r[t][e]||i[t]&&i[t][e]}},function(t,e,n){var r=n(4);t.exports=r({}.isPrototypeOf)},function(t,e,n){var r=n(11),i=String,o=TypeError;t.exports=function(t){if(r(t))return t;throw o(i(t)+" is not an object")}},function(t,e,n){"use strict";function r(t,e,n){return i.a.iteratee!==a.a?i.a.iteratee(t,e):Object(o.a)(t,e,n)}e.a=r;var i=n(25),o=n(194),a=n(195)},function(t,e,n){t.exports=n(384)},function(t,e,n){var r=n(14),i=n(152),o=n(154),a=n(20),s=n(95),u=TypeError,c=Object.defineProperty,f=Object.getOwnPropertyDescriptor;e.f=r?o?function(t,e,n){if(a(t),e=s(e),a(n),"function"==typeof t&&"prototype"===e&&"value"in n&&"writable"in n&&!n.writable){var r=f(t,e);r&&r.writable&&(t[e]=n.value,n={configurable:"configurable"in n?n.configurable:r.configurable,enumerable:"enumerable"in n?n.enumerable:r.enumerable,writable:!1})}return c(t,e,n)}:c:function(t,e,n){if(a(t),e=s(e),a(n),i)try{return c(t,e,n)}catch(t){}if("get"in n||"set"in n)throw u("Accessors not supported");return"value"in n&&(t[e]=n.value),t}},function(t,e,n){"use strict";function r(t,e){return e=null==e?t.length-1:+e,function(){for(var n=Math.max(arguments.length-e,0),r=Array(n),i=0;i0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1?arguments[1]:void 0,n={"X-LC-Id":f.applicationId,"Content-Type":"application/json;charset=UTF-8"},r=!1;return"boolean"==typeof t.useMasterKey?r=t.useMasterKey:"boolean"==typeof f._config.useMasterKey&&(r=f._config.useMasterKey),r?f.masterKey?e?n["X-LC-Sign"]=v(f.masterKey,!0):n["X-LC-Key"]="".concat(f.masterKey,",master"):(console.warn("masterKey is not set, fall back to use appKey"),g(n,e)):g(n,e),f.hookKey&&(n["X-LC-Hook-Key"]=f.hookKey),null!==f._config.production&&(n["X-LC-Prod"]=String(f._config.production)),n["X-LC-UA"]=f._sharedConfig.userAgent,o.default.resolve().then(function(){var e=d(t);if(e)n["X-LC-Session"]=e;else if(!f._config.disableCurrentUser)return f.User.currentAsync().then(function(t){return t&&t._sessionToken&&(n["X-LC-Session"]=t._sessionToken),n});return n})},y=function(t){var e=t.service,n=void 0===e?"api":e,r=t.version,i=void 0===r?"1.1":r,o=t.path,a=f._config.serverURLs[n];if(!a)throw new Error("undefined server URL for ".concat(n));return"/"!==a.charAt(a.length-1)&&(a+="/"),a+=i,o&&(a+=o),a},b=function(t){var e=t.service,n=t.version,r=t.method,o=t.path,s=t.query,u=t.data,c=t.authOptions,h=t.signKey,d=void 0===h||h;if(!f.applicationId||!f.applicationKey&&!f.masterKey)throw new Error("Not initialized");f._appRouter&&f._appRouter.refresh();var v=f._config.requestTimeout,g=y({service:e,path:o,version:n});return m(c,d).then(function(t){return p({method:r,url:g,query:s,data:u,headers:t,timeout:v}).catch(function(t){var e={code:t.code||-1,error:t.message||t.responseText};if(t.response&&t.response.code)e=t.response;else if(t.responseText)try{e=JSON.parse(t.responseText)}catch(t){}if(e.rawMessage=e.rawMessage||e.error,!f._sharedConfig.keepErrorRawMessage){var n,o;e.error+=(0,i.default)(n=(0,i.default)(o=" [".concat(t.statusCode||"N/A"," ")).call(o,r," ")).call(n,g,"]")}var s=new l(e.code,e.error);throw delete e.error,a.extend(s,e)})})},_=function(t,e,n,r,i,o,a){var s="";if(t&&(s+="/".concat(t)),e&&(s+="/".concat(e)),n&&(s+="/".concat(n)),i&&i._fetchWhenSave)throw new Error("_fetchWhenSave should be in the query");if(i&&i._where)throw new Error("_where should be in the query");return r&&"get"===r.toLowerCase()&&(a=c({},a,i),i=null),b({method:r,path:s,query:a,data:i,authOptions:o})};f.request=b,t.exports={_request:_,request:b}},function(t,e,n){"use strict";var r=n(17),i=n(5),o=Object(r.a)("Function"),a=i.p.document&&i.p.document.childNodes;"function"!=typeof/./&&"object"!=typeof Int8Array&&"function"!=typeof a&&(o=function(t){return"function"==typeof t||!1}),e.a=o},function(t,e,n){"use strict";var r=n(183);e.a=Object(r.a)("length")},function(t,e,n){"use strict";var r=n(1),i=r(n(57)),o=r(n(227)),a=r(n(13)),s=n(3),u=function(t){return s.isNull(t)||s.isUndefined(t)},c=function(t){return s.isArray(t)?t:void 0===t||null===t?[]:[t]},f=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=(0,i.default)(t),n=t.include,r=t.includeACL,o={};return e&&(o.keys=c(e).join(",")),n&&(o.include=c(n).join(",")),r&&(o.returnACL=r),o},l=function(t){return t.sessionToken?t.sessionToken:t.user&&"function"==typeof t.user.getSessionToken?t.user.getSessionToken():void 0},h=function(t){return function(e){return t(e),e}},d=function(){},p=function(t,e,n){var r;return r=e&&e.hasOwnProperty("constructor")?e.constructor:function(){t.apply(this,arguments)},s.extend(r,t),d.prototype=t.prototype,r.prototype=new d,e&&s.extend(r.prototype,e),n&&s.extend(r,n),r.prototype.constructor=r,r.__super__=t.prototype,r},v="undefined"==typeof wx?function(t){return new Date(t)}:function(t){return new Date(Date.parse(t))},g=function(t,e,n){var r=e.split("."),i=r.pop(),o=t;return r.forEach(function(t){void 0===o[t]&&(o[t]={}),o=o[t]}),o[i]=n,t},m=function(t,e){for(var n=e.split("."),r=n[0],i=n.pop(),o=t,a=0;ay;y++)if((_=j(t[y]))&&c(v,_))return _;return new p(!1)}g=f(t,m)}for(w=g.next;!(E=i(w,g)).done;){try{_=j(E.value)}catch(t){h(g,"throw",t)}if("object"==typeof _&&_&&c(v,_))return _}return new p(!1)}},function(t,e,n){"use strict";var r=n(32),i=n(163),o=n(50),a=n(42),s=n(23).f,u=n(130),c=n(33),f=n(14),l=a.set,h=a.getterFor("Array Iterator");t.exports=u(Array,"Array",function(t,e){l(this,{type:"Array Iterator",target:r(t),index:0,kind:e})},function(){var t=h(this),e=t.target,n=t.kind,r=t.index++;return!e||r>=e.length?(t.target=void 0,{value:void 0,done:!0}):"keys"==n?{value:r,done:!1}:"values"==n?{value:e[r],done:!1}:{value:[r,e[r]],done:!1}},"values");var d=o.Arguments=o.Array;if(i("keys"),i("values"),i("entries"),!c&&f&&"values"!==d.name)try{s(d,"name",{value:"values"})}catch(t){}},function(t,e,n){var r,i,o,a=n(164),s=n(7),u=n(4),c=n(11),f=n(37),l=n(12),h=n(122),d=n(100),p=n(78),v=s.TypeError,g=s.WeakMap,m=function(t){return o(t)?i(t):r(t,{})},y=function(t){return function(e){var n;if(!c(e)||(n=i(e)).type!==t)throw v("Incompatible receiver, "+t+" required");return n}};if(a||h.state){var b=h.state||(h.state=new g),_=u(b.get),w=u(b.has),E=u(b.set);r=function(t,e){if(w(b,t))throw new v("Object already initialized");return e.facade=t,E(b,t,e),e},i=function(t){return _(b,t)||{}},o=function(t){return w(b,t)}}else{var O=d("state");p[O]=!0,r=function(t,e){if(l(t,O))throw new v("Object already initialized");return e.facade=t,f(t,O,e),e},i=function(t){return l(t,O)?t[O]:{}},o=function(t){return l(t,O)}}t.exports={set:r,get:i,has:o,enforce:m,getterFor:y}},function(t,e,n){var r=n(37);t.exports=function(t,e,n,i){return i&&i.enumerable?t[e]=n:r(t,e,n),t}},function(t,e,n){n(41);var r=n(311),i=n(7),o=n(51),a=n(37),s=n(50),u=n(9),c=u("toStringTag");for(var f in r){var l=i[f],h=l&&l.prototype;h&&o(h)!==c&&a(h,c,f),s[f]=s.Array}},function(t,e,n){"use strict";function r(t,e){return null!=t&&i.i.call(t,e)}e.a=r;var i=n(5)},function(t,e,n){"use strict";function r(t,e){if(this instanceof r?this.constructor:void 0){var n=new Error(e);return(0,o.default)(n,(0,a.default)(this)),n.code=t,n}return new r(t,e)}var i=n(1),o=i(n(411)),a=i(n(227)),s=n(3);r.prototype=Object.create(Error.prototype,{constructor:{value:Error,enumerable:!1,writable:!0,configurable:!0}}),(0,o.default)(r,Error),s.extend(r,{OTHER_CAUSE:-1,INTERNAL_SERVER_ERROR:1,CONNECTION_FAILED:100,OBJECT_NOT_FOUND:101,INVALID_QUERY:102,INVALID_CLASS_NAME:103,MISSING_OBJECT_ID:104,INVALID_KEY_NAME:105,INVALID_POINTER:106,INVALID_JSON:107,COMMAND_UNAVAILABLE:108,NOT_INITIALIZED:109,INCORRECT_TYPE:111,INVALID_CHANNEL_NAME:112,PUSH_MISCONFIGURED:115,OBJECT_TOO_LARGE:116,OPERATION_FORBIDDEN:119,CACHE_MISS:120,INVALID_NESTED_KEY:121,INVALID_FILE_NAME:122,INVALID_ACL:123,TIMEOUT:124,INVALID_EMAIL_ADDRESS:125,MISSING_CONTENT_TYPE:126,MISSING_CONTENT_LENGTH:127,INVALID_CONTENT_LENGTH:128,FILE_TOO_LARGE:129,FILE_SAVE_ERROR:130,FILE_DELETE_ERROR:153,DUPLICATE_VALUE:137,INVALID_ROLE_NAME:139,EXCEEDED_QUOTA:140,SCRIPT_FAILED:141,VALIDATION_ERROR:142,INVALID_IMAGE_DATA:150,UNSAVED_FILE_ERROR:151,INVALID_PUSH_TIME_ERROR:152,USERNAME_MISSING:200,PASSWORD_MISSING:201,USERNAME_TAKEN:202,EMAIL_TAKEN:203,EMAIL_MISSING:204,EMAIL_NOT_FOUND:205,SESSION_MISSING:206,MUST_CREATE_USER_THROUGH_SIGNUP:207,ACCOUNT_ALREADY_LINKED:208,LINKED_ID_MISSING:250,INVALID_LINKED_SESSION:251,UNSUPPORTED_SERVICE:252,X_DOMAIN_REQUEST:602}),t.exports=r},function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},function(t,e,n){var r=n(4),i=n(31),o=n(74),a=r(r.bind);t.exports=function(t,e){return i(t),void 0===e?t:o?a(t,e):function(){return t.apply(e,arguments)}}},function(t,e,n){var r,i=n(20),o=n(127),a=n(126),s=n(78),u=n(159),c=n(123),f=n(100),l=f("IE_PROTO"),h=function(){},d=function(t){return" + + + + + + + + + + + + + + +
    + +

    ACL

    + + + + + + + +
    + +
    + +

    + AV. + + ACL +

    + +

    An ACL, or Access Control List can be added to any +AV.Object to restrict access to only a subset of users +of your application.

    + + +
    + +
    +
    + + + + +

    Constructor

    + + +

    new ACL()

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    See:
    +
    + +
    + + + +
    + + + + + +
    + Creates a new ACL. +If no argument is given, the ACL has no permissions for anyone. +If the argument is a AV.User, the ACL will have read and write + permission for only that user. +If the argument is any other JSON object, that object will be interpretted + as a serialized ACL created with toJSON(). +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + +

    Methods

    + + + + + + +

    getPublicReadAccess() → {Boolean}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Get whether the public is allowed to read this object. +
    + + + + + + + + + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +Boolean + + +
    +
    + + + + + + + + + +

    getPublicWriteAccess() → {Boolean}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Get whether the public is allowed to write this object. +
    + + + + + + + + + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +Boolean + + +
    +
    + + + + + + + + + +

    getReadAccess(userId) → {Boolean}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Get whether the given user id is *explicitly* allowed to read this object. +Even if this returns false, the user may still be able to access it if +getPublicReadAccess returns true or a role that the user belongs to has +write access. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    userId + + An instance of AV.User or its objectId, or a AV.Role.
    + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +Boolean + + +
    +
    + + + + + + + + + +

    getRoleReadAccess(role) → {Boolean}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Get whether users belonging to the given role are allowed +to read this object. Even if this returns false, the role may +still be able to write it if a parent role has read access. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    role + + The name of the role, or a AV.Role object.
    + + + + + + + + + + + + +
    Throws:
    + + + +
    +
    +
    + If role is neither a AV.Role nor a String. +
    +
    +
    +
    +
    +
    + Type +
    +
    + +String + + +
    +
    +
    +
    +
    + + + + + +
    Returns:
    + + +
    + true if the role has read access. false otherwise. +
    + + + +
    +
    + Type +
    +
    + +Boolean + + +
    +
    + + + + + + + + + +

    getRoleWriteAccess(role) → {Boolean}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Get whether users belonging to the given role are allowed +to write this object. Even if this returns false, the role may +still be able to write it if a parent role has write access. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    role + + The name of the role, or a AV.Role object.
    + + + + + + + + + + + + +
    Throws:
    + + + +
    +
    +
    + If role is neither a AV.Role nor a String. +
    +
    +
    +
    +
    +
    + Type +
    +
    + +String + + +
    +
    +
    +
    +
    + + + + + +
    Returns:
    + + +
    + true if the role has write access. false otherwise. +
    + + + +
    +
    + Type +
    +
    + +Boolean + + +
    +
    + + + + + + + + + +

    getWriteAccess(userId) → {Boolean}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Get whether the given user id is *explicitly* allowed to write this object. +Even if this returns false, the user may still be able to write it if +getPublicWriteAccess returns true or a role that the user belongs to has +write access. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    userId + + An instance of AV.User or its objectId, or a AV.Role.
    + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +Boolean + + +
    +
    + + + + + + + + + +

    setPublicReadAccess(allowed)

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Set whether the public is allowed to read this object. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    allowed + + +Boolean + + + +
    + + + + + + + + + + + + + + + + + + + + + +

    setPublicWriteAccess(allowed)

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Set whether the public is allowed to write this object. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    allowed + + +Boolean + + + +
    + + + + + + + + + + + + + + + + + + + + + +

    setReadAccess(userId, allowed)

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Set whether the given user is allowed to read this object. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    userId + + An instance of AV.User or its objectId.
    allowed + + +Boolean + + + + Whether that user should have read access.
    + + + + + + + + + + + + + + + + + + + + + +

    setRoleReadAccess(role, allowed)

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Set whether users belonging to the given role are allowed +to read this object. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    role + + The name of the role, or a AV.Role object.
    allowed + + +Boolean + + + + Whether the given role can read this object.
    + + + + + + + + + + + + +
    Throws:
    + + + +
    +
    +
    + If role is neither a AV.Role nor a String. +
    +
    +
    +
    +
    +
    + Type +
    +
    + +String + + +
    +
    +
    +
    +
    + + + + + + + + + + + + +

    setRoleWriteAccess(role, allowed)

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Set whether users belonging to the given role are allowed +to write this object. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    role + + The name of the role, or a AV.Role object.
    allowed + + +Boolean + + + + Whether the given role can write this object.
    + + + + + + + + + + + + +
    Throws:
    + + + +
    +
    +
    + If role is neither a AV.Role nor a String. +
    +
    +
    +
    +
    +
    + Type +
    +
    + +String + + +
    +
    +
    +
    +
    + + + + + + + + + + + + +

    setWriteAccess(userId, allowed)

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Set whether the given user id is allowed to write this object. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    userId + + An instance of AV.User or its objectId, or a AV.Role..
    allowed + + +Boolean + + + + Whether that user should have write access.
    + + + + + + + + + + + + + + + + + + + + + +

    toJSON() → {Object}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Returns a JSON-encoded version of the ACL. +
    + + + + + + + + + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +Object + + +
    +
    + + + + + + + + + + +
    + +
    + + + + +
    + +
    + +
    + Documentation generated by JSDoc 3.6.3 on Mon Sep 25 2023 11:05:14 GMT+0000 (Coordinated Universal Time) using the docdash theme. +
    + + + + + \ No newline at end of file diff --git a/docs/AV.Captcha.html b/docs/AV.Captcha.html new file mode 100644 index 000000000..5c07c9be2 --- /dev/null +++ b/docs/AV.Captcha.html @@ -0,0 +1,1495 @@ + + + + + Captcha - Documentation + + + + + + + + + + + + + + + + +
    + +

    Captcha

    + + + + + + + +
    + +
    + +

    + AV. + + Captcha +

    + + +
    + +
    +
    + + + + + +

    new Captcha()

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + +
    Example
    + +
    AV.Captcha.request().then(captcha => {
    +  captcha.bind({
    +    textInput: 'code', // the id for textInput
    +    image: 'captcha',
    +    verifyButton: 'verify',
    +  }, {
    +    success: (validateCode) => {}, // next step
    +    error: (error) => {}, // present error.message to user
    +  });
    +});
    + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + +

    Members

    + + + +

    captchaToken :string

    + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + The captchaToken of the captcha. +
    + + + +
    Type:
    +
      +
    • + +string + + +
    • +
    + + + + + + + + +

    url :string

    + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + The image url of the captcha +
    + + + +
    Type:
    +
      +
    • + +string + + +
    • +
    + + + + + + + + +

    validateToken :string

    + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + The validateToken of the captcha. +
    + + + +
    Type:
    +
      +
    • + +string + + +
    • +
    + + + + + + + + + + +

    Methods

    + + + + + + +

    (static) request(optionsopt) → {Promise.<AV.Captcha>}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Request a captcha +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    options + + + + <optional>
    + + + + + +
    +
    Properties
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDefaultDescription
    width + + +Number + + + + + + <optional>
    + + + + + +
    + + width(px) of the captcha, ranged 60-200
    height + + +Number + + + + + + <optional>
    + + + + + +
    + + height(px) of the captcha, ranged 30-100
    size + + +Number + + + + + + <optional>
    + + + + + +
    + + 4 + + length of the captcha, ranged 3-6. MasterKey required.
    ttl + + +Number + + + + + + <optional>
    + + + + + +
    + + 60 + + time to live(s), ranged 10-180. MasterKey required.
    + +
    + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +Promise.<AV.Captcha> + + +
    +
    + + + + + + + + + +

    bind(elementsopt, callbacksopt)

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Bind the captcha to HTMLElements. ONLY AVAILABLE in browsers. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    elements + + + + <optional>
    + + + + + +
    +
    Properties
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    textInput + + +String +| + +HTMLInputElement + + + + + + <optional>
    + + + + + +
    An input element typed text, or the id for the element.
    image + + +String +| + +HTMLImageElement + + + + + + <optional>
    + + + + + +
    An image element, or the id for the element.
    verifyButton + + +String +| + +HTMLElement + + + + + + <optional>
    + + + + + +
    A button element, or the id for the element.
    + +
    callbacks + + + + <optional>
    + + + + + +
    +
    Properties
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    success + + +function + + + + + + <optional>
    + + + + + +
    Success callback will be called if the code is verified. The param `validateCode` can be used for further SMS request.
    error + + +function + + + + + + <optional>
    + + + + + +
    Error callback will be called if something goes wrong, detailed in param `error.message`.
    + +
    + + + + + + + + + + + + + + + + + + + + + +

    refresh() → {Promise.<string>}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Refresh the captcha +
    + + + + + + + + + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + a new capcha url +
    + + + +
    +
    + Type +
    +
    + +Promise.<string> + + +
    +
    + + + + + + + + + +

    unbind()

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + unbind the captcha from HTMLElements. ONLY AVAILABLE in browsers. +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    verify(code) → {Promise.<string>}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Verify the captcha +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    code + + +String + + + + The code from user input
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + validateToken if the code is valid +
    + + + +
    +
    + Type +
    +
    + +Promise.<string> + + +
    +
    + + + + + + + + + + +
    + +
    + + + + +
    + +
    + +
    + Documentation generated by JSDoc 3.6.3 on Mon Sep 25 2023 11:05:14 GMT+0000 (Coordinated Universal Time) using the docdash theme. +
    + + + + + \ No newline at end of file diff --git a/docs/AV.Cloud.html b/docs/AV.Cloud.html new file mode 100644 index 000000000..10aa48618 --- /dev/null +++ b/docs/AV.Cloud.html @@ -0,0 +1,1936 @@ + + + + + Cloud - Documentation + + + + + + + + + + + + + + + + +
    + +

    Cloud

    + + + + + + + +
    + +
    + +

    + AV. + + Cloud +

    + + +
    + +
    +
    + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    Contains functions for calling and declaring +

    + Some functions are only available from Cloud Code. +

    + + + + +
    + + + + + + + + + + + + +

    Members

    + + + +

    (static) requestCaptcha

    + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Request a captcha. +
    + + + + + + + + + + + + +

    Methods

    + + + + + + +

    (static) getServerDate() → {Promise.<Date>}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + +
    Since:
    +
    • 0.5.9
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Make a call to request server date time. +
    + + + + + + + + + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + A promise that will be resolved with the result +of the function. +
    + + + +
    +
    + Type +
    +
    + +Promise.<Date> + + +
    +
    + + + + + + + + + +

    (static) requestCaptcha(optionsopt) → {Promise.<AV.Captcha>}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Request a captcha +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    options + + + + <optional>
    + + + + + +
    +
    Properties
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDefaultDescription
    width + + +Number + + + + + + <optional>
    + + + + + +
    + + width(px) of the captcha, ranged 60-200
    height + + +Number + + + + + + <optional>
    + + + + + +
    + + height(px) of the captcha, ranged 30-100
    size + + +Number + + + + + + <optional>
    + + + + + +
    + + 4 + + length of the captcha, ranged 3-6. MasterKey required.
    ttl + + +Number + + + + + + <optional>
    + + + + + +
    + + 60 + + time to live(s), ranged 10-180. MasterKey required.
    + +
    + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +Promise.<AV.Captcha> + + +
    +
    + + + + + + + + + +

    (static) requestSmsCode(data, optionsopt) → {Promise}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Makes a call to request an sms code for operation verification. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    data + + +String +| + +Object + + + + + + + + + + The mobile phone number string or a JSON + object that contains mobilePhoneNumber,template,sign,op,ttl,name etc. +
    Properties
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    mobilePhoneNumber + + +String + + + + + + + + + +
    template + + +String + + + + + + <optional>
    + + + + + +
    sms template name
    sign + + +String + + + + + + <optional>
    + + + + + +
    sms signature name
    smsType + + +String + + + + + + <optional>
    + + + + + +
    sending code by `sms` (default) or `voice` call
    + +
    options + + +SMSAuthOptions + + + + + + <optional>
    + + + + + +
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + A promise that will be resolved if the request succeed +
    + + + +
    +
    + Type +
    +
    + +Promise + + +
    +
    + + + + + + + + + +

    (static) rpc(name, dataopt, optionsopt) → {Promise}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Makes a call to a cloud function, you can send {AV.Object} as param or a field of param; the response +from server will also be parsed as an {AV.Object}, array of {AV.Object}, or object includes {AV.Object} +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    name + + +String + + + + + + + + + + The function name.
    data + + +Object + + + + + + <optional>
    + + + + + +
    The parameters to send to the cloud function.
    options + + +AuthOptions + + + + + + <optional>
    + + + + + +
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + A promise that will be resolved with the result of the function. +
    + + + +
    +
    + Type +
    +
    + +Promise + + +
    +
    + + + + + + + + + +

    (static) run(name, dataopt, optionsopt) → {Promise}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Makes a call to a cloud function. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    name + + +String + + + + + + + + + + The function name.
    data + + +Object + + + + + + <optional>
    + + + + + +
    The parameters to send to the cloud function.
    options + + +AuthOptions + + + + + + <optional>
    + + + + + +
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + A promise that will be resolved with the result +of the function. +
    + + + +
    +
    + Type +
    +
    + +Promise + + +
    +
    + + + + + + + + + +

    (static) useMasterKey()

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Switches the LeanCloud SDK to using the Master key. The Master key grants +priveleged access to the data in LeanCloud and can be used to bypass ACLs and +other restrictions that are applied to the client SDKs. +

    Available in Cloud Code and Node.js only. +

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    (static) verifyCaptcha(code, captchaToken) → {Promise.<String>}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Verify captcha code. This is the low-level API for captcha. +Checkout AV.Captcha for high abstract APIs. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    code + + +String + + + + the code from user input
    captchaToken + + +String + + + + captchaToken returned by AV.Cloud.requestCaptcha
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + validateToken if the code is valid +
    + + + +
    +
    + Type +
    +
    + +Promise.<String> + + +
    +
    + + + + + + + + + +

    (static) verifySmsCode(code, phone) → {Promise}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Makes a call to verify sms code that sent by AV.Cloud.requestSmsCode +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    code + + +String + + + + The sms code sent by AV.Cloud.requestSmsCode
    phone + + +phone + + + + The mobile phoner number.
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + A promise that will be resolved with the result +of the function. +
    + + + +
    +
    + Type +
    +
    + +Promise + + +
    +
    + + + + + + + + + + +
    + +
    + + + + +
    + +
    + +
    + Documentation generated by JSDoc 3.6.3 on Mon Sep 25 2023 11:05:14 GMT+0000 (Coordinated Universal Time) using the docdash theme. +
    + + + + + \ No newline at end of file diff --git a/docs/AV.Conversation.html b/docs/AV.Conversation.html new file mode 100644 index 000000000..fb9667362 --- /dev/null +++ b/docs/AV.Conversation.html @@ -0,0 +1,1955 @@ + + + + + Conversation - Documentation + + + + + + + + + + + + + + + + +
    + +

    Conversation

    + + + + + + + +
    + +
    + +

    + AV. + + Conversation +

    + + +
    + +
    +
    + + + + + +

    new Conversation(name, optionsopt)

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    +

    An AV.Conversation is a local representation of a LeanCloud realtime's +conversation. This class is a subclass of AV.Object, and retains the +same functionality of an AV.Object, but also extends it with various +conversation specific methods, like get members, creators of this conversation. +

    +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    name + + +String + + + + + + + + + + The name of the Role to create.
    options + + +Object + + + + + + <optional>
    + + + + + +
    +
    Properties
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    isSystem + + +Boolean + + + + + + <optional>
    + + + + + +
    Set this conversation as system conversation.
    isTransient + + +Boolean + + + + + + <optional>
    + + + + + +
    Set this conversation as transient conversation.
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + +

    Methods

    + + + + + + +

    addMember(member)

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Add a member to this conversation +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    member + + +String + + + +
    + + + + + + + + + + + + + + + + + + + + + +

    broadcast(fromClient, message, optionsopt, authOptionsopt) → {Promise}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Send realtime broadcast message to all clients, via this conversation, using HTTP request. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    fromClient + + +String + + + + + + + + + + Sender's client id.
    message + + +String +| + +Object + + + + + + + + + + The message which will send to conversation. + It could be a raw string, or an object with a `toJSON` method, like a + realtime SDK's Message object. See more: https://leancloud.cn/docs/realtime_guide-js.html#消息.
    options + + +Object + + + + + + <optional>
    + + + + + +
    +
    Properties
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    pushData + + +Object + + + + + + <optional>
    + + + + + +
    Push data to this message. See more: 推送消息内容.
    validTill + + +Object + + + + + + <optional>
    + + + + + +
    The message will valid till this time.
    + +
    authOptions + + +AuthOptions + + + + + + <optional>
    + + + + + +
    + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +Promise + + +
    +
    + + + + + + + + + +

    getCreator() → {String}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Get current conversation's creator. +
    + + + + + + + + + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +String + + +
    +
    + + + + + + + + + +

    getLastMessageAt() → {Date}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Get the last message's time. +
    + + + + + + + + + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +Date + + +
    +
    + + + + + + + + + +

    getMembers() → {Array.<String>}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Get this conversation's members +
    + + + + + + + + + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +Array.<String> + + +
    +
    + + + + + + + + + +

    getMutedMembers() → {Array.<String>}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Get this conversation's members who set this conversation as muted. +
    + + + + + + + + + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +Array.<String> + + +
    +
    + + + + + + + + + +

    getName()

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Get this conversation's name field. +
    + + + + + + + + + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + String +
    + + + + + + + + + + + +

    isSystem() → {Boolean}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Returns true if this conversation is system conversation. +
    + + + + + + + + + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +Boolean + + +
    +
    + + + + + + + + + +

    isTransient() → {Boolean}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Returns true if this conversation is transient conversation. +
    + + + + + + + + + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +Boolean + + +
    +
    + + + + + + + + + +

    send(fromClient, message, optionsopt, authOptionsopt) → {Promise}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Send realtime message to this conversation, using HTTP request. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    fromClient + + +String + + + + + + + + + + Sender's client id.
    message + + +String +| + +Object + + + + + + + + + + The message which will send to conversation. + It could be a raw string, or an object with a `toJSON` method, like a + realtime SDK's Message object. See more: https://leancloud.cn/docs/realtime_guide-js.html#消息
    options + + +Object + + + + + + <optional>
    + + + + + +
    +
    Properties
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    transient + + +Boolean + + + + + + <optional>
    + + + + + +
    Whether send this message as transient message or not.
    toClients + + +Array.<String> + + + + + + <optional>
    + + + + + +
    Ids of clients to send to. This option can be used only in system conversation.
    pushData + + +Object + + + + + + <optional>
    + + + + + +
    Push data to this message. See more: 推送消息内容
    + +
    authOptions + + +AuthOptions + + + + + + <optional>
    + + + + + +
    + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +Promise + + +
    +
    + + + + + + + + + + +
    + +
    + + + + +
    + +
    + +
    + Documentation generated by JSDoc 3.6.3 on Mon Sep 25 2023 11:05:14 GMT+0000 (Coordinated Universal Time) using the docdash theme. +
    + + + + + \ No newline at end of file diff --git a/docs/AV.Error.html b/docs/AV.Error.html new file mode 100644 index 000000000..907b36819 --- /dev/null +++ b/docs/AV.Error.html @@ -0,0 +1,3350 @@ + + + + + Error - Documentation + + + + + + + + + + + + + + + + +
    + +

    Error

    + + + + + + + +
    + +
    + +

    + AV. + + Error +

    + + +
    + +
    +
    + + + + + +

    new Error()

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + +

    Members

    + + + +

    (static, constant) ACCOUNT_ALREADY_LINKED

    + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Error code indicating that an an account being linked is already linked +to another user. +
    + + + + + + + + + + +

    (static, constant) CACHE_MISS

    + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Error code indicating the result was not found in the cache. +
    + + + + + + + + + + +

    (static, constant) COMMAND_UNAVAILABLE

    + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Error code indicating that the feature you tried to access is only +available internally for testing purposes. +
    + + + + + + + + + + +

    (static, constant) CONNECTION_FAILED

    + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Error code indicating the connection to the AV servers failed. +
    + + + + + + + + + + +

    (static, constant) DUPLICATE_VALUE

    + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Error code indicating that a unique field was given a value that is +already taken. +
    + + + + + + + + + + +

    (static, constant) EMAIL_MISSING

    + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Error code indicating that the email is missing, but must be specified. +
    + + + + + + + + + + +

    (static, constant) EMAIL_NOT_FOUND

    + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Error code indicating that a user with the specified email was not found. +
    + + + + + + + + + + +

    (static, constant) EMAIL_TAKEN

    + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Error code indicating that the email has already been taken. +
    + + + + + + + + + + +

    (static, constant) EXCEEDED_QUOTA

    + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Error code indicating that an application quota was exceeded. Upgrade to +resolve. +
    + + + + + + + + + + +

    (static, constant) FILE_DELETE_ERROR

    + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Error code indicating an error deleting a file. +
    + + + + + + + + + + +

    (static, constant) FILE_SAVE_ERROR

    + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Error code indicating an error saving a file. +
    + + + + + + + + + + +

    (static, constant) FILE_TOO_LARGE

    + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Error code indicating a file that was too large. +
    + + + + + + + + + + +

    (static, constant) INCORRECT_TYPE

    + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Error code indicating that a field was set to an inconsistent type. +
    + + + + + + + + + + +

    (static, constant) INTERNAL_SERVER_ERROR

    + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Error code indicating that something has gone wrong with the server. +If you get this error code, it is AV's fault. +
    + + + + + + + + + + +

    (static, constant) INVALID_ACL

    + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Error code indicating an invalid ACL was provided. +
    + + + + + + + + + + +

    (static, constant) INVALID_CHANNEL_NAME

    + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Error code indicating an invalid channel name. A channel name is either +an empty string (the broadcast channel) or contains only a-zA-Z0-9_ +characters. +
    + + + + + + + + + + +

    (static, constant) INVALID_CLASS_NAME

    + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Error code indicating a missing or invalid classname. Classnames are +case-sensitive. They must start with a letter, and a-zA-Z0-9_ are the +only valid characters. +
    + + + + + + + + + + +

    (static, constant) INVALID_CONTENT_LENGTH

    + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Error code indicating an invalid content length. +
    + + + + + + + + + + +

    (static, constant) INVALID_EMAIL_ADDRESS

    + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Error code indicating that the email address was invalid. +
    + + + + + + + + + + +

    (static, constant) INVALID_FILE_NAME

    + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Error code indicating that an invalid filename was used for AVFile. +A valid file name contains only a-zA-Z0-9_. characters and is between 1 +and 128 characters. +
    + + + + + + + + + + +

    (static, constant) INVALID_IMAGE_DATA

    + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Error code indicating that invalid image data was provided. +
    + + + + + + + + + + +

    (static, constant) INVALID_JSON

    + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Error code indicating that badly formed JSON was received upstream. This +either indicates you have done something unusual with modifying how +things encode to JSON, or the network is failing badly. +
    + + + + + + + + + + +

    (static, constant) INVALID_KEY_NAME

    + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Error code indicating an invalid key name. Keys are case-sensitive. They +must start with a letter, and a-zA-Z0-9_ are the only valid characters. +
    + + + + + + + + + + +

    (static, constant) INVALID_LINKED_SESSION

    + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Error code indicating that a user with a linked (e.g. Facebook) account +has an invalid session. +
    + + + + + + + + + + +

    (static, constant) INVALID_NESTED_KEY

    + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Error code indicating that an invalid key was used in a nested +JSONObject. +
    + + + + + + + + + + +

    (static, constant) INVALID_POINTER

    + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Error code indicating a malformed pointer. You should not see this unless +you have been mucking about changing internal AV code. +
    + + + + + + + + + + +

    (static, constant) INVALID_PUSH_TIME_ERROR

    + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Error code indicating an invalid push time. +
    + + + + + + + + + + +

    (static, constant) INVALID_QUERY

    + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Error code indicating you tried to query with a datatype that doesn't +support it, like exact matching an array or object. +
    + + + + + + + + + + +

    (static, constant) INVALID_ROLE_NAME

    + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Error code indicating that a role's name is invalid. +
    + + + + + + + + + + +

    (static, constant) LINKED_ID_MISSING

    + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Error code indicating that a user cannot be linked to an account because +that account's id could not be found. +
    + + + + + + + + + + +

    (static, constant) MISSING_CONTENT_LENGTH

    + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Error code indicating a missing content length. +
    + + + + + + + + + + +

    (static, constant) MISSING_CONTENT_TYPE

    + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Error code indicating a missing content type. +
    + + + + + + + + + + +

    (static, constant) MISSING_OBJECT_ID

    + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Error code indicating an unspecified object id. +
    + + + + + + + + + + +

    (static, constant) MUST_CREATE_USER_THROUGH_SIGNUP

    + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Error code indicating that a user can only be created through signup. +
    + + + + + + + + + + +

    (static, constant) NOT_INITIALIZED

    + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + You must call AV.initialize before using the AV library. +
    + + + + + + + + + + +

    (static, constant) OBJECT_NOT_FOUND

    + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Error code indicating the specified object doesn't exist. +
    + + + + + + + + + + +

    (static, constant) OBJECT_TOO_LARGE

    + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Error code indicating that the object is too large. +
    + + + + + + + + + + +

    (static, constant) OPERATION_FORBIDDEN

    + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Error code indicating that the operation isn't allowed for clients. +
    + + + + + + + + + + +

    (static, constant) OTHER_CAUSE

    + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Error code indicating some error other than those enumerated here. +
    + + + + + + + + + + +

    (static, constant) PASSWORD_MISSING

    + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Error code indicating that the password is missing or empty. +
    + + + + + + + + + + +

    (static, constant) PUSH_MISCONFIGURED

    + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Error code indicating that push is misconfigured. +
    + + + + + + + + + + +

    (static, constant) SCRIPT_FAILED

    + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Error code indicating that a Cloud Code script failed. +
    + + + + + + + + + + +

    (static, constant) SESSION_MISSING

    + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Error code indicating that a user object without a valid session could +not be altered. +
    + + + + + + + + + + +

    (static, constant) TIMEOUT

    + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Error code indicating that the request timed out on the server. Typically +this indicates that the request is too expensive to run. +
    + + + + + + + + + + +

    (static, constant) UNSAVED_FILE_ERROR

    + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Error code indicating an unsaved file. +
    + + + + + + + + + + +

    (static, constant) UNSUPPORTED_SERVICE

    + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Error code indicating that a service being linked (e.g. Facebook or +Twitter) is unsupported. +
    + + + + + + + + + + +

    (static, constant) USERNAME_MISSING

    + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Error code indicating that the username is missing or empty. +
    + + + + + + + + + + +

    (static, constant) USERNAME_TAKEN

    + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Error code indicating that the username has already been taken. +
    + + + + + + + + + + +

    (static, constant) VALIDATION_ERROR

    + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Error code indicating that a Cloud Code validation failed. +
    + + + + + + + + + + +

    (static, constant) X_DOMAIN_REQUEST

    + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Error code indicating a real error code is unavailable because +we had to use an XDomainRequest object to allow CORS requests in +Internet Explorer, which strips the body from HTTP responses that have +a non-2XX status code. +
    + + + + + + + + + + + + + + + + +
    + +
    + + + + +
    + +
    + +
    + Documentation generated by JSDoc 3.6.3 on Mon Sep 25 2023 11:05:14 GMT+0000 (Coordinated Universal Time) using the docdash theme. +
    + + + + + \ No newline at end of file diff --git a/docs/AV.File.html b/docs/AV.File.html new file mode 100644 index 000000000..a91890f26 --- /dev/null +++ b/docs/AV.File.html @@ -0,0 +1,3466 @@ + + + + + File - Documentation + + + + + + + + + + + + + + + + +
    + +

    File

    + + + + + + + +
    + +
    + +

    + AV. + + File +

    + + +
    + +
    +
    + + + + + +

    new File(name, data, mimeTypeopt)

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + An AV.File is a local representation of a file that is saved to the AV +cloud. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    name + + +String + + + + + + + + + + The file's name. This will change to a unique value + once the file has finished saving.
    data + + +Array + + + + + + + + + + The data for the file, as either: + 1. an Array of byte value Numbers, or + 2. an Object like { base64: "..." } with a base64-encoded String. + 3. a Blob(File) selected with a file upload control in a browser. + 4. an Object like { blob: {uri: "..."} } that mimics Blob + in some non-browser environments such as React Native. + 5. a Buffer in Node.js runtime. + 6. a Stream in Node.js runtime. + + For example:
    +var fileUploadControl = $("#profilePhotoFileUpload")[0];
    +if (fileUploadControl.files.length > 0) {
    +  var file = fileUploadControl.files[0];
    +  var name = "photo.jpg";
    +  var file = new AV.File(name, file);
    +  file.save().then(function() {
    +    // The file has been saved to AV.
    +  }, function(error) {
    +    // The file either could not be read, or could not be saved to AV.
    +  });
    +}
    mimeType + + +String + + + + + + <optional>
    + + + + + +
    Content-Type header to use for the file. If + this is omitted, the content type will be inferred from the name's + extension.
    + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + +

    Methods

    + + + + + + +

    (static) censor(objectId) → {Promise.<string>}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + +
    Since:
    +
    • 4.13.0
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Request file censor. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    objectId + + +String + + + +
    + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +Promise.<string> + + +
    +
    + + + + + + + + + +

    (static) createWithoutData(objectId) → {AV.File}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Creates a file object with exists objectId. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    objectId + + +String + + + + The objectId string
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + the file object +
    + + + +
    +
    + Type +
    +
    + +AV.File + + +
    +
    + + + + + + + + + +

    (static) withURL(name, url, metaDataopt, typeopt) → {AV.File}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Creates a fresh AV.File object with exists url for saving to AVOS Cloud. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    name + + +String + + + + + + + + + + the file name
    url + + +String + + + + + + + + + + the file url.
    metaData + + +Object + + + + + + <optional>
    + + + + + +
    the file metadata object.
    type + + +String + + + + + + <optional>
    + + + + + +
    Content-Type header to use for the file. If + this is omitted, the content type will be inferred from the name's + extension.
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + the file object +
    + + + +
    +
    + Type +
    +
    + +AV.File + + +
    +
    + + + + + + + + + +

    censor() → {Promise.<string>}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + +
    Since:
    +
    • 4.13.0
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Request file censor +
    + + + + + + + + + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +Promise.<string> + + +
    +
    + + + + + + + + + +

    destroy(options) → {Promise}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Destroy the file. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    options + + +AuthOptions + + + +
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + A promise that is fulfilled when the destroy + completes. +
    + + + +
    +
    + Type +
    +
    + +Promise + + +
    +
    + + + + + + + + + +

    fetch(fetchOptions, options) → {Promise}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + fetch the file from server. If the server's representation of the +model differs from its current attributes, they will be overriden, +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    fetchOptions + + +Object + + + + Optional options to set 'keys', + 'include' and 'includeACL' option.
    options + + +AuthOptions + + + +
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + A promise that is fulfilled when the fetch + completes. +
    + + + +
    +
    + Type +
    +
    + +Promise + + +
    +
    + + + + + + + + + +

    get(The) → {Any}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Gets the attributs of the file object. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    The + + +String + + + + attribute name which want to get.
    + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +Any + + +
    +
    + + + + + + + + + +

    getACL() → {AV.ACL}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Returns the ACL for this file. +
    + + + + + + + + + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + An instance of AV.ACL. +
    + + + +
    +
    + Type +
    +
    + +AV.ACL + + +
    +
    + + + + + + + + + +

    metaData(attr, value) → {Object}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    +

    Returns the file's metadata JSON object if no arguments is given.Returns the +metadata value if a key is given.Set metadata value if key and value are both given.

    +

    + var metadata = file.metaData(); //Get metadata JSON object.
    + var size = file.metaData('size');  // Get the size metadata value.
    + file.metaData('format', 'jpeg'); //set metadata attribute and value.
    +

    +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    attr + + +String + + + + an optional metadata key.
    value + + +Object + + + + an optional metadata value.
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + The file's metadata JSON object. +
    + + + +
    +
    + Type +
    +
    + +Object + + +
    +
    + + + + + + + + + +

    name()

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Gets the name of the file. Before save is called, this is the filename +given by the user. After save is called, that name gets prefixed with a +unique identifier. +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    ownerId() → {String}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Returns the file's owner. +
    + + + + + + + + + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + The file's owner id. +
    + + + +
    +
    + Type +
    +
    + +String + + +
    +
    + + + + + + + + + +

    save(optionsopt) → {Promise}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Saves the file to the AV cloud. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    options + + +AuthOptions + + + + + + <optional>
    + + + + + +
    AuthOptions plus: +
    Properties
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDefaultDescription
    onprogress + + +UploadProgressCallback + + + + + + <optional>
    + + + + + +
    + + 文件上传进度,在 Node.js 中无效,回调参数说明详见 UploadProgressCallback
    keepFileName + + +boolean + + + + + + <optional>
    + + + + + +
    + + false + + 保留下载文件的文件名。
    key + + +string + + + + + + <optional>
    + + + + + +
    + + 指定文件的 key。设置该选项需要使用 masterKey
    + +
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + Promise that is resolved when the save finishes. +
    + + + +
    +
    + Type +
    +
    + +Promise + + +
    +
    + + + + + + + + + +

    set(Object, attr, value) → {String|Number|Array|Object}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Set the metaData of the file object. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    Object + + +Object + + + + is an key value Object for setting metaData.
    attr + + +String + + + + is an optional metadata key.
    value + + +Object + + + + is an optional metadata value.
    + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +String +| + +Number +| + +Array +| + +Object + + +
    +
    + + + + + + + + + +

    setACL(acl)

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Sets the ACL to be used for this file. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    acl + + +AV.ACL + + + + An instance of AV.ACL.
    + + + + + + + + + + + + + + + + + + + + + +

    setUploadHeader(key, value) → {AV.File}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Set a header for the upload request. +For more infomation, go to https://url.leanapp.cn/avfile-upload-headers +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +String + + + + header key
    value + + +String + + + + header value
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + this +
    + + + +
    +
    + Type +
    +
    + +AV.File + + +
    +
    + + + + + + + + + +

    size() → {Number}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Returns the file's size. +
    + + + + + + + + + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + The file's size in bytes. +
    + + + +
    +
    + Type +
    +
    + +Number + + +
    +
    + + + + + + + + + +

    thumbnailURL(width, heigth, quality, scaleToFit, fmt) → {String}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + 如果文件是图片,获取图片的缩略图URL。可以传入宽度、高度、质量、格式等参数。 +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    width + + +Number + + + + 宽度,单位:像素
    heigth + + +Number + + + + 高度,单位:像素
    quality + + +Number + + + + 质量,1-100的数字,默认100
    scaleToFit + + +Number + + + + 是否将图片自适应大小。默认为true。
    fmt + + +String + + + + 格式,默认为png,也可以为jpeg,gif等格式。
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + 缩略图URL +
    + + + +
    +
    + Type +
    +
    + +String + + +
    +
    + + + + + + + + + +

    toFullJSON() → {Object}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + +
    Since:
    +
    • 3.0.0
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Returns a JSON version of the file with meta data. +Inverse to AV.parseJSON +
    + + + + + + + + + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +Object + + +
    +
    + + + + + + + + + +

    toJSON() → {Object}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Returns a JSON version of the object. +
    + + + + + + + + + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +Object + + +
    +
    + + + + + + + + + +

    url() → {String}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Gets the url of the file. It is only available after you save the file or +after you get the file from a AV.Object. +
    + + + + + + + + + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +String + + +
    +
    + + + + + + + + + + +
    + +
    + + + + +
    + +
    + +
    + Documentation generated by JSDoc 3.6.3 on Mon Sep 25 2023 11:05:14 GMT+0000 (Coordinated Universal Time) using the docdash theme. +
    + + + + + \ No newline at end of file diff --git a/docs/AV.Friendship.html b/docs/AV.Friendship.html new file mode 100644 index 000000000..78152dd1e --- /dev/null +++ b/docs/AV.Friendship.html @@ -0,0 +1,969 @@ + + + + + Friendship - Documentation + + + + + + + + + + + + + + + + +
    + +

    Friendship

    + + + + + + + +
    + +
    + +

    + AV. + + Friendship +

    + + +
    + +
    +
    + + + + + +

    new Friendship()

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Contains functions to deal with Friendship in LeanCloud. +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + +

    Methods

    + + + + + + +

    (static) acceptRequest(options, authOptionsopt) → {Promise.<void>}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + +
    Since:
    +
    • 4.8.0
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Accept a friendship request. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    options + + +AV.Object +| + +string +| + +Object + + + + + + + + + + if an AV.Object or string is given, it will be used as the request in _FriendshipRequest. +
    Properties
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    request + + +AV.Object + + + + + + + + + + The request (or it's objectId) to be accepted.
    attributes + + +Object + + + + + + <optional>
    + + + + + +
    key-value attributes dictionary to be used as conditions of AV#followeeQuery.
    + +
    authOptions + + +AuthOptions + + + + + + <optional>
    + + + + + +
    + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +Promise.<void> + + +
    +
    + + + + + + + + + +

    (static) declineRequest(request, authOptionsopt) → {Promise.<void>}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Decline a friendship request. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    request + + +AV.Object +| + +string + + + + + + + + + + The request (or it's objectId) to be declined.
    authOptions + + +AuthOptions + + + + + + <optional>
    + + + + + +
    + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +Promise.<void> + + +
    +
    + + + + + + + + + +

    (static) request(options, authOptionsopt) → {Promise.<void>}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + +
    Since:
    +
    • 4.8.0
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Request friendship. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    options + + +String +| + +AV.User +| + +Object + + + + + + + + + + if an AV.User or string is given, it will be used as the friend. +
    Properties
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    friend + + +AV.User +| + +string + + + + + + + + + + The friend (or friend's objectId) to follow.
    attributes + + +Object + + + + + + <optional>
    + + + + + +
    key-value attributes dictionary to be used as conditions of followeeQuery.
    + +
    authOptions + + +AuthOptions + + + + + + <optional>
    + + + + + +
    + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +Promise.<void> + + +
    +
    + + + + + + + + + + +
    + +
    + + + + +
    + +
    + +
    + Documentation generated by JSDoc 3.6.3 on Mon Sep 25 2023 11:05:14 GMT+0000 (Coordinated Universal Time) using the docdash theme. +
    + + + + + \ No newline at end of file diff --git a/docs/AV.GeoPoint.html b/docs/AV.GeoPoint.html new file mode 100644 index 000000000..11663abf9 --- /dev/null +++ b/docs/AV.GeoPoint.html @@ -0,0 +1,859 @@ + + + + + GeoPoint - Documentation + + + + + + + + + + + + + + + + +
    + +

    GeoPoint

    + + + + + + + +
    + +
    + +

    + AV. + + GeoPoint +

    + +

    Represents a latitude / longitude point that may be associated +with a key in a AVObject or used as a reference point for geo queries. +This allows proximity-based queries on the key.

    + +

    Only one key in a class may contain a GeoPoint.

    + +

    Example:

    +  var point = new AV.GeoPoint(30.0, -20.0);
    +  var object = new AV.Object("PlaceObject");
    +  object.set("location", point);
    +  object.save();

    + + +
    + +
    +
    + + + + +

    Constructor

    + + +

    new GeoPoint()

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Creates a new GeoPoint with any of the following forms:
    +
    + + + + + + + + + +
    Example
    + +
    new GeoPoint(otherGeoPoint)
    +new GeoPoint(30, 30)
    +new GeoPoint([30, 30])
    +new GeoPoint({latitude: 30, longitude: 30})
    +new GeoPoint()  // defaults to (0, 0)
    + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + +

    Methods

    + + + + + + +

    (static) current() → {Promise.<AV.GeoPoint>}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Creates a GeoPoint with the user's current location, if available. +
    + + + + + + + + + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +Promise.<AV.GeoPoint> + + +
    +
    + + + + + + + + + +

    kilometersTo(point) → {Number}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Returns the distance from this GeoPoint to another in kilometers. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    point + + +AV.GeoPoint + + + + the other AV.GeoPoint.
    + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +Number + + +
    +
    + + + + + + + + + +

    milesTo(point) → {Number}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Returns the distance from this GeoPoint to another in miles. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    point + + +AV.GeoPoint + + + + the other AV.GeoPoint.
    + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +Number + + +
    +
    + + + + + + + + + +

    radiansTo(point) → {Number}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Returns the distance from this GeoPoint to another in radians. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    point + + +AV.GeoPoint + + + + the other AV.GeoPoint.
    + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +Number + + +
    +
    + + + + + + + + + +

    toJSON() → {Object}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Returns a JSON representation of the GeoPoint, suitable for AV. +
    + + + + + + + + + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +Object + + +
    +
    + + + + + + + + + + +
    + +
    + + + + +
    + +
    + +
    + Documentation generated by JSDoc 3.6.3 on Mon Sep 25 2023 11:05:14 GMT+0000 (Coordinated Universal Time) using the docdash theme. +
    + + + + + \ No newline at end of file diff --git a/docs/AV.InboxQuery.html b/docs/AV.InboxQuery.html new file mode 100644 index 000000000..2cd93d8d9 --- /dev/null +++ b/docs/AV.InboxQuery.html @@ -0,0 +1,803 @@ + + + + + InboxQuery - Documentation + + + + + + + + + + + + + + + + +
    + +

    InboxQuery

    + + + + + + + +
    + +
    + +

    + AV. + + InboxQuery +

    + + +
    + +
    +
    + + + + + +

    new InboxQuery()

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    +

    AV.InboxQuery defines a query that is used to fetch somebody's inbox statuses.

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + +

    Methods

    + + + + + + +

    inboxType(type) → {AV.InboxQuery}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Sets the querying inbox type.default is 'default'. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    type + + +String + + + + The inbox type.
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + Returns the query, so you can chain this call. +
    + + + +
    +
    + Type +
    +
    + +AV.InboxQuery + + +
    +
    + + + + + + + + + +

    maxId(n) → {AV.InboxQuery}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Sets the maximal messageId of results。 +This is useful for pagination. +Default is zero that is no limition. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    n + + +Number + + + + the mesage id.
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + Returns the query, so you can chain this call. +
    + + + +
    +
    + Type +
    +
    + +AV.InboxQuery + + +
    +
    + + + + + + + + + +

    owner(owner) → {AV.InboxQuery}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Sets the owner of the querying inbox. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    owner + + +AV.User + + + + The inbox owner.
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + Returns the query, so you can chain this call. +
    + + + +
    +
    + Type +
    +
    + +AV.InboxQuery + + +
    +
    + + + + + + + + + +

    sinceId(n) → {AV.InboxQuery}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Sets the messageId of results to skip before returning any results. +This is useful for pagination. +Default is zero. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    n + + +Number + + + + the mesage id.
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + Returns the query, so you can chain this call. +
    + + + +
    +
    + Type +
    +
    + +AV.InboxQuery + + +
    +
    + + + + + + + + + + +
    + +
    + + + + +
    + +
    + +
    + Documentation generated by JSDoc 3.6.3 on Mon Sep 25 2023 11:05:14 GMT+0000 (Coordinated Universal Time) using the docdash theme. +
    + + + + + \ No newline at end of file diff --git a/docs/AV.Insight.JobQuery.html b/docs/AV.Insight.JobQuery.html new file mode 100644 index 000000000..b27ed48ef --- /dev/null +++ b/docs/AV.Insight.JobQuery.html @@ -0,0 +1,714 @@ + + + + + JobQuery - Documentation + + + + + + + + + + + + + + + + +
    + +

    JobQuery

    + + + + + + + +
    + +
    + +

    + AV.Insight. + + JobQuery +

    + + +
    + +
    +
    + + + + + +

    new JobQuery(id)

    + + + + + + +
    + + +
    Source:
    +
    + + + + + +
    Since:
    +
    • 0.5.5
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + 创建一个对象,用于查询 Insight 任务状态和结果。 +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    id + + +String + + + + 任务 id
    + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + +

    Methods

    + + + + + + +

    find(optionsopt) → {Promise}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + 查询任务状态和结果,任务结果为一个 JSON 对象,包括 status 表示任务状态, totalCount 表示总数, +results 数组表示任务结果数组,previewCount 表示可以返回的结果总数,任务的开始和截止时间 +startTime、endTime 等信息。 +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    options + + +AuthOptions + + + + + + <optional>
    + + + + + +
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + A promise that will be resolved with the result +of the function. +
    + + + +
    +
    + Type +
    +
    + +Promise + + +
    +
    + + + + + + + + + +

    limit(n) → {AV.Query}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Sets the limit of the number of results to return. The default limit is +100, with a maximum of 1000 results being returned at a time. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    n + + +Number + + + + the number of results to limit to.
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + Returns the query, so you can chain this call. +
    + + + +
    +
    + Type +
    +
    + +AV.Query + + +
    +
    + + + + + + + + + +

    skip(n) → {AV.Query}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Sets the number of results to skip before returning any results. +This is useful for pagination. +Default is to skip zero results. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    n + + +Number + + + + the number of results to skip.
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + Returns the query, so you can chain this call. +
    + + + +
    +
    + Type +
    +
    + +AV.Query + + +
    +
    + + + + + + + + + + +
    + +
    + + + + +
    + +
    + +
    + Documentation generated by JSDoc 3.6.3 on Mon Sep 25 2023 11:05:14 GMT+0000 (Coordinated Universal Time) using the docdash theme. +
    + + + + + \ No newline at end of file diff --git a/docs/AV.Insight.html b/docs/AV.Insight.html new file mode 100644 index 000000000..f78508094 --- /dev/null +++ b/docs/AV.Insight.html @@ -0,0 +1,525 @@ + + + + + Insight - Documentation + + + + + + + + + + + + + + + + +
    + +

    Insight

    + + + + + + + +
    + +
    + +

    + AV. + + Insight +

    + + +
    + +
    +
    + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    包含了使用了 LeanCloud + 离线数据分析功能的函数。 +

    + 仅在云引擎运行环境下有效。 +

    + + + + +
    + + + + + + +

    Classes

    + +
    +
    JobQuery
    +
    +
    + + + + + + + + + +

    Methods

    + + + + + + +

    (static) on(event, 监听回调函数,接收)

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + 监听 Insight 任务事件(未来推出独立部署的离线分析服务后开放) +

    + 仅在云引擎运行环境下有效。 +

    +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    event + + +String + + + + 监听的事件,目前尚不支持。
    监听回调函数,接收 + + +function + + + + (err, id) 两个参数,err 表示错误信息, + id 表示任务 id。接下来你可以拿这个 id 使用AV.Insight.JobQuery 查询任务状态和结果。
    + + + + + + + + + + + + + + + + + + + + + +

    (static) startJob(jobConfig, optionsopt) → {Promise}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + 开始一个 Insight 任务。结果里将返回 Job id,你可以拿得到的 id 使用 +AV.Insight.JobQuery 查询任务状态和结果。 +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    jobConfig + + +Object + + + + + + + + + + 任务配置的 JSON 对象,例如:
    +                  { "sql" : "select count(*) as c,gender from _User group by gender",
    +                    "saveAs": {
    +                        "className" : "UserGender",
    +                        "limit": 1
    +                     }
    +                  }
    +                 
    + sql 指定任务执行的 SQL 语句, saveAs(可选) 指定将结果保存在哪张表里,limit 最大 1000。
    options + + +AuthOptions + + + + + + <optional>
    + + + + + +
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + A promise that will be resolved with the result +of the function. +
    + + + +
    +
    + Type +
    +
    + +Promise + + +
    +
    + + + + + + + + + + +
    + +
    + + + + +
    + +
    + +
    + Documentation generated by JSDoc 3.6.3 on Mon Sep 25 2023 11:05:14 GMT+0000 (Coordinated Universal Time) using the docdash theme. +
    + + + + + \ No newline at end of file diff --git a/docs/AV.Leaderboard.html b/docs/AV.Leaderboard.html new file mode 100644 index 000000000..07c49bf3a --- /dev/null +++ b/docs/AV.Leaderboard.html @@ -0,0 +1,4422 @@ + + + + + Leaderboard - Documentation + + + + + + + + + + + + + + + + +
    + +

    Leaderboard

    + + + + + + + +
    + +
    + +

    + AV. + + Leaderboard +

    + + +
    + +
    +
    + + + + + +

    new Leaderboard()

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + +

    Members

    + + + +

    (nullable) createdAt :Date

    + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + +
    Type:
    +
      +
    • + +Date + + +
    • +
    + + + + + + + + +

    (nullable) nextResetAt :Date

    + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + +
    Type:
    +
      +
    • + +Date + + +
    • +
    + + + + + + + + +

    order :AV.LeaderboardOrder

    + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + +
    Type:
    + + + + + + + + + +

    statisticName :string

    + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + +
    Type:
    +
      +
    • + +string + + +
    • +
    + + + + + + + + +

    updateStrategy :AV.LeaderboardUpdateStrategy

    + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + +
    Type:
    + + + + + + + + + +

    version :number

    + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + +
    Type:
    +
      +
    • + +number + + +
    • +
    + + + + + + + + +

    versionChangeInterval :AV.LeaderboardVersionChangeInterval

    + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + +
    Type:
    + + + + + + + + + + + +

    Methods

    + + + + + + +

    (static) createLeaderboard(options, authOptionsopt) → {Promise.<AV.Leaderboard>}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + (masterKey required) Create a new Leaderboard. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    options + + +Object + + + + + + + + + + +
    Properties
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    statisticName + + +string + + + + + + + + + +
    order + + +AV.LeaderboardOrder + + + + + + + + + +
    versionChangeInterval + + +AV.LeaderboardVersionChangeInterval + + + + + + <optional>
    + + + + + +
    default to WEEK
    updateStrategy + + +AV.LeaderboardUpdateStrategy + + + + + + <optional>
    + + + + + +
    default to BETTER
    + +
    authOptions + + +AuthOptions + + + + + + <optional>
    + + + + + +
    + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +Promise.<AV.Leaderboard> + + +
    +
    + + + + + + + + + +

    (static) createWithoutData(statisticName) → {AV.Leaderboard}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Create an instance of Leaderboard for the give statistic name. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    statisticName + + +string + + + +
    + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +AV.Leaderboard + + +
    +
    + + + + + + + + + +

    (static) deleteStatistics(user, statistics, optionsopt) → {Promise.<void>}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Delete Statistics for the specified user. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    user + + +AV.User + + + + + + + + + + The specified AV.User pointer.
    statistics + + +Object + + + + + + + + + + A name-value pair representing the statistics to delete.
    options + + +AuthOptions + + + + + + <optional>
    + + + + + +
    + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +Promise.<void> + + +
    +
    + + + + + + + + + +

    (static) getLeaderboard(statisticName, authOptionsopt) → {Promise.<AV.Leaderboard>}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Get the Leaderboard with the specified statistic name. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    statisticName + + +string + + + + + + + + + +
    authOptions + + +AuthOptions + + + + + + <optional>
    + + + + + +
    + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +Promise.<AV.Leaderboard> + + +
    +
    + + + + + + + + + +

    (static) getStatistics(user, optionsopt, authOptionsopt) → {Promise.<Array.<Statistic>>}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Get Statistics for the specified user. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    user + + +AV.User + + + + + + + + + + The specified AV.User pointer.
    options + + +Object + + + + + + <optional>
    + + + + + +
    +
    Properties
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    statisticNames + + +Array.<string> + + + + + + <optional>
    + + + + + +
    Specify the statisticNames. If not set, all statistics of the user will be fetched.
    + +
    authOptions + + +AuthOptions + + + + + + <optional>
    + + + + + +
    + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +Promise.<Array.<Statistic>> + + +
    +
    + + + + + + + + + +

    (static) updateStatistics(user, statistics, optionsopt) → {Promise.<Array.<Statistic>>}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Update Statistics for the specified user. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    user + + +AV.User + + + + + + + + + + The specified AV.User pointer.
    statistics + + +Object + + + + + + + + + + A name-value pair representing the statistics to update.
    options + + +AuthOptions + + + + + + <optional>
    + + + + + +
    AuthOptions plus: +
    Properties
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    overwrite + + +boolean + + + + + + <optional>
    + + + + + +
    Wethere to overwrite these statistics disregarding the updateStrategy of there leaderboards
    + +
    + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +Promise.<Array.<Statistic>> + + +
    +
    + + + + + + + + + +

    count(optionsopt, authOptionsopt) → {Promise.<number>}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Counts the number of users participated in this leaderboard +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    options + + +Object + + + + + + <optional>
    + + + + + +
    +
    Properties
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    version + + +number + + + + + + <optional>
    + + + + + +
    Specify the version of the leaderboard
    + +
    authOptions + + +AuthOptions + + + + + + <optional>
    + + + + + +
    + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +Promise.<number> + + +
    +
    + + + + + + + + + +

    destroy(authOptionsopt) → {void}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + (masterKey required) Delete the Leaderboard and its all archived versions. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    authOptions + + +AuthOptions + + + + + + <optional>
    + + + + + +
    + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + + + +

    fetch(authOptionsopt) → {Promise.<AV.Leaderboard>}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Fetch data from the srever. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    authOptions + + +AuthOptions + + + + + + <optional>
    + + + + + +
    + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +Promise.<AV.Leaderboard> + + +
    +
    + + + + + + + + + +

    getArchives(optionsopt, authOptionsopt) → {Promise.<Array.<LeaderboardArchive>>}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + (masterKey required) Get archived versions. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    options + + +Object + + + + + + <optional>
    + + + + + +
    +
    Properties
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    skip + + +number + + + + + + <optional>
    + + + + + +
    The number of results to skip. This is useful for pagination.
    limit + + +number + + + + + + <optional>
    + + + + + +
    The limit of the number of results.
    + +
    authOptions + + +AuthOptions + + + + + + <optional>
    + + + + + +
    + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +Promise.<Array.<LeaderboardArchive>> + + +
    +
    + + + + + + + + + +

    getResults(optionsopt, authOptionsopt) → {Promise.<Array.<Ranking>>}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Retrieve a list of ranked users for this Leaderboard. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    options + + +Object + + + + + + <optional>
    + + + + + +
    +
    Properties
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    skip + + +number + + + + + + <optional>
    + + + + + +
    The number of results to skip. This is useful for pagination.
    limit + + +number + + + + + + <optional>
    + + + + + +
    The limit of the number of results.
    selectUserKeys + + +Array.<string> + + + + + + <optional>
    + + + + + +
    Specify keys of the users to include in the Rankings
    includeUserKeys + + +Array.<string> + + + + + + <optional>
    + + + + + +
    If the value of a selected user keys is a Pointer, use this options to include its value.
    includeStatistics + + +Array.<string> + + + + + + <optional>
    + + + + + +
    Specify other statistics to include in the Rankings
    version + + +number + + + + + + <optional>
    + + + + + +
    Specify the version of the leaderboard
    + +
    authOptions + + +AuthOptions + + + + + + <optional>
    + + + + + +
    + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +Promise.<Array.<Ranking>> + + +
    +
    + + + + + + + + + +

    getResultsAroundUser(user, optionsopt, authOptionsopt) → {Promise.<Array.<Ranking>>}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Retrieve a list of ranked users for this Leaderboard, centered on the specified user. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    user + + +AV.User + + + + + + + + + + The specified AV.User pointer.
    options + + +Object + + + + + + <optional>
    + + + + + +
    +
    Properties
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    limit + + +number + + + + + + <optional>
    + + + + + +
    The limit of the number of results.
    selectUserKeys + + +Array.<string> + + + + + + <optional>
    + + + + + +
    Specify keys of the users to include in the Rankings
    includeUserKeys + + +Array.<string> + + + + + + <optional>
    + + + + + +
    If the value of a selected user keys is a Pointer, use this options to include its value.
    includeStatistics + + +Array.<string> + + + + + + <optional>
    + + + + + +
    Specify other statistics to include in the Rankings
    version + + +number + + + + + + <optional>
    + + + + + +
    Specify the version of the leaderboard
    + +
    authOptions + + +AuthOptions + + + + + + <optional>
    + + + + + +
    + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +Promise.<Array.<Ranking>> + + +
    +
    + + + + + + + + + +

    reset(authOptionsopt) → {Promise.<AV.Leaderboard>}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + (masterKey required) Reset the Leaderboard. The version of the Leaderboard will be incremented by 1. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    authOptions + + +AuthOptions + + + + + + <optional>
    + + + + + +
    + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +Promise.<AV.Leaderboard> + + +
    +
    + + + + + + + + + +

    updateUpdateStrategy(updateStrategy, authOptionsopt) → {Promise.<AV.Leaderboard>}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + (masterKey required) Update the version change interval of the Leaderboard. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    updateStrategy + + +AV.LeaderboardUpdateStrategy + + + + + + + + + +
    authOptions + + +AuthOptions + + + + + + <optional>
    + + + + + +
    + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +Promise.<AV.Leaderboard> + + +
    +
    + + + + + + + + + +

    updateVersionChangeInterval(versionChangeInterval, authOptionsopt) → {Promise.<AV.Leaderboard>}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + (masterKey required) Update the version change interval of the Leaderboard. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    versionChangeInterval + + +AV.LeaderboardVersionChangeInterval + + + + + + + + + +
    authOptions + + +AuthOptions + + + + + + <optional>
    + + + + + +
    + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +Promise.<AV.Leaderboard> + + +
    +
    + + + + + + + + + + +
    + +
    + + + + +
    + +
    + +
    + Documentation generated by JSDoc 3.6.3 on Mon Sep 25 2023 11:05:14 GMT+0000 (Coordinated Universal Time) using the docdash theme. +
    + + + + + \ No newline at end of file diff --git a/docs/AV.LiveQuery.html b/docs/AV.LiveQuery.html new file mode 100644 index 000000000..2f0c53be9 --- /dev/null +++ b/docs/AV.LiveQuery.html @@ -0,0 +1,1225 @@ + + + + + LiveQuery - Documentation + + + + + + + + + + + + + + + + +
    + +

    LiveQuery

    + + + + + + + +
    + +
    + +

    + AV. + + LiveQuery +

    + +
    A LiveQuery, created by AV.Query#subscribe is an EventEmitter notifies changes of the Query.
    + + +
    + +
    +
    + + + + +

    Constructor

    + + +

    new LiveQuery()

    + + + + + + +
    + + +
    Source:
    +
    + + + + + +
    Since:
    +
    • 3.0.0
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + +

    Methods

    + + + + + + +

    (static) pause()

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Pause the LiveQuery connection. This is useful to deactivate the SDK when the app is swtiched to background. +
    + + + + + + + + + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + void +
    + + + + + + + + + + + +

    (static) resume()

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Resume the LiveQuery connection. All subscriptions will be restored after reconnection. +
    + + + + + + + + + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + void +
    + + + + + + + + + + + +

    unsubscribe() → {Promise}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + unsubscribe the query +
    + + + + + + + + + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +Promise + + +
    +
    + + + + + + + + + + +

    Events

    + + + + + + +

    create

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + A new AV.Object which fulfills the Query you subscribe is created. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    target + + +AV.Object +| + +AV.File + + + + updated object
    + + + + + + + + + + + + + + + + + + + + + +

    delete

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + An existing AV.Object which fulfills the Query you subscribe is deleted. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    target + + +AV.Object +| + +AV.File + + + + updated object
    + + + + + + + + + + + + + + + + + + + + + +

    enter

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + An existing AV.Object which doesn't fulfill the Query is updated and now it fulfills the Query. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    target + + +AV.Object +| + +AV.File + + + + updated object
    updatedKeys + + +Array.<String> + + + + updated keys
    + + + + + + + + + + + + + + + + + + + + + +

    leave

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + An existing AV.Object which fulfills the Query is updated and now it doesn't fulfill the Query. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    target + + +AV.Object +| + +AV.File + + + + updated object
    updatedKeys + + +Array.<String> + + + + updated keys
    + + + + + + + + + + + + + + + + + + + + + +

    update

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + An existing AV.Object which fulfills the Query you subscribe is updated. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    target + + +AV.Object +| + +AV.File + + + + updated object
    updatedKeys + + +Array.<String> + + + + updated keys
    + + + + + + + + + + + + + + + + + + +
    + +
    + + + + +
    + +
    + +
    + Documentation generated by JSDoc 3.6.3 on Mon Sep 25 2023 11:05:14 GMT+0000 (Coordinated Universal Time) using the docdash theme. +
    + + + + + \ No newline at end of file diff --git a/docs/AV.Object.html b/docs/AV.Object.html new file mode 100644 index 000000000..512708265 --- /dev/null +++ b/docs/AV.Object.html @@ -0,0 +1,6807 @@ + + + + + Object - Documentation + + + + + + + + + + + + + + + + +
    + +

    Object

    + + + + + + + +
    + +
    + +

    + AV. + + Object +

    + +

    The fundamental unit of AV data, which implements the Backbone Model +interface.

    + + +
    + +
    +
    + + + + +

    Constructor

    + + +

    new Object(attributes, options)

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    See:
    +
    + +
    + + + +
    + + + + + +
    + Creates a new model with defined attributes. A client id (cid) is +automatically generated and assigned for you. + +

    You won't normally call this method directly. It is recommended that +you use a subclass of AV.Object instead, created by calling +extend.

    + +

    However, if you don't want to use a subclass, or aren't sure which +subclass is appropriate, you can use this form:

    +    var object = new AV.Object("ClassName");
    +
    +That is basically equivalent to:
    +    var MyClass = AV.Object.extend("ClassName");
    +    var object = new MyClass();
    +

    +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    attributes + + +Object + + + + The initial set of data to store in the object.
    options + + +Object + + + + A set of Backbone-like options for creating the + object. The only option currently supported is "collection".
    + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + +

    Members

    + + + +

    (static, readonly) query :AV.Query

    + + + + + +
    + + +
    Source:
    +
    + + + + + +
    Since:
    +
    • v3.1.0
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Get a new Query of the current class +
    + + + +
    Type:
    + + + + + + +
    Example
    + +
    const Post = AV.Object.extend('Post');
    +Post.query.equalTo('author', 'leancloud').find().then();
    + + + + + + + +

    Methods

    + + + + + + +

    (static) 'new'(attributes, options) → {AV.Object}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + +
    Since:
    +
    • v0.4.4
    + + + + + + + + + + + + + + + + + + + + + + + + + +
    See:
    +
    + +
    + + + +
    + + + + + +
    + Creates a new model with defined attributes, +It's the same with +
    +  new AV.Object(attributes, options);
    + 
    +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    attributes + + +Object + + + + The initial set of data to store in the object.
    options + + +Object + + + + A set of Backbone-like options for creating the + object. The only option currently supported is "collection".
    + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +AV.Object + + +
    +
    + + + + + + + + + +

    (static) createWithoutData(class, id) → {AV.Object}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Creates an instance of a subclass of AV.Object for the give classname +and id. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    class + + +String +| + +function + + + + the className or a subclass of AV.Object.
    id + + +String + + + + The object id of this model.
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + A new subclass instance of AV.Object. +
    + + + +
    +
    + Type +
    +
    + +AV.Object + + +
    +
    + + + + + + + + + +

    (static) destroyAll(objects, options) → {Promise}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Delete objects in batch. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    objects + + +Array.<AV.Object> + + + + The AV.Object array to be deleted.
    options + + +AuthOptions + + + +
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + A promise that is fulfilled when the save + completes. +
    + + + +
    +
    + Type +
    +
    + +Promise + + +
    +
    + + + + + + + + + +

    (static) extend(className, protoProps, classProps) → {Class}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Creates a new subclass of AV.Object for the given AV class name. + +

    Every extension of a AV class will inherit from the most recent +previous extension of that class. When a AV.Object is automatically +created by parsing JSON, it will use the most recent extension of that +class.

    +
    + + + + + + + + + +
    Example
    + +
    var MyClass = AV.Object.extend("MyClass", {
    +    // Instance properties
    +}, {
    +    // Class properties
    +});
    + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    className + + +String + + + + The name of the AV class backing this model.
    protoProps + + +Object + + + + Instance properties to add to instances of the + class returned from this method.
    classProps + + +Object + + + + Class properties to add the class returned from + this method.
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + A new subclass of AV.Object. +
    + + + +
    +
    + Type +
    +
    + +Class + + +
    +
    + + + + + + + + + +

    (static) fetchAll(objects, options) → {Promise.<Array.<AV.Object>>}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Fetch the given list of AV.Object. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    objects + + +Array.<AV.Object> + + + + A list of AV.Object
    options + + +AuthOptions + + + +
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + The given list of AV.Object, updated +
    + + + +
    +
    + Type +
    +
    + +Promise.<Array.<AV.Object>> + + +
    +
    + + + + + + + + + +

    (static) register(klass, nameopt)

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Register a class. +If a subclass of AV.Object is defined with your own implement +rather then AV.Object.extend, the subclass must be registered. +
    + + + + + + + + + +
    Example
    + +
    class Person extend AV.Object {}
    +AV.Object.register(Person);
    + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    klass + + +function + + + + + + + + + + A subclass of AV.Object
    name + + +String + + + + + + <optional>
    + + + + + +
    Specify the name of the class. Useful when the class might be uglified.
    + + + + + + + + + + + + + + + + + + + + + +

    (static) saveAll(list)

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Saves the given list of AV.Object. +If any error is encountered, stops and calls the error handler. +
    + + + + + + + + + +
    Example
    + +
    AV.Object.saveAll([object1, object2, ...]).then(function(list) {
    +  // All the objects were saved.
    +}, function(error) {
    +  // An error occurred while saving one of the objects.
    +});
    + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    list + + +Array + + + + A list of AV.Object.
    + + + + + + + + + + + + + + + + + + + + + +

    add(key, item)

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Atomically add an object to the end of the array associated with a given +key. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +String + + + + The key.
    item + + The item to add.
    + + + + + + + + + + + + + + + + + + + + + +

    addUnique(key, item)

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Atomically add an object to the array associated with a given key, only +if it is not already present in the array. The position of the insert is +not guaranteed. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +String + + + + The key.
    item + + The object to add.
    + + + + + + + + + + + + + + + + + + + + + +

    bitAnd(key, value)

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Atomically apply a "bit and" operation on the value associated with a +given key. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +String + + + + The key.
    value + + +Number + + + + The value to apply.
    + + + + + + + + + + + + + + + + + + + + + +

    bitOr(key, value)

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Atomically apply a "bit or" operation on the value associated with a +given key. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +String + + + + The key.
    value + + +Number + + + + The value to apply.
    + + + + + + + + + + + + + + + + + + + + + +

    bitXor(key, value)

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Atomically apply a "bit xor" operation on the value associated with a +given key. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +String + + + + The key.
    value + + +Number + + + + The value to apply.
    + + + + + + + + + + + + + + + + + + + + + +

    change()

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Call this method to manually fire a `"change"` event for this model and +a `"change:attribute"` event for each changed attribute. +Calling this will cause all objects observing the model to update. +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    clear()

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Clear all attributes on the model, firing "change" unless +you choose to silence it. +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    clone() → {AV.Object}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Creates a new model with identical attributes to this one. +
    + + + + + + + + + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +AV.Object + + +
    +
    + + + + + + + + + +

    destroy(options) → {Promise}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Destroy this model on the server if it was already persisted. +Optimistically removes the model from its collection, if it has one. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    options + + +AuthOptions + + + + AuthOptions plus: +
    Properties
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    wait + + +Boolean + + + + + + <optional>
    + + + + + +
    wait for the server to respond +before removal.
    + +
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + A promise that is fulfilled when the destroy + completes. +
    + + + +
    +
    + Type +
    +
    + +Promise + + +
    +
    + + + + + + + + + +

    dirty(attr) → {Boolean}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Returns true if this object has been modified since its last +save/refresh. If an attribute is specified, it returns true only if that +particular attribute has been modified since the last save/refresh. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    attr + + +String + + + + An attribute name (optional).
    + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +Boolean + + +
    +
    + + + + + + + + + +

    dirtyKeys() → {Array.<String>}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Returns the keys of the modified attribute since its last save/refresh. +
    + + + + + + + + + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +Array.<String> + + +
    +
    + + + + + + + + + +

    escape()

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Gets the HTML-escaped value of an attribute. +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    fetch(fetchOptions, options) → {Promise}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Fetch the model from the server. If the server's representation of the +model differs from its current attributes, they will be overriden, +triggering a "change" event. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    fetchOptions + + +Object + + + + Optional options to set 'keys', + 'include' and 'includeACL' option.
    options + + +AuthOptions + + + +
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + A promise that is fulfilled when the fetch + completes. +
    + + + +
    +
    + Type +
    +
    + +Promise + + +
    +
    + + + + + + + + + +

    fetchWhenSave(enable)

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + +
    Deprecated:
    • use AV.Object#save with options.fetchWhenSave instead
    + + + + + + + + + + + + + + + +
    + + + + + +
    + Set whether to enable fetchWhenSave option when updating object. +When set true, SDK would fetch the latest object after saving. +Default is false. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    enable + + +boolean + + + + true to enable fetchWhenSave option.
    + + + + + + + + + + + + + + + + + + + + + +

    get(attr)

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Gets the value of an attribute. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    attr + + +String + + + + The string name of an attribute.
    + + + + + + + + + + + + + + + + + + + + + +

    getACL() → {AV.ACL}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    See:
    +
    + +
    + + + +
    + + + + + +
    + Returns the ACL for this object. +
    + + + + + + + + + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + An instance of AV.ACL. +
    + + + +
    +
    + Type +
    +
    + +AV.ACL + + +
    +
    + + + + + + + + + +

    getCreatedAt() → {Date}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Returns the object's createdAt attribute. +
    + + + + + + + + + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +Date + + +
    +
    + + + + + + + + + +

    getObjectId() → {String}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Returns the object's objectId. +
    + + + + + + + + + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + the objectId. +
    + + + +
    +
    + Type +
    +
    + +String + + +
    +
    + + + + + + + + + +

    getUpdatedAt() → {Date}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Returns the object's updatedAt attribute. +
    + + + + + + + + + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +Date + + +
    +
    + + + + + + + + + +

    has(attr) → {Boolean}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Returns true if the attribute contains a value that is not +null or undefined. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    attr + + +String + + + + The string name of the attribute.
    + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +Boolean + + +
    +
    + + + + + + + + + +

    increment(key, amount)

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Atomically increments the value of the given attribute the next time the +object is saved. If no amount is specified, 1 is used by default. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +String + + + + The key.
    amount + + +Number + + + + The amount to increment by.
    + + + + + + + + + + + + + + + + + + + + + +

    initialize()

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Initialize is an empty function by default. Override it with your own +initialization logic. +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    isNew() → {Boolean}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Returns true if this object has never been saved to AV. +
    + + + + + + + + + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +Boolean + + +
    +
    + + + + + + + + + +

    isValid() → {Boolean}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Checks if the model is currently in a valid state. It's only possible to +get into an *invalid* state if you're using silent changes. +
    + + + + + + + + + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +Boolean + + +
    +
    + + + + + + + + + +

    op(key) → {AV.Op}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Returns an instance of a subclass of AV.Op describing what kind of +modification has been performed on this field since the last time it was +saved. For example, after calling object.increment("x"), calling +object.op("x") would return an instance of AV.Op.Increment. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +String + + + + The key.
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + The operation, or undefined if none. +
    + + + +
    +
    + Type +
    +
    + +AV.Op + + +
    +
    + + + + + + + + + +

    previous(attr)

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Gets the previous value of an attribute, recorded at the time the last +"change" event was fired. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    attr + + +String + + + + Name of the attribute to get.
    + + + + + + + + + + + + + + + + + + + + + +

    previousAttributes() → {Object}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Gets all of the attributes of the model at the time of the previous +"change" event. +
    + + + + + + + + + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +Object + + +
    +
    + + + + + + + + + +

    relation(attr) → {AV.Relation}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Gets a relation on the given class for the attribute. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    attr + + +String + + + + The attribute to get the relation for.
    + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +AV.Relation + + +
    +
    + + + + + + + + + +

    remove(key, item)

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Atomically remove all instances of an object from the array associated +with a given key. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +String + + + + The key.
    item + + The object to remove.
    + + + + + + + + + + + + + + + + + + + + + +

    revert(keysopt)

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Clears any (or specific) changes to the model made since the last save. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    keys + + +string +| + +Array.<string> + + + + + + <optional>
    + + + + + +
    specify keys to revert.
    + + + + + + + + + + + + + + + + + + + + + +

    save(options) → {Promise}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    See:
    +
    +
      +
    • AVError
    • +
    +
    + + + +
    + + + + + +
    + Set a hash of model attributes, and save the model to the server. +updatedAt will be updated when the request returns. +You can either call it as:
    +  object.save();
    +or
    +  object.save(null, options);
    +or
    +  object.save(attrs, options);
    +or
    +  object.save(key, value, options);
    +
    + + + + + + + + + +
    Example
    + +
    gameTurn.save({
    +  player: "Jake Cutter",
    +  diceRoll: 2
    +}).then(function(gameTurnAgain) {
    +  // The save was successful.
    +}, function(error) {
    +  // The save failed.  Error is an instance of AVError.
    +});
    + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    options + + +AuthOptions + + + + AuthOptions plus: +
    Properties
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    fetchWhenSave + + +Boolean + + + + fetch and update object after save succeeded
    query + + +AV.Query + + + + Save object only when it matches the query
    + +
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + A promise that is fulfilled when the save + completes. +
    + + + +
    +
    + Type +
    +
    + +Promise + + +
    +
    + + + + + + + + + +

    set(key, value, optionsopt) → {AV.Object}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    See:
    +
    + +
    + + + +
    + + + + + +
    + Sets a hash of model attributes on the object, firing +"change" unless you choose to silence it. + +

    You can call it with an object containing keys and values, or with one +key and value. For example:

    +
    + + + + + + + + + +
    Example
    + +
    gameTurn.set({
    +  player: player1,
    +  diceRoll: 2
    +});
    +
    +game.set("currentPlayer", player2);
    +
    +game.set("finished", true);
    + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    key + + +String + + + + + + + + + + The key to set.
    value + + +Any + + + + + + + + + + The value to give it.
    options + + +Object + + + + + + <optional>
    + + + + + +
    +
    Properties
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    silent + + +Boolean + + + + + + <optional>
    + + + + + +
    + +
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + self if succeeded, throws if the value is not valid. +
    + + + +
    +
    + Type +
    +
    + +AV.Object + + +
    +
    + + + + + + + + + +

    setACL(acl, options) → {AV.Object}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    See:
    +
    + +
    + + + +
    + + + + + +
    + Sets the ACL to be used for this object. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    acl + + +AV.ACL + + + + An instance of AV.ACL.
    options + + +Object + + + + Optional Backbone-like options object to be + passed in to set.
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + self +
    + + + +
    +
    + Type +
    +
    + +AV.Object + + +
    +
    + + + + + + + + + +

    toFullJSON() → {Object}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + +
    Since:
    +
    • 3.0.0
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Returns a JSON version of the object with meta data. +Inverse to AV.parseJSON +
    + + + + + + + + + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +Object + + +
    +
    + + + + + + + + + +

    toJSON() → {Object}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Returns a JSON version of the object. +
    + + + + + + + + + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +Object + + +
    +
    + + + + + + + + + +

    unset(key)

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Remove an attribute from the model, firing "change" unless +you choose to silence it. This is a noop if the attribute doesn't +exist. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +String + + + + The key.
    + + + + + + + + + + + + + + + + + + + + + +

    validate(attrs)

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    See:
    +
    + +
    + + + +
    + + + + + +
    + You should not call this function directly unless you subclass +AV.Object, in which case you can override this method +to provide additional validation on set and +save. Your implementation should throw an Error if +the attrs is invalid +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    attrs + + +Object + + + + The current data to validate.
    + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + +
    + +
    + +
    + Documentation generated by JSDoc 3.6.3 on Mon Sep 25 2023 11:05:14 GMT+0000 (Coordinated Universal Time) using the docdash theme. +
    + + + + + \ No newline at end of file diff --git a/docs/AV.Push.html b/docs/AV.Push.html new file mode 100644 index 000000000..4d269a1b4 --- /dev/null +++ b/docs/AV.Push.html @@ -0,0 +1,632 @@ + + + + + Push - Documentation + + + + + + + + + + + + + + + + +
    + +

    Push

    + + + + + + + +
    + +
    + +

    + AV. + + Push +

    + + +
    + +
    +
    + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + +
    + + + + + + + + + + + + + + +

    Methods

    + + + + + + +

    (static) send(data, optionsopt) → {Promise}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Sends a push notification. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    data + + +Object + + + + + + + + + + The data of the push notification. +
    Properties
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    channels + + +Array.<String> + + + + + + <optional>
    + + + + + +
    An Array of channels to push to.
    push_time + + +Date + + + + + + <optional>
    + + + + + +
    A Date object for when to send the push.
    expiration_time + + +Date + + + + + + <optional>
    + + + + + +
    A Date object for when to expire + the push.
    expiration_interval + + +Number + + + + + + <optional>
    + + + + + +
    The seconds from now to expire the push.
    flow_control + + +Number + + + + + + <optional>
    + + + + + +
    The clients to notify per second
    where + + +AV.Query + + + + + + <optional>
    + + + + + +
    An AV.Query over AV.Installation that is used to match + a set of installations to push to.
    cql + + +String + + + + + + <optional>
    + + + + + +
    A CQL statement over AV.Installation that is used to match + a set of installations to push to.
    data + + +Object + + + + + + + + + + The data to send as part of the push. + More details: https://url.leanapp.cn/pushData
    + +
    options + + +AuthOptions + + + + + + <optional>
    + + + + + +
    + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +Promise + + +
    +
    + + + + + + + + + + +
    + +
    + + + + +
    + +
    + +
    + Documentation generated by JSDoc 3.6.3 on Mon Sep 25 2023 11:05:14 GMT+0000 (Coordinated Universal Time) using the docdash theme. +
    + + + + + \ No newline at end of file diff --git a/docs/AV.Query.html b/docs/AV.Query.html new file mode 100644 index 000000000..497df3960 --- /dev/null +++ b/docs/AV.Query.html @@ -0,0 +1,8576 @@ + + + + + Query - Documentation + + + + + + + + + + + + + + + + +
    + +

    Query

    + + + + + + + +
    + +
    + +

    + AV. + + Query +

    + +

    AV.Query defines a query that is used to fetch AV.Objects. The +most common use case is finding all objects that match a query through the +find method. For example, this sample code fetches all objects +of class MyClass. It calls a different function depending on +whether the fetch succeeded or not. + +

    +var query = new AV.Query(MyClass);
    +query.find().then(function(results) {
    +  // results is an array of AV.Object.
    +}, function(error) {
    +  // error is an instance of AVError.
    +});

    + +

    An AV.Query can also be used to retrieve a single object whose id is +known, through the get method. For example, this sample code fetches an +object of class MyClass and id myId. It calls a +different function depending on whether the fetch succeeded or not. + +

    +var query = new AV.Query(MyClass);
    +query.get(myId).then(function(object) {
    +  // object is an instance of AV.Object.
    +}, function(error) {
    +  // error is an instance of AVError.
    +});

    + +

    An AV.Query can also be used to count the number of objects that match +the query without retrieving all of those objects. For example, this +sample code counts the number of objects of the class MyClass +

    +var query = new AV.Query(MyClass);
    +query.count().then(function(number) {
    +  // There are number instances of MyClass.
    +}, function(error) {
    +  // error is an instance of AVError.
    +});

    + + +
    + +
    +
    + + + + +

    Constructor

    + + +

    new Query(objectClass)

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Creates a new AV.Query for the given AV.Object subclass. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    objectClass + + +Class +| + +String + + + + An instance of a subclass of AV.Object, or a AV className string.
    + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + +

    Methods

    + + + + + + +

    (static) and(…var_args) → {AV.Query}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Constructs a AV.Query that is the AND of the passed in queries. For +example: +
    var compoundQuery = AV.Query.and(query1, query2, query3);
    + +will create a compoundQuery that is an 'and' of the query1, query2, and +query3. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    var_args + + +AV.Query + + + + + + + + + + <repeatable>
    + +
    The list of queries to AND.
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + The query that is the AND of the passed in queries. +
    + + + +
    +
    + Type +
    +
    + +AV.Query + + +
    +
    + + + + + + + + + +

    (static) doCloudQuery(cql, pvalues, options) → {Promise}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Retrieves a list of AVObjects that satisfy the CQL. +CQL syntax please see CQL Guide. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    cql + + +String + + + + A CQL string, see CQL Guide.
    pvalues + + +Array + + + + An array contains placeholder values.
    options + + +AuthOptions + + + +
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + A promise that is resolved with the results when +the query completes. +
    + + + +
    +
    + Type +
    +
    + +Promise + + +
    +
    + + + + + + + + + +

    (static) fromJSON(json) → {AV.Query}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + +
    Since:
    +
    • 4.0.0
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Return a query with conditions from json. +This can be useful to send a query from server side to client side. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    json + + +Object + + + + from AV.Query#toJSON
    + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +AV.Query + + +
    +
    + + + + + + + + + +

    (static) or(…var_args) → {AV.Query}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Constructs a AV.Query that is the OR of the passed in queries. For +example: +
    var compoundQuery = AV.Query.or(query1, query2, query3);
    + +will create a compoundQuery that is an or of the query1, query2, and +query3. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    var_args + + +AV.Query + + + + + + + + + + <repeatable>
    + +
    The list of queries to OR.
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + The query that is the OR of the passed in queries. +
    + + + +
    +
    + Type +
    +
    + +AV.Query + + +
    +
    + + + + + + + + + +

    addAscending(key) → {AV.Query}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Also sorts the results in ascending order by the given key. The previous sort keys have +precedence over this key. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +String + + + + The key to order by
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + Returns the query so you can chain this call. +
    + + + +
    +
    + Type +
    +
    + +AV.Query + + +
    +
    + + + + + + + + + +

    addDescending(key) → {AV.Query}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Also sorts the results in descending order by the given key. The previous sort keys have +precedence over this key. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +String + + + + The key to order by
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + Returns the query so you can chain this call. +
    + + + +
    +
    + Type +
    +
    + +AV.Query + + +
    +
    + + + + + + + + + +

    ascending(key) → {AV.Query}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Sorts the results in ascending order by the given key. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +String + + + + The key to order by.
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + Returns the query, so you can chain this call. +
    + + + +
    +
    + Type +
    +
    + +AV.Query + + +
    +
    + + + + + + + + + +

    containedIn(key, values) → {AV.Query}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Add a constraint to the query that requires a particular key's value to +be contained in the provided list of values. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +String + + + + The key to check.
    values + + +Array + + + + The values that will match.
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + Returns the query, so you can chain this call. +
    + + + +
    +
    + Type +
    +
    + +AV.Query + + +
    +
    + + + + + + + + + +

    contains(key, substring) → {AV.Query}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Add a constraint for finding string values that contain a provided +string. This may be slow for large datasets. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +String + + + + The key that the string to match is stored in.
    substring + + +String + + + + The substring that the value must contain.
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + Returns the query, so you can chain this call. +
    + + + +
    +
    + Type +
    +
    + +AV.Query + + +
    +
    + + + + + + + + + +

    containsAll(key, values) → {AV.Query}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Add a constraint to the query that requires a particular key's value to +contain each one of the provided list of values. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +String + + + + The key to check. This key's value must be an array.
    values + + +Array + + + + The values that will match.
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + Returns the query, so you can chain this call. +
    + + + +
    +
    + Type +
    +
    + +AV.Query + + +
    +
    + + + + + + + + + +

    count(options) → {Promise}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Counts the number of objects that match this query. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    options + + +AuthOptions + + + +
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + A promise that is resolved with the count when +the query completes. +
    + + + +
    +
    + Type +
    +
    + +Promise + + +
    +
    + + + + + + + + + +

    descending(key) → {AV.Query}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Sorts the results in descending order by the given key. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +String + + + + The key to order by.
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + Returns the query, so you can chain this call. +
    + + + +
    +
    + Type +
    +
    + +AV.Query + + +
    +
    + + + + + + + + + +

    destroyAll(options) → {Promise}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Delete objects retrieved by this query. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    options + + +AuthOptions + + + +
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + A promise that is fulfilled when the save + completes. +
    + + + +
    +
    + Type +
    +
    + +Promise + + +
    +
    + + + + + + + + + +

    doesNotExist(key) → {AV.Query}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Add a constraint for finding objects that do not contain a given key. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +String + + + + The key that should not exist
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + Returns the query, so you can chain this call. +
    + + + +
    +
    + Type +
    +
    + +AV.Query + + +
    +
    + + + + + + + + + +

    doesNotMatchKeyInQuery(key, queryKey, query) → {AV.Query}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Add a constraint that requires that a key's value not match a value in +an object returned by a different AV.Query. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +String + + + + The key that contains the value that is being + excluded.
    queryKey + + +String + + + + The key in the objects returned by the query to + match against.
    query + + +AV.Query + + + + The query to run.
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + Returns the query, so you can chain this call. +
    + + + +
    +
    + Type +
    +
    + +AV.Query + + +
    +
    + + + + + + + + + +

    doesNotMatchQuery(key, query) → {AV.Query}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Add a constraint that requires that a key's value not matches a +AV.Query constraint. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +String + + + + The key that the contains the object to match the + query.
    query + + +AV.Query + + + + The query that should not match.
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + Returns the query, so you can chain this call. +
    + + + +
    +
    + Type +
    +
    + +AV.Query + + +
    +
    + + + + + + + + + +

    each(callback) → {Promise}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Iterates over each result of a query, calling a callback for each one. If +the callback returns a promise, the iteration will not continue until +that promise has been fulfilled. If the callback returns a rejected +promise, then iteration will stop with that error. The items are +processed in an unspecified order. The query may not have any sort order, +and may not use limit or skip. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    callback + + +function + + + + Callback that will be called with each result + of the query.
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + A promise that will be fulfilled once the + iteration has completed. +
    + + + +
    +
    + Type +
    +
    + +Promise + + +
    +
    + + + + + + + + + +

    endsWith(key, suffix) → {AV.Query}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Add a constraint for finding string values that end with a provided +string. This will be slow for large datasets. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +String + + + + The key that the string to match is stored in.
    suffix + + +String + + + + The substring that the value must end with.
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + Returns the query, so you can chain this call. +
    + + + +
    +
    + Type +
    +
    + +AV.Query + + +
    +
    + + + + + + + + + +

    equalTo(key, value) → {AV.Query}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Add a constraint to the query that requires a particular key's value to +be equal to the provided value. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +String + + + + The key to check.
    value + + The value that the AV.Object must contain.
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + Returns the query, so you can chain this call. +
    + + + +
    +
    + Type +
    +
    + +AV.Query + + +
    +
    + + + + + + + + + +

    exists(key) → {AV.Query}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Add a constraint for finding objects that contain the given key. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +String + + + + The key that should exist.
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + Returns the query, so you can chain this call. +
    + + + +
    +
    + Type +
    +
    + +AV.Query + + +
    +
    + + + + + + + + + +

    find(options) → {Promise}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Retrieves a list of AVObjects that satisfy this query. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    options + + +AuthOptions + + + +
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + A promise that is resolved with the results when +the query completes. +
    + + + +
    +
    + Type +
    +
    + +Promise + + +
    +
    + + + + + + + + + +

    findAndCount(options) → {Promise}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + +
    Since:
    +
    • 4.12.0
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Retrieves both AVObjects and total count. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    options + + +AuthOptions + + + +
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + A tuple contains results and count. +
    + + + +
    +
    + Type +
    +
    + +Promise + + +
    +
    + + + + + + + + + +

    first(options) → {Promise}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Retrieves at most one AV.Object that satisfies this query. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    options + + +AuthOptions + + + +
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + A promise that is resolved with the object when +the query completes. +
    + + + +
    +
    + Type +
    +
    + +Promise + + +
    +
    + + + + + + + + + +

    get(objectId, options) → {Promise.<AV.Object>}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Constructs an AV.Object whose id is already known by fetching data from +the server. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    objectId + + +String + + + + The id of the object to be fetched.
    options + + +AuthOptions + + + +
    + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +Promise.<AV.Object> + + +
    +
    + + + + + + + + + +

    greaterThan(key, value) → {AV.Query}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Add a constraint to the query that requires a particular key's value to +be greater than the provided value. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +String + + + + The key to check.
    value + + The value that provides an lower bound.
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + Returns the query, so you can chain this call. +
    + + + +
    +
    + Type +
    +
    + +AV.Query + + +
    +
    + + + + + + + + + +

    greaterThanOrEqualTo(key, value) → {AV.Query}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Add a constraint to the query that requires a particular key's value to +be greater than or equal to the provided value. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +String + + + + The key to check.
    value + + The value that provides an lower bound.
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + Returns the query, so you can chain this call. +
    + + + +
    +
    + Type +
    +
    + +AV.Query + + +
    +
    + + + + + + + + + +

    include(keys) → {AV.Query}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Include nested AV.Objects for the provided key. You can use dot +notation to specify which fields in the included object are also fetch. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    keys + + +Array.<String> + + + + The name of the key to include.
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + Returns the query, so you can chain this call. +
    + + + +
    +
    + Type +
    +
    + +AV.Query + + +
    +
    + + + + + + + + + +

    includeACL(valueopt) → {AV.Query}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Include the ACL. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDefaultDescription
    value + + +Boolean + + + + + + <optional>
    + + + + + +
    + + true + + Whether to include the ACL
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + Returns the query, so you can chain this call. +
    + + + +
    +
    + Type +
    +
    + +AV.Query + + +
    +
    + + + + + + + + + +

    lessThan(key, value) → {AV.Query}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Add a constraint to the query that requires a particular key's value to +be less than the provided value. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +String + + + + The key to check.
    value + + The value that provides an upper bound.
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + Returns the query, so you can chain this call. +
    + + + +
    +
    + Type +
    +
    + +AV.Query + + +
    +
    + + + + + + + + + +

    lessThanOrEqualTo(key, value) → {AV.Query}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Add a constraint to the query that requires a particular key's value to +be less than or equal to the provided value. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +String + + + + The key to check.
    value + + The value that provides an upper bound.
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + Returns the query, so you can chain this call. +
    + + + +
    +
    + Type +
    +
    + +AV.Query + + +
    +
    + + + + + + + + + +

    limit(n) → {AV.Query}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Sets the limit of the number of results to return. The default limit is +100, with a maximum of 1000 results being returned at a time. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    n + + +Number + + + + the number of results to limit to.
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + Returns the query, so you can chain this call. +
    + + + +
    +
    + Type +
    +
    + +AV.Query + + +
    +
    + + + + + + + + + +

    matches(key, regex) → {AV.Query}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Add a regular expression constraint for finding string values that match +the provided regular expression. +This may be slow for large datasets. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +String + + + + The key that the string to match is stored in.
    regex + + +RegExp + + + + The regular expression pattern to match.
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + Returns the query, so you can chain this call. +
    + + + +
    +
    + Type +
    +
    + +AV.Query + + +
    +
    + + + + + + + + + +

    matchesKeyInQuery(key, queryKey, query) → {AV.Query}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Add a constraint that requires that a key's value matches a value in +an object returned by a different AV.Query. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +String + + + + The key that contains the value that is being + matched.
    queryKey + + +String + + + + The key in the objects returned by the query to + match against.
    query + + +AV.Query + + + + The query to run.
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + Returns the query, so you can chain this call. +
    + + + +
    +
    + Type +
    +
    + +AV.Query + + +
    +
    + + + + + + + + + +

    matchesQuery(key, query) → {AV.Query}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Add a constraint that requires that a key's value matches a AV.Query +constraint. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +String + + + + The key that the contains the object to match the + query.
    query + + +AV.Query + + + + The query that should match.
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + Returns the query, so you can chain this call. +
    + + + +
    +
    + Type +
    +
    + +AV.Query + + +
    +
    + + + + + + + + + +

    near(key, point) → {AV.Query}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Add a proximity based constraint for finding objects with key point +values near the point given. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +String + + + + The key that the AV.GeoPoint is stored in.
    point + + +AV.GeoPoint + + + + The reference AV.GeoPoint that is used.
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + Returns the query, so you can chain this call. +
    + + + +
    +
    + Type +
    +
    + +AV.Query + + +
    +
    + + + + + + + + + +

    notContainedIn(key, values) → {AV.Query}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Add a constraint to the query that requires a particular key's value to +not be contained in the provided list of values. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +String + + + + The key to check.
    values + + +Array + + + + The values that will not match.
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + Returns the query, so you can chain this call. +
    + + + +
    +
    + Type +
    +
    + +AV.Query + + +
    +
    + + + + + + + + + +

    notEqualTo(key, value) → {AV.Query}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Add a constraint to the query that requires a particular key's value to +be not equal to the provided value. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +String + + + + The key to check.
    value + + The value that must not be equalled.
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + Returns the query, so you can chain this call. +
    + + + +
    +
    + Type +
    +
    + +AV.Query + + +
    +
    + + + + + + + + + +

    scan(optionsopt, authOptionsopt) → {AsyncIterator.<AV.Object>}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + +
    Since:
    +
    • 2.1.0
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + scan a Query. masterKey required. +
    + + + + + + + + + +
    Example
    + +
    const testIterator = {
    +  [Symbol.asyncIterator]() {
    +    return new Query('Test').scan(undefined, { useMasterKey: true });
    +  },
    +};
    +for await (const test of testIterator) {
    +  console.log(test.id);
    +}
    + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    options + + +object + + + + + + <optional>
    + + + + + +
    +
    Properties
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    orderedBy + + +string + + + + + + <optional>
    + + + + + +
    specify the key to sort
    batchSize + + +number + + + + + + <optional>
    + + + + + +
    specify the batch size for each request
    + +
    authOptions + + +AuthOptions + + + + + + <optional>
    + + + + + +
    + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +AsyncIterator.<AV.Object> + + +
    +
    + + + + + + + + + +

    select(keys) → {AV.Query}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Restrict the fields of the returned AV.Objects to include only the +provided keys. If this is called multiple times, then all of the keys +specified in each of the calls will be included. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    keys + + +Array.<String> + + + + The names of the keys to include.
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + Returns the query, so you can chain this call. +
    + + + +
    +
    + Type +
    +
    + +AV.Query + + +
    +
    + + + + + + + + + +

    sizeEqualTo(key, value) → {AV.Query}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Add a constraint to the query that requires a particular +array key's length to be equal to the provided value. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +String + + + + The array key to check.
    value + + +number + + + + The length value.
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + Returns the query, so you can chain this call. +
    + + + +
    +
    + Type +
    +
    + +AV.Query + + +
    +
    + + + + + + + + + +

    skip(n) → {AV.Query}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Sets the number of results to skip before returning any results. +This is useful for pagination. +Default is to skip zero results. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    n + + +Number + + + + the number of results to skip.
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + Returns the query, so you can chain this call. +
    + + + +
    +
    + Type +
    +
    + +AV.Query + + +
    +
    + + + + + + + + + +

    startsWith(key, prefix) → {AV.Query}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Add a constraint for finding string values that start with a provided +string. This query will use the backend index, so it will be fast even +for large datasets. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +String + + + + The key that the string to match is stored in.
    prefix + + +String + + + + The substring that the value must start with.
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + Returns the query, so you can chain this call. +
    + + + +
    +
    + Type +
    +
    + +AV.Query + + +
    +
    + + + + + + + + + +

    subscribe() → {AV.LiveQuery}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + +
    Since:
    +
    • 3.0.0
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Subscribe the changes of this query. + +LiveQuery is not included in the default bundle: https://url.leanapp.cn/enable-live-query. +
    + + + + + + + + + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + An eventemitter which can be used to get LiveQuery updates; +
    + + + +
    +
    + Type +
    +
    + +AV.LiveQuery + + +
    +
    + + + + + + + + + +

    toJSON() → {Object}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Returns a JSON representation of this query. +
    + + + + + + + + + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +Object + + +
    +
    + + + + + + + + + +

    withinGeoBox(key, southwest, northeast) → {AV.Query}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Add a constraint to the query that requires a particular key's +coordinates be contained within a given rectangular geographic bounding +box. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +String + + + + The key to be constrained.
    southwest + + +AV.GeoPoint + + + + The lower-left inclusive corner of the box.
    northeast + + +AV.GeoPoint + + + + The upper-right inclusive corner of the box.
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + Returns the query, so you can chain this call. +
    + + + +
    +
    + Type +
    +
    + +AV.Query + + +
    +
    + + + + + + + + + +

    withinKilometers(key, point, maxDistance) → {AV.Query}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Add a proximity based constraint for finding objects with key point +values near the point given and within the maximum distance given. +Radius of earth used is 6371.0 kilometers. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +String + + + + The key that the AV.GeoPoint is stored in.
    point + + +AV.GeoPoint + + + + The reference AV.GeoPoint that is used.
    maxDistance + + +Number + + + + Maximum distance (in kilometers) of results + to return.
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + Returns the query, so you can chain this call. +
    + + + +
    +
    + Type +
    +
    + +AV.Query + + +
    +
    + + + + + + + + + +

    withinMiles(key, point, maxDistance) → {AV.Query}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Add a proximity based constraint for finding objects with key point +values near the point given and within the maximum distance given. +Radius of earth used is 3958.8 miles. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +String + + + + The key that the AV.GeoPoint is stored in.
    point + + +AV.GeoPoint + + + + The reference AV.GeoPoint that is used.
    maxDistance + + +Number + + + + Maximum distance (in miles) of results to + return.
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + Returns the query, so you can chain this call. +
    + + + +
    +
    + Type +
    +
    + +AV.Query + + +
    +
    + + + + + + + + + +

    withinRadians(key, point, maxDistance) → {AV.Query}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Add a proximity based constraint for finding objects with key point +values near the point given and within the maximum distance given. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +String + + + + The key that the AV.GeoPoint is stored in.
    point + + +AV.GeoPoint + + + + The reference AV.GeoPoint that is used.
    maxDistance + + Maximum distance (in radians) of results to return.
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + Returns the query, so you can chain this call. +
    + + + +
    +
    + Type +
    +
    + +AV.Query + + +
    +
    + + + + + + + + + + +
    + +
    + + + + +
    + +
    + +
    + Documentation generated by JSDoc 3.6.3 on Mon Sep 25 2023 11:05:14 GMT+0000 (Coordinated Universal Time) using the docdash theme. +
    + + + + + \ No newline at end of file diff --git a/docs/AV.Relation.html b/docs/AV.Relation.html new file mode 100644 index 000000000..f2559e710 --- /dev/null +++ b/docs/AV.Relation.html @@ -0,0 +1,942 @@ + + + + + Relation - Documentation + + + + + + + + + + + + + + + + +
    + +

    Relation

    + + + + + + + +
    + +
    + +

    + AV. + + Relation +

    + +

    +A class that is used to access all of the children of a many-to-many +relationship. Each instance of AV.Relation is associated with a +particular parent object and key. +

    + + +
    + +
    +
    + + + + +

    Constructor

    + + +

    new Relation(parent, key)

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    See:
    +
    + +
    + + + +
    + + + + + +
    + Creates a new Relation for the given parent object and key. This +constructor should rarely be used directly, but rather created by +AV.Object#relation. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    parent + + +AV.Object + + + + The parent of this relation.
    key + + +String + + + + The key for this relation on the parent.
    + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + +

    Methods

    + + + + + + +

    (static) reverseQuery(parentClass, relationKey, child) → {AV.Query}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Creates a query that can be used to query the parent objects in this relation. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    parentClass + + +String + + + + The parent class or name.
    relationKey + + +String + + + + The relation field key in parent.
    child + + +AV.Object + + + + The child object.
    + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +AV.Query + + +
    +
    + + + + + + + + + +

    add(objects)

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Adds a AV.Object or an array of AV.Objects to the relation. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    objects + + +AV.Object +| + +Array.<AV.Object> + + + + The item or items to add.
    + + + + + + + + + + + + + + + + + + + + + +

    query() → {AV.Query}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Returns a AV.Query that is limited to objects in this +relation. +
    + + + + + + + + + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +AV.Query + + +
    +
    + + + + + + + + + +

    remove(objects)

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Removes a AV.Object or an array of AV.Objects from this relation. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    objects + + +AV.Object +| + +Array.<AV.Object> + + + + The item or items to remove.
    + + + + + + + + + + + + + + + + + + + + + +

    toJSON() → {Object}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Returns a JSON version of the object suitable for saving to disk. +
    + + + + + + + + + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +Object + + +
    +
    + + + + + + + + + + +
    + +
    + + + + +
    + +
    + +
    + Documentation generated by JSDoc 3.6.3 on Mon Sep 25 2023 11:05:14 GMT+0000 (Coordinated Universal Time) using the docdash theme. +
    + + + + + \ No newline at end of file diff --git a/docs/AV.Role.html b/docs/AV.Role.html new file mode 100644 index 000000000..d72f7c038 --- /dev/null +++ b/docs/AV.Role.html @@ -0,0 +1,732 @@ + + + + + Role - Documentation + + + + + + + + + + + + + + + + +
    + +

    Role

    + + + + + + + +
    + +
    + +

    + AV. + + Role +

    + + +
    + +
    +
    + + + + + +

    new Role(name, acl)

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Represents a Role on the AV server. Roles represent groupings of +Users for the purposes of granting permissions (e.g. specifying an ACL +for an Object). Roles are specified by their sets of child users and +child roles, all of which are granted any permissions that the parent +role has. + +

    Roles must have a name (which cannot be changed after creation of the +role), and must specify an ACL.

    +An AV.Role is a local representation of a role persisted to the AV +cloud. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    name + + +String + + + + The name of the Role to create.
    acl + + +AV.ACL + + + + The ACL for this role.
    + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + +

    Methods

    + + + + + + +

    getName() → {String}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Gets the name of the role. You can alternatively call role.get("name") +
    + + + + + + + + + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + the name of the role. +
    + + + +
    +
    + Type +
    +
    + +String + + +
    +
    + + + + + + + + + +

    getRoles() → {AV.Relation}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Gets the AV.Relation for the AV.Roles that are direct +children of this role. These roles' users are granted any privileges that +this role has been granted (e.g. read or write access through ACLs). You +can add or remove child roles from this role through this relation. + +

    This is equivalent to calling role.relation("roles")

    +
    + + + + + + + + + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + the relation for the roles belonging to this + role. +
    + + + +
    +
    + Type +
    +
    + +AV.Relation + + +
    +
    + + + + + + + + + +

    getUsers() → {AV.Relation}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Gets the AV.Relation for the AV.Users that are direct +children of this role. These users are granted any privileges that this +role has been granted (e.g. read or write access through ACLs). You can +add or remove users from the role through this relation. + +

    This is equivalent to calling role.relation("users")

    +
    + + + + + + + + + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + the relation for the users belonging to this + role. +
    + + + +
    +
    + Type +
    +
    + +AV.Relation + + +
    +
    + + + + + + + + + +

    setName(name)

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Sets the name for a role. This value must be set before the role has +been saved to the server, and cannot be set once the role has been +saved. + +

    + A role's name can only contain alphanumeric characters, _, -, and + spaces. +

    + +

    This is equivalent to calling role.set("name", name)

    +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    name + + +String + + + + The name of the role.
    + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + +
    + +
    + +
    + Documentation generated by JSDoc 3.6.3 on Mon Sep 25 2023 11:05:14 GMT+0000 (Coordinated Universal Time) using the docdash theme. +
    + + + + + \ No newline at end of file diff --git a/docs/AV.SearchQuery.html b/docs/AV.SearchQuery.html new file mode 100644 index 000000000..91492881d --- /dev/null +++ b/docs/AV.SearchQuery.html @@ -0,0 +1,2383 @@ + + + + + SearchQuery - Documentation + + + + + + + + + + + + + + + + +
    + +

    SearchQuery

    + + + + + + + +
    + +
    + +

    + AV. + + SearchQuery +

    + + +
    + +
    +
    + + + + + +

    new SearchQuery()

    + + + + + + +
    + + +
    Source:
    +
    + + + + + +
    Since:
    +
    • 0.5.1
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + App searching query.Use just like AV.Query: + +Visit App Searching Guide +for more details. +
    + + + + + + + + + +
    Example
    + +
    var query = new AV.SearchQuery('Player');
    +  query.queryString('*');
    +  query.find().then(function(results) {
    +    console.log('Found %d objects', query.hits());
    +    //Process results
    +  });
    + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + +

    Methods

    + + + + + + +

    addAscending(key) → {AV.SearchQuery}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Also sorts the results in ascending order by the given key. The previous sort keys have +precedence over this key. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +String + + + + The key to order by
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + Returns the query so you can chain this call. +
    + + + +
    +
    + Type +
    +
    + +AV.SearchQuery + + +
    +
    + + + + + + + + + +

    addDescending(key) → {AV.SearchQuery}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Also sorts the results in descending order by the given key. The previous sort keys have +precedence over this key. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +String + + + + The key to order by
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + Returns the query so you can chain this call. +
    + + + +
    +
    + Type +
    +
    + +AV.SearchQuery + + +
    +
    + + + + + + + + + +

    ascending(key) → {AV.SearchQuery}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Sorts the results in ascending order by the given key. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +String + + + + The key to order by.
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + Returns the query, so you can chain this call. +
    + + + +
    +
    + Type +
    +
    + +AV.SearchQuery + + +
    +
    + + + + + + + + + +

    descending(key) → {AV.SearchQuery}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Sorts the results in descending order by the given key. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +String + + + + The key to order by.
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + Returns the query, so you can chain this call. +
    + + + +
    +
    + Type +
    +
    + +AV.SearchQuery + + +
    +
    + + + + + + + + + +

    find(options) → {Promise}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    See:
    +
    + +
    + + + +
    + + + + + +
    + Retrieves a list of AVObjects that satisfy this query. +Either options.success or options.error is called when the find +completes. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    options + + +AuthOptions + + + +
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + A promise that is resolved with the results when +the query completes. +
    + + + +
    +
    + Type +
    +
    + +Promise + + +
    +
    + + + + + + + + + +

    hasMore() → {Boolean}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    See:
    +
    + +
    + + + +
    + + + + + +
    + Returns true when there are more documents can be retrieved by this +query instance, you can call find function to get more results. +
    + + + + + + + + + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +Boolean + + +
    +
    + + + + + + + + + +

    highlights(highlights) → {AV.SearchQuery}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Sets the highlight fields. Such as +
    
    +  query.highlights('title');
    +  //or pass an array.
    +  query.highlights(['title', 'content'])
    +
    +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    highlights + + +String +| + +Array.<String> + + + + a list of fields.
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + Returns the query, so you can chain this call. +
    + + + +
    +
    + Type +
    +
    + +AV.SearchQuery + + +
    +
    + + + + + + + + + +

    hits() → {Number}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Returns the number of objects that match this query. +
    + + + + + + + + + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +Number + + +
    +
    + + + + + + + + + +

    include(keys) → {AV.SearchQuery}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Include nested AV.Objects for the provided key. You can use dot +notation to specify which fields in the included object are also fetch. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    keys + + +Array.<String> + + + + The name of the key to include.
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + Returns the query, so you can chain this call. +
    + + + +
    +
    + Type +
    +
    + +AV.SearchQuery + + +
    +
    + + + + + + + + + +

    limit(n) → {AV.SearchQuery}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Sets the limit of the number of results to return. The default limit is +100, with a maximum of 1000 results being returned at a time. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    n + + +Number + + + + the number of results to limit to.
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + Returns the query, so you can chain this call. +
    + + + +
    +
    + Type +
    +
    + +AV.SearchQuery + + +
    +
    + + + + + + + + + +

    queryString(q) → {AV.SearchQuery}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Sets the query string of app searching. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    q + + +String + + + + The query string.
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + Returns the query, so you can chain this call. +
    + + + +
    +
    + Type +
    +
    + +AV.SearchQuery + + +
    +
    + + + + + + + + + +

    reset()

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Reset current query instance state(such as sid, hits etc) except params +for a new searching. After resetting, hasMore() will return true. +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    sid(sid) → {AV.SearchQuery}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Sets the sid of app searching query.Default is null. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    sid + + +String + + + + Scroll id for searching.
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + Returns the query, so you can chain this call. +
    + + + +
    +
    + Type +
    +
    + +AV.SearchQuery + + +
    +
    + + + + + + + + + +

    skip(n) → {AV.SearchQuery}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Sets the number of results to skip before returning any results. +This is useful for pagination. +Default is to skip zero results. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    n + + +Number + + + + the number of results to skip.
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + Returns the query, so you can chain this call. +
    + + + +
    +
    + Type +
    +
    + +AV.SearchQuery + + +
    +
    + + + + + + + + + +

    sortBy(builder) → {AV.SearchQuery}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    See:
    +
    + +
    + + + +
    + + + + + +
    + Sets the sort builder for this query. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    builder + + +AV.SearchSortBuilder + + + + The sort builder.
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + Returns the query, so you can chain this call. +
    + + + +
    +
    + Type +
    +
    + +AV.SearchQuery + + +
    +
    + + + + + + + + + + +
    + +
    + + + + +
    + +
    + +
    + Documentation generated by JSDoc 3.6.3 on Mon Sep 25 2023 11:05:14 GMT+0000 (Coordinated Universal Time) using the docdash theme. +
    + + + + + \ No newline at end of file diff --git a/docs/AV.SearchSortBuilder.html b/docs/AV.SearchSortBuilder.html new file mode 100644 index 000000000..d47fa6740 --- /dev/null +++ b/docs/AV.SearchSortBuilder.html @@ -0,0 +1,905 @@ + + + + + SearchSortBuilder - Documentation + + + + + + + + + + + + + + + + +
    + +

    SearchSortBuilder

    + + + + + + + +
    + +
    + +

    + AV. + + SearchSortBuilder +

    + + +
    + +
    +
    + + + + + +

    new SearchSortBuilder()

    + + + + + + +
    + + +
    Source:
    +
    + + + + + +
    Since:
    +
    • 0.5.1
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + A builder to generate sort string for app searching.For example: +
    + + + + + + + + + +
    Example
    + +
    var builder = new AV.SearchSortBuilder();
    +  builder.ascending('key1').descending('key2','max');
    +  var query = new AV.SearchQuery('Player');
    +  query.sortBy(builder);
    +  query.find().then();
    + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + +

    Methods

    + + + + + + +

    ascending(key, mode, missing) → {AV.SearchSortBuilder}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Sorts the results in ascending order by the given key and options. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +String + + + + The key to order by.
    mode + + +String + + + + The sort mode, default is 'avg', you can choose + 'max' or 'min' too.
    missing + + +String + + + + The missing key behaviour, default is 'last', + you can choose 'first' too.
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + Returns the builder, so you can chain this call. +
    + + + +
    +
    + Type +
    +
    + +AV.SearchSortBuilder + + +
    +
    + + + + + + + + + +

    build() → {String}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Build a sort string by configuration. +
    + + + + + + + + + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + the sort string. +
    + + + +
    +
    + Type +
    +
    + +String + + +
    +
    + + + + + + + + + +

    descending(key, mode, missing) → {AV.SearchSortBuilder}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Sorts the results in descending order by the given key and options. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +String + + + + The key to order by.
    mode + + +String + + + + The sort mode, default is 'avg', you can choose + 'max' or 'min' too.
    missing + + +String + + + + The missing key behaviour, default is 'last', + you can choose 'first' too.
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + Returns the builder, so you can chain this call. +
    + + + +
    +
    + Type +
    +
    + +AV.SearchSortBuilder + + +
    +
    + + + + + + + + + +

    whereNear(key, point, options) → {AV.SearchSortBuilder}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Add a proximity based constraint for finding objects with key point +values near the point given. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +String + + + + The key that the AV.GeoPoint is stored in.
    point + + +AV.GeoPoint + + + + The reference AV.GeoPoint that is used.
    options + + +Object + + + + The other options such as mode,order, unit etc.
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + Returns the builder, so you can chain this call. +
    + + + +
    +
    + Type +
    +
    + +AV.SearchSortBuilder + + +
    +
    + + + + + + + + + + +
    + +
    + + + + +
    + +
    + +
    + Documentation generated by JSDoc 3.6.3 on Mon Sep 25 2023 11:05:14 GMT+0000 (Coordinated Universal Time) using the docdash theme. +
    + + + + + \ No newline at end of file diff --git a/docs/AV.Status.html b/docs/AV.Status.html new file mode 100644 index 000000000..06382b272 --- /dev/null +++ b/docs/AV.Status.html @@ -0,0 +1,2105 @@ + + + + + Status - Documentation + + + + + + + + + + + + + + + + +
    + +

    Status

    + + + + + + + +
    + +
    + +

    + AV. + + Status +

    + + +
    + +
    +
    + + + + + +

    new Status()

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Contains functions to deal with Status in LeanCloud. +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + +

    Methods

    + + + + + + +

    (static) countUnreadStatuses(owner, inboxType, options) → {Promise}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + +
    Since:
    +
    • 0.3.0
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Count unread statuses in someone's inbox. +
    + + + + + + + + + +
    Example
    + +
    AV.Status.countUnreadStatuses(AV.User.current()).then(function(response){
    +   console.log(response.unread); //unread statuses number.
    +   console.log(response.total);  //total statuses number.
    + });
    + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    owner + + +AV.User + + + + The status owner.
    inboxType + + +String + + + + The inbox type, 'default' by default.
    options + + +AuthOptions + + + +
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + A promise that is fulfilled when the count + completes. +
    + + + +
    +
    + Type +
    +
    + +Promise + + +
    +
    + + + + + + + + + +

    (static) inboxQuery(owner, inboxType) → {AV.InboxQuery}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + +
    Since:
    +
    • 0.3.0
    + + + + + + + + + + + + + + + + + + + + + + + + + +
    See:
    +
    + +
    + + + +
    + + + + + +
    + Create a inbox status query to find someone's inbox statuses. +
    + + + + + + + + + +
    Example
    + +
    //Find current user's default inbox statuses.
    +  var query = AV.Status.inboxQuery(AV.User.current());
    +  //find the statuses after the last message id
    +  query.sinceId(lastMessageId);
    +  query.find().then(function(statuses){
    +     //process statuses
    +  });
    + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    owner + + +AV.User + + + + The inbox's owner
    inboxType + + +String + + + + The inbox type,'default' by default.
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + The inbox query object. +
    + + + +
    +
    + Type +
    +
    + +AV.InboxQuery + + +
    +
    + + + + + + + + + +

    (static) resetUnreadCount(owner, inboxType, options) → {Promise}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + +
    Since:
    +
    • 2.1.0
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + reset unread statuses count in someone's inbox. +
    + + + + + + + + + +
    Example
    + +
    AV.Status.resetUnreadCount(AV.User.current()).then(function(response){
    +   console.log(response.unread); //unread statuses number.
    +   console.log(response.total);  //total statuses number.
    + });
    + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    owner + + +AV.User + + + + The status owner.
    inboxType + + +String + + + + The inbox type, 'default' by default.
    options + + +AuthOptions + + + +
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + A promise that is fulfilled when the reset + completes. +
    + + + +
    +
    + Type +
    +
    + +Promise + + +
    +
    + + + + + + + + + +

    (static) sendPrivateStatus(status, target, options) → {Promise}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + +
    Since:
    +
    • 0.3.0
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    +

    Send a status from current signined user to other user's private status inbox.

    +
    + + + + + + + + + +
    Example
    + +
    // send a private status to user '52e84e47e4b0f8de283b079b'
    +    var status = new AVStatus('image url', 'a message');
    +    AV.Status.sendPrivateStatus(status, '52e84e47e4b0f8de283b079b').then(function(){
    +             //send status successfully.
    +     }, function(err){
    +            //an error threw.
    +            console.dir(err);
    +     });
    + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    status + + +AV.Status + + + + A status object to be send to followers.
    target + + +String + + + + The target user or user's objectId.
    options + + +AuthOptions + + + +
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + A promise that is fulfilled when the send + completes. +
    + + + +
    +
    + Type +
    +
    + +Promise + + +
    +
    + + + + + + + + + +

    (static) sendStatusToFollowers(status, options) → {Promise}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + +
    Since:
    +
    • 0.3.0
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Send a status to current signined user's followers. +
    + + + + + + + + + +
    Example
    + +
    var status = new AVStatus('image url', 'a message');
    +    AV.Status.sendStatusToFollowers(status).then(function(){
    +             //send status successfully.
    +     }, function(err){
    +            //an error threw.
    +            console.dir(err);
    +     });
    + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    status + + +AV.Status + + + + A status object to be send to followers.
    options + + +AuthOptions + + + +
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + A promise that is fulfilled when the send + completes. +
    + + + +
    +
    + Type +
    +
    + +Promise + + +
    +
    + + + + + + + + + +

    (static) statusQuery(source) → {AV.Query}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + +
    Since:
    +
    • 0.3.0
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Create a status query to find someone's published statuses. +
    + + + + + + + + + +
    Example
    + +
    //Find current user's published statuses.
    +  var query = AV.Status.statusQuery(AV.User.current());
    +  query.find().then(function(statuses){
    +     //process statuses
    +  });
    + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    source + + +AV.User + + + + The status source, typically the publisher.
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + The query object for status. +
    + + + +
    +
    + Type +
    +
    + +AV.Query + + +
    +
    + + + + + + + + + +

    destroy(options) → {Promise}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Destroy this status,then it will not be avaiable in other user's inboxes. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    options + + +AuthOptions + + + +
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + A promise that is fulfilled when the destroy + completes. +
    + + + +
    +
    + Type +
    +
    + +Promise + + +
    +
    + + + + + + + + + +

    get(attr)

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Gets the value of an attribute in status data. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    attr + + +String + + + + The string name of an attribute.
    + + + + + + + + + + + + + + + + + + + + + +

    send(options) → {Promise}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + +
    Since:
    +
    • 0.3.0
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Send a status by a AV.Query object. +
    + + + + + + + + + +
    Example
    + +
    // send a status to male users
    +    var status = new AVStatus('image url', 'a message');
    +    status.query = new AV.Query('_User');
    +    status.query.equalTo('gender', 'male');
    +    status.send().then(function(){
    +             //send status successfully.
    +     }, function(err){
    +            //an error threw.
    +            console.dir(err);
    +     });
    + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    options + + +AuthOptions + + + +
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + A promise that is fulfilled when the send + completes. +
    + + + +
    +
    + Type +
    +
    + +Promise + + +
    +
    + + + + + + + + + +

    set(key, value)

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Sets a hash of model attributes on the status data. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +String + + + + The key to set.
    value + + +any + + + + The value to give it.
    + + + + + + + + + + + + + + + + + + + + + +

    toObject() → {AV.Object}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Cast the AV.Status object to an AV.Object pointer. +
    + + + + + + + + + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + A AV.Object pointer. +
    + + + +
    +
    + Type +
    +
    + +AV.Object + + +
    +
    + + + + + + + + + + +
    + +
    + + + + +
    + +
    + +
    + Documentation generated by JSDoc 3.6.3 on Mon Sep 25 2023 11:05:14 GMT+0000 (Coordinated Universal Time) using the docdash theme. +
    + + + + + \ No newline at end of file diff --git a/docs/AV.User.html b/docs/AV.User.html new file mode 100644 index 000000000..d717c9f5d --- /dev/null +++ b/docs/AV.User.html @@ -0,0 +1,13902 @@ + + + + + User - Documentation + + + + + + + + + + + + + + + + +
    + +

    User

    + + + + + + + +
    + +
    + +

    + AV. + + User +

    + +

    An AV.User object is a local representation of a user persisted to the +LeanCloud server. This class is a subclass of an AV.Object, and retains the +same functionality of an AV.Object, but also extends it with various +user specific methods, like authentication, signing up, and validation of +uniqueness.

    + + +
    + +
    +
    + + + + +

    Constructor

    + + +

    new User()

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + +

    Methods

    + + + + + + +

    (static) _genId()

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Only use for DI in tests to produce deterministic IDs. +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    (static) become(sessionToken) → {Promise}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Logs in a user with a session token. On success, this saves the session +to disk, so you can retrieve the currently logged in user using +current. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    sessionToken + + +String + + + + The sessionToken to log in with.
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + A promise that is fulfilled with the user when + the login completes. +
    + + + +
    +
    + Type +
    +
    + +Promise + + +
    +
    + + + + + + + + + +

    (static) changePhoneNumber(mobilePhoneNumber, code) → {Promise}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + +
    Since:
    +
    • 4.7.0
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Makes a call to reset user's account mobilePhoneNumber by sms code. +The sms code is sent by AV.User.requestChangePhoneNumber +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    mobilePhoneNumber + + +String + + + +
    code + + +String + + + + The sms code.
    + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +Promise + + +
    +
    + + + + + + + + + +

    (static) current() → {AV.User}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Retrieves the currently logged in AVUser with a valid session, +either from memory or localStorage, if necessary. +
    + + + + + + + + + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + The currently logged in AV.User. +
    + + + +
    +
    + Type +
    +
    + +AV.User + + +
    +
    + + + + + + + + + +

    (static) currentAsync() → {Promise.<AV.User>}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Retrieves the currently logged in AVUser with a valid session, +either from memory or localStorage, if necessary. +
    + + + + + + + + + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + resolved with the currently logged in AV.User. +
    + + + +
    +
    + Type +
    +
    + +Promise.<AV.User> + + +
    +
    + + + + + + + + + +

    (static) followeeQuery(userObjectId) → {AV.FriendShipQuery}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + +
    Since:
    +
    • 0.3.0
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Create a followee query for special user to query the user's followees. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    userObjectId + + +String + + + + The user object id.
    + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +AV.FriendShipQuery + + +
    +
    + + + + + + + + + +

    (static) followerQuery(userObjectId) → {AV.FriendShipQuery}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + +
    Since:
    +
    • 0.3.0
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Create a follower query for special user to query the user's followers. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    userObjectId + + +String + + + + The user object id.
    + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +AV.FriendShipQuery + + +
    +
    + + + + + + + + + +

    (static) logIn(username, password) → {Promise}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    See:
    +
    + +
    + + + +
    + + + + + +
    + Logs in a user with a username (or email) and password. On success, this +saves the session to disk, so you can retrieve the currently logged in +user using current. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    username + + +String + + + + The username (or email) to log in with.
    password + + +String + + + + The password to log in with.
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + A promise that is fulfilled with the user when + the login completes. +
    + + + +
    +
    + Type +
    +
    + +Promise + + +
    +
    + + + + + + + + + +

    (static) loginAnonymously() → {Promise.<AV.User>}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + +
    Since:
    +
    • 3.9.0
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Creates an anonymous user. +
    + + + + + + + + + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +Promise.<AV.User> + + +
    +
    + + + + + + + + + +

    (static) loginWithAuthData(authData, platform, optionsopt) → {Promise}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + +
    Since:
    +
    • 3.7.0
    + + + + + + + + + + + + + + + + + + + + + + + + + +
    See:
    +
    + +
    + + + +
    + + + + + +
    + Signs up or logs in a user with a third party auth data(AccessToken). +On success, this saves the session to disk, so you can retrieve the currently +logged in user using current. +
    + + + + + + + + + +
    Example
    + +
    AV.User.loginWithAuthData({
    +  openid: 'abc123',
    +  access_token: '123abc',
    +  expires_in: 1382686496
    +}, 'weixin').then(function(user) {
    +  //Access user here
    +}).catch(function(error) {
    +  //console.error("error: ", error);
    +});
    + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    authData + + +Object + + + + + + + + + + The response json data returned from third party token, maybe like { openid: 'abc123', access_token: '123abc', expires_in: 1382686496 }
    platform + + +string + + + + + + + + + + Available platform for sign up.
    options + + +Object + + + + + + <optional>
    + + + + + +
    +
    Properties
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    failOnNotExist + + +boolean + + + + + + <optional>
    + + + + + +
    If true, the login request will fail when no user matches this authData exists.
    + +
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + A promise that is fulfilled with the user when + the login completes. +
    + + + +
    +
    + Type +
    +
    + +Promise + + +
    +
    + + + + + + + + + +

    (static) loginWithAuthDataAndUnionId(authData, platform, unionId, unionLoginOptionsopt) → {Promise.<AV.User>}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + +
    Since:
    +
    • 3.7.0
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Signs up or logs in a user with a third party authData and unionId. +
    + + + + + + + + + +
    Example
    + +
    AV.User.loginWithAuthDataAndUnionId({
    +  openid: 'abc123',
    +  access_token: '123abc',
    +  expires_in: 1382686496
    +}, 'weixin', 'union123', {
    +  unionIdPlatform: 'weixin',
    +  asMainAccount: true,
    +}).then(function(user) {
    +  //Access user here
    +}).catch(function(error) {
    +  //console.error("error: ", error);
    +});
    + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    authData + + +Object + + + + + + + + + + The response json data returned from third party token, maybe like { openid: 'abc123', access_token: '123abc', expires_in: 1382686496 }
    platform + + +string + + + + + + + + + + Available platform for sign up.
    unionId + + +string + + + + + + + + + +
    unionLoginOptions + + +Object + + + + + + <optional>
    + + + + + +
    +
    Properties
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDefaultDescription
    unionIdPlatform + + +string + + + + + + <optional>
    + + + + + +
    + + 'weixin' + + unionId platform
    asMainAccount + + +boolean + + + + + + <optional>
    + + + + + +
    + + false + + If true, the unionId will be associated with the user.
    failOnNotExist + + +boolean + + + + + + <optional>
    + + + + + +
    + + If true, the login request will fail when no user matches this authData exists.
    + +
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + A promise that is fulfilled with the user when completed. +
    + + + +
    +
    + Type +
    +
    + +Promise.<AV.User> + + +
    +
    + + + + + + + + + +

    (static) loginWithEmail(email, password) → {Promise}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + +
    Since:
    +
    • 3.13.0
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Logs in a user with email and password. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    email + + +String + + + + The user's email.
    password + + +String + + + + The password to log in with.
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + A promise that is fulfilled with the user when + the login completes. +
    + + + +
    +
    + Type +
    +
    + +Promise + + +
    +
    + + + + + + + + + +

    (static) loginWithMiniApp(authInfo, optionopt)

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Register or login using the identity of the current mini-app. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    authInfo + + +Object + + + + + + + + + +
    option + + +Object + + + + + + <optional>
    + + + + + +
    +
    Properties
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    failOnNotExist + + +Boolean + + + + + + <optional>
    + + + + + +
    If true, the login request will fail when no user matches this authInfo.authData exists.
    + +
    + + + + + + + + + + + + + + + + + + + + + +

    (static) logInWithMobilePhone(mobilePhone, password) → {Promise}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    See:
    +
    + +
    + + + +
    + + + + + +
    + Logs in a user with a mobile phone number and password. On success, this +saves the session to disk, so you can retrieve the currently logged in +user using current. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    mobilePhone + + +String + + + + The user's mobilePhoneNumber
    password + + +String + + + + The password to log in with.
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + A promise that is fulfilled with the user when + the login completes. +
    + + + +
    +
    + Type +
    +
    + +Promise + + +
    +
    + + + + + + + + + +

    (static) logInWithMobilePhoneSmsCode(mobilePhone, smsCode) → {Promise}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    See:
    +
    + +
    + + + +
    + + + + + +
    + Logs in a user with a mobile phone number and sms code sent by +AV.User.requestLoginSmsCode.On success, this +saves the session to disk, so you can retrieve the currently logged in +user using current. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    mobilePhone + + +String + + + + The user's mobilePhoneNumber
    smsCode + + +String + + + + The sms code sent by AV.User.requestLoginSmsCode
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + A promise that is fulfilled with the user when + the login completes. +
    + + + +
    +
    + Type +
    +
    + +Promise + + +
    +
    + + + + + + + + + +

    (static) loginWithQQApp(optionsopt) → {Promise.<AV.User>}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + +
    Since:
    +
    • 4.2.0
    + + + + + + + + + + + + + +
    Deprecated:
    + + + + + + + + + + + + + + + +
    + + + + + +
    + 使用当前使用 QQ 小程序的 QQ 用户身份注册或登录,成功后用户的 session 会在设备上持久化保存,之后可以使用 AV.User.current() 获取当前登录用户。 +仅在 QQ 小程序中可用。 +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    options + + +Object + + + + + + <optional>
    + + + + + +
    +
    Properties
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDefaultDescription
    preferUnionId + + +boolean + + + + + + <optional>
    + + + + + +
    + + 如果服务端在登录时获取到了用户的 UnionId,是否将 UnionId 保存在用户账号中。
    unionIdPlatform + + +string + + + + + + <optional>
    + + + + + +
    + + 'qq' + + (only take effect when preferUnionId) unionId platform
    asMainAccount + + +boolean + + + + + + <optional>
    + + + + + +
    + + true + + (only take effect when preferUnionId) If true, the unionId will be associated with the user.
    failOnNotExist + + +boolean + + + + + + <optional>
    + + + + + +
    + + If true, the login request will fail when no user matches this authData exists. (since v3.7.0)
    + +
    + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +Promise.<AV.User> + + +
    +
    + + + + + + + + + +

    (static) loginWithQQAppWithUnionId(unionLoginOptionsopt) → {Promise.<AV.User>}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + +
    Since:
    +
    • 4.2.0
    + + + + + + + + + + + + + +
    Deprecated:
    + + + + + + + + + + + + + + + +
    + + + + + +
    + 使用当前使用 QQ 小程序的 QQ 用户身份注册或登录, +仅在 QQ 小程序中可用。 +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    unionLoginOptions + + +Object + + + + + + <optional>
    + + + + + +
    +
    Properties
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDefaultDescription
    unionIdPlatform + + +string + + + + + + <optional>
    + + + + + +
    + + 'qq' + + unionId platform
    asMainAccount + + +boolean + + + + + + <optional>
    + + + + + +
    + + false + + If true, the unionId will be associated with the user.
    failOnNotExist + + +boolean + + + + + + <optional>
    + + + + + +
    + + If true, the login request will fail when no user matches this authData exists.
    + +
    + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +Promise.<AV.User> + + +
    +
    + + + + + + + + + +

    (static) loginWithWeapp(optionsopt) → {Promise.<AV.User>}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + +
    Since:
    +
    • 2.0.0
    + + + + + + + + + + + + + +
    Deprecated:
    + + + + + + + + + + + + + + + +
    + + + + + +
    + 使用当前使用微信小程序的微信用户身份注册或登录,成功后用户的 session 会在设备上持久化保存,之后可以使用 AV.User.current() 获取当前登录用户。 +仅在微信小程序中可用。 +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    options + + +Object + + + + + + <optional>
    + + + + + +
    +
    Properties
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDefaultDescription
    preferUnionId + + +boolean + + + + + + <optional>
    + + + + + +
    + + 当用户满足 获取 UnionId 的条件 时,是否使用 UnionId 登录。(since 3.13.0)
    unionIdPlatform + + +string + + + + + + <optional>
    + + + + + +
    + + 'weixin' + + (only take effect when preferUnionId) unionId platform
    asMainAccount + + +boolean + + + + + + <optional>
    + + + + + +
    + + true + + (only take effect when preferUnionId) If true, the unionId will be associated with the user.
    failOnNotExist + + +boolean + + + + + + <optional>
    + + + + + +
    + + If true, the login request will fail when no user matches this authData exists. (since v3.7.0)
    + +
    + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +Promise.<AV.User> + + +
    +
    + + + + + + + + + +

    (static) loginWithWeappWithUnionId(unionLoginOptionsopt)

    + + + + + + +
    + + +
    Source:
    +
    + + + + + +
    Since:
    +
    • 3.13.0
    + + + + + + + + + + + + + +
    Deprecated:
    + + + + + + + + + + + + + + + +
    + + + + + +
    + 使用当前使用微信小程序的微信用户身份注册或登录, +仅在微信小程序中可用。 +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    unionLoginOptions + + +Object + + + + + + <optional>
    + + + + + +
    +
    Properties
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDefaultDescription
    unionIdPlatform + + +string + + + + + + <optional>
    + + + + + +
    + + 'weixin' + + unionId platform
    asMainAccount + + +boolean + + + + + + <optional>
    + + + + + +
    + + false + + If true, the unionId will be associated with the user.
    failOnNotExist + + +boolean + + + + + + <optional>
    + + + + + +
    + + If true, the login request will fail when no user matches this authData exists. * @return {Promise.}
    + +
    + + + + + + + + + + + + + + + + + + + + + +

    (static) logOut() → {Promise}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Logs out the currently logged in user session. This will remove the +session from disk, log out of linked services, and future calls to +current will return null. +
    + + + + + + + + + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +Promise + + +
    +
    + + + + + + + + + +

    (static) mergeUnionId(authInfo, unionId, unionIdOptionopt)

    + + + + + + +
    + + +
    Source:
    +
    + + + + + +
    Since:
    +
    • 4.6.0
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Merge unionId into authInfo. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    authInfo + + +Object + + + + + + + + + +
    unionId + + +String + + + + + + + + + +
    unionIdOption + + +Object + + + + + + <optional>
    + + + + + +
    +
    Properties
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    asMainAccount + + +Boolean + + + + + + <optional>
    + + + + + +
    If true, the unionId will be associated with the user.
    + +
    + + + + + + + + + + + + + + + + + + + + + +

    (static) requestChangePhoneNumber(mobilePhoneNumber, ttlopt, optionsopt) → {Promise}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + +
    Since:
    +
    • 4.7.0
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Requests a change mobile phone number sms code to be sent to the mobilePhoneNumber. +This sms code allows current user to reset it's mobilePhoneNumber by +calling AV.User.changePhoneNumber +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    mobilePhoneNumber + + +String + + + + + + + + + +
    ttl + + +Number + + + + + + <optional>
    + + + + + +
    ttl of sms code (default is 6 minutes)
    options + + +SMSAuthOptions + + + + + + <optional>
    + + + + + +
    + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +Promise + + +
    +
    + + + + + + + + + +

    (static) requestEmailVerify(email) → {Promise}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Requests a verify email to be sent to the specified email address +associated with the user account. This email allows the user to securely +verify their email address on the AV site. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    email + + +String + + + + The email address associated with the user that + doesn't verify their email address.
    + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +Promise + + +
    +
    + + + + + + + + + +

    (static) requestLoginSmsCode(mobilePhoneNumber, optionsopt) → {Promise}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Requests a logIn sms code to be sent to the specified mobile phone +number associated with the user account. This sms code allows the user to +login by AV.User.logInWithMobilePhoneSmsCode function. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    mobilePhoneNumber + + +String + + + + + + + + + + The mobile phone number associated with the + user that want to login by AV.User.logInWithMobilePhoneSmsCode
    options + + +SMSAuthOptions + + + + + + <optional>
    + + + + + +
    + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +Promise + + +
    +
    + + + + + + + + + +

    (static) requestMobilePhoneVerify(mobilePhoneNumber, optionsopt) → {Promise}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Requests a verify sms code to be sent to the specified mobile phone +number associated with the user account. This sms code allows the user to +verify their mobile phone number by calling AV.User.verifyMobilePhone +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    mobilePhoneNumber + + +String + + + + + + + + + + The mobile phone number associated with the + user that doesn't verify their mobile phone number.
    options + + +SMSAuthOptions + + + + + + <optional>
    + + + + + +
    + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +Promise + + +
    +
    + + + + + + + + + +

    (static) requestPasswordReset(email) → {Promise}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Requests a password reset email to be sent to the specified email address +associated with the user account. This email allows the user to securely +reset their password on the AV site. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    email + + +String + + + + The email address associated with the user that + forgot their password.
    + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +Promise + + +
    +
    + + + + + + + + + +

    (static) requestPasswordResetBySmsCode(mobilePhoneNumber, optionsopt) → {Promise}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Requests a reset password sms code to be sent to the specified mobile phone +number associated with the user account. This sms code allows the user to +reset their account's password by calling AV.User.resetPasswordBySmsCode +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    mobilePhoneNumber + + +String + + + + + + + + + + The mobile phone number associated with the + user that doesn't verify their mobile phone number.
    options + + +SMSAuthOptions + + + + + + <optional>
    + + + + + +
    + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +Promise + + +
    +
    + + + + + + + + + +

    (static) resetPasswordBySmsCode(code, password) → {Promise}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Makes a call to reset user's account password by sms code and new password. +The sms code is sent by AV.User.requestPasswordResetBySmsCode. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    code + + +String + + + + The sms code sent by AV.User.Cloud.requestSmsCode
    password + + +String + + + + The new password.
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + A promise that will be resolved with the result +of the function. +
    + + + +
    +
    + Type +
    +
    + +Promise + + +
    +
    + + + + + + + + + +

    (static) signUp(username, password, attrsopt, optionsopt) → {Promise}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    See:
    +
    + +
    + + + +
    + + + + + +
    + Signs up a new user with a username (or email) and password. +This will create a new AV.User on the server, and also persist the +session in localStorage so that you can access the user using +#current. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    username + + +String + + + + + + + + + + The username (or email) to sign up with.
    password + + +String + + + + + + + + + + The password to sign up with.
    attrs + + +Object + + + + + + <optional>
    + + + + + +
    Extra fields to set on the new user.
    options + + +AuthOptions + + + + + + <optional>
    + + + + + +
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + A promise that is fulfilled with the user when + the signup completes. +
    + + + +
    +
    + Type +
    +
    + +Promise + + +
    +
    + + + + + + + + + +

    (static) signUpOrlogInWithAuthData()

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + +
    Deprecated:
    + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    (static) signUpOrlogInWithAuthDataAndUnionId()

    + + + + + + +
    + + +
    Source:
    +
    + + + + + +
    Since:
    +
    • 3.5.0
    + + + + + + + + + + + + + +
    Deprecated:
    + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    (static) signUpOrlogInWithMobilePhone(mobilePhoneNumber, smsCode, attributes, options) → {Promise}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    See:
    +
    + +
    + + + +
    + + + + + +
    + Signs up or logs in a user with a mobilePhoneNumber and smsCode. +On success, this saves the session to disk, so you can retrieve the currently +logged in user using current. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    mobilePhoneNumber + + +String + + + + The user's mobilePhoneNumber.
    smsCode + + +String + + + + The sms code sent by AV.Cloud.requestSmsCode
    attributes + + +Object + + + + The user's other attributes such as username etc.
    options + + +AuthOptions + + + +
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + A promise that is fulfilled with the user when + the login completes. +
    + + + +
    +
    + Type +
    +
    + +Promise + + +
    +
    + + + + + + + + + +

    (static) verifyMobilePhone(code) → {Promise}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Makes a call to verify sms code that sent by AV.User.Cloud.requestSmsCode +If verify successfully,the user mobilePhoneVerified attribute will be true. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    code + + +String + + + + The sms code sent by AV.User.Cloud.requestSmsCode
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + A promise that will be resolved with the result +of the function. +
    + + + +
    +
    + Type +
    +
    + +Promise + + +
    +
    + + + + + + + + + +

    associateWithAuthData(authData, platform) → {Promise.<AV.User>}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + +
    Since:
    +
    • 3.3.0
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Associate the user with a third party authData. +
    + + + + + + + + + +
    Example
    + +
    user.associateWithAuthData({
    +  openid: 'abc123',
    +  access_token: '123abc',
    +  expires_in: 1382686496
    +}, 'weixin').then(function(user) {
    +  //Access user here
    +}).catch(function(error) {
    +  //console.error("error: ", error);
    +});
    + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    authData + + +Object + + + + The response json data returned from third party token, maybe like { openid: 'abc123', access_token: '123abc', expires_in: 1382686496 }
    platform + + +string + + + + Available platform for sign up.
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + A promise that is fulfilled with the user when completed. +
    + + + +
    +
    + Type +
    +
    + +Promise.<AV.User> + + +
    +
    + + + + + + + + + +

    associateWithAuthDataAndUnionId(authData, platform, unionId, unionLoginOptionsopt) → {Promise.<AV.User>}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + +
    Since:
    +
    • 3.5.0
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Associate the user with a third party authData and unionId. +
    + + + + + + + + + +
    Example
    + +
    user.associateWithAuthDataAndUnionId({
    +  openid: 'abc123',
    +  access_token: '123abc',
    +  expires_in: 1382686496
    +}, 'weixin', 'union123', {
    +  unionIdPlatform: 'weixin',
    +  asMainAccount: true,
    +}).then(function(user) {
    +  //Access user here
    +}).catch(function(error) {
    +  //console.error("error: ", error);
    +});
    + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    authData + + +Object + + + + + + + + + + The response json data returned from third party token, maybe like { openid: 'abc123', access_token: '123abc', expires_in: 1382686496 }
    platform + + +string + + + + + + + + + + Available platform for sign up.
    unionId + + +string + + + + + + + + + +
    unionLoginOptions + + +Object + + + + + + <optional>
    + + + + + +
    +
    Properties
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDefaultDescription
    unionIdPlatform + + +string + + + + + + <optional>
    + + + + + +
    + + 'weixin' + + unionId platform
    asMainAccount + + +boolean + + + + + + <optional>
    + + + + + +
    + + false + + If true, the unionId will be associated with the user.
    + +
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + A promise that is fulfilled with the user when completed. +
    + + + +
    +
    + Type +
    +
    + +Promise.<AV.User> + + +
    +
    + + + + + + + + + +

    associateWithMiniApp(authInfoopt, optionopt) → {Promise.<AV.User>}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + +
    Since:
    +
    • 4.6.0
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Associate the user with the identity of the current mini-app. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    authInfo + + +Object + + + + + + <optional>
    + + + + + +
    option + + +Object + + + + + + <optional>
    + + + + + +
    +
    Properties
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    failOnNotExist + + +Boolean + + + + + + <optional>
    + + + + + +
    If true, the login request will fail when no user matches this authInfo.authData exists.
    + +
    + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +Promise.<AV.User> + + +
    +
    + + + + + + + + + +

    associateWithQQApp(optionsopt) → {Promise.<AV.User>}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + +
    Since:
    +
    • 4.2.0
    + + + + + + + + + + + + + +
    Deprecated:
    + + + + + + + + + + + + + + + +
    + + + + + +
    + 将用户与 QQ 小程序用户进行关联。适用于为已经在用户系统中存在的用户关联当前使用 QQ 小程序的微信帐号。 +仅在 QQ 小程序中可用。 +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    options + + +Object + + + + + + <optional>
    + + + + + +
    +
    Properties
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDefaultDescription
    preferUnionId + + +boolean + + + + + + <optional>
    + + + + + +
    + + false + + 如果服务端在登录时获取到了用户的 UnionId,是否将 UnionId 保存在用户账号中。
    unionIdPlatform + + +string + + + + + + <optional>
    + + + + + +
    + + 'qq' + + (only take effect when preferUnionId) unionId platform
    asMainAccount + + +boolean + + + + + + <optional>
    + + + + + +
    + + true + + (only take effect when preferUnionId) If true, the unionId will be associated with the user.
    + +
    + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +Promise.<AV.User> + + +
    +
    + + + + + + + + + +

    associateWithQQAppWithUnionId(unionId, unionOptionsopt) → {Promise.<AV.User>}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + +
    Since:
    +
    • 4.2.0
    + + + + + + + + + + + + + +
    Deprecated:
    + + + + + + + + + + + + + + + +
    + + + + + +
    + 将用户与 QQ 小程序用户进行关联。适用于为已经在用户系统中存在的用户关联当前使用 QQ 小程序的 QQ 帐号。 +仅在 QQ 小程序中可用。 +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    unionId + + +string + + + + + + + + + +
    unionOptions + + +Object + + + + + + <optional>
    + + + + + +
    +
    Properties
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDefaultDescription
    unionIdPlatform + + +string + + + + + + <optional>
    + + + + + +
    + + 'qq' + + unionId platform
    asMainAccount + + +boolean + + + + + + <optional>
    + + + + + +
    + + false + + If true, the unionId will be associated with the user.
    + +
    + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +Promise.<AV.User> + + +
    +
    + + + + + + + + + +

    associateWithWeapp(optionsopt) → {Promise.<AV.User>}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + +
    Since:
    +
    • 3.13.0
    + + + + + + + + + + + + + +
    Deprecated:
    + + + + + + + + + + + + + + + +
    + + + + + +
    + 将用户与微信小程序用户进行关联。适用于为已经在用户系统中存在的用户关联当前使用微信小程序的微信帐号。 +仅在微信小程序中可用。 +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    options + + +Object + + + + + + <optional>
    + + + + + +
    +
    Properties
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDefaultDescription
    preferUnionId + + +boolean + + + + + + <optional>
    + + + + + +
    + + false + + 当用户满足 获取 UnionId 的条件 时,是否将 UnionId 保存在用户账号中。
    unionIdPlatform + + +string + + + + + + <optional>
    + + + + + +
    + + 'weixin' + + (only take effect when preferUnionId) unionId platform
    asMainAccount + + +boolean + + + + + + <optional>
    + + + + + +
    + + true + + (only take effect when preferUnionId) If true, the unionId will be associated with the user.
    + +
    + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +Promise.<AV.User> + + +
    +
    + + + + + + + + + +

    associateWithWeappWithUnionId(unionId, unionOptionsopt) → {Promise.<AV.User>}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + +
    Since:
    +
    • 3.13.0
    + + + + + + + + + + + + + +
    Deprecated:
    + + + + + + + + + + + + + + + +
    + + + + + +
    + 将用户与微信小程序用户进行关联。适用于为已经在用户系统中存在的用户关联当前使用微信小程序的微信帐号。 +仅在微信小程序中可用。 +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    unionId + + +string + + + + + + + + + +
    unionOptions + + +Object + + + + + + <optional>
    + + + + + +
    +
    Properties
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDefaultDescription
    unionIdPlatform + + +string + + + + + + <optional>
    + + + + + +
    + + 'weixin' + + unionId platform
    asMainAccount + + +boolean + + + + + + <optional>
    + + + + + +
    + + false + + If true, the unionId will be associated with the user.
    + +
    + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +Promise.<AV.User> + + +
    +
    + + + + + + + + + +

    authenticated()

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + +
    Deprecated:
    • 如果要判断当前用户的登录状态是否有效,请使用 currentUser.isAuthenticated().then(), +如果要判断该用户是否是当前登录用户,请使用 user.id === currentUser.id
    + + + + + + + + + + + + + + + +
    + + + + + +
    + Checks whether this user is the current user and has been authenticated. +
    + + + + + + + + + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + (Boolean) whether this user is the current user and is logged in. +
    + + + + + + + + + + + +

    dissociateAuthData(platform) → {Promise.<AV.User>}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + +
    Since:
    +
    • 3.3.0
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Unlinks a user from a service. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    platform + + +string + + + +
    + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +Promise.<AV.User> + + +
    +
    + + + + + + + + + +

    fetch()

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    See:
    +
    + +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    follow(options, authOptionsopt)

    + + + + + + +
    + + +
    Source:
    +
    + + + + + +
    Since:
    +
    • 0.3.0
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Follow a user +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    options + + +Object +| + +AV.User +| + +String + + + + + + + + + + if an AV.User or string is given, it will be used as the target user. +
    Properties
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    user + + +AV.User +| + +String + + + + + + + + + + The target user or user's objectId to follow.
    attributes + + +Object + + + + + + <optional>
    + + + + + +
    key-value attributes dictionary to be used as + conditions of followerQuery/followeeQuery.
    + +
    authOptions + + +AuthOptions + + + + + + <optional>
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + +

    followeeQuery()

    + + + + + + +
    + + +
    Source:
    +
    + + + + + +
    Since:
    +
    • 0.3.0
    + + + + + + + + + + + + + + + + + + + + + + + + + +
    See:
    +
    + +
    + + + +
    + + + + + +
    + Create a followee query to query the user's followees. +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    followerQuery()

    + + + + + + +
    + + +
    Source:
    +
    + + + + + +
    Since:
    +
    • 0.3.0
    + + + + + + + + + + + + + + + + + + + + + + + + + +
    See:
    +
    + +
    + + + +
    + + + + + +
    + Create a follower query to query the user's followers. +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    getEmail() → {String}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    See:
    +
    + +
    + + + +
    + + + + + +
    + Returns get("email"). +
    + + + + + + + + + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +String + + +
    +
    + + + + + + + + + +

    getFollowersAndFollowees(optionsopt, authOptionsopt)

    + + + + + + +
    + + +
    Source:
    +
    + + + + + +
    Since:
    +
    • 4.8.0
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Get the user's followers and followees. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    options + + +Object + + + + + + <optional>
    + + + + + +
    +
    Properties
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    skip + + +Number + + + + + + <optional>
    + + + + + +
    limit + + +Number + + + + + + <optional>
    + + + + + +
    + +
    authOptions + + +AuthOptions + + + + + + <optional>
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + +

    getMobilePhoneNumber() → {String}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    See:
    +
    + +
    + + + +
    + + + + + +
    + Returns get("mobilePhoneNumber"). +
    + + + + + + + + + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +String + + +
    +
    + + + + + + + + + +

    getRoles(optionsopt) → {Promise.<Array.<AV.Role>>}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Get this user's Roles. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    options + + +AuthOptions + + + + + + <optional>
    + + + + + +
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + A promise that is fulfilled with the roles when + the query is complete. +
    + + + +
    +
    + Type +
    +
    + +Promise.<Array.<AV.Role>> + + +
    +
    + + + + + + + + + +

    getSessionToken() → {String}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Get sessionToken of current user. +
    + + + + + + + + + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + sessionToken +
    + + + +
    +
    + Type +
    +
    + +String + + +
    +
    + + + + + + + + + +

    getUsername() → {String}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    See:
    +
    + +
    + + + +
    + + + + + +
    + Returns get("username"). +
    + + + + + + + + + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +String + + +
    +
    + + + + + + + + + +

    isAnonymous() → {boolean}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + +
    Since:
    +
    • 3.9.0
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Checks whether a user is anonymous. +
    + + + + + + + + + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +boolean + + +
    +
    + + + + + + + + + +

    isAuthenticated()

    + + + + + + +
    + + +
    Source:
    +
    + + + + + +
    Since:
    +
    • 2.0.0
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Detects if current sessionToken is valid. +
    + + + + + + + + + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + Promise. +
    + + + + + + + + + + + +

    isCurrent()

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    See:
    +
    +
      +
    • AV.User#current
    • +
    +
    + + + +
    + + + + + +
    + Returns true if current would return this user. +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    linkWithWeapp() → {Promise.<AV.User>}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + +
    Deprecated:
    + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +Promise.<AV.User> + + +
    +
    + + + + + + + + + +

    logIn() → {Promise}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    See:
    +
    + +
    + + + +
    + + + + + +
    + Logs in a AV.User. On success, this saves the session to localStorage, +so you can retrieve the currently logged in user using +current. + +

    A username and password must be set before calling logIn.

    +
    + + + + + + + + + + + + + + + + + + + + + + + +
    Returns:
    + + +
    + A promise that is fulfilled with the user when + the login is complete. +
    + + + +
    +
    + Type +
    +
    + +Promise + + +
    +
    + + + + + + + + + +

    loginWithAuthData()

    + + + + + + +
    + + +
    Source:
    +
    + + + + + +
    Since:
    +
    • 3.7.0
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + The same with AV.User.loginWithAuthData, except that you can set attributes before login. +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    loginWithAuthDataAndUnionId()

    + + + + + + +
    + + +
    Source:
    +
    + + + + + +
    Since:
    +
    • 3.7.0
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + The same with AV.User.loginWithAuthDataAndUnionId, except that you can set attributes before login. +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    loginWithMiniApp()

    + + + + + + +
    + + +
    Source:
    +
    + + + + + +
    Since:
    +
    • 4.6.0
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + The same with AV.User.loginWithMiniApp, except that you can set attributes before login. +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    loginWithQQApp(optionsopt)

    + + + + + + +
    + + +
    Source:
    +
    + + + + + +
    Since:
    +
    • 4.2.0
    + + + + + + + + + + + + + +
    Deprecated:
    + + + + + + + + + + + + + + + +
    + + + + + +
    + The same with AV.User.loginWithQQApp, except that you can set attributes before login. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    options + + +Object + + + + + + <optional>
    + + + + + +
    +
    Properties
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDefaultDescription
    failOnNotExist + + +boolean + + + + + + <optional>
    + + + + + +
    + + If true, the login request will fail when no user matches this authData exists.
    preferUnionId + + +boolean + + + + + + <optional>
    + + + + + +
    + + 如果服务端在登录时获取到了用户的 UnionId,是否将 UnionId 保存在用户账号中。
    unionIdPlatform + + +string + + + + + + <optional>
    + + + + + +
    + + 'qq' + + (only take effect when preferUnionId) unionId platform
    asMainAccount + + +boolean + + + + + + <optional>
    + + + + + +
    + + true + + (only take effect when preferUnionId) If true, the unionId will be associated with the user.
    + +
    + + + + + + + + + + + + + + + + + + + + + +

    loginWithQQAppWithUnionId()

    + + + + + + +
    + + +
    Source:
    +
    + + + + + +
    Since:
    +
    • 4.2.0
    + + + + + + + + + + + + + +
    Deprecated:
    + + + + + + + + + + + + + + + +
    + + + + + +
    + The same with AV.User.loginWithQQAppWithUnionId, except that you can set attributes before login. +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    loginWithWeapp(optionsopt) → {Promise.<AV.User>}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + +
    Since:
    +
    • 3.7.0
    + + + + + + + + + + + + + +
    Deprecated:
    + + + + + + + + + + + + + + + +
    + + + + + +
    + The same with AV.User.loginWithWeapp, except that you can set attributes before login. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    options + + +Object + + + + + + <optional>
    + + + + + +
    +
    Properties
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDefaultDescription
    failOnNotExist + + +boolean + + + + + + <optional>
    + + + + + +
    + + If true, the login request will fail when no user matches this authData exists.
    preferUnionId + + +boolean + + + + + + <optional>
    + + + + + +
    + + 当用户满足 获取 UnionId 的条件 时,是否使用 UnionId 登录。(since 3.13.0)
    unionIdPlatform + + +string + + + + + + <optional>
    + + + + + +
    + + 'weixin' + + (only take effect when preferUnionId) unionId platform
    asMainAccount + + +boolean + + + + + + <optional>
    + + + + + +
    + + true + + (only take effect when preferUnionId) If true, the unionId will be associated with the user.
    + +
    + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +Promise.<AV.User> + + +
    +
    + + + + + + + + + +

    loginWithWeappWithUnionId()

    + + + + + + +
    + + +
    Source:
    +
    + + + + + +
    Since:
    +
    • 3.13.0
    + + + + + + + + + + + + + +
    Deprecated:
    + + + + + + + + + + + + + + + +
    + + + + + +
    + The same with AV.User.loginWithWeappWithUnionId, except that you can set attributes before login. +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    refreshSessionToken(optionsopt) → {Promise.<AV.User>}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + +
    Since:
    +
    • 2.1.0
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Refresh sessionToken of current user. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    options + + +AuthOptions + + + + + + <optional>
    + + + + + +
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + user with refreshed sessionToken +
    + + + +
    +
    + Type +
    +
    + +Promise.<AV.User> + + +
    +
    + + + + + + + + + +

    save()

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    See:
    +
    + +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    setEmail(email, options) → {Boolean}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    See:
    +
    + +
    + + + +
    + + + + + +
    + Calls set("email", email, options) and returns the result. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    email + + +String + + + +
    options + + +AuthOptions + + + +
    + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +Boolean + + +
    +
    + + + + + + + + + +

    setMobilePhoneNumber(mobilePhoneNumber) → {Boolean}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    See:
    +
    + +
    + + + +
    + + + + + +
    + Calls set("mobilePhoneNumber", phoneNumber, options) and returns the result. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    mobilePhoneNumber + + +String + + + +
    + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +Boolean + + +
    +
    + + + + + + + + + +

    setPassword(password) → {Boolean}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    See:
    +
    + +
    + + + +
    + + + + + +
    + Calls set("password", password, options) and returns the result. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    password + + +String + + + +
    + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +Boolean + + +
    +
    + + + + + + + + + +

    setUsername(username) → {Boolean}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    See:
    +
    + +
    + + + +
    + + + + + +
    + Calls set("username", username, options) and returns the result. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    username + + +String + + + +
    + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +Boolean + + +
    +
    + + + + + + + + + +

    signUp(attrs, options) → {Promise}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    See:
    +
    + +
    + + + +
    + + + + + +
    + Signs up a new user. You should call this instead of save for +new AV.Users. This will create a new AV.User on the server, and +also persist the session on disk so that you can access the user using +current. + +

    A username and password must be set before calling signUp.

    +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    attrs + + +Object + + + + Extra fields to set on the new user, or null.
    options + + +AuthOptions + + + +
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + A promise that is fulfilled when the signup + finishes. +
    + + + +
    +
    + Type +
    +
    + +Promise + + +
    +
    + + + + + + + + + +

    signUpOrlogInWithMobilePhone(attrs, options) → {Promise}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    See:
    +
    + +
    + + + +
    + + + + + +
    + Signs up a new user with mobile phone and sms code. +You should call this instead of save for +new AV.Users. This will create a new AV.User on the server, and +also persist the session on disk so that you can access the user using +current. + +

    A username and password must be set before calling signUp.

    +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    attrs + + +Object + + + + Extra fields to set on the new user, or null.
    options + + +AuthOptions + + + +
    + + + + + + + + + + + + + + +
    Returns:
    + + +
    + A promise that is fulfilled when the signup + finishes. +
    + + + +
    +
    + Type +
    +
    + +Promise + + +
    +
    + + + + + + + + + +

    unfollow(options, authOptionsopt)

    + + + + + + +
    + + +
    Source:
    +
    + + + + + +
    Since:
    +
    • 0.3.0
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Unfollow a user. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    options + + +Object +| + +AV.User +| + +String + + + + + + + + + + if an AV.User or string is given, it will be used as the target user. +
    Properties
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    user + + +AV.User +| + +String + + + + The target user or user's objectId to unfollow.
    + +
    authOptions + + +AuthOptions + + + + + + <optional>
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + +

    updatePassword(oldPassword, newPassword, options)

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Update user's new password safely based on old password. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    oldPassword + + +String + + + + the old password.
    newPassword + + +String + + + + the new password.
    options + + +AuthOptions + + + +
    + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + +
    + +
    + +
    + Documentation generated by JSDoc 3.6.3 on Mon Sep 25 2023 11:05:14 GMT+0000 (Coordinated Universal Time) using the docdash theme. +
    + + + + + \ No newline at end of file diff --git a/docs/AV.debug.html b/docs/AV.debug.html new file mode 100644 index 000000000..37945c060 --- /dev/null +++ b/docs/AV.debug.html @@ -0,0 +1,298 @@ + + + + + debug - Documentation + + + + + + + + + + + + + + + + +
    + +

    debug

    + + + + + + + +
    + +
    + +

    + AV. + + debug +

    + + +
    + +
    +
    + + + +
    + + +
    Source:
    +
    + + + + + +
    Since:
    +
    • 3.14.0
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + +
    + + + + + + + + + + + + +

    Members

    + + + +

    (static) disable

    + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Disable debug +
    + + + + + + + + + + + + +

    Methods

    + + + + + + +

    (static) enable()

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Enable debug +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + +
    + +
    + +
    + Documentation generated by JSDoc 3.6.3 on Mon Sep 25 2023 11:05:14 GMT+0000 (Coordinated Universal Time) using the docdash theme. +
    + + + + + \ No newline at end of file diff --git a/docs/AV.html b/docs/AV.html new file mode 100644 index 000000000..c644c058a --- /dev/null +++ b/docs/AV.html @@ -0,0 +1,2394 @@ + + + + + AV - Documentation + + + + + + + + + + + + + + + + +
    + +

    AV

    + + + + + + + +
    + +
    + +

    + AV +

    + + +
    + +
    +
    + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    Contains all AV API classes and functions.
    + + + + +
    + + + + + + +

    Classes

    + +
    +
    ACL
    +
    + +
    Captcha
    +
    + +
    Conversation
    +
    + +
    Error
    +
    + +
    File
    +
    + +
    Friendship
    +
    + +
    GeoPoint
    +
    + +
    InboxQuery
    +
    + +
    Leaderboard
    +
    + +
    LiveQuery
    +
    + +
    Object
    +
    + +
    Query
    +
    + +
    Relation
    +
    + +
    Role
    +
    + +
    SearchQuery
    +
    + +
    SearchSortBuilder
    +
    + +
    Status
    +
    + +
    User
    +
    +
    + + + + + +

    Namespaces

    + +
    +
    Cloud
    +
    + +
    debug
    +
    + +
    Insight
    +
    + +
    Push
    +
    +
    + + + +

    Members

    + + + +

    (static) LeaderboardOrder

    + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    Properties:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    ASCENDING + +
    DESCENDING + +
    + + + + + + +
    + The order of the leaderboard results +
    + + + + + + + + + + +

    (static) LeaderboardUpdateStrategy

    + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    Properties:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    BETTER + + Only keep the best statistic. If the leaderboard is in descending order, the best statistic is the highest one.
    LAST + + Keep the last updated statistic
    SUM + + Keep the sum of all updated statistics
    + + + + + + +
    + The update strategy for Leaderboard +
    + + + + + + + + + + +

    (static) LeaderboardVersionChangeInterval

    + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    Properties:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    NEVER + +
    DAY + +
    WEEK + +
    MONTH + +
    + + + + + + +
    + The version change interval for Leaderboard +
    + + + + + + + + + + + + +

    Methods

    + + + + + + +

    (static) init(options)

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Call this method first to set up your authentication tokens for AV. +You can get your app keys from the LeanCloud dashboard on http://leancloud.cn . +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    options + + +Object + + + + +
    Properties
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    appId + + +String + + + + + + + + + + application id
    appKey + + +String + + + + + + + + + + application key
    masterKey + + +String + + + + + + <optional>
    + + + + + +
    application master key
    production + + +Boolean + + + + + + <optional>
    + + + + + +
    serverURL + + +String +| + +ServerURLs + + + + + + <optional>
    + + + + + +
    URLs for services. if a string was given, it will be applied for all services.
    disableCurrentUser + + +Boolean + + + + + + <optional>
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + + + + + +

    (static) parse(text) → {AV.Object|AV.File|any}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + +
    Since:
    +
    • 3.14.0
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Similar to JSON.parse, except that AV internal types will be used if possible. +Inverse to AV.stringify +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    text + + +string + + + + the string to parse.
    + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +AV.Object +| + +AV.File +| + +any + + +
    +
    + + + + + + + + + +

    (static) parseJSON(return)

    + + + + + + +
    + + +
    Source:
    +
    + + + + + +
    Since:
    +
    • 3.0.0
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + The inverse function of AV.Object#toFullJSON. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    return + + +Object + + + + {AV.Object|AV.File|any}
    + + + + + + + + + + + + + + + + + + + + + +

    (static) request(options)

    + + + + + + +
    + + +
    Source:
    +
    + + + + + +
    Since:
    +
    • 3.0.0
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Low level REST API client. Call REST endpoints with authorization headers. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    options + + +Object + + + + +
    Properties
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDefaultDescription
    method + + +String + + + + + + + + + + + + HTTP method
    path + + +String + + + + + + + + + + + + endpoint path, e.g. `/classes/Test/55759577e4b029ae6015ac20`
    query + + +Object + + + + + + <optional>
    + + + + + +
    + + query string dict
    data + + +Object + + + + + + <optional>
    + + + + + +
    + + HTTP body
    authOptions + + +AuthOptions + + + + + + <optional>
    + + + + + +
    + +
    service + + +String + + + + + + <optional>
    + + + + + +
    + + 'api' + +
    version + + +String + + + + + + <optional>
    + + + + + +
    + + '1.1' + +
    + +
    + + + + + + + + + + + + + + + + + + + + + +

    (static) setAdapters(newAdapters)

    + + + + + + +
    + + +
    Source:
    +
    + + + + + +
    Since:
    +
    • 4.4.0
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Specify Adapters +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    newAdapters + + +Adapters + + + + See @leancloud/adapter-types for detailed definitions.
    + + + + + + + + + + + + + + + + + + + + + +

    (static) setProduction(production)

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Call this method to set production environment variable. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    production + + +Boolean + + + + True is production environment,and + it's true by default.
    + + + + + + + + + + + + + + + + + + + + + +

    (static) setRequestTimeout(ms)

    + + + + + + +
    + + +
    Source:
    +
    + + + + + +
    Since:
    +
    • 3.6.0
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Set a deadline for requests to complete. +Note that file upload requests are not affected. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    ms + + +number + + + +
    + + + + + + + + + + + + + + + + + + + + + +

    (static) setServerURL(urls)

    + + + + + + +
    + + +
    Source:
    +
    + + + + + +
    Since:
    +
    • 4.3.0
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Set server URLs for services. +
    + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    urls + + +String +| + +ServerURLs + + + + URLs for services. if a string was given, it will be applied for all services. +You can also set them when initializing SDK with `options.serverURL`
    + + + + + + + + + + + + + + + + + + + + + +

    (static) stringify() → {string}

    + + + + + + +
    + + +
    Source:
    +
    + + + + + +
    Since:
    +
    • 3.14.0
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + Serialize a target containing AV.Object, similar to JSON.stringify. +Inverse to AV.parse +
    + + + + + + + + + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +string + + +
    +
    + + + + + + + + + + +
    + +
    + + + + +
    + +
    + +
    + Documentation generated by JSDoc 3.6.3 on Mon Sep 25 2023 11:05:14 GMT+0000 (Coordinated Universal Time) using the docdash theme. +
    + + + + + \ No newline at end of file diff --git a/docs/Statistic.html b/docs/Statistic.html new file mode 100644 index 000000000..711959f25 --- /dev/null +++ b/docs/Statistic.html @@ -0,0 +1,380 @@ + + + + + Statistic - Documentation + + + + + + + + + + + + + + + + +
    + +

    Statistic

    + + + + + + + +
    + +
    + +

    + Statistic +

    + + +
    + +
    +
    + + + + + +

    new Statistic()

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + +

    Members

    + + + +

    name :string

    + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + +
    Type:
    +
      +
    • + +string + + +
    • +
    + + + + + + + + +

    value :number

    + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + +
    Type:
    +
      +
    • + +number + + +
    • +
    + + + + + + + + +

    (nullable) version :number

    + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + +
    Type:
    +
      +
    • + +number + + +
    • +
    + + + + + + + + + + + + + + +
    + +
    + + + + +
    + +
    + +
    + Documentation generated by JSDoc 3.6.3 on Mon Sep 25 2023 11:05:14 GMT+0000 (Coordinated Universal Time) using the docdash theme. +
    + + + + + \ No newline at end of file diff --git a/docs/acl.js.html b/docs/acl.js.html new file mode 100644 index 000000000..a9dd8e7c1 --- /dev/null +++ b/docs/acl.js.html @@ -0,0 +1,321 @@ + + + + + acl.js - Documentation + + + + + + + + + + + + + + + + +
    + +

    acl.js

    + + + + + + + +
    +
    +
    var _ = require('underscore');
    +
    +module.exports = function(AV) {
    +  var PUBLIC_KEY = '*';
    +
    +  /**
    +   * Creates a new ACL.
    +   * If no argument is given, the ACL has no permissions for anyone.
    +   * If the argument is a AV.User, the ACL will have read and write
    +   *   permission for only that user.
    +   * If the argument is any other JSON object, that object will be interpretted
    +   *   as a serialized ACL created with toJSON().
    +   * @see AV.Object#setACL
    +   * @class
    +   *
    +   * <p>An ACL, or Access Control List can be added to any
    +   * <code>AV.Object</code> to restrict access to only a subset of users
    +   * of your application.</p>
    +   */
    +  AV.ACL = function(arg1) {
    +    var self = this;
    +    self.permissionsById = {};
    +    if (_.isObject(arg1)) {
    +      if (arg1 instanceof AV.User) {
    +        self.setReadAccess(arg1, true);
    +        self.setWriteAccess(arg1, true);
    +      } else {
    +        if (_.isFunction(arg1)) {
    +          throw new Error(
    +            'AV.ACL() called with a function.  Did you forget ()?'
    +          );
    +        }
    +        AV._objectEach(arg1, function(accessList, userId) {
    +          if (!_.isString(userId)) {
    +            throw new Error('Tried to create an ACL with an invalid userId.');
    +          }
    +          self.permissionsById[userId] = {};
    +          AV._objectEach(accessList, function(allowed, permission) {
    +            if (permission !== 'read' && permission !== 'write') {
    +              throw new Error(
    +                'Tried to create an ACL with an invalid permission type.'
    +              );
    +            }
    +            if (!_.isBoolean(allowed)) {
    +              throw new Error(
    +                'Tried to create an ACL with an invalid permission value.'
    +              );
    +            }
    +            self.permissionsById[userId][permission] = allowed;
    +          });
    +        });
    +      }
    +    }
    +  };
    +
    +  /**
    +   * Returns a JSON-encoded version of the ACL.
    +   * @return {Object}
    +   */
    +  AV.ACL.prototype.toJSON = function() {
    +    return _.clone(this.permissionsById);
    +  };
    +
    +  AV.ACL.prototype._setAccess = function(accessType, userId, allowed) {
    +    if (userId instanceof AV.User) {
    +      userId = userId.id;
    +    } else if (userId instanceof AV.Role) {
    +      userId = 'role:' + userId.getName();
    +    }
    +    if (!_.isString(userId)) {
    +      throw new Error('userId must be a string.');
    +    }
    +    if (!_.isBoolean(allowed)) {
    +      throw new Error('allowed must be either true or false.');
    +    }
    +    var permissions = this.permissionsById[userId];
    +    if (!permissions) {
    +      if (!allowed) {
    +        // The user already doesn't have this permission, so no action needed.
    +        return;
    +      } else {
    +        permissions = {};
    +        this.permissionsById[userId] = permissions;
    +      }
    +    }
    +
    +    if (allowed) {
    +      this.permissionsById[userId][accessType] = true;
    +    } else {
    +      delete permissions[accessType];
    +      if (_.isEmpty(permissions)) {
    +        delete this.permissionsById[userId];
    +      }
    +    }
    +  };
    +
    +  AV.ACL.prototype._getAccess = function(accessType, userId) {
    +    if (userId instanceof AV.User) {
    +      userId = userId.id;
    +    } else if (userId instanceof AV.Role) {
    +      userId = 'role:' + userId.getName();
    +    }
    +    var permissions = this.permissionsById[userId];
    +    if (!permissions) {
    +      return false;
    +    }
    +    return permissions[accessType] ? true : false;
    +  };
    +
    +  /**
    +   * Set whether the given user is allowed to read this object.
    +   * @param userId An instance of AV.User or its objectId.
    +   * @param {Boolean} allowed Whether that user should have read access.
    +   */
    +  AV.ACL.prototype.setReadAccess = function(userId, allowed) {
    +    this._setAccess('read', userId, allowed);
    +  };
    +
    +  /**
    +   * Get whether the given user id is *explicitly* allowed to read this object.
    +   * Even if this returns false, the user may still be able to access it if
    +   * getPublicReadAccess returns true or a role that the user belongs to has
    +   * write access.
    +   * @param userId An instance of AV.User or its objectId, or a AV.Role.
    +   * @return {Boolean}
    +   */
    +  AV.ACL.prototype.getReadAccess = function(userId) {
    +    return this._getAccess('read', userId);
    +  };
    +
    +  /**
    +   * Set whether the given user id is allowed to write this object.
    +   * @param userId An instance of AV.User or its objectId, or a AV.Role..
    +   * @param {Boolean} allowed Whether that user should have write access.
    +   */
    +  AV.ACL.prototype.setWriteAccess = function(userId, allowed) {
    +    this._setAccess('write', userId, allowed);
    +  };
    +
    +  /**
    +   * Get whether the given user id is *explicitly* allowed to write this object.
    +   * Even if this returns false, the user may still be able to write it if
    +   * getPublicWriteAccess returns true or a role that the user belongs to has
    +   * write access.
    +   * @param userId An instance of AV.User or its objectId, or a AV.Role.
    +   * @return {Boolean}
    +   */
    +  AV.ACL.prototype.getWriteAccess = function(userId) {
    +    return this._getAccess('write', userId);
    +  };
    +
    +  /**
    +   * Set whether the public is allowed to read this object.
    +   * @param {Boolean} allowed
    +   */
    +  AV.ACL.prototype.setPublicReadAccess = function(allowed) {
    +    this.setReadAccess(PUBLIC_KEY, allowed);
    +  };
    +
    +  /**
    +   * Get whether the public is allowed to read this object.
    +   * @return {Boolean}
    +   */
    +  AV.ACL.prototype.getPublicReadAccess = function() {
    +    return this.getReadAccess(PUBLIC_KEY);
    +  };
    +
    +  /**
    +   * Set whether the public is allowed to write this object.
    +   * @param {Boolean} allowed
    +   */
    +  AV.ACL.prototype.setPublicWriteAccess = function(allowed) {
    +    this.setWriteAccess(PUBLIC_KEY, allowed);
    +  };
    +
    +  /**
    +   * Get whether the public is allowed to write this object.
    +   * @return {Boolean}
    +   */
    +  AV.ACL.prototype.getPublicWriteAccess = function() {
    +    return this.getWriteAccess(PUBLIC_KEY);
    +  };
    +
    +  /**
    +   * Get whether users belonging to the given role are allowed
    +   * to read this object. Even if this returns false, the role may
    +   * still be able to write it if a parent role has read access.
    +   *
    +   * @param role The name of the role, or a AV.Role object.
    +   * @return {Boolean} true if the role has read access. false otherwise.
    +   * @throws {String} If role is neither a AV.Role nor a String.
    +   */
    +  AV.ACL.prototype.getRoleReadAccess = function(role) {
    +    if (role instanceof AV.Role) {
    +      // Normalize to the String name
    +      role = role.getName();
    +    }
    +    if (_.isString(role)) {
    +      return this.getReadAccess('role:' + role);
    +    }
    +    throw new Error('role must be a AV.Role or a String');
    +  };
    +
    +  /**
    +   * Get whether users belonging to the given role are allowed
    +   * to write this object. Even if this returns false, the role may
    +   * still be able to write it if a parent role has write access.
    +   *
    +   * @param role The name of the role, or a AV.Role object.
    +   * @return {Boolean} true if the role has write access. false otherwise.
    +   * @throws {String} If role is neither a AV.Role nor a String.
    +   */
    +  AV.ACL.prototype.getRoleWriteAccess = function(role) {
    +    if (role instanceof AV.Role) {
    +      // Normalize to the String name
    +      role = role.getName();
    +    }
    +    if (_.isString(role)) {
    +      return this.getWriteAccess('role:' + role);
    +    }
    +    throw new Error('role must be a AV.Role or a String');
    +  };
    +
    +  /**
    +   * Set whether users belonging to the given role are allowed
    +   * to read this object.
    +   *
    +   * @param role The name of the role, or a AV.Role object.
    +   * @param {Boolean} allowed Whether the given role can read this object.
    +   * @throws {String} If role is neither a AV.Role nor a String.
    +   */
    +  AV.ACL.prototype.setRoleReadAccess = function(role, allowed) {
    +    if (role instanceof AV.Role) {
    +      // Normalize to the String name
    +      role = role.getName();
    +    }
    +    if (_.isString(role)) {
    +      this.setReadAccess('role:' + role, allowed);
    +      return;
    +    }
    +    throw new Error('role must be a AV.Role or a String');
    +  };
    +
    +  /**
    +   * Set whether users belonging to the given role are allowed
    +   * to write this object.
    +   *
    +   * @param role The name of the role, or a AV.Role object.
    +   * @param {Boolean} allowed Whether the given role can write this object.
    +   * @throws {String} If role is neither a AV.Role nor a String.
    +   */
    +  AV.ACL.prototype.setRoleWriteAccess = function(role, allowed) {
    +    if (role instanceof AV.Role) {
    +      // Normalize to the String name
    +      role = role.getName();
    +    }
    +    if (_.isString(role)) {
    +      this.setWriteAccess('role:' + role, allowed);
    +      return;
    +    }
    +    throw new Error('role must be a AV.Role or a String');
    +  };
    +};
    +
    +
    +
    + + + + +
    + +
    + +
    + Documentation generated by JSDoc 3.6.3 on Mon Sep 25 2023 11:05:14 GMT+0000 (Coordinated Universal Time) using the docdash theme. +
    + + + + + diff --git a/docs/av.js.html b/docs/av.js.html new file mode 100644 index 000000000..b68cf67a9 --- /dev/null +++ b/docs/av.js.html @@ -0,0 +1,463 @@ + + + + + av.js - Documentation + + + + + + + + + + + + + + + + +
    + +

    av.js

    + + + + + + + +
    +
    +
    const _ = require('underscore');
    +const uuid = require('uuid/v4');
    +const debug = require('debug');
    +const { inherits, parseDate } = require('./utils');
    +const version = require('./version');
    +const { setAdapters, adapterManager } = require('./adapter');
    +
    +const AV = global.AV || {};
    +
    +// All internal configuration items
    +AV._config = {
    +  serverURLs: {},
    +  useMasterKey: false,
    +  production: null,
    +  realtime: null,
    +  requestTimeout: null,
    +};
    +
    +const initialUserAgent = `LeanCloud-JS-SDK/${version}`;
    +
    +// configs shared by all AV instances
    +AV._sharedConfig = {
    +  userAgent: initialUserAgent,
    +  liveQueryRealtime: null,
    +};
    +
    +adapterManager.on('platformInfo', platformInfo => {
    +  let ua = initialUserAgent;
    +  if (platformInfo) {
    +    if (platformInfo.userAgent) {
    +      ua = platformInfo.userAgent;
    +    } else {
    +      let comments = platformInfo.name;
    +      if (platformInfo.version) {
    +        comments += `/${platformInfo.version}`;
    +      }
    +      if (platformInfo.extra) {
    +        comments += `; ${platformInfo.extra}`;
    +      }
    +      ua += ` (${comments})`;
    +    }
    +  }
    +  AV._sharedConfig.userAgent = ua;
    +});
    +
    +/**
    + * Contains all AV API classes and functions.
    + * @namespace AV
    + */
    +
    +/**
    + * Returns prefix for localStorage keys used by this instance of AV.
    + * @param {String} path The relative suffix to append to it.
    + *     null or undefined is treated as the empty string.
    + * @return {String} The full key name.
    + * @private
    + */
    +AV._getAVPath = function(path) {
    +  if (!AV.applicationId) {
    +    throw new Error('You need to call AV.initialize before using AV.');
    +  }
    +  if (!path) {
    +    path = '';
    +  }
    +  if (!_.isString(path)) {
    +    throw new Error("Tried to get a localStorage path that wasn't a String.");
    +  }
    +  if (path[0] === '/') {
    +    path = path.substring(1);
    +  }
    +  return 'AV/' + AV.applicationId + '/' + path;
    +};
    +
    +/**
    + * Returns the unique string for this app on this machine.
    + * Gets reset when localStorage is cleared.
    + * @private
    + */
    +AV._installationId = null;
    +AV._getInstallationId = () => {
    +  // See if it's cached in RAM.
    +  if (AV._installationId) {
    +    return Promise.resolve(AV._installationId);
    +  }
    +
    +  // Try to get it from localStorage.
    +  const path = AV._getAVPath('installationId');
    +  return AV.localStorage.getItemAsync(path).then(_installationId => {
    +    AV._installationId = _installationId;
    +    if (!AV._installationId) {
    +      // It wasn't in localStorage, so create a new one.
    +      AV._installationId = _installationId = uuid();
    +      return AV.localStorage
    +        .setItemAsync(path, _installationId)
    +        .then(() => _installationId);
    +    }
    +    return _installationId;
    +  });
    +};
    +
    +AV._subscriptionId = null;
    +AV._refreshSubscriptionId = (path = AV._getAVPath('subscriptionId')) => {
    +  const subscriptionId = (AV._subscriptionId = uuid());
    +  return AV.localStorage
    +    .setItemAsync(path, subscriptionId)
    +    .then(() => subscriptionId);
    +};
    +AV._getSubscriptionId = () => {
    +  // See if it's cached in RAM.
    +  if (AV._subscriptionId) {
    +    return Promise.resolve(AV._subscriptionId);
    +  }
    +
    +  // Try to get it from localStorage.
    +  const path = AV._getAVPath('subscriptionId');
    +  return AV.localStorage.getItemAsync(path).then(_subscriptionId => {
    +    AV._subscriptionId = _subscriptionId;
    +    if (!AV._subscriptionId) {
    +      // It wasn't in localStorage, so create a new one.
    +      _subscriptionId = AV._refreshSubscriptionId(path);
    +    }
    +    return _subscriptionId;
    +  });
    +};
    +
    +AV._parseDate = parseDate;
    +
    +// A self-propagating extend function.
    +AV._extend = function(protoProps, classProps) {
    +  var child = inherits(this, protoProps, classProps);
    +  child.extend = this.extend;
    +  return child;
    +};
    +
    +/**
    + * Converts a value in a AV Object into the appropriate representation.
    + * This is the JS equivalent of Java's AV.maybeReferenceAndEncode(Object)
    + * if seenObjects is falsey. Otherwise any AV.Objects not in
    + * seenObjects will be fully embedded rather than encoded
    + * as a pointer.  This array will be used to prevent going into an infinite
    + * loop because we have circular references.  If <seenObjects>
    + * is set, then none of the AV Objects that are serialized can be dirty.
    + * @private
    + */
    +AV._encode = function(value, seenObjects, disallowObjects, full = true) {
    +  if (value instanceof AV.Object) {
    +    if (disallowObjects) {
    +      throw new Error('AV.Objects not allowed here');
    +    }
    +    if (!seenObjects || _.include(seenObjects, value) || !value._hasData) {
    +      return value._toPointer();
    +    }
    +    return value._toFullJSON(seenObjects.concat(value), full);
    +  }
    +  if (value instanceof AV.ACL) {
    +    return value.toJSON();
    +  }
    +  if (_.isDate(value)) {
    +    return full ? { __type: 'Date', iso: value.toJSON() } : value.toJSON();
    +  }
    +  if (value instanceof AV.GeoPoint) {
    +    return value.toJSON();
    +  }
    +  if (_.isArray(value)) {
    +    return _.map(value, function(x) {
    +      return AV._encode(x, seenObjects, disallowObjects, full);
    +    });
    +  }
    +  if (_.isRegExp(value)) {
    +    return value.source;
    +  }
    +  if (value instanceof AV.Relation) {
    +    return value.toJSON();
    +  }
    +  if (value instanceof AV.Op) {
    +    return value.toJSON();
    +  }
    +  if (value instanceof AV.File) {
    +    if (!value.url() && !value.id) {
    +      throw new Error('Tried to save an object containing an unsaved file.');
    +    }
    +    return value._toFullJSON(seenObjects, full);
    +  }
    +  if (_.isObject(value)) {
    +    return _.mapObject(value, (v, k) =>
    +      AV._encode(v, seenObjects, disallowObjects, full)
    +    );
    +  }
    +  return value;
    +};
    +
    +/**
    + * The inverse function of AV._encode.
    + * @private
    + */
    +AV._decode = function(value, key) {
    +  if (!_.isObject(value) || _.isDate(value)) {
    +    return value;
    +  }
    +  if (_.isArray(value)) {
    +    return _.map(value, v => AV._decode(v));
    +  }
    +  if (value instanceof AV.Object) {
    +    return value;
    +  }
    +  if (value instanceof AV.File) {
    +    return value;
    +  }
    +  if (value instanceof AV.Op) {
    +    return value;
    +  }
    +  if (value instanceof AV.GeoPoint) {
    +    return value;
    +  }
    +  if (value instanceof AV.ACL) {
    +    return value;
    +  }
    +  if (key === 'ACL') {
    +    return new AV.ACL(value);
    +  }
    +  if (value.__op) {
    +    return AV.Op._decode(value);
    +  }
    +  var className;
    +  if (value.__type === 'Pointer') {
    +    className = value.className;
    +    var pointer = AV.Object._create(className);
    +    if (Object.keys(value).length > 3) {
    +      const v = _.clone(value);
    +      delete v.__type;
    +      delete v.className;
    +      pointer._finishFetch(v, true);
    +    } else {
    +      pointer._finishFetch({ objectId: value.objectId }, false);
    +    }
    +    return pointer;
    +  }
    +  if (value.__type === 'Object') {
    +    // It's an Object included in a query result.
    +    className = value.className;
    +    const v = _.clone(value);
    +    delete v.__type;
    +    delete v.className;
    +    var object = AV.Object._create(className);
    +    object._finishFetch(v, true);
    +    return object;
    +  }
    +  if (value.__type === 'Date') {
    +    return AV._parseDate(value.iso);
    +  }
    +  if (value.__type === 'GeoPoint') {
    +    return new AV.GeoPoint({
    +      latitude: value.latitude,
    +      longitude: value.longitude,
    +    });
    +  }
    +  if (value.__type === 'Relation') {
    +    if (!key) throw new Error('key missing decoding a Relation');
    +    var relation = new AV.Relation(null, key);
    +    relation.targetClassName = value.className;
    +    return relation;
    +  }
    +  if (value.__type === 'File') {
    +    var file = new AV.File(value.name);
    +    const v = _.clone(value);
    +    delete v.__type;
    +    file._finishFetch(v);
    +    return file;
    +  }
    +  return _.mapObject(value, AV._decode);
    +};
    +
    +/**
    + * The inverse function of {@link AV.Object#toFullJSON}.
    + * @since 3.0.0
    + * @method
    + * @param {Object}
    + * return {AV.Object|AV.File|any}
    + */
    +AV.parseJSON = AV._decode;
    +
    +/**
    + * Similar to JSON.parse, except that AV internal types will be used if possible.
    + * Inverse to {@link AV.stringify}
    + * @since 3.14.0
    + * @param {string} text the string to parse.
    + * @return {AV.Object|AV.File|any}
    + */
    +AV.parse = text => AV.parseJSON(JSON.parse(text));
    +/**
    + * Serialize a target containing AV.Object, similar to JSON.stringify.
    + * Inverse to {@link AV.parse}
    + * @since 3.14.0
    + * @return {string}
    + */
    +AV.stringify = target => JSON.stringify(AV._encode(target, [], false, true));
    +
    +AV._encodeObjectOrArray = function(value) {
    +  var encodeAVObject = function(object) {
    +    if (object && object._toFullJSON) {
    +      object = object._toFullJSON([]);
    +    }
    +
    +    return _.mapObject(object, function(value) {
    +      return AV._encode(value, []);
    +    });
    +  };
    +
    +  if (_.isArray(value)) {
    +    return value.map(function(object) {
    +      return encodeAVObject(object);
    +    });
    +  } else {
    +    return encodeAVObject(value);
    +  }
    +};
    +
    +AV._arrayEach = _.each;
    +
    +/**
    + * Does a deep traversal of every item in object, calling func on every one.
    + * @param {Object} object The object or array to traverse deeply.
    + * @param {Function} func The function to call for every item. It will
    + *     be passed the item as an argument. If it returns a truthy value, that
    + *     value will replace the item in its parent container.
    + * @returns {} the result of calling func on the top-level object itself.
    + * @private
    + */
    +AV._traverse = function(object, func, seen) {
    +  if (object instanceof AV.Object) {
    +    seen = seen || [];
    +    if (_.indexOf(seen, object) >= 0) {
    +      // We've already visited this object in this call.
    +      return;
    +    }
    +    seen.push(object);
    +    AV._traverse(object.attributes, func, seen);
    +    return func(object);
    +  }
    +  if (object instanceof AV.Relation || object instanceof AV.File) {
    +    // Nothing needs to be done, but we don't want to recurse into the
    +    // object's parent infinitely, so we catch this case.
    +    return func(object);
    +  }
    +  if (_.isArray(object)) {
    +    _.each(object, function(child, index) {
    +      var newChild = AV._traverse(child, func, seen);
    +      if (newChild) {
    +        object[index] = newChild;
    +      }
    +    });
    +    return func(object);
    +  }
    +  if (_.isObject(object)) {
    +    AV._each(object, function(child, key) {
    +      var newChild = AV._traverse(child, func, seen);
    +      if (newChild) {
    +        object[key] = newChild;
    +      }
    +    });
    +    return func(object);
    +  }
    +  return func(object);
    +};
    +
    +/**
    + * This is like _.each, except:
    + * * it doesn't work for so-called array-like objects,
    + * * it does work for dictionaries with a "length" attribute.
    + * @private
    + */
    +AV._objectEach = AV._each = function(obj, callback) {
    +  if (_.isObject(obj)) {
    +    _.each(_.keys(obj), function(key) {
    +      callback(obj[key], key);
    +    });
    +  } else {
    +    _.each(obj, callback);
    +  }
    +};
    +
    +/**
    + * @namespace
    + * @since 3.14.0
    + */
    +AV.debug = {
    +  /**
    +   * Enable debug
    +   */
    +  enable: (namespaces = 'leancloud*') => debug.enable(namespaces),
    +  /**
    +   * Disable debug
    +   */
    +  disable: debug.disable,
    +};
    +
    +/**
    + * Specify Adapters
    + * @since 4.4.0
    + * @function
    + * @param {Adapters} newAdapters See {@link https://url.leanapp.cn/adapter-type-definitions @leancloud/adapter-types} for detailed definitions.
    + */
    +AV.setAdapters = setAdapters;
    +
    +module.exports = AV;
    +
    +
    +
    + + + + +
    + +
    + +
    + Documentation generated by JSDoc 3.6.3 on Mon Sep 25 2023 11:05:14 GMT+0000 (Coordinated Universal Time) using the docdash theme. +
    + + + + + diff --git a/docs/captcha.js.html b/docs/captcha.js.html new file mode 100644 index 000000000..3f84ca932 --- /dev/null +++ b/docs/captcha.js.html @@ -0,0 +1,207 @@ + + + + + captcha.js - Documentation + + + + + + + + + + + + + + + + +
    + +

    captcha.js

    + + + + + + + +
    +
    +
    const _ = require('underscore');
    +const { tap } = require('./utils');
    +
    +module.exports = AV => {
    +  /**
    +   * @class
    +   * @example
    +   * AV.Captcha.request().then(captcha => {
    +   *   captcha.bind({
    +   *     textInput: 'code', // the id for textInput
    +   *     image: 'captcha',
    +   *     verifyButton: 'verify',
    +   *   }, {
    +   *     success: (validateCode) => {}, // next step
    +   *     error: (error) => {}, // present error.message to user
    +   *   });
    +   * });
    +   */
    +  AV.Captcha = function Captcha(options, authOptions) {
    +    this._options = options;
    +    this._authOptions = authOptions;
    +    /**
    +     * The image url of the captcha
    +     * @type string
    +     */
    +    this.url = undefined;
    +    /**
    +     * The captchaToken of the captcha.
    +     * @type string
    +     */
    +    this.captchaToken = undefined;
    +    /**
    +     * The validateToken of the captcha.
    +     * @type string
    +     */
    +    this.validateToken = undefined;
    +  };
    +
    +  /**
    +   * Refresh the captcha
    +   * @return {Promise.<string>} a new capcha url
    +   */
    +  AV.Captcha.prototype.refresh = function refresh() {
    +    return AV.Cloud._requestCaptcha(this._options, this._authOptions).then(
    +      ({ captchaToken, url }) => {
    +        _.extend(this, { captchaToken, url });
    +        return url;
    +      }
    +    );
    +  };
    +
    +  /**
    +   * Verify the captcha
    +   * @param {String} code The code from user input
    +   * @return {Promise.<string>} validateToken if the code is valid
    +   */
    +  AV.Captcha.prototype.verify = function verify(code) {
    +    return AV.Cloud.verifyCaptcha(code, this.captchaToken).then(
    +      tap(validateToken => (this.validateToken = validateToken))
    +    );
    +  };
    +
    +  if (process.env.PLATFORM === 'Browser') {
    +    /**
    +     * Bind the captcha to HTMLElements. <b>ONLY AVAILABLE in browsers</b>.
    +     * @param [elements]
    +     * @param {String|HTMLInputElement} [elements.textInput] An input element typed text, or the id for the element.
    +     * @param {String|HTMLImageElement} [elements.image] An image element, or the id for the element.
    +     * @param {String|HTMLElement} [elements.verifyButton] A button element, or the id for the element.
    +     * @param [callbacks]
    +     * @param {Function} [callbacks.success] Success callback will be called if the code is verified. The param `validateCode` can be used for further SMS request.
    +     * @param {Function} [callbacks.error] Error callback will be called if something goes wrong, detailed in param `error.message`.
    +     */
    +    AV.Captcha.prototype.bind = function bind(
    +      { textInput, image, verifyButton },
    +      { success, error }
    +    ) {
    +      if (typeof textInput === 'string') {
    +        textInput = document.getElementById(textInput);
    +        if (!textInput)
    +          throw new Error(`textInput with id ${textInput} not found`);
    +      }
    +      if (typeof image === 'string') {
    +        image = document.getElementById(image);
    +        if (!image) throw new Error(`image with id ${image} not found`);
    +      }
    +      if (typeof verifyButton === 'string') {
    +        verifyButton = document.getElementById(verifyButton);
    +        if (!verifyButton)
    +          throw new Error(`verifyButton with id ${verifyButton} not found`);
    +      }
    +
    +      this.__refresh = () =>
    +        this.refresh()
    +          .then(url => {
    +            image.src = url;
    +            if (textInput) {
    +              textInput.value = '';
    +              textInput.focus();
    +            }
    +          })
    +          .catch(err => console.warn(`refresh captcha fail: ${err.message}`));
    +      if (image) {
    +        this.__image = image;
    +        image.src = this.url;
    +        image.addEventListener('click', this.__refresh);
    +      }
    +
    +      this.__verify = () => {
    +        const code = textInput.value;
    +        this.verify(code)
    +          .catch(err => {
    +            this.__refresh();
    +            throw err;
    +          })
    +          .then(success, error)
    +          .catch(err => console.warn(`verify captcha fail: ${err.message}`));
    +      };
    +      if (textInput && verifyButton) {
    +        this.__verifyButton = verifyButton;
    +        verifyButton.addEventListener('click', this.__verify);
    +      }
    +    };
    +
    +    /**
    +     * unbind the captcha from HTMLElements. <b>ONLY AVAILABLE in browsers</b>.
    +     */
    +    AV.Captcha.prototype.unbind = function unbind() {
    +      if (this.__image)
    +        this.__image.removeEventListener('click', this.__refresh);
    +      if (this.__verifyButton)
    +        this.__verifyButton.removeEventListener('click', this.__verify);
    +    };
    +  }
    +
    +  /**
    +   * Request a captcha
    +   * @param [options]
    +   * @param {Number} [options.width] width(px) of the captcha, ranged 60-200
    +   * @param {Number} [options.height] height(px) of the captcha, ranged 30-100
    +   * @param {Number} [options.size=4] length of the captcha, ranged 3-6. MasterKey required.
    +   * @param {Number} [options.ttl=60] time to live(s), ranged 10-180. MasterKey required.
    +   * @return {Promise.<AV.Captcha>}
    +   */
    +  AV.Captcha.request = (options, authOptions) => {
    +    const captcha = new AV.Captcha(options, authOptions);
    +    return captcha.refresh().then(() => captcha);
    +  };
    +};
    +
    +
    +
    + + + + +
    + +
    + +
    + Documentation generated by JSDoc 3.6.3 on Mon Sep 25 2023 11:05:14 GMT+0000 (Coordinated Universal Time) using the docdash theme. +
    + + + + + diff --git a/docs/cloudfunction.js.html b/docs/cloudfunction.js.html new file mode 100644 index 000000000..80d975bc7 --- /dev/null +++ b/docs/cloudfunction.js.html @@ -0,0 +1,214 @@ + + + + + cloudfunction.js - Documentation + + + + + + + + + + + + + + + + +
    + +

    cloudfunction.js

    + + + + + + + +
    +
    +
    const _ = require('underscore');
    +const { _request, request } = require('./request');
    +
    +module.exports = function(AV) {
    +  /**
    +   * Contains functions for calling and declaring
    +   * <p><strong><em>
    +   *   Some functions are only available from Cloud Code.
    +   * </em></strong></p>
    +   *
    +   * @namespace
    +   * @borrows AV.Captcha.request as requestCaptcha
    +   */
    +  AV.Cloud = AV.Cloud || {};
    +
    +  _.extend(
    +    AV.Cloud,
    +    /** @lends AV.Cloud */ {
    +      /**
    +       * Makes a call to a cloud function.
    +       * @param {String} name The function name.
    +       * @param {Object} [data] The parameters to send to the cloud function.
    +       * @param {AuthOptions} [options]
    +       * @return {Promise} A promise that will be resolved with the result
    +       * of the function.
    +       */
    +      run(name, data, options) {
    +        return request({
    +          service: 'engine',
    +          method: 'POST',
    +          path: `/functions/${name}`,
    +          data: AV._encode(data, null, true),
    +          authOptions: options,
    +        }).then(resp => {
    +          return AV._decode(resp).result;
    +        });
    +      },
    +
    +      /**
    +       * Makes a call to a cloud function, you can send {AV.Object} as param or a field of param; the response
    +       * from server will also be parsed as an {AV.Object}, array of {AV.Object}, or object includes {AV.Object}
    +       * @param {String} name The function name.
    +       * @param {Object} [data] The parameters to send to the cloud function.
    +       * @param {AuthOptions} [options]
    +       * @return {Promise} A promise that will be resolved with the result of the function.
    +       */
    +      rpc(name, data, options) {
    +        if (_.isArray(data)) {
    +          return Promise.reject(
    +            new Error(
    +              "Can't pass Array as the param of rpc function in JavaScript SDK."
    +            )
    +          );
    +        }
    +
    +        return request({
    +          service: 'engine',
    +          method: 'POST',
    +          path: `/call/${name}`,
    +          data: AV._encodeObjectOrArray(data),
    +          authOptions: options,
    +        }).then(resp => {
    +          return AV._decode(resp).result;
    +        });
    +      },
    +
    +      /**
    +       * Make a call to request server date time.
    +       * @return {Promise.<Date>} A promise that will be resolved with the result
    +       * of the function.
    +       * @since 0.5.9
    +       */
    +      getServerDate() {
    +        return _request('date', null, null, 'GET').then(function(resp) {
    +          return AV._decode(resp);
    +        });
    +      },
    +
    +      /**
    +       * Makes a call to request an sms code for operation verification.
    +       * @param {String|Object} data The mobile phone number string or a JSON
    +       *    object that contains mobilePhoneNumber,template,sign,op,ttl,name etc.
    +       * @param {String} data.mobilePhoneNumber
    +       * @param {String} [data.template] sms template name
    +       * @param {String} [data.sign] sms signature name
    +       * @param {String} [data.smsType] sending code by `sms` (default) or `voice` call
    +       * @param {SMSAuthOptions} [options]
    +       * @return {Promise} A promise that will be resolved if the request succeed
    +       */
    +      requestSmsCode(data, options = {}) {
    +        if (_.isString(data)) {
    +          data = { mobilePhoneNumber: data };
    +        }
    +        if (!data.mobilePhoneNumber) {
    +          throw new Error('Missing mobilePhoneNumber.');
    +        }
    +        if (options.validateToken) {
    +          data = _.extend({}, data, {
    +            validate_token: options.validateToken,
    +          });
    +        }
    +        return _request('requestSmsCode', null, null, 'POST', data, options);
    +      },
    +
    +      /**
    +       * Makes a call to verify sms code that sent by AV.Cloud.requestSmsCode
    +       * @param {String} code The sms code sent by AV.Cloud.requestSmsCode
    +       * @param {phone} phone The mobile phoner number.
    +       * @return {Promise} A promise that will be resolved with the result
    +       * of the function.
    +       */
    +      verifySmsCode(code, phone) {
    +        if (!code) throw new Error('Missing sms code.');
    +        var params = {};
    +        if (_.isString(phone)) {
    +          params['mobilePhoneNumber'] = phone;
    +        }
    +
    +        return _request('verifySmsCode', code, null, 'POST', params);
    +      },
    +
    +      _requestCaptcha(options, authOptions) {
    +        return _request(
    +          'requestCaptcha',
    +          null,
    +          null,
    +          'GET',
    +          options,
    +          authOptions
    +        ).then(({ captcha_url: url, captcha_token: captchaToken }) => ({
    +          captchaToken,
    +          url,
    +        }));
    +      },
    +
    +      /**
    +       * Request a captcha.
    +       */
    +      requestCaptcha: AV.Captcha.request,
    +
    +      /**
    +       * Verify captcha code. This is the low-level API for captcha.
    +       * Checkout {@link AV.Captcha} for high abstract APIs.
    +       * @param {String} code the code from user input
    +       * @param {String} captchaToken captchaToken returned by {@link AV.Cloud.requestCaptcha}
    +       * @return {Promise.<String>} validateToken if the code is valid
    +       */
    +      verifyCaptcha(code, captchaToken) {
    +        return _request('verifyCaptcha', null, null, 'POST', {
    +          captcha_code: code,
    +          captcha_token: captchaToken,
    +        }).then(({ validate_token: validateToken }) => validateToken);
    +      },
    +    }
    +  );
    +};
    +
    +
    +
    + + + + +
    + +
    + +
    + Documentation generated by JSDoc 3.6.3 on Mon Sep 25 2023 11:05:14 GMT+0000 (Coordinated Universal Time) using the docdash theme. +
    + + + + + diff --git a/docs/conversation.js.html b/docs/conversation.js.html new file mode 100644 index 000000000..608cade0d --- /dev/null +++ b/docs/conversation.js.html @@ -0,0 +1,236 @@ + + + + + conversation.js - Documentation + + + + + + + + + + + + + + + + +
    + +

    conversation.js

    + + + + + + + +
    +
    +
    const _ = require('underscore');
    +const { _request } = require('./request');
    +const AV = require('./av');
    +
    +const serializeMessage = message => {
    +  if (typeof message === 'string') {
    +    return message;
    +  }
    +  if (typeof message.getPayload === 'function') {
    +    return JSON.stringify(message.getPayload());
    +  }
    +  return JSON.stringify(message);
    +};
    +
    +/**
    + * <p>An AV.Conversation is a local representation of a LeanCloud realtime's
    + * conversation. This class is a subclass of AV.Object, and retains the
    + * same functionality of an AV.Object, but also extends it with various
    + * conversation specific methods, like get members, creators of this conversation.
    + * </p>
    + *
    + * @class AV.Conversation
    + * @param {String} name The name of the Role to create.
    + * @param {Object} [options]
    + * @param {Boolean} [options.isSystem] Set this conversation as system conversation.
    + * @param {Boolean} [options.isTransient] Set this conversation as transient conversation.
    + */
    +module.exports = AV.Object.extend(
    +  '_Conversation',
    +  /** @lends AV.Conversation.prototype */ {
    +    constructor(name, options = {}) {
    +      AV.Object.prototype.constructor.call(this, null, null);
    +      this.set('name', name);
    +      if (options.isSystem !== undefined) {
    +        this.set('sys', options.isSystem ? true : false);
    +      }
    +      if (options.isTransient !== undefined) {
    +        this.set('tr', options.isTransient ? true : false);
    +      }
    +    },
    +    /**
    +     * Get current conversation's creator.
    +     *
    +     * @return {String}
    +     */
    +    getCreator() {
    +      return this.get('c');
    +    },
    +
    +    /**
    +     * Get the last message's time.
    +     *
    +     * @return {Date}
    +     */
    +    getLastMessageAt() {
    +      return this.get('lm');
    +    },
    +
    +    /**
    +     * Get this conversation's members
    +     *
    +     * @return {String[]}
    +     */
    +    getMembers() {
    +      return this.get('m');
    +    },
    +
    +    /**
    +     * Add a member to this conversation
    +     *
    +     * @param {String} member
    +     */
    +    addMember(member) {
    +      return this.add('m', member);
    +    },
    +
    +    /**
    +     * Get this conversation's members who set this conversation as muted.
    +     *
    +     * @return {String[]}
    +     */
    +    getMutedMembers() {
    +      return this.get('mu');
    +    },
    +
    +    /**
    +     * Get this conversation's name field.
    +     *
    +     * @return String
    +     */
    +    getName() {
    +      return this.get('name');
    +    },
    +
    +    /**
    +     * Returns true if this conversation is transient conversation.
    +     *
    +     * @return {Boolean}
    +     */
    +    isTransient() {
    +      return this.get('tr');
    +    },
    +
    +    /**
    +     * Returns true if this conversation is system conversation.
    +     *
    +     * @return {Boolean}
    +     */
    +    isSystem() {
    +      return this.get('sys');
    +    },
    +
    +    /**
    +     * Send realtime message to this conversation, using HTTP request.
    +     *
    +     * @param {String} fromClient Sender's client id.
    +     * @param {String|Object} message The message which will send to conversation.
    +     *     It could be a raw string, or an object with a `toJSON` method, like a
    +     *     realtime SDK's Message object. See more: {@link https://leancloud.cn/docs/realtime_guide-js.html#消息}
    +     * @param {Object} [options]
    +     * @param {Boolean} [options.transient] Whether send this message as transient message or not.
    +     * @param {String[]} [options.toClients] Ids of clients to send to. This option can be used only in system conversation.
    +     * @param {Object} [options.pushData] Push data to this message. See more: {@link https://url.leanapp.cn/pushData 推送消息内容}
    +     * @param {AuthOptions} [authOptions]
    +     * @return {Promise}
    +     */
    +    send(fromClient, message, options = {}, authOptions = {}) {
    +      const data = {
    +        from_peer: fromClient,
    +        conv_id: this.id,
    +        transient: false,
    +        message: serializeMessage(message),
    +      };
    +      if (options.toClients !== undefined) {
    +        data.to_peers = options.toClients;
    +      }
    +      if (options.transient !== undefined) {
    +        data.transient = options.transient ? true : false;
    +      }
    +      if (options.pushData !== undefined) {
    +        data.push_data = options.pushData;
    +      }
    +      return _request('rtm', 'messages', null, 'POST', data, authOptions);
    +    },
    +
    +    /**
    +     * Send realtime broadcast message to all clients, via this conversation, using HTTP request.
    +     *
    +     * @param {String} fromClient Sender's client id.
    +     * @param {String|Object} message The message which will send to conversation.
    +     *     It could be a raw string, or an object with a `toJSON` method, like a
    +     *     realtime SDK's Message object. See more: {@link https://leancloud.cn/docs/realtime_guide-js.html#消息}.
    +     * @param {Object} [options]
    +     * @param {Object} [options.pushData] Push data to this message. See more: {@link https://url.leanapp.cn/pushData 推送消息内容}.
    +     * @param {Object} [options.validTill] The message will valid till this time.
    +     * @param {AuthOptions} [authOptions]
    +     * @return {Promise}
    +     */
    +    broadcast(fromClient, message, options = {}, authOptions = {}) {
    +      const data = {
    +        from_peer: fromClient,
    +        conv_id: this.id,
    +        message: serializeMessage(message),
    +      };
    +      if (options.pushData !== undefined) {
    +        data.push = options.pushData;
    +      }
    +      if (options.validTill !== undefined) {
    +        let ts = options.validTill;
    +        if (_.isDate(ts)) {
    +          ts = ts.getTime();
    +        }
    +        options.valid_till = ts;
    +      }
    +      return _request('rtm', 'broadcast', null, 'POST', data, authOptions);
    +    },
    +  }
    +);
    +
    +
    +
    + + + + +
    + +
    + +
    + Documentation generated by JSDoc 3.6.3 on Mon Sep 25 2023 11:05:14 GMT+0000 (Coordinated Universal Time) using the docdash theme. +
    + + + + + diff --git a/docs/error.js.html b/docs/error.js.html new file mode 100644 index 000000000..0384ff207 --- /dev/null +++ b/docs/error.js.html @@ -0,0 +1,415 @@ + + + + + error.js - Documentation + + + + + + + + + + + + + + + + +
    + +

    error.js

    + + + + + + + +
    +
    +
    const _ = require('underscore');
    +
    +/**
    + * @class AV.Error
    + */
    +
    +function AVError(code, message) {
    +  if (new.target) {
    +    const error = new Error(message);
    +    Object.setPrototypeOf(error, Object.getPrototypeOf(this));
    +    error.code = code;
    +    return error;
    +  }
    +  return new AVError(code, message);
    +}
    +
    +AVError.prototype = Object.create(Error.prototype, {
    +  constructor: {
    +    value: Error,
    +    enumerable: false,
    +    writable: true,
    +    configurable: true,
    +  },
    +});
    +
    +Object.setPrototypeOf(AVError, Error);
    +
    +_.extend(
    +  AVError,
    +  /** @lends AV.Error */ {
    +    /**
    +     * Error code indicating some error other than those enumerated here.
    +     * @constant
    +     */
    +    OTHER_CAUSE: -1,
    +
    +    /**
    +     * Error code indicating that something has gone wrong with the server.
    +     * If you get this error code, it is AV's fault.
    +     * @constant
    +     */
    +    INTERNAL_SERVER_ERROR: 1,
    +
    +    /**
    +     * Error code indicating the connection to the AV servers failed.
    +     * @constant
    +     */
    +    CONNECTION_FAILED: 100,
    +
    +    /**
    +     * Error code indicating the specified object doesn't exist.
    +     * @constant
    +     */
    +    OBJECT_NOT_FOUND: 101,
    +
    +    /**
    +     * Error code indicating you tried to query with a datatype that doesn't
    +     * support it, like exact matching an array or object.
    +     * @constant
    +     */
    +    INVALID_QUERY: 102,
    +
    +    /**
    +     * Error code indicating a missing or invalid classname. Classnames are
    +     * case-sensitive. They must start with a letter, and a-zA-Z0-9_ are the
    +     * only valid characters.
    +     * @constant
    +     */
    +    INVALID_CLASS_NAME: 103,
    +
    +    /**
    +     * Error code indicating an unspecified object id.
    +     * @constant
    +     */
    +    MISSING_OBJECT_ID: 104,
    +
    +    /**
    +     * Error code indicating an invalid key name. Keys are case-sensitive. They
    +     * must start with a letter, and a-zA-Z0-9_ are the only valid characters.
    +     * @constant
    +     */
    +    INVALID_KEY_NAME: 105,
    +
    +    /**
    +     * Error code indicating a malformed pointer. You should not see this unless
    +     * you have been mucking about changing internal AV code.
    +     * @constant
    +     */
    +    INVALID_POINTER: 106,
    +
    +    /**
    +     * Error code indicating that badly formed JSON was received upstream. This
    +     * either indicates you have done something unusual with modifying how
    +     * things encode to JSON, or the network is failing badly.
    +     * @constant
    +     */
    +    INVALID_JSON: 107,
    +
    +    /**
    +     * Error code indicating that the feature you tried to access is only
    +     * available internally for testing purposes.
    +     * @constant
    +     */
    +    COMMAND_UNAVAILABLE: 108,
    +
    +    /**
    +     * You must call AV.initialize before using the AV library.
    +     * @constant
    +     */
    +    NOT_INITIALIZED: 109,
    +
    +    /**
    +     * Error code indicating that a field was set to an inconsistent type.
    +     * @constant
    +     */
    +    INCORRECT_TYPE: 111,
    +
    +    /**
    +     * Error code indicating an invalid channel name. A channel name is either
    +     * an empty string (the broadcast channel) or contains only a-zA-Z0-9_
    +     * characters.
    +     * @constant
    +     */
    +    INVALID_CHANNEL_NAME: 112,
    +
    +    /**
    +     * Error code indicating that push is misconfigured.
    +     * @constant
    +     */
    +    PUSH_MISCONFIGURED: 115,
    +
    +    /**
    +     * Error code indicating that the object is too large.
    +     * @constant
    +     */
    +    OBJECT_TOO_LARGE: 116,
    +
    +    /**
    +     * Error code indicating that the operation isn't allowed for clients.
    +     * @constant
    +     */
    +    OPERATION_FORBIDDEN: 119,
    +
    +    /**
    +     * Error code indicating the result was not found in the cache.
    +     * @constant
    +     */
    +    CACHE_MISS: 120,
    +
    +    /**
    +     * Error code indicating that an invalid key was used in a nested
    +     * JSONObject.
    +     * @constant
    +     */
    +    INVALID_NESTED_KEY: 121,
    +
    +    /**
    +     * Error code indicating that an invalid filename was used for AVFile.
    +     * A valid file name contains only a-zA-Z0-9_. characters and is between 1
    +     * and 128 characters.
    +     * @constant
    +     */
    +    INVALID_FILE_NAME: 122,
    +
    +    /**
    +     * Error code indicating an invalid ACL was provided.
    +     * @constant
    +     */
    +    INVALID_ACL: 123,
    +
    +    /**
    +     * Error code indicating that the request timed out on the server. Typically
    +     * this indicates that the request is too expensive to run.
    +     * @constant
    +     */
    +    TIMEOUT: 124,
    +
    +    /**
    +     * Error code indicating that the email address was invalid.
    +     * @constant
    +     */
    +    INVALID_EMAIL_ADDRESS: 125,
    +
    +    /**
    +     * Error code indicating a missing content type.
    +     * @constant
    +     */
    +    MISSING_CONTENT_TYPE: 126,
    +
    +    /**
    +     * Error code indicating a missing content length.
    +     * @constant
    +     */
    +    MISSING_CONTENT_LENGTH: 127,
    +
    +    /**
    +     * Error code indicating an invalid content length.
    +     * @constant
    +     */
    +    INVALID_CONTENT_LENGTH: 128,
    +
    +    /**
    +     * Error code indicating a file that was too large.
    +     * @constant
    +     */
    +    FILE_TOO_LARGE: 129,
    +
    +    /**
    +     * Error code indicating an error saving a file.
    +     * @constant
    +     */
    +    FILE_SAVE_ERROR: 130,
    +
    +    /**
    +     * Error code indicating an error deleting a file.
    +     * @constant
    +     */
    +    FILE_DELETE_ERROR: 153,
    +
    +    /**
    +     * Error code indicating that a unique field was given a value that is
    +     * already taken.
    +     * @constant
    +     */
    +    DUPLICATE_VALUE: 137,
    +
    +    /**
    +     * Error code indicating that a role's name is invalid.
    +     * @constant
    +     */
    +    INVALID_ROLE_NAME: 139,
    +
    +    /**
    +     * Error code indicating that an application quota was exceeded.  Upgrade to
    +     * resolve.
    +     * @constant
    +     */
    +    EXCEEDED_QUOTA: 140,
    +
    +    /**
    +     * Error code indicating that a Cloud Code script failed.
    +     * @constant
    +     */
    +    SCRIPT_FAILED: 141,
    +
    +    /**
    +     * Error code indicating that a Cloud Code validation failed.
    +     * @constant
    +     */
    +    VALIDATION_ERROR: 142,
    +
    +    /**
    +     * Error code indicating that invalid image data was provided.
    +     * @constant
    +     */
    +    INVALID_IMAGE_DATA: 150,
    +
    +    /**
    +     * Error code indicating an unsaved file.
    +     * @constant
    +     */
    +    UNSAVED_FILE_ERROR: 151,
    +
    +    /**
    +     * Error code indicating an invalid push time.
    +     * @constant
    +     */
    +    INVALID_PUSH_TIME_ERROR: 152,
    +
    +    /**
    +     * Error code indicating that the username is missing or empty.
    +     * @constant
    +     */
    +    USERNAME_MISSING: 200,
    +
    +    /**
    +     * Error code indicating that the password is missing or empty.
    +     * @constant
    +     */
    +    PASSWORD_MISSING: 201,
    +
    +    /**
    +     * Error code indicating that the username has already been taken.
    +     * @constant
    +     */
    +    USERNAME_TAKEN: 202,
    +
    +    /**
    +     * Error code indicating that the email has already been taken.
    +     * @constant
    +     */
    +    EMAIL_TAKEN: 203,
    +
    +    /**
    +     * Error code indicating that the email is missing, but must be specified.
    +     * @constant
    +     */
    +    EMAIL_MISSING: 204,
    +
    +    /**
    +     * Error code indicating that a user with the specified email was not found.
    +     * @constant
    +     */
    +    EMAIL_NOT_FOUND: 205,
    +
    +    /**
    +     * Error code indicating that a user object without a valid session could
    +     * not be altered.
    +     * @constant
    +     */
    +    SESSION_MISSING: 206,
    +
    +    /**
    +     * Error code indicating that a user can only be created through signup.
    +     * @constant
    +     */
    +    MUST_CREATE_USER_THROUGH_SIGNUP: 207,
    +
    +    /**
    +     * Error code indicating that an an account being linked is already linked
    +     * to another user.
    +     * @constant
    +     */
    +    ACCOUNT_ALREADY_LINKED: 208,
    +
    +    /**
    +     * Error code indicating that a user cannot be linked to an account because
    +     * that account's id could not be found.
    +     * @constant
    +     */
    +    LINKED_ID_MISSING: 250,
    +
    +    /**
    +     * Error code indicating that a user with a linked (e.g. Facebook) account
    +     * has an invalid session.
    +     * @constant
    +     */
    +    INVALID_LINKED_SESSION: 251,
    +
    +    /**
    +     * Error code indicating that a service being linked (e.g. Facebook or
    +     * Twitter) is unsupported.
    +     * @constant
    +     */
    +    UNSUPPORTED_SERVICE: 252,
    +    /**
    +     * Error code indicating a real error code is unavailable because
    +     * we had to use an XDomainRequest object to allow CORS requests in
    +     * Internet Explorer, which strips the body from HTTP responses that have
    +     * a non-2XX status code.
    +     * @constant
    +     */
    +    X_DOMAIN_REQUEST: 602,
    +  }
    +);
    +
    +module.exports = AVError;
    +
    +
    +
    + + + + +
    + +
    + +
    + Documentation generated by JSDoc 3.6.3 on Mon Sep 25 2023 11:05:14 GMT+0000 (Coordinated Universal Time) using the docdash theme. +
    + + + + + diff --git a/docs/event.js.html b/docs/event.js.html new file mode 100644 index 000000000..573b64915 --- /dev/null +++ b/docs/event.js.html @@ -0,0 +1,209 @@ + + + + + event.js - Documentation + + + + + + + + + + + + + + + + +
    + +

    event.js

    + + + + + + + +
    +
    +
    var _ = require('underscore');
    +
    +module.exports = function(AV) {
    +  var eventSplitter = /\s+/;
    +  var slice = Array.prototype.slice;
    +
    +  /**
    +   * @class
    +   *
    +   * <p>AV.Events is a fork of Backbone's Events module, provided for your
    +   * convenience.</p>
    +   *
    +   * <p>A module that can be mixed in to any object in order to provide
    +   * it with custom events. You may bind callback functions to an event
    +   * with `on`, or remove these functions with `off`.
    +   * Triggering an event fires all callbacks in the order that `on` was
    +   * called.
    +   *
    +   * @private
    +   * @example
    +   * var object = {};
    +   * _.extend(object, AV.Events);
    +   * object.on('expand', function(){ alert('expanded'); });
    +   * object.trigger('expand');</pre></p>
    +   *
    +   */
    +  AV.Events = {
    +    /**
    +     * Bind one or more space separated events, `events`, to a `callback`
    +     * function. Passing `"all"` will bind the callback to all events fired.
    +     */
    +    on: function(events, callback, context) {
    +      var calls, event, node, tail, list;
    +      if (!callback) {
    +        return this;
    +      }
    +      events = events.split(eventSplitter);
    +      calls = this._callbacks || (this._callbacks = {});
    +
    +      // Create an immutable callback list, allowing traversal during
    +      // modification.  The tail is an empty object that will always be used
    +      // as the next node.
    +      event = events.shift();
    +      while (event) {
    +        list = calls[event];
    +        node = list ? list.tail : {};
    +        node.next = tail = {};
    +        node.context = context;
    +        node.callback = callback;
    +        calls[event] = { tail: tail, next: list ? list.next : node };
    +        event = events.shift();
    +      }
    +
    +      return this;
    +    },
    +
    +    /**
    +     * Remove one or many callbacks. If `context` is null, removes all callbacks
    +     * with that function. If `callback` is null, removes all callbacks for the
    +     * event. If `events` is null, removes all bound callbacks for all events.
    +     */
    +    off: function(events, callback, context) {
    +      var event, calls, node, tail, cb, ctx;
    +
    +      // No events, or removing *all* events.
    +      if (!(calls = this._callbacks)) {
    +        return;
    +      }
    +      if (!(events || callback || context)) {
    +        delete this._callbacks;
    +        return this;
    +      }
    +
    +      // Loop through the listed events and contexts, splicing them out of the
    +      // linked list of callbacks if appropriate.
    +      events = events ? events.split(eventSplitter) : _.keys(calls);
    +      event = events.shift();
    +      while (event) {
    +        node = calls[event];
    +        delete calls[event];
    +        if (!node || !(callback || context)) {
    +          continue;
    +        }
    +        // Create a new list, omitting the indicated callbacks.
    +        tail = node.tail;
    +        node = node.next;
    +        while (node !== tail) {
    +          cb = node.callback;
    +          ctx = node.context;
    +          if ((callback && cb !== callback) || (context && ctx !== context)) {
    +            this.on(event, cb, ctx);
    +          }
    +          node = node.next;
    +        }
    +        event = events.shift();
    +      }
    +
    +      return this;
    +    },
    +
    +    /**
    +     * Trigger one or many events, firing all bound callbacks. Callbacks are
    +     * passed the same arguments as `trigger` is, apart from the event name
    +     * (unless you're listening on `"all"`, which will cause your callback to
    +     * receive the true name of the event as the first argument).
    +     */
    +    trigger: function(events) {
    +      var event, node, calls, tail, args, all, rest;
    +      if (!(calls = this._callbacks)) {
    +        return this;
    +      }
    +      all = calls.all;
    +      events = events.split(eventSplitter);
    +      rest = slice.call(arguments, 1);
    +
    +      // For each event, walk through the linked list of callbacks twice,
    +      // first to trigger the event, then to trigger any `"all"` callbacks.
    +      event = events.shift();
    +      while (event) {
    +        node = calls[event];
    +        if (node) {
    +          tail = node.tail;
    +          while ((node = node.next) !== tail) {
    +            node.callback.apply(node.context || this, rest);
    +          }
    +        }
    +        node = all;
    +        if (node) {
    +          tail = node.tail;
    +          args = [event].concat(rest);
    +          while ((node = node.next) !== tail) {
    +            node.callback.apply(node.context || this, args);
    +          }
    +        }
    +        event = events.shift();
    +      }
    +
    +      return this;
    +    },
    +  };
    +
    +  /**
    +   * @function
    +   */
    +  AV.Events.bind = AV.Events.on;
    +
    +  /**
    +   * @function
    +   */
    +  AV.Events.unbind = AV.Events.off;
    +};
    +
    +
    +
    + + + + +
    + +
    + +
    + Documentation generated by JSDoc 3.6.3 on Mon Sep 25 2023 11:05:14 GMT+0000 (Coordinated Universal Time) using the docdash theme. +
    + + + + + diff --git a/docs/file.js.html b/docs/file.js.html new file mode 100644 index 000000000..6cfbd726a --- /dev/null +++ b/docs/file.js.html @@ -0,0 +1,744 @@ + + + + + file.js - Documentation + + + + + + + + + + + + + + + + +
    + +

    file.js

    + + + + + + + +
    +
    +
    const _ = require('underscore');
    +const cos = require('./uploader/cos');
    +const qiniu = require('./uploader/qiniu');
    +const s3 = require('./uploader/s3');
    +const AVError = require('./error');
    +const { request, _request: AVRequest } = require('./request');
    +const { tap, transformFetchOptions } = require('./utils');
    +const debug = require('debug')('leancloud:file');
    +const parseBase64 = require('./utils/parse-base64');
    +
    +module.exports = function(AV) {
    +  // port from browserify path module
    +  // since react-native packager won't shim node modules.
    +  const extname = path => {
    +    if (!_.isString(path)) return '';
    +    return path.match(
    +      /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/
    +    )[4];
    +  };
    +
    +  const b64Digit = number => {
    +    if (number < 26) {
    +      return String.fromCharCode(65 + number);
    +    }
    +    if (number < 52) {
    +      return String.fromCharCode(97 + (number - 26));
    +    }
    +    if (number < 62) {
    +      return String.fromCharCode(48 + (number - 52));
    +    }
    +    if (number === 62) {
    +      return '+';
    +    }
    +    if (number === 63) {
    +      return '/';
    +    }
    +    throw new Error('Tried to encode large digit ' + number + ' in base64.');
    +  };
    +
    +  var encodeBase64 = function(array) {
    +    var chunks = [];
    +    chunks.length = Math.ceil(array.length / 3);
    +    _.times(chunks.length, function(i) {
    +      var b1 = array[i * 3];
    +      var b2 = array[i * 3 + 1] || 0;
    +      var b3 = array[i * 3 + 2] || 0;
    +
    +      var has2 = i * 3 + 1 < array.length;
    +      var has3 = i * 3 + 2 < array.length;
    +
    +      chunks[i] = [
    +        b64Digit((b1 >> 2) & 0x3f),
    +        b64Digit(((b1 << 4) & 0x30) | ((b2 >> 4) & 0x0f)),
    +        has2 ? b64Digit(((b2 << 2) & 0x3c) | ((b3 >> 6) & 0x03)) : '=',
    +        has3 ? b64Digit(b3 & 0x3f) : '=',
    +      ].join('');
    +    });
    +    return chunks.join('');
    +  };
    +
    +  /**
    +   * An AV.File is a local representation of a file that is saved to the AV
    +   * cloud.
    +   * @param name {String} The file's name. This will change to a unique value
    +   *     once the file has finished saving.
    +   * @param data {Array} The data for the file, as either:
    +   *     1. an Array of byte value Numbers, or
    +   *     2. an Object like { base64: "..." } with a base64-encoded String.
    +   *     3. a Blob(File) selected with a file upload control in a browser.
    +   *     4. an Object like { blob: {uri: "..."} } that mimics Blob
    +   *        in some non-browser environments such as React Native.
    +   *     5. a Buffer in Node.js runtime.
    +   *     6. a Stream in Node.js runtime.
    +   *
    +   *        For example:<pre>
    +   * var fileUploadControl = $("#profilePhotoFileUpload")[0];
    +   * if (fileUploadControl.files.length > 0) {
    +   *   var file = fileUploadControl.files[0];
    +   *   var name = "photo.jpg";
    +   *   var file = new AV.File(name, file);
    +   *   file.save().then(function() {
    +   *     // The file has been saved to AV.
    +   *   }, function(error) {
    +   *     // The file either could not be read, or could not be saved to AV.
    +   *   });
    +   * }</pre>
    +   *
    +   * @class
    +   * @param [mimeType] {String} Content-Type header to use for the file. If
    +   *     this is omitted, the content type will be inferred from the name's
    +   *     extension.
    +   */
    +  AV.File = function(name, data, mimeType) {
    +    this.attributes = {
    +      name,
    +      url: '',
    +      metaData: {},
    +      // 用来存储转换后要上传的 base64 String
    +      base64: '',
    +    };
    +
    +    if (_.isString(data)) {
    +      throw new TypeError(
    +        'Creating an AV.File from a String is not yet supported.'
    +      );
    +    }
    +    if (_.isArray(data)) {
    +      this.attributes.metaData.size = data.length;
    +      data = { base64: encodeBase64(data) };
    +    }
    +
    +    this._extName = '';
    +    this._data = data;
    +    this._uploadHeaders = {};
    +
    +    if (data && data.blob && typeof data.blob.uri === 'string') {
    +      this._extName = extname(data.blob.uri);
    +    }
    +
    +    if (typeof Blob !== 'undefined' && data instanceof Blob) {
    +      if (data.size) {
    +        this.attributes.metaData.size = data.size;
    +      }
    +      if (data.name) {
    +        this._extName = extname(data.name);
    +      }
    +    }
    +
    +    /* NODE-ONLY:start */
    +    if (data instanceof require('stream') && data.path) {
    +      this._extName = extname(data.path);
    +    }
    +    if (Buffer.isBuffer(data)) {
    +      this.attributes.metaData.size = data.length;
    +    }
    +    /* NODE-ONLY:end */
    +
    +    let owner;
    +    if (data && data.owner) {
    +      owner = data.owner;
    +    } else if (!AV._config.disableCurrentUser) {
    +      try {
    +        owner = AV.User.current();
    +      } catch (error) {
    +        if ('SYNC_API_NOT_AVAILABLE' !== error.code) {
    +          throw error;
    +        }
    +      }
    +    }
    +
    +    this.attributes.metaData.owner = owner ? owner.id : 'unknown';
    +
    +    this.set('mime_type', mimeType);
    +  };
    +
    +  /**
    +   * Creates a fresh AV.File object with exists url for saving to AVOS Cloud.
    +   * @param {String} name the file name
    +   * @param {String} url the file url.
    +   * @param {Object} [metaData] the file metadata object.
    +   * @param {String} [type] Content-Type header to use for the file. If
    +   *     this is omitted, the content type will be inferred from the name's
    +   *     extension.
    +   * @return {AV.File} the file object
    +   */
    +  AV.File.withURL = function(name, url, metaData, type) {
    +    if (!name || !url) {
    +      throw new Error('Please provide file name and url');
    +    }
    +    var file = new AV.File(name, null, type);
    +    //copy metaData properties to file.
    +    if (metaData) {
    +      for (var prop in metaData) {
    +        if (!file.attributes.metaData[prop])
    +          file.attributes.metaData[prop] = metaData[prop];
    +      }
    +    }
    +    file.attributes.url = url;
    +    //Mark the file is from external source.
    +    file.attributes.metaData.__source = 'external';
    +    file.attributes.metaData.size = 0;
    +    return file;
    +  };
    +
    +  /**
    +   * Creates a file object with exists objectId.
    +   * @param {String} objectId The objectId string
    +   * @return {AV.File} the file object
    +   */
    +  AV.File.createWithoutData = function(objectId) {
    +    if (!objectId) {
    +      throw new TypeError('The objectId must be provided');
    +    }
    +    var file = new AV.File();
    +    file.id = objectId;
    +    return file;
    +  };
    +
    +  /**
    +   * Request file censor.
    +   * @since 4.13.0
    +   * @param {String} objectId
    +   * @return {Promise.<string>}
    +   */
    +  AV.File.censor = function(objectId) {
    +    if (!AV._config.masterKey) {
    +      throw new Error('Cannot censor a file without masterKey');
    +    }
    +    return request({
    +      method: 'POST',
    +      path: `/files/${objectId}/censor`,
    +      authOptions: { useMasterKey: true },
    +    }).then(res => res.censorResult);
    +  };
    +
    +  _.extend(
    +    AV.File.prototype,
    +    /** @lends AV.File.prototype */ {
    +      className: '_File',
    +
    +      _toFullJSON(seenObjects, full = true) {
    +        var json = _.clone(this.attributes);
    +        AV._objectEach(json, function(val, key) {
    +          json[key] = AV._encode(val, seenObjects, undefined, full);
    +        });
    +        AV._objectEach(this._operations, function(val, key) {
    +          json[key] = val;
    +        });
    +
    +        if (_.has(this, 'id')) {
    +          json.objectId = this.id;
    +        }
    +        ['createdAt', 'updatedAt'].forEach(key => {
    +          if (_.has(this, key)) {
    +            const val = this[key];
    +            json[key] = _.isDate(val) ? val.toJSON() : val;
    +          }
    +        });
    +        if (full) {
    +          json.__type = 'File';
    +        }
    +        return json;
    +      },
    +
    +      /**
    +       * Returns a JSON version of the file with meta data.
    +       * Inverse to {@link AV.parseJSON}
    +       * @since 3.0.0
    +       * @return {Object}
    +       */
    +      toFullJSON(seenObjects = []) {
    +        return this._toFullJSON(seenObjects);
    +      },
    +
    +      /**
    +       * Returns a JSON version of the object.
    +       * @return {Object}
    +       */
    +      toJSON(key, holder, seenObjects = [this]) {
    +        return this._toFullJSON(seenObjects, false);
    +      },
    +
    +      /**
    +       * Gets a Pointer referencing this file.
    +       * @private
    +       */
    +      _toPointer() {
    +        return {
    +          __type: 'Pointer',
    +          className: this.className,
    +          objectId: this.id,
    +        };
    +      },
    +
    +      /**
    +       * Returns the ACL for this file.
    +       * @returns {AV.ACL} An instance of AV.ACL.
    +       */
    +      getACL() {
    +        return this._acl;
    +      },
    +
    +      /**
    +       * Sets the ACL to be used for this file.
    +       * @param {AV.ACL} acl An instance of AV.ACL.
    +       */
    +      setACL(acl) {
    +        if (!(acl instanceof AV.ACL)) {
    +          return new AVError(AVError.OTHER_CAUSE, 'ACL must be a AV.ACL.');
    +        }
    +        this._acl = acl;
    +        return this;
    +      },
    +
    +      /**
    +       * Gets the name of the file. Before save is called, this is the filename
    +       * given by the user. After save is called, that name gets prefixed with a
    +       * unique identifier.
    +       */
    +      name() {
    +        return this.get('name');
    +      },
    +
    +      /**
    +       * Gets the url of the file. It is only available after you save the file or
    +       * after you get the file from a AV.Object.
    +       * @return {String}
    +       */
    +      url() {
    +        return this.get('url');
    +      },
    +
    +      /**
    +       * Gets the attributs of the file object.
    +       * @param {String} The attribute name which want to get.
    +       * @returns {Any}
    +       */
    +      get(attrName) {
    +        switch (attrName) {
    +          case 'objectId':
    +            return this.id;
    +          case 'url':
    +          case 'name':
    +          case 'mime_type':
    +          case 'metaData':
    +          case 'createdAt':
    +          case 'updatedAt':
    +            return this.attributes[attrName];
    +          default:
    +            return this.attributes.metaData[attrName];
    +        }
    +      },
    +
    +      /**
    +       * Set the metaData of the file object.
    +       * @param {Object} Object is an key value Object for setting metaData.
    +       * @param {String} attr is an optional metadata key.
    +       * @param {Object} value is an optional metadata value.
    +       * @returns {String|Number|Array|Object}
    +       */
    +      set(...args) {
    +        const set = (attrName, value) => {
    +          switch (attrName) {
    +            case 'name':
    +            case 'url':
    +            case 'mime_type':
    +            case 'base64':
    +            case 'metaData':
    +              this.attributes[attrName] = value;
    +              break;
    +            default:
    +              // File 并非一个 AVObject,不能完全自定义其他属性,所以只能都放在 metaData 上面
    +              this.attributes.metaData[attrName] = value;
    +              break;
    +          }
    +        };
    +
    +        switch (args.length) {
    +          case 1:
    +            // 传入一个 Object
    +            for (var k in args[0]) {
    +              set(k, args[0][k]);
    +            }
    +            break;
    +          case 2:
    +            set(args[0], args[1]);
    +            break;
    +        }
    +        return this;
    +      },
    +
    +      /**
    +       * Set a header for the upload request.
    +       * For more infomation, go to https://url.leanapp.cn/avfile-upload-headers
    +       *
    +       * @param {String} key header key
    +       * @param {String} value header value
    +       * @return {AV.File} this
    +       */
    +      setUploadHeader(key, value) {
    +        this._uploadHeaders[key] = value;
    +        return this;
    +      },
    +
    +      /**
    +       * <p>Returns the file's metadata JSON object if no arguments is given.Returns the
    +       * metadata value if a key is given.Set metadata value if key and value are both given.</p>
    +       * <p><pre>
    +       *  var metadata = file.metaData(); //Get metadata JSON object.
    +       *  var size = file.metaData('size');  // Get the size metadata value.
    +       *  file.metaData('format', 'jpeg'); //set metadata attribute and value.
    +       *</pre></p>
    +       * @return {Object} The file's metadata JSON object.
    +       * @param {String} attr an optional metadata key.
    +       * @param {Object} value an optional metadata value.
    +       **/
    +      metaData(attr, value) {
    +        if (attr && value) {
    +          this.attributes.metaData[attr] = value;
    +          return this;
    +        } else if (attr && !value) {
    +          return this.attributes.metaData[attr];
    +        } else {
    +          return this.attributes.metaData;
    +        }
    +      },
    +
    +      /**
    +       * 如果文件是图片,获取图片的缩略图URL。可以传入宽度、高度、质量、格式等参数。
    +       * @return {String} 缩略图URL
    +       * @param {Number} width 宽度,单位:像素
    +       * @param {Number} heigth 高度,单位:像素
    +       * @param {Number} quality 质量,1-100的数字,默认100
    +       * @param {Number} scaleToFit 是否将图片自适应大小。默认为true。
    +       * @param {String} fmt 格式,默认为png,也可以为jpeg,gif等格式。
    +       */
    +
    +      thumbnailURL(
    +        width,
    +        height,
    +        quality = 100,
    +        scaleToFit = true,
    +        fmt = 'png'
    +      ) {
    +        const url = this.attributes.url;
    +        if (!url) {
    +          throw new Error('Invalid url.');
    +        }
    +        if (!width || !height || width <= 0 || height <= 0) {
    +          throw new Error('Invalid width or height value.');
    +        }
    +        if (quality <= 0 || quality > 100) {
    +          throw new Error('Invalid quality value.');
    +        }
    +        const mode = scaleToFit ? 2 : 1;
    +        return (
    +          url +
    +          '?imageView/' +
    +          mode +
    +          '/w/' +
    +          width +
    +          '/h/' +
    +          height +
    +          '/q/' +
    +          quality +
    +          '/format/' +
    +          fmt
    +        );
    +      },
    +
    +      /**
    +       * Returns the file's size.
    +       * @return {Number} The file's size in bytes.
    +       **/
    +      size() {
    +        return this.metaData().size;
    +      },
    +
    +      /**
    +       * Returns the file's owner.
    +       * @return {String} The file's owner id.
    +       */
    +      ownerId() {
    +        return this.metaData().owner;
    +      },
    +
    +      /**
    +       * Destroy the file.
    +       * @param {AuthOptions} options
    +       * @return {Promise} A promise that is fulfilled when the destroy
    +       *     completes.
    +       */
    +      destroy(options) {
    +        if (!this.id) {
    +          return Promise.reject(new Error('The file id does not eixst.'));
    +        }
    +        var request = AVRequest(
    +          'files',
    +          null,
    +          this.id,
    +          'DELETE',
    +          null,
    +          options
    +        );
    +        return request;
    +      },
    +
    +      /**
    +       * Request Qiniu upload token
    +       * @param {string} type
    +       * @return {Promise} Resolved with the response
    +       * @private
    +       */
    +      _fileToken(type, authOptions) {
    +        let name = this.attributes.name;
    +
    +        let extName = extname(name);
    +        if (!extName && this._extName) {
    +          name += this._extName;
    +          extName = this._extName;
    +        }
    +        const data = {
    +          name,
    +          keep_file_name: authOptions.keepFileName,
    +          key: authOptions.key,
    +          ACL: this._acl,
    +          mime_type: type,
    +          metaData: this.attributes.metaData,
    +        };
    +        return AVRequest('fileTokens', null, null, 'POST', data, authOptions);
    +      },
    +
    +      /**
    +       * @callback UploadProgressCallback
    +       * @param {XMLHttpRequestProgressEvent} event - The progress event with 'loaded' and 'total' attributes
    +       */
    +      /**
    +       * Saves the file to the AV cloud.
    +       * @param {AuthOptions} [options] AuthOptions plus:
    +       * @param {UploadProgressCallback} [options.onprogress] 文件上传进度,在 Node.js 中无效,回调参数说明详见 {@link UploadProgressCallback}。
    +       * @param {boolean} [options.keepFileName = false] 保留下载文件的文件名。
    +       * @param {string} [options.key] 指定文件的 key。设置该选项需要使用 masterKey
    +       * @return {Promise} Promise that is resolved when the save finishes.
    +       */
    +      save(options = {}) {
    +        if (this.id) {
    +          throw new Error('File is already saved.');
    +        }
    +        if (!this._previousSave) {
    +          if (this._data) {
    +            let mimeType = this.get('mime_type');
    +            this._previousSave = this._fileToken(mimeType, options).then(
    +              uploadInfo => {
    +                if (uploadInfo.mime_type) {
    +                  mimeType = uploadInfo.mime_type;
    +                  this.set('mime_type', mimeType);
    +                }
    +                this._token = uploadInfo.token;
    +                return Promise.resolve()
    +                  .then(() => {
    +                    const data = this._data;
    +                    if (data && data.base64) {
    +                      return parseBase64(data.base64, mimeType);
    +                    }
    +                    if (data && data.blob) {
    +                      if (!data.blob.type && mimeType) {
    +                        data.blob.type = mimeType;
    +                      }
    +                      if (!data.blob.name) {
    +                        data.blob.name = this.get('name');
    +                      }
    +                      return data.blob;
    +                    }
    +                    if (typeof Blob !== 'undefined' && data instanceof Blob) {
    +                      return data;
    +                    }
    +                    /* NODE-ONLY:start */
    +                    if (data instanceof require('stream')) {
    +                      return data;
    +                    }
    +                    if (Buffer.isBuffer(data)) {
    +                      return data;
    +                    }
    +                    /* NODE-ONLY:end */
    +                    throw new TypeError('malformed file data');
    +                  })
    +                  .then(data => {
    +                    const _options = _.extend({}, options);
    +                    // filter out download progress events
    +                    if (options.onprogress) {
    +                      _options.onprogress = event => {
    +                        if (event.direction === 'download') return;
    +                        return options.onprogress(event);
    +                      };
    +                    }
    +                    switch (uploadInfo.provider) {
    +                      case 's3':
    +                        return s3(uploadInfo, data, this, _options);
    +                      case 'qcloud':
    +                        return cos(uploadInfo, data, this, _options);
    +                      case 'qiniu':
    +                      default:
    +                        return qiniu(uploadInfo, data, this, _options);
    +                    }
    +                  })
    +                  .then(tap(() => this._callback(true)), error => {
    +                    this._callback(false);
    +                    throw error;
    +                  });
    +              }
    +            );
    +          } else if (
    +            this.attributes.url &&
    +            this.attributes.metaData.__source === 'external'
    +          ) {
    +            // external link file.
    +            const data = {
    +              name: this.attributes.name,
    +              ACL: this._acl,
    +              metaData: this.attributes.metaData,
    +              mime_type: this.mimeType,
    +              url: this.attributes.url,
    +            };
    +            this._previousSave = AVRequest(
    +              'files',
    +              null,
    +              null,
    +              'post',
    +              data,
    +              options
    +            ).then(response => {
    +              this.id = response.objectId;
    +              return this;
    +            });
    +          }
    +        }
    +        return this._previousSave;
    +      },
    +
    +      _callback(success) {
    +        AVRequest('fileCallback', null, null, 'post', {
    +          token: this._token,
    +          result: success,
    +        }).catch(debug);
    +        delete this._token;
    +        delete this._data;
    +      },
    +
    +      /**
    +       * fetch the file from server. If the server's representation of the
    +       * model differs from its current attributes, they will be overriden,
    +       * @param {Object} fetchOptions Optional options to set 'keys',
    +       *      'include' and 'includeACL' option.
    +       * @param {AuthOptions} options
    +       * @return {Promise} A promise that is fulfilled when the fetch
    +       *     completes.
    +       */
    +      fetch(fetchOptions, options) {
    +        if (!this.id) {
    +          throw new Error('Cannot fetch unsaved file');
    +        }
    +        var request = AVRequest(
    +          'files',
    +          null,
    +          this.id,
    +          'GET',
    +          transformFetchOptions(fetchOptions),
    +          options
    +        );
    +        return request.then(this._finishFetch.bind(this));
    +      },
    +      _finishFetch(response) {
    +        var value = AV.Object.prototype.parse(response);
    +        value.attributes = {
    +          name: value.name,
    +          url: value.url,
    +          mime_type: value.mime_type,
    +          bucket: value.bucket,
    +        };
    +        value.attributes.metaData = value.metaData || {};
    +        value.id = value.objectId;
    +        // clean
    +        delete value.objectId;
    +        delete value.metaData;
    +        delete value.url;
    +        delete value.name;
    +        delete value.mime_type;
    +        delete value.bucket;
    +        _.extend(this, value);
    +        return this;
    +      },
    +
    +      /**
    +       * Request file censor
    +       * @since 4.13.0
    +       * @return {Promise.<string>}
    +       */
    +      censor() {
    +        if (!this.id) {
    +          throw new Error('Cannot censor an unsaved file');
    +        }
    +        return AV.File.censor(this.id);
    +      },
    +    }
    +  );
    +};
    +
    +
    +
    + + + + +
    + +
    + +
    + Documentation generated by JSDoc 3.6.3 on Mon Sep 25 2023 11:05:14 GMT+0000 (Coordinated Universal Time) using the docdash theme. +
    + + + + + diff --git a/docs/friendship.js.html b/docs/friendship.js.html new file mode 100644 index 000000000..a2f15fc25 --- /dev/null +++ b/docs/friendship.js.html @@ -0,0 +1,189 @@ + + + + + friendship.js - Documentation + + + + + + + + + + + + + + + + +
    + +

    friendship.js

    + + + + + + + +
    +
    +
    const _ = require('underscore');
    +const { request: LCRequest } = require('./request');
    +const { getSessionToken } = require('./utils');
    +
    +module.exports = function(AV) {
    +  const getUserWithSessionToken = authOptions => {
    +    if (authOptions.user) {
    +      if (!authOptions.user._sessionToken) {
    +        throw new Error('authOptions.user is not signed in.');
    +      }
    +      return Promise.resolve(authOptions.user);
    +    }
    +    if (authOptions.sessionToken) {
    +      return AV.User._fetchUserBySessionToken(authOptions.sessionToken);
    +    }
    +    return AV.User.currentAsync();
    +  };
    +
    +  const getSessionTokenAsync = authOptions => {
    +    const sessionToken = getSessionToken(authOptions);
    +    if (sessionToken) {
    +      return Promise.resolve(sessionToken);
    +    }
    +    return AV.User.currentAsync().then(user => {
    +      if (user) {
    +        return user.getSessionToken();
    +      }
    +    });
    +  };
    +
    +  /**
    +   * Contains functions to deal with Friendship in LeanCloud.
    +   * @class
    +   */
    +  AV.Friendship = {
    +    /**
    +     * Request friendship.
    +     * @since 4.8.0
    +     * @param {String | AV.User | Object} options if an AV.User or string is given, it will be used as the friend.
    +     * @param {AV.User | string} options.friend The friend (or friend's objectId) to follow.
    +     * @param {Object} [options.attributes] key-value attributes dictionary to be used as conditions of followeeQuery.
    +     * @param {AuthOptions} [authOptions]
    +     * @return {Promise<void>}
    +     */
    +    request: function(options, authOptions = {}) {
    +      let friend;
    +      let attributes;
    +
    +      if (options.friend) {
    +        friend = options.friend;
    +        attributes = options.attributes;
    +      } else {
    +        friend = options;
    +      }
    +
    +      const friendObj = _.isString(friend)
    +        ? AV.Object.createWithoutData('_User', friend)
    +        : friend;
    +
    +      return getUserWithSessionToken(authOptions).then(userObj => {
    +        if (!userObj) {
    +          throw new Error('Please signin an user.');
    +        }
    +        return LCRequest({
    +          method: 'POST',
    +          path: '/users/friendshipRequests',
    +          data: {
    +            user: userObj._toPointer(),
    +            friend: friendObj._toPointer(),
    +            friendship: attributes,
    +          },
    +          authOptions,
    +        });
    +      });
    +    },
    +
    +    /**
    +     * Accept a friendship request.
    +     * @since 4.8.0
    +     * @param {AV.Object | string | Object} options if an AV.Object or string is given, it will be used as the request in _FriendshipRequest.
    +     * @param {AV.Object} options.request The request (or it's objectId) to be accepted.
    +     * @param {Object} [options.attributes] key-value attributes dictionary to be used as conditions of {@link AV#followeeQuery}.
    +     * @param {AuthOptions} [authOptions]
    +     * @return {Promise<void>}
    +     */
    +    acceptRequest: function(options, authOptions = {}) {
    +      let request;
    +      let attributes;
    +      if (options.request) {
    +        request = options.request;
    +        attributes = options.attributes;
    +      } else {
    +        request = options;
    +      }
    +      const requestId = _.isString(request) ? request : request.id;
    +      return getSessionTokenAsync(authOptions).then(sessionToken => {
    +        if (!sessionToken) {
    +          throw new Error('Please signin an user.');
    +        }
    +        return LCRequest({
    +          method: 'PUT',
    +          path: '/users/friendshipRequests/' + requestId + '/accept',
    +          data: {
    +            friendship: AV._encode(attributes),
    +          },
    +          authOptions,
    +        });
    +      });
    +    },
    +
    +    /**
    +     * Decline a friendship request.
    +     * @param {AV.Object | string} request The request (or it's objectId) to be declined.
    +     * @param {AuthOptions} [authOptions]
    +     * @return {Promise<void>}
    +     */
    +    declineRequest: function(request, authOptions = {}) {
    +      const requestId = _.isString(request) ? request : request.id;
    +      return getSessionTokenAsync(authOptions).then(sessionToken => {
    +        if (!sessionToken) {
    +          throw new Error('Please signin an user.');
    +        }
    +        return LCRequest({
    +          method: 'PUT',
    +          path: '/users/friendshipRequests/' + requestId + '/decline',
    +          authOptions,
    +        });
    +      });
    +    },
    +  };
    +};
    +
    +
    +
    + + + + +
    + +
    + +
    + Documentation generated by JSDoc 3.6.3 on Mon Sep 25 2023 11:05:14 GMT+0000 (Coordinated Universal Time) using the docdash theme. +
    + + + + + diff --git a/docs/geopoint.js.html b/docs/geopoint.js.html new file mode 100644 index 000000000..aa729b02b --- /dev/null +++ b/docs/geopoint.js.html @@ -0,0 +1,232 @@ + + + + + geopoint.js - Documentation + + + + + + + + + + + + + + + + +
    + +

    geopoint.js

    + + + + + + + +
    +
    +
    var _ = require('underscore');
    +
    +/*global navigator: false */
    +module.exports = function(AV) {
    +  /**
    +   * Creates a new GeoPoint with any of the following forms:<br>
    +   * @example
    +   * new GeoPoint(otherGeoPoint)
    +   * new GeoPoint(30, 30)
    +   * new GeoPoint([30, 30])
    +   * new GeoPoint({latitude: 30, longitude: 30})
    +   * new GeoPoint()  // defaults to (0, 0)
    +   * @class
    +   *
    +   * <p>Represents a latitude / longitude point that may be associated
    +   * with a key in a AVObject or used as a reference point for geo queries.
    +   * This allows proximity-based queries on the key.</p>
    +   *
    +   * <p>Only one key in a class may contain a GeoPoint.</p>
    +   *
    +   * <p>Example:<pre>
    +   *   var point = new AV.GeoPoint(30.0, -20.0);
    +   *   var object = new AV.Object("PlaceObject");
    +   *   object.set("location", point);
    +   *   object.save();</pre></p>
    +   */
    +  AV.GeoPoint = function(arg1, arg2) {
    +    if (_.isArray(arg1)) {
    +      AV.GeoPoint._validate(arg1[0], arg1[1]);
    +      this.latitude = arg1[0];
    +      this.longitude = arg1[1];
    +    } else if (_.isObject(arg1)) {
    +      AV.GeoPoint._validate(arg1.latitude, arg1.longitude);
    +      this.latitude = arg1.latitude;
    +      this.longitude = arg1.longitude;
    +    } else if (_.isNumber(arg1) && _.isNumber(arg2)) {
    +      AV.GeoPoint._validate(arg1, arg2);
    +      this.latitude = arg1;
    +      this.longitude = arg2;
    +    } else {
    +      this.latitude = 0;
    +      this.longitude = 0;
    +    }
    +
    +    // Add properties so that anyone using Webkit or Mozilla will get an error
    +    // if they try to set values that are out of bounds.
    +    var self = this;
    +    if (this.__defineGetter__ && this.__defineSetter__) {
    +      // Use _latitude and _longitude to actually store the values, and add
    +      // getters and setters for latitude and longitude.
    +      this._latitude = this.latitude;
    +      this._longitude = this.longitude;
    +      this.__defineGetter__('latitude', function() {
    +        return self._latitude;
    +      });
    +      this.__defineGetter__('longitude', function() {
    +        return self._longitude;
    +      });
    +      this.__defineSetter__('latitude', function(val) {
    +        AV.GeoPoint._validate(val, self.longitude);
    +        self._latitude = val;
    +      });
    +      this.__defineSetter__('longitude', function(val) {
    +        AV.GeoPoint._validate(self.latitude, val);
    +        self._longitude = val;
    +      });
    +    }
    +  };
    +
    +  /**
    +   * @lends AV.GeoPoint.prototype
    +   * @property {float} latitude North-south portion of the coordinate, in range
    +   *   [-90, 90].  Throws an exception if set out of range in a modern browser.
    +   * @property {float} longitude East-west portion of the coordinate, in range
    +   *   [-180, 180].  Throws if set out of range in a modern browser.
    +   */
    +
    +  /**
    +   * Throws an exception if the given lat-long is out of bounds.
    +   * @private
    +   */
    +  AV.GeoPoint._validate = function(latitude, longitude) {
    +    if (latitude < -90.0) {
    +      throw new Error('AV.GeoPoint latitude ' + latitude + ' < -90.0.');
    +    }
    +    if (latitude > 90.0) {
    +      throw new Error('AV.GeoPoint latitude ' + latitude + ' > 90.0.');
    +    }
    +    if (longitude < -180.0) {
    +      throw new Error('AV.GeoPoint longitude ' + longitude + ' < -180.0.');
    +    }
    +    if (longitude > 180.0) {
    +      throw new Error('AV.GeoPoint longitude ' + longitude + ' > 180.0.');
    +    }
    +  };
    +
    +  /**
    +   * Creates a GeoPoint with the user's current location, if available.
    +   * @return {Promise.<AV.GeoPoint>}
    +   */
    +  AV.GeoPoint.current = () =>
    +    new Promise((resolve, reject) => {
    +      navigator.geolocation.getCurrentPosition(function(location) {
    +        resolve(
    +          new AV.GeoPoint({
    +            latitude: location.coords.latitude,
    +            longitude: location.coords.longitude,
    +          })
    +        );
    +      }, reject);
    +    });
    +
    +  _.extend(
    +    AV.GeoPoint.prototype,
    +    /** @lends AV.GeoPoint.prototype */ {
    +      /**
    +       * Returns a JSON representation of the GeoPoint, suitable for AV.
    +       * @return {Object}
    +       */
    +      toJSON: function() {
    +        AV.GeoPoint._validate(this.latitude, this.longitude);
    +        return {
    +          __type: 'GeoPoint',
    +          latitude: this.latitude,
    +          longitude: this.longitude,
    +        };
    +      },
    +
    +      /**
    +       * Returns the distance from this GeoPoint to another in radians.
    +       * @param {AV.GeoPoint} point the other AV.GeoPoint.
    +       * @return {Number}
    +       */
    +      radiansTo: function(point) {
    +        var d2r = Math.PI / 180.0;
    +        var lat1rad = this.latitude * d2r;
    +        var long1rad = this.longitude * d2r;
    +        var lat2rad = point.latitude * d2r;
    +        var long2rad = point.longitude * d2r;
    +        var deltaLat = lat1rad - lat2rad;
    +        var deltaLong = long1rad - long2rad;
    +        var sinDeltaLatDiv2 = Math.sin(deltaLat / 2);
    +        var sinDeltaLongDiv2 = Math.sin(deltaLong / 2);
    +        // Square of half the straight line chord distance between both points.
    +        var a =
    +          sinDeltaLatDiv2 * sinDeltaLatDiv2 +
    +          Math.cos(lat1rad) *
    +            Math.cos(lat2rad) *
    +            sinDeltaLongDiv2 *
    +            sinDeltaLongDiv2;
    +        a = Math.min(1.0, a);
    +        return 2 * Math.asin(Math.sqrt(a));
    +      },
    +
    +      /**
    +       * Returns the distance from this GeoPoint to another in kilometers.
    +       * @param {AV.GeoPoint} point the other AV.GeoPoint.
    +       * @return {Number}
    +       */
    +      kilometersTo: function(point) {
    +        return this.radiansTo(point) * 6371.0;
    +      },
    +
    +      /**
    +       * Returns the distance from this GeoPoint to another in miles.
    +       * @param {AV.GeoPoint} point the other AV.GeoPoint.
    +       * @return {Number}
    +       */
    +      milesTo: function(point) {
    +        return this.radiansTo(point) * 3958.8;
    +      },
    +    }
    +  );
    +};
    +
    +
    +
    + + + + +
    + +
    + +
    + Documentation generated by JSDoc 3.6.3 on Mon Sep 25 2023 11:05:14 GMT+0000 (Coordinated Universal Time) using the docdash theme. +
    + + + + + diff --git a/docs/global.html b/docs/global.html new file mode 100644 index 000000000..24dc0a1fc --- /dev/null +++ b/docs/global.html @@ -0,0 +1,1404 @@ + + + + + Global - Documentation + + + + + + + + + + + + + + + + +
    + +

    Global

    + + + + + + + +
    + +
    + +

    + +

    + + +
    + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + +
    + + + + + + + + + + + + + + + + +

    Type Definitions

    + + + +

    AuthOptions

    + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    Properties:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    sessionToken + + +String + + + + + + <optional>
    + + + +
    Specify a user to excute the operation as.
    user + + +AV.User + + + + + + <optional>
    + + + +
    Specify a user to excute the operation as. The user must have _sessionToken. This option will be ignored if sessionToken option provided.
    useMasterKey + + +Boolean + + + + + + <optional>
    + + + +
    Indicates whether masterKey is used for this operation. Only valid when masterKey is set.
    + + + + + + +
    + Options to controll the authentication for an operation +
    + + + +
    Type:
    +
      +
    • + +Object + + +
    • +
    + + + + + + + + +

    LeaderboardArchive

    + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    Properties:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    statisticName + + +string + + + +
    version + + +number + + + + version of the leaderboard
    status + + +string + + + +
    url + + +string + + + + URL for the downloadable archive
    activatedAt + + +Date + + + + time when this version became active
    deactivatedAt + + +Date + + + + time when this version was deactivated by a version incrementing
    + + + + + + + + +
    Type:
    +
      +
    • + +Object + + +
    • +
    + + + + + + + + +

    Ranking

    + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    Properties:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    rank + + +number + + + + + + + + Starts at 0
    value + + +number + + + + + + + + the statistic value of this ranking
    user + + +AV.User + + + + + + + + The user of this ranking
    includedStatistics + + +Array.<Statistic> + + + + + + <optional>
    + + + +
    Other statistics of the user, specified by the `includeStatistic` option of `AV.Leaderboard.getResults()`
    + + + + + + + + +
    Type:
    +
      +
    • + +Object + + +
    • +
    + + + + + + + + +

    ServerURLs

    + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    Properties:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    api + + +String + + + + + + <optional>
    + + + +
    serverURL for API service
    engine + + +String + + + + + + <optional>
    + + + +
    serverURL for engine service
    stats + + +String + + + + + + <optional>
    + + + +
    serverURL for stats service
    push + + +String + + + + + + <optional>
    + + + +
    serverURL for push service
    rtm + + +String + + + + + + <optional>
    + + + +
    serverURL for LiveQuery service
    + + + + + + +
    + URLs for services +
    + + + +
    Type:
    +
      +
    • + +Object + + +
    • +
    + + + + + + + + +

    SMSAuthOptions

    + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    Properties:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    sessionToken + + +String + + + + + + <optional>
    + + + +
    Specify a user to excute the operation as.
    user + + +AV.User + + + + + + <optional>
    + + + +
    Specify a user to excute the operation as. The user must have _sessionToken. This option will be ignored if sessionToken option provided.
    useMasterKey + + +Boolean + + + + + + <optional>
    + + + +
    Indicates whether masterKey is used for this operation. Only valid when masterKey is set.
    validateToken + + +String + + + + + + <optional>
    + + + +
    a validate token returned by AV.Cloud.verifyCaptcha
    + + + + + + +
    + Options to controll the authentication for an SMS operation +
    + + + +
    Type:
    +
      +
    • + +Object + + +
    • +
    + + + + + + + + + + + +

    UploadProgressCallback(event)

    + + + + + + +
    + + +
    Source:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    event + + +XMLHttpRequestProgressEvent + + + + The progress event with 'loaded' and 'total' attributes
    + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + +
    + +
    + +
    + Documentation generated by JSDoc 3.6.3 on Mon Sep 25 2023 11:05:14 GMT+0000 (Coordinated Universal Time) using the docdash theme. +
    + + + + + \ No newline at end of file diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 000000000..572f3e432 --- /dev/null +++ b/docs/index.html @@ -0,0 +1,133 @@ + + + + + Home - Documentation + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + +
    +

    LeanCloud JavaScript SDK

    +

    npm +gzip size +Build Status +Codecov +Known Vulnerabilities

    +

    JavaScript SDK for LeanCloud.

    +

    安装

    +
    // npm 安装
    +npm install leancloud-storage --save
    +// npm 安装 2.x 版本
    +npm install leancloud-storage@2 --save
    +
    +

    文档

    + +

    支持

    +
      +
    • 如果你发现了新的 bug,或者有新的 feature request,请新建一个 issue
    • +
    • 在使用过程中遇到了问题时 +
        +
      • 如果你是商用版用户,请新建一个工单。
      • +
      • 也可以在 论坛 提问、讨论。
      • +
      +
    • +
    +

    贡献

    +

    如果你希望为这个项目贡献代码,请按以下步骤进行:

    +
      +
    • fork 这个项目
    • +
    • npm install 安装相关依赖
    • +
    • 开发和调试
    • +
    • 确保测试全部通过 npm run test,浏览器环境打开 test/test.html
    • +
    • 提交并发起 Pull Request
    • +
    +

    项目的目录结构说明如下:

    +
    ├── dist                               // 编译之后生成的文件将会在此目录下
    +│   ├── av.js                          // 浏览器版本
    +│   ├── av-min.js
    +│   ├── av-weapp.js                    // 小程序版本
    +│   ├── av-weapp-min.js
    +│   ├── node                           // 目录中为生成的 nodejs 版本代码
    +│   └── ...
    +├── src
    +│   ├── index.js                          // node.js 环境入口文件
    +│   └── ...
    +└── test                               // 单元测试
    +
    +

    发布流程

    +
      +
    1. 遵循 semver 提升版本号 +
        +
      • src/version.js
      • +
      • package.json
      • +
      +
    2. +
    3. 对照 commit 历史写 changelog
    4. +
    5. 提交当前所有改动
    6. +
    7. 等待持续集成 pass
    8. +
    9. 使用 GitHub 基于 dist 分支发布一个 release
    10. +
    11. Fetch and checkout remote dist branch 并确认该提交的内容是即将发布的版本
    12. +
    13. npm publish(npm publish,需 npm 协作者身份),如果是 pre-release 版本需要带 next tag
    14. +
    +
    + + + + + + +
    + +
    + +
    + Documentation generated by JSDoc 3.6.3 on Mon Sep 25 2023 11:05:14 GMT+0000 (Coordinated Universal Time) using the docdash theme. +
    + + + + + \ No newline at end of file diff --git a/docs/index.js.html b/docs/index.js.html new file mode 100644 index 000000000..231940724 --- /dev/null +++ b/docs/index.js.html @@ -0,0 +1,116 @@ + + + + + index.js - Documentation + + + + + + + + + + + + + + + + +
    + +

    index.js

    + + + + + + + +
    +
    +
    /*!
    + * LeanCloud JavaScript SDK
    + * https://leancloud.cn
    + *
    + * Copyright 2016 LeanCloud.cn, Inc.
    + * The LeanCloud JavaScript SDK is freely distributable under the MIT license.
    + */
    +const _ = require('underscore');
    +
    +const AV = require('./av');
    +
    +AV._ = _;
    +AV.version = require('./version');
    +AV.Promise = Promise;
    +AV.localStorage = require('./localstorage');
    +AV.Cache = require('./cache');
    +AV.Error = require('./error');
    +
    +require('./init');
    +require('./event')(AV);
    +require('./geopoint')(AV);
    +require('./acl')(AV);
    +require('./op')(AV);
    +require('./relation')(AV);
    +require('./file')(AV);
    +require('./object')(AV);
    +require('./role')(AV);
    +require('./user')(AV);
    +require('./query')(AV);
    +require('./live-query')(AV);
    +require('./captcha')(AV);
    +require('./cloudfunction')(AV);
    +require('./push')(AV);
    +require('./status')(AV);
    +require('./search')(AV);
    +require('./insight')(AV);
    +require('./friendship')(AV);
    +
    +AV.Conversation = require('./conversation');
    +require('./leaderboard');
    +module.exports = AV;
    +
    +/**
    + * Options to controll the authentication for an operation
    + * @typedef {Object} AuthOptions
    + * @property {String} [sessionToken] Specify a user to excute the operation as.
    + * @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.
    + * @property {Boolean} [useMasterKey] Indicates whether masterKey is used for this operation. Only valid when masterKey is set.
    + */
    +
    +/**
    + * Options to controll the authentication for an SMS operation
    + * @typedef {Object} SMSAuthOptions
    + * @property {String} [sessionToken] Specify a user to excute the operation as.
    + * @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.
    + * @property {Boolean} [useMasterKey] Indicates whether masterKey is used for this operation. Only valid when masterKey is set.
    + * @property {String} [validateToken] a validate token returned by {@link AV.Cloud.verifyCaptcha}
    + */
    +
    +
    +
    + + + + +
    + +
    + +
    + Documentation generated by JSDoc 3.6.3 on Mon Sep 25 2023 11:05:14 GMT+0000 (Coordinated Universal Time) using the docdash theme. +
    + + + + + diff --git a/docs/init.js.html b/docs/init.js.html new file mode 100644 index 000000000..2bd9e0f52 --- /dev/null +++ b/docs/init.js.html @@ -0,0 +1,277 @@ + + + + + init.js - Documentation + + + + + + + + + + + + + + + + +
    + +

    init.js

    + + + + + + + +
    +
    +
    const AV = require('./av');
    +const AppRouter = require('./app-router');
    +const { isNullOrUndefined } = require('./utils');
    +const { extend, isObject, isEmpty } = require('underscore');
    +
    +const isCNApp = appId => appId.slice(-9) !== '-MdYXbMMI';
    +
    +const fillServerURLs = url => ({
    +  push: url,
    +  stats: url,
    +  engine: url,
    +  api: url,
    +  rtm: url,
    +});
    +
    +function getDefaultServerURLs(appId) {
    +  if (isCNApp(appId)) {
    +    return {};
    +  }
    +  const id = appId.slice(0, 8).toLowerCase();
    +  const domain = 'lncldglobal.com';
    +  return {
    +    push: `https://${id}.push.${domain}`,
    +    stats: `https://${id}.stats.${domain}`,
    +    engine: `https://${id}.engine.${domain}`,
    +    api: `https://${id}.api.${domain}`,
    +    rtm: `https://${id}.rtm.${domain}`,
    +  };
    +}
    +
    +let _disableAppRouter = false;
    +let _initialized = false;
    +
    +/**
    + * URLs for services
    + * @typedef {Object} ServerURLs
    + * @property {String} [api] serverURL for API service
    + * @property {String} [engine] serverURL for engine service
    + * @property {String} [stats] serverURL for stats service
    + * @property {String} [push] serverURL for push service
    + * @property {String} [rtm] serverURL for LiveQuery service
    + */
    +
    +/**
    + * Call this method first to set up your authentication tokens for AV.
    + * You can get your app keys from the LeanCloud dashboard on http://leancloud.cn .
    + * @function AV.init
    + * @param {Object} options
    + * @param {String} options.appId application id
    + * @param {String} options.appKey application key
    + * @param {String} [options.masterKey] application master key
    + * @param {Boolean} [options.production]
    + * @param {String|ServerURLs} [options.serverURL] URLs for services. if a string was given, it will be applied for all services.
    + * @param {Boolean} [options.disableCurrentUser]
    + */
    +AV.init = function init(options, ...params) {
    +  if (!isObject(options)) {
    +    return AV.init({
    +      appId: options,
    +      appKey: params[0],
    +      masterKey: params[1],
    +    });
    +  }
    +  const {
    +    appId,
    +    appKey,
    +    masterKey,
    +    hookKey,
    +    serverURL,
    +    serverURLs = serverURL,
    +    disableCurrentUser,
    +    production,
    +    realtime,
    +  } = options;
    +  if (_initialized)
    +    console.warn(
    +      'Initializing LeanCloud Storage SDK which has already been initialized. Reinitializing the SDK might cause problems like unexpected cross-app data writing and invalid relations.'
    +    );
    +  if (!appId) throw new TypeError('appId must be a string');
    +  if (!appKey) throw new TypeError('appKey must be a string');
    +  if (process.env.PLATFORM !== 'NODE_JS' && masterKey)
    +    console.warn('MasterKey is not supposed to be used at client side.');
    +  if (isCNApp(appId)) {
    +    if (!serverURLs && isEmpty(AV._config.serverURLs)) {
    +      throw new TypeError(
    +        `serverURL option is required for apps from CN region`
    +      );
    +    }
    +  }
    +  if (appId !== AV._config.applicationId) {
    +    // overwrite all keys when reinitializing as a new app
    +    AV._config.masterKey = masterKey;
    +    AV._config.hookKey = hookKey;
    +  } else {
    +    if (masterKey) AV._config.masterKey = masterKey;
    +    if (hookKey) AV._config.hookKey = hookKey;
    +  }
    +  AV._config.applicationId = appId;
    +  AV._config.applicationKey = appKey;
    +  if (!isNullOrUndefined(production)) {
    +    AV.setProduction(production);
    +  }
    +  if (typeof disableCurrentUser !== 'undefined')
    +    AV._config.disableCurrentUser = disableCurrentUser;
    +  const disableAppRouter =
    +    _disableAppRouter || typeof serverURLs !== 'undefined';
    +  if (!disableAppRouter) {
    +    AV._appRouter = new AppRouter(AV);
    +  }
    +  AV._setServerURLs(
    +    extend(
    +      {},
    +      getDefaultServerURLs(appId),
    +      AV._config.serverURLs,
    +      typeof serverURLs === 'string' ? fillServerURLs(serverURLs) : serverURLs
    +    ),
    +    disableAppRouter
    +  );
    +  if (realtime) {
    +    AV._config.realtime = realtime;
    +  } else if (AV._sharedConfig.liveQueryRealtime) {
    +    const { api, rtm } = AV._config.serverURLs;
    +    AV._config.realtime = new AV._sharedConfig.liveQueryRealtime({
    +      appId,
    +      appKey,
    +      server: {
    +        api,
    +        RTMRouter: rtm,
    +      },
    +    });
    +  }
    +  _initialized = true;
    +};
    +
    +// If we're running in node.js, allow using the master key.
    +if (process.env.PLATFORM === 'NODE_JS') {
    +  AV.Cloud = AV.Cloud || {};
    +  /**
    +   * Switches the LeanCloud SDK to using the Master key.  The Master key grants
    +   * priveleged access to the data in LeanCloud and can be used to bypass ACLs and
    +   * other restrictions that are applied to the client SDKs.
    +   * <p><strong><em>Available in Cloud Code and Node.js only.</em></strong>
    +   * </p>
    +   */
    +  AV.Cloud.useMasterKey = () => {
    +    AV._config.useMasterKey = true;
    +  };
    +}
    +
    +/**
    + * Call this method to set production environment variable.
    + * @function AV.setProduction
    + * @param {Boolean} production True is production environment,and
    + *  it's true by default.
    + */
    +AV.setProduction = production => {
    +  if (!isNullOrUndefined(production)) {
    +    AV._config.production = production ? 1 : 0;
    +  } else {
    +    // change to default value
    +    AV._config.production = null;
    +  }
    +};
    +
    +AV._setServerURLs = (urls, disableAppRouter = true) => {
    +  if (typeof urls !== 'string') {
    +    extend(AV._config.serverURLs, urls);
    +  } else {
    +    AV._config.serverURLs = fillServerURLs(urls);
    +  }
    +  if (disableAppRouter) {
    +    if (AV._appRouter) {
    +      AV._appRouter.disable();
    +    } else {
    +      _disableAppRouter = true;
    +    }
    +  }
    +};
    +/**
    + * Set server URLs for services.
    + * @function AV.setServerURL
    + * @since 4.3.0
    + * @param {String|ServerURLs} urls URLs for services. if a string was given, it will be applied for all services.
    + * You can also set them when initializing SDK with `options.serverURL`
    + */
    +AV.setServerURL = urls => AV._setServerURLs(urls);
    +AV.setServerURLs = AV.setServerURL;
    +
    +AV.keepErrorRawMessage = value => {
    +  AV._sharedConfig.keepErrorRawMessage = value;
    +};
    +
    +/**
    + * Set a deadline for requests to complete.
    + * Note that file upload requests are not affected.
    + * @function AV.setRequestTimeout
    + * @since 3.6.0
    + * @param {number} ms
    + */
    +AV.setRequestTimeout = ms => {
    +  AV._config.requestTimeout = ms;
    +};
    +
    +// backword compatible
    +AV.initialize = AV.init;
    +
    +const defineConfig = property =>
    +  Object.defineProperty(AV, property, {
    +    get() {
    +      return AV._config[property];
    +    },
    +    set(value) {
    +      AV._config[property] = value;
    +    },
    +  });
    +
    +['applicationId', 'applicationKey', 'masterKey', 'hookKey'].forEach(
    +  defineConfig
    +);
    +
    +
    +
    + + + + +
    + +
    + +
    + Documentation generated by JSDoc 3.6.3 on Mon Sep 25 2023 11:05:14 GMT+0000 (Coordinated Universal Time) using the docdash theme. +
    + + + + + diff --git a/docs/insight.js.html b/docs/insight.js.html new file mode 100644 index 000000000..8bceb2d16 --- /dev/null +++ b/docs/insight.js.html @@ -0,0 +1,197 @@ + + + + + insight.js - Documentation + + + + + + + + + + + + + + + + +
    + +

    insight.js

    + + + + + + + +
    +
    +
    const _ = require('underscore');
    +const AVError = require('./error');
    +const { request } = require('./request');
    +
    +module.exports = function(AV) {
    +  /**
    +   * 包含了使用了 LeanCloud
    +   *  <a href='/docs/leaninsight_guide.html'>离线数据分析功能</a>的函数。
    +   * <p><strong><em>
    +   *   仅在云引擎运行环境下有效。
    +   * </em></strong></p>
    +   * @namespace
    +   */
    +  AV.Insight = AV.Insight || {};
    +
    +  _.extend(
    +    AV.Insight,
    +    /** @lends AV.Insight */ {
    +      /**
    +       * 开始一个 Insight 任务。结果里将返回 Job id,你可以拿得到的 id 使用
    +       * AV.Insight.JobQuery 查询任务状态和结果。
    +       * @param {Object} jobConfig 任务配置的 JSON 对象,例如:<code><pre>
    +       *                   { "sql" : "select count(*) as c,gender from _User group by gender",
    +       *                     "saveAs": {
    +       *                         "className" : "UserGender",
    +       *                         "limit": 1
    +       *                      }
    +       *                   }
    +       *                  </pre></code>
    +       *               sql 指定任务执行的 SQL 语句, saveAs(可选) 指定将结果保存在哪张表里,limit 最大 1000。
    +       * @param {AuthOptions} [options]
    +       * @return {Promise} A promise that will be resolved with the result
    +       * of the function.
    +       */
    +      startJob: function(jobConfig, options) {
    +        if (!jobConfig || !jobConfig.sql) {
    +          throw new Error('Please provide the sql to run the job.');
    +        }
    +        var data = {
    +          jobConfig: jobConfig,
    +          appId: AV.applicationId,
    +        };
    +        return request({
    +          path: '/bigquery/jobs',
    +          method: 'POST',
    +          data: AV._encode(data, null, true),
    +          authOptions: options,
    +          signKey: false,
    +        }).then(resp => AV._decode(resp).id);
    +      },
    +
    +      /**
    +       * 监听 Insight 任务事件(未来推出独立部署的离线分析服务后开放)
    +       *  <p><strong><em>
    +       *     仅在云引擎运行环境下有效。
    +       *  </em></strong></p>
    +       * @param {String} event 监听的事件,目前尚不支持。
    +       * @param {Function} 监听回调函数,接收 (err, id) 两个参数,err 表示错误信息,
    +       *                   id 表示任务 id。接下来你可以拿这个 id 使用AV.Insight.JobQuery 查询任务状态和结果。
    +       *
    +       */
    +      on: function(event, cb) {},
    +    }
    +  );
    +
    +  /**
    +   * 创建一个对象,用于查询 Insight 任务状态和结果。
    +   * @class
    +   * @param {String} id 任务 id
    +   * @since 0.5.5
    +   */
    +  AV.Insight.JobQuery = function(id, className) {
    +    if (!id) {
    +      throw new Error('Please provide the job id.');
    +    }
    +    this.id = id;
    +    this.className = className;
    +    this._skip = 0;
    +    this._limit = 100;
    +  };
    +
    +  _.extend(
    +    AV.Insight.JobQuery.prototype,
    +    /** @lends AV.Insight.JobQuery.prototype */ {
    +      /**
    +       * Sets the number of results to skip before returning any results.
    +       * This is useful for pagination.
    +       * Default is to skip zero results.
    +       * @param {Number} n the number of results to skip.
    +       * @return {AV.Query} Returns the query, so you can chain this call.
    +       */
    +      skip: function(n) {
    +        this._skip = n;
    +        return this;
    +      },
    +
    +      /**
    +       * Sets the limit of the number of results to return. The default limit is
    +       * 100, with a maximum of 1000 results being returned at a time.
    +       * @param {Number} n the number of results to limit to.
    +       * @return {AV.Query} Returns the query, so you can chain this call.
    +       */
    +      limit: function(n) {
    +        this._limit = n;
    +        return this;
    +      },
    +
    +      /**
    +       * 查询任务状态和结果,任务结果为一个 JSON 对象,包括 status 表示任务状态, totalCount 表示总数,
    +       * results 数组表示任务结果数组,previewCount 表示可以返回的结果总数,任务的开始和截止时间
    +       * startTime、endTime 等信息。
    +       *
    +       * @param {AuthOptions} [options]
    +       * @return {Promise} A promise that will be resolved with the result
    +       * of the function.
    +       *
    +       */
    +      find: function(options) {
    +        var params = {
    +          skip: this._skip,
    +          limit: this._limit,
    +        };
    +
    +        return request({
    +          path: `/bigquery/jobs/${this.id}`,
    +          method: 'GET',
    +          query: params,
    +          authOptions: options,
    +          signKey: false,
    +        }).then(function(response) {
    +          if (response.error) {
    +            return Promise.reject(new AVError(response.code, response.error));
    +          }
    +          return Promise.resolve(response);
    +        });
    +      },
    +    }
    +  );
    +};
    +
    +
    +
    + + + + +
    + +
    + +
    + Documentation generated by JSDoc 3.6.3 on Mon Sep 25 2023 11:05:14 GMT+0000 (Coordinated Universal Time) using the docdash theme. +
    + + + + + diff --git a/docs/leaderboard.js.html b/docs/leaderboard.js.html new file mode 100644 index 000000000..3f30ced92 --- /dev/null +++ b/docs/leaderboard.js.html @@ -0,0 +1,533 @@ + + + + + leaderboard.js - Documentation + + + + + + + + + + + + + + + + +
    + +

    leaderboard.js

    + + + + + + + +
    +
    +
    const _ = require('underscore');
    +const { request } = require('./request');
    +const { ensureArray, parseDate } = require('./utils');
    +const AV = require('./av');
    +
    +/**
    + * The version change interval for Leaderboard
    + * @enum
    + */
    +AV.LeaderboardVersionChangeInterval = {
    +  NEVER: 'never',
    +  DAY: 'day',
    +  WEEK: 'week',
    +  MONTH: 'month',
    +};
    +
    +/**
    + * The order of the leaderboard results
    + * @enum
    + */
    +AV.LeaderboardOrder = {
    +  ASCENDING: 'ascending',
    +  DESCENDING: 'descending',
    +};
    +
    +/**
    + * The update strategy for Leaderboard
    + * @enum
    + */
    +AV.LeaderboardUpdateStrategy = {
    +  /** Only keep the best statistic. If the leaderboard is in descending order, the best statistic is the highest one. */
    +  BETTER: 'better',
    +  /** Keep the last updated statistic */
    +  LAST: 'last',
    +  /** Keep the sum of all updated statistics */
    +  SUM: 'sum',
    +};
    +
    +/**
    + * @typedef {Object} Ranking
    + * @property {number} rank Starts at 0
    + * @property {number} value the statistic value of this ranking
    + * @property {AV.User} user The user of this ranking
    + * @property {Statistic[]} [includedStatistics] Other statistics of the user, specified by the `includeStatistic` option of `AV.Leaderboard.getResults()`
    + */
    +
    +/**
    + * @typedef {Object} LeaderboardArchive
    + * @property {string} statisticName
    + * @property {number} version version of the leaderboard
    + * @property {string} status
    + * @property {string} url URL for the downloadable archive
    + * @property {Date} activatedAt time when this version became active
    + * @property {Date} deactivatedAt time when this version was deactivated by a version incrementing
    + */
    +
    +/**
    + * @class
    + */
    +function Statistic({ name, value, version }) {
    +  /**
    +   * @type {string}
    +   */
    +  this.name = name;
    +  /**
    +   * @type {number}
    +   */
    +  this.value = value;
    +  /**
    +   * @type {number?}
    +   */
    +  this.version = version;
    +}
    +
    +const parseStatisticData = statisticData => {
    +  const { statisticName: name, statisticValue: value, version } = AV._decode(
    +    statisticData
    +  );
    +  return new Statistic({ name, value, version });
    +};
    +
    +/**
    + * @class
    + */
    +AV.Leaderboard = function Leaderboard(statisticName) {
    +  /**
    +   * @type {string}
    +   */
    +  this.statisticName = statisticName;
    +  /**
    +   * @type {AV.LeaderboardOrder}
    +   */
    +  this.order = undefined;
    +  /**
    +   * @type {AV.LeaderboardUpdateStrategy}
    +   */
    +  this.updateStrategy = undefined;
    +  /**
    +   * @type {AV.LeaderboardVersionChangeInterval}
    +   */
    +  this.versionChangeInterval = undefined;
    +  /**
    +   * @type {number}
    +   */
    +  this.version = undefined;
    +  /**
    +   * @type {Date?}
    +   */
    +  this.nextResetAt = undefined;
    +  /**
    +   * @type {Date?}
    +   */
    +  this.createdAt = undefined;
    +};
    +const Leaderboard = AV.Leaderboard;
    +
    +/**
    + * Create an instance of Leaderboard for the give statistic name.
    + * @param {string} statisticName
    + * @return {AV.Leaderboard}
    + */
    +AV.Leaderboard.createWithoutData = statisticName =>
    +  new Leaderboard(statisticName);
    +/**
    + * (masterKey required) Create a new Leaderboard.
    + * @param {Object} options
    + * @param {string} options.statisticName
    + * @param {AV.LeaderboardOrder} options.order
    + * @param {AV.LeaderboardVersionChangeInterval} [options.versionChangeInterval] default to WEEK
    + * @param {AV.LeaderboardUpdateStrategy} [options.updateStrategy] default to BETTER
    + * @param {AuthOptions} [authOptions]
    + * @return {Promise<AV.Leaderboard>}
    + */
    +AV.Leaderboard.createLeaderboard = (
    +  { statisticName, order, versionChangeInterval, updateStrategy },
    +  authOptions
    +) =>
    +  request({
    +    method: 'POST',
    +    path: '/leaderboard/leaderboards',
    +    data: {
    +      statisticName,
    +      order,
    +      versionChangeInterval,
    +      updateStrategy,
    +    },
    +    authOptions,
    +  }).then(data => {
    +    const leaderboard = new Leaderboard(statisticName);
    +    return leaderboard._finishFetch(data);
    +  });
    +/**
    + * Get the Leaderboard with the specified statistic name.
    + * @param {string} statisticName
    + * @param {AuthOptions} [authOptions]
    + * @return {Promise<AV.Leaderboard>}
    + */
    +AV.Leaderboard.getLeaderboard = (statisticName, authOptions) =>
    +  Leaderboard.createWithoutData(statisticName).fetch(authOptions);
    +/**
    + * Get Statistics for the specified user.
    + * @param {AV.User} user The specified AV.User pointer.
    + * @param {Object} [options]
    + * @param {string[]} [options.statisticNames] Specify the statisticNames. If not set, all statistics of the user will be fetched.
    + * @param {AuthOptions} [authOptions]
    + * @return {Promise<Statistic[]>}
    + */
    +AV.Leaderboard.getStatistics = (user, { statisticNames } = {}, authOptions) =>
    +  Promise.resolve().then(() => {
    +    if (!(user && user.id)) throw new Error('user must be an AV.User');
    +    return request({
    +      method: 'GET',
    +      path: `/leaderboard/users/${user.id}/statistics`,
    +      query: {
    +        statistics: statisticNames
    +          ? ensureArray(statisticNames).join(',')
    +          : undefined,
    +      },
    +      authOptions,
    +    }).then(({ results }) => results.map(parseStatisticData));
    +  });
    +
    +/**
    + * Update Statistics for the specified user.
    + * @param {AV.User} user The specified AV.User pointer.
    + * @param {Object} statistics A name-value pair representing the statistics to update.
    + * @param {AuthOptions} [options] AuthOptions plus:
    + * @param {boolean} [options.overwrite] Wethere to overwrite these statistics disregarding the updateStrategy of there leaderboards
    + * @return {Promise<Statistic[]>}
    + */
    +AV.Leaderboard.updateStatistics = (user, statistics, options = {}) =>
    +  Promise.resolve().then(() => {
    +    if (!(user && user.id)) throw new Error('user must be an AV.User');
    +    const data = _.map(statistics, (value, key) => ({
    +      statisticName: key,
    +      statisticValue: value,
    +    }));
    +    const { overwrite } = options;
    +    return request({
    +      method: 'POST',
    +      path: `/leaderboard/users/${user.id}/statistics`,
    +      query: {
    +        overwrite: overwrite ? 1 : undefined,
    +      },
    +      data,
    +      authOptions: options,
    +    }).then(({ results }) => results.map(parseStatisticData));
    +  });
    +
    +/**
    + * Delete Statistics for the specified user.
    + * @param {AV.User} user The specified AV.User pointer.
    + * @param {Object} statistics A name-value pair representing the statistics to delete.
    + * @param {AuthOptions} [options]
    + * @return {Promise<void>}
    + */
    +AV.Leaderboard.deleteStatistics = (user, statisticNames, authOptions) =>
    +  Promise.resolve().then(() => {
    +    if (!(user && user.id)) throw new Error('user must be an AV.User');
    +    return request({
    +      method: 'DELETE',
    +      path: `/leaderboard/users/${user.id}/statistics`,
    +      query: {
    +        statistics: ensureArray(statisticNames).join(','),
    +      },
    +      authOptions,
    +    }).then(() => undefined);
    +  });
    +
    +_.extend(
    +  Leaderboard.prototype,
    +  /** @lends AV.Leaderboard.prototype */ {
    +    _finishFetch(data) {
    +      _.forEach(data, (value, key) => {
    +        if (key === 'updatedAt' || key === 'objectId') return;
    +        if (key === 'expiredAt') {
    +          key = 'nextResetAt';
    +        }
    +        if (key === 'createdAt') {
    +          value = parseDate(value);
    +        }
    +        if (value && value.__type === 'Date') {
    +          value = parseDate(value.iso);
    +        }
    +        this[key] = value;
    +      });
    +      return this;
    +    },
    +    /**
    +     * Fetch data from the srever.
    +     * @param {AuthOptions} [authOptions]
    +     * @return {Promise<AV.Leaderboard>}
    +     */
    +    fetch(authOptions) {
    +      return request({
    +        method: 'GET',
    +        path: `/leaderboard/leaderboards/${this.statisticName}`,
    +        authOptions,
    +      }).then(data => this._finishFetch(data));
    +    },
    +    /**
    +     * Counts the number of users participated in this leaderboard
    +     * @param {Object} [options]
    +     * @param {number} [options.version] Specify the version of the leaderboard
    +     * @param {AuthOptions} [authOptions]
    +     * @return {Promise<number>}
    +     */
    +    count({ version } = {}, authOptions) {
    +      return request({
    +        method: 'GET',
    +        path: `/leaderboard/leaderboards/${this.statisticName}/ranks`,
    +        query: {
    +          count: 1,
    +          limit: 0,
    +          version,
    +        },
    +        authOptions,
    +      }).then(({ count }) => count);
    +    },
    +    _getResults(
    +      {
    +        skip,
    +        limit,
    +        selectUserKeys,
    +        includeUserKeys,
    +        includeStatistics,
    +        version,
    +      },
    +      authOptions,
    +      userId
    +    ) {
    +      return request({
    +        method: 'GET',
    +        path: `/leaderboard/leaderboards/${this.statisticName}/ranks${
    +          userId ? `/${userId}` : ''
    +        }`,
    +        query: {
    +          skip,
    +          limit,
    +          selectUserKeys:
    +            _.union(
    +              ensureArray(selectUserKeys),
    +              ensureArray(includeUserKeys)
    +            ).join(',') || undefined,
    +          includeUser: includeUserKeys
    +            ? ensureArray(includeUserKeys).join(',')
    +            : undefined,
    +          includeStatistics: includeStatistics
    +            ? ensureArray(includeStatistics).join(',')
    +            : undefined,
    +          version,
    +        },
    +        authOptions,
    +      }).then(({ results: rankings }) =>
    +        rankings.map(rankingData => {
    +          const {
    +            user,
    +            statisticValue: value,
    +            rank,
    +            statistics = [],
    +          } = AV._decode(rankingData);
    +          return {
    +            user,
    +            value,
    +            rank,
    +            includedStatistics: statistics.map(parseStatisticData),
    +          };
    +        })
    +      );
    +    },
    +    /**
    +     * Retrieve a list of ranked users for this Leaderboard.
    +     * @param {Object} [options]
    +     * @param {number} [options.skip] The number of results to skip. This is useful for pagination.
    +     * @param {number} [options.limit] The limit of the number of results.
    +     * @param {string[]} [options.selectUserKeys] Specify keys of the users to include in the Rankings
    +     * @param {string[]} [options.includeUserKeys] If the value of a selected user keys is a Pointer, use this options to include its value.
    +     * @param {string[]} [options.includeStatistics] Specify other statistics to include in the Rankings
    +     * @param {number} [options.version] Specify the version of the leaderboard
    +     * @param {AuthOptions} [authOptions]
    +     * @return {Promise<Ranking[]>}
    +     */
    +    getResults(
    +      {
    +        skip,
    +        limit,
    +        selectUserKeys,
    +        includeUserKeys,
    +        includeStatistics,
    +        version,
    +      } = {},
    +      authOptions
    +    ) {
    +      return this._getResults(
    +        {
    +          skip,
    +          limit,
    +          selectUserKeys,
    +          includeUserKeys,
    +          includeStatistics,
    +          version,
    +        },
    +        authOptions
    +      );
    +    },
    +    /**
    +     * Retrieve a list of ranked users for this Leaderboard, centered on the specified user.
    +     * @param {AV.User} user The specified AV.User pointer.
    +     * @param {Object} [options]
    +     * @param {number} [options.limit] The limit of the number of results.
    +     * @param {string[]} [options.selectUserKeys] Specify keys of the users to include in the Rankings
    +     * @param {string[]} [options.includeUserKeys] If the value of a selected user keys is a Pointer, use this options to include its value.
    +     * @param {string[]} [options.includeStatistics] Specify other statistics to include in the Rankings
    +     * @param {number} [options.version] Specify the version of the leaderboard
    +     * @param {AuthOptions} [authOptions]
    +     * @return {Promise<Ranking[]>}
    +     */
    +    getResultsAroundUser(user, options = {}, authOptions) {
    +      // getResultsAroundUser(options, authOptions)
    +      if (user && typeof user.id !== 'string') {
    +        return this.getResultsAroundUser(undefined, user, options);
    +      }
    +      const {
    +        limit,
    +        selectUserKeys,
    +        includeUserKeys,
    +        includeStatistics,
    +        version,
    +      } = options;
    +      return this._getResults(
    +        { limit, selectUserKeys, includeUserKeys, includeStatistics, version },
    +        authOptions,
    +        user ? user.id : 'self'
    +      );
    +    },
    +    _update(data, authOptions) {
    +      return request({
    +        method: 'PUT',
    +        path: `/leaderboard/leaderboards/${this.statisticName}`,
    +        data,
    +        authOptions,
    +      }).then(result => this._finishFetch(result));
    +    },
    +    /**
    +     * (masterKey required) Update the version change interval of the Leaderboard.
    +     * @param {AV.LeaderboardVersionChangeInterval} versionChangeInterval
    +     * @param {AuthOptions} [authOptions]
    +     * @return {Promise<AV.Leaderboard>}
    +     */
    +    updateVersionChangeInterval(versionChangeInterval, authOptions) {
    +      return this._update({ versionChangeInterval }, authOptions);
    +    },
    +    /**
    +     * (masterKey required) Update the version change interval of the Leaderboard.
    +     * @param {AV.LeaderboardUpdateStrategy} updateStrategy
    +     * @param {AuthOptions} [authOptions]
    +     * @return {Promise<AV.Leaderboard>}
    +     */
    +    updateUpdateStrategy(updateStrategy, authOptions) {
    +      return this._update({ updateStrategy }, authOptions);
    +    },
    +    /**
    +     * (masterKey required) Reset the Leaderboard. The version of the Leaderboard will be incremented by 1.
    +     * @param {AuthOptions} [authOptions]
    +     * @return {Promise<AV.Leaderboard>}
    +     */
    +    reset(authOptions) {
    +      return request({
    +        method: 'PUT',
    +        path: `/leaderboard/leaderboards/${this.statisticName}/incrementVersion`,
    +        authOptions,
    +      }).then(data => this._finishFetch(data));
    +    },
    +    /**
    +     * (masterKey required) Delete the Leaderboard and its all archived versions.
    +     * @param {AuthOptions} [authOptions]
    +     * @return {void}
    +     */
    +    destroy(authOptions) {
    +      return AV.request({
    +        method: 'DELETE',
    +        path: `/leaderboard/leaderboards/${this.statisticName}`,
    +        authOptions,
    +      }).then(() => undefined);
    +    },
    +    /**
    +     * (masterKey required) Get archived versions.
    +     * @param {Object} [options]
    +     * @param {number} [options.skip] The number of results to skip. This is useful for pagination.
    +     * @param {number} [options.limit] The limit of the number of results.
    +     * @param {AuthOptions} [authOptions]
    +     * @return {Promise<LeaderboardArchive[]>}
    +     */
    +    getArchives({ skip, limit } = {}, authOptions) {
    +      return request({
    +        method: 'GET',
    +        path: `/leaderboard/leaderboards/${this.statisticName}/archives`,
    +        query: {
    +          skip,
    +          limit,
    +        },
    +        authOptions,
    +      }).then(({ results }) =>
    +        results.map(({ version, status, url, activatedAt, deactivatedAt }) => ({
    +          statisticName: this.statisticName,
    +          version,
    +          status,
    +          url,
    +          activatedAt: parseDate(activatedAt.iso),
    +          deactivatedAt: parseDate(deactivatedAt.iso),
    +        }))
    +      );
    +    },
    +  }
    +);
    +
    +
    +
    + + + + +
    + +
    + +
    + Documentation generated by JSDoc 3.6.3 on Mon Sep 25 2023 11:05:14 GMT+0000 (Coordinated Universal Time) using the docdash theme. +
    + + + + + diff --git a/docs/live-query.js.html b/docs/live-query.js.html new file mode 100644 index 000000000..8b3b06e2e --- /dev/null +++ b/docs/live-query.js.html @@ -0,0 +1,232 @@ + + + + + live-query.js - Documentation + + + + + + + + + + + + + + + + +
    + +

    live-query.js

    + + + + + + + +
    +
    +
    const _ = require('underscore');
    +const EventEmitter = require('eventemitter3');
    +const { inherits } = require('./utils');
    +const { request } = require('./request');
    +
    +const subscribe = (queryJSON, subscriptionId) =>
    +  request({
    +    method: 'POST',
    +    path: '/LiveQuery/subscribe',
    +    data: {
    +      query: queryJSON,
    +      id: subscriptionId,
    +    },
    +  });
    +
    +module.exports = AV => {
    +  const requireRealtime = () => {
    +    if (!AV._config.realtime) {
    +      throw new Error(
    +        'LiveQuery not supported. Please use the LiveQuery bundle. https://url.leanapp.cn/enable-live-query'
    +      );
    +    }
    +  };
    +  /**
    +   * @class
    +   * A LiveQuery, created by {@link AV.Query#subscribe} is an EventEmitter notifies changes of the Query.
    +   * @since 3.0.0
    +   */
    +  AV.LiveQuery = inherits(
    +    EventEmitter,
    +    /** @lends AV.LiveQuery.prototype */ {
    +      constructor(id, client, queryJSON, subscriptionId) {
    +        EventEmitter.apply(this);
    +        this.id = id;
    +        this._client = client;
    +        this._client.register(this);
    +        this._queryJSON = queryJSON;
    +        this._subscriptionId = subscriptionId;
    +        this._onMessage = this._dispatch.bind(this);
    +        this._onReconnect = () => {
    +          subscribe(this._queryJSON, this._subscriptionId).catch(error =>
    +            console.error(`LiveQuery resubscribe error: ${error.message}`)
    +          );
    +        };
    +        client.on('message', this._onMessage);
    +        client.on('reconnect', this._onReconnect);
    +      },
    +      _dispatch(message) {
    +        message.forEach(({ op, object, query_id: queryId, updatedKeys }) => {
    +          if (queryId !== this.id) return;
    +          const target = AV.parseJSON(
    +            _.extend(
    +              {
    +                __type: object.className === '_File' ? 'File' : 'Object',
    +              },
    +              object
    +            )
    +          );
    +          if (updatedKeys) {
    +            /**
    +             * An existing AV.Object which fulfills the Query you subscribe is updated.
    +             * @event AV.LiveQuery#update
    +             * @param {AV.Object|AV.File} target updated object
    +             * @param {String[]} updatedKeys updated keys
    +             */
    +            /**
    +             * An existing AV.Object which doesn't fulfill the Query is updated and now it fulfills the Query.
    +             * @event AV.LiveQuery#enter
    +             * @param {AV.Object|AV.File} target updated object
    +             * @param {String[]} updatedKeys updated keys
    +             */
    +            /**
    +             * An existing AV.Object which fulfills the Query is updated and now it doesn't fulfill the Query.
    +             * @event AV.LiveQuery#leave
    +             * @param {AV.Object|AV.File} target updated object
    +             * @param {String[]} updatedKeys updated keys
    +             */
    +            this.emit(op, target, updatedKeys);
    +          } else {
    +            /**
    +             * A new AV.Object which fulfills the Query you subscribe is created.
    +             * @event AV.LiveQuery#create
    +             * @param {AV.Object|AV.File} target updated object
    +             */
    +            /**
    +             * An existing AV.Object which fulfills the Query you subscribe is deleted.
    +             * @event AV.LiveQuery#delete
    +             * @param {AV.Object|AV.File} target updated object
    +             */
    +            this.emit(op, target);
    +          }
    +        });
    +      },
    +      /**
    +       * unsubscribe the query
    +       *
    +       * @return {Promise}
    +       */
    +      unsubscribe() {
    +        const client = this._client;
    +        client.off('message', this._onMessage);
    +        client.off('reconnect', this._onReconnect);
    +        client.deregister(this);
    +        return request({
    +          method: 'POST',
    +          path: '/LiveQuery/unsubscribe',
    +          data: {
    +            id: client.id,
    +            query_id: this.id,
    +          },
    +        });
    +      },
    +    },
    +    /** @lends AV.LiveQuery */
    +    {
    +      init(
    +        query,
    +        {
    +          subscriptionId: userDefinedSubscriptionId = AV._getSubscriptionId(),
    +        } = {}
    +      ) {
    +        requireRealtime();
    +        if (!(query instanceof AV.Query))
    +          throw new TypeError('LiveQuery must be inited with a Query');
    +        return Promise.resolve(userDefinedSubscriptionId).then(subscriptionId =>
    +          AV._config.realtime
    +            .createLiveQueryClient(subscriptionId)
    +            .then(liveQueryClient => {
    +              const { where, keys, returnACL } = query._getParams();
    +              const queryJSON = {
    +                where,
    +                keys,
    +                returnACL,
    +                className: query.className,
    +              };
    +              const promise = subscribe(queryJSON, subscriptionId)
    +                .then(
    +                  ({ query_id: queryId }) =>
    +                    new AV.LiveQuery(
    +                      queryId,
    +                      liveQueryClient,
    +                      queryJSON,
    +                      subscriptionId
    +                    )
    +                )
    +                .finally(() => {
    +                  liveQueryClient.deregister(promise);
    +                });
    +              liveQueryClient.register(promise);
    +              return promise;
    +            })
    +        );
    +      },
    +      /**
    +       * Pause the LiveQuery connection. This is useful to deactivate the SDK when the app is swtiched to background.
    +       * @static
    +       * @return void
    +       */
    +      pause() {
    +        requireRealtime();
    +        return AV._config.realtime.pause();
    +      },
    +      /**
    +       * Resume the LiveQuery connection. All subscriptions will be restored after reconnection.
    +       * @static
    +       * @return void
    +       */
    +      resume() {
    +        requireRealtime();
    +        return AV._config.realtime.resume();
    +      },
    +    }
    +  );
    +};
    +
    +
    +
    + + + + +
    + +
    + +
    + Documentation generated by JSDoc 3.6.3 on Mon Sep 25 2023 11:05:14 GMT+0000 (Coordinated Universal Time) using the docdash theme. +
    + + + + + diff --git a/docs/object.js.html b/docs/object.js.html new file mode 100644 index 000000000..a0687c4c4 --- /dev/null +++ b/docs/object.js.html @@ -0,0 +1,1833 @@ + + + + + object.js - Documentation + + + + + + + + + + + + + + + + +
    + +

    object.js

    + + + + + + + +
    +
    +
    const _ = require('underscore');
    +const AVError = require('./error');
    +const { _request } = require('./request');
    +const {
    +  isNullOrUndefined,
    +  ensureArray,
    +  transformFetchOptions,
    +  setValue,
    +  findValue,
    +  isPlainObject,
    +  continueWhile,
    +} = require('./utils');
    +
    +const recursiveToPointer = value => {
    +  if (_.isArray(value)) return value.map(recursiveToPointer);
    +  if (isPlainObject(value)) return _.mapObject(value, recursiveToPointer);
    +  if (_.isObject(value) && value._toPointer) return value._toPointer();
    +  return value;
    +};
    +
    +const RESERVED_KEYS = ['objectId', 'createdAt', 'updatedAt'];
    +const checkReservedKey = key => {
    +  if (RESERVED_KEYS.indexOf(key) !== -1) {
    +    throw new Error(`key[${key}] is reserved`);
    +  }
    +};
    +
    +const handleBatchResults = results => {
    +  const firstError = _.find(results, result => result instanceof Error);
    +  if (!firstError) {
    +    return results;
    +  }
    +  const error = new AVError(firstError.code, firstError.message);
    +  error.results = results;
    +  throw error;
    +};
    +
    +// Helper function to get a value from a Backbone object as a property
    +// or as a function.
    +function getValue(object, prop) {
    +  if (!(object && object[prop])) {
    +    return null;
    +  }
    +  return _.isFunction(object[prop]) ? object[prop]() : object[prop];
    +}
    +
    +// AV.Object is analogous to the Java AVObject.
    +// It also implements the same interface as a Backbone model.
    +
    +module.exports = function(AV) {
    +  /**
    +   * Creates a new model with defined attributes. A client id (cid) is
    +   * automatically generated and assigned for you.
    +   *
    +   * <p>You won't normally call this method directly.  It is recommended that
    +   * you use a subclass of <code>AV.Object</code> instead, created by calling
    +   * <code>extend</code>.</p>
    +   *
    +   * <p>However, if you don't want to use a subclass, or aren't sure which
    +   * subclass is appropriate, you can use this form:<pre>
    +   *     var object = new AV.Object("ClassName");
    +   * </pre>
    +   * That is basically equivalent to:<pre>
    +   *     var MyClass = AV.Object.extend("ClassName");
    +   *     var object = new MyClass();
    +   * </pre></p>
    +   *
    +   * @param {Object} attributes The initial set of data to store in the object.
    +   * @param {Object} options A set of Backbone-like options for creating the
    +   *     object.  The only option currently supported is "collection".
    +   * @see AV.Object.extend
    +   *
    +   * @class
    +   *
    +   * <p>The fundamental unit of AV data, which implements the Backbone Model
    +   * interface.</p>
    +   */
    +  AV.Object = function(attributes, options) {
    +    // Allow new AV.Object("ClassName") as a shortcut to _create.
    +    if (_.isString(attributes)) {
    +      return AV.Object._create.apply(this, arguments);
    +    }
    +
    +    attributes = attributes || {};
    +    if (options && options.parse) {
    +      attributes = this.parse(attributes);
    +      attributes = this._mergeMagicFields(attributes);
    +    }
    +    var defaults = getValue(this, 'defaults');
    +    if (defaults) {
    +      attributes = _.extend({}, defaults, attributes);
    +    }
    +    if (options && options.collection) {
    +      this.collection = options.collection;
    +    }
    +
    +    this._serverData = {}; // The last known data for this object from cloud.
    +    this._opSetQueue = [{}]; // List of sets of changes to the data.
    +    this._flags = {};
    +    this.attributes = {}; // The best estimate of this's current data.
    +
    +    this._hashedJSON = {}; // Hash of values of containers at last save.
    +    this._escapedAttributes = {};
    +    this.cid = _.uniqueId('c');
    +    this.changed = {};
    +    this._silent = {};
    +    this._pending = {};
    +    this.set(attributes, { silent: true });
    +    this.changed = {};
    +    this._silent = {};
    +    this._pending = {};
    +    this._hasData = true;
    +    this._previousAttributes = _.clone(this.attributes);
    +    this.initialize.apply(this, arguments);
    +  };
    +
    +  /**
    +   * @lends AV.Object.prototype
    +   * @property {String} id The objectId of the AV Object.
    +   */
    +
    +  /**
    +   * Saves the given list of AV.Object.
    +   * If any error is encountered, stops and calls the error handler.
    +   *
    +   * @example
    +   * AV.Object.saveAll([object1, object2, ...]).then(function(list) {
    +   *   // All the objects were saved.
    +   * }, function(error) {
    +   *   // An error occurred while saving one of the objects.
    +   * });
    +   *
    +   * @param {Array} list A list of <code>AV.Object</code>.
    +   */
    +  AV.Object.saveAll = function(list, options) {
    +    return AV.Object._deepSaveAsync(list, null, options);
    +  };
    +
    +  /**
    +   * Fetch the given list of AV.Object.
    +   *
    +   * @param {AV.Object[]} objects A list of <code>AV.Object</code>
    +   * @param {AuthOptions} options
    +   * @return {Promise.<AV.Object[]>} The given list of <code>AV.Object</code>, updated
    +   */
    +
    +  AV.Object.fetchAll = (objects, options) =>
    +    Promise.resolve()
    +      .then(() =>
    +        _request(
    +          'batch',
    +          null,
    +          null,
    +          'POST',
    +          {
    +            requests: _.map(objects, object => {
    +              if (!object.className)
    +                throw new Error('object must have className to fetch');
    +              if (!object.id) throw new Error('object must have id to fetch');
    +              if (object.dirty())
    +                throw new Error('object is modified but not saved');
    +              return {
    +                method: 'GET',
    +                path: `/1.1/classes/${object.className}/${object.id}`,
    +              };
    +            }),
    +          },
    +          options
    +        )
    +      )
    +      .then(function(response) {
    +        const results = _.map(objects, function(object, i) {
    +          if (response[i].success) {
    +            const fetchedAttrs = object.parse(response[i].success);
    +            object._cleanupUnsetKeys(fetchedAttrs);
    +            object._finishFetch(fetchedAttrs);
    +            return object;
    +          }
    +          if (response[i].success === null) {
    +            return new AVError(AVError.OBJECT_NOT_FOUND, 'Object not found.');
    +          }
    +          return new AVError(response[i].error.code, response[i].error.error);
    +        });
    +        return handleBatchResults(results);
    +      });
    +
    +  // Attach all inheritable methods to the AV.Object prototype.
    +  _.extend(
    +    AV.Object.prototype,
    +    AV.Events,
    +    /** @lends AV.Object.prototype */ {
    +      _fetchWhenSave: false,
    +
    +      /**
    +       * Initialize is an empty function by default. Override it with your own
    +       * initialization logic.
    +       */
    +      initialize: function() {},
    +
    +      /**
    +       * Set whether to enable fetchWhenSave option when updating object.
    +       * When set true, SDK would fetch the latest object after saving.
    +       * Default is false.
    +       *
    +       * @deprecated use AV.Object#save with options.fetchWhenSave instead
    +       * @param {boolean} enable  true to enable fetchWhenSave option.
    +       */
    +      fetchWhenSave: function(enable) {
    +        console.warn(
    +          'AV.Object#fetchWhenSave is deprecated, use AV.Object#save with options.fetchWhenSave instead.'
    +        );
    +        if (!_.isBoolean(enable)) {
    +          throw new Error('Expect boolean value for fetchWhenSave');
    +        }
    +        this._fetchWhenSave = enable;
    +      },
    +
    +      /**
    +       * Returns the object's objectId.
    +       * @return {String} the objectId.
    +       */
    +      getObjectId: function() {
    +        return this.id;
    +      },
    +
    +      /**
    +       * Returns the object's createdAt attribute.
    +       * @return {Date}
    +       */
    +      getCreatedAt: function() {
    +        return this.createdAt;
    +      },
    +
    +      /**
    +       * Returns the object's updatedAt attribute.
    +       * @return {Date}
    +       */
    +      getUpdatedAt: function() {
    +        return this.updatedAt;
    +      },
    +
    +      /**
    +       * Returns a JSON version of the object.
    +       * @return {Object}
    +       */
    +      toJSON: function(key, holder, seenObjects = []) {
    +        return this._toFullJSON(seenObjects, false);
    +      },
    +
    +      /**
    +       * Returns a JSON version of the object with meta data.
    +       * Inverse to {@link AV.parseJSON}
    +       * @since 3.0.0
    +       * @return {Object}
    +       */
    +      toFullJSON(seenObjects = []) {
    +        return this._toFullJSON(seenObjects);
    +      },
    +
    +      _toFullJSON: function(seenObjects, full = true) {
    +        var json = _.clone(this.attributes);
    +        if (_.isArray(seenObjects)) {
    +          var newSeenObjects = seenObjects.concat(this);
    +        }
    +        AV._objectEach(json, function(val, key) {
    +          json[key] = AV._encode(val, newSeenObjects, undefined, full);
    +        });
    +        AV._objectEach(this._operations, function(val, key) {
    +          json[key] = val;
    +        });
    +
    +        if (_.has(this, 'id')) {
    +          json.objectId = this.id;
    +        }
    +        ['createdAt', 'updatedAt'].forEach(key => {
    +          if (_.has(this, key)) {
    +            const val = this[key];
    +            json[key] = _.isDate(val) ? val.toJSON() : val;
    +          }
    +        });
    +        if (full) {
    +          json.__type = 'Object';
    +          if (_.isArray(seenObjects) && seenObjects.length)
    +            json.__type = 'Pointer';
    +          json.className = this.className;
    +        }
    +        return json;
    +      },
    +
    +      /**
    +       * Updates _hashedJSON to reflect the current state of this object.
    +       * Adds any changed hash values to the set of pending changes.
    +       * @private
    +       */
    +      _refreshCache: function() {
    +        var self = this;
    +        if (self._refreshingCache) {
    +          return;
    +        }
    +        self._refreshingCache = true;
    +        AV._objectEach(this.attributes, function(value, key) {
    +          if (value instanceof AV.Object) {
    +            value._refreshCache();
    +          } else if (_.isObject(value)) {
    +            if (self._resetCacheForKey(key)) {
    +              self.set(key, new AV.Op.Set(value), { silent: true });
    +            }
    +          }
    +        });
    +        delete self._refreshingCache;
    +      },
    +
    +      /**
    +       * Returns true if this object has been modified since its last
    +       * save/refresh.  If an attribute is specified, it returns true only if that
    +       * particular attribute has been modified since the last save/refresh.
    +       * @param {String} attr An attribute name (optional).
    +       * @return {Boolean}
    +       */
    +      dirty: function(attr) {
    +        this._refreshCache();
    +
    +        var currentChanges = _.last(this._opSetQueue);
    +
    +        if (attr) {
    +          return currentChanges[attr] ? true : false;
    +        }
    +        if (!this.id) {
    +          return true;
    +        }
    +        if (_.keys(currentChanges).length > 0) {
    +          return true;
    +        }
    +        return false;
    +      },
    +
    +      /**
    +       * Returns the keys of the modified attribute since its last save/refresh.
    +       * @return {String[]}
    +       */
    +      dirtyKeys: function() {
    +        this._refreshCache();
    +        var currentChanges = _.last(this._opSetQueue);
    +        return _.keys(currentChanges);
    +      },
    +
    +      /**
    +       * Gets a Pointer referencing this Object.
    +       * @private
    +       */
    +      _toPointer: function() {
    +        // if (!this.id) {
    +        //   throw new Error("Can't serialize an unsaved AV.Object");
    +        // }
    +        return {
    +          __type: 'Pointer',
    +          className: this.className,
    +          objectId: this.id,
    +        };
    +      },
    +
    +      /**
    +       * Gets the value of an attribute.
    +       * @param {String} attr The string name of an attribute.
    +       */
    +      get: function(attr) {
    +        switch (attr) {
    +          case 'objectId':
    +            return this.id;
    +          case 'createdAt':
    +          case 'updatedAt':
    +            return this[attr];
    +          default:
    +            return this.attributes[attr];
    +        }
    +      },
    +
    +      /**
    +       * Gets a relation on the given class for the attribute.
    +       * @param {String} attr The attribute to get the relation for.
    +       * @return {AV.Relation}
    +       */
    +      relation: function(attr) {
    +        var value = this.get(attr);
    +        if (value) {
    +          if (!(value instanceof AV.Relation)) {
    +            throw new Error('Called relation() on non-relation field ' + attr);
    +          }
    +          value._ensureParentAndKey(this, attr);
    +          return value;
    +        } else {
    +          return new AV.Relation(this, attr);
    +        }
    +      },
    +
    +      /**
    +       * Gets the HTML-escaped value of an attribute.
    +       */
    +      escape: function(attr) {
    +        var html = this._escapedAttributes[attr];
    +        if (html) {
    +          return html;
    +        }
    +        var val = this.attributes[attr];
    +        var escaped;
    +        if (isNullOrUndefined(val)) {
    +          escaped = '';
    +        } else {
    +          escaped = _.escape(val.toString());
    +        }
    +        this._escapedAttributes[attr] = escaped;
    +        return escaped;
    +      },
    +
    +      /**
    +       * Returns <code>true</code> if the attribute contains a value that is not
    +       * null or undefined.
    +       * @param {String} attr The string name of the attribute.
    +       * @return {Boolean}
    +       */
    +      has: function(attr) {
    +        return !isNullOrUndefined(this.attributes[attr]);
    +      },
    +
    +      /**
    +       * Pulls "special" fields like objectId, createdAt, etc. out of attrs
    +       * and puts them on "this" directly.  Removes them from attrs.
    +       * @param attrs - A dictionary with the data for this AV.Object.
    +       * @private
    +       */
    +      _mergeMagicFields: function(attrs) {
    +        // Check for changes of magic fields.
    +        var model = this;
    +        var specialFields = ['objectId', 'createdAt', 'updatedAt'];
    +        AV._arrayEach(specialFields, function(attr) {
    +          if (attrs[attr]) {
    +            if (attr === 'objectId') {
    +              model.id = attrs[attr];
    +            } else if (
    +              (attr === 'createdAt' || attr === 'updatedAt') &&
    +              !_.isDate(attrs[attr])
    +            ) {
    +              model[attr] = AV._parseDate(attrs[attr]);
    +            } else {
    +              model[attr] = attrs[attr];
    +            }
    +            delete attrs[attr];
    +          }
    +        });
    +        return attrs;
    +      },
    +
    +      /**
    +       * Returns the json to be sent to the server.
    +       * @private
    +       */
    +      _startSave: function() {
    +        this._opSetQueue.push({});
    +      },
    +
    +      /**
    +       * Called when a save fails because of an error. Any changes that were part
    +       * of the save need to be merged with changes made after the save. This
    +       * might throw an exception is you do conflicting operations. For example,
    +       * if you do:
    +       *   object.set("foo", "bar");
    +       *   object.set("invalid field name", "baz");
    +       *   object.save();
    +       *   object.increment("foo");
    +       * then this will throw when the save fails and the client tries to merge
    +       * "bar" with the +1.
    +       * @private
    +       */
    +      _cancelSave: function() {
    +        var failedChanges = _.first(this._opSetQueue);
    +        this._opSetQueue = _.rest(this._opSetQueue);
    +        var nextChanges = _.first(this._opSetQueue);
    +        AV._objectEach(failedChanges, function(op, key) {
    +          var op1 = failedChanges[key];
    +          var op2 = nextChanges[key];
    +          if (op1 && op2) {
    +            nextChanges[key] = op2._mergeWithPrevious(op1);
    +          } else if (op1) {
    +            nextChanges[key] = op1;
    +          }
    +        });
    +        this._saving = this._saving - 1;
    +      },
    +
    +      /**
    +       * Called when a save completes successfully. This merges the changes that
    +       * were saved into the known server data, and overrides it with any data
    +       * sent directly from the server.
    +       * @private
    +       */
    +      _finishSave: function(serverData) {
    +        // Grab a copy of any object referenced by this object. These instances
    +        // may have already been fetched, and we don't want to lose their data.
    +        // Note that doing it like this means we will unify separate copies of the
    +        // same object, but that's a risk we have to take.
    +        var fetchedObjects = {};
    +        AV._traverse(this.attributes, function(object) {
    +          if (object instanceof AV.Object && object.id && object._hasData) {
    +            fetchedObjects[object.id] = object;
    +          }
    +        });
    +
    +        var savedChanges = _.first(this._opSetQueue);
    +        this._opSetQueue = _.rest(this._opSetQueue);
    +        this._applyOpSet(savedChanges, this._serverData);
    +        this._mergeMagicFields(serverData);
    +        var self = this;
    +        AV._objectEach(serverData, function(value, key) {
    +          self._serverData[key] = AV._decode(value, key);
    +
    +          // Look for any objects that might have become unfetched and fix them
    +          // by replacing their values with the previously observed values.
    +          var fetched = AV._traverse(self._serverData[key], function(object) {
    +            if (object instanceof AV.Object && fetchedObjects[object.id]) {
    +              return fetchedObjects[object.id];
    +            }
    +          });
    +          if (fetched) {
    +            self._serverData[key] = fetched;
    +          }
    +        });
    +        this._rebuildAllEstimatedData();
    +        const opSetQueue = this._opSetQueue.map(_.clone);
    +        this._refreshCache();
    +        this._opSetQueue = opSetQueue;
    +        this._saving = this._saving - 1;
    +      },
    +
    +      /**
    +       * Called when a fetch or login is complete to set the known server data to
    +       * the given object.
    +       * @private
    +       */
    +      _finishFetch: function(serverData, hasData) {
    +        // Clear out any changes the user might have made previously.
    +        this._opSetQueue = [{}];
    +
    +        // Bring in all the new server data.
    +        this._mergeMagicFields(serverData);
    +        var self = this;
    +        AV._objectEach(serverData, function(value, key) {
    +          self._serverData[key] = AV._decode(value, key);
    +        });
    +
    +        // Refresh the attributes.
    +        this._rebuildAllEstimatedData();
    +
    +        // Clear out the cache of mutable containers.
    +        this._refreshCache();
    +        this._opSetQueue = [{}];
    +
    +        this._hasData = hasData;
    +      },
    +
    +      /**
    +       * Applies the set of AV.Op in opSet to the object target.
    +       * @private
    +       */
    +      _applyOpSet: function(opSet, target) {
    +        var self = this;
    +        AV._objectEach(opSet, function(change, key) {
    +          const [value, actualTarget, actualKey] = findValue(target, key);
    +          setValue(target, key, change._estimate(value, self, key));
    +          if (actualTarget && actualTarget[actualKey] === AV.Op._UNSET) {
    +            delete actualTarget[actualKey];
    +          }
    +        });
    +      },
    +
    +      /**
    +       * Replaces the cached value for key with the current value.
    +       * Returns true if the new value is different than the old value.
    +       * @private
    +       */
    +      _resetCacheForKey: function(key) {
    +        var value = this.attributes[key];
    +        if (
    +          _.isObject(value) &&
    +          !(value instanceof AV.Object) &&
    +          !(value instanceof AV.File)
    +        ) {
    +          var json = JSON.stringify(recursiveToPointer(value));
    +          if (this._hashedJSON[key] !== json) {
    +            var wasSet = !!this._hashedJSON[key];
    +            this._hashedJSON[key] = json;
    +            return wasSet;
    +          }
    +        }
    +        return false;
    +      },
    +
    +      /**
    +       * Populates attributes[key] by starting with the last known data from the
    +       * server, and applying all of the local changes that have been made to that
    +       * key since then.
    +       * @private
    +       */
    +      _rebuildEstimatedDataForKey: function(key) {
    +        var self = this;
    +        delete this.attributes[key];
    +        if (this._serverData[key]) {
    +          this.attributes[key] = this._serverData[key];
    +        }
    +        AV._arrayEach(this._opSetQueue, function(opSet) {
    +          var op = opSet[key];
    +          if (op) {
    +            const [value, actualTarget, actualKey, firstKey] = findValue(
    +              self.attributes,
    +              key
    +            );
    +            setValue(self.attributes, key, op._estimate(value, self, key));
    +            if (actualTarget && actualTarget[actualKey] === AV.Op._UNSET) {
    +              delete actualTarget[actualKey];
    +            }
    +            self._resetCacheForKey(firstKey);
    +          }
    +        });
    +      },
    +
    +      /**
    +       * Populates attributes by starting with the last known data from the
    +       * server, and applying all of the local changes that have been made since
    +       * then.
    +       * @private
    +       */
    +      _rebuildAllEstimatedData: function() {
    +        var self = this;
    +
    +        var previousAttributes = _.clone(this.attributes);
    +
    +        this.attributes = _.clone(this._serverData);
    +        AV._arrayEach(this._opSetQueue, function(opSet) {
    +          self._applyOpSet(opSet, self.attributes);
    +          AV._objectEach(opSet, function(op, key) {
    +            self._resetCacheForKey(key);
    +          });
    +        });
    +
    +        // Trigger change events for anything that changed because of the fetch.
    +        AV._objectEach(previousAttributes, function(oldValue, key) {
    +          if (self.attributes[key] !== oldValue) {
    +            self.trigger('change:' + key, self, self.attributes[key], {});
    +          }
    +        });
    +        AV._objectEach(this.attributes, function(newValue, key) {
    +          if (!_.has(previousAttributes, key)) {
    +            self.trigger('change:' + key, self, newValue, {});
    +          }
    +        });
    +      },
    +
    +      /**
    +       * Sets a hash of model attributes on the object, firing
    +       * <code>"change"</code> unless you choose to silence it.
    +       *
    +       * <p>You can call it with an object containing keys and values, or with one
    +       * key and value.  For example:</p>
    +       *
    +       * @example
    +       * gameTurn.set({
    +       *   player: player1,
    +       *   diceRoll: 2
    +       * });
    +       *
    +       * game.set("currentPlayer", player2);
    +       *
    +       * game.set("finished", true);
    +       *
    +       * @param {String} key The key to set.
    +       * @param {Any} value The value to give it.
    +       * @param {Object} [options]
    +       * @param {Boolean} [options.silent]
    +       * @return {AV.Object} self if succeeded, throws if the value is not valid.
    +       * @see AV.Object#validate
    +       */
    +      set: function(key, value, options) {
    +        var attrs;
    +        if (_.isObject(key) || isNullOrUndefined(key)) {
    +          attrs = _.mapObject(key, function(v, k) {
    +            checkReservedKey(k);
    +            return AV._decode(v, k);
    +          });
    +          options = value;
    +        } else {
    +          attrs = {};
    +          checkReservedKey(key);
    +          attrs[key] = AV._decode(value, key);
    +        }
    +
    +        // Extract attributes and options.
    +        options = options || {};
    +        if (!attrs) {
    +          return this;
    +        }
    +        if (attrs instanceof AV.Object) {
    +          attrs = attrs.attributes;
    +        }
    +
    +        // If the unset option is used, every attribute should be a Unset.
    +        if (options.unset) {
    +          AV._objectEach(attrs, function(unused_value, key) {
    +            attrs[key] = new AV.Op.Unset();
    +          });
    +        }
    +
    +        // Apply all the attributes to get the estimated values.
    +        var dataToValidate = _.clone(attrs);
    +        var self = this;
    +        AV._objectEach(dataToValidate, function(value, key) {
    +          if (value instanceof AV.Op) {
    +            dataToValidate[key] = value._estimate(
    +              self.attributes[key],
    +              self,
    +              key
    +            );
    +            if (dataToValidate[key] === AV.Op._UNSET) {
    +              delete dataToValidate[key];
    +            }
    +          }
    +        });
    +
    +        // Run validation.
    +        this._validate(attrs, options);
    +
    +        options.changes = {};
    +        var escaped = this._escapedAttributes;
    +
    +        // Update attributes.
    +        AV._arrayEach(_.keys(attrs), function(attr) {
    +          var val = attrs[attr];
    +
    +          // If this is a relation object we need to set the parent correctly,
    +          // since the location where it was parsed does not have access to
    +          // this object.
    +          if (val instanceof AV.Relation) {
    +            val.parent = self;
    +          }
    +
    +          if (!(val instanceof AV.Op)) {
    +            val = new AV.Op.Set(val);
    +          }
    +
    +          // See if this change will actually have any effect.
    +          var isRealChange = true;
    +          if (
    +            val instanceof AV.Op.Set &&
    +            _.isEqual(self.attributes[attr], val.value)
    +          ) {
    +            isRealChange = false;
    +          }
    +
    +          if (isRealChange) {
    +            delete escaped[attr];
    +            if (options.silent) {
    +              self._silent[attr] = true;
    +            } else {
    +              options.changes[attr] = true;
    +            }
    +          }
    +
    +          var currentChanges = _.last(self._opSetQueue);
    +          currentChanges[attr] = val._mergeWithPrevious(currentChanges[attr]);
    +          self._rebuildEstimatedDataForKey(attr);
    +
    +          if (isRealChange) {
    +            self.changed[attr] = self.attributes[attr];
    +            if (!options.silent) {
    +              self._pending[attr] = true;
    +            }
    +          } else {
    +            delete self.changed[attr];
    +            delete self._pending[attr];
    +          }
    +        });
    +
    +        if (!options.silent) {
    +          this.change(options);
    +        }
    +        return this;
    +      },
    +
    +      /**
    +       * Remove an attribute from the model, firing <code>"change"</code> unless
    +       * you choose to silence it. This is a noop if the attribute doesn't
    +       * exist.
    +       * @param key {String} The key.
    +       */
    +      unset: function(attr, options) {
    +        options = options || {};
    +        options.unset = true;
    +        return this.set(attr, null, options);
    +      },
    +
    +      /**
    +       * Atomically increments the value of the given attribute the next time the
    +       * object is saved. If no amount is specified, 1 is used by default.
    +       *
    +       * @param key {String} The key.
    +       * @param amount {Number} The amount to increment by.
    +       */
    +      increment: function(attr, amount) {
    +        if (_.isUndefined(amount) || _.isNull(amount)) {
    +          amount = 1;
    +        }
    +        return this.set(attr, new AV.Op.Increment(amount));
    +      },
    +
    +      /**
    +       * Atomically add an object to the end of the array associated with a given
    +       * key.
    +       * @param key {String} The key.
    +       * @param item {} The item to add.
    +       */
    +      add: function(attr, item) {
    +        return this.set(attr, new AV.Op.Add(ensureArray(item)));
    +      },
    +
    +      /**
    +       * Atomically add an object to the array associated with a given key, only
    +       * if it is not already present in the array. The position of the insert is
    +       * not guaranteed.
    +       *
    +       * @param key {String} The key.
    +       * @param item {} The object to add.
    +       */
    +      addUnique: function(attr, item) {
    +        return this.set(attr, new AV.Op.AddUnique(ensureArray(item)));
    +      },
    +
    +      /**
    +       * Atomically remove all instances of an object from the array associated
    +       * with a given key.
    +       *
    +       * @param key {String} The key.
    +       * @param item {} The object to remove.
    +       */
    +      remove: function(attr, item) {
    +        return this.set(attr, new AV.Op.Remove(ensureArray(item)));
    +      },
    +
    +      /**
    +       * Atomically apply a "bit and" operation on the value associated with a
    +       * given key.
    +       *
    +       * @param key {String} The key.
    +       * @param value {Number} The value to apply.
    +       */
    +      bitAnd(attr, value) {
    +        return this.set(attr, new AV.Op.BitAnd(value));
    +      },
    +
    +      /**
    +       * Atomically apply a "bit or" operation on the value associated with a
    +       * given key.
    +       *
    +       * @param key {String} The key.
    +       * @param value {Number} The value to apply.
    +       */
    +      bitOr(attr, value) {
    +        return this.set(attr, new AV.Op.BitOr(value));
    +      },
    +
    +      /**
    +       * Atomically apply a "bit xor" operation on the value associated with a
    +       * given key.
    +       *
    +       * @param key {String} The key.
    +       * @param value {Number} The value to apply.
    +       */
    +      bitXor(attr, value) {
    +        return this.set(attr, new AV.Op.BitXor(value));
    +      },
    +
    +      /**
    +       * Returns an instance of a subclass of AV.Op describing what kind of
    +       * modification has been performed on this field since the last time it was
    +       * saved. For example, after calling object.increment("x"), calling
    +       * object.op("x") would return an instance of AV.Op.Increment.
    +       *
    +       * @param key {String} The key.
    +       * @returns {AV.Op} The operation, or undefined if none.
    +       */
    +      op: function(attr) {
    +        return _.last(this._opSetQueue)[attr];
    +      },
    +
    +      /**
    +       * Clear all attributes on the model, firing <code>"change"</code> unless
    +       * you choose to silence it.
    +       */
    +      clear: function(options) {
    +        options = options || {};
    +        options.unset = true;
    +        var keysToClear = _.extend(this.attributes, this._operations);
    +        return this.set(keysToClear, options);
    +      },
    +
    +      /**
    +       * Clears any (or specific) changes to the model made since the last save.
    +       * @param {string|string[]} [keys] specify keys to revert.
    +       */
    +      revert(keys) {
    +        const lastOp = _.last(this._opSetQueue);
    +        const _keys = ensureArray(keys || _.keys(lastOp));
    +        _keys.forEach(key => {
    +          delete lastOp[key];
    +        });
    +        this._rebuildAllEstimatedData();
    +        return this;
    +      },
    +
    +      /**
    +       * Returns a JSON-encoded set of operations to be sent with the next save
    +       * request.
    +       * @private
    +       */
    +      _getSaveJSON: function() {
    +        var json = _.clone(_.first(this._opSetQueue));
    +        AV._objectEach(json, function(op, key) {
    +          json[key] = op.toJSON();
    +        });
    +        return json;
    +      },
    +
    +      /**
    +       * Returns true if this object can be serialized for saving.
    +       * @private
    +       */
    +      _canBeSerialized: function() {
    +        return AV.Object._canBeSerializedAsValue(this.attributes);
    +      },
    +
    +      /**
    +       * Fetch the model from the server. If the server's representation of the
    +       * model differs from its current attributes, they will be overriden,
    +       * triggering a <code>"change"</code> event.
    +       * @param {Object} fetchOptions Optional options to set 'keys',
    +       *      'include' and 'includeACL' option.
    +       * @param {AuthOptions} options
    +       * @return {Promise} A promise that is fulfilled when the fetch
    +       *     completes.
    +       */
    +      fetch: function(fetchOptions = {}, options) {
    +        if (!this.id) {
    +          throw new Error('Cannot fetch unsaved object');
    +        }
    +        var self = this;
    +        var request = _request(
    +          'classes',
    +          this.className,
    +          this.id,
    +          'GET',
    +          transformFetchOptions(fetchOptions),
    +          options
    +        );
    +        return request.then(function(response) {
    +          const fetchedAttrs = self.parse(response);
    +          self._cleanupUnsetKeys(
    +            fetchedAttrs,
    +            fetchOptions.keys
    +              ? ensureArray(fetchOptions.keys)
    +                  .join(',')
    +                  .split(',')
    +              : undefined
    +          );
    +          self._finishFetch(fetchedAttrs, true);
    +          return self;
    +        });
    +      },
    +
    +      _cleanupUnsetKeys(fetchedAttrs, fetchedKeys = _.keys(this._serverData)) {
    +        _.forEach(fetchedKeys, key => {
    +          if (fetchedAttrs[key] === undefined) delete this._serverData[key];
    +        });
    +      },
    +
    +      /**
    +       * Set a hash of model attributes, and save the model to the server.
    +       * updatedAt will be updated when the request returns.
    +       * You can either call it as:<pre>
    +       *   object.save();</pre>
    +       * or<pre>
    +       *   object.save(null, options);</pre>
    +       * or<pre>
    +       *   object.save(attrs, options);</pre>
    +       * or<pre>
    +       *   object.save(key, value, options);</pre>
    +       *
    +       * @example
    +       * gameTurn.save({
    +       *   player: "Jake Cutter",
    +       *   diceRoll: 2
    +       * }).then(function(gameTurnAgain) {
    +       *   // The save was successful.
    +       * }, function(error) {
    +       *   // The save failed.  Error is an instance of AVError.
    +       * });
    +       *
    +       * @param {AuthOptions} options AuthOptions plus:
    +       * @param {Boolean} options.fetchWhenSave fetch and update object after save succeeded
    +       * @param {AV.Query} options.query Save object only when it matches the query
    +       * @return {Promise} A promise that is fulfilled when the save
    +       *     completes.
    +       * @see AVError
    +       */
    +      save: function(arg1, arg2, arg3) {
    +        var attrs, current, options;
    +        if (_.isObject(arg1) || isNullOrUndefined(arg1)) {
    +          attrs = arg1;
    +          options = arg2;
    +        } else {
    +          attrs = {};
    +          attrs[arg1] = arg2;
    +          options = arg3;
    +        }
    +
    +        options = _.clone(options) || {};
    +        if (options.wait) {
    +          current = _.clone(this.attributes);
    +        }
    +
    +        var setOptions = _.clone(options) || {};
    +        if (setOptions.wait) {
    +          setOptions.silent = true;
    +        }
    +        if (attrs) {
    +          this.set(attrs, setOptions);
    +        }
    +
    +        var model = this;
    +
    +        var unsavedChildren = [];
    +        var unsavedFiles = [];
    +        AV.Object._findUnsavedChildren(model, unsavedChildren, unsavedFiles);
    +        if (unsavedChildren.length + unsavedFiles.length > 1) {
    +          return AV.Object._deepSaveAsync(this, model, options);
    +        }
    +
    +        this._startSave();
    +        this._saving = (this._saving || 0) + 1;
    +
    +        this._allPreviousSaves = this._allPreviousSaves || Promise.resolve();
    +        this._allPreviousSaves = this._allPreviousSaves
    +          .catch(e => {})
    +          .then(function() {
    +            var method = model.id ? 'PUT' : 'POST';
    +
    +            var json = model._getSaveJSON();
    +            var query = {};
    +
    +            if (model._fetchWhenSave || options.fetchWhenSave) {
    +              query['new'] = 'true';
    +            }
    +            // user login option
    +            if (options._failOnNotExist) {
    +              query.failOnNotExist = 'true';
    +            }
    +
    +            if (options.query) {
    +              var queryParams;
    +              if (typeof options.query._getParams === 'function') {
    +                queryParams = options.query._getParams();
    +                if (queryParams) {
    +                  query.where = queryParams.where;
    +                }
    +              }
    +              if (!query.where) {
    +                var error = new Error('options.query is not an AV.Query');
    +                throw error;
    +              }
    +            }
    +
    +            _.extend(json, model._flags);
    +
    +            var route = 'classes';
    +            var className = model.className;
    +            if (model.className === '_User' && !model.id) {
    +              // Special-case user sign-up.
    +              route = 'users';
    +              className = null;
    +            }
    +            //hook makeRequest in options.
    +            var makeRequest = options._makeRequest || _request;
    +            var requestPromise = makeRequest(
    +              route,
    +              className,
    +              model.id,
    +              method,
    +              json,
    +              options,
    +              query
    +            );
    +
    +            requestPromise = requestPromise.then(
    +              function(resp) {
    +                var serverAttrs = model.parse(resp);
    +                if (options.wait) {
    +                  serverAttrs = _.extend(attrs || {}, serverAttrs);
    +                }
    +                model._finishSave(serverAttrs);
    +                if (options.wait) {
    +                  model.set(current, setOptions);
    +                }
    +                return model;
    +              },
    +              function(error) {
    +                model._cancelSave();
    +                throw error;
    +              }
    +            );
    +
    +            return requestPromise;
    +          });
    +        return this._allPreviousSaves;
    +      },
    +
    +      /**
    +       * Destroy this model on the server if it was already persisted.
    +       * Optimistically removes the model from its collection, if it has one.
    +       * @param {AuthOptions} options AuthOptions plus:
    +       * @param {Boolean} [options.wait] wait for the server to respond
    +       * before removal.
    +       *
    +       * @return {Promise} A promise that is fulfilled when the destroy
    +       *     completes.
    +       */
    +      destroy: function(options) {
    +        options = options || {};
    +        var model = this;
    +
    +        var triggerDestroy = function() {
    +          model.trigger('destroy', model, model.collection, options);
    +        };
    +
    +        if (!this.id) {
    +          return triggerDestroy();
    +        }
    +
    +        if (!options.wait) {
    +          triggerDestroy();
    +        }
    +
    +        var request = _request(
    +          'classes',
    +          this.className,
    +          this.id,
    +          'DELETE',
    +          this._flags,
    +          options
    +        );
    +        return request.then(function() {
    +          if (options.wait) {
    +            triggerDestroy();
    +          }
    +          return model;
    +        });
    +      },
    +
    +      /**
    +       * Converts a response into the hash of attributes to be set on the model.
    +       * @ignore
    +       */
    +      parse: function(resp) {
    +        var output = _.clone(resp);
    +        ['createdAt', 'updatedAt'].forEach(function(key) {
    +          if (output[key]) {
    +            output[key] = AV._parseDate(output[key]);
    +          }
    +        });
    +        if (output.createdAt && !output.updatedAt) {
    +          output.updatedAt = output.createdAt;
    +        }
    +        return output;
    +      },
    +
    +      /**
    +       * Creates a new model with identical attributes to this one.
    +       * @return {AV.Object}
    +       */
    +      clone: function() {
    +        return new this.constructor(this.attributes);
    +      },
    +
    +      /**
    +       * Returns true if this object has never been saved to AV.
    +       * @return {Boolean}
    +       */
    +      isNew: function() {
    +        return !this.id;
    +      },
    +
    +      /**
    +       * Call this method to manually fire a `"change"` event for this model and
    +       * a `"change:attribute"` event for each changed attribute.
    +       * Calling this will cause all objects observing the model to update.
    +       */
    +      change: function(options) {
    +        options = options || {};
    +        var changing = this._changing;
    +        this._changing = true;
    +
    +        // Silent changes become pending changes.
    +        var self = this;
    +        AV._objectEach(this._silent, function(attr) {
    +          self._pending[attr] = true;
    +        });
    +
    +        // Silent changes are triggered.
    +        var changes = _.extend({}, options.changes, this._silent);
    +        this._silent = {};
    +        AV._objectEach(changes, function(unused_value, attr) {
    +          self.trigger('change:' + attr, self, self.get(attr), options);
    +        });
    +        if (changing) {
    +          return this;
    +        }
    +
    +        // This is to get around lint not letting us make a function in a loop.
    +        var deleteChanged = function(value, attr) {
    +          if (!self._pending[attr] && !self._silent[attr]) {
    +            delete self.changed[attr];
    +          }
    +        };
    +
    +        // Continue firing `"change"` events while there are pending changes.
    +        while (!_.isEmpty(this._pending)) {
    +          this._pending = {};
    +          this.trigger('change', this, options);
    +          // Pending and silent changes still remain.
    +          AV._objectEach(this.changed, deleteChanged);
    +          self._previousAttributes = _.clone(this.attributes);
    +        }
    +
    +        this._changing = false;
    +        return this;
    +      },
    +
    +      /**
    +       * Gets the previous value of an attribute, recorded at the time the last
    +       * <code>"change"</code> event was fired.
    +       * @param {String} attr Name of the attribute to get.
    +       */
    +      previous: function(attr) {
    +        if (!arguments.length || !this._previousAttributes) {
    +          return null;
    +        }
    +        return this._previousAttributes[attr];
    +      },
    +
    +      /**
    +       * Gets all of the attributes of the model at the time of the previous
    +       * <code>"change"</code> event.
    +       * @return {Object}
    +       */
    +      previousAttributes: function() {
    +        return _.clone(this._previousAttributes);
    +      },
    +
    +      /**
    +       * Checks if the model is currently in a valid state. It's only possible to
    +       * get into an *invalid* state if you're using silent changes.
    +       * @return {Boolean}
    +       */
    +      isValid: function() {
    +        try {
    +          this.validate(this.attributes);
    +        } catch (error) {
    +          return false;
    +        }
    +        return true;
    +      },
    +
    +      /**
    +       * You should not call this function directly unless you subclass
    +       * <code>AV.Object</code>, in which case you can override this method
    +       * to provide additional validation on <code>set</code> and
    +       * <code>save</code>.  Your implementation should throw an Error if
    +       * the attrs is invalid
    +       *
    +       * @param {Object} attrs The current data to validate.
    +       * @see AV.Object#set
    +       */
    +      validate: function(attrs) {
    +        if (_.has(attrs, 'ACL') && !(attrs.ACL instanceof AV.ACL)) {
    +          throw new AVError(AVError.OTHER_CAUSE, 'ACL must be a AV.ACL.');
    +        }
    +      },
    +
    +      /**
    +       * Run validation against a set of incoming attributes, returning `true`
    +       * if all is well. If a specific `error` callback has been passed,
    +       * call that instead of firing the general `"error"` event.
    +       * @private
    +       */
    +      _validate: function(attrs, options) {
    +        if (options.silent || !this.validate) {
    +          return;
    +        }
    +        attrs = _.extend({}, this.attributes, attrs);
    +        this.validate(attrs);
    +      },
    +
    +      /**
    +       * Returns the ACL for this object.
    +       * @returns {AV.ACL} An instance of AV.ACL.
    +       * @see AV.Object#get
    +       */
    +      getACL: function() {
    +        return this.get('ACL');
    +      },
    +
    +      /**
    +       * Sets the ACL to be used for this object.
    +       * @param {AV.ACL} acl An instance of AV.ACL.
    +       * @param {Object} options Optional Backbone-like options object to be
    +       *     passed in to set.
    +       * @return {AV.Object} self
    +       * @see AV.Object#set
    +       */
    +      setACL: function(acl, options) {
    +        return this.set('ACL', acl, options);
    +      },
    +
    +      disableBeforeHook: function() {
    +        this.ignoreHook('beforeSave');
    +        this.ignoreHook('beforeUpdate');
    +        this.ignoreHook('beforeDelete');
    +      },
    +
    +      disableAfterHook: function() {
    +        this.ignoreHook('afterSave');
    +        this.ignoreHook('afterUpdate');
    +        this.ignoreHook('afterDelete');
    +      },
    +
    +      ignoreHook: function(hookName) {
    +        if (
    +          !_.contains(
    +            [
    +              'beforeSave',
    +              'afterSave',
    +              'beforeUpdate',
    +              'afterUpdate',
    +              'beforeDelete',
    +              'afterDelete',
    +            ],
    +            hookName
    +          )
    +        ) {
    +          throw new Error('Unsupported hookName: ' + hookName);
    +        }
    +
    +        if (!AV.hookKey) {
    +          throw new Error('ignoreHook required hookKey');
    +        }
    +
    +        if (!this._flags.__ignore_hooks) {
    +          this._flags.__ignore_hooks = [];
    +        }
    +
    +        this._flags.__ignore_hooks.push(hookName);
    +      },
    +    }
    +  );
    +
    +  /**
    +   * Creates an instance of a subclass of AV.Object for the give classname
    +   * and id.
    +   * @param  {String|Function} class the className or a subclass of AV.Object.
    +   * @param {String} id The object id of this model.
    +   * @return {AV.Object} A new subclass instance of AV.Object.
    +   */
    +  AV.Object.createWithoutData = (klass, id, hasData) => {
    +    let _klass;
    +    if (_.isString(klass)) {
    +      _klass = AV.Object._getSubclass(klass);
    +    } else if (klass.prototype && klass.prototype instanceof AV.Object) {
    +      _klass = klass;
    +    } else {
    +      throw new Error('class must be a string or a subclass of AV.Object.');
    +    }
    +    if (!id) {
    +      throw new TypeError('The objectId must be provided');
    +    }
    +    const object = new _klass();
    +    object.id = id;
    +    object._hasData = hasData;
    +    return object;
    +  };
    +  /**
    +   * Delete objects in batch.
    +   * @param {AV.Object[]} objects The <code>AV.Object</code> array to be deleted.
    +   * @param {AuthOptions} options
    +   * @return {Promise} A promise that is fulfilled when the save
    +   *     completes.
    +   */
    +  AV.Object.destroyAll = function(objects, options = {}) {
    +    if (!objects || objects.length === 0) {
    +      return Promise.resolve();
    +    }
    +    const objectsByClassNameAndFlags = _.groupBy(objects, object =>
    +      JSON.stringify({
    +        className: object.className,
    +        flags: object._flags,
    +      })
    +    );
    +    const body = {
    +      requests: _.map(objectsByClassNameAndFlags, objects => {
    +        const ids = _.map(objects, 'id').join(',');
    +        return {
    +          method: 'DELETE',
    +          path: `/1.1/classes/${objects[0].className}/${ids}`,
    +          body: objects[0]._flags,
    +        };
    +      }),
    +    };
    +    return _request('batch', null, null, 'POST', body, options).then(
    +      response => {
    +        const firstError = _.find(response, result => !result.success);
    +        if (firstError)
    +          throw new AVError(firstError.error.code, firstError.error.error);
    +        return undefined;
    +      }
    +    );
    +  };
    +
    +  /**
    +   * Returns the appropriate subclass for making new instances of the given
    +   * className string.
    +   * @private
    +   */
    +  AV.Object._getSubclass = function(className) {
    +    if (!_.isString(className)) {
    +      throw new Error('AV.Object._getSubclass requires a string argument.');
    +    }
    +    var ObjectClass = AV.Object._classMap[className];
    +    if (!ObjectClass) {
    +      ObjectClass = AV.Object.extend(className);
    +      AV.Object._classMap[className] = ObjectClass;
    +    }
    +    return ObjectClass;
    +  };
    +
    +  /**
    +   * Creates an instance of a subclass of AV.Object for the given classname.
    +   * @private
    +   */
    +  AV.Object._create = function(className, attributes, options) {
    +    var ObjectClass = AV.Object._getSubclass(className);
    +    return new ObjectClass(attributes, options);
    +  };
    +
    +  // Set up a map of className to class so that we can create new instances of
    +  // AV Objects from JSON automatically.
    +  AV.Object._classMap = {};
    +
    +  AV.Object._extend = AV._extend;
    +
    +  /**
    +   * Creates a new model with defined attributes,
    +   * It's the same with
    +   * <pre>
    +   *   new AV.Object(attributes, options);
    +   *  </pre>
    +   * @param {Object} attributes The initial set of data to store in the object.
    +   * @param {Object} options A set of Backbone-like options for creating the
    +   *     object.  The only option currently supported is "collection".
    +   * @return {AV.Object}
    +   * @since v0.4.4
    +   * @see AV.Object
    +   * @see AV.Object.extend
    +   */
    +  AV.Object['new'] = function(attributes, options) {
    +    return new AV.Object(attributes, options);
    +  };
    +
    +  /**
    +   * Creates a new subclass of AV.Object for the given AV class name.
    +   *
    +   * <p>Every extension of a AV class will inherit from the most recent
    +   * previous extension of that class. When a AV.Object is automatically
    +   * created by parsing JSON, it will use the most recent extension of that
    +   * class.</p>
    +   *
    +   * @example
    +   * var MyClass = AV.Object.extend("MyClass", {
    +   *     // Instance properties
    +   * }, {
    +   *     // Class properties
    +   * });
    +   *
    +   * @param {String} className The name of the AV class backing this model.
    +   * @param {Object} protoProps Instance properties to add to instances of the
    +   *     class returned from this method.
    +   * @param {Object} classProps Class properties to add the class returned from
    +   *     this method.
    +   * @return {Class} A new subclass of AV.Object.
    +   */
    +  AV.Object.extend = function(className, protoProps, classProps) {
    +    // Handle the case with only two args.
    +    if (!_.isString(className)) {
    +      if (className && _.has(className, 'className')) {
    +        return AV.Object.extend(className.className, className, protoProps);
    +      } else {
    +        throw new Error(
    +          "AV.Object.extend's first argument should be the className."
    +        );
    +      }
    +    }
    +
    +    // If someone tries to subclass "User", coerce it to the right type.
    +    if (className === 'User') {
    +      className = '_User';
    +    }
    +
    +    var NewClassObject = null;
    +    if (_.has(AV.Object._classMap, className)) {
    +      var OldClassObject = AV.Object._classMap[className];
    +      // This new subclass has been told to extend both from "this" and from
    +      // OldClassObject. This is multiple inheritance, which isn't supported.
    +      // For now, let's just pick one.
    +      if (protoProps || classProps) {
    +        NewClassObject = OldClassObject._extend(protoProps, classProps);
    +      } else {
    +        return OldClassObject;
    +      }
    +    } else {
    +      protoProps = protoProps || {};
    +      protoProps._className = className;
    +      NewClassObject = this._extend(protoProps, classProps);
    +    }
    +    // Extending a subclass should reuse the classname automatically.
    +    NewClassObject.extend = function(arg0) {
    +      if (_.isString(arg0) || (arg0 && _.has(arg0, 'className'))) {
    +        return AV.Object.extend.apply(NewClassObject, arguments);
    +      }
    +      var newArguments = [className].concat(_.toArray(arguments));
    +      return AV.Object.extend.apply(NewClassObject, newArguments);
    +    };
    +    // Add the query property descriptor.
    +    Object.defineProperty(
    +      NewClassObject,
    +      'query',
    +      Object.getOwnPropertyDescriptor(AV.Object, 'query')
    +    );
    +    NewClassObject['new'] = function(attributes, options) {
    +      return new NewClassObject(attributes, options);
    +    };
    +    AV.Object._classMap[className] = NewClassObject;
    +    return NewClassObject;
    +  };
    +
    +  // ES6 class syntax support
    +  Object.defineProperty(AV.Object.prototype, 'className', {
    +    get: function() {
    +      const className =
    +        this._className ||
    +        this.constructor._LCClassName ||
    +        this.constructor.name;
    +      // If someone tries to subclass "User", coerce it to the right type.
    +      if (className === 'User') {
    +        return '_User';
    +      }
    +      return className;
    +    },
    +  });
    +
    +  /**
    +   * Register a class.
    +   * If a subclass of <code>AV.Object</code> is defined with your own implement
    +   * rather then <code>AV.Object.extend</code>, the subclass must be registered.
    +   * @param {Function} klass A subclass of <code>AV.Object</code>
    +   * @param {String} [name] Specify the name of the class. Useful when the class might be uglified.
    +   * @example
    +   * class Person extend AV.Object {}
    +   * AV.Object.register(Person);
    +   */
    +  AV.Object.register = (klass, name) => {
    +    if (!(klass.prototype instanceof AV.Object)) {
    +      throw new Error('registered class is not a subclass of AV.Object');
    +    }
    +    const className = name || klass.name;
    +    if (!className.length) {
    +      throw new Error('registered class must be named');
    +    }
    +    if (name) {
    +      klass._LCClassName = name;
    +    }
    +    AV.Object._classMap[className] = klass;
    +  };
    +
    +  /**
    +   * Get a new Query of the current class
    +   * @name query
    +   * @memberof AV.Object
    +   * @type AV.Query
    +   * @readonly
    +   * @since v3.1.0
    +   * @example
    +   * const Post = AV.Object.extend('Post');
    +   * Post.query.equalTo('author', 'leancloud').find().then();
    +   */
    +  Object.defineProperty(AV.Object, 'query', {
    +    get() {
    +      return new AV.Query(this.prototype.className);
    +    },
    +  });
    +
    +  AV.Object._findUnsavedChildren = function(objects, children, files) {
    +    AV._traverse(objects, function(object) {
    +      if (object instanceof AV.Object) {
    +        if (object.dirty()) {
    +          children.push(object);
    +        }
    +        return;
    +      }
    +
    +      if (object instanceof AV.File) {
    +        if (!object.id) {
    +          files.push(object);
    +        }
    +        return;
    +      }
    +    });
    +  };
    +
    +  AV.Object._canBeSerializedAsValue = function(object) {
    +    var canBeSerializedAsValue = true;
    +
    +    if (object instanceof AV.Object || object instanceof AV.File) {
    +      canBeSerializedAsValue = !!object.id;
    +    } else if (_.isArray(object)) {
    +      AV._arrayEach(object, function(child) {
    +        if (!AV.Object._canBeSerializedAsValue(child)) {
    +          canBeSerializedAsValue = false;
    +        }
    +      });
    +    } else if (_.isObject(object)) {
    +      AV._objectEach(object, function(child) {
    +        if (!AV.Object._canBeSerializedAsValue(child)) {
    +          canBeSerializedAsValue = false;
    +        }
    +      });
    +    }
    +
    +    return canBeSerializedAsValue;
    +  };
    +
    +  AV.Object._deepSaveAsync = function(object, model, options) {
    +    var unsavedChildren = [];
    +    var unsavedFiles = [];
    +    AV.Object._findUnsavedChildren(object, unsavedChildren, unsavedFiles);
    +
    +    unsavedFiles = _.uniq(unsavedFiles);
    +
    +    var promise = Promise.resolve();
    +    _.each(unsavedFiles, function(file) {
    +      promise = promise.then(function() {
    +        return file.save();
    +      });
    +    });
    +
    +    var objects = _.uniq(unsavedChildren);
    +    var remaining = _.uniq(objects);
    +
    +    return promise
    +      .then(function() {
    +        return continueWhile(
    +          function() {
    +            return remaining.length > 0;
    +          },
    +          function() {
    +            // Gather up all the objects that can be saved in this batch.
    +            var batch = [];
    +            var newRemaining = [];
    +            AV._arrayEach(remaining, function(object) {
    +              if (object._canBeSerialized()) {
    +                batch.push(object);
    +              } else {
    +                newRemaining.push(object);
    +              }
    +            });
    +            remaining = newRemaining;
    +
    +            // If we can't save any objects, there must be a circular reference.
    +            if (batch.length === 0) {
    +              return Promise.reject(
    +                new AVError(
    +                  AVError.OTHER_CAUSE,
    +                  'Tried to save a batch with a cycle.'
    +                )
    +              );
    +            }
    +
    +            // Reserve a spot in every object's save queue.
    +            var readyToStart = Promise.resolve(
    +              _.map(batch, function(object) {
    +                return object._allPreviousSaves || Promise.resolve();
    +              })
    +            );
    +
    +            // Save a single batch, whether previous saves succeeded or failed.
    +            const bathSavePromise = readyToStart.then(() =>
    +              _request(
    +                'batch',
    +                null,
    +                null,
    +                'POST',
    +                {
    +                  requests: _.map(batch, function(object) {
    +                    var method = object.id ? 'PUT' : 'POST';
    +
    +                    var json = object._getSaveJSON();
    +
    +                    _.extend(json, object._flags);
    +
    +                    var route = 'classes';
    +                    var className = object.className;
    +                    var path = `/${route}/${className}`;
    +                    if (object.className === '_User' && !object.id) {
    +                      // Special-case user sign-up.
    +                      path = '/users';
    +                    }
    +
    +                    var path = `/1.1${path}`;
    +                    if (object.id) {
    +                      path = path + '/' + object.id;
    +                    }
    +
    +                    object._startSave();
    +
    +                    return {
    +                      method: method,
    +                      path: path,
    +                      body: json,
    +                      params:
    +                        options && options.fetchWhenSave
    +                          ? { fetchWhenSave: true }
    +                          : undefined,
    +                    };
    +                  }),
    +                },
    +                options
    +              ).then(function(response) {
    +                const results = _.map(batch, function(object, i) {
    +                  if (response[i].success) {
    +                    object._finishSave(object.parse(response[i].success));
    +                    return object;
    +                  }
    +                  object._cancelSave();
    +                  return new AVError(
    +                    response[i].error.code,
    +                    response[i].error.error
    +                  );
    +                });
    +                return handleBatchResults(results);
    +              })
    +            );
    +            AV._arrayEach(batch, function(object) {
    +              object._allPreviousSaves = bathSavePromise;
    +            });
    +            return bathSavePromise;
    +          }
    +        );
    +      })
    +      .then(function() {
    +        return object;
    +      });
    +  };
    +};
    +
    +
    +
    + + + + +
    + +
    + +
    + Documentation generated by JSDoc 3.6.3 on Mon Sep 25 2023 11:05:14 GMT+0000 (Coordinated Universal Time) using the docdash theme. +
    + + + + + diff --git a/docs/op.js.html b/docs/op.js.html new file mode 100644 index 000000000..f8459c8a3 --- /dev/null +++ b/docs/op.js.html @@ -0,0 +1,768 @@ + + + + + op.js - Documentation + + + + + + + + + + + + + + + + +
    + +

    op.js

    + + + + + + + +
    +
    +
    var _ = require('underscore');
    +
    +module.exports = function(AV) {
    +  /**
    +   * @private
    +   * @class
    +   * A AV.Op is an atomic operation that can be applied to a field in a
    +   * AV.Object. For example, calling <code>object.set("foo", "bar")</code>
    +   * is an example of a AV.Op.Set. Calling <code>object.unset("foo")</code>
    +   * is a AV.Op.Unset. These operations are stored in a AV.Object and
    +   * sent to the server as part of <code>object.save()</code> operations.
    +   * Instances of AV.Op should be immutable.
    +   *
    +   * You should not create subclasses of AV.Op or instantiate AV.Op
    +   * directly.
    +   */
    +  AV.Op = function() {
    +    this._initialize.apply(this, arguments);
    +  };
    +
    +  _.extend(
    +    AV.Op.prototype,
    +    /** @lends AV.Op.prototype */ {
    +      _initialize: function() {},
    +    }
    +  );
    +
    +  _.extend(AV.Op, {
    +    /**
    +     * To create a new Op, call AV.Op._extend();
    +     * @private
    +     */
    +    _extend: AV._extend,
    +
    +    // A map of __op string to decoder function.
    +    _opDecoderMap: {},
    +
    +    /**
    +     * Registers a function to convert a json object with an __op field into an
    +     * instance of a subclass of AV.Op.
    +     * @private
    +     */
    +    _registerDecoder: function(opName, decoder) {
    +      AV.Op._opDecoderMap[opName] = decoder;
    +    },
    +
    +    /**
    +     * Converts a json object into an instance of a subclass of AV.Op.
    +     * @private
    +     */
    +    _decode: function(json) {
    +      var decoder = AV.Op._opDecoderMap[json.__op];
    +      if (decoder) {
    +        return decoder(json);
    +      } else {
    +        return undefined;
    +      }
    +    },
    +  });
    +
    +  /*
    +   * Add a handler for Batch ops.
    +   */
    +  AV.Op._registerDecoder('Batch', function(json) {
    +    var op = null;
    +    AV._arrayEach(json.ops, function(nextOp) {
    +      nextOp = AV.Op._decode(nextOp);
    +      op = nextOp._mergeWithPrevious(op);
    +    });
    +    return op;
    +  });
    +
    +  /**
    +   * @private
    +   * @class
    +   * A Set operation indicates that either the field was changed using
    +   * AV.Object.set, or it is a mutable container that was detected as being
    +   * changed.
    +   */
    +  AV.Op.Set = AV.Op._extend(
    +    /** @lends AV.Op.Set.prototype */ {
    +      _initialize: function(value) {
    +        this._value = value;
    +      },
    +
    +      /**
    +       * Returns the new value of this field after the set.
    +       */
    +      value: function() {
    +        return this._value;
    +      },
    +
    +      /**
    +       * Returns a JSON version of the operation suitable for sending to AV.
    +       * @return {Object}
    +       */
    +      toJSON: function() {
    +        return AV._encode(this.value());
    +      },
    +
    +      _mergeWithPrevious: function(previous) {
    +        return this;
    +      },
    +
    +      _estimate: function(oldValue) {
    +        return this.value();
    +      },
    +    }
    +  );
    +
    +  /**
    +   * A sentinel value that is returned by AV.Op.Unset._estimate to
    +   * indicate the field should be deleted. Basically, if you find _UNSET as a
    +   * value in your object, you should remove that key.
    +   */
    +  AV.Op._UNSET = {};
    +
    +  /**
    +   * @private
    +   * @class
    +   * An Unset operation indicates that this field has been deleted from the
    +   * object.
    +   */
    +  AV.Op.Unset = AV.Op._extend(
    +    /** @lends AV.Op.Unset.prototype */ {
    +      /**
    +       * Returns a JSON version of the operation suitable for sending to AV.
    +       * @return {Object}
    +       */
    +      toJSON: function() {
    +        return { __op: 'Delete' };
    +      },
    +
    +      _mergeWithPrevious: function(previous) {
    +        return this;
    +      },
    +
    +      _estimate: function(oldValue) {
    +        return AV.Op._UNSET;
    +      },
    +    }
    +  );
    +
    +  AV.Op._registerDecoder('Delete', function(json) {
    +    return new AV.Op.Unset();
    +  });
    +
    +  /**
    +   * @private
    +   * @class
    +   * An Increment is an atomic operation where the numeric value for the field
    +   * will be increased by a given amount.
    +   */
    +  AV.Op.Increment = AV.Op._extend(
    +    /** @lends AV.Op.Increment.prototype */ {
    +      _initialize: function(amount) {
    +        this._amount = amount;
    +      },
    +
    +      /**
    +       * Returns the amount to increment by.
    +       * @return {Number} the amount to increment by.
    +       */
    +      amount: function() {
    +        return this._amount;
    +      },
    +
    +      /**
    +       * Returns a JSON version of the operation suitable for sending to AV.
    +       * @return {Object}
    +       */
    +      toJSON: function() {
    +        return { __op: 'Increment', amount: this._amount };
    +      },
    +
    +      _mergeWithPrevious: function(previous) {
    +        if (!previous) {
    +          return this;
    +        } else if (previous instanceof AV.Op.Unset) {
    +          return new AV.Op.Set(this.amount());
    +        } else if (previous instanceof AV.Op.Set) {
    +          return new AV.Op.Set(previous.value() + this.amount());
    +        } else if (previous instanceof AV.Op.Increment) {
    +          return new AV.Op.Increment(this.amount() + previous.amount());
    +        } else {
    +          throw new Error('Op is invalid after previous op.');
    +        }
    +      },
    +
    +      _estimate: function(oldValue) {
    +        if (!oldValue) {
    +          return this.amount();
    +        }
    +        return oldValue + this.amount();
    +      },
    +    }
    +  );
    +
    +  AV.Op._registerDecoder('Increment', function(json) {
    +    return new AV.Op.Increment(json.amount);
    +  });
    +
    +  /**
    +   * @private
    +   * @class
    +   * BitAnd is an atomic operation where the given value will be bit and to the
    +   * value than is stored in this field.
    +   */
    +  AV.Op.BitAnd = AV.Op._extend(
    +    /** @lends AV.Op.BitAnd.prototype */ {
    +      _initialize(value) {
    +        this._value = value;
    +      },
    +
    +      value() {
    +        return this._value;
    +      },
    +
    +      /**
    +       * Returns a JSON version of the operation suitable for sending to AV.
    +       * @return {Object}
    +       */
    +      toJSON() {
    +        return { __op: 'BitAnd', value: this.value() };
    +      },
    +
    +      _mergeWithPrevious(previous) {
    +        if (!previous) {
    +          return this;
    +        } else if (previous instanceof AV.Op.Unset) {
    +          return new AV.Op.Set(0);
    +        } else if (previous instanceof AV.Op.Set) {
    +          return new AV.Op.Set(previous.value() & this.value());
    +        } else {
    +          throw new Error('Op is invalid after previous op.');
    +        }
    +      },
    +
    +      _estimate(oldValue) {
    +        return oldValue & this.value();
    +      },
    +    }
    +  );
    +
    +  AV.Op._registerDecoder('BitAnd', function(json) {
    +    return new AV.Op.BitAnd(json.value);
    +  });
    +
    +  /**
    +   * @private
    +   * @class
    +   * BitOr is an atomic operation where the given value will be bit and to the
    +   * value than is stored in this field.
    +   */
    +  AV.Op.BitOr = AV.Op._extend(
    +    /** @lends AV.Op.BitOr.prototype */ {
    +      _initialize(value) {
    +        this._value = value;
    +      },
    +
    +      value() {
    +        return this._value;
    +      },
    +
    +      /**
    +       * Returns a JSON version of the operation suitable for sending to AV.
    +       * @return {Object}
    +       */
    +      toJSON() {
    +        return { __op: 'BitOr', value: this.value() };
    +      },
    +
    +      _mergeWithPrevious(previous) {
    +        if (!previous) {
    +          return this;
    +        } else if (previous instanceof AV.Op.Unset) {
    +          return new AV.Op.Set(this.value());
    +        } else if (previous instanceof AV.Op.Set) {
    +          return new AV.Op.Set(previous.value() | this.value());
    +        } else {
    +          throw new Error('Op is invalid after previous op.');
    +        }
    +      },
    +
    +      _estimate(oldValue) {
    +        return oldValue | this.value();
    +      },
    +    }
    +  );
    +
    +  AV.Op._registerDecoder('BitOr', function(json) {
    +    return new AV.Op.BitOr(json.value);
    +  });
    +
    +  /**
    +   * @private
    +   * @class
    +   * BitXor is an atomic operation where the given value will be bit and to the
    +   * value than is stored in this field.
    +   */
    +  AV.Op.BitXor = AV.Op._extend(
    +    /** @lends AV.Op.BitXor.prototype */ {
    +      _initialize(value) {
    +        this._value = value;
    +      },
    +
    +      value() {
    +        return this._value;
    +      },
    +
    +      /**
    +       * Returns a JSON version of the operation suitable for sending to AV.
    +       * @return {Object}
    +       */
    +      toJSON() {
    +        return { __op: 'BitXor', value: this.value() };
    +      },
    +
    +      _mergeWithPrevious(previous) {
    +        if (!previous) {
    +          return this;
    +        } else if (previous instanceof AV.Op.Unset) {
    +          return new AV.Op.Set(this.value());
    +        } else if (previous instanceof AV.Op.Set) {
    +          return new AV.Op.Set(previous.value() ^ this.value());
    +        } else {
    +          throw new Error('Op is invalid after previous op.');
    +        }
    +      },
    +
    +      _estimate(oldValue) {
    +        return oldValue ^ this.value();
    +      },
    +    }
    +  );
    +
    +  AV.Op._registerDecoder('BitXor', function(json) {
    +    return new AV.Op.BitXor(json.value);
    +  });
    +
    +  /**
    +   * @private
    +   * @class
    +   * Add is an atomic operation where the given objects will be appended to the
    +   * array that is stored in this field.
    +   */
    +  AV.Op.Add = AV.Op._extend(
    +    /** @lends AV.Op.Add.prototype */ {
    +      _initialize: function(objects) {
    +        this._objects = objects;
    +      },
    +
    +      /**
    +       * Returns the objects to be added to the array.
    +       * @return {Array} The objects to be added to the array.
    +       */
    +      objects: function() {
    +        return this._objects;
    +      },
    +
    +      /**
    +       * Returns a JSON version of the operation suitable for sending to AV.
    +       * @return {Object}
    +       */
    +      toJSON: function() {
    +        return { __op: 'Add', objects: AV._encode(this.objects()) };
    +      },
    +
    +      _mergeWithPrevious: function(previous) {
    +        if (!previous) {
    +          return this;
    +        } else if (previous instanceof AV.Op.Unset) {
    +          return new AV.Op.Set(this.objects());
    +        } else if (previous instanceof AV.Op.Set) {
    +          return new AV.Op.Set(this._estimate(previous.value()));
    +        } else if (previous instanceof AV.Op.Add) {
    +          return new AV.Op.Add(previous.objects().concat(this.objects()));
    +        } else {
    +          throw new Error('Op is invalid after previous op.');
    +        }
    +      },
    +
    +      _estimate: function(oldValue) {
    +        if (!oldValue) {
    +          return _.clone(this.objects());
    +        } else {
    +          return oldValue.concat(this.objects());
    +        }
    +      },
    +    }
    +  );
    +
    +  AV.Op._registerDecoder('Add', function(json) {
    +    return new AV.Op.Add(AV._decode(json.objects));
    +  });
    +
    +  /**
    +   * @private
    +   * @class
    +   * AddUnique is an atomic operation where the given items will be appended to
    +   * the array that is stored in this field only if they were not already
    +   * present in the array.
    +   */
    +  AV.Op.AddUnique = AV.Op._extend(
    +    /** @lends AV.Op.AddUnique.prototype */ {
    +      _initialize: function(objects) {
    +        this._objects = _.uniq(objects);
    +      },
    +
    +      /**
    +       * Returns the objects to be added to the array.
    +       * @return {Array} The objects to be added to the array.
    +       */
    +      objects: function() {
    +        return this._objects;
    +      },
    +
    +      /**
    +       * Returns a JSON version of the operation suitable for sending to AV.
    +       * @return {Object}
    +       */
    +      toJSON: function() {
    +        return { __op: 'AddUnique', objects: AV._encode(this.objects()) };
    +      },
    +
    +      _mergeWithPrevious: function(previous) {
    +        if (!previous) {
    +          return this;
    +        } else if (previous instanceof AV.Op.Unset) {
    +          return new AV.Op.Set(this.objects());
    +        } else if (previous instanceof AV.Op.Set) {
    +          return new AV.Op.Set(this._estimate(previous.value()));
    +        } else if (previous instanceof AV.Op.AddUnique) {
    +          return new AV.Op.AddUnique(this._estimate(previous.objects()));
    +        } else {
    +          throw new Error('Op is invalid after previous op.');
    +        }
    +      },
    +
    +      _estimate: function(oldValue) {
    +        if (!oldValue) {
    +          return _.clone(this.objects());
    +        } else {
    +          // We can't just take the _.uniq(_.union(...)) of oldValue and
    +          // this.objects, because the uniqueness may not apply to oldValue
    +          // (especially if the oldValue was set via .set())
    +          var newValue = _.clone(oldValue);
    +          AV._arrayEach(this.objects(), function(obj) {
    +            if (obj instanceof AV.Object && obj.id) {
    +              var matchingObj = _.find(newValue, function(anObj) {
    +                return anObj instanceof AV.Object && anObj.id === obj.id;
    +              });
    +              if (!matchingObj) {
    +                newValue.push(obj);
    +              } else {
    +                var index = _.indexOf(newValue, matchingObj);
    +                newValue[index] = obj;
    +              }
    +            } else if (!_.contains(newValue, obj)) {
    +              newValue.push(obj);
    +            }
    +          });
    +          return newValue;
    +        }
    +      },
    +    }
    +  );
    +
    +  AV.Op._registerDecoder('AddUnique', function(json) {
    +    return new AV.Op.AddUnique(AV._decode(json.objects));
    +  });
    +
    +  /**
    +   * @private
    +   * @class
    +   * Remove is an atomic operation where the given objects will be removed from
    +   * the array that is stored in this field.
    +   */
    +  AV.Op.Remove = AV.Op._extend(
    +    /** @lends AV.Op.Remove.prototype */ {
    +      _initialize: function(objects) {
    +        this._objects = _.uniq(objects);
    +      },
    +
    +      /**
    +       * Returns the objects to be removed from the array.
    +       * @return {Array} The objects to be removed from the array.
    +       */
    +      objects: function() {
    +        return this._objects;
    +      },
    +
    +      /**
    +       * Returns a JSON version of the operation suitable for sending to AV.
    +       * @return {Object}
    +       */
    +      toJSON: function() {
    +        return { __op: 'Remove', objects: AV._encode(this.objects()) };
    +      },
    +
    +      _mergeWithPrevious: function(previous) {
    +        if (!previous) {
    +          return this;
    +        } else if (previous instanceof AV.Op.Unset) {
    +          return previous;
    +        } else if (previous instanceof AV.Op.Set) {
    +          return new AV.Op.Set(this._estimate(previous.value()));
    +        } else if (previous instanceof AV.Op.Remove) {
    +          return new AV.Op.Remove(_.union(previous.objects(), this.objects()));
    +        } else {
    +          throw new Error('Op is invalid after previous op.');
    +        }
    +      },
    +
    +      _estimate: function(oldValue) {
    +        if (!oldValue) {
    +          return [];
    +        } else {
    +          var newValue = _.difference(oldValue, this.objects());
    +          // If there are saved AV Objects being removed, also remove them.
    +          AV._arrayEach(this.objects(), function(obj) {
    +            if (obj instanceof AV.Object && obj.id) {
    +              newValue = _.reject(newValue, function(other) {
    +                return other instanceof AV.Object && other.id === obj.id;
    +              });
    +            }
    +          });
    +          return newValue;
    +        }
    +      },
    +    }
    +  );
    +
    +  AV.Op._registerDecoder('Remove', function(json) {
    +    return new AV.Op.Remove(AV._decode(json.objects));
    +  });
    +
    +  /**
    +   * @private
    +   * @class
    +   * A Relation operation indicates that the field is an instance of
    +   * AV.Relation, and objects are being added to, or removed from, that
    +   * relation.
    +   */
    +  AV.Op.Relation = AV.Op._extend(
    +    /** @lends AV.Op.Relation.prototype */ {
    +      _initialize: function(adds, removes) {
    +        this._targetClassName = null;
    +
    +        var self = this;
    +
    +        var pointerToId = function(object) {
    +          if (object instanceof AV.Object) {
    +            if (!object.id) {
    +              throw new Error(
    +                "You can't add an unsaved AV.Object to a relation."
    +              );
    +            }
    +            if (!self._targetClassName) {
    +              self._targetClassName = object.className;
    +            }
    +            if (self._targetClassName !== object.className) {
    +              throw new Error(
    +                'Tried to create a AV.Relation with 2 different types: ' +
    +                  self._targetClassName +
    +                  ' and ' +
    +                  object.className +
    +                  '.'
    +              );
    +            }
    +            return object.id;
    +          }
    +          return object;
    +        };
    +
    +        this.relationsToAdd = _.uniq(_.map(adds, pointerToId));
    +        this.relationsToRemove = _.uniq(_.map(removes, pointerToId));
    +      },
    +
    +      /**
    +       * Returns an array of unfetched AV.Object that are being added to the
    +       * relation.
    +       * @return {Array}
    +       */
    +      added: function() {
    +        var self = this;
    +        return _.map(this.relationsToAdd, function(objectId) {
    +          var object = AV.Object._create(self._targetClassName);
    +          object.id = objectId;
    +          return object;
    +        });
    +      },
    +
    +      /**
    +       * Returns an array of unfetched AV.Object that are being removed from
    +       * the relation.
    +       * @return {Array}
    +       */
    +      removed: function() {
    +        var self = this;
    +        return _.map(this.relationsToRemove, function(objectId) {
    +          var object = AV.Object._create(self._targetClassName);
    +          object.id = objectId;
    +          return object;
    +        });
    +      },
    +
    +      /**
    +       * Returns a JSON version of the operation suitable for sending to AV.
    +       * @return {Object}
    +       */
    +      toJSON: function() {
    +        var adds = null;
    +        var removes = null;
    +        var self = this;
    +        var idToPointer = function(id) {
    +          return {
    +            __type: 'Pointer',
    +            className: self._targetClassName,
    +            objectId: id,
    +          };
    +        };
    +        var pointers = null;
    +        if (this.relationsToAdd.length > 0) {
    +          pointers = _.map(this.relationsToAdd, idToPointer);
    +          adds = { __op: 'AddRelation', objects: pointers };
    +        }
    +
    +        if (this.relationsToRemove.length > 0) {
    +          pointers = _.map(this.relationsToRemove, idToPointer);
    +          removes = { __op: 'RemoveRelation', objects: pointers };
    +        }
    +
    +        if (adds && removes) {
    +          return { __op: 'Batch', ops: [adds, removes] };
    +        }
    +
    +        return adds || removes || {};
    +      },
    +
    +      _mergeWithPrevious: function(previous) {
    +        if (!previous) {
    +          return this;
    +        } else if (previous instanceof AV.Op.Unset) {
    +          throw new Error("You can't modify a relation after deleting it.");
    +        } else if (previous instanceof AV.Op.Relation) {
    +          if (
    +            previous._targetClassName &&
    +            previous._targetClassName !== this._targetClassName
    +          ) {
    +            throw new Error(
    +              'Related object must be of class ' +
    +                previous._targetClassName +
    +                ', but ' +
    +                this._targetClassName +
    +                ' was passed in.'
    +            );
    +          }
    +          var newAdd = _.union(
    +            _.difference(previous.relationsToAdd, this.relationsToRemove),
    +            this.relationsToAdd
    +          );
    +          var newRemove = _.union(
    +            _.difference(previous.relationsToRemove, this.relationsToAdd),
    +            this.relationsToRemove
    +          );
    +
    +          var newRelation = new AV.Op.Relation(newAdd, newRemove);
    +          newRelation._targetClassName = this._targetClassName;
    +          return newRelation;
    +        } else {
    +          throw new Error('Op is invalid after previous op.');
    +        }
    +      },
    +
    +      _estimate: function(oldValue, object, key) {
    +        if (!oldValue) {
    +          var relation = new AV.Relation(object, key);
    +          relation.targetClassName = this._targetClassName;
    +        } else if (oldValue instanceof AV.Relation) {
    +          if (this._targetClassName) {
    +            if (oldValue.targetClassName) {
    +              if (oldValue.targetClassName !== this._targetClassName) {
    +                throw new Error(
    +                  'Related object must be a ' +
    +                    oldValue.targetClassName +
    +                    ', but a ' +
    +                    this._targetClassName +
    +                    ' was passed in.'
    +                );
    +              }
    +            } else {
    +              oldValue.targetClassName = this._targetClassName;
    +            }
    +          }
    +          return oldValue;
    +        } else {
    +          throw new Error('Op is invalid after previous op.');
    +        }
    +      },
    +    }
    +  );
    +
    +  AV.Op._registerDecoder('AddRelation', function(json) {
    +    return new AV.Op.Relation(AV._decode(json.objects), []);
    +  });
    +  AV.Op._registerDecoder('RemoveRelation', function(json) {
    +    return new AV.Op.Relation([], AV._decode(json.objects));
    +  });
    +};
    +
    +
    +
    + + + + +
    + +
    + +
    + Documentation generated by JSDoc 3.6.3 on Mon Sep 25 2023 11:05:14 GMT+0000 (Coordinated Universal Time) using the docdash theme. +
    + + + + + diff --git a/docs/push.js.html b/docs/push.js.html new file mode 100644 index 000000000..210ffa8af --- /dev/null +++ b/docs/push.js.html @@ -0,0 +1,118 @@ + + + + + push.js - Documentation + + + + + + + + + + + + + + + + +
    + +

    push.js

    + + + + + + + +
    +
    +
    const request = require('./request').request;
    +
    +module.exports = function(AV) {
    +  AV.Installation = AV.Object.extend('_Installation');
    +
    +  /**
    +   * @namespace
    +   */
    +  AV.Push = AV.Push || {};
    +
    +  /**
    +   * Sends a push notification.
    +   * @param {Object} data The data of the push notification.
    +   * @param {String[]} [data.channels] An Array of channels to push to.
    +   * @param {Date} [data.push_time] A Date object for when to send the push.
    +   * @param {Date} [data.expiration_time]  A Date object for when to expire
    +   *         the push.
    +   * @param {Number} [data.expiration_interval] The seconds from now to expire the push.
    +   * @param {Number} [data.flow_control] The clients to notify per second
    +   * @param {AV.Query} [data.where] An AV.Query over AV.Installation that is used to match
    +   *         a set of installations to push to.
    +   * @param {String} [data.cql] A CQL statement over AV.Installation that is used to match
    +   *         a set of installations to push to.
    +   * @param {Object} data.data The data to send as part of the push.
    +             More details:  https://url.leanapp.cn/pushData
    +   * @param {AuthOptions} [options]
    +   * @return {Promise}
    +   */
    +  AV.Push.send = function(data, options) {
    +    if (data.where) {
    +      data.where = data.where._getParams().where;
    +    }
    +
    +    if (data.where && data.cql) {
    +      throw new Error("Both where and cql can't be set");
    +    }
    +
    +    if (data.push_time) {
    +      data.push_time = data.push_time.toJSON();
    +    }
    +
    +    if (data.expiration_time) {
    +      data.expiration_time = data.expiration_time.toJSON();
    +    }
    +
    +    if (data.expiration_time && data.expiration_interval) {
    +      throw new Error(
    +        "Both expiration_time and expiration_interval can't be set"
    +      );
    +    }
    +
    +    return request({
    +      service: 'push',
    +      method: 'POST',
    +      path: '/push',
    +      data,
    +      authOptions: options,
    +    });
    +  };
    +};
    +
    +
    +
    + + + + +
    + +
    + +
    + Documentation generated by JSDoc 3.6.3 on Mon Sep 25 2023 11:05:14 GMT+0000 (Coordinated Universal Time) using the docdash theme. +
    + + + + + diff --git a/docs/query.js.html b/docs/query.js.html new file mode 100644 index 000000000..33b50cf74 --- /dev/null +++ b/docs/query.js.html @@ -0,0 +1,1208 @@ + + + + + query.js - Documentation + + + + + + + + + + + + + + + + +
    + +

    query.js

    + + + + + + + +
    +
    +
    const _ = require('underscore');
    +const debug = require('debug')('leancloud:query');
    +const AVError = require('./error');
    +const { _request, request } = require('./request');
    +const {
    +  ensureArray,
    +  transformFetchOptions,
    +  continueWhile,
    +} = require('./utils');
    +
    +const requires = (value, message) => {
    +  if (value === undefined) {
    +    throw new Error(message);
    +  }
    +};
    +
    +// AV.Query is a way to create a list of AV.Objects.
    +module.exports = function(AV) {
    +  /**
    +   * Creates a new AV.Query for the given AV.Object subclass.
    +   * @param {Class|String} objectClass An instance of a subclass of AV.Object, or a AV className string.
    +   * @class
    +   *
    +   * <p>AV.Query defines a query that is used to fetch AV.Objects. The
    +   * most common use case is finding all objects that match a query through the
    +   * <code>find</code> method. For example, this sample code fetches all objects
    +   * of class <code>MyClass</code>. It calls a different function depending on
    +   * whether the fetch succeeded or not.
    +   *
    +   * <pre>
    +   * var query = new AV.Query(MyClass);
    +   * query.find().then(function(results) {
    +   *   // results is an array of AV.Object.
    +   * }, function(error) {
    +   *   // error is an instance of AVError.
    +   * });</pre></p>
    +   *
    +   * <p>An AV.Query can also be used to retrieve a single object whose id is
    +   * known, through the get method. For example, this sample code fetches an
    +   * object of class <code>MyClass</code> and id <code>myId</code>. It calls a
    +   * different function depending on whether the fetch succeeded or not.
    +   *
    +   * <pre>
    +   * var query = new AV.Query(MyClass);
    +   * query.get(myId).then(function(object) {
    +   *   // object is an instance of AV.Object.
    +   * }, function(error) {
    +   *   // error is an instance of AVError.
    +   * });</pre></p>
    +   *
    +   * <p>An AV.Query can also be used to count the number of objects that match
    +   * the query without retrieving all of those objects. For example, this
    +   * sample code counts the number of objects of the class <code>MyClass</code>
    +   * <pre>
    +   * var query = new AV.Query(MyClass);
    +   * query.count().then(function(number) {
    +   *   // There are number instances of MyClass.
    +   * }, function(error) {
    +   *   // error is an instance of AVError.
    +   * });</pre></p>
    +   */
    +  AV.Query = function(objectClass) {
    +    if (_.isString(objectClass)) {
    +      objectClass = AV.Object._getSubclass(objectClass);
    +    }
    +
    +    this.objectClass = objectClass;
    +
    +    this.className = objectClass.prototype.className;
    +
    +    this._where = {};
    +    this._include = [];
    +    this._select = [];
    +    this._limit = -1; // negative limit means, do not send a limit
    +    this._skip = 0;
    +    this._defaultParams = {};
    +  };
    +
    +  /**
    +   * Constructs a AV.Query that is the OR of the passed in queries.  For
    +   * example:
    +   * <pre>var compoundQuery = AV.Query.or(query1, query2, query3);</pre>
    +   *
    +   * will create a compoundQuery that is an or of the query1, query2, and
    +   * query3.
    +   * @param {...AV.Query} var_args The list of queries to OR.
    +   * @return {AV.Query} The query that is the OR of the passed in queries.
    +   */
    +  AV.Query.or = function() {
    +    var queries = _.toArray(arguments);
    +    var className = null;
    +    AV._arrayEach(queries, function(q) {
    +      if (_.isNull(className)) {
    +        className = q.className;
    +      }
    +
    +      if (className !== q.className) {
    +        throw new Error('All queries must be for the same class');
    +      }
    +    });
    +    var query = new AV.Query(className);
    +    query._orQuery(queries);
    +    return query;
    +  };
    +
    +  /**
    +   * Constructs a AV.Query that is the AND of the passed in queries.  For
    +   * example:
    +   * <pre>var compoundQuery = AV.Query.and(query1, query2, query3);</pre>
    +   *
    +   * will create a compoundQuery that is an 'and' of the query1, query2, and
    +   * query3.
    +   * @param {...AV.Query} var_args The list of queries to AND.
    +   * @return {AV.Query} The query that is the AND of the passed in queries.
    +   */
    +  AV.Query.and = function() {
    +    var queries = _.toArray(arguments);
    +    var className = null;
    +    AV._arrayEach(queries, function(q) {
    +      if (_.isNull(className)) {
    +        className = q.className;
    +      }
    +
    +      if (className !== q.className) {
    +        throw new Error('All queries must be for the same class');
    +      }
    +    });
    +    var query = new AV.Query(className);
    +    query._andQuery(queries);
    +    return query;
    +  };
    +
    +  /**
    +   * Retrieves a list of AVObjects that satisfy the CQL.
    +   * CQL syntax please see {@link https://leancloud.cn/docs/cql_guide.html CQL Guide}.
    +   *
    +   * @param {String} cql A CQL string, see {@link https://leancloud.cn/docs/cql_guide.html CQL Guide}.
    +   * @param {Array} pvalues An array contains placeholder values.
    +   * @param {AuthOptions} options
    +   * @return {Promise} A promise that is resolved with the results when
    +   * the query completes.
    +   */
    +  AV.Query.doCloudQuery = function(cql, pvalues, options) {
    +    var params = { cql: cql };
    +    if (_.isArray(pvalues)) {
    +      params.pvalues = pvalues;
    +    } else {
    +      options = pvalues;
    +    }
    +
    +    var request = _request('cloudQuery', null, null, 'GET', params, options);
    +    return request.then(function(response) {
    +      //query to process results.
    +      var query = new AV.Query(response.className);
    +      var results = _.map(response.results, function(json) {
    +        var obj = query._newObject(response);
    +        if (obj._finishFetch) {
    +          obj._finishFetch(query._processResult(json), true);
    +        }
    +        return obj;
    +      });
    +      return {
    +        results: results,
    +        count: response.count,
    +        className: response.className,
    +      };
    +    });
    +  };
    +
    +  /**
    +   * Return a query with conditions from json.
    +   * This can be useful to send a query from server side to client side.
    +   * @since 4.0.0
    +   * @param {Object} json from {@link AV.Query#toJSON}
    +   * @return {AV.Query}
    +   */
    +  AV.Query.fromJSON = ({
    +    className,
    +    where,
    +    include,
    +    select,
    +    includeACL,
    +    limit,
    +    skip,
    +    order,
    +  }) => {
    +    if (typeof className !== 'string') {
    +      throw new TypeError('Invalid Query JSON, className must be a String.');
    +    }
    +    const query = new AV.Query(className);
    +    _.extend(query, {
    +      _where: where,
    +      _include: include,
    +      _select: select,
    +      _includeACL: includeACL,
    +      _limit: limit,
    +      _skip: skip,
    +      _order: order,
    +    });
    +    return query;
    +  };
    +
    +  AV.Query._extend = AV._extend;
    +
    +  _.extend(
    +    AV.Query.prototype,
    +    /** @lends AV.Query.prototype */ {
    +      //hook to iterate result. Added by dennis<xzhuang@avoscloud.com>.
    +      _processResult: function(obj) {
    +        return obj;
    +      },
    +
    +      /**
    +       * Constructs an AV.Object whose id is already known by fetching data from
    +       * the server.
    +       *
    +       * @param {String} objectId The id of the object to be fetched.
    +       * @param {AuthOptions} options
    +       * @return {Promise.<AV.Object>}
    +       */
    +      get: function(objectId, options) {
    +        if (!_.isString(objectId)) {
    +          throw new Error('objectId must be a string');
    +        }
    +        if (objectId === '') {
    +          return Promise.reject(
    +            new AVError(AVError.OBJECT_NOT_FOUND, 'Object not found.')
    +          );
    +        }
    +
    +        var obj = this._newObject();
    +        obj.id = objectId;
    +
    +        var queryJSON = this._getParams();
    +        var fetchOptions = {};
    +
    +        if (queryJSON.keys) fetchOptions.keys = queryJSON.keys;
    +        if (queryJSON.include) fetchOptions.include = queryJSON.include;
    +        if (queryJSON.includeACL)
    +          fetchOptions.includeACL = queryJSON.includeACL;
    +
    +        return _request(
    +          'classes',
    +          this.className,
    +          objectId,
    +          'GET',
    +          transformFetchOptions(fetchOptions),
    +          options
    +        ).then(response => {
    +          if (_.isEmpty(response))
    +            throw new AVError(AVError.OBJECT_NOT_FOUND, 'Object not found.');
    +          obj._finishFetch(obj.parse(response), true);
    +          return obj;
    +        });
    +      },
    +
    +      /**
    +       * Returns a JSON representation of this query.
    +       * @return {Object}
    +       */
    +      toJSON() {
    +        const {
    +          className,
    +          _where: where,
    +          _include: include,
    +          _select: select,
    +          _includeACL: includeACL,
    +          _limit: limit,
    +          _skip: skip,
    +          _order: order,
    +        } = this;
    +        return {
    +          className,
    +          where,
    +          include,
    +          select,
    +          includeACL,
    +          limit,
    +          skip,
    +          order,
    +        };
    +      },
    +
    +      _getParams: function() {
    +        var params = _.extend({}, this._defaultParams, {
    +          where: this._where,
    +        });
    +
    +        if (this._include.length > 0) {
    +          params.include = this._include.join(',');
    +        }
    +        if (this._select.length > 0) {
    +          params.keys = this._select.join(',');
    +        }
    +        if (this._includeACL !== undefined) {
    +          params.returnACL = this._includeACL;
    +        }
    +        if (this._limit >= 0) {
    +          params.limit = this._limit;
    +        }
    +        if (this._skip > 0) {
    +          params.skip = this._skip;
    +        }
    +        if (this._order !== undefined) {
    +          params.order = this._order;
    +        }
    +
    +        return params;
    +      },
    +
    +      _newObject: function(response) {
    +        var obj;
    +        if (response && response.className) {
    +          obj = new AV.Object(response.className);
    +        } else {
    +          obj = new this.objectClass();
    +        }
    +        return obj;
    +      },
    +      _createRequest(
    +        params = this._getParams(),
    +        options,
    +        path = `/classes/${this.className}`
    +      ) {
    +        if (encodeURIComponent(JSON.stringify(params)).length > 2000) {
    +          const body = {
    +            requests: [
    +              {
    +                method: 'GET',
    +                path: `/1.1${path}`,
    +                params,
    +              },
    +            ],
    +          };
    +          return request({
    +            path: '/batch',
    +            method: 'POST',
    +            data: body,
    +            authOptions: options,
    +          }).then(response => {
    +            const result = response[0];
    +            if (result.success) {
    +              return result.success;
    +            }
    +            const error = new AVError(
    +              result.error.code,
    +              result.error.error || 'Unknown batch error'
    +            );
    +            throw error;
    +          });
    +        }
    +        return request({
    +          method: 'GET',
    +          path,
    +          query: params,
    +          authOptions: options,
    +        });
    +      },
    +
    +      _parseResponse(response) {
    +        return _.map(response.results, json => {
    +          var obj = this._newObject(response);
    +          if (obj._finishFetch) {
    +            obj._finishFetch(this._processResult(json), true);
    +          }
    +          return obj;
    +        });
    +      },
    +
    +      /**
    +       * Retrieves a list of AVObjects that satisfy this query.
    +       *
    +       * @param {AuthOptions} options
    +       * @return {Promise} A promise that is resolved with the results when
    +       * the query completes.
    +       */
    +      find(options) {
    +        const request = this._createRequest(undefined, options);
    +        return request.then(this._parseResponse.bind(this));
    +      },
    +
    +      /**
    +       * Retrieves both AVObjects and total count.
    +       *
    +       * @since 4.12.0
    +       * @param {AuthOptions} options
    +       * @return {Promise} A tuple contains results and count.
    +       */
    +      findAndCount(options) {
    +        const params = this._getParams();
    +        params.count = 1;
    +        const request = this._createRequest(params, options);
    +
    +        return request.then(response => [
    +          this._parseResponse(response),
    +          response.count,
    +        ]);
    +      },
    +
    +      /**
    +       * scan a Query. masterKey required.
    +       *
    +       * @since 2.1.0
    +       * @param {object} [options]
    +       * @param {string} [options.orderedBy] specify the key to sort
    +       * @param {number} [options.batchSize] specify the batch size for each request
    +       * @param {AuthOptions} [authOptions]
    +       * @return {AsyncIterator.<AV.Object>}
    +       * @example const testIterator = {
    +       *   [Symbol.asyncIterator]() {
    +       *     return new Query('Test').scan(undefined, { useMasterKey: true });
    +       *   },
    +       * };
    +       * for await (const test of testIterator) {
    +       *   console.log(test.id);
    +       * }
    +       */
    +      scan({ orderedBy, batchSize } = {}, authOptions) {
    +        const condition = this._getParams();
    +        debug('scan %O', condition);
    +        if (condition.order) {
    +          console.warn(
    +            'The order of the query is ignored for Query#scan. Checkout the orderedBy option of Query#scan.'
    +          );
    +          delete condition.order;
    +        }
    +        if (condition.skip) {
    +          console.warn(
    +            'The skip option of the query is ignored for Query#scan.'
    +          );
    +          delete condition.skip;
    +        }
    +        if (condition.limit) {
    +          console.warn(
    +            'The limit option of the query is ignored for Query#scan.'
    +          );
    +          delete condition.limit;
    +        }
    +        if (orderedBy) condition.scan_key = orderedBy;
    +        if (batchSize) condition.limit = batchSize;
    +        let cursor;
    +        let remainResults = [];
    +        return {
    +          next: () => {
    +            if (remainResults.length) {
    +              return Promise.resolve({
    +                done: false,
    +                value: remainResults.shift(),
    +              });
    +            }
    +            if (cursor === null) {
    +              return Promise.resolve({ done: true });
    +            }
    +            return _request(
    +              'scan/classes',
    +              this.className,
    +              null,
    +              'GET',
    +              cursor ? _.extend({}, condition, { cursor }) : condition,
    +              authOptions
    +            ).then(response => {
    +              cursor = response.cursor;
    +              if (response.results.length) {
    +                const results = this._parseResponse(response);
    +                results.forEach(result => remainResults.push(result));
    +              }
    +              if (cursor === null && remainResults.length === 0) {
    +                return { done: true };
    +              }
    +              return {
    +                done: false,
    +                value: remainResults.shift(),
    +              };
    +            });
    +          },
    +        };
    +      },
    +
    +      /**
    +       * Delete objects retrieved by this query.
    +       * @param {AuthOptions} options
    +       * @return {Promise} A promise that is fulfilled when the save
    +       *     completes.
    +       */
    +      destroyAll: function(options) {
    +        var self = this;
    +        return self.find(options).then(function(objects) {
    +          return AV.Object.destroyAll(objects, options);
    +        });
    +      },
    +
    +      /**
    +       * Counts the number of objects that match this query.
    +       *
    +       * @param {AuthOptions} options
    +       * @return {Promise} A promise that is resolved with the count when
    +       * the query completes.
    +       */
    +      count: function(options) {
    +        var params = this._getParams();
    +        params.limit = 0;
    +        params.count = 1;
    +        var request = this._createRequest(params, options);
    +
    +        return request.then(function(response) {
    +          return response.count;
    +        });
    +      },
    +
    +      /**
    +       * Retrieves at most one AV.Object that satisfies this query.
    +       *
    +       * @param {AuthOptions} options
    +       * @return {Promise} A promise that is resolved with the object when
    +       * the query completes.
    +       */
    +      first: function(options) {
    +        var self = this;
    +
    +        var params = this._getParams();
    +        params.limit = 1;
    +        var request = this._createRequest(params, options);
    +
    +        return request.then(function(response) {
    +          return _.map(response.results, function(json) {
    +            var obj = self._newObject();
    +            if (obj._finishFetch) {
    +              obj._finishFetch(self._processResult(json), true);
    +            }
    +            return obj;
    +          })[0];
    +        });
    +      },
    +
    +      /**
    +       * Sets the number of results to skip before returning any results.
    +       * This is useful for pagination.
    +       * Default is to skip zero results.
    +       * @param {Number} n the number of results to skip.
    +       * @return {AV.Query} Returns the query, so you can chain this call.
    +       */
    +      skip: function(n) {
    +        requires(n, 'undefined is not a valid skip value');
    +        this._skip = n;
    +        return this;
    +      },
    +
    +      /**
    +       * Sets the limit of the number of results to return. The default limit is
    +       * 100, with a maximum of 1000 results being returned at a time.
    +       * @param {Number} n the number of results to limit to.
    +       * @return {AV.Query} Returns the query, so you can chain this call.
    +       */
    +      limit: function(n) {
    +        requires(n, 'undefined is not a valid limit value');
    +        this._limit = n;
    +        return this;
    +      },
    +
    +      /**
    +       * Add a constraint to the query that requires a particular key's value to
    +       * be equal to the provided value.
    +       * @param {String} key The key to check.
    +       * @param value The value that the AV.Object must contain.
    +       * @return {AV.Query} Returns the query, so you can chain this call.
    +       */
    +      equalTo: function(key, value) {
    +        requires(key, 'undefined is not a valid key');
    +        requires(value, 'undefined is not a valid value');
    +        this._where[key] = AV._encode(value);
    +        return this;
    +      },
    +
    +      /**
    +       * Helper for condition queries
    +       * @private
    +       */
    +      _addCondition: function(key, condition, value) {
    +        requires(key, 'undefined is not a valid condition key');
    +        requires(condition, 'undefined is not a valid condition');
    +        requires(value, 'undefined is not a valid condition value');
    +
    +        // Check if we already have a condition
    +        if (!this._where[key]) {
    +          this._where[key] = {};
    +        }
    +        this._where[key][condition] = AV._encode(value);
    +        return this;
    +      },
    +
    +      /**
    +       * Add a constraint to the query that requires a particular
    +       * <strong>array</strong> key's length to be equal to the provided value.
    +       * @param {String} key The array key to check.
    +       * @param {number} value The length value.
    +       * @return {AV.Query} Returns the query, so you can chain this call.
    +       */
    +      sizeEqualTo: function(key, value) {
    +        this._addCondition(key, '$size', value);
    +        return this;
    +      },
    +
    +      /**
    +       * Add a constraint to the query that requires a particular key's value to
    +       * be not equal to the provided value.
    +       * @param {String} key The key to check.
    +       * @param value The value that must not be equalled.
    +       * @return {AV.Query} Returns the query, so you can chain this call.
    +       */
    +      notEqualTo: function(key, value) {
    +        this._addCondition(key, '$ne', value);
    +        return this;
    +      },
    +
    +      /**
    +       * Add a constraint to the query that requires a particular key's value to
    +       * be less than the provided value.
    +       * @param {String} key The key to check.
    +       * @param value The value that provides an upper bound.
    +       * @return {AV.Query} Returns the query, so you can chain this call.
    +       */
    +      lessThan: function(key, value) {
    +        this._addCondition(key, '$lt', value);
    +        return this;
    +      },
    +
    +      /**
    +       * Add a constraint to the query that requires a particular key's value to
    +       * be greater than the provided value.
    +       * @param {String} key The key to check.
    +       * @param value The value that provides an lower bound.
    +       * @return {AV.Query} Returns the query, so you can chain this call.
    +       */
    +      greaterThan: function(key, value) {
    +        this._addCondition(key, '$gt', value);
    +        return this;
    +      },
    +
    +      /**
    +       * Add a constraint to the query that requires a particular key's value to
    +       * be less than or equal to the provided value.
    +       * @param {String} key The key to check.
    +       * @param value The value that provides an upper bound.
    +       * @return {AV.Query} Returns the query, so you can chain this call.
    +       */
    +      lessThanOrEqualTo: function(key, value) {
    +        this._addCondition(key, '$lte', value);
    +        return this;
    +      },
    +
    +      /**
    +       * Add a constraint to the query that requires a particular key's value to
    +       * be greater than or equal to the provided value.
    +       * @param {String} key The key to check.
    +       * @param value The value that provides an lower bound.
    +       * @return {AV.Query} Returns the query, so you can chain this call.
    +       */
    +      greaterThanOrEqualTo: function(key, value) {
    +        this._addCondition(key, '$gte', value);
    +        return this;
    +      },
    +
    +      /**
    +       * Add a constraint to the query that requires a particular key's value to
    +       * be contained in the provided list of values.
    +       * @param {String} key The key to check.
    +       * @param {Array} values The values that will match.
    +       * @return {AV.Query} Returns the query, so you can chain this call.
    +       */
    +      containedIn: function(key, values) {
    +        this._addCondition(key, '$in', values);
    +        return this;
    +      },
    +
    +      /**
    +       * Add a constraint to the query that requires a particular key's value to
    +       * not be contained in the provided list of values.
    +       * @param {String} key The key to check.
    +       * @param {Array} values The values that will not match.
    +       * @return {AV.Query} Returns the query, so you can chain this call.
    +       */
    +      notContainedIn: function(key, values) {
    +        this._addCondition(key, '$nin', values);
    +        return this;
    +      },
    +
    +      /**
    +       * Add a constraint to the query that requires a particular key's value to
    +       * contain each one of the provided list of values.
    +       * @param {String} key The key to check.  This key's value must be an array.
    +       * @param {Array} values The values that will match.
    +       * @return {AV.Query} Returns the query, so you can chain this call.
    +       */
    +      containsAll: function(key, values) {
    +        this._addCondition(key, '$all', values);
    +        return this;
    +      },
    +
    +      /**
    +       * Add a constraint for finding objects that contain the given key.
    +       * @param {String} key The key that should exist.
    +       * @return {AV.Query} Returns the query, so you can chain this call.
    +       */
    +      exists: function(key) {
    +        this._addCondition(key, '$exists', true);
    +        return this;
    +      },
    +
    +      /**
    +       * Add a constraint for finding objects that do not contain a given key.
    +       * @param {String} key The key that should not exist
    +       * @return {AV.Query} Returns the query, so you can chain this call.
    +       */
    +      doesNotExist: function(key) {
    +        this._addCondition(key, '$exists', false);
    +        return this;
    +      },
    +
    +      /**
    +       * Add a regular expression constraint for finding string values that match
    +       * the provided regular expression.
    +       * This may be slow for large datasets.
    +       * @param {String} key The key that the string to match is stored in.
    +       * @param {RegExp} regex The regular expression pattern to match.
    +       * @return {AV.Query} Returns the query, so you can chain this call.
    +       */
    +      matches: function(key, regex, modifiers) {
    +        this._addCondition(key, '$regex', regex);
    +        if (!modifiers) {
    +          modifiers = '';
    +        }
    +        // Javascript regex options support mig as inline options but store them
    +        // as properties of the object. We support mi & should migrate them to
    +        // modifiers
    +        if (regex.ignoreCase) {
    +          modifiers += 'i';
    +        }
    +        if (regex.multiline) {
    +          modifiers += 'm';
    +        }
    +
    +        if (modifiers && modifiers.length) {
    +          this._addCondition(key, '$options', modifiers);
    +        }
    +        return this;
    +      },
    +
    +      /**
    +       * Add a constraint that requires that a key's value matches a AV.Query
    +       * constraint.
    +       * @param {String} key The key that the contains the object to match the
    +       *                     query.
    +       * @param {AV.Query} query The query that should match.
    +       * @return {AV.Query} Returns the query, so you can chain this call.
    +       */
    +      matchesQuery: function(key, query) {
    +        var queryJSON = query._getParams();
    +        queryJSON.className = query.className;
    +        this._addCondition(key, '$inQuery', queryJSON);
    +        return this;
    +      },
    +
    +      /**
    +       * Add a constraint that requires that a key's value not matches a
    +       * AV.Query constraint.
    +       * @param {String} key The key that the contains the object to match the
    +       *                     query.
    +       * @param {AV.Query} query The query that should not match.
    +       * @return {AV.Query} Returns the query, so you can chain this call.
    +       */
    +      doesNotMatchQuery: function(key, query) {
    +        var queryJSON = query._getParams();
    +        queryJSON.className = query.className;
    +        this._addCondition(key, '$notInQuery', queryJSON);
    +        return this;
    +      },
    +
    +      /**
    +       * Add a constraint that requires that a key's value matches a value in
    +       * an object returned by a different AV.Query.
    +       * @param {String} key The key that contains the value that is being
    +       *                     matched.
    +       * @param {String} queryKey The key in the objects returned by the query to
    +       *                          match against.
    +       * @param {AV.Query} query The query to run.
    +       * @return {AV.Query} Returns the query, so you can chain this call.
    +       */
    +      matchesKeyInQuery: function(key, queryKey, query) {
    +        var queryJSON = query._getParams();
    +        queryJSON.className = query.className;
    +        this._addCondition(key, '$select', { key: queryKey, query: queryJSON });
    +        return this;
    +      },
    +
    +      /**
    +       * Add a constraint that requires that a key's value not match a value in
    +       * an object returned by a different AV.Query.
    +       * @param {String} key The key that contains the value that is being
    +       *                     excluded.
    +       * @param {String} queryKey The key in the objects returned by the query to
    +       *                          match against.
    +       * @param {AV.Query} query The query to run.
    +       * @return {AV.Query} Returns the query, so you can chain this call.
    +       */
    +      doesNotMatchKeyInQuery: function(key, queryKey, query) {
    +        var queryJSON = query._getParams();
    +        queryJSON.className = query.className;
    +        this._addCondition(key, '$dontSelect', {
    +          key: queryKey,
    +          query: queryJSON,
    +        });
    +        return this;
    +      },
    +
    +      /**
    +       * Add constraint that at least one of the passed in queries matches.
    +       * @param {Array} queries
    +       * @return {AV.Query} Returns the query, so you can chain this call.
    +       * @private
    +       */
    +      _orQuery: function(queries) {
    +        var queryJSON = _.map(queries, function(q) {
    +          return q._getParams().where;
    +        });
    +
    +        this._where.$or = queryJSON;
    +        return this;
    +      },
    +
    +      /**
    +       * Add constraint that both of the passed in queries matches.
    +       * @param {Array} queries
    +       * @return {AV.Query} Returns the query, so you can chain this call.
    +       * @private
    +       */
    +      _andQuery: function(queries) {
    +        var queryJSON = _.map(queries, function(q) {
    +          return q._getParams().where;
    +        });
    +
    +        this._where.$and = queryJSON;
    +        return this;
    +      },
    +
    +      /**
    +       * Converts a string into a regex that matches it.
    +       * Surrounding with \Q .. \E does this, we just need to escape \E's in
    +       * the text separately.
    +       * @private
    +       */
    +      _quote: function(s) {
    +        return '\\Q' + s.replace('\\E', '\\E\\\\E\\Q') + '\\E';
    +      },
    +
    +      /**
    +       * Add a constraint for finding string values that contain a provided
    +       * string.  This may be slow for large datasets.
    +       * @param {String} key The key that the string to match is stored in.
    +       * @param {String} substring The substring that the value must contain.
    +       * @return {AV.Query} Returns the query, so you can chain this call.
    +       */
    +      contains: function(key, value) {
    +        this._addCondition(key, '$regex', this._quote(value));
    +        return this;
    +      },
    +
    +      /**
    +       * Add a constraint for finding string values that start with a provided
    +       * string.  This query will use the backend index, so it will be fast even
    +       * for large datasets.
    +       * @param {String} key The key that the string to match is stored in.
    +       * @param {String} prefix The substring that the value must start with.
    +       * @return {AV.Query} Returns the query, so you can chain this call.
    +       */
    +      startsWith: function(key, value) {
    +        this._addCondition(key, '$regex', '^' + this._quote(value));
    +        return this;
    +      },
    +
    +      /**
    +       * Add a constraint for finding string values that end with a provided
    +       * string.  This will be slow for large datasets.
    +       * @param {String} key The key that the string to match is stored in.
    +       * @param {String} suffix The substring that the value must end with.
    +       * @return {AV.Query} Returns the query, so you can chain this call.
    +       */
    +      endsWith: function(key, value) {
    +        this._addCondition(key, '$regex', this._quote(value) + '$');
    +        return this;
    +      },
    +
    +      /**
    +       * Sorts the results in ascending order by the given key.
    +       *
    +       * @param {String} key The key to order by.
    +       * @return {AV.Query} Returns the query, so you can chain this call.
    +       */
    +      ascending: function(key) {
    +        requires(key, 'undefined is not a valid key');
    +        this._order = key;
    +        return this;
    +      },
    +
    +      /**
    +       * Also sorts the results in ascending order by the given key. The previous sort keys have
    +       * precedence over this key.
    +       *
    +       * @param {String} key The key to order by
    +       * @return {AV.Query} Returns the query so you can chain this call.
    +       */
    +      addAscending: function(key) {
    +        requires(key, 'undefined is not a valid key');
    +        if (this._order) this._order += ',' + key;
    +        else this._order = key;
    +        return this;
    +      },
    +
    +      /**
    +       * Sorts the results in descending order by the given key.
    +       *
    +       * @param {String} key The key to order by.
    +       * @return {AV.Query} Returns the query, so you can chain this call.
    +       */
    +      descending: function(key) {
    +        requires(key, 'undefined is not a valid key');
    +        this._order = '-' + key;
    +        return this;
    +      },
    +
    +      /**
    +       * Also sorts the results in descending order by the given key. The previous sort keys have
    +       * precedence over this key.
    +       *
    +       * @param {String} key The key to order by
    +       * @return {AV.Query} Returns the query so you can chain this call.
    +       */
    +      addDescending: function(key) {
    +        requires(key, 'undefined is not a valid key');
    +        if (this._order) this._order += ',-' + key;
    +        else this._order = '-' + key;
    +        return this;
    +      },
    +
    +      /**
    +       * Add a proximity based constraint for finding objects with key point
    +       * values near the point given.
    +       * @param {String} key The key that the AV.GeoPoint is stored in.
    +       * @param {AV.GeoPoint} point The reference AV.GeoPoint that is used.
    +       * @return {AV.Query} Returns the query, so you can chain this call.
    +       */
    +      near: function(key, point) {
    +        if (!(point instanceof AV.GeoPoint)) {
    +          // Try to cast it to a GeoPoint, so that near("loc", [20,30]) works.
    +          point = new AV.GeoPoint(point);
    +        }
    +        this._addCondition(key, '$nearSphere', point);
    +        return this;
    +      },
    +
    +      /**
    +       * Add a proximity based constraint for finding objects with key point
    +       * values near the point given and within the maximum distance given.
    +       * @param {String} key The key that the AV.GeoPoint is stored in.
    +       * @param {AV.GeoPoint} point The reference AV.GeoPoint that is used.
    +       * @param maxDistance Maximum distance (in radians) of results to return.
    +       * @return {AV.Query} Returns the query, so you can chain this call.
    +       */
    +      withinRadians: function(key, point, distance) {
    +        this.near(key, point);
    +        this._addCondition(key, '$maxDistance', distance);
    +        return this;
    +      },
    +
    +      /**
    +       * Add a proximity based constraint for finding objects with key point
    +       * values near the point given and within the maximum distance given.
    +       * Radius of earth used is 3958.8 miles.
    +       * @param {String} key The key that the AV.GeoPoint is stored in.
    +       * @param {AV.GeoPoint} point The reference AV.GeoPoint that is used.
    +       * @param {Number} maxDistance Maximum distance (in miles) of results to
    +       *     return.
    +       * @return {AV.Query} Returns the query, so you can chain this call.
    +       */
    +      withinMiles: function(key, point, distance) {
    +        return this.withinRadians(key, point, distance / 3958.8);
    +      },
    +
    +      /**
    +       * Add a proximity based constraint for finding objects with key point
    +       * values near the point given and within the maximum distance given.
    +       * Radius of earth used is 6371.0 kilometers.
    +       * @param {String} key The key that the AV.GeoPoint is stored in.
    +       * @param {AV.GeoPoint} point The reference AV.GeoPoint that is used.
    +       * @param {Number} maxDistance Maximum distance (in kilometers) of results
    +       *     to return.
    +       * @return {AV.Query} Returns the query, so you can chain this call.
    +       */
    +      withinKilometers: function(key, point, distance) {
    +        return this.withinRadians(key, point, distance / 6371.0);
    +      },
    +
    +      /**
    +       * Add a constraint to the query that requires a particular key's
    +       * coordinates be contained within a given rectangular geographic bounding
    +       * box.
    +       * @param {String} key The key to be constrained.
    +       * @param {AV.GeoPoint} southwest
    +       *     The lower-left inclusive corner of the box.
    +       * @param {AV.GeoPoint} northeast
    +       *     The upper-right inclusive corner of the box.
    +       * @return {AV.Query} Returns the query, so you can chain this call.
    +       */
    +      withinGeoBox: function(key, southwest, northeast) {
    +        if (!(southwest instanceof AV.GeoPoint)) {
    +          southwest = new AV.GeoPoint(southwest);
    +        }
    +        if (!(northeast instanceof AV.GeoPoint)) {
    +          northeast = new AV.GeoPoint(northeast);
    +        }
    +        this._addCondition(key, '$within', { $box: [southwest, northeast] });
    +        return this;
    +      },
    +
    +      /**
    +       * Include nested AV.Objects for the provided key.  You can use dot
    +       * notation to specify which fields in the included object are also fetch.
    +       * @param {String[]} keys The name of the key to include.
    +       * @return {AV.Query} Returns the query, so you can chain this call.
    +       */
    +      include: function(keys) {
    +        requires(keys, 'undefined is not a valid key');
    +        _.forEach(arguments, keys => {
    +          this._include = this._include.concat(ensureArray(keys));
    +        });
    +        return this;
    +      },
    +
    +      /**
    +       * Include the ACL.
    +       * @param {Boolean} [value=true] Whether to include the ACL
    +       * @return {AV.Query} Returns the query, so you can chain this call.
    +       */
    +      includeACL: function(value = true) {
    +        this._includeACL = value;
    +        return this;
    +      },
    +
    +      /**
    +       * Restrict the fields of the returned AV.Objects to include only the
    +       * provided keys.  If this is called multiple times, then all of the keys
    +       * specified in each of the calls will be included.
    +       * @param {String[]} keys The names of the keys to include.
    +       * @return {AV.Query} Returns the query, so you can chain this call.
    +       */
    +      select: function(keys) {
    +        requires(keys, 'undefined is not a valid key');
    +        _.forEach(arguments, keys => {
    +          this._select = this._select.concat(ensureArray(keys));
    +        });
    +        return this;
    +      },
    +
    +      /**
    +       * Iterates over each result of a query, calling a callback for each one. If
    +       * the callback returns a promise, the iteration will not continue until
    +       * that promise has been fulfilled. If the callback returns a rejected
    +       * promise, then iteration will stop with that error. The items are
    +       * processed in an unspecified order. The query may not have any sort order,
    +       * and may not use limit or skip.
    +       * @param callback {Function} Callback that will be called with each result
    +       *     of the query.
    +       * @return {Promise} A promise that will be fulfilled once the
    +       *     iteration has completed.
    +       */
    +      each: function(callback, options = {}) {
    +        if (this._order || this._skip || this._limit >= 0) {
    +          var error = new Error(
    +            'Cannot iterate on a query with sort, skip, or limit.'
    +          );
    +          return Promise.reject(error);
    +        }
    +
    +        var query = new AV.Query(this.objectClass);
    +        // We can override the batch size from the options.
    +        // This is undocumented, but useful for testing.
    +        query._limit = options.batchSize || 100;
    +        query._where = _.clone(this._where);
    +        query._include = _.clone(this._include);
    +
    +        query.ascending('objectId');
    +
    +        var finished = false;
    +        return continueWhile(
    +          function() {
    +            return !finished;
    +          },
    +          function() {
    +            return query.find(options).then(function(results) {
    +              var callbacksDone = Promise.resolve();
    +              _.each(results, function(result) {
    +                callbacksDone = callbacksDone.then(function() {
    +                  return callback(result);
    +                });
    +              });
    +
    +              return callbacksDone.then(function() {
    +                if (results.length >= query._limit) {
    +                  query.greaterThan('objectId', results[results.length - 1].id);
    +                } else {
    +                  finished = true;
    +                }
    +              });
    +            });
    +          }
    +        );
    +      },
    +
    +      /**
    +       * Subscribe the changes of this query.
    +       *
    +       * LiveQuery is not included in the default bundle: {@link https://url.leanapp.cn/enable-live-query}.
    +       *
    +       * @since 3.0.0
    +       * @return {AV.LiveQuery} An eventemitter which can be used to get LiveQuery updates;
    +       */
    +      subscribe(options) {
    +        return AV.LiveQuery.init(this, options);
    +      },
    +    }
    +  );
    +
    +  AV.FriendShipQuery = AV.Query._extend({
    +    _newObject: function() {
    +      const UserClass = AV.Object._getSubclass('_User');
    +      return new UserClass();
    +    },
    +    _processResult: function(json) {
    +      if (json && json[this._friendshipTag]) {
    +        var user = json[this._friendshipTag];
    +        if (user.__type === 'Pointer' && user.className === '_User') {
    +          delete user.__type;
    +          delete user.className;
    +        }
    +        return user;
    +      } else {
    +        return null;
    +      }
    +    },
    +  });
    +};
    +
    +
    +
    + + + + +
    + +
    + +
    + Documentation generated by JSDoc 3.6.3 on Mon Sep 25 2023 11:05:14 GMT+0000 (Coordinated Universal Time) using the docdash theme. +
    + + + + + diff --git a/docs/relation.js.html b/docs/relation.js.html new file mode 100644 index 000000000..b3f5f72ab --- /dev/null +++ b/docs/relation.js.html @@ -0,0 +1,180 @@ + + + + + relation.js - Documentation + + + + + + + + + + + + + + + + +
    + +

    relation.js

    + + + + + + + +
    +
    +
    var _ = require('underscore');
    +
    +module.exports = function(AV) {
    +  /**
    +   * Creates a new Relation for the given parent object and key. This
    +   * constructor should rarely be used directly, but rather created by
    +   * {@link AV.Object#relation}.
    +   * @param {AV.Object} parent The parent of this relation.
    +   * @param {String} key The key for this relation on the parent.
    +   * @see AV.Object#relation
    +   * @class
    +   *
    +   * <p>
    +   * A class that is used to access all of the children of a many-to-many
    +   * relationship.  Each instance of AV.Relation is associated with a
    +   * particular parent object and key.
    +   * </p>
    +   */
    +  AV.Relation = function(parent, key) {
    +    if (!_.isString(key)) {
    +      throw new TypeError('key must be a string');
    +    }
    +    this.parent = parent;
    +    this.key = key;
    +    this.targetClassName = null;
    +  };
    +
    +  /**
    +   * Creates a query that can be used to query the parent objects in this relation.
    +   * @param {String} parentClass The parent class or name.
    +   * @param {String} relationKey The relation field key in parent.
    +   * @param {AV.Object} child The child object.
    +   * @return {AV.Query}
    +   */
    +  AV.Relation.reverseQuery = function(parentClass, relationKey, child) {
    +    var query = new AV.Query(parentClass);
    +    query.equalTo(relationKey, child._toPointer());
    +    return query;
    +  };
    +
    +  _.extend(
    +    AV.Relation.prototype,
    +    /** @lends AV.Relation.prototype */ {
    +      /**
    +       * Makes sure that this relation has the right parent and key.
    +       * @private
    +       */
    +      _ensureParentAndKey: function(parent, key) {
    +        this.parent = this.parent || parent;
    +        this.key = this.key || key;
    +        if (this.parent !== parent) {
    +          throw new Error(
    +            'Internal Error. Relation retrieved from two different Objects.'
    +          );
    +        }
    +        if (this.key !== key) {
    +          throw new Error(
    +            'Internal Error. Relation retrieved from two different keys.'
    +          );
    +        }
    +      },
    +
    +      /**
    +       * Adds a AV.Object or an array of AV.Objects to the relation.
    +       * @param {AV.Object|AV.Object[]} objects The item or items to add.
    +       */
    +      add: function(objects) {
    +        if (!_.isArray(objects)) {
    +          objects = [objects];
    +        }
    +
    +        var change = new AV.Op.Relation(objects, []);
    +        this.parent.set(this.key, change);
    +        this.targetClassName = change._targetClassName;
    +      },
    +
    +      /**
    +       * Removes a AV.Object or an array of AV.Objects from this relation.
    +       * @param {AV.Object|AV.Object[]} objects The item or items to remove.
    +       */
    +      remove: function(objects) {
    +        if (!_.isArray(objects)) {
    +          objects = [objects];
    +        }
    +
    +        var change = new AV.Op.Relation([], objects);
    +        this.parent.set(this.key, change);
    +        this.targetClassName = change._targetClassName;
    +      },
    +
    +      /**
    +       * Returns a JSON version of the object suitable for saving to disk.
    +       * @return {Object}
    +       */
    +      toJSON: function() {
    +        return { __type: 'Relation', className: this.targetClassName };
    +      },
    +
    +      /**
    +       * Returns a AV.Query that is limited to objects in this
    +       * relation.
    +       * @return {AV.Query}
    +       */
    +      query: function() {
    +        var targetClass;
    +        var query;
    +        if (!this.targetClassName) {
    +          targetClass = AV.Object._getSubclass(this.parent.className);
    +          query = new AV.Query(targetClass);
    +          query._defaultParams.redirectClassNameForKey = this.key;
    +        } else {
    +          targetClass = AV.Object._getSubclass(this.targetClassName);
    +          query = new AV.Query(targetClass);
    +        }
    +        query._addCondition('$relatedTo', 'object', this.parent._toPointer());
    +        query._addCondition('$relatedTo', 'key', this.key);
    +
    +        return query;
    +      },
    +    }
    +  );
    +};
    +
    +
    +
    + + + + +
    + +
    + +
    + Documentation generated by JSDoc 3.6.3 on Mon Sep 25 2023 11:05:14 GMT+0000 (Coordinated Universal Time) using the docdash theme. +
    + + + + + diff --git a/docs/request.js.html b/docs/request.js.html new file mode 100644 index 000000000..cd46f262f --- /dev/null +++ b/docs/request.js.html @@ -0,0 +1,254 @@ + + + + + request.js - Documentation + + + + + + + + + + + + + + + + +
    + +

    request.js

    + + + + + + + +
    +
    +
    const _ = require('underscore');
    +const md5 = require('md5');
    +const { extend } = require('underscore');
    +const AV = require('./av');
    +const AVError = require('./error');
    +const { getSessionToken } = require('./utils');
    +const ajax = require('./utils/ajax');
    +
    +// 计算 X-LC-Sign 的签名方法
    +const sign = (key, isMasterKey) => {
    +  const now = new Date().getTime();
    +  const signature = md5(now + key);
    +  if (isMasterKey) {
    +    return `${signature},${now},master`;
    +  }
    +  return `${signature},${now}`;
    +};
    +
    +const setAppKey = (headers, signKey) => {
    +  if (signKey) {
    +    headers['X-LC-Sign'] = sign(AV.applicationKey);
    +  } else {
    +    headers['X-LC-Key'] = AV.applicationKey;
    +  }
    +};
    +
    +const setHeaders = (authOptions = {}, signKey) => {
    +  const headers = {
    +    'X-LC-Id': AV.applicationId,
    +    'Content-Type': 'application/json;charset=UTF-8',
    +  };
    +  let useMasterKey = false;
    +  if (typeof authOptions.useMasterKey === 'boolean') {
    +    useMasterKey = authOptions.useMasterKey;
    +  } else if (typeof AV._config.useMasterKey === 'boolean') {
    +    useMasterKey = AV._config.useMasterKey;
    +  }
    +  if (useMasterKey) {
    +    if (AV.masterKey) {
    +      if (signKey) {
    +        headers['X-LC-Sign'] = sign(AV.masterKey, true);
    +      } else {
    +        headers['X-LC-Key'] = `${AV.masterKey},master`;
    +      }
    +    } else {
    +      console.warn('masterKey is not set, fall back to use appKey');
    +      setAppKey(headers, signKey);
    +    }
    +  } else {
    +    setAppKey(headers, signKey);
    +  }
    +  if (AV.hookKey) {
    +    headers['X-LC-Hook-Key'] = AV.hookKey;
    +  }
    +  if (AV._config.production !== null) {
    +    headers['X-LC-Prod'] = String(AV._config.production);
    +  }
    +  headers[process.env.PLATFORM === 'NODE_JS' ? 'User-Agent' : 'X-LC-UA'] =
    +    AV._sharedConfig.userAgent;
    +
    +  return Promise.resolve().then(() => {
    +    // Pass the session token
    +    const sessionToken = getSessionToken(authOptions);
    +    if (sessionToken) {
    +      headers['X-LC-Session'] = sessionToken;
    +    } else if (!AV._config.disableCurrentUser) {
    +      return AV.User.currentAsync().then(currentUser => {
    +        if (currentUser && currentUser._sessionToken) {
    +          headers['X-LC-Session'] = currentUser._sessionToken;
    +        }
    +        return headers;
    +      });
    +    }
    +    return headers;
    +  });
    +};
    +
    +const createApiUrl = ({
    +  service = 'api',
    +  version = '1.1',
    +  path,
    +  // query, // don't care
    +  // method, // don't care
    +  // data, // don't care
    +}) => {
    +  let apiURL = AV._config.serverURLs[service];
    +
    +  if (!apiURL) throw new Error(`undefined server URL for ${service}`);
    +
    +  if (apiURL.charAt(apiURL.length - 1) !== '/') {
    +    apiURL += '/';
    +  }
    +  apiURL += version;
    +  if (path) {
    +    apiURL += path;
    +  }
    +
    +  return apiURL;
    +};
    +
    +/**
    + * Low level REST API client. Call REST endpoints with authorization headers.
    + * @function AV.request
    + * @since 3.0.0
    + * @param {Object} options
    + * @param {String} options.method HTTP method
    + * @param {String} options.path endpoint path, e.g. `/classes/Test/55759577e4b029ae6015ac20`
    + * @param {Object} [options.query] query string dict
    + * @param {Object} [options.data] HTTP body
    + * @param {AuthOptions} [options.authOptions]
    + * @param {String} [options.service = 'api']
    + * @param {String} [options.version = '1.1']
    + */
    +const request = ({
    +  service,
    +  version,
    +  method,
    +  path,
    +  query,
    +  data,
    +  authOptions,
    +  signKey = true,
    +}) => {
    +  if (!(AV.applicationId && (AV.applicationKey || AV.masterKey))) {
    +    throw new Error('Not initialized');
    +  }
    +  if (AV._appRouter) {
    +    AV._appRouter.refresh();
    +  }
    +  const { requestTimeout: timeout } = AV._config;
    +  const url = createApiUrl({ service, path, version });
    +  return setHeaders(authOptions, signKey).then(headers =>
    +    ajax({ method, url, query, data, headers, timeout }).catch(error => {
    +      let errorJSON = {
    +        code: error.code || -1,
    +        error: error.message || error.responseText,
    +      };
    +      if (error.response && error.response.code) {
    +        errorJSON = error.response;
    +      } else if (error.responseText) {
    +        try {
    +          errorJSON = JSON.parse(error.responseText);
    +        } catch (e) {
    +          // If we fail to parse the error text, that's okay.
    +        }
    +      }
    +      errorJSON.rawMessage = errorJSON.rawMessage || errorJSON.error;
    +      if (!AV._sharedConfig.keepErrorRawMessage) {
    +        errorJSON.error += ` [${error.statusCode || 'N/A'} ${method} ${url}]`;
    +      }
    +      // Transform the error into an instance of AVError by trying to parse
    +      // the error string as JSON.
    +      const err = new AVError(errorJSON.code, errorJSON.error);
    +      delete errorJSON.error;
    +      throw _.extend(err, errorJSON);
    +    })
    +  );
    +};
    +
    +// lagecy request
    +const _request = (
    +  route,
    +  className,
    +  objectId,
    +  method,
    +  data,
    +  authOptions,
    +  query
    +) => {
    +  let path = '';
    +  if (route) path += `/${route}`;
    +  if (className) path += `/${className}`;
    +  if (objectId) path += `/${objectId}`;
    +  // for migeration
    +  if (data && data._fetchWhenSave)
    +    throw new Error('_fetchWhenSave should be in the query');
    +  if (data && data._where) throw new Error('_where should be in the query');
    +  if (method && method.toLowerCase() === 'get') {
    +    query = extend({}, query, data);
    +    data = null;
    +  }
    +  return request({
    +    method,
    +    path,
    +    query,
    +    data,
    +    authOptions,
    +  });
    +};
    +
    +AV.request = request;
    +
    +module.exports = {
    +  _request,
    +  request,
    +};
    +
    +
    +
    + + + + +
    + +
    + +
    + Documentation generated by JSDoc 3.6.3 on Mon Sep 25 2023 11:05:14 GMT+0000 (Coordinated Universal Time) using the docdash theme. +
    + + + + + diff --git a/docs/role.js.html b/docs/role.js.html new file mode 100644 index 000000000..b537b5cb1 --- /dev/null +++ b/docs/role.js.html @@ -0,0 +1,192 @@ + + + + + role.js - Documentation + + + + + + + + + + + + + + + + +
    + +

    role.js

    + + + + + + + +
    +
    +
    const _ = require('underscore');
    +const AVError = require('./error');
    +
    +module.exports = function(AV) {
    +  AV.Role = AV.Object.extend(
    +    '_Role',
    +    /** @lends AV.Role.prototype */ {
    +      // Instance Methods
    +
    +      /**
    +       * Represents a Role on the AV server. Roles represent groupings of
    +       * Users for the purposes of granting permissions (e.g. specifying an ACL
    +       * for an Object). Roles are specified by their sets of child users and
    +       * child roles, all of which are granted any permissions that the parent
    +       * role has.
    +       *
    +       * <p>Roles must have a name (which cannot be changed after creation of the
    +       * role), and must specify an ACL.</p>
    +       * An AV.Role is a local representation of a role persisted to the AV
    +       * cloud.
    +       * @class AV.Role
    +       * @param {String} name The name of the Role to create.
    +       * @param {AV.ACL} acl The ACL for this role.
    +       */
    +      constructor: function(name, acl) {
    +        if (_.isString(name)) {
    +          AV.Object.prototype.constructor.call(this, null, null);
    +          this.setName(name);
    +        } else {
    +          AV.Object.prototype.constructor.call(this, name, acl);
    +        }
    +        if (acl) {
    +          if (!(acl instanceof AV.ACL)) {
    +            throw new TypeError('acl must be an instance of AV.ACL');
    +          } else {
    +            this.setACL(acl);
    +          }
    +        }
    +      },
    +
    +      /**
    +       * Gets the name of the role.  You can alternatively call role.get("name")
    +       *
    +       * @return {String} the name of the role.
    +       */
    +      getName: function() {
    +        return this.get('name');
    +      },
    +
    +      /**
    +       * Sets the name for a role. This value must be set before the role has
    +       * been saved to the server, and cannot be set once the role has been
    +       * saved.
    +       *
    +       * <p>
    +       *   A role's name can only contain alphanumeric characters, _, -, and
    +       *   spaces.
    +       * </p>
    +       *
    +       * <p>This is equivalent to calling role.set("name", name)</p>
    +       *
    +       * @param {String} name The name of the role.
    +       */
    +      setName: function(name, options) {
    +        return this.set('name', name, options);
    +      },
    +
    +      /**
    +       * Gets the AV.Relation for the AV.Users that are direct
    +       * children of this role. These users are granted any privileges that this
    +       * role has been granted (e.g. read or write access through ACLs). You can
    +       * add or remove users from the role through this relation.
    +       *
    +       * <p>This is equivalent to calling role.relation("users")</p>
    +       *
    +       * @return {AV.Relation} the relation for the users belonging to this
    +       *     role.
    +       */
    +      getUsers: function() {
    +        return this.relation('users');
    +      },
    +
    +      /**
    +       * Gets the AV.Relation for the AV.Roles that are direct
    +       * children of this role. These roles' users are granted any privileges that
    +       * this role has been granted (e.g. read or write access through ACLs). You
    +       * can add or remove child roles from this role through this relation.
    +       *
    +       * <p>This is equivalent to calling role.relation("roles")</p>
    +       *
    +       * @return {AV.Relation} the relation for the roles belonging to this
    +       *     role.
    +       */
    +      getRoles: function() {
    +        return this.relation('roles');
    +      },
    +
    +      /**
    +       * @ignore
    +       */
    +      validate: function(attrs, options) {
    +        if ('name' in attrs && attrs.name !== this.getName()) {
    +          var newName = attrs.name;
    +          if (this.id && this.id !== attrs.objectId) {
    +            // Check to see if the objectId being set matches this.id.
    +            // This happens during a fetch -- the id is set before calling fetch.
    +            // Let the name be set in this case.
    +            return new AVError(
    +              AVError.OTHER_CAUSE,
    +              "A role's name can only be set before it has been saved."
    +            );
    +          }
    +          if (!_.isString(newName)) {
    +            return new AVError(
    +              AVError.OTHER_CAUSE,
    +              "A role's name must be a String."
    +            );
    +          }
    +          if (!/^[0-9a-zA-Z\-_ ]+$/.test(newName)) {
    +            return new AVError(
    +              AVError.OTHER_CAUSE,
    +              "A role's name can only contain alphanumeric characters, _," +
    +                ' -, and spaces.'
    +            );
    +          }
    +        }
    +        if (AV.Object.prototype.validate) {
    +          return AV.Object.prototype.validate.call(this, attrs, options);
    +        }
    +        return false;
    +      },
    +    }
    +  );
    +};
    +
    +
    +
    + + + + +
    + +
    + +
    + Documentation generated by JSDoc 3.6.3 on Mon Sep 25 2023 11:05:14 GMT+0000 (Coordinated Universal Time) using the docdash theme. +
    + + + + + diff --git a/docs/scripts/linenumber.js b/docs/scripts/linenumber.js new file mode 100644 index 000000000..8d52f7eaf --- /dev/null +++ b/docs/scripts/linenumber.js @@ -0,0 +1,25 @@ +/*global document */ +(function() { + var source = document.getElementsByClassName('prettyprint source linenums'); + var i = 0; + var lineNumber = 0; + var lineId; + var lines; + var totalLines; + var anchorHash; + + if (source && source[0]) { + anchorHash = document.location.hash.substring(1); + lines = source[0].getElementsByTagName('li'); + totalLines = lines.length; + + for (; i < totalLines; i++) { + lineNumber++; + lineId = 'line' + lineNumber; + lines[i].id = lineId; + if (lineId === anchorHash) { + lines[i].className += ' selected'; + } + } + } +})(); diff --git a/docs/scripts/prettify/Apache-License-2.0.txt b/docs/scripts/prettify/Apache-License-2.0.txt new file mode 100644 index 000000000..d64569567 --- /dev/null +++ b/docs/scripts/prettify/Apache-License-2.0.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/docs/scripts/prettify/lang-css.js b/docs/scripts/prettify/lang-css.js new file mode 100644 index 000000000..041e1f590 --- /dev/null +++ b/docs/scripts/prettify/lang-css.js @@ -0,0 +1,2 @@ +PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\f\r ]+/,null," \t\r\n "]],[["str",/^"(?:[^\n\f\r"\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*"/,null],["str",/^'(?:[^\n\f\r'\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*'/,null],["lang-css-str",/^url\(([^"')]*)\)/i],["kwd",/^(?:url|rgb|!important|@import|@page|@media|@charset|inherit)(?=[^\w-]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*)\s*:/i],["com",/^\/\*[^*]*\*+(?:[^*/][^*]*\*+)*\//],["com", +/^(?:<\!--|--\>)/],["lit",/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],["lit",/^#[\da-f]{3,6}/i],["pln",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i],["pun",/^[^\s\w"']+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[["kwd",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[["str",/^[^"')]+/]]),["css-str"]); diff --git a/docs/scripts/prettify/prettify.js b/docs/scripts/prettify/prettify.js new file mode 100644 index 000000000..eef5ad7e6 --- /dev/null +++ b/docs/scripts/prettify/prettify.js @@ -0,0 +1,28 @@ +var q=null;window.PR_SHOULD_USE_CONTINUATION=!0; +(function(){function L(a){function m(a){var f=a.charCodeAt(0);if(f!==92)return f;var b=a.charAt(1);return(f=r[b])?f:"0"<=b&&b<="7"?parseInt(a.substring(1),8):b==="u"||b==="x"?parseInt(a.substring(2),16):a.charCodeAt(1)}function e(a){if(a<32)return(a<16?"\\x0":"\\x")+a.toString(16);a=String.fromCharCode(a);if(a==="\\"||a==="-"||a==="["||a==="]")a="\\"+a;return a}function h(a){for(var f=a.substring(1,a.length-1).match(/\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\[0-3][0-7]{0,2}|\\[0-7]{1,2}|\\[\S\s]|[^\\]/g),a= +[],b=[],o=f[0]==="^",c=o?1:0,i=f.length;c122||(d<65||j>90||b.push([Math.max(65,j)|32,Math.min(d,90)|32]),d<97||j>122||b.push([Math.max(97,j)&-33,Math.min(d,122)&-33]))}}b.sort(function(a,f){return a[0]-f[0]||f[1]-a[1]});f=[];j=[NaN,NaN];for(c=0;ci[0]&&(i[1]+1>i[0]&&b.push("-"),b.push(e(i[1])));b.push("]");return b.join("")}function y(a){for(var f=a.source.match(/\[(?:[^\\\]]|\\[\S\s])*]|\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\\d+|\\[^\dux]|\(\?[!:=]|[()^]|[^()[\\^]+/g),b=f.length,d=[],c=0,i=0;c=2&&a==="["?f[c]=h(j):a!=="\\"&&(f[c]=j.replace(/[A-Za-z]/g,function(a){a=a.charCodeAt(0);return"["+String.fromCharCode(a&-33,a|32)+"]"}));return f.join("")}for(var t=0,s=!1,l=!1,p=0,d=a.length;p=5&&"lang-"===b.substring(0,5))&&!(o&&typeof o[1]==="string"))c=!1,b="src";c||(r[f]=b)}i=d;d+=f.length;if(c){c=o[1];var j=f.indexOf(c),k=j+c.length;o[2]&&(k=f.length-o[2].length,j=k-c.length);b=b.substring(5);B(l+i,f.substring(0,j),e,p);B(l+i+j,c,C(b,c),p);B(l+i+k,f.substring(k),e,p)}else p.push(l+i,b)}a.e=p}var h={},y;(function(){for(var e=a.concat(m), +l=[],p={},d=0,g=e.length;d=0;)h[n.charAt(k)]=r;r=r[1];n=""+r;p.hasOwnProperty(n)||(l.push(r),p[n]=q)}l.push(/[\S\s]/);y=L(l)})();var t=m.length;return e}function u(a){var m=[],e=[];a.tripleQuotedStrings?m.push(["str",/^(?:'''(?:[^'\\]|\\[\S\s]|''?(?=[^']))*(?:'''|$)|"""(?:[^"\\]|\\[\S\s]|""?(?=[^"]))*(?:"""|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$))/,q,"'\""]):a.multiLineStrings?m.push(["str",/^(?:'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$)|`(?:[^\\`]|\\[\S\s])*(?:`|$))/, +q,"'\"`"]):m.push(["str",/^(?:'(?:[^\n\r'\\]|\\.)*(?:'|$)|"(?:[^\n\r"\\]|\\.)*(?:"|$))/,q,"\"'"]);a.verbatimStrings&&e.push(["str",/^@"(?:[^"]|"")*(?:"|$)/,q]);var h=a.hashComments;h&&(a.cStyleComments?(h>1?m.push(["com",/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,q,"#"]):m.push(["com",/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\n\r]*)/,q,"#"]),e.push(["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,q])):m.push(["com",/^#[^\n\r]*/, +q,"#"]));a.cStyleComments&&(e.push(["com",/^\/\/[^\n\r]*/,q]),e.push(["com",/^\/\*[\S\s]*?(?:\*\/|$)/,q]));a.regexLiterals&&e.push(["lang-regex",/^(?:^^\.?|[!+-]|!=|!==|#|%|%=|&|&&|&&=|&=|\(|\*|\*=|\+=|,|-=|->|\/|\/=|:|::|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|[?@[^]|\^=|\^\^|\^\^=|{|\||\|=|\|\||\|\|=|~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\s*(\/(?=[^*/])(?:[^/[\\]|\\[\S\s]|\[(?:[^\\\]]|\\[\S\s])*(?:]|$))+\/)/]);(h=a.types)&&e.push(["typ",h]);a=(""+a.keywords).replace(/^ | $/g, +"");a.length&&e.push(["kwd",RegExp("^(?:"+a.replace(/[\s,]+/g,"|")+")\\b"),q]);m.push(["pln",/^\s+/,q," \r\n\t\xa0"]);e.push(["lit",/^@[$_a-z][\w$@]*/i,q],["typ",/^(?:[@_]?[A-Z]+[a-z][\w$@]*|\w+_t\b)/,q],["pln",/^[$_a-z][\w$@]*/i,q],["lit",/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i,q,"0123456789"],["pln",/^\\[\S\s]?/,q],["pun",/^.[^\s\w"-$'./@\\`]*/,q]);return x(m,e)}function D(a,m){function e(a){switch(a.nodeType){case 1:if(k.test(a.className))break;if("BR"===a.nodeName)h(a), +a.parentNode&&a.parentNode.removeChild(a);else for(a=a.firstChild;a;a=a.nextSibling)e(a);break;case 3:case 4:if(p){var b=a.nodeValue,d=b.match(t);if(d){var c=b.substring(0,d.index);a.nodeValue=c;(b=b.substring(d.index+d[0].length))&&a.parentNode.insertBefore(s.createTextNode(b),a.nextSibling);h(a);c||a.parentNode.removeChild(a)}}}}function h(a){function b(a,d){var e=d?a.cloneNode(!1):a,f=a.parentNode;if(f){var f=b(f,1),g=a.nextSibling;f.appendChild(e);for(var h=g;h;h=g)g=h.nextSibling,f.appendChild(h)}return e} +for(;!a.nextSibling;)if(a=a.parentNode,!a)return;for(var a=b(a.nextSibling,0),e;(e=a.parentNode)&&e.nodeType===1;)a=e;d.push(a)}var k=/(?:^|\s)nocode(?:\s|$)/,t=/\r\n?|\n/,s=a.ownerDocument,l;a.currentStyle?l=a.currentStyle.whiteSpace:window.getComputedStyle&&(l=s.defaultView.getComputedStyle(a,q).getPropertyValue("white-space"));var p=l&&"pre"===l.substring(0,3);for(l=s.createElement("LI");a.firstChild;)l.appendChild(a.firstChild);for(var d=[l],g=0;g=0;){var h=m[e];A.hasOwnProperty(h)?window.console&&console.warn("cannot override language handler %s",h):A[h]=a}}function C(a,m){if(!a||!A.hasOwnProperty(a))a=/^\s*=o&&(h+=2);e>=c&&(a+=2)}}catch(w){"console"in window&&console.log(w&&w.stack?w.stack:w)}}var v=["break,continue,do,else,for,if,return,while"],w=[[v,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"], +"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],F=[w,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"],G=[w,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"], +H=[G,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"],w=[w,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"],I=[v,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"], +J=[v,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],v=[v,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"],K=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/,N=/\S/,O=u({keywords:[F,H,w,"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END"+ +I,J,v],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),A={};k(O,["default-code"]);k(x([],[["pln",/^[^]*(?:>|$)/],["com",/^<\!--[\S\s]*?(?:--\>|$)/],["lang-",/^<\?([\S\s]+?)(?:\?>|$)/],["lang-",/^<%([\S\s]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\S\s]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\S\s]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\S\s]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]), +["default-markup","htm","html","mxml","xhtml","xml","xsl"]);k(x([["pln",/^\s+/,q," \t\r\n"],["atv",/^(?:"[^"]*"?|'[^']*'?)/,q,"\"'"]],[["tag",/^^<\/?[a-z](?:[\w-.:]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^\s"'>]*(?:[^\s"'/>]|\/(?=\s)))/],["pun",/^[/<->]+/],["lang-js",/^on\w+\s*=\s*"([^"]+)"/i],["lang-js",/^on\w+\s*=\s*'([^']+)'/i],["lang-js",/^on\w+\s*=\s*([^\s"'>]+)/i],["lang-css",/^style\s*=\s*"([^"]+)"/i],["lang-css",/^style\s*=\s*'([^']+)'/i],["lang-css", +/^style\s*=\s*([^\s"'>]+)/i]]),["in.tag"]);k(x([],[["atv",/^[\S\s]+/]]),["uq.val"]);k(u({keywords:F,hashComments:!0,cStyleComments:!0,types:K}),["c","cc","cpp","cxx","cyc","m"]);k(u({keywords:"null,true,false"}),["json"]);k(u({keywords:H,hashComments:!0,cStyleComments:!0,verbatimStrings:!0,types:K}),["cs"]);k(u({keywords:G,cStyleComments:!0}),["java"]);k(u({keywords:v,hashComments:!0,multiLineStrings:!0}),["bsh","csh","sh"]);k(u({keywords:I,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}), +["cv","py"]);k(u({keywords:"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["perl","pl","pm"]);k(u({keywords:J,hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["rb"]);k(u({keywords:w,cStyleComments:!0,regexLiterals:!0}),["js"]);k(u({keywords:"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes", +hashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0,regexLiterals:!0}),["coffee"]);k(x([],[["str",/^[\S\s]+/]]),["regex"]);window.prettyPrintOne=function(a,m,e){var h=document.createElement("PRE");h.innerHTML=a;e&&D(h,e);E({g:m,i:e,h:h});return h.innerHTML};window.prettyPrint=function(a){function m(){for(var e=window.PR_SHOULD_USE_CONTINUATION?l.now()+250:Infinity;p=0){var k=k.match(g),f,b;if(b= +!k){b=n;for(var o=void 0,c=b.firstChild;c;c=c.nextSibling)var i=c.nodeType,o=i===1?o?b:c:i===3?N.test(c.nodeValue)?b:o:o;b=(f=o===b?void 0:o)&&"CODE"===f.tagName}b&&(k=f.className.match(g));k&&(k=k[1]);b=!1;for(o=n.parentNode;o;o=o.parentNode)if((o.tagName==="pre"||o.tagName==="code"||o.tagName==="xmp")&&o.className&&o.className.indexOf("prettyprint")>=0){b=!0;break}b||((b=(b=n.className.match(/\blinenums\b(?::(\d+))?/))?b[1]&&b[1].length?+b[1]:!0:!1)&&D(n,b),d={g:k,h:n,i:b},E(d))}}p + + + + search.js - Documentation + + + + + + + + + + + + + + + + +
    + +

    search.js

    + + + + + + + +
    +
    +
    const _ = require('underscore');
    +const AVRequest = require('./request')._request;
    +
    +module.exports = function(AV) {
    +  /**
    +   * A builder to generate sort string for app searching.For example:
    +   * @class
    +   * @since 0.5.1
    +   * @example
    +   *   var builder = new AV.SearchSortBuilder();
    +   *   builder.ascending('key1').descending('key2','max');
    +   *   var query = new AV.SearchQuery('Player');
    +   *   query.sortBy(builder);
    +   *   query.find().then();
    +   */
    +  AV.SearchSortBuilder = function() {
    +    this._sortFields = [];
    +  };
    +
    +  _.extend(
    +    AV.SearchSortBuilder.prototype,
    +    /** @lends AV.SearchSortBuilder.prototype */ {
    +      _addField: function(key, order, mode, missing) {
    +        var field = {};
    +        field[key] = {
    +          order: order || 'asc',
    +          mode: mode || 'avg',
    +          missing: '_' + (missing || 'last'),
    +        };
    +        this._sortFields.push(field);
    +        return this;
    +      },
    +
    +      /**
    +       * Sorts the results in ascending order by the given key and options.
    +       *
    +       * @param {String} key The key to order by.
    +       * @param {String} mode The sort mode, default is 'avg', you can choose
    +       *                  'max' or 'min' too.
    +       * @param {String} missing The missing key behaviour, default is 'last',
    +       *                  you can choose 'first' too.
    +       * @return {AV.SearchSortBuilder} Returns the builder, so you can chain this call.
    +       */
    +      ascending: function(key, mode, missing) {
    +        return this._addField(key, 'asc', mode, missing);
    +      },
    +
    +      /**
    +       * Sorts the results in descending order by the given key and options.
    +       *
    +       * @param {String} key The key to order by.
    +       * @param {String} mode The sort mode, default is 'avg', you can choose
    +       *                  'max' or 'min' too.
    +       * @param {String} missing The missing key behaviour, default is 'last',
    +       *                  you can choose 'first' too.
    +       * @return {AV.SearchSortBuilder} Returns the builder, so you can chain this call.
    +       */
    +      descending: function(key, mode, missing) {
    +        return this._addField(key, 'desc', mode, missing);
    +      },
    +
    +      /**
    +       * Add a proximity based constraint for finding objects with key point
    +       * values near the point given.
    +       * @param {String} key The key that the AV.GeoPoint is stored in.
    +       * @param {AV.GeoPoint} point The reference AV.GeoPoint that is used.
    +       * @param {Object} options The other options such as mode,order, unit etc.
    +       * @return {AV.SearchSortBuilder} Returns the builder, so you can chain this call.
    +       */
    +      whereNear: function(key, point, options) {
    +        options = options || {};
    +        var field = {};
    +        var geo = {
    +          lat: point.latitude,
    +          lon: point.longitude,
    +        };
    +        var m = {
    +          order: options.order || 'asc',
    +          mode: options.mode || 'avg',
    +          unit: options.unit || 'km',
    +        };
    +        m[key] = geo;
    +        field['_geo_distance'] = m;
    +
    +        this._sortFields.push(field);
    +        return this;
    +      },
    +
    +      /**
    +       * Build a sort string by configuration.
    +       * @return {String} the sort string.
    +       */
    +      build: function() {
    +        return JSON.stringify(AV._encode(this._sortFields));
    +      },
    +    }
    +  );
    +
    +  /**
    +   * App searching query.Use just like AV.Query:
    +   *
    +   * Visit <a href='https://leancloud.cn/docs/app_search_guide.html'>App Searching Guide</a>
    +   * for more details.
    +   * @class
    +   * @since 0.5.1
    +   * @example
    +   *   var query = new AV.SearchQuery('Player');
    +   *   query.queryString('*');
    +   *   query.find().then(function(results) {
    +   *     console.log('Found %d objects', query.hits());
    +   *     //Process results
    +   *   });
    +   */
    +  AV.SearchQuery = AV.Query._extend(
    +    /** @lends AV.SearchQuery.prototype */ {
    +      _sid: null,
    +      _hits: 0,
    +      _queryString: null,
    +      _highlights: null,
    +      _sortBuilder: null,
    +      _clazz: null,
    +
    +      constructor: function(className) {
    +        if (className) {
    +          this._clazz = className;
    +        } else {
    +          className = '__INVALID_CLASS';
    +        }
    +        AV.Query.call(this, className);
    +      },
    +
    +      _createRequest: function(params, options) {
    +        return AVRequest(
    +          'search/select',
    +          null,
    +          null,
    +          'GET',
    +          params || this._getParams(),
    +          options
    +        );
    +      },
    +
    +      /**
    +       * Sets the sid of app searching query.Default is null.
    +       * @param {String} sid  Scroll id for searching.
    +       * @return {AV.SearchQuery} Returns the query, so you can chain this call.
    +       */
    +      sid: function(sid) {
    +        this._sid = sid;
    +        return this;
    +      },
    +
    +      /**
    +       * Sets the query string of app searching.
    +       * @param {String} q  The query string.
    +       * @return {AV.SearchQuery} Returns the query, so you can chain this call.
    +       */
    +      queryString: function(q) {
    +        this._queryString = q;
    +        return this;
    +      },
    +
    +      /**
    +       * Sets the highlight fields. Such as
    +       * <pre><code>
    +       *   query.highlights('title');
    +       *   //or pass an array.
    +       *   query.highlights(['title', 'content'])
    +       * </code></pre>
    +       * @param {String|String[]} highlights a list of fields.
    +       * @return {AV.SearchQuery} Returns the query, so you can chain this call.
    +       */
    +      highlights: function(highlights) {
    +        var objects;
    +        if (highlights && _.isString(highlights)) {
    +          objects = _.toArray(arguments);
    +        } else {
    +          objects = highlights;
    +        }
    +        this._highlights = objects;
    +        return this;
    +      },
    +
    +      /**
    +       * Sets the sort builder for this query.
    +       * @see AV.SearchSortBuilder
    +       * @param { AV.SearchSortBuilder} builder The sort builder.
    +       * @return {AV.SearchQuery} Returns the query, so you can chain this call.
    +       *
    +       */
    +      sortBy: function(builder) {
    +        this._sortBuilder = builder;
    +        return this;
    +      },
    +
    +      /**
    +       * Returns the number of objects that match this query.
    +       * @return {Number}
    +       */
    +      hits: function() {
    +        if (!this._hits) {
    +          this._hits = 0;
    +        }
    +        return this._hits;
    +      },
    +
    +      _processResult: function(json) {
    +        delete json['className'];
    +        delete json['_app_url'];
    +        delete json['_deeplink'];
    +        return json;
    +      },
    +
    +      /**
    +       * Returns true when there are more documents can be retrieved by this
    +       * query instance, you can call find function to get more results.
    +       * @see AV.SearchQuery#find
    +       * @return {Boolean}
    +       */
    +      hasMore: function() {
    +        return !this._hitEnd;
    +      },
    +
    +      /**
    +       * Reset current query instance state(such as sid, hits etc) except params
    +       * for a new searching. After resetting, hasMore() will return true.
    +       */
    +      reset: function() {
    +        this._hitEnd = false;
    +        this._sid = null;
    +        this._hits = 0;
    +      },
    +
    +      /**
    +       * Retrieves a list of AVObjects that satisfy this query.
    +       * Either options.success or options.error is called when the find
    +       * completes.
    +       *
    +       * @see AV.Query#find
    +       * @param {AuthOptions} options
    +       * @return {Promise} A promise that is resolved with the results when
    +       * the query completes.
    +       */
    +      find: function(options) {
    +        var self = this;
    +
    +        var request = this._createRequest(undefined, options);
    +
    +        return request.then(function(response) {
    +          //update sid for next querying.
    +          if (response.sid) {
    +            self._oldSid = self._sid;
    +            self._sid = response.sid;
    +          } else {
    +            self._sid = null;
    +            self._hitEnd = true;
    +          }
    +          self._hits = response.hits || 0;
    +
    +          return _.map(response.results, function(json) {
    +            if (json.className) {
    +              response.className = json.className;
    +            }
    +            var obj = self._newObject(response);
    +            obj.appURL = json['_app_url'];
    +            obj._finishFetch(self._processResult(json), true);
    +            return obj;
    +          });
    +        });
    +      },
    +
    +      _getParams: function() {
    +        var params = AV.SearchQuery.__super__._getParams.call(this);
    +        delete params.where;
    +        if (this._clazz) {
    +          params.clazz = this.className;
    +        }
    +        if (this._sid) {
    +          params.sid = this._sid;
    +        }
    +        if (!this._queryString) {
    +          throw new Error('Please set query string.');
    +        } else {
    +          params.q = this._queryString;
    +        }
    +        if (this._highlights) {
    +          params.highlights = this._highlights.join(',');
    +        }
    +        if (this._sortBuilder && params.order) {
    +          throw new Error('sort and order can not be set at same time.');
    +        }
    +        if (this._sortBuilder) {
    +          params.sort = this._sortBuilder.build();
    +        }
    +
    +        return params;
    +      },
    +    }
    +  );
    +};
    +
    +/**
    + * Sorts the results in ascending order by the given key.
    + *
    + * @method AV.SearchQuery#ascending
    + * @param {String} key The key to order by.
    + * @return {AV.SearchQuery} Returns the query, so you can chain this call.
    + */
    +/**
    + * Also sorts the results in ascending order by the given key. The previous sort keys have
    + * precedence over this key.
    + *
    + * @method AV.SearchQuery#addAscending
    + * @param {String} key The key to order by
    + * @return {AV.SearchQuery} Returns the query so you can chain this call.
    + */
    +/**
    + * Sorts the results in descending order by the given key.
    + *
    + * @method AV.SearchQuery#descending
    + * @param {String} key The key to order by.
    + * @return {AV.SearchQuery} Returns the query, so you can chain this call.
    + */
    +/**
    + * Also sorts the results in descending order by the given key. The previous sort keys have
    + * precedence over this key.
    + *
    + * @method AV.SearchQuery#addDescending
    + * @param {String} key The key to order by
    + * @return {AV.SearchQuery} Returns the query so you can chain this call.
    + */
    +/**
    + * Include nested AV.Objects for the provided key.  You can use dot
    + * notation to specify which fields in the included object are also fetch.
    + * @method AV.SearchQuery#include
    + * @param {String[]} keys The name of the key to include.
    + * @return {AV.SearchQuery} Returns the query, so you can chain this call.
    + */
    +/**
    + * Sets the number of results to skip before returning any results.
    + * This is useful for pagination.
    + * Default is to skip zero results.
    + * @method AV.SearchQuery#skip
    + * @param {Number} n the number of results to skip.
    + * @return {AV.SearchQuery} Returns the query, so you can chain this call.
    + */
    +/**
    + * Sets the limit of the number of results to return. The default limit is
    + * 100, with a maximum of 1000 results being returned at a time.
    + * @method AV.SearchQuery#limit
    + * @param {Number} n the number of results to limit to.
    + * @return {AV.SearchQuery} Returns the query, so you can chain this call.
    + */
    +
    +
    +
    + + + + +
    + +
    + +
    + Documentation generated by JSDoc 3.6.3 on Mon Sep 25 2023 11:05:14 GMT+0000 (Coordinated Universal Time) using the docdash theme. +
    + + + + + diff --git a/docs/status.js.html b/docs/status.js.html new file mode 100644 index 000000000..bc75e0b33 --- /dev/null +++ b/docs/status.js.html @@ -0,0 +1,488 @@ + + + + + status.js - Documentation + + + + + + + + + + + + + + + + +
    + +

    status.js

    + + + + + + + +
    +
    +
    const _ = require('underscore');
    +const AVRequest = require('./request')._request;
    +const { getSessionToken } = require('./utils');
    +
    +module.exports = function(AV) {
    +  const getUser = (options = {}) => {
    +    const sessionToken = getSessionToken(options);
    +    if (sessionToken) {
    +      return AV.User._fetchUserBySessionToken(getSessionToken(options));
    +    }
    +    return AV.User.currentAsync();
    +  };
    +
    +  const getUserPointer = options =>
    +    getUser(options).then(currUser =>
    +      AV.Object.createWithoutData('_User', currUser.id)._toPointer()
    +    );
    +
    +  /**
    +   * Contains functions to deal with Status in LeanCloud.
    +   * @class
    +   */
    +  AV.Status = function(imageUrl, message) {
    +    this.data = {};
    +    this.inboxType = 'default';
    +    this.query = null;
    +    if (imageUrl && typeof imageUrl === 'object') {
    +      this.data = imageUrl;
    +    } else {
    +      if (imageUrl) {
    +        this.data.image = imageUrl;
    +      }
    +      if (message) {
    +        this.data.message = message;
    +      }
    +    }
    +    return this;
    +  };
    +
    +  _.extend(
    +    AV.Status.prototype,
    +    /** @lends AV.Status.prototype */ {
    +      /**
    +       * Gets the value of an attribute in status data.
    +       * @param {String} attr The string name of an attribute.
    +       */
    +      get: function(attr) {
    +        return this.data[attr];
    +      },
    +      /**
    +       * Sets a hash of model attributes on the status data.
    +       * @param {String} key The key to set.
    +       * @param {any} value The value to give it.
    +       */
    +      set: function(key, value) {
    +        this.data[key] = value;
    +        return this;
    +      },
    +      /**
    +       * Destroy this status,then it will not be avaiable in other user's inboxes.
    +       * @param {AuthOptions} options
    +       * @return {Promise} A promise that is fulfilled when the destroy
    +       *     completes.
    +       */
    +      destroy: function(options) {
    +        if (!this.id)
    +          return Promise.reject(new Error('The status id is not exists.'));
    +        var request = AVRequest('statuses', null, this.id, 'DELETE', options);
    +        return request;
    +      },
    +      /**
    +       * Cast the AV.Status object to an AV.Object pointer.
    +       * @return {AV.Object} A AV.Object pointer.
    +       */
    +      toObject: function() {
    +        if (!this.id) return null;
    +        return AV.Object.createWithoutData('_Status', this.id);
    +      },
    +      _getDataJSON: function() {
    +        var json = _.clone(this.data);
    +        return AV._encode(json);
    +      },
    +      /**
    +       * Send a status by a AV.Query object.
    +       * @since 0.3.0
    +       * @param {AuthOptions} options
    +       * @return {Promise} A promise that is fulfilled when the send
    +       *     completes.
    +       * @example
    +       *     // send a status to male users
    +       *     var status = new AVStatus('image url', 'a message');
    +       *     status.query = new AV.Query('_User');
    +       *     status.query.equalTo('gender', 'male');
    +       *     status.send().then(function(){
    +       *              //send status successfully.
    +       *      }, function(err){
    +       *             //an error threw.
    +       *             console.dir(err);
    +       *      });
    +       */
    +      send: function(options = {}) {
    +        if (!getSessionToken(options) && !AV.User.current()) {
    +          throw new Error('Please signin an user.');
    +        }
    +        if (!this.query) {
    +          return AV.Status.sendStatusToFollowers(this, options);
    +        }
    +
    +        return getUserPointer(options)
    +          .then(currUser => {
    +            var query = this.query._getParams();
    +            query.className = this.query.className;
    +            var data = {};
    +            data.query = query;
    +            this.data = this.data || {};
    +            this.data.source = this.data.source || currUser;
    +            data.data = this._getDataJSON();
    +            data.inboxType = this.inboxType || 'default';
    +
    +            return AVRequest('statuses', null, null, 'POST', data, options);
    +          })
    +          .then(response => {
    +            this.id = response.objectId;
    +            this.createdAt = AV._parseDate(response.createdAt);
    +            return this;
    +          });
    +      },
    +
    +      _finishFetch: function(serverData) {
    +        this.id = serverData.objectId;
    +        this.createdAt = AV._parseDate(serverData.createdAt);
    +        this.updatedAt = AV._parseDate(serverData.updatedAt);
    +        this.messageId = serverData.messageId;
    +        delete serverData.messageId;
    +        delete serverData.objectId;
    +        delete serverData.createdAt;
    +        delete serverData.updatedAt;
    +        this.data = AV._decode(serverData);
    +      },
    +    }
    +  );
    +
    +  /**
    +   * Send a status to current signined user's followers.
    +   * @since 0.3.0
    +   * @param {AV.Status} status  A status object to be send to followers.
    +   * @param {AuthOptions} options
    +   * @return {Promise} A promise that is fulfilled when the send
    +   *     completes.
    +   * @example
    +   *     var status = new AVStatus('image url', 'a message');
    +   *     AV.Status.sendStatusToFollowers(status).then(function(){
    +   *              //send status successfully.
    +   *      }, function(err){
    +   *             //an error threw.
    +   *             console.dir(err);
    +   *      });
    +   */
    +  AV.Status.sendStatusToFollowers = function(status, options = {}) {
    +    if (!getSessionToken(options) && !AV.User.current()) {
    +      throw new Error('Please signin an user.');
    +    }
    +    return getUserPointer(options).then(currUser => {
    +      var query = {};
    +      query.className = '_Follower';
    +      query.keys = 'follower';
    +      query.where = { user: currUser };
    +      var data = {};
    +      data.query = query;
    +      status.data = status.data || {};
    +      status.data.source = status.data.source || currUser;
    +      data.data = status._getDataJSON();
    +      data.inboxType = status.inboxType || 'default';
    +
    +      var request = AVRequest('statuses', null, null, 'POST', data, options);
    +      return request.then(function(response) {
    +        status.id = response.objectId;
    +        status.createdAt = AV._parseDate(response.createdAt);
    +        return status;
    +      });
    +    });
    +  };
    +
    +  /**
    +   * <p>Send  a status from current signined user to other user's private status inbox.</p>
    +   * @since 0.3.0
    +   * @param {AV.Status} status  A status object to be send to followers.
    +   * @param {String} target The target user or user's objectId.
    +   * @param {AuthOptions} options
    +   * @return {Promise} A promise that is fulfilled when the send
    +   *     completes.
    +   * @example
    +   *     // send a private status to user '52e84e47e4b0f8de283b079b'
    +   *     var status = new AVStatus('image url', 'a message');
    +   *     AV.Status.sendPrivateStatus(status, '52e84e47e4b0f8de283b079b').then(function(){
    +   *              //send status successfully.
    +   *      }, function(err){
    +   *             //an error threw.
    +   *             console.dir(err);
    +   *      });
    +   */
    +  AV.Status.sendPrivateStatus = function(status, target, options = {}) {
    +    if (!getSessionToken(options) && !AV.User.current()) {
    +      throw new Error('Please signin an user.');
    +    }
    +    if (!target) {
    +      throw new Error('Invalid target user.');
    +    }
    +    var userObjectId = _.isString(target) ? target : target.id;
    +    if (!userObjectId) {
    +      throw new Error('Invalid target user.');
    +    }
    +    return getUserPointer(options).then(currUser => {
    +      var query = {};
    +      query.className = '_User';
    +      query.where = { objectId: userObjectId };
    +      var data = {};
    +      data.query = query;
    +      status.data = status.data || {};
    +      status.data.source = status.data.source || currUser;
    +      data.data = status._getDataJSON();
    +      data.inboxType = 'private';
    +      status.inboxType = 'private';
    +
    +      var request = AVRequest('statuses', null, null, 'POST', data, options);
    +      return request.then(function(response) {
    +        status.id = response.objectId;
    +        status.createdAt = AV._parseDate(response.createdAt);
    +        return status;
    +      });
    +    });
    +  };
    +
    +  /**
    +   * Count unread statuses in someone's inbox.
    +   * @since 0.3.0
    +   * @param {AV.User} owner The status owner.
    +   * @param {String} inboxType The inbox type, 'default' by default.
    +   * @param {AuthOptions} options
    +   * @return {Promise} A promise that is fulfilled when the count
    +   *     completes.
    +   * @example
    +   *  AV.Status.countUnreadStatuses(AV.User.current()).then(function(response){
    +   *    console.log(response.unread); //unread statuses number.
    +   *    console.log(response.total);  //total statuses number.
    +   *  });
    +   */
    +  AV.Status.countUnreadStatuses = function(
    +    owner,
    +    inboxType = 'default',
    +    options = {}
    +  ) {
    +    if (!_.isString(inboxType)) options = inboxType;
    +    if (!getSessionToken(options) && owner == null && !AV.User.current()) {
    +      throw new Error('Please signin an user or pass the owner objectId.');
    +    }
    +    return Promise.resolve(owner || getUser(options)).then(owner => {
    +      var params = {};
    +      params.inboxType = AV._encode(inboxType);
    +      params.owner = AV._encode(owner);
    +      return AVRequest(
    +        'subscribe/statuses/count',
    +        null,
    +        null,
    +        'GET',
    +        params,
    +        options
    +      );
    +    });
    +  };
    +
    +  /**
    +   * reset unread statuses count in someone's inbox.
    +   * @since 2.1.0
    +   * @param {AV.User} owner The status owner.
    +   * @param {String} inboxType The inbox type, 'default' by default.
    +   * @param {AuthOptions} options
    +   * @return {Promise} A promise that is fulfilled when the reset
    +   *     completes.
    +   * @example
    +   *  AV.Status.resetUnreadCount(AV.User.current()).then(function(response){
    +   *    console.log(response.unread); //unread statuses number.
    +   *    console.log(response.total);  //total statuses number.
    +   *  });
    +   */
    +  AV.Status.resetUnreadCount = function(
    +    owner,
    +    inboxType = 'default',
    +    options = {}
    +  ) {
    +    if (!_.isString(inboxType)) options = inboxType;
    +    if (!getSessionToken(options) && owner == null && !AV.User.current()) {
    +      throw new Error('Please signin an user or pass the owner objectId.');
    +    }
    +    return Promise.resolve(owner || getUser(options)).then(owner => {
    +      var params = {};
    +      params.inboxType = AV._encode(inboxType);
    +      params.owner = AV._encode(owner);
    +      return AVRequest(
    +        'subscribe/statuses/resetUnreadCount',
    +        null,
    +        null,
    +        'POST',
    +        params,
    +        options
    +      );
    +    });
    +  };
    +
    +  /**
    +   * Create a status query to find someone's published statuses.
    +   * @since 0.3.0
    +   * @param {AV.User} source The status source, typically the publisher.
    +   * @return {AV.Query} The query object for status.
    +   * @example
    +   *   //Find current user's published statuses.
    +   *   var query = AV.Status.statusQuery(AV.User.current());
    +   *   query.find().then(function(statuses){
    +   *      //process statuses
    +   *   });
    +   */
    +  AV.Status.statusQuery = function(source) {
    +    var query = new AV.Query('_Status');
    +    if (source) {
    +      query.equalTo('source', source);
    +    }
    +    return query;
    +  };
    +
    +  /**
    +   * <p>AV.InboxQuery defines a query that is used to fetch somebody's inbox statuses.</p>
    +   * @class
    +   */
    +  AV.InboxQuery = AV.Query._extend(
    +    /** @lends AV.InboxQuery.prototype */ {
    +      _objectClass: AV.Status,
    +      _sinceId: 0,
    +      _maxId: 0,
    +      _inboxType: 'default',
    +      _owner: null,
    +      _newObject: function() {
    +        return new AV.Status();
    +      },
    +      _createRequest: function(params, options) {
    +        return AV.InboxQuery.__super__._createRequest.call(
    +          this,
    +          params,
    +          options,
    +          '/subscribe/statuses'
    +        );
    +      },
    +
    +      /**
    +       * Sets the messageId of results to skip before returning any results.
    +       * This is useful for pagination.
    +       * Default is zero.
    +       * @param {Number} n the mesage id.
    +       * @return {AV.InboxQuery} Returns the query, so you can chain this call.
    +       */
    +      sinceId: function(id) {
    +        this._sinceId = id;
    +        return this;
    +      },
    +      /**
    +       * Sets the maximal messageId of results。
    +       * This is useful for pagination.
    +       * Default is zero that is no limition.
    +       * @param {Number} n the mesage id.
    +       * @return {AV.InboxQuery} Returns the query, so you can chain this call.
    +       */
    +      maxId: function(id) {
    +        this._maxId = id;
    +        return this;
    +      },
    +      /**
    +       * Sets the owner of the querying inbox.
    +       * @param {AV.User} owner The inbox owner.
    +       * @return {AV.InboxQuery} Returns the query, so you can chain this call.
    +       */
    +      owner: function(owner) {
    +        this._owner = owner;
    +        return this;
    +      },
    +      /**
    +       * Sets the querying inbox type.default is 'default'.
    +       * @param {String} type The inbox type.
    +       * @return {AV.InboxQuery} Returns the query, so you can chain this call.
    +       */
    +      inboxType: function(type) {
    +        this._inboxType = type;
    +        return this;
    +      },
    +      _getParams: function() {
    +        var params = AV.InboxQuery.__super__._getParams.call(this);
    +        params.owner = AV._encode(this._owner);
    +        params.inboxType = AV._encode(this._inboxType);
    +        params.sinceId = AV._encode(this._sinceId);
    +        params.maxId = AV._encode(this._maxId);
    +        return params;
    +      },
    +    }
    +  );
    +
    +  /**
    +   * Create a inbox status query to find someone's inbox statuses.
    +   * @since 0.3.0
    +   * @param {AV.User} owner The inbox's owner
    +   * @param {String} inboxType The inbox type,'default' by default.
    +   * @return {AV.InboxQuery} The inbox query object.
    +   * @see AV.InboxQuery
    +   * @example
    +   *   //Find current user's default inbox statuses.
    +   *   var query = AV.Status.inboxQuery(AV.User.current());
    +   *   //find the statuses after the last message id
    +   *   query.sinceId(lastMessageId);
    +   *   query.find().then(function(statuses){
    +   *      //process statuses
    +   *   });
    +   */
    +  AV.Status.inboxQuery = function(owner, inboxType) {
    +    var query = new AV.InboxQuery(AV.Status);
    +    if (owner) {
    +      query._owner = owner;
    +    }
    +    if (inboxType) {
    +      query._inboxType = inboxType;
    +    }
    +    return query;
    +  };
    +};
    +
    +
    +
    + + + + +
    + +
    + +
    + Documentation generated by JSDoc 3.6.3 on Mon Sep 25 2023 11:05:14 GMT+0000 (Coordinated Universal Time) using the docdash theme. +
    + + + + + diff --git a/docs/styles/jsdoc.css b/docs/styles/jsdoc.css new file mode 100644 index 000000000..6afa33679 --- /dev/null +++ b/docs/styles/jsdoc.css @@ -0,0 +1,652 @@ +@import url(https://fonts.googleapis.com/css?family=Montserrat:400,700); + +* { + box-sizing: border-box +} + +html, body { + height: 100%; + width: 100%; +} + +body { + color: #4d4e53; + background-color: white; + margin: 0 auto; + padding: 0 20px; + font-family: 'Helvetica Neue', Helvetica, sans-serif; + font-size: 16px; + line-height: 160%; +} + +img { + max-width: 100%; +} + +a, +a:active { + color: #606; + text-decoration: none; +} + +a:hover { + text-decoration: none; +} + +article a { + border-bottom: 1px solid #ddd; +} + +article a:hover, article a:active { + border-bottom-color: #222; +} + +p, ul, ol, blockquote { + margin-bottom: 1em; +} + +h1, h2, h3, h4, h5, h6 { + font-family: 'Montserrat', sans-serif; +} + +h1, h2, h3, h4, h5, h6 { + color: #000; + font-weight: 400; + margin: 0; +} + +h1 { + font-weight: 300; + font-size: 48px; + line-height: 1.2; + margin: 1em 0 .5em; +} + +h1.page-title { + font-size: 48px; + margin: .8em 30px; +} + +h2 { + font-size: 24px; + margin: 1.5em 0 .3em; +} + +h3 { + font-size: 24px; + margin: 1.2em 0 .3em; +} + +h4 { + font-size: 18px; + margin: 1em 0 .2em; + color: #4d4e53; +} + +h4.name { + color: #fff; + background: #6d426d; + box-shadow: 0 .25em .5em #d3d3d3; + border-top: 1px solid #d3d3d3; + border-bottom: 1px solid #d3d3d3; + margin: 1.5em 0 0.5em; + padding: .75em 0 .75em 10px; +} + +h4.name a { + color: #fc83ff; +} + +h4.name a:hover { + border-bottom-color: #fc83ff; +} + +h5, .container-overview .subsection-title { + font-size: 120%; + letter-spacing: -0.01em; + margin: 8px 0 3px 0; +} + +h6 { + font-size: 100%; + letter-spacing: -0.01em; + margin: 6px 0 3px 0; + font-style: italic; +} + +tt, code, kbd, samp { + font-family: Consolas, Monaco, 'Andale Mono', monospace; + background: #f4f4f4; + padding: 1px 5px; +} + +.class-description { + font-size: 130%; + line-height: 140%; + margin-bottom: 1em; + margin-top: 1em; +} + +.class-description:empty { + margin: 0 +} + +#main { + float: right; + min-width: 360px; + width: calc(100% - 240px); +} + +header { + display: block +} + +section { + display: block; + background-color: #fff; + padding: 0 0 0 30px; +} + +.variation { + display: none +} + +.signature-attributes { + font-size: 60%; + color: #eee; + font-style: italic; + font-weight: lighter; +} + +nav { + float: left; + display: block; + width: 250px; + background: #fff; + overflow: auto; + position: fixed; + height: 100%; + padding: 8px 0; +} + +nav h3 { + margin-top: 12px; + font-size: 13px; + text-transform: uppercase; + letter-spacing: 1px; + font-weight: 700; + line-height: 24px; + margin: 15px 0 10px; + padding: 0; + color: #000; +} + +nav ul { + font-family: 'Lucida Grande', 'Lucida Sans Unicode', arial, sans-serif; + font-size: 100%; + line-height: 17px; + padding: 0; + margin: 0; + list-style-type: none; +} + +nav ul a, +nav ul a:active { + font-family: 'Montserrat', sans-serif; + line-height: 18px; + padding: 0; + display: block; + font-size: 12px; +} + +nav a:hover, +nav a:active { + color: #606; +} + +nav > ul { + padding: 0 10px; +} + +nav > ul > li > a { + color: #606; +} + +nav ul ul { + margin-bottom: 10px +} + +nav ul ul + ul { + margin-top: -10px; +} + +nav ul ul a { + color: hsl(207, 1%, 60%); + border-left: 1px solid hsl(207, 10%, 86%); +} + +nav ul ul a, +nav ul ul a:active { + padding-left: 20px +} + +nav h2 { + font-size: 12px; + line-height: 1.5; +} + +nav > h2 > a { + color: #606 !important; +} + +nav .package-version { + color: #ccc; +} + +footer { + color: hsl(0, 0%, 28%); + margin-left: 250px; + display: block; + padding: 15px; + font-style: italic; + font-size: 90%; +} + +.ancestors { + color: #999 +} + +.ancestors a { + color: #999 !important; +} + +.clear { + clear: both +} + +.important { + font-weight: bold; + color: #950B02; +} + +.yes-def { + text-indent: -1000px +} + +.type-signature { + color: #CA79CA +} + +.type-signature:last-child { + color: #eee; +} + +.name, .signature { + font-family: Consolas, Monaco, 'Andale Mono', monospace +} + +.signature { + color: #fc83ff; +} + +.details { + margin-top: 6px; + border-left: 2px solid #DDD; + line-height: 20px; + font-size: 14px; +} + +.details dt { + width: 120px; + float: left; + padding-left: 10px; +} + +.details dd { + margin-left: 70px; + margin-top: 6px; + margin-bottom: 6px; +} + +.details ul { + margin: 0 +} + +.details ul { + list-style-type: none +} + +.details pre.prettyprint { + margin: 0 +} + +.details .object-value { + padding-top: 0 +} + +.description { + margin-bottom: 1em; + margin-top: 1em; +} + +.code-caption { + font-style: italic; + font-size: 107%; + margin: 0; +} + +.prettyprint { + font-size: 14px; + overflow: auto; +} + +.prettyprint.source { + width: inherit; + line-height: 18px; + display: block; + background-color: #0d152a; + color: #aeaeae; +} + +.prettyprint code { + line-height: 18px; + display: block; + background-color: #0d152a; + color: #4D4E53; +} + +.prettyprint > code { + padding: 15px; +} + +.prettyprint .linenums code { + padding: 0 15px +} + +.prettyprint .linenums li:first-of-type code { + padding-top: 15px +} + +.prettyprint code span.line { + display: inline-block +} + +.prettyprint.linenums { + padding-left: 70px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.prettyprint.linenums ol { + padding-left: 0 +} + +.prettyprint.linenums li { + border-left: 3px #34446B solid; +} + +.prettyprint.linenums li.selected, .prettyprint.linenums li.selected * { + background-color: #34446B; +} + +.prettyprint.linenums li * { + -webkit-user-select: text; + -moz-user-select: text; + -ms-user-select: text; + user-select: text; +} + +.params, .props { + border-spacing: 0; + border: 1px solid #ddd; + border-collapse: collapse; + border-radius: 3px; + box-shadow: 0 1px 3px rgba(0,0,0,0.1); + width: 100%; + font-size: 14px; + margin: 1em 0; +} + +.params .type { + white-space: nowrap; +} + +.params code { + white-space: pre; +} + +.params td, .params .name, .props .name, .name code { + color: #4D4E53; + font-family: Consolas, Monaco, 'Andale Mono', monospace; + font-size: 100%; +} + +.params td, .params th, .props td, .props th { + margin: 0px; + text-align: left; + vertical-align: top; + padding: 10px; + display: table-cell; +} + +.params td { + border-top: 1px solid #eee +} + +.params thead tr, .props thead tr { + background-color: #fff; + font-weight: bold; +} + +.params .params thead tr, .props .props thead tr { + background-color: #fff; + font-weight: bold; +} + +.params td.description > p:first-child, .props td.description > p:first-child { + margin-top: 0; + padding-top: 0; +} + +.params td.description > p:last-child, .props td.description > p:last-child { + margin-bottom: 0; + padding-bottom: 0; +} + +span.param-type, .params td .param-type, .param-type dd { + color: #606; + font-family: Consolas, Monaco, 'Andale Mono', monospace +} + +.param-type dt, .param-type dd { + display: inline-block +} + +.param-type { + margin: 14px 0; +} + +.disabled { + color: #454545 +} + +/* navicon button */ +.navicon-button { + display: none; + position: relative; + padding: 2.0625rem 1.5rem; + transition: 0.25s; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + opacity: .8; +} +.navicon-button .navicon:before, .navicon-button .navicon:after { + transition: 0.25s; +} +.navicon-button:hover { + transition: 0.5s; + opacity: 1; +} +.navicon-button:hover .navicon:before, .navicon-button:hover .navicon:after { + transition: 0.25s; +} +.navicon-button:hover .navicon:before { + top: .825rem; +} +.navicon-button:hover .navicon:after { + top: -.825rem; +} + +/* navicon */ +.navicon { + position: relative; + width: 2.5em; + height: .3125rem; + background: #000; + transition: 0.3s; + border-radius: 2.5rem; +} +.navicon:before, .navicon:after { + display: block; + content: ""; + height: .3125rem; + width: 2.5rem; + background: #000; + position: absolute; + z-index: -1; + transition: 0.3s 0.25s; + border-radius: 1rem; +} +.navicon:before { + top: .625rem; +} +.navicon:after { + top: -.625rem; +} + +/* open */ +.nav-trigger:checked + label:not(.steps) .navicon:before, +.nav-trigger:checked + label:not(.steps) .navicon:after { + top: 0 !important; +} + +.nav-trigger:checked + label .navicon:before, +.nav-trigger:checked + label .navicon:after { + transition: 0.5s; +} + +/* Minus */ +.nav-trigger:checked + label { + -webkit-transform: scale(0.75); + transform: scale(0.75); +} + +/* × and + */ +.nav-trigger:checked + label.plus .navicon, +.nav-trigger:checked + label.x .navicon { + background: transparent; +} + +.nav-trigger:checked + label.plus .navicon:before, +.nav-trigger:checked + label.x .navicon:before { + -webkit-transform: rotate(-45deg); + transform: rotate(-45deg); + background: #FFF; +} + +.nav-trigger:checked + label.plus .navicon:after, +.nav-trigger:checked + label.x .navicon:after { + -webkit-transform: rotate(45deg); + transform: rotate(45deg); + background: #FFF; +} + +.nav-trigger:checked + label.plus { + -webkit-transform: scale(0.75) rotate(45deg); + transform: scale(0.75) rotate(45deg); +} + +.nav-trigger:checked ~ nav { + left: 0 !important; +} + +.nav-trigger:checked ~ .overlay { + display: block; +} + +.nav-trigger { + position: fixed; + top: 0; + clip: rect(0, 0, 0, 0); +} + +.overlay { + display: none; + position: fixed; + top: 0; + bottom: 0; + left: 0; + right: 0; + width: 100%; + height: 100%; + background: hsla(0, 0%, 0%, 0.5); + z-index: 1; +} + +@media only screen and (min-width: 320px) and (max-width: 680px) { + body { + overflow-x: hidden; + } + + nav { + background: #FFF; + width: 250px; + height: 100%; + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: -250px; + z-index: 3; + padding: 8px 10px; + transition: left 0.2s; + } + + .navicon-button { + display: inline-block; + position: fixed; + top: 1.5em; + right: 0; + z-index: 2; + } + + #main { + width: 100%; + min-width: 360px; + } + + #main h1.page-title { + margin: 1em 0; + } + + #main section { + padding: 0; + } + + footer { + margin-left: 0; + } +} + +/** Add a '#' to static members */ +[data-type="member"] a::before { + content: '#'; + display: inline-block; + margin-left: -14px; + margin-right: 5px; +} diff --git a/docs/styles/prettify.css b/docs/styles/prettify.css new file mode 100644 index 000000000..d9521ec85 --- /dev/null +++ b/docs/styles/prettify.css @@ -0,0 +1,79 @@ +.pln { + color: #ddd; +} + +/* string content */ +.str { + color: #61ce3c; +} + +/* a keyword */ +.kwd { + color: #fbde2d; +} + +/* a comment */ +.com { + color: #aeaeae; +} + +/* a type name */ +.typ { + color: #8da6ce; +} + +/* a literal value */ +.lit { + color: #fbde2d; +} + +/* punctuation */ +.pun { + color: #ddd; +} + +/* lisp open bracket */ +.opn { + color: #000000; +} + +/* lisp close bracket */ +.clo { + color: #000000; +} + +/* a markup tag name */ +.tag { + color: #8da6ce; +} + +/* a markup attribute name */ +.atn { + color: #fbde2d; +} + +/* a markup attribute value */ +.atv { + color: #ddd; +} + +/* a declaration */ +.dec { + color: #EF5050; +} + +/* a variable name */ +.var { + color: #c82829; +} + +/* a function name */ +.fun { + color: #4271ae; +} + +/* Specify class=linenums on a pre to get line numbering */ +ol.linenums { + margin-top: 0; + margin-bottom: 0; +} diff --git a/docs/uploader_qiniu.js.html b/docs/uploader_qiniu.js.html new file mode 100644 index 000000000..8abfd88f1 --- /dev/null +++ b/docs/uploader_qiniu.js.html @@ -0,0 +1,389 @@ + + + + + uploader/qiniu.js - Documentation + + + + + + + + + + + + + + + + +
    + +

    uploader/qiniu.js

    + + + + + + + +
    +
    +
    const { getAdapter } = require('../adapter');
    +const debug = require('debug')('leancloud:qiniu');
    +const ajax = require('../utils/ajax');
    +const btoa = require('../utils/btoa');
    +
    +const SHARD_THRESHOLD = 1024 * 1024 * 64;
    +
    +const CHUNK_SIZE = 1024 * 1024 * 16;
    +
    +function upload(uploadInfo, data, file, saveOptions = {}) {
    +  // Get the uptoken to upload files to qiniu.
    +  const uptoken = uploadInfo.token;
    +  const url = uploadInfo.upload_url || 'https://upload.qiniup.com';
    +  const fileFormData = {
    +    field: 'file',
    +    data,
    +    name: file.attributes.name,
    +  };
    +  const options = {
    +    headers: file._uploadHeaders,
    +    data: {
    +      name: file.attributes.name,
    +      key: uploadInfo.key,
    +      token: uptoken,
    +    },
    +    onprogress: saveOptions.onprogress,
    +  };
    +  debug('url: %s, file: %o, options: %o', url, fileFormData, options);
    +  const upload = getAdapter('upload');
    +  return upload(url, fileFormData, options).then(
    +    response => {
    +      debug(response.status, response.data);
    +      if (response.ok === false) {
    +        let message = response.status;
    +        if (response.data) {
    +          if (response.data.error) {
    +            message = response.data.error;
    +          } else {
    +            message = JSON.stringify(response.data);
    +          }
    +        }
    +        const error = new Error(message);
    +        error.response = response;
    +        throw error;
    +      }
    +      file.attributes.url = uploadInfo.url;
    +      file._bucket = uploadInfo.bucket;
    +      file.id = uploadInfo.objectId;
    +      return file;
    +    },
    +    error => {
    +      const { response } = error;
    +      if (response) {
    +        debug(response.status, response.data);
    +        error.statusCode = response.status;
    +        error.response = response.data;
    +      }
    +      throw error;
    +    }
    +  );
    +}
    +
    +function urlSafeBase64(string) {
    +  const base64 = btoa(unescape(encodeURIComponent(string)));
    +  let result = '';
    +  for (const ch of base64) {
    +    switch (ch) {
    +      case '+':
    +        result += '-';
    +        break;
    +      case '/':
    +        result += '_';
    +        break;
    +      default:
    +        result += ch;
    +    }
    +  }
    +  return result;
    +}
    +
    +class ShardUploader {
    +  constructor(uploadInfo, data, file, saveOptions) {
    +    this.uploadInfo = uploadInfo;
    +    this.data = data;
    +    this.file = file;
    +    this.size = undefined;
    +    this.offset = 0;
    +    this.uploadedChunks = 0;
    +
    +    const key = urlSafeBase64(uploadInfo.key);
    +    const uploadURL = uploadInfo.upload_url || 'https://upload.qiniup.com';
    +    this.baseURL = `${uploadURL}/buckets/${uploadInfo.bucket}/objects/${key}/uploads`;
    +    this.upToken = 'UpToken ' + uploadInfo.token;
    +
    +    this.uploaded = 0;
    +    if (saveOptions && saveOptions.onprogress) {
    +      this.onProgress = ({ loaded }) => {
    +        loaded += this.uploadedChunks * CHUNK_SIZE;
    +        if (loaded <= this.uploaded) {
    +          return;
    +        }
    +        if (this.size) {
    +          saveOptions.onprogress({
    +            loaded,
    +            total: this.size,
    +            percent: (loaded / this.size) * 100,
    +          });
    +        } else {
    +          saveOptions.onprogress({ loaded });
    +        }
    +        this.uploaded = loaded;
    +      };
    +    }
    +  }
    +
    +  /**
    +   * @returns {Promise<string>}
    +   */
    +  getUploadId() {
    +    return ajax({
    +      method: 'POST',
    +      url: this.baseURL,
    +      headers: {
    +        Authorization: this.upToken,
    +      },
    +    }).then(res => res.uploadId);
    +  }
    +
    +  getChunk() {
    +    throw new Error('Not implemented');
    +  }
    +
    +  /**
    +   * @param {string} uploadId
    +   * @param {number} partNumber
    +   * @param {any} data
    +   * @returns {Promise<{ partNumber: number, etag: string }>}
    +   */
    +  uploadPart(uploadId, partNumber, data) {
    +    return ajax({
    +      method: 'PUT',
    +      url: `${this.baseURL}/${uploadId}/${partNumber}`,
    +      headers: {
    +        Authorization: this.upToken,
    +      },
    +      data,
    +      onprogress: this.onProgress,
    +    }).then(({ etag }) => ({ partNumber, etag }));
    +  }
    +
    +  stopUpload(uploadId) {
    +    return ajax({
    +      method: 'DELETE',
    +      url: `${this.baseURL}/${uploadId}`,
    +      headers: {
    +        Authorization: this.upToken,
    +      },
    +    });
    +  }
    +
    +  upload() {
    +    const parts = [];
    +    return this.getUploadId()
    +      .then(uploadId => {
    +        const uploadPart = () => {
    +          return Promise.resolve(this.getChunk())
    +            .then(chunk => {
    +              if (!chunk) {
    +                return;
    +              }
    +              const partNumber = parts.length + 1;
    +              return this.uploadPart(uploadId, partNumber, chunk).then(part => {
    +                parts.push(part);
    +                this.uploadedChunks++;
    +                return uploadPart();
    +              });
    +            })
    +            .catch(error =>
    +              this.stopUpload(uploadId).then(() => Promise.reject(error))
    +            );
    +        };
    +
    +        return uploadPart().then(() =>
    +          ajax({
    +            method: 'POST',
    +            url: `${this.baseURL}/${uploadId}`,
    +            headers: {
    +              Authorization: this.upToken,
    +            },
    +            data: {
    +              parts,
    +              fname: this.file.attributes.name,
    +              mimeType: this.file.attributes.mime_type,
    +            },
    +          })
    +        );
    +      })
    +      .then(() => {
    +        this.file.attributes.url = this.uploadInfo.url;
    +        this.file._bucket = this.uploadInfo.bucket;
    +        this.file.id = this.uploadInfo.objectId;
    +        return this.file;
    +      });
    +  }
    +}
    +
    +class BlobUploader extends ShardUploader {
    +  constructor(uploadInfo, data, file, saveOptions) {
    +    super(uploadInfo, data, file, saveOptions);
    +    this.size = data.size;
    +  }
    +
    +  /**
    +   * @returns {Blob | null}
    +   */
    +  getChunk() {
    +    if (this.offset >= this.size) {
    +      return null;
    +    }
    +    const chunk = this.data.slice(this.offset, this.offset + CHUNK_SIZE);
    +    this.offset += chunk.size;
    +    return chunk;
    +  }
    +}
    +
    +/* NODE-ONLY:start */
    +class BufferUploader extends ShardUploader {
    +  constructor(uploadInfo, data, file, saveOptions) {
    +    super(uploadInfo, data, file, saveOptions);
    +    this.size = data.length;
    +  }
    +
    +  /**
    +   * @returns {Buffer | null}
    +   */
    +  getChunk() {
    +    if (this.offset >= this.size) {
    +      return null;
    +    }
    +    const chunk = this.data.slice(this.offset, this.offset + CHUNK_SIZE);
    +    this.offset += chunk.length;
    +    return chunk;
    +  }
    +}
    +/* NODE-ONLY:end */
    +
    +/* NODE-ONLY:start */
    +class StreamUploader extends ShardUploader {
    +  /**
    +   * @param {number} [size]
    +   * @returns {Buffer | null}
    +   */
    +  _read(size) {
    +    const chunk = this.data.read(size);
    +    if (chunk) {
    +      this.offset += chunk.length;
    +    }
    +    return chunk;
    +  }
    +
    +  /**
    +   * @returns {Buffer | null | Promise<Buffer | null>}
    +   */
    +  getChunk() {
    +    if (this.data.readableLength >= CHUNK_SIZE) {
    +      return this._read(CHUNK_SIZE);
    +    }
    +
    +    if (this.data.readableEnded) {
    +      if (this.data.readable) {
    +        return this._read();
    +      }
    +      return null;
    +    }
    +
    +    return new Promise((resolve, reject) => {
    +      const onReadable = () => {
    +        const chunk = this._read(CHUNK_SIZE);
    +        if (chunk !== null) {
    +          resolve(chunk);
    +          removeListeners();
    +        }
    +      };
    +
    +      const onError = error => {
    +        reject(error);
    +        removeListeners();
    +      };
    +
    +      const removeListeners = () => {
    +        this.data.off('readable', onReadable);
    +        this.data.off('error', onError);
    +      };
    +
    +      this.data.on('readable', onReadable);
    +      this.data.on('error', onError);
    +    });
    +  }
    +}
    +/* NODE-ONLY:end */
    +
    +function isBlob(data) {
    +  return typeof Blob !== 'undefined' && data instanceof Blob;
    +}
    +
    +/* NODE-ONLY:start */
    +function isBuffer(data) {
    +  return typeof Buffer !== 'undefined' && Buffer.isBuffer(data);
    +}
    +/* NODE-ONLY:end */
    +
    +/* NODE-ONLY:start */
    +function isStream(data) {
    +  return typeof require === 'function' && data instanceof require('stream');
    +}
    +/* NODE-ONLY:end */
    +
    +module.exports = function(uploadInfo, data, file, saveOptions = {}) {
    +  if (isBlob(data) && data.size >= SHARD_THRESHOLD) {
    +    return new BlobUploader(uploadInfo, data, file, saveOptions).upload();
    +  }
    +  /* NODE-ONLY:start */
    +  if (isBuffer(data) && data.length >= SHARD_THRESHOLD) {
    +    return new BufferUploader(uploadInfo, data, file, saveOptions).upload();
    +  }
    +  if (isStream(data)) {
    +    return new StreamUploader(uploadInfo, data, file, saveOptions).upload();
    +  }
    +  /* NODE-ONLY:end */
    +  return upload(uploadInfo, data, file, saveOptions);
    +};
    +
    +
    +
    + + + + +
    + +
    + +
    + Documentation generated by JSDoc 3.6.3 on Mon Sep 25 2023 11:05:14 GMT+0000 (Coordinated Universal Time) using the docdash theme. +
    + + + + + diff --git a/docs/user.js.html b/docs/user.js.html new file mode 100644 index 000000000..1949926a6 --- /dev/null +++ b/docs/user.js.html @@ -0,0 +1,1995 @@ + + + + + user.js - Documentation + + + + + + + + + + + + + + + + +
    + +

    user.js

    + + + + + + + +
    +
    +
    const _ = require('underscore');
    +const uuid = require('uuid/v4');
    +const AVError = require('./error');
    +const { _request: AVRequest, request } = require('./request');
    +const { getAdapter } = require('./adapter');
    +
    +const PLATFORM_ANONYMOUS = 'anonymous';
    +const PLATFORM_QQAPP = 'lc_qqapp';
    +
    +const mergeUnionDataIntoAuthData = (defaultUnionIdPlatform = 'weixin') => (
    +  authData,
    +  unionId,
    +  { unionIdPlatform = defaultUnionIdPlatform, asMainAccount = false } = {}
    +) => {
    +  if (typeof unionId !== 'string')
    +    throw new AVError(AVError.OTHER_CAUSE, 'unionId is not a string');
    +  if (typeof unionIdPlatform !== 'string')
    +    throw new AVError(AVError.OTHER_CAUSE, 'unionIdPlatform is not a string');
    +
    +  return _.extend({}, authData, {
    +    platform: unionIdPlatform,
    +    unionid: unionId,
    +    main_account: Boolean(asMainAccount),
    +  });
    +};
    +
    +module.exports = function(AV) {
    +  /**
    +   * @class
    +   *
    +   * <p>An AV.User object is a local representation of a user persisted to the
    +   * LeanCloud server. This class is a subclass of an AV.Object, and retains the
    +   * same functionality of an AV.Object, but also extends it with various
    +   * user specific methods, like authentication, signing up, and validation of
    +   * uniqueness.</p>
    +   */
    +  AV.User = AV.Object.extend(
    +    '_User',
    +    /** @lends AV.User.prototype */ {
    +      // Instance Variables
    +      _isCurrentUser: false,
    +
    +      // Instance Methods
    +
    +      /**
    +       * Internal method to handle special fields in a _User response.
    +       * @private
    +       */
    +      _mergeMagicFields: function(attrs) {
    +        if (attrs.sessionToken) {
    +          this._sessionToken = attrs.sessionToken;
    +          delete attrs.sessionToken;
    +        }
    +        return AV.User.__super__._mergeMagicFields.call(this, attrs);
    +      },
    +
    +      /**
    +       * Removes null values from authData (which exist temporarily for
    +       * unlinking)
    +       * @private
    +       */
    +      _cleanupAuthData: function() {
    +        if (!this.isCurrent()) {
    +          return;
    +        }
    +        var authData = this.get('authData');
    +        if (!authData) {
    +          return;
    +        }
    +        AV._objectEach(this.get('authData'), function(value, key) {
    +          if (!authData[key]) {
    +            delete authData[key];
    +          }
    +        });
    +      },
    +
    +      /**
    +       * Synchronizes authData for all providers.
    +       * @private
    +       */
    +      _synchronizeAllAuthData: function() {
    +        var authData = this.get('authData');
    +        if (!authData) {
    +          return;
    +        }
    +
    +        var self = this;
    +        AV._objectEach(this.get('authData'), function(value, key) {
    +          self._synchronizeAuthData(key);
    +        });
    +      },
    +
    +      /**
    +       * Synchronizes auth data for a provider (e.g. puts the access token in the
    +       * right place to be used by the Facebook SDK).
    +       * @private
    +       */
    +      _synchronizeAuthData: function(provider) {
    +        if (!this.isCurrent()) {
    +          return;
    +        }
    +        var authType;
    +        if (_.isString(provider)) {
    +          authType = provider;
    +          provider = AV.User._authProviders[authType];
    +        } else {
    +          authType = provider.getAuthType();
    +        }
    +        var authData = this.get('authData');
    +        if (!authData || !provider) {
    +          return;
    +        }
    +        var success = provider.restoreAuthentication(authData[authType]);
    +        if (!success) {
    +          this.dissociateAuthData(provider);
    +        }
    +      },
    +
    +      _handleSaveResult: function(makeCurrent) {
    +        // Clean up and synchronize the authData object, removing any unset values
    +        if (makeCurrent && !AV._config.disableCurrentUser) {
    +          this._isCurrentUser = true;
    +        }
    +        this._cleanupAuthData();
    +        this._synchronizeAllAuthData();
    +        // Don't keep the password around.
    +        delete this._serverData.password;
    +        this._rebuildEstimatedDataForKey('password');
    +        this._refreshCache();
    +        if (
    +          (makeCurrent || this.isCurrent()) &&
    +          !AV._config.disableCurrentUser
    +        ) {
    +          // Some old version of leanengine-node-sdk will overwrite
    +          // AV.User._saveCurrentUser which returns no Promise.
    +          // So we need a Promise wrapper.
    +          return Promise.resolve(AV.User._saveCurrentUser(this));
    +        } else {
    +          return Promise.resolve();
    +        }
    +      },
    +
    +      /**
    +       * Unlike in the Android/iOS SDKs, logInWith is unnecessary, since you can
    +       * call linkWith on the user (even if it doesn't exist yet on the server).
    +       * @private
    +       */
    +      _linkWith: function(
    +        provider,
    +        data,
    +        { failOnNotExist = false, useMasterKey, sessionToken, user } = {}
    +      ) {
    +        var authType;
    +        if (_.isString(provider)) {
    +          authType = provider;
    +          provider = AV.User._authProviders[provider];
    +        } else {
    +          authType = provider.getAuthType();
    +        }
    +        if (data) {
    +          return this.save(
    +            { authData: { [authType]: data } },
    +            {
    +              useMasterKey,
    +              sessionToken,
    +              user,
    +              fetchWhenSave: !!this.get('authData'),
    +              _failOnNotExist: failOnNotExist,
    +            }
    +          ).then(function(model) {
    +            return model._handleSaveResult(true).then(function() {
    +              return model;
    +            });
    +          });
    +        } else {
    +          return provider
    +            .authenticate()
    +            .then(result => this._linkWith(provider, result));
    +        }
    +      },
    +
    +      /**
    +       * Associate the user with a third party authData.
    +       * @since 3.3.0
    +       * @param {Object} authData The response json data returned from third party token, maybe like { openid: 'abc123', access_token: '123abc', expires_in: 1382686496 }
    +       * @param {string} platform Available platform for sign up.
    +       * @return {Promise<AV.User>} A promise that is fulfilled with the user when completed.
    +       * @example user.associateWithAuthData({
    +       *   openid: 'abc123',
    +       *   access_token: '123abc',
    +       *   expires_in: 1382686496
    +       * }, 'weixin').then(function(user) {
    +       *   //Access user here
    +       * }).catch(function(error) {
    +       *   //console.error("error: ", error);
    +       * });
    +       */
    +      associateWithAuthData(authData, platform) {
    +        return this._linkWith(platform, authData);
    +      },
    +
    +      /**
    +       * Associate the user with a third party authData and unionId.
    +       * @since 3.5.0
    +       * @param {Object} authData The response json data returned from third party token, maybe like { openid: 'abc123', access_token: '123abc', expires_in: 1382686496 }
    +       * @param {string} platform Available platform for sign up.
    +       * @param {string} unionId
    +       * @param {Object} [unionLoginOptions]
    +       * @param {string} [unionLoginOptions.unionIdPlatform = 'weixin'] unionId platform
    +       * @param {boolean} [unionLoginOptions.asMainAccount = false] If true, the unionId will be associated with the user.
    +       * @return {Promise<AV.User>} A promise that is fulfilled with the user when completed.
    +       * @example user.associateWithAuthDataAndUnionId({
    +       *   openid: 'abc123',
    +       *   access_token: '123abc',
    +       *   expires_in: 1382686496
    +       * }, 'weixin', 'union123', {
    +       *   unionIdPlatform: 'weixin',
    +       *   asMainAccount: true,
    +       * }).then(function(user) {
    +       *   //Access user here
    +       * }).catch(function(error) {
    +       *   //console.error("error: ", error);
    +       * });
    +       */
    +      associateWithAuthDataAndUnionId(
    +        authData,
    +        platform,
    +        unionId,
    +        unionOptions
    +      ) {
    +        return this._linkWith(
    +          platform,
    +          mergeUnionDataIntoAuthData()(authData, unionId, unionOptions)
    +        );
    +      },
    +
    +      /**
    +       * Associate the user with the identity of the current mini-app.
    +       * @since 4.6.0
    +       * @param {Object} [authInfo]
    +       * @param {Object} [option]
    +       * @param {Boolean} [option.failOnNotExist] If true, the login request will fail when no user matches this authInfo.authData exists.
    +       * @return {Promise<AV.User>}
    +       */
    +      associateWithMiniApp(authInfo, option) {
    +        if (authInfo === undefined) {
    +          const getAuthInfo = getAdapter('getAuthInfo');
    +          return getAuthInfo().then(authInfo =>
    +            this._linkWith(authInfo.provider, authInfo.authData, option)
    +          );
    +        }
    +        return this._linkWith(authInfo.provider, authInfo.authData, option);
    +      },
    +
    +      /**
    +       * 将用户与 QQ 小程序用户进行关联。适用于为已经在用户系统中存在的用户关联当前使用 QQ 小程序的微信帐号。
    +       * 仅在 QQ 小程序中可用。
    +       *
    +       * @deprecated Please use {@link AV.User#associateWithMiniApp}
    +       * @since 4.2.0
    +       * @param {Object} [options]
    +       * @param {boolean} [options.preferUnionId = false] 如果服务端在登录时获取到了用户的 UnionId,是否将 UnionId 保存在用户账号中。
    +       * @param {string} [options.unionIdPlatform = 'qq'] (only take effect when preferUnionId) unionId platform
    +       * @param {boolean} [options.asMainAccount = true] (only take effect when preferUnionId) If true, the unionId will be associated with the user.
    +       * @return {Promise<AV.User>}
    +       */
    +      associateWithQQApp({
    +        preferUnionId = false,
    +        unionIdPlatform = 'qq',
    +        asMainAccount = true,
    +      } = {}) {
    +        const getAuthInfo = getAdapter('getAuthInfo');
    +        return getAuthInfo({
    +          preferUnionId,
    +          asMainAccount,
    +          platform: unionIdPlatform,
    +        }).then(authInfo => {
    +          authInfo.provider = PLATFORM_QQAPP;
    +          return this.associateWithMiniApp(authInfo);
    +        });
    +      },
    +
    +      /**
    +       * 将用户与微信小程序用户进行关联。适用于为已经在用户系统中存在的用户关联当前使用微信小程序的微信帐号。
    +       * 仅在微信小程序中可用。
    +       *
    +       * @deprecated Please use {@link AV.User#associateWithMiniApp}
    +       * @since 3.13.0
    +       * @param {Object} [options]
    +       * @param {boolean} [options.preferUnionId = false] 当用户满足 {@link https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/union-id.html 获取 UnionId 的条件} 时,是否将 UnionId 保存在用户账号中。
    +       * @param {string} [options.unionIdPlatform = 'weixin'] (only take effect when preferUnionId) unionId platform
    +       * @param {boolean} [options.asMainAccount = true] (only take effect when preferUnionId) If true, the unionId will be associated with the user.
    +       * @return {Promise<AV.User>}
    +       */
    +      associateWithWeapp({
    +        preferUnionId = false,
    +        unionIdPlatform = 'weixin',
    +        asMainAccount = true,
    +      } = {}) {
    +        const getAuthInfo = getAdapter('getAuthInfo');
    +        return getAuthInfo({
    +          preferUnionId,
    +          asMainAccount,
    +          platform: unionIdPlatform,
    +        }).then(authInfo => this.associateWithMiniApp(authInfo));
    +      },
    +
    +      /**
    +       * @deprecated renamed to {@link AV.User#associateWithWeapp}
    +       * @return {Promise<AV.User>}
    +       */
    +      linkWithWeapp(options) {
    +        console.warn(
    +          'DEPRECATED: User#linkWithWeapp 已废弃,请使用 User#associateWithWeapp 代替'
    +        );
    +        return this.associateWithWeapp(options);
    +      },
    +
    +      /**
    +       * 将用户与 QQ 小程序用户进行关联。适用于为已经在用户系统中存在的用户关联当前使用 QQ 小程序的 QQ 帐号。
    +       * 仅在 QQ 小程序中可用。
    +       *
    +       * @deprecated Please use {@link AV.User#associateWithMiniApp}
    +       * @since 4.2.0
    +       * @param {string} unionId
    +       * @param {Object} [unionOptions]
    +       * @param {string} [unionOptions.unionIdPlatform = 'qq'] unionId platform
    +       * @param {boolean} [unionOptions.asMainAccount = false] If true, the unionId will be associated with the user.
    +       * @return {Promise<AV.User>}
    +       */
    +      associateWithQQAppWithUnionId(
    +        unionId,
    +        { unionIdPlatform = 'qq', asMainAccount = false } = {}
    +      ) {
    +        const getAuthInfo = getAdapter('getAuthInfo');
    +        return getAuthInfo({ platform: unionIdPlatform }).then(authInfo => {
    +          authInfo = AV.User.mergeUnionId(authInfo, unionId, { asMainAccount });
    +          authInfo.provider = PLATFORM_QQAPP;
    +          return this.associateWithMiniApp(authInfo);
    +        });
    +      },
    +
    +      /**
    +       * 将用户与微信小程序用户进行关联。适用于为已经在用户系统中存在的用户关联当前使用微信小程序的微信帐号。
    +       * 仅在微信小程序中可用。
    +       *
    +       * @deprecated Please use {@link AV.User#associateWithMiniApp}
    +       * @since 3.13.0
    +       * @param {string} unionId
    +       * @param {Object} [unionOptions]
    +       * @param {string} [unionOptions.unionIdPlatform = 'weixin'] unionId platform
    +       * @param {boolean} [unionOptions.asMainAccount = false] If true, the unionId will be associated with the user.
    +       * @return {Promise<AV.User>}
    +       */
    +      associateWithWeappWithUnionId(
    +        unionId,
    +        { unionIdPlatform = 'weixin', asMainAccount = false } = {}
    +      ) {
    +        const getAuthInfo = getAdapter('getAuthInfo');
    +        return getAuthInfo({ platform: unionIdPlatform }).then(authInfo => {
    +          authInfo = AV.User.mergeUnionId(authInfo, unionId, { asMainAccount });
    +          return this.associateWithMiniApp(authInfo);
    +        });
    +      },
    +
    +      /**
    +       * Unlinks a user from a service.
    +       * @param {string} platform
    +       * @return {Promise<AV.User>}
    +       * @since 3.3.0
    +       */
    +      dissociateAuthData(provider) {
    +        this.unset(`authData.${provider}`);
    +        return this.save().then(model =>
    +          model._handleSaveResult(true).then(() => model)
    +        );
    +      },
    +
    +      /**
    +       * @private
    +       * @deprecated
    +       */
    +      _unlinkFrom(provider) {
    +        console.warn(
    +          'DEPRECATED: User#_unlinkFrom 已废弃,请使用 User#dissociateAuthData 代替'
    +        );
    +        return this.dissociateAuthData(provider);
    +      },
    +
    +      /**
    +       * Checks whether a user is linked to a service.
    +       * @private
    +       */
    +      _isLinked: function(provider) {
    +        var authType;
    +        if (_.isString(provider)) {
    +          authType = provider;
    +        } else {
    +          authType = provider.getAuthType();
    +        }
    +        var authData = this.get('authData') || {};
    +        return !!authData[authType];
    +      },
    +
    +      /**
    +       * Checks whether a user is anonymous.
    +       * @since 3.9.0
    +       * @return {boolean}
    +       */
    +      isAnonymous() {
    +        return this._isLinked(PLATFORM_ANONYMOUS);
    +      },
    +
    +      logOut: function() {
    +        this._logOutWithAll();
    +        this._isCurrentUser = false;
    +      },
    +
    +      /**
    +       * Deauthenticates all providers.
    +       * @private
    +       */
    +      _logOutWithAll: function() {
    +        var authData = this.get('authData');
    +        if (!authData) {
    +          return;
    +        }
    +        var self = this;
    +        AV._objectEach(this.get('authData'), function(value, key) {
    +          self._logOutWith(key);
    +        });
    +      },
    +
    +      /**
    +       * Deauthenticates a single provider (e.g. removing access tokens from the
    +       * Facebook SDK).
    +       * @private
    +       */
    +      _logOutWith: function(provider) {
    +        if (!this.isCurrent()) {
    +          return;
    +        }
    +        if (_.isString(provider)) {
    +          provider = AV.User._authProviders[provider];
    +        }
    +        if (provider && provider.deauthenticate) {
    +          provider.deauthenticate();
    +        }
    +      },
    +
    +      /**
    +       * Signs up a new user. You should call this instead of save for
    +       * new AV.Users. This will create a new AV.User on the server, and
    +       * also persist the session on disk so that you can access the user using
    +       * <code>current</code>.
    +       *
    +       * <p>A username and password must be set before calling signUp.</p>
    +       *
    +       * @param {Object} attrs Extra fields to set on the new user, or null.
    +       * @param {AuthOptions} options
    +       * @return {Promise} A promise that is fulfilled when the signup
    +       *     finishes.
    +       * @see AV.User.signUp
    +       */
    +      signUp: function(attrs, options) {
    +        var error;
    +
    +        var username = (attrs && attrs.username) || this.get('username');
    +        if (!username || username === '') {
    +          error = new AVError(
    +            AVError.OTHER_CAUSE,
    +            'Cannot sign up user with an empty name.'
    +          );
    +          throw error;
    +        }
    +
    +        var password = (attrs && attrs.password) || this.get('password');
    +        if (!password || password === '') {
    +          error = new AVError(
    +            AVError.OTHER_CAUSE,
    +            'Cannot sign up user with an empty password.'
    +          );
    +          throw error;
    +        }
    +
    +        return this.save(attrs, options).then(function(model) {
    +          if (model.isAnonymous()) {
    +            model.unset(`authData.${PLATFORM_ANONYMOUS}`);
    +            model._opSetQueue = [{}];
    +          }
    +          return model._handleSaveResult(true).then(function() {
    +            return model;
    +          });
    +        });
    +      },
    +
    +      /**
    +       * Signs up a new user with mobile phone and sms code.
    +       * You should call this instead of save for
    +       * new AV.Users. This will create a new AV.User on the server, and
    +       * also persist the session on disk so that you can access the user using
    +       * <code>current</code>.
    +       *
    +       * <p>A username and password must be set before calling signUp.</p>
    +       *
    +       * @param {Object} attrs Extra fields to set on the new user, or null.
    +       * @param {AuthOptions} options
    +       * @return {Promise} A promise that is fulfilled when the signup
    +       *     finishes.
    +       * @see AV.User.signUpOrlogInWithMobilePhone
    +       * @see AV.Cloud.requestSmsCode
    +       */
    +      signUpOrlogInWithMobilePhone: function(attrs, options = {}) {
    +        var error;
    +
    +        var mobilePhoneNumber =
    +          (attrs && attrs.mobilePhoneNumber) || this.get('mobilePhoneNumber');
    +        if (!mobilePhoneNumber || mobilePhoneNumber === '') {
    +          error = new AVError(
    +            AVError.OTHER_CAUSE,
    +            'Cannot sign up or login user by mobilePhoneNumber ' +
    +              'with an empty mobilePhoneNumber.'
    +          );
    +          throw error;
    +        }
    +
    +        var smsCode = (attrs && attrs.smsCode) || this.get('smsCode');
    +        if (!smsCode || smsCode === '') {
    +          error = new AVError(
    +            AVError.OTHER_CAUSE,
    +            'Cannot sign up or login user by mobilePhoneNumber  ' +
    +              'with an empty smsCode.'
    +          );
    +          throw error;
    +        }
    +
    +        options._makeRequest = function(route, className, id, method, json) {
    +          return AVRequest('usersByMobilePhone', null, null, 'POST', json);
    +        };
    +        return this.save(attrs, options).then(function(model) {
    +          delete model.attributes.smsCode;
    +          delete model._serverData.smsCode;
    +          return model._handleSaveResult(true).then(function() {
    +            return model;
    +          });
    +        });
    +      },
    +
    +      /**
    +       * The same with {@link AV.User.loginWithAuthData}, except that you can set attributes before login.
    +       * @since 3.7.0
    +       */
    +      loginWithAuthData(authData, platform, options) {
    +        return this._linkWith(platform, authData, options);
    +      },
    +
    +      /**
    +       * The same with {@link AV.User.loginWithAuthDataAndUnionId}, except that you can set attributes before login.
    +       * @since 3.7.0
    +       */
    +      loginWithAuthDataAndUnionId(
    +        authData,
    +        platform,
    +        unionId,
    +        unionLoginOptions
    +      ) {
    +        return this.loginWithAuthData(
    +          mergeUnionDataIntoAuthData()(authData, unionId, unionLoginOptions),
    +          platform,
    +          unionLoginOptions
    +        );
    +      },
    +
    +      /**
    +       * The same with {@link AV.User.loginWithWeapp}, except that you can set attributes before login.
    +       * @deprecated please use {@link AV.User#loginWithMiniApp}
    +       * @since 3.7.0
    +       * @param {Object} [options]
    +       * @param {boolean} [options.failOnNotExist] If true, the login request will fail when no user matches this authData exists.
    +       * @param {boolean} [options.preferUnionId] 当用户满足 {@link https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/union-id.html 获取 UnionId 的条件} 时,是否使用 UnionId 登录。(since 3.13.0)
    +       * @param {string} [options.unionIdPlatform = 'weixin'] (only take effect when preferUnionId) unionId platform
    +       * @param {boolean} [options.asMainAccount = true] (only take effect when preferUnionId) If true, the unionId will be associated with the user.
    +       * @return {Promise<AV.User>}
    +       */
    +      loginWithWeapp({
    +        preferUnionId = false,
    +        unionIdPlatform = 'weixin',
    +        asMainAccount = true,
    +        failOnNotExist = false,
    +        useMasterKey,
    +        sessionToken,
    +        user,
    +      } = {}) {
    +        const getAuthInfo = getAdapter('getAuthInfo');
    +        return getAuthInfo({
    +          preferUnionId,
    +          asMainAccount,
    +          platform: unionIdPlatform,
    +        }).then(authInfo =>
    +          this.loginWithMiniApp(authInfo, {
    +            failOnNotExist,
    +            useMasterKey,
    +            sessionToken,
    +            user,
    +          })
    +        );
    +      },
    +
    +      /**
    +       * The same with {@link AV.User.loginWithWeappWithUnionId}, except that you can set attributes before login.
    +       * @deprecated please use {@link AV.User#loginWithMiniApp}
    +       * @since 3.13.0
    +       */
    +      loginWithWeappWithUnionId(
    +        unionId,
    +        {
    +          unionIdPlatform = 'weixin',
    +          asMainAccount = false,
    +          failOnNotExist = false,
    +          useMasterKey,
    +          sessionToken,
    +          user,
    +        } = {}
    +      ) {
    +        const getAuthInfo = getAdapter('getAuthInfo');
    +        return getAuthInfo({ platform: unionIdPlatform }).then(authInfo => {
    +          authInfo = AV.User.mergeUnionId(authInfo, unionId, { asMainAccount });
    +          return this.loginWithMiniApp(authInfo, {
    +            failOnNotExist,
    +            useMasterKey,
    +            sessionToken,
    +            user,
    +          });
    +        });
    +      },
    +
    +      /**
    +       * The same with {@link AV.User.loginWithQQApp}, except that you can set attributes before login.
    +       * @deprecated please use {@link AV.User#loginWithMiniApp}
    +       * @since 4.2.0
    +       * @param {Object} [options]
    +       * @param {boolean} [options.failOnNotExist] If true, the login request will fail when no user matches this authData exists.
    +       * @param {boolean} [options.preferUnionId] 如果服务端在登录时获取到了用户的 UnionId,是否将 UnionId 保存在用户账号中。
    +       * @param {string} [options.unionIdPlatform = 'qq'] (only take effect when preferUnionId) unionId platform
    +       * @param {boolean} [options.asMainAccount = true] (only take effect when preferUnionId) If true, the unionId will be associated with the user.
    +       */
    +      loginWithQQApp({
    +        preferUnionId = false,
    +        unionIdPlatform = 'qq',
    +        asMainAccount = true,
    +        failOnNotExist = false,
    +        useMasterKey,
    +        sessionToken,
    +        user,
    +      } = {}) {
    +        const getAuthInfo = getAdapter('getAuthInfo');
    +        return getAuthInfo({
    +          preferUnionId,
    +          asMainAccount,
    +          platform: unionIdPlatform,
    +        }).then(authInfo => {
    +          authInfo.provider = PLATFORM_QQAPP;
    +          return this.loginWithMiniApp(authInfo, {
    +            failOnNotExist,
    +            useMasterKey,
    +            sessionToken,
    +            user,
    +          });
    +        });
    +      },
    +
    +      /**
    +       * The same with {@link AV.User.loginWithQQAppWithUnionId}, except that you can set attributes before login.
    +       * @deprecated please use {@link AV.User#loginWithMiniApp}
    +       * @since 4.2.0
    +       */
    +      loginWithQQAppWithUnionId(
    +        unionId,
    +        {
    +          unionIdPlatform = 'qq',
    +          asMainAccount = false,
    +          failOnNotExist = false,
    +          useMasterKey,
    +          sessionToken,
    +          user,
    +        } = {}
    +      ) {
    +        const getAuthInfo = getAdapter('getAuthInfo');
    +        return getAuthInfo({ platform: unionIdPlatform }).then(authInfo => {
    +          authInfo = AV.User.mergeUnionId(authInfo, unionId, { asMainAccount });
    +          authInfo.provider = PLATFORM_QQAPP;
    +          return this.loginWithMiniApp(authInfo, {
    +            failOnNotExist,
    +            useMasterKey,
    +            sessionToken,
    +            user,
    +          });
    +        });
    +      },
    +
    +      /**
    +       * The same with {@link AV.User.loginWithMiniApp}, except that you can set attributes before login.
    +       * @since 4.6.0
    +       */
    +      loginWithMiniApp(authInfo, option) {
    +        if (authInfo === undefined) {
    +          const getAuthInfo = getAdapter('getAuthInfo');
    +          return getAuthInfo().then(authInfo =>
    +            this.loginWithAuthData(authInfo.authData, authInfo.provider, option)
    +          );
    +        }
    +        return this.loginWithAuthData(
    +          authInfo.authData,
    +          authInfo.provider,
    +          option
    +        );
    +      },
    +
    +      /**
    +       * Logs in a AV.User. On success, this saves the session to localStorage,
    +       * so you can retrieve the currently logged in user using
    +       * <code>current</code>.
    +       *
    +       * <p>A username and password must be set before calling logIn.</p>
    +       *
    +       * @see AV.User.logIn
    +       * @return {Promise} A promise that is fulfilled with the user when
    +       *     the login is complete.
    +       */
    +      logIn: function() {
    +        var model = this;
    +        var request = AVRequest('login', null, null, 'POST', this.toJSON());
    +        return request.then(function(resp) {
    +          var serverAttrs = model.parse(resp);
    +          model._finishFetch(serverAttrs);
    +          return model._handleSaveResult(true).then(function() {
    +            if (!serverAttrs.smsCode) delete model.attributes['smsCode'];
    +            return model;
    +          });
    +        });
    +      },
    +      /**
    +       * @see AV.Object#save
    +       */
    +      save: function(arg1, arg2, arg3) {
    +        var attrs, options;
    +        if (_.isObject(arg1) || _.isNull(arg1) || _.isUndefined(arg1)) {
    +          attrs = arg1;
    +          options = arg2;
    +        } else {
    +          attrs = {};
    +          attrs[arg1] = arg2;
    +          options = arg3;
    +        }
    +        options = options || {};
    +
    +        return AV.Object.prototype.save
    +          .call(this, attrs, options)
    +          .then(function(model) {
    +            return model._handleSaveResult(false).then(function() {
    +              return model;
    +            });
    +          });
    +      },
    +
    +      /**
    +       * Follow a user
    +       * @since 0.3.0
    +       * @param {Object | AV.User | String} options if an AV.User or string is given, it will be used as the target user.
    +       * @param {AV.User | String} options.user The target user or user's objectId to follow.
    +       * @param {Object} [options.attributes] key-value attributes dictionary to be used as
    +       *  conditions of followerQuery/followeeQuery.
    +       * @param {AuthOptions} [authOptions]
    +       */
    +      follow: function(options, authOptions) {
    +        if (!this.id) {
    +          throw new Error('Please signin.');
    +        }
    +        let user;
    +        let attributes;
    +        if (options.user) {
    +          user = options.user;
    +          attributes = options.attributes;
    +        } else {
    +          user = options;
    +        }
    +        var userObjectId = _.isString(user) ? user : user.id;
    +        if (!userObjectId) {
    +          throw new Error('Invalid target user.');
    +        }
    +        var route = 'users/' + this.id + '/friendship/' + userObjectId;
    +        var request = AVRequest(
    +          route,
    +          null,
    +          null,
    +          'POST',
    +          AV._encode(attributes),
    +          authOptions
    +        );
    +        return request;
    +      },
    +
    +      /**
    +       * Unfollow a user.
    +       * @since 0.3.0
    +       * @param {Object | AV.User | String} options if an AV.User or string is given, it will be used as the target user.
    +       * @param {AV.User | String} options.user The target user or user's objectId to unfollow.
    +       * @param {AuthOptions} [authOptions]
    +       */
    +      unfollow: function(options, authOptions) {
    +        if (!this.id) {
    +          throw new Error('Please signin.');
    +        }
    +        let user;
    +        if (options.user) {
    +          user = options.user;
    +        } else {
    +          user = options;
    +        }
    +        var userObjectId = _.isString(user) ? user : user.id;
    +        if (!userObjectId) {
    +          throw new Error('Invalid target user.');
    +        }
    +        var route = 'users/' + this.id + '/friendship/' + userObjectId;
    +        var request = AVRequest(route, null, null, 'DELETE', null, authOptions);
    +        return request;
    +      },
    +
    +      /**
    +       * Get the user's followers and followees.
    +       * @since 4.8.0
    +       * @param {Object} [options]
    +       * @param {Number} [options.skip]
    +       * @param {Number} [options.limit]
    +       * @param {AuthOptions} [authOptions]
    +       */
    +      getFollowersAndFollowees: function(options, authOptions) {
    +        if (!this.id) {
    +          throw new Error('Please signin.');
    +        }
    +        return request({
    +          method: 'GET',
    +          path: `/users/${this.id}/followersAndFollowees`,
    +          query: {
    +            skip: options && options.skip,
    +            limit: options && options.limit,
    +            include: 'follower,followee',
    +            keys: 'follower,followee',
    +          },
    +          authOptions,
    +        }).then(({ followers, followees }) => ({
    +          followers: followers.map(({ follower }) => AV._decode(follower)),
    +          followees: followees.map(({ followee }) => AV._decode(followee)),
    +        }));
    +      },
    +
    +      /**
    +       *Create a follower query to query the user's followers.
    +       * @since 0.3.0
    +       * @see AV.User#followerQuery
    +       */
    +      followerQuery: function() {
    +        return AV.User.followerQuery(this.id);
    +      },
    +
    +      /**
    +       *Create a followee query to query the user's followees.
    +       * @since 0.3.0
    +       * @see AV.User#followeeQuery
    +       */
    +      followeeQuery: function() {
    +        return AV.User.followeeQuery(this.id);
    +      },
    +
    +      /**
    +       * @see AV.Object#fetch
    +       */
    +      fetch: function(fetchOptions, options) {
    +        return AV.Object.prototype.fetch
    +          .call(this, fetchOptions, options)
    +          .then(function(model) {
    +            return model._handleSaveResult(false).then(function() {
    +              return model;
    +            });
    +          });
    +      },
    +
    +      /**
    +       * Update user's new password safely based on old password.
    +       * @param {String} oldPassword the old password.
    +       * @param {String} newPassword the new password.
    +       * @param {AuthOptions} options
    +       */
    +      updatePassword: function(oldPassword, newPassword, options) {
    +        var route = 'users/' + this.id + '/updatePassword';
    +        var params = {
    +          old_password: oldPassword,
    +          new_password: newPassword,
    +        };
    +        var request = AVRequest(route, null, null, 'PUT', params, options);
    +        return request.then(resp => {
    +          this._finishFetch(this.parse(resp));
    +          return this._handleSaveResult(true).then(() => resp);
    +        });
    +      },
    +
    +      /**
    +       * Returns true if <code>current</code> would return this user.
    +       * @see AV.User#current
    +       */
    +      isCurrent: function() {
    +        return this._isCurrentUser;
    +      },
    +
    +      /**
    +       * Returns get("username").
    +       * @return {String}
    +       * @see AV.Object#get
    +       */
    +      getUsername: function() {
    +        return this.get('username');
    +      },
    +
    +      /**
    +       * Returns get("mobilePhoneNumber").
    +       * @return {String}
    +       * @see AV.Object#get
    +       */
    +      getMobilePhoneNumber: function() {
    +        return this.get('mobilePhoneNumber');
    +      },
    +
    +      /**
    +       * Calls set("mobilePhoneNumber", phoneNumber, options) and returns the result.
    +       * @param {String} mobilePhoneNumber
    +       * @return {Boolean}
    +       * @see AV.Object#set
    +       */
    +      setMobilePhoneNumber: function(phone, options) {
    +        return this.set('mobilePhoneNumber', phone, options);
    +      },
    +
    +      /**
    +       * Calls set("username", username, options) and returns the result.
    +       * @param {String} username
    +       * @return {Boolean}
    +       * @see AV.Object#set
    +       */
    +      setUsername: function(username, options) {
    +        return this.set('username', username, options);
    +      },
    +
    +      /**
    +       * Calls set("password", password, options) and returns the result.
    +       * @param {String} password
    +       * @return {Boolean}
    +       * @see AV.Object#set
    +       */
    +      setPassword: function(password, options) {
    +        return this.set('password', password, options);
    +      },
    +
    +      /**
    +       * Returns get("email").
    +       * @return {String}
    +       * @see AV.Object#get
    +       */
    +      getEmail: function() {
    +        return this.get('email');
    +      },
    +
    +      /**
    +       * Calls set("email", email, options) and returns the result.
    +       * @param {String} email
    +       * @param {AuthOptions} options
    +       * @return {Boolean}
    +       * @see AV.Object#set
    +       */
    +      setEmail: function(email, options) {
    +        return this.set('email', email, options);
    +      },
    +
    +      /**
    +       * Checks whether this user is the current user and has been authenticated.
    +       * @deprecated 如果要判断当前用户的登录状态是否有效,请使用 currentUser.isAuthenticated().then(),
    +       * 如果要判断该用户是否是当前登录用户,请使用 user.id === currentUser.id
    +       * @return (Boolean) whether this user is the current user and is logged in.
    +       */
    +      authenticated: function() {
    +        console.warn(
    +          'DEPRECATED: 如果要判断当前用户的登录状态是否有效,请使用 currentUser.isAuthenticated().then(),如果要判断该用户是否是当前登录用户,请使用 user.id === currentUser.id。'
    +        );
    +        return (
    +          !!this._sessionToken &&
    +          (!AV._config.disableCurrentUser &&
    +            AV.User.current() &&
    +            AV.User.current().id === this.id)
    +        );
    +      },
    +
    +      /**
    +       * Detects if current sessionToken is valid.
    +       *
    +       * @since 2.0.0
    +       * @return Promise.<Boolean>
    +       */
    +      isAuthenticated() {
    +        return Promise.resolve().then(
    +          () =>
    +            !!this._sessionToken &&
    +            AV.User._fetchUserBySessionToken(this._sessionToken).then(
    +              () => true,
    +              error => {
    +                if (error.code === 211) {
    +                  return false;
    +                }
    +                throw error;
    +              }
    +            )
    +        );
    +      },
    +
    +      /**
    +       * Get sessionToken of current user.
    +       * @return {String} sessionToken
    +       */
    +      getSessionToken() {
    +        return this._sessionToken;
    +      },
    +
    +      /**
    +       * Refresh sessionToken of current user.
    +       * @since 2.1.0
    +       * @param {AuthOptions} [options]
    +       * @return {Promise.<AV.User>} user with refreshed sessionToken
    +       */
    +      refreshSessionToken(options) {
    +        return AVRequest(
    +          `users/${this.id}/refreshSessionToken`,
    +          null,
    +          null,
    +          'PUT',
    +          null,
    +          options
    +        ).then(response => {
    +          this._finishFetch(response);
    +          return this._handleSaveResult(true).then(() => this);
    +        });
    +      },
    +
    +      /**
    +       * Get this user's Roles.
    +       * @param {AuthOptions} [options]
    +       * @return {Promise.<AV.Role[]>} A promise that is fulfilled with the roles when
    +       *     the query is complete.
    +       */
    +      getRoles(options) {
    +        return AV.Relation.reverseQuery('_Role', 'users', this).find(options);
    +      },
    +    },
    +    /** @lends AV.User */ {
    +      // Class Variables
    +
    +      // The currently logged-in user.
    +      _currentUser: null,
    +
    +      // Whether currentUser is known to match the serialized version on disk.
    +      // This is useful for saving a localstorage check if you try to load
    +      // _currentUser frequently while there is none stored.
    +      _currentUserMatchesDisk: false,
    +
    +      // The localStorage key suffix that the current user is stored under.
    +      _CURRENT_USER_KEY: 'currentUser',
    +
    +      // The mapping of auth provider names to actual providers
    +      _authProviders: {},
    +
    +      // Class Methods
    +
    +      /**
    +       * Signs up a new user with a username (or email) and password.
    +       * This will create a new AV.User on the server, and also persist the
    +       * session in localStorage so that you can access the user using
    +       * {@link #current}.
    +       *
    +       * @param {String} username The username (or email) to sign up with.
    +       * @param {String} password The password to sign up with.
    +       * @param {Object} [attrs] Extra fields to set on the new user.
    +       * @param {AuthOptions} [options]
    +       * @return {Promise} A promise that is fulfilled with the user when
    +       *     the signup completes.
    +       * @see AV.User#signUp
    +       */
    +      signUp: function(username, password, attrs, options) {
    +        attrs = attrs || {};
    +        attrs.username = username;
    +        attrs.password = password;
    +        var user = AV.Object._create('_User');
    +        return user.signUp(attrs, options);
    +      },
    +
    +      /**
    +       * Logs in a user with a username (or email) and password. On success, this
    +       * saves the session to disk, so you can retrieve the currently logged in
    +       * user using <code>current</code>.
    +       *
    +       * @param {String} username The username (or email) to log in with.
    +       * @param {String} password The password to log in with.
    +       * @return {Promise} A promise that is fulfilled with the user when
    +       *     the login completes.
    +       * @see AV.User#logIn
    +       */
    +      logIn: function(username, password) {
    +        var user = AV.Object._create('_User');
    +        user._finishFetch({ username: username, password: password });
    +        return user.logIn();
    +      },
    +
    +      /**
    +       * Logs in a user with a session token. On success, this saves the session
    +       * to disk, so you can retrieve the currently logged in user using
    +       * <code>current</code>.
    +       *
    +       * @param {String} sessionToken The sessionToken to log in with.
    +       * @return {Promise} A promise that is fulfilled with the user when
    +       *     the login completes.
    +       */
    +      become: function(sessionToken) {
    +        return this._fetchUserBySessionToken(sessionToken).then(user =>
    +          user._handleSaveResult(true).then(() => user)
    +        );
    +      },
    +
    +      _fetchUserBySessionToken: function(sessionToken) {
    +        if (sessionToken === undefined) {
    +          return Promise.reject(
    +            new Error('The sessionToken cannot be undefined')
    +          );
    +        }
    +
    +        var user = AV.Object._create('_User');
    +        return request({
    +          method: 'GET',
    +          path: '/users/me',
    +          authOptions: {
    +            sessionToken,
    +          },
    +        }).then(function(resp) {
    +          var serverAttrs = user.parse(resp);
    +          user._finishFetch(serverAttrs);
    +          return user;
    +        });
    +      },
    +
    +      /**
    +       * Logs in a user with a mobile phone number and sms code sent by
    +       * AV.User.requestLoginSmsCode.On success, this
    +       * saves the session to disk, so you can retrieve the currently logged in
    +       * user using <code>current</code>.
    +       *
    +       * @param {String} mobilePhone The user's mobilePhoneNumber
    +       * @param {String} smsCode The sms code sent by AV.User.requestLoginSmsCode
    +       * @return {Promise} A promise that is fulfilled with the user when
    +       *     the login completes.
    +       * @see AV.User#logIn
    +       */
    +      logInWithMobilePhoneSmsCode: function(mobilePhone, smsCode) {
    +        var user = AV.Object._create('_User');
    +        user._finishFetch({ mobilePhoneNumber: mobilePhone, smsCode: smsCode });
    +        return user.logIn();
    +      },
    +
    +      /**
    +       * Signs up or logs in a user with a mobilePhoneNumber and smsCode.
    +       * On success, this saves the session to disk, so you can retrieve the currently
    +       * logged in user using <code>current</code>.
    +       *
    +       * @param {String} mobilePhoneNumber The user's mobilePhoneNumber.
    +       * @param {String} smsCode The sms code sent by AV.Cloud.requestSmsCode
    +       * @param {Object} attributes  The user's other attributes such as username etc.
    +       * @param {AuthOptions} options
    +       * @return {Promise} A promise that is fulfilled with the user when
    +       *     the login completes.
    +       * @see AV.User#signUpOrlogInWithMobilePhone
    +       * @see AV.Cloud.requestSmsCode
    +       */
    +      signUpOrlogInWithMobilePhone: function(
    +        mobilePhoneNumber,
    +        smsCode,
    +        attrs,
    +        options
    +      ) {
    +        attrs = attrs || {};
    +        attrs.mobilePhoneNumber = mobilePhoneNumber;
    +        attrs.smsCode = smsCode;
    +        var user = AV.Object._create('_User');
    +        return user.signUpOrlogInWithMobilePhone(attrs, options);
    +      },
    +
    +      /**
    +       * Logs in a user with a mobile phone number and password. On success, this
    +       * saves the session to disk, so you can retrieve the currently logged in
    +       * user using <code>current</code>.
    +       *
    +       * @param {String} mobilePhone The user's mobilePhoneNumber
    +       * @param {String} password The password to log in with.
    +       * @return {Promise} A promise that is fulfilled with the user when
    +       *     the login completes.
    +       * @see AV.User#logIn
    +       */
    +      logInWithMobilePhone: function(mobilePhone, password) {
    +        var user = AV.Object._create('_User');
    +        user._finishFetch({
    +          mobilePhoneNumber: mobilePhone,
    +          password: password,
    +        });
    +        return user.logIn();
    +      },
    +
    +      /**
    +       * Logs in a user with email and password.
    +       *
    +       * @since 3.13.0
    +       * @param {String} email The user's email.
    +       * @param {String} password The password to log in with.
    +       * @return {Promise} A promise that is fulfilled with the user when
    +       *     the login completes.
    +       */
    +      loginWithEmail(email, password) {
    +        const user = AV.Object._create('_User');
    +        user._finishFetch({
    +          email,
    +          password,
    +        });
    +        return user.logIn();
    +      },
    +
    +      /**
    +       * Signs up or logs in a user with a third party auth data(AccessToken).
    +       * On success, this saves the session to disk, so you can retrieve the currently
    +       * logged in user using <code>current</code>.
    +       *
    +       * @since 3.7.0
    +       * @param {Object} authData The response json data returned from third party token, maybe like { openid: 'abc123', access_token: '123abc', expires_in: 1382686496 }
    +       * @param {string} platform Available platform for sign up.
    +       * @param {Object} [options]
    +       * @param {boolean} [options.failOnNotExist] If true, the login request will fail when no user matches this authData exists.
    +       * @return {Promise} A promise that is fulfilled with the user when
    +       *     the login completes.
    +       * @example AV.User.loginWithAuthData({
    +       *   openid: 'abc123',
    +       *   access_token: '123abc',
    +       *   expires_in: 1382686496
    +       * }, 'weixin').then(function(user) {
    +       *   //Access user here
    +       * }).catch(function(error) {
    +       *   //console.error("error: ", error);
    +       * });
    +       * @see {@link https://leancloud.cn/docs/js_guide.html#绑定第三方平台账户}
    +       */
    +      loginWithAuthData(authData, platform, options) {
    +        return AV.User._logInWith(platform, authData, options);
    +      },
    +
    +      /**
    +       * @deprecated renamed to {@link AV.User.loginWithAuthData}
    +       */
    +      signUpOrlogInWithAuthData(...param) {
    +        console.warn(
    +          'DEPRECATED: User.signUpOrlogInWithAuthData 已废弃,请使用 User#loginWithAuthData 代替'
    +        );
    +        return this.loginWithAuthData(...param);
    +      },
    +
    +      /**
    +       * Signs up or logs in a user with a third party authData and unionId.
    +       * @since 3.7.0
    +       * @param {Object} authData The response json data returned from third party token, maybe like { openid: 'abc123', access_token: '123abc', expires_in: 1382686496 }
    +       * @param {string} platform Available platform for sign up.
    +       * @param {string} unionId
    +       * @param {Object} [unionLoginOptions]
    +       * @param {string} [unionLoginOptions.unionIdPlatform = 'weixin'] unionId platform
    +       * @param {boolean} [unionLoginOptions.asMainAccount = false] If true, the unionId will be associated with the user.
    +       * @param {boolean} [unionLoginOptions.failOnNotExist] If true, the login request will fail when no user matches this authData exists.
    +       * @return {Promise<AV.User>} A promise that is fulfilled with the user when completed.
    +       * @example AV.User.loginWithAuthDataAndUnionId({
    +       *   openid: 'abc123',
    +       *   access_token: '123abc',
    +       *   expires_in: 1382686496
    +       * }, 'weixin', 'union123', {
    +       *   unionIdPlatform: 'weixin',
    +       *   asMainAccount: true,
    +       * }).then(function(user) {
    +       *   //Access user here
    +       * }).catch(function(error) {
    +       *   //console.error("error: ", error);
    +       * });
    +       */
    +      loginWithAuthDataAndUnionId(
    +        authData,
    +        platform,
    +        unionId,
    +        unionLoginOptions
    +      ) {
    +        return this.loginWithAuthData(
    +          mergeUnionDataIntoAuthData()(authData, unionId, unionLoginOptions),
    +          platform,
    +          unionLoginOptions
    +        );
    +      },
    +
    +      /**
    +       * @deprecated renamed to {@link AV.User.loginWithAuthDataAndUnionId}
    +       * @since 3.5.0
    +       */
    +      signUpOrlogInWithAuthDataAndUnionId(...param) {
    +        console.warn(
    +          'DEPRECATED: User.signUpOrlogInWithAuthDataAndUnionId 已废弃,请使用 User#loginWithAuthDataAndUnionId 代替'
    +        );
    +        return this.loginWithAuthDataAndUnionId(...param);
    +      },
    +
    +      /**
    +       * Merge unionId into authInfo.
    +       * @since 4.6.0
    +       * @param {Object} authInfo
    +       * @param {String} unionId
    +       * @param {Object} [unionIdOption]
    +       * @param {Boolean} [unionIdOption.asMainAccount] If true, the unionId will be associated with the user.
    +       */
    +      mergeUnionId(authInfo, unionId, { asMainAccount = false } = {}) {
    +        authInfo = JSON.parse(JSON.stringify(authInfo));
    +        const { authData, platform } = authInfo;
    +        authData.platform = platform;
    +        authData.main_account = asMainAccount;
    +        authData.unionid = unionId;
    +        return authInfo;
    +      },
    +
    +      /**
    +       * 使用当前使用微信小程序的微信用户身份注册或登录,成功后用户的 session 会在设备上持久化保存,之后可以使用 AV.User.current() 获取当前登录用户。
    +       * 仅在微信小程序中可用。
    +       *
    +       * @deprecated please use {@link AV.User.loginWithMiniApp}
    +       * @since 2.0.0
    +       * @param {Object} [options]
    +       * @param {boolean} [options.preferUnionId] 当用户满足 {@link https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/union-id.html 获取 UnionId 的条件} 时,是否使用 UnionId 登录。(since 3.13.0)
    +       * @param {string} [options.unionIdPlatform = 'weixin'] (only take effect when preferUnionId) unionId platform
    +       * @param {boolean} [options.asMainAccount = true] (only take effect when preferUnionId) If true, the unionId will be associated with the user.
    +       * @param {boolean} [options.failOnNotExist] If true, the login request will fail when no user matches this authData exists. (since v3.7.0)
    +       * @return {Promise.<AV.User>}
    +       */
    +      loginWithWeapp({
    +        preferUnionId = false,
    +        unionIdPlatform = 'weixin',
    +        asMainAccount = true,
    +        failOnNotExist = false,
    +        useMasterKey,
    +        sessionToken,
    +        user,
    +      } = {}) {
    +        const getAuthInfo = getAdapter('getAuthInfo');
    +        return getAuthInfo({
    +          preferUnionId,
    +          asMainAccount,
    +          platform: unionIdPlatform,
    +        }).then(authInfo =>
    +          this.loginWithMiniApp(authInfo, {
    +            failOnNotExist,
    +            useMasterKey,
    +            sessionToken,
    +            user,
    +          })
    +        );
    +      },
    +
    +      /**
    +       * 使用当前使用微信小程序的微信用户身份注册或登录,
    +       * 仅在微信小程序中可用。
    +       *
    +       * @deprecated please use {@link AV.User.loginWithMiniApp}
    +       * @since 3.13.0
    +       * @param {Object} [unionLoginOptions]
    +       * @param {string} [unionLoginOptions.unionIdPlatform = 'weixin'] unionId platform
    +       * @param {boolean} [unionLoginOptions.asMainAccount = false] If true, the unionId will be associated with the user.
    +       * @param {boolean} [unionLoginOptions.failOnNotExist] If true, the login request will fail when no user matches this authData exists.       * @return {Promise.<AV.User>}
    +       */
    +      loginWithWeappWithUnionId(
    +        unionId,
    +        {
    +          unionIdPlatform = 'weixin',
    +          asMainAccount = false,
    +          failOnNotExist = false,
    +          useMasterKey,
    +          sessionToken,
    +          user,
    +        } = {}
    +      ) {
    +        const getAuthInfo = getAdapter('getAuthInfo');
    +        return getAuthInfo({ platform: unionIdPlatform }).then(authInfo => {
    +          authInfo = AV.User.mergeUnionId(authInfo, unionId, { asMainAccount });
    +          return this.loginWithMiniApp(authInfo, {
    +            failOnNotExist,
    +            useMasterKey,
    +            sessionToken,
    +            user,
    +          });
    +        });
    +      },
    +
    +      /**
    +       * 使用当前使用 QQ 小程序的 QQ 用户身份注册或登录,成功后用户的 session 会在设备上持久化保存,之后可以使用 AV.User.current() 获取当前登录用户。
    +       * 仅在 QQ 小程序中可用。
    +       *
    +       * @deprecated please use {@link AV.User.loginWithMiniApp}
    +       * @since 4.2.0
    +       * @param {Object} [options]
    +       * @param {boolean} [options.preferUnionId] 如果服务端在登录时获取到了用户的 UnionId,是否将 UnionId 保存在用户账号中。
    +       * @param {string} [options.unionIdPlatform = 'qq'] (only take effect when preferUnionId) unionId platform
    +       * @param {boolean} [options.asMainAccount = true] (only take effect when preferUnionId) If true, the unionId will be associated with the user.
    +       * @param {boolean} [options.failOnNotExist] If true, the login request will fail when no user matches this authData exists. (since v3.7.0)
    +       * @return {Promise.<AV.User>}
    +       */
    +      loginWithQQApp({
    +        preferUnionId = false,
    +        unionIdPlatform = 'qq',
    +        asMainAccount = true,
    +        failOnNotExist = false,
    +        useMasterKey,
    +        sessionToken,
    +        user,
    +      } = {}) {
    +        const getAuthInfo = getAdapter('getAuthInfo');
    +        return getAuthInfo({
    +          preferUnionId,
    +          asMainAccount,
    +          platform: unionIdPlatform,
    +        }).then(authInfo => {
    +          authInfo.provider = PLATFORM_QQAPP;
    +          return this.loginWithMiniApp(authInfo, {
    +            failOnNotExist,
    +            useMasterKey,
    +            sessionToken,
    +            user,
    +          });
    +        });
    +      },
    +
    +      /**
    +       * 使用当前使用 QQ 小程序的 QQ 用户身份注册或登录,
    +       * 仅在 QQ 小程序中可用。
    +       *
    +       * @deprecated please use {@link AV.User.loginWithMiniApp}
    +       * @since 4.2.0
    +       * @param {Object} [unionLoginOptions]
    +       * @param {string} [unionLoginOptions.unionIdPlatform = 'qq'] unionId platform
    +       * @param {boolean} [unionLoginOptions.asMainAccount = false] If true, the unionId will be associated with the user.
    +       * @param {boolean} [unionLoginOptions.failOnNotExist] If true, the login request will fail when no user matches this authData exists.
    +       * @return {Promise.<AV.User>}
    +       */
    +      loginWithQQAppWithUnionId(
    +        unionId,
    +        {
    +          unionIdPlatform = 'qq',
    +          asMainAccount = false,
    +          failOnNotExist = false,
    +          useMasterKey,
    +          sessionToken,
    +          user,
    +        } = {}
    +      ) {
    +        const getAuthInfo = getAdapter('getAuthInfo');
    +        return getAuthInfo({ platform: unionIdPlatform }).then(authInfo => {
    +          authInfo = AV.User.mergeUnionId(authInfo, unionId, { asMainAccount });
    +          authInfo.provider = PLATFORM_QQAPP;
    +          return this.loginWithMiniApp(authInfo, {
    +            failOnNotExist,
    +            useMasterKey,
    +            sessionToken,
    +            user,
    +          });
    +        });
    +      },
    +
    +      /**
    +       * Register or login using the identity of the current mini-app.
    +       * @param {Object} authInfo
    +       * @param {Object} [option]
    +       * @param {Boolean} [option.failOnNotExist] If true, the login request will fail when no user matches this authInfo.authData exists.
    +       */
    +      loginWithMiniApp(authInfo, option) {
    +        if (authInfo === undefined) {
    +          const getAuthInfo = getAdapter('getAuthInfo');
    +          return getAuthInfo().then(authInfo =>
    +            this.loginWithAuthData(authInfo.authData, authInfo.provider, option)
    +          );
    +        }
    +        return this.loginWithAuthData(
    +          authInfo.authData,
    +          authInfo.provider,
    +          option
    +        );
    +      },
    +
    +      /**
    +       * Only use for DI in tests to produce deterministic IDs.
    +       */
    +      _genId() {
    +        return uuid();
    +      },
    +
    +      /**
    +       * Creates an anonymous user.
    +       *
    +       * @since 3.9.0
    +       * @return {Promise.<AV.User>}
    +       */
    +      loginAnonymously() {
    +        return this.loginWithAuthData(
    +          {
    +            id: AV.User._genId(),
    +          },
    +          'anonymous'
    +        );
    +      },
    +
    +      associateWithAuthData(userObj, platform, authData) {
    +        console.warn(
    +          'DEPRECATED: User.associateWithAuthData 已废弃,请使用 User#associateWithAuthData 代替'
    +        );
    +        return userObj._linkWith(platform, authData);
    +      },
    +      /**
    +       * Logs out the currently logged in user session. This will remove the
    +       * session from disk, log out of linked services, and future calls to
    +       * <code>current</code> will return <code>null</code>.
    +       * @return {Promise}
    +       */
    +      logOut: function() {
    +        if (AV._config.disableCurrentUser) {
    +          console.warn(
    +            'AV.User.current() was disabled in multi-user environment, call logOut() from user object instead https://leancloud.cn/docs/leanengine-node-sdk-upgrade-1.html'
    +          );
    +          return Promise.resolve(null);
    +        }
    +
    +        if (AV.User._currentUser !== null) {
    +          AV.User._currentUser._logOutWithAll();
    +          AV.User._currentUser._isCurrentUser = false;
    +        }
    +        AV.User._currentUserMatchesDisk = true;
    +        AV.User._currentUser = null;
    +        return AV.localStorage
    +          .removeItemAsync(AV._getAVPath(AV.User._CURRENT_USER_KEY))
    +          .then(() => AV._refreshSubscriptionId());
    +      },
    +
    +      /**
    +       *Create a follower query for special user to query the user's followers.
    +       * @param {String} userObjectId The user object id.
    +       * @return {AV.FriendShipQuery}
    +       * @since 0.3.0
    +       */
    +      followerQuery: function(userObjectId) {
    +        if (!userObjectId || !_.isString(userObjectId)) {
    +          throw new Error('Invalid user object id.');
    +        }
    +        var query = new AV.FriendShipQuery('_Follower');
    +        query._friendshipTag = 'follower';
    +        query.equalTo(
    +          'user',
    +          AV.Object.createWithoutData('_User', userObjectId)
    +        );
    +        return query;
    +      },
    +
    +      /**
    +       *Create a followee query for special user to query the user's followees.
    +       * @param {String} userObjectId The user object id.
    +       * @return {AV.FriendShipQuery}
    +       * @since 0.3.0
    +       */
    +      followeeQuery: function(userObjectId) {
    +        if (!userObjectId || !_.isString(userObjectId)) {
    +          throw new Error('Invalid user object id.');
    +        }
    +        var query = new AV.FriendShipQuery('_Followee');
    +        query._friendshipTag = 'followee';
    +        query.equalTo(
    +          'user',
    +          AV.Object.createWithoutData('_User', userObjectId)
    +        );
    +        return query;
    +      },
    +
    +      /**
    +       * Requests a password reset email to be sent to the specified email address
    +       * associated with the user account. This email allows the user to securely
    +       * reset their password on the AV site.
    +       *
    +       * @param {String} email The email address associated with the user that
    +       *     forgot their password.
    +       * @return {Promise}
    +       */
    +      requestPasswordReset: function(email) {
    +        var json = { email: email };
    +        var request = AVRequest(
    +          'requestPasswordReset',
    +          null,
    +          null,
    +          'POST',
    +          json
    +        );
    +        return request;
    +      },
    +
    +      /**
    +       * Requests a verify email to be sent to the specified email address
    +       * associated with the user account. This email allows the user to securely
    +       * verify their email address on the AV site.
    +       *
    +       * @param {String} email The email address associated with the user that
    +       *     doesn't verify their email address.
    +       * @return {Promise}
    +       */
    +      requestEmailVerify: function(email) {
    +        var json = { email: email };
    +        var request = AVRequest('requestEmailVerify', null, null, 'POST', json);
    +        return request;
    +      },
    +
    +      /**
    +       * Requests a verify sms code to be sent to the specified mobile phone
    +       * number associated with the user account. This sms code allows the user to
    +       * verify their mobile phone number by calling AV.User.verifyMobilePhone
    +       *
    +       * @param {String} mobilePhoneNumber The mobile phone number associated with the
    +       *                  user that doesn't verify their mobile phone number.
    +       * @param {SMSAuthOptions} [options]
    +       * @return {Promise}
    +       */
    +      requestMobilePhoneVerify: function(mobilePhoneNumber, options = {}) {
    +        const data = {
    +          mobilePhoneNumber,
    +        };
    +        if (options.validateToken) {
    +          data.validate_token = options.validateToken;
    +        }
    +        var request = AVRequest(
    +          'requestMobilePhoneVerify',
    +          null,
    +          null,
    +          'POST',
    +          data,
    +          options
    +        );
    +        return request;
    +      },
    +
    +      /**
    +       * Requests a reset password sms code to be sent to the specified mobile phone
    +       * number associated with the user account. This sms code allows the user to
    +       * reset their account's password by calling AV.User.resetPasswordBySmsCode
    +       *
    +       * @param {String} mobilePhoneNumber The mobile phone number  associated with the
    +       *                  user that doesn't verify their mobile phone number.
    +       * @param {SMSAuthOptions} [options]
    +       * @return {Promise}
    +       */
    +      requestPasswordResetBySmsCode: function(mobilePhoneNumber, options = {}) {
    +        const data = {
    +          mobilePhoneNumber,
    +        };
    +        if (options.validateToken) {
    +          data.validate_token = options.validateToken;
    +        }
    +        var request = AVRequest(
    +          'requestPasswordResetBySmsCode',
    +          null,
    +          null,
    +          'POST',
    +          data,
    +          options
    +        );
    +        return request;
    +      },
    +
    +      /**
    +       * Requests a change mobile phone number sms code to be sent to the mobilePhoneNumber.
    +       * This sms code allows current user to reset it's mobilePhoneNumber by
    +       * calling {@link AV.User.changePhoneNumber}
    +       * @since 4.7.0
    +       * @param {String} mobilePhoneNumber
    +       * @param {Number} [ttl] ttl of sms code (default is 6 minutes)
    +       * @param {SMSAuthOptions} [options]
    +       * @return {Promise}
    +       */
    +      requestChangePhoneNumber(mobilePhoneNumber, ttl, options) {
    +        const data = { mobilePhoneNumber };
    +        if (ttl) {
    +          data.ttl = options.ttl;
    +        }
    +        if (options && options.validateToken) {
    +          data.validate_token = options.validateToken;
    +        }
    +        return AVRequest(
    +          'requestChangePhoneNumber',
    +          null,
    +          null,
    +          'POST',
    +          data,
    +          options
    +        );
    +      },
    +
    +      /**
    +       * Makes a call to reset user's account mobilePhoneNumber by sms code.
    +       * The sms code is sent by {@link AV.User.requestChangePhoneNumber}
    +       * @since 4.7.0
    +       * @param {String} mobilePhoneNumber
    +       * @param {String} code The sms code.
    +       * @return {Promise}
    +       */
    +      changePhoneNumber(mobilePhoneNumber, code) {
    +        const data = { mobilePhoneNumber, code };
    +        return AVRequest('changePhoneNumber', null, null, 'POST', data);
    +      },
    +
    +      /**
    +       * Makes a call to reset user's account password by sms code and new password.
    +       * The sms code is sent by AV.User.requestPasswordResetBySmsCode.
    +       * @param {String} code The sms code sent by AV.User.Cloud.requestSmsCode
    +       * @param {String} password The new password.
    +       * @return {Promise} A promise that will be resolved with the result
    +       * of the function.
    +       */
    +      resetPasswordBySmsCode: function(code, password) {
    +        var json = { password: password };
    +        var request = AVRequest(
    +          'resetPasswordBySmsCode',
    +          null,
    +          code,
    +          'PUT',
    +          json
    +        );
    +        return request;
    +      },
    +
    +      /**
    +       * Makes a call to verify sms code that sent by AV.User.Cloud.requestSmsCode
    +       * If verify successfully,the user mobilePhoneVerified attribute will be true.
    +       * @param {String} code The sms code sent by AV.User.Cloud.requestSmsCode
    +       * @return {Promise} A promise that will be resolved with the result
    +       * of the function.
    +       */
    +      verifyMobilePhone: function(code) {
    +        var request = AVRequest('verifyMobilePhone', null, code, 'POST', null);
    +        return request;
    +      },
    +
    +      /**
    +       * Requests a logIn sms code to be sent to the specified mobile phone
    +       * number associated with the user account. This sms code allows the user to
    +       * login by AV.User.logInWithMobilePhoneSmsCode function.
    +       *
    +       * @param {String} mobilePhoneNumber The mobile phone number  associated with the
    +       *           user that want to login by AV.User.logInWithMobilePhoneSmsCode
    +       * @param {SMSAuthOptions} [options]
    +       * @return {Promise}
    +       */
    +      requestLoginSmsCode: function(mobilePhoneNumber, options = {}) {
    +        const data = {
    +          mobilePhoneNumber,
    +        };
    +        if (options.validateToken) {
    +          data.validate_token = options.validateToken;
    +        }
    +        var request = AVRequest(
    +          'requestLoginSmsCode',
    +          null,
    +          null,
    +          'POST',
    +          data,
    +          options
    +        );
    +        return request;
    +      },
    +
    +      /**
    +       * Retrieves the currently logged in AVUser with a valid session,
    +       * either from memory or localStorage, if necessary.
    +       * @return {Promise.<AV.User>} resolved with the currently logged in AV.User.
    +       */
    +      currentAsync: function() {
    +        if (AV._config.disableCurrentUser) {
    +          console.warn(
    +            'AV.User.currentAsync() was disabled in multi-user environment, access user from request instead https://leancloud.cn/docs/leanengine-node-sdk-upgrade-1.html'
    +          );
    +          return Promise.resolve(null);
    +        }
    +
    +        if (AV.User._currentUser) {
    +          return Promise.resolve(AV.User._currentUser);
    +        }
    +
    +        if (AV.User._currentUserMatchesDisk) {
    +          return Promise.resolve(AV.User._currentUser);
    +        }
    +
    +        return AV.localStorage
    +          .getItemAsync(AV._getAVPath(AV.User._CURRENT_USER_KEY))
    +          .then(function(userData) {
    +            if (!userData) {
    +              return null;
    +            }
    +
    +            // Load the user from local storage.
    +            AV.User._currentUserMatchesDisk = true;
    +
    +            AV.User._currentUser = AV.Object._create('_User');
    +            AV.User._currentUser._isCurrentUser = true;
    +
    +            var json = JSON.parse(userData);
    +            AV.User._currentUser.id = json._id;
    +            delete json._id;
    +            AV.User._currentUser._sessionToken = json._sessionToken;
    +            delete json._sessionToken;
    +            AV.User._currentUser._finishFetch(json);
    +            //AV.User._currentUser.set(json);
    +
    +            AV.User._currentUser._synchronizeAllAuthData();
    +            AV.User._currentUser._refreshCache();
    +            AV.User._currentUser._opSetQueue = [{}];
    +            return AV.User._currentUser;
    +          });
    +      },
    +
    +      /**
    +       * Retrieves the currently logged in AVUser with a valid session,
    +       * either from memory or localStorage, if necessary.
    +       * @return {AV.User} The currently logged in AV.User.
    +       */
    +      current: function() {
    +        if (AV._config.disableCurrentUser) {
    +          console.warn(
    +            'AV.User.current() was disabled in multi-user environment, access user from request instead https://leancloud.cn/docs/leanengine-node-sdk-upgrade-1.html'
    +          );
    +          return null;
    +        }
    +
    +        if (AV.localStorage.async) {
    +          const error = new Error(
    +            'Synchronous API User.current() is not available in this runtime. Use User.currentAsync() instead.'
    +          );
    +          error.code = 'SYNC_API_NOT_AVAILABLE';
    +          throw error;
    +        }
    +
    +        if (AV.User._currentUser) {
    +          return AV.User._currentUser;
    +        }
    +
    +        if (AV.User._currentUserMatchesDisk) {
    +          return AV.User._currentUser;
    +        }
    +
    +        // Load the user from local storage.
    +        AV.User._currentUserMatchesDisk = true;
    +
    +        var userData = AV.localStorage.getItem(
    +          AV._getAVPath(AV.User._CURRENT_USER_KEY)
    +        );
    +        if (!userData) {
    +          return null;
    +        }
    +        AV.User._currentUser = AV.Object._create('_User');
    +        AV.User._currentUser._isCurrentUser = true;
    +
    +        var json = JSON.parse(userData);
    +        AV.User._currentUser.id = json._id;
    +        delete json._id;
    +        AV.User._currentUser._sessionToken = json._sessionToken;
    +        delete json._sessionToken;
    +        AV.User._currentUser._finishFetch(json);
    +        //AV.User._currentUser.set(json);
    +
    +        AV.User._currentUser._synchronizeAllAuthData();
    +        AV.User._currentUser._refreshCache();
    +        AV.User._currentUser._opSetQueue = [{}];
    +        return AV.User._currentUser;
    +      },
    +
    +      /**
    +       * Persists a user as currentUser to localStorage, and into the singleton.
    +       * @private
    +       */
    +      _saveCurrentUser: function(user) {
    +        var promise;
    +        if (AV.User._currentUser !== user) {
    +          promise = AV.User.logOut();
    +        } else {
    +          promise = Promise.resolve();
    +        }
    +        return promise.then(function() {
    +          user._isCurrentUser = true;
    +          AV.User._currentUser = user;
    +
    +          var json = user._toFullJSON();
    +          json._id = user.id;
    +          json._sessionToken = user._sessionToken;
    +          return AV.localStorage
    +            .setItemAsync(
    +              AV._getAVPath(AV.User._CURRENT_USER_KEY),
    +              JSON.stringify(json)
    +            )
    +            .then(function() {
    +              AV.User._currentUserMatchesDisk = true;
    +              return AV._refreshSubscriptionId();
    +            });
    +        });
    +      },
    +
    +      _registerAuthenticationProvider: function(provider) {
    +        AV.User._authProviders[provider.getAuthType()] = provider;
    +        // Synchronize the current user with the auth provider.
    +        if (!AV._config.disableCurrentUser && AV.User.current()) {
    +          AV.User.current()._synchronizeAuthData(provider.getAuthType());
    +        }
    +      },
    +
    +      _logInWith: function(provider, authData, options) {
    +        var user = AV.Object._create('_User');
    +        return user._linkWith(provider, authData, options);
    +      },
    +    }
    +  );
    +};
    +
    +
    +
    + + + + +
    + +
    + +
    + Documentation generated by JSDoc 3.6.3 on Mon Sep 25 2023 11:05:14 GMT+0000 (Coordinated Universal Time) using the docdash theme. +
    + + + + +