!function(){var a,b;!function(){var c={},d={};a=function(a,b,d){c[a]={deps:b,callback:d}},b=function(a){if(d[a])return d[a];d[a]={};var e=c[a];if(!e)throw new Error("Module '"+a+"' not found.");for(var f,g=e.deps,h=e.callback,i=[],j=0,k=g.length;k>j;j++)"exports"===g[j]?i.push(f={}):i.push(b(g[j]));var l=h.apply(this,i);return d[a]=f||l}}(),a("ember-pouchdb/get_initializer",["ember-pouchdb/storage","ember-pouchdb/promise_tracker","exports"],function(a,b,c){"use strict";var d=a.Storage,e=b.PromiseTracker,f=function(a,b){return a=Ember.merge({name:"PouchDB",propName:"pouch",dbName:"PouchDB",fullName:"pouch:main",types:["controller","route"],docTypes:{}},a),"undefined"==typeof b&&(b=function(b,c){c.register(a.fullName,d.extend({dbName:c.get("pouch.dbName")||a.dbName,docTypes:c.get("pouch.docTypes")||a.docTypes})),a.types.forEach(function(b){c.inject(b,a.propName,a.fullName)}),Ember.testing&&(c.register("promiseTracker:pouch",e),c.inject(a.fullName,"tracker","promiseTracker:pouch"))}),a.initialize=b,a};c.get_initializer=f}),a("ember-pouchdb/model",["exports"],function(a){"use strict";var b=Ember.Object.extend(Ember.Copyable,{copy:function(){var a=this.serialize();return a.id=this.get("id"),a.rev=this.get("rev"),this.constructor.create(a)},serialize:function(){throw new Error(Ember.String.fmt("%@ must implement serialize() method which returns JSON of this model.",[this]))}});a.Model=b}),a("ember-pouchdb/promise_tracker",["exports"],function(a){"use strict";var b=Ember.ArrayProxy.extend({init:function(){var a=this;Ember.FEATURES.isEnabled("ember-testing-wait-hooks")&&Ember.Test.registerWaiter(function(){return a.areFulfilled()===!0}),this.set("content",[])},newPromise:function(a){var b=Ember.RSVP.Promise(a);return this.pushObject(b),b},areFulfilled:function(){return this.everyBy("isFulfilled")}});a.PromiseTracker=b}),a("ember-pouchdb/storage",["ember-pouchdb/model","exports"],function(a,b){"use strict";var c=a.Model,d=Ember.Object.extend({dbName:null,docTypes:{},init:function(){this.getDB()},getDB:function(a,b){var c=this,d=this.get("_dbPromise");return Em.isEmpty(d)&&(d=this.create(a,b),d.then(function(a){return c.set("_db",a),a}),this.set("_dbPromise",d)),d},create:function(a,b){"undefined"==typeof a&&(a=this.get("dbName")),"undefined"==typeof b&&(b={});var c=function(c,d){var e=function(a,b){Ember.run(function(){a?d(a):c(b)})};new Pouch(a,b,e)};return this._newPromise(c)},findAll:function(a,b){var c=this.get("docTypes."+a);Ember.assert("You have to register %@ docType before you can query by it. Look at docTypes property in PouchStorage class.".fmt(a),c),"undefined"==typeof b&&(b={reduce:!1}),b.docType=a;var d=this,e=function(a){a.docType===b.docType&&emit(a._id,a)},f=function(a){var c=d._newPromise(function(c,d){var f=function(a,b){Ember.run(function(){a?d(a):c(b)})};a.query({map:e},b,f)});return c},g=function(a){return Em.A(a.rows).map(function(a){var b=c.create(a.value);return b.setProperties({id:a.value._id,rev:a.value._rev}),b})};return this.getDB().then(f).then(g)},GET:function(a,b){"undefined"==typeof b&&(b={});var d=this,e=function(c){var e=d._newPromise(function(d,e){var f=function(a,b){Ember.run(function(){a?e(a):d(b)})};c.get(a,b,f)});return e},f=function(a){var b;if(a.hasOwnProperty("docType")&&d.get("docTypes."+a.docType)){var e=d.get("docTypes."+a.docType);b=e.create(a)}else b=c.create(a);return b.setProperties({id:a._id,rev:a._rev}),delete b._id,delete b._rev,b};return this.getDB().then(e).then(f)},POST:function(a,b){var c=this,d=a.serialize(),e=this.getDocType(a.constructor);Em.assert("Model doesn't have a corresponding doc type.",e),d.docType=e;var f=function(a){var e=c._newPromise(function(c,e){var f=function(a,b){Ember.run(function(){a?e(a):c(b)})};a.post(d,b,f)});return e},g=function(b){return a.set("id",b.id),a.set("rev",b.rev),a.set("docType",e),a};return this.getDB().then(f).then(g)},PUT:function(a,b){var c=this,d=a.serialize();"undefined"==typeof b&&(b={}),a.get("docType")||a.set("docType",this.getDocType(a.constructor)),d.docType=a.get("docType")||this.getDocType(a.constructor),d._id=a.get("id"),d._rev=a.get("rev");var e=function(a){var e=c._newPromise(function(c,e){var f=function(a,b){Ember.run(function(){a?e(a):c(b)})};a.put(d,b,f)});return e},f=function(b){return a.setProperties({id:b.id,rev:b.rev}),a};return this.getDB().then(e).then(f)},DELETE:function(a,b){var c;"undefined"==typeof b&&(b={}),c={_id:a.get("id"),_rev:a.get("rev")};var d=function(a){var d=that._newPromise(function(d,e){var f=function(a){Ember.run(function(){a?e(a):d()})};a.remove(c,b,f)});return d};return this.getDB().then(d)},remove:function(a){var b=this,c=b.get("dbName");"undefined"==typeof a&&(a={});var d=function(a,b){var d=function(c,d){Ember.run(function(){c?b(c):a(d)})};Pouch.destroy(c,d)};return this._newPromise(d)},getDocType:function(a){var b=!1,c=this.get("docTypes");return Object.keys(c).find(function(d){return Em.isEqual(c[d],a)&&(b=d),b}),b},_newPromise:function(a){var b;return null!=this.tracker?(b=this.tracker.newPromise(a),b.stack=(new Error).stack):b=new Ember.RSVP.Promise(a),b}});b.Storage=d}),a("ember-pouchdb",["ember-pouchdb/get_initializer","ember-pouchdb/model","ember-pouchdb/storage","exports"],function(a,b,c,d){"use strict";var e=a.get_initializer,f=b.Model,g=c.Storage;d.get_initializer=e,d.Model=f,d.Storage=g}),window.EPDB=b("ember-pouchdb")}(window);