ember-cli-test-imagine-api
Version:
Create an Imaginary API in CoffeeScript with a declarative interface and neumonic for resources
1 lines • 24.8 kB
Source Map (JSON)
{"version":3,"sources":["vendor/ember-cli/app-prefix.js","dummy/app.js","dummy/ember-cli-test-imagine-api/tests/modules/ember-cli-test-imagine-api/imagine.js","dummy/initializers/app-version.js","dummy/initializers/export-application-global.js","dummy/router.js","dummy/templates/application.js","dummy/tests/app.jshint.js","dummy/tests/helpers/imagine-api.js","dummy/tests/helpers/resolver.js","dummy/tests/helpers/resolver.jshint.js","dummy/tests/helpers/start-app.js","dummy/tests/helpers/start-app.jshint.js","dummy/tests/router.jshint.js","dummy/tests/test-helper.js","dummy/tests/test-helper.jshint.js","dummy/tests/unit/imagine_test.js","vendor/ember-cli/app-suffix.js","vendor/ember-cli/app-boot.js"],"sourcesContent":["\"use strict\";\n/* jshint ignore:start */\n\n/* jshint ignore:end */\n","define('dummy/app', ['exports', 'ember', 'ember/resolver', 'ember/load-initializers', 'dummy/config/environment'], function (exports, Ember, Resolver, loadInitializers, config) {\n\n 'use strict';\n\n var App;\n\n Ember['default'].MODEL_FACTORY_INJECTIONS = true;\n\n App = Ember['default'].Application.extend({\n modulePrefix: config['default'].modulePrefix,\n podModulePrefix: config['default'].podModulePrefix,\n Resolver: Resolver['default']\n });\n\n loadInitializers['default'](App, config['default'].modulePrefix);\n\n exports['default'] = App;\n\n});","define('dummy/ember-cli-test-imagine-api/tests/modules/ember-cli-test-imagine-api/imagine', ['exports', 'ember'], function (exports, Ember) {\n\n 'use strict';\n\n var Imagine;\n\n Imagine = (function () {\n function Imagine() {}\n\n Imagine.verbose = true;\n\n Imagine.server = null;\n\n Imagine.api = null;\n\n Imagine.call_history = null;\n\n Imagine.setApi = function (api) {\n return this.api = api;\n };\n\n Imagine._ensure_prentender = function () {\n if (!this.server) {\n this.call_history = {};\n this.server = sinon.fakeServer.create();\n this.server.autoRespondAfter = 2;\n return this.server.autoRespond = true;\n }\n };\n\n Imagine.callCount = function (verb, resource) {\n var ref, ref1;\n verb = verb.toUpperCase();\n if ((ref = this.call_history[verb]) != null ? (ref1 = ref[resource]) != null ? ref1['count'] : void 0 : void 0) {\n return this.call_history[verb][resource]['count'];\n } else {\n return 0;\n }\n };\n\n Imagine.requestDataHistory = function (verb, resource) {\n var ref, ref1;\n verb = verb.toUpperCase();\n if ((ref = this.call_history[verb]) != null ? (ref1 = ref[resource]) != null ? ref1['requests'] : void 0 : void 0) {\n return this.call_history[verb][resource]['requests'];\n } else {\n return [];\n }\n };\n\n Imagine.lastRequestData = function (verb, resource) {\n var requests;\n requests = this.requestDataHistory(verb, resource);\n if (requests.length > 0) {\n return requests[requests.length - 1];\n } else {\n return void 0;\n }\n };\n\n Imagine.called = function (verb, resource) {\n return this.callCount(verb, resource) > 0;\n };\n\n Imagine.json = function (opts) {\n var api, headers, method, results;\n this._ensure_prentender();\n headers = {\n \"Content-Type\": \"application/json\"\n };\n results = [];\n for (method in opts) {\n api = opts[method];\n results.push((function (_this) {\n return function (method, api) {\n var apiKey, response, results1;\n results1 = [];\n for (apiKey in api) {\n response = api[apiKey];\n results1.push((function (apiKey, response) {\n var http_verb, resource_location, response_body;\n http_verb = method.toUpperCase();\n if (_this.api[apiKey]) {\n response_body = JSON.stringify(response.body);\n resource_location = _this.api[apiKey];\n if (_this.verbose) {\n console.log(\"ImagineApi: Created Mock : method: \" + http_verb + \" \" + resource_location + \" [\" + response.status + \",\" + JSON.stringify(headers) + \",\" + response_body + \"]\");\n }\n return _this.server.respondWith(http_verb, resource_location, function (xhr, id) {\n var base, base1, base2, base3;\n if (_this.verbose) {\n console.log(\"--- ImagineApi: Responding with : method: \" + http_verb + \" \" + resource_location + \" [\" + response.status + \",\" + JSON.stringify(headers) + \",\" + response_body + \"]\");\n }\n (base = _this.call_history)[http_verb] || (base[http_verb] = {});\n (base1 = _this.call_history[http_verb])[apiKey] || (base1[apiKey] = {});\n (base2 = _this.call_history[http_verb][apiKey])['count'] || (base2['count'] = 0);\n _this.call_history[http_verb][apiKey]['count']++;\n (base3 = _this.call_history[http_verb][apiKey])['requests'] || (base3['requests'] = []);\n return Ember['default'].run(function () {\n var content_type, obj;\n content_type = xhr.requestHeaders[\"Content-Type\"];\n if ((content_type != null ? content_type.indexOf(\"json\") : void 0) > -1) {\n obj = JSON.parse(xhr.requestBody);\n _this.call_history[http_verb][apiKey]['requests'].push(obj);\n } else {\n if (_this.verbose) {\n console.log(\"- WARN - ImagineApi.json Request Expected Content-Type JSON not found; Found \" + content_type);\n }\n _this.call_history[http_verb][apiKey]['requests'].push(xhr.requestBody);\n }\n return xhr.respond(response.status, headers, response_body);\n });\n });\n } else {\n return console.log(apiKey + \" is not specified in \" + _this.api);\n }\n })(apiKey, response));\n }\n return results1;\n };\n })(this)(method, api));\n }\n return results;\n };\n\n Imagine.stop = function () {\n if (this.server) {\n this.server.restore();\n return this.server = null;\n }\n };\n\n return Imagine;\n })();\n\n exports['default'] = Imagine;\n\n});","define('dummy/initializers/app-version', ['exports', 'dummy/config/environment', 'ember'], function (exports, config, Ember) {\n\n 'use strict';\n\n var classify = Ember['default'].String.classify;\n var registered = false;\n\n exports['default'] = {\n name: 'App Version',\n initialize: function initialize(container, application) {\n if (!registered) {\n var appName = classify(application.toString());\n Ember['default'].libraries.register(appName, config['default'].APP.version);\n registered = true;\n }\n }\n };\n\n});","define('dummy/initializers/export-application-global', ['exports', 'ember', 'dummy/config/environment'], function (exports, Ember, config) {\n\n 'use strict';\n\n exports.initialize = initialize;\n\n function initialize(container, application) {\n if (config['default'].exportApplicationGlobal !== false) {\n var value = config['default'].exportApplicationGlobal;\n var globalName;\n\n if (typeof value === 'string') {\n globalName = value;\n } else {\n globalName = Ember['default'].String.classify(config['default'].modulePrefix);\n }\n\n if (!window[globalName]) {\n window[globalName] = application;\n\n application.reopen({\n willDestroy: function willDestroy() {\n this._super.apply(this, arguments);\n delete window[globalName];\n }\n });\n }\n }\n }\n\n ;\n\n exports['default'] = {\n name: 'export-application-global',\n\n initialize: initialize\n };\n\n});","define('dummy/router', ['exports', 'ember', 'dummy/config/environment'], function (exports, Ember, config) {\n\n 'use strict';\n\n var Router = Ember['default'].Router.extend({\n location: config['default'].locationType\n });\n\n exports['default'] = Router.map(function () {});\n\n});","define('dummy/templates/application', ['exports'], function (exports) {\n\n 'use strict';\n\n exports['default'] = Ember.HTMLBars.template((function() {\n return {\n isHTMLBars: true,\n revision: \"Ember@1.11.1\",\n blockParams: 0,\n cachedFragment: null,\n hasRendered: false,\n build: function build(dom) {\n var el0 = dom.createDocumentFragment();\n var el1 = dom.createElement(\"h2\");\n dom.setAttribute(el1,\"id\",\"title\");\n var el2 = dom.createTextNode(\"Welcome to Ember.js\");\n dom.appendChild(el1, el2);\n dom.appendChild(el0, el1);\n var el1 = dom.createTextNode(\"\\n\\n\");\n dom.appendChild(el0, el1);\n var el1 = dom.createComment(\"\");\n dom.appendChild(el0, el1);\n var el1 = dom.createTextNode(\"\\n\");\n dom.appendChild(el0, el1);\n return el0;\n },\n render: function render(context, env, contextualElement) {\n var dom = env.dom;\n var hooks = env.hooks, content = hooks.content;\n dom.detectNamespace(contextualElement);\n var fragment;\n if (env.useFragmentCache && dom.canClone) {\n if (this.cachedFragment === null) {\n fragment = this.build(dom);\n if (this.hasRendered) {\n this.cachedFragment = fragment;\n } else {\n this.hasRendered = true;\n }\n }\n if (this.cachedFragment) {\n fragment = dom.cloneNode(this.cachedFragment, true);\n }\n } else {\n fragment = this.build(dom);\n }\n var morph0 = dom.createMorphAt(fragment,2,2,contextualElement);\n content(env, morph0, context, \"outlet\");\n return fragment;\n }\n };\n }()));\n\n});","define('dummy/tests/app.jshint', function () {\n\n 'use strict';\n\n QUnit.module('JSHint - .');\n QUnit.test('app.js should pass jshint', function(assert) { \n assert.ok(true, 'app.js should pass jshint.'); \n });\n\n});","define('dummy/tests/helpers/imagine-api', ['exports', 'ember-cli-test-imagine-api/imagine', 'dummy/config/environment'], function (exports, Imagine, config) {\n\n 'use strict';\n\n Imagine['default'].setApi({\n resource: 'http://host:3333/resource'\n });\n\n exports['default'] = Imagine['default'];\n\n});","define('dummy/tests/helpers/resolver', ['exports', 'ember/resolver', 'dummy/config/environment'], function (exports, Resolver, config) {\n\n 'use strict';\n\n var resolver = Resolver['default'].create();\n\n resolver.namespace = {\n modulePrefix: config['default'].modulePrefix,\n podModulePrefix: config['default'].podModulePrefix\n };\n\n exports['default'] = resolver;\n\n});","define('dummy/tests/helpers/resolver.jshint', function () {\n\n 'use strict';\n\n QUnit.module('JSHint - helpers');\n QUnit.test('helpers/resolver.js should pass jshint', function(assert) { \n assert.ok(true, 'helpers/resolver.js should pass jshint.'); \n });\n\n});","define('dummy/tests/helpers/start-app', ['exports', 'ember', 'dummy/app', 'dummy/router', 'dummy/config/environment'], function (exports, Ember, Application, Router, config) {\n\n 'use strict';\n\n\n\n exports['default'] = startApp;\n function startApp(attrs) {\n var application;\n\n var attributes = Ember['default'].merge({}, config['default'].APP);\n attributes = Ember['default'].merge(attributes, attrs); // use defaults, but you can override;\n\n Ember['default'].run(function () {\n application = Application['default'].create(attributes);\n application.setupForTesting();\n application.injectTestHelpers();\n });\n\n return application;\n }\n\n});","define('dummy/tests/helpers/start-app.jshint', function () {\n\n 'use strict';\n\n QUnit.module('JSHint - helpers');\n QUnit.test('helpers/start-app.js should pass jshint', function(assert) { \n assert.ok(true, 'helpers/start-app.js should pass jshint.'); \n });\n\n});","define('dummy/tests/router.jshint', function () {\n\n 'use strict';\n\n QUnit.module('JSHint - .');\n QUnit.test('router.js should pass jshint', function(assert) { \n assert.ok(true, 'router.js should pass jshint.'); \n });\n\n});","define('dummy/tests/test-helper', ['dummy/tests/helpers/resolver', 'ember-qunit'], function (resolver, ember_qunit) {\n\n\t'use strict';\n\n\tember_qunit.setResolver(resolver['default']);\n\n});","define('dummy/tests/test-helper.jshint', function () {\n\n 'use strict';\n\n QUnit.module('JSHint - .');\n QUnit.test('test-helper.js should pass jshint', function(assert) { \n assert.ok(true, 'test-helper.js should pass jshint.'); \n });\n\n});","define('dummy/tests/unit/imagine_test', ['ember', 'qunit', 'dummy/tests/helpers/start-app', 'dummy/tests/helpers/imagine-api'], function (Ember, qunit, startApp, imagine) {\n\n 'use strict';\n\n var application;\n\n application = null;\n\n qunit.module(\"Unit: Test Helper : imagine\", {\n beforeEach: function beforeEach() {\n application = startApp['default']();\n\n /*\n Don't return as Ember.Application.then is deprecated.\n Newer version of QUnit uses the return value's .then\n function to wait for promises if it exists.\n */\n },\n afterEach: function afterEach() {\n imagine['default'].stop();\n return Ember['default'].run(application, 'destroy');\n }\n });\n\n qunit.test(\"default resource from config is avalible\", function (assert) {\n imagine['default'].json({\n get: {\n resource: {\n status: 200,\n body: \"get resource\"\n }\n }\n });\n return $.ajax({\n type: 'GET',\n contentType: 'application/json',\n url: imagine['default'].api.resource\n }).done(function (actual_response) {\n return Ember['default'].run(function () {\n return assert.equal(actual_response, \"get resource\");\n });\n });\n });\n\n qunit.test(\"can assert on the number of times a resource was called\", function (assert) {\n imagine['default'].json({\n get: {\n resource: {\n status: 200,\n body: \"get resource\"\n }\n }\n });\n assert.equal(0, imagine['default'].callCount('get', 'resource'), \"pre-condition is that call count 0\");\n return $.ajax({\n type: 'GET',\n contentType: 'application/json',\n url: imagine['default'].api.resource\n }).done(function (actual_response) {\n return Ember['default'].run(function () {\n return assert.equal(1, imagine['default'].callCount('get', 'resource'), \"post-condition is that call count is 1\");\n });\n });\n });\n\n qunit.test(\"can assert on if the resource was called or not\", function (assert) {\n imagine['default'].json({\n get: {\n resource: {\n status: 200,\n body: \"get resource\"\n }\n }\n });\n return $.ajax({\n type: 'GET',\n contentType: 'application/json',\n url: imagine['default'].api.resource\n }).done(function (actual_response) {\n return Ember['default'].run(function () {\n return assert.ok(imagine['default'].called('get', 'resource'), \"called get resource\");\n });\n });\n });\n\n qunit.test(\"imagine get and post at same url\", function (assert) {\n imagine['default'].api.dancing = \"http://dancing-api.local:123123/dance/v1/disco\";\n imagine['default'].json({\n get: {\n dancing: {\n status: 200,\n body: \"get\"\n }\n },\n post: {\n dancing: {\n status: 200,\n body: \"post\"\n }\n }\n });\n return $.ajax({\n type: 'POST',\n contentType: 'application/json',\n url: imagine['default'].api.dancing\n }).done(function (actual_response) {\n return Ember['default'].run(function () {\n assert.equal(actual_response, \"post\");\n return $.ajax({\n type: 'GET',\n contentType: 'application/json',\n url: imagine['default'].api.dancing\n }).done(function (actual_response) {\n return Ember['default'].run(function () {\n return assert.equal(actual_response, \"get\");\n });\n });\n });\n });\n });\n\n qunit.test(\"#requestDataHistory contains previous requests to resource \", function (assert) {\n var expected_request_object;\n expected_request_object = {\n cake: {\n gluten: false,\n eggs: false,\n dairy: false,\n tasty: true,\n name: \"Yummy Vegan Gluten Free Birthday Cake\"\n }\n };\n imagine['default'].api.cake = \"http://dancing-api.local:123123/cake\";\n imagine['default'].json({\n post: {\n cake: {\n status: 200,\n body: {\n cake: \"New Yummy Vegan Gluten Free Birthday Cake Success\"\n }\n }\n }\n });\n return $.ajax({\n type: \"POST\",\n contentType: 'application/json',\n url: imagine['default'].api.cake,\n data: JSON.stringify(expected_request_object)\n }).done(function (actual_response) {\n var count;\n count = imagine['default'].requestDataHistory('post', 'cake').length;\n assert.equal(count, 1, \"expected 1 request\");\n return $.ajax({\n type: \"POST\",\n contentType: 'application/json',\n url: imagine['default'].api.cake,\n data: JSON.stringify(expected_request_object)\n }).done(function (actual_response) {\n count = imagine['default'].requestDataHistory('post', 'cake').length;\n return assert.equal(count, 2, \"expected multiple requests\");\n });\n });\n });\n\n qunit.test(\"#lastRequestData contains previous request to resource \", function (assert) {\n var expected_request_object;\n expected_request_object = {\n cake: {\n gluten: false,\n eggs: false,\n dairy: false,\n tasty: true,\n name: \"Yummy Vegan Gluten Free Birthday Cake\"\n }\n };\n imagine['default'].api.cake = \"http://dancing-api.local:123123/cake\";\n imagine['default'].json({\n post: {\n cake: {\n status: 200,\n body: {\n cake: \"New Yummy Vegan Gluten Free Birthday Cake Success\"\n }\n }\n }\n });\n return $.ajax({\n type: \"POST\",\n contentType: 'application/json',\n url: imagine['default'].api.cake,\n data: JSON.stringify(expected_request_object)\n }).done(function (actual_response) {\n var lastRequest;\n lastRequest = imagine['default'].lastRequestData('post', 'cake');\n return assert.deepEqual(lastRequest, expected_request_object);\n });\n });\n\n qunit.test(\"imagine with large hash structure\", function (assert) {\n var expected_response_object;\n expected_response_object = {\n sub_total: {\n currency: \"USD\",\n amount: 608,\n display_amount: \"USD 6.08\",\n display_currency: \"USD\",\n amount_str: \"6.08\"\n },\n fee_items: [{\n type_note: \"USD1->LLD0\",\n amount: 30,\n currency: \"USD\",\n display_amount: \"USD 0.30\",\n display_currency: \"USD\",\n amount_str: \"0.30\"\n }],\n total: {\n currency: \"USD\",\n amount: 638,\n display_amount: \"USD 6.38\",\n display_currency: \"USD\",\n amount_str: \"6.38\"\n },\n order_item_id: 1,\n status: 200\n };\n imagine['default'].api.dancing = \"http://dancing-api.local:123123/dance/v1/disco\";\n imagine['default'].json({\n post: {\n dancing: {\n status: 200,\n body: expected_response_object\n }\n }\n });\n return $.ajax({\n type: 'POST',\n contentType: 'application/json',\n url: imagine['default'].api.dancing\n }).done(function (actual_response) {\n return Ember['default'].run(function () {\n return assert.deepEqual(actual_response, expected_response_object);\n });\n });\n });\n\n});","/* jshint ignore:start */\n\n/* jshint ignore:end */\n","/* jshint ignore:start */\n\ndefine('dummy/config/environment', ['ember'], function(Ember) {\n var prefix = 'dummy';\n/* jshint ignore:start */\n\ntry {\n var metaName = prefix + '/config/environment';\n var rawConfig = Ember['default'].$('meta[name=\"' + metaName + '\"]').attr('content');\n var config = JSON.parse(unescape(rawConfig));\n\n return { 'default': config };\n}\ncatch(err) {\n throw new Error('Could not read config from meta tag with name \"' + metaName + '\".');\n}\n\n/* jshint ignore:end */\n\n});\n\nif (runningTests) {\n require(\"dummy/tests/test-helper\");\n} else {\n require(\"dummy/app\")[\"default\"].create({\"name\":\"ember-cli-test-imagine-api\",\"version\":\"1.13.0.14246ac7\"});\n}\n\n/* jshint ignore:end */\n"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrPA;AACA;AACA;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;","file":"dummy.js"}