diff --git a/.gitignore b/.gitignore
index 4080754b9..e9b052a66 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,6 @@
# Generated site
_site/
+.jekyll-metadata
# Logs
logs/
diff --git a/_includes/ios/local-datastore.md b/_includes/ios/local-datastore.md
index 0cc569db4..530bf0e04 100644
--- a/_includes/ios/local-datastore.md
+++ b/_includes/ios/local-datastore.md
@@ -171,6 +171,7 @@ gameScore.unpinInBackground()
There's also a method to unpin several objects at once.
+
```objective_c
[PFObject unpinAllInBackground:listOfObjects];
```
diff --git a/_includes/js/local-datastore.md b/_includes/js/local-datastore.md
new file mode 100644
index 000000000..b25834cb7
--- /dev/null
+++ b/_includes/js/local-datastore.md
@@ -0,0 +1,146 @@
+# Local Datastore
+
+The Parse JS SDK (Version 2.2.0+) provides a local datastore which can be used to store and retrieve `Parse.Object`s. To enable this functionality, call `Parse.enableLocalDatastore()`.
+
+There are a couple of side effects of enabling the local datastore that you should be aware of. When enabled, there will only be one instance of any given `Parse.Object`. For example, imagine you have an instance of the `"GameScore"` class with an `objectId` of `"xWMyZ4YEGZ"`, and then you issue a `Parse.Query` for all instances of `"GameScore"` with that `objectId`. The result will be the same instance of the object you already have in memory.
+
+## Pinning
+
+You can store a `Parse.Object` in the local datastore by pinning it. Pinning a `Parse.Object` is recursive, just like saving, so any objects that are pointed to by the one you are pinning will also be pinned. When an object is pinned, every time you update it by fetching or saving new data, the copy in the local datastore will be updated automatically. You don't need to worry about it at all.
+
+```javascript
+const GameScore = Parse.Object.extend("GameScore");
+const gameScore = new GameScore();
+
+await gameScore.save();
+await gameScore.pin();
+```
+
+If you have multiple objects, you can pin them all at once with the `Parse.Object.pinAll()` convenience method.
+
+```javascript
+await Parse.Object.pinAll(listOfObjects);
+```
+
+## Retrieving
+
+Storing objects is great, but it's only useful if you can then get the objects back out later. Retrieving an object from the local datastore works just like retrieving one over the network. The only difference is calling the `fromLocalDatastore` method to tell the `Parse.Query` where to look for its results.
+
+```javascript
+const GameScore = Parse.Object.extend("GameScore");
+const query = new Parse.Query(GameScore);
+query.fromLocalDatastore();
+const result = await query.get('xWMyZ4YE');
+```
+
+## Querying the Local Datastore
+
+Often, you'll want to find a whole list of objects that match certain criteria, instead of getting a single object by id. To do that, you can use a [Parse.Query](#queries). Any `Parse.Query` can be used with the local datastore just as with the network. The results will include any object you have pinned that matches the query. Any unsaved changes you have made to the object will be considered when evaluating the query. So you can find a local object that matches, even if it was never returned from the server for this particular query. All query methods are supported except aggregate and distinct queries.
+
+```javascript
+const GameScore = Parse.Object.extend("GameScore");
+const query = new Parse.Query(GameScore);
+query.equalTo('playerName', 'Joe Bob');
+query.fromLocalDatastore();
+const results = await query.find();
+```
+
+## Unpinning
+
+When you are done with an object and no longer need it to be in the local datastore, you can simply unpin it. This will free up disk space and keep your queries on the local datastore running quickly. This will unpin from the default pin.
+
+```javascript
+await gameScore.unPin();
+```
+
+There's also a method to unpin several objects at once.
+
+```javascript
+await Parse.Object.unPinAll(listOfObjects);
+```
+
+There's also a method to remove all objects from default pin
+
+```javascript
+await Parse.Object.unPinAllObjects();
+```
+
+## Pinning with Labels
+
+Labels indicate a group of objects that should be stored together.
+
+```javascript
+// Add several objects with a label.
+await Parse.Object.pinAllWithName('MyScores', listOfObjects);
+
+// Add another object with the same label.
+await anotherGameScore.pinWithName('MyScores');
+```
+
+To unpin all of the objects with the same label at the same time, you can pass a label to the unpin methods. This saves you from having to manually track which objects are in each group.
+
+```javascript
+await Parse.Object.unPinAllWithName('MyScores', listOfObjects);
+```
+
+There's also a method to remove all objects from a label.
+
+```javascript
+await Parse.Object.unPinAllObjectsWithName('MyScores');
+```
+
+An Object will be kept in the datastore as long as it is pinned by at least one label. So an object pinned with two labels will stay in the datastore if one of the two labels is unpinned.
+
+## Caching Query Results
+
+Pinning with labels makes it easy to cache the results of queries. You can use one label to pin the results of each different query. To get new results from the network, just do a query and update the pinned objects.
+
+```javascript
+const GameScore = Parse.Object.extend("GameScore");
+const query = new Parse.Query(GameScore);
+query.equalTo("playerName", "foo");
+const results = await query.find();
+await Parse.Object.unPinAllObjectsWithName('HighScores');
+await Parse.Object.pinAllWithName('HighScores', results);
+```
+
+When you want to get the cached results for the query, you can then run the same query against the local datastore.
+
+```javascript
+const GameScore = Parse.Object.extend("GameScore");
+const query = new Parse.Query(GameScore);
+query.equalTo("playerName", "foo");
+query.fromLocalDatastore();
+const results = await query.find();
+```
+
+## Dumping Contents
+
+For testing purposes, you can use `Parse.dumpLocalDatastore()` to view the contents of your local datastore.
+
+```javascript
+const LDS = await Parse.dumpLocalDatastore();
+```
+
+The local datastore is a dictionary of key / values. Each object has a key (className_objectId) and serves as a reference to this object.
+
+`pin()` will save this reference under the default pin `_default`
+`pinWithName('YourPinName')` will save this reference under `parsePin_YourPinName`
+
+Unpinning will have the opposite effect.
+
+## LiveQuery
+
+If you are subscribed to a LiveQuery Update Event, the updated object will be stored in the LocalDatastore if pinned.
+
+```javascript
+const gameScore = new GameScore();
+await gameScore.save();
+await gameScore.pin();
+const query = new Parse.Query(GameScore);
+query.equalTo('objectId', gameScore.id)
+const subscription = query.subscribe();
+subscription.on('update', (object) => {
+ // Since object (gameScore) is pinned, LDS will update automatically
+});
+```
diff --git a/assets/js/bundle.js b/assets/js/bundle.js
index 8ad48c2b0..f1d16c896 100644
--- a/assets/js/bundle.js
+++ b/assets/js/bundle.js
@@ -1,4 +1,4 @@
-!function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=100)}([function(e,t,n){(function(r){var o,i;o=[n(13),n(1),n(97),n(28),n(58),n(57),n(27),n(29),n(96),n(26),n(56),n(95),n(7),n(55)],void 0===(i=function(e,t,n,r,o,i,a,s,u,c,l,f,p,d){"use strict";var h=function(e,t){return new h.fn.init(e,t)},v=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,g=/^-ms-/,m=/-([a-z])/g,y=function(e,t){return t.toUpperCase()};function x(e){var t=!!e&&"length"in e&&e.length,n=h.type(e);return"function"!==n&&!h.isWindow(e)&&("array"===n||0===t||"number"==typeof t&&t>0&&t-1 in e)}return h.fn=h.prototype={jquery:"3.0.0",constructor:h,length:0,toArray:function(){return r.call(this)},get:function(e){return null!=e?e<0?this[e+this.length]:this[e]:r.call(this)},pushStack:function(e){var t=h.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return h.each(this,e)},map:function(e){return this.pushStack(h.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(r.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(n>=0&&n
)[^>]*|#([\w-]+))$/,i=e.fn.init=function(i,a,s){var u,c;if(!i)return this;if(s=s||r,"string"==typeof i){if(!(u="<"===i[0]&&">"===i[i.length-1]&&i.length>=3?[null,i,null]:o.exec(i))||!u[1]&&a)return!a||a.jquery?(a||s).find(i):this.constructor(a).find(i);if(u[1]){if(a=a instanceof e?a[0]:a,e.merge(this,e.parseHTML(u[1],a&&a.nodeType?a.ownerDocument||a:t,!0)),n.test(u[1])&&e.isPlainObject(a))for(u in a)e.isFunction(this[u])?this[u](a[u]):this.attr(u,a[u]);return this}return(c=t.getElementById(u[2]))&&(this[0]=c,this.length=1),this}return i.nodeType?(this[0]=i,this.length=1,this):e.isFunction(i)?void 0!==s.ready?s.ready(i):i(e):e.makeArray(i,this)};return i.prototype=e.fn,r=e(t),i}.apply(t,r))||(e.exports=o)},function(e,t,n){var r,o;r=[n(45)],void 0===(o=function(e){"use strict";return new e}.apply(t,r))||(e.exports=o)},function(e,t,n){var r,o;r=[n(0)],void 0===(o=function(e){"use strict";var t=function(n,r,o,i,a,s,u){var c=0,l=n.length,f=null==o;if("object"===e.type(o))for(c in a=!0,o)t(n,r,c,o[c],!0,s,u);else if(void 0!==i&&(a=!0,e.isFunction(i)||(u=!0),f&&(u?(r.call(n,i),r=null):(f=r,r=function(t,n,r){return f.call(e(t),r)})),r))for(;c0&&(T=window.setTimeout(function(){M.abort("timeout")},A.timeout));try{k=!1,x.send(H,P)}catch(e){if(k)throw e;P(-1,e)}}else P(-1,"No Transport");function P(t,n,r,o){var i,a,s,u,c,l=n;k||(k=!0,T&&window.clearTimeout(T),x=void 0,w=o||"",M.readyState=t>0?4:0,i=t>=200&&t<300||304===t,r&&(u=function(e,t,n){for(var r,o,i,a,s=e.contents,u=e.dataTypes;"*"===u[0];)u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(o in s)if(s[o]&&s[o].test(r)){u.unshift(o);break}if(u[0]in n)i=u[0];else{for(o in n){if(!u[0]||e.converters[o+" "+u[0]]){i=o;break}a||(a=o)}i=i||a}if(i)return i!==u[0]&&u.unshift(i),n[i]}(A,M,r)),u=function(e,t,n,r){var o,i,a,s,u,c={},l=e.dataTypes.slice();if(l[1])for(a in e.converters)c[a.toLowerCase()]=e.converters[a];for(i=l.shift();i;)if(e.responseFields[i]&&(n[e.responseFields[i]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=i,i=l.shift())if("*"===i)i=u;else if("*"!==u&&u!==i){if(!(a=c[u+" "+i]||c["* "+i]))for(o in c)if((s=o.split(" "))[1]===i&&(a=c[u+" "+s[0]]||c["* "+s[0]])){!0===a?a=c[o]:!0!==c[o]&&(i=s[0],l.unshift(s[1]));break}if(!0!==a)if(a&&e.throws)t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+i}}}return{state:"success",data:t}}(A,u,M,i),i?(A.ifModified&&((c=M.getResponseHeader("Last-Modified"))&&(e.lastModified[b]=c),(c=M.getResponseHeader("etag"))&&(e.etag[b]=c)),204===t||"HEAD"===A.type?l="nocontent":304===t?l="notmodified":(l=u.state,a=u.data,i=!(s=u.error))):(s=l,!t&&l||(l="error",t<0&&(t=0))),M.status=t,M.statusText=(n||l)+"",i?L.resolveWith(D,[a,l,M]):L.rejectWith(D,[M,l,s]),M.statusCode(_),_=void 0,E&&O.trigger(i?"ajaxSuccess":"ajaxError",[M,A,i?a:s]),q.fireWith(D,[M,l]),E&&(O.trigger("ajaxComplete",[M,A]),--e.active||e.event.trigger("ajaxStop")))}return M},getJSON:function(t,n,r){return e.get(t,n,r,"json")},getScript:function(t,n){return e.get(t,void 0,n,"script")}}),e.each(["get","post"],function(t,n){e[n]=function(t,r,o,i){return e.isFunction(r)&&(i=i||o,o=r,r=void 0),e.ajax(e.extend({url:t,type:n,dataType:i,data:r,success:o},e.isPlainObject(t)&&t))}}),e}.apply(t,r))||(e.exports=o)},function(e,t,n){var r,o;r=[n(0),n(28),n(23)],void 0===(o=function(e,t){"use strict";function n(e){return e}function r(e){throw e}function o(t,n,r){var o;try{t&&e.isFunction(o=t.promise)?o.call(t).done(n).fail(r):t&&e.isFunction(o=t.then)?o.call(t,n,r):n.call(void 0,t)}catch(t){r.call(void 0,t)}}return e.extend({Deferred:function(t){var o=[["notify","progress",e.Callbacks("memory"),e.Callbacks("memory"),2],["resolve","done",e.Callbacks("once memory"),e.Callbacks("once memory"),0,"resolved"],["reject","fail",e.Callbacks("once memory"),e.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},catch:function(e){return a.then(null,e)},pipe:function(){var t=arguments;return e.Deferred(function(n){e.each(o,function(r,o){var i=e.isFunction(t[o[4]])&&t[o[4]];s[o[1]](function(){var t=i&&i.apply(this,arguments);t&&e.isFunction(t.promise)?t.promise().progress(n.notify).done(n.resolve).fail(n.reject):n[o[0]+"With"](this,i?[t]:arguments)})}),t=null}).promise()},then:function(t,i,a){var s=0;function u(t,o,i,a){return function(){var c=this,l=arguments,f=function(){var f,p;if(!(t=s&&(i!==r&&(c=void 0,l=[n]),o.rejectWith(c,l))}};t?p():(e.Deferred.getStackHook&&(p.stackTrace=e.Deferred.getStackHook()),window.setTimeout(p))}}return e.Deferred(function(s){o[0][3].add(u(0,s,e.isFunction(a)?a:n,s.notifyWith)),o[1][3].add(u(0,s,e.isFunction(t)?t:n)),o[2][3].add(u(0,s,e.isFunction(i)?i:r))}).promise()},promise:function(t){return null!=t?e.extend(t,a):a}},s={};return e.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[0][2].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),t&&t.call(s,s),s},when:function(n){var r=arguments.length,i=r,a=Array(i),s=t.call(arguments),u=e.Deferred(),c=function(e){return function(n){a[e]=this,s[e]=arguments.length>1?t.call(arguments):n,--r||u.resolveWith(a,s)}};if(r<=1&&(o(n,u.done(c(i)).resolve,u.reject),"pending"===u.state()||e.isFunction(s[i]&&s[i].then)))return u.then();for(;i--;)o(s[i],c(i),u.reject);return u.promise()}}),e}.apply(t,r))||(e.exports=o)},function(e,t,n){var r,o;r=[n(0),n(1),n(24),n(6),n(28),n(4),n(3),n(2)],void 0===(o=function(e,t,n,r,o,i){"use strict";var a=/^key/,s=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,u=/^([^.]*)(?:\.(.+)|)/;function c(){return!0}function l(){return!1}function f(){try{return t.activeElement}catch(e){}}function p(t,n,r,o,i,a){var s,u;if("object"==typeof n){for(u in"string"!=typeof r&&(o=o||r,r=void 0),n)p(t,u,r,o,n[u],a);return t}if(null==o&&null==i?(i=r,o=r=void 0):null==i&&("string"==typeof r?(i=o,o=void 0):(i=o,o=r,r=void 0)),!1===i)i=l;else if(!i)return t;return 1===a&&(s=i,(i=function(t){return e().off(t),s.apply(this,arguments)}).guid=s.guid||(s.guid=e.guid++)),t.each(function(){e.event.add(this,n,i,o,r)})}return e.event={global:{},add:function(t,o,a,s,c){var l,f,p,d,h,v,g,m,y,x,b,w=i.get(t);if(w)for(a.handler&&(a=(l=a).handler,c=l.selector),c&&e.find.matchesSelector(n,c),a.guid||(a.guid=e.guid++),(d=w.events)||(d=w.events={}),(f=w.handle)||(f=w.handle=function(n){return void 0!==e&&e.event.triggered!==n.type?e.event.dispatch.apply(t,arguments):void 0}),h=(o=(o||"").match(r)||[""]).length;h--;)y=b=(p=u.exec(o[h])||[])[1],x=(p[2]||"").split(".").sort(),y&&(g=e.event.special[y]||{},y=(c?g.delegateType:g.bindType)||y,g=e.event.special[y]||{},v=e.extend({type:y,origType:b,data:s,handler:a,guid:a.guid,selector:c,needsContext:c&&e.expr.match.needsContext.test(c),namespace:x.join(".")},l),(m=d[y])||((m=d[y]=[]).delegateCount=0,g.setup&&!1!==g.setup.call(t,s,x,f)||t.addEventListener&&t.addEventListener(y,f)),g.add&&(g.add.call(t,v),v.handler.guid||(v.handler.guid=a.guid)),c?m.splice(m.delegateCount++,0,v):m.push(v),e.event.global[y]=!0)},remove:function(t,n,o,a,s){var c,l,f,p,d,h,v,g,m,y,x,b=i.hasData(t)&&i.get(t);if(b&&(p=b.events)){for(d=(n=(n||"").match(r)||[""]).length;d--;)if(m=x=(f=u.exec(n[d])||[])[1],y=(f[2]||"").split(".").sort(),m){for(v=e.event.special[m]||{},g=p[m=(a?v.delegateType:v.bindType)||m]||[],f=f[2]&&new RegExp("(^|\\.)"+y.join("\\.(?:.*\\.|)")+"(\\.|$)"),l=c=g.length;c--;)h=g[c],!s&&x!==h.origType||o&&o.guid!==h.guid||f&&!f.test(h.namespace)||a&&a!==h.selector&&("**"!==a||!h.selector)||(g.splice(c,1),h.selector&&g.delegateCount--,v.remove&&v.remove.call(t,h));l&&!g.length&&(v.teardown&&!1!==v.teardown.call(t,y,b.handle)||e.removeEvent(t,m,b.handle),delete p[m])}else for(m in p)e.event.remove(t,m+n[d],o,a,!0);e.isEmptyObject(p)&&i.remove(t,"handle events")}},dispatch:function(t){var n,r,o,a,s,u,c=e.event.fix(t),l=new Array(arguments.length),f=(i.get(this,"events")||{})[c.type]||[],p=e.event.special[c.type]||{};for(l[0]=c,n=1;n-1:e.find(i,this,null,[c]).length),o[i]&&o.push(a);o.length&&s.push({elem:c,handlers:o})}return u-1:1===r.nodeType&&e.find.matchesSelector(r,t))){s.push(r);break}return this.pushStack(s.length>1?e.uniqueSort(s):s)},index:function(n){return n?"string"==typeof n?t.call(e(n),this[0]):t.call(this,n.jquery?n[0]:n):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(t,n){return this.pushStack(e.uniqueSort(e.merge(this.get(),e(t,n))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),e.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return n(e,"parentNode")},parentsUntil:function(e,t,r){return n(e,"parentNode",r)},next:function(e){return s(e,"nextSibling")},prev:function(e){return s(e,"previousSibling")},nextAll:function(e){return n(e,"nextSibling")},prevAll:function(e){return n(e,"previousSibling")},nextUntil:function(e,t,r){return n(e,"nextSibling",r)},prevUntil:function(e,t,r){return n(e,"previousSibling",r)},siblings:function(e){return r((e.parentNode||{}).firstChild,e)},children:function(e){return r(e.firstChild)},contents:function(t){return t.contentDocument||e.merge([],t.childNodes)}},function(t,n){e.fn[t]=function(r,o){var s=e.map(this,n,r);return"Until"!==t.slice(-5)&&(o=r),o&&"string"==typeof o&&(s=e.filter(o,s)),this.length>1&&(a[t]||e.uniqueSort(s),i.test(t)&&s.reverse()),this.pushStack(s)}}),e}.apply(t,r))||(e.exports=o)},function(e,t,n){var r,o;r=[n(0),n(19),n(5),n(37),n(1),n(20),n(18),n(40),n(36),n(39),n(35),n(38),n(34),n(17),n(3),n(42),n(2)],void 0===(o=function(e,t,n,r,o,i,a,s,u,c,l,f,p,d){"use strict";var h=/^(none|table(?!-c[ea]).+)/,v={position:"absolute",visibility:"hidden",display:"block"},g={letterSpacing:"0",fontWeight:"400"},m=["Webkit","Moz","ms"],y=o.createElement("div").style;function x(e){if(e in y)return e;for(var t=e[0].toUpperCase()+e.slice(1),n=m.length;n--;)if((e=m[n]+t)in y)return e}function b(e,t,n){var r=i.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function w(t,n,r,o,i){for(var a=r===(o?"border":"content")?4:"width"===n?1:0,u=0;a<4;a+=2)"margin"===r&&(u+=e.css(t,r+s[a],!0,i)),o?("content"===r&&(u-=e.css(t,"padding"+s[a],!0,i)),"margin"!==r&&(u-=e.css(t,"border"+s[a]+"Width",!0,i))):(u+=e.css(t,"padding"+s[a],!0,i),"padding"!==r&&(u+=e.css(t,"border"+s[a]+"Width",!0,i)));return u}function C(t,n,r){var o,i=!0,s=u(t),c="border-box"===e.css(t,"boxSizing",!1,s);if(t.getClientRects().length&&(o=t.getBoundingClientRect()[n]),o<=0||null==o){if(((o=l(t,n,s))<0||null==o)&&(o=t.style[n]),a.test(o))return o;i=c&&(d.boxSizingReliable()||o===t.style[n]),o=parseFloat(o)||0}return o+w(t,n,r||(c?"border":"content"),i,s)+"px"}return e.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=l(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{float:"cssFloat"},style:function(t,n,r,o){if(t&&3!==t.nodeType&&8!==t.nodeType&&t.style){var a,s,u,c=e.camelCase(n),l=t.style;if(n=e.cssProps[c]||(e.cssProps[c]=x(c)||c),u=e.cssHooks[n]||e.cssHooks[c],void 0===r)return u&&"get"in u&&void 0!==(a=u.get(t,!1,o))?a:l[n];"string"===(s=typeof r)&&(a=i.exec(r))&&a[1]&&(r=f(t,n,a),s="number"),null!=r&&r==r&&("number"===s&&(r+=a&&a[3]||(e.cssNumber[c]?"":"px")),d.clearCloneStyle||""!==r||0!==n.indexOf("background")||(l[n]="inherit"),u&&"set"in u&&void 0===(r=u.set(t,r,o))||(l[n]=r))}},css:function(t,n,r,o){var i,a,s,u=e.camelCase(n);return n=e.cssProps[u]||(e.cssProps[u]=x(u)||u),(s=e.cssHooks[n]||e.cssHooks[u])&&"get"in s&&(i=s.get(t,!0,r)),void 0===i&&(i=l(t,n,o)),"normal"===i&&n in g&&(i=g[n]),""===r||r?(a=parseFloat(i),!0===r||isFinite(a)?a||0:i):i}}),e.each(["height","width"],function(t,n){e.cssHooks[n]={get:function(t,r,o){if(r)return!h.test(e.css(t,"display"))||t.getClientRects().length&&t.getBoundingClientRect().width?C(t,n,o):c(t,v,function(){return C(t,n,o)})},set:function(t,r,o){var a,s=o&&u(t),c=o&&w(t,n,o,"border-box"===e.css(t,"boxSizing",!1,s),s);return c&&(a=i.exec(r))&&"px"!==(a[3]||"px")&&(t.style[n]=r,r=e.css(t,n)),b(0,r,c)}}}),e.cssHooks.marginLeft=p(d.reliableMarginLeft,function(e,t){if(t)return(parseFloat(l(e,"marginLeft"))||e.getBoundingClientRect().left-c(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),e.each({margin:"",padding:"",border:"Width"},function(t,n){e.cssHooks[t+n]={expand:function(e){for(var r=0,o={},i="string"==typeof e?e.split(" "):[e];r<4;r++)o[t+s[r]+n]=i[r]||i[r-2]||i[0];return o}},r.test(t)||(e.cssHooks[t+n].set=b)}),e.fn.extend({css:function(t,r){return n(this,function(t,n,r){var o,i,a={},s=0;if(e.isArray(n)){for(o=u(t),i=n.length;s1)}}),e}.apply(t,r))||(e.exports=o)},function(e,t,n){var r;void 0===(r=function(){"use strict";return[]}.call(t,n,t,e))||(e.exports=r)},function(e,t,n){var r,o;r=[n(0),n(58),n(57),n(5),n(44),n(50),n(49),n(48),n(47),n(46),n(51),n(92),n(4),n(43),n(25),n(55),n(3),n(11),n(2),n(10)],void 0===(o=function(e,t,n,r,o,i,a,s,u,c,l,f,p,d,h,v){"use strict";var g=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,m=/