diff --git a/CHANGELOG.md b/CHANGELOG.md index cbdfec45..9856d68f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,16 @@ +##### 2.10.0 - 22 September 2016 + +###### Backwards compatible changes +- #324 - Added `applyDefaultsOnInject` option, which defaults to `false` +- #364 - Added `usePendingFind` and `usePendingFindAll` options, which both default to `true` + +###### Bug fixes +- #316 - Merge/Replace inject does not reevaluate computed properties +- #324 - Inconsistent defaultValues behavior. +- #364 - Resource.pendingQueries on server causes unexpected behaviour +- #373 - DS.clear() extremely slow +- #407 - DSUtils.copy blacklist applies to nested fields + ##### 2.9.0 - 17 February 2016 ###### Backwards compatible bug API changes diff --git a/README.md b/README.md index 48368864..04893735 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,10 @@ [![Coverage Status][cov_b]][cov_l] [![Codacy][cod_b]][cod_l] +*JSData 3.x is code complete (waiting on documentation updates to release 3.0.0 stable). Read more in the [3.x docs](http://www.js-data.io/v3.0/docs).* + +----- + Inspired by [Ember Data][ember], __JSData__ is the model layer you've been craving. It consists of a convenient __framework-agnostic__, __in-memory store__ for managing your data, which uses __adapters__ to communicate with various diff --git a/dist/js-data-debug.js b/dist/js-data-debug.js index 2a6fad1f..d431d423 100644 --- a/dist/js-data-debug.js +++ b/dist/js-data-debug.js @@ -1,6 +1,6 @@ /*! * js-data - * @version 2.9.0 - Homepage + * @version 2.10.0 - Homepage * @author Jason Dobry * @copyright (c) 2014-2016 Jason Dobry * @license MIT @@ -95,9 +95,9 @@ return /******/ (function(modules) { // webpackBootstrap }, version: { - full: '2.9.0', + full: '2.10.0', major: parseInt('2', 10), - minor: parseInt('9', 10), + minor: parseInt('10', 10), patch: parseInt('0', 10), alpha: true ? 'false' : false, beta: true ? 'false' : false @@ -226,6 +226,7 @@ return /******/ (function(modules) { // webpackBootstrap defaultsPrototype.afterUpdate = lifecycleNoopCb; defaultsPrototype.afterValidate = lifecycleNoopCb; defaultsPrototype.allowSimpleWhere = true; + defaultsPrototype.applyDefaultsOnInject = false; defaultsPrototype.basePath = ''; defaultsPrototype.beforeCreate = lifecycleNoopCb; defaultsPrototype.beforeCreateCollection = lifecycleNoop; @@ -287,6 +288,8 @@ return /******/ (function(modules) { // webpackBootstrap defaultsPrototype.upsert = !!_utils2.default.w; defaultsPrototype.useClass = true; defaultsPrototype.useFilter = false; + defaultsPrototype.usePendingFind = true; + defaultsPrototype.usePendingFindAll = true; defaultsPrototype.validate = lifecycleNoopCb; defaultsPrototype.watchChanges = !!_utils2.default.w; @@ -305,7 +308,7 @@ return /******/ (function(modules) { // webpackBootstrap defaultsPrototype.defaultFilter = function (collection, resourceName, params, options) { var definition = this.definitions[resourceName]; var idA = 'id'; - var resource = undefined; + var resource = void 0; if (definition) { idA = definition.idAttribute; resource = this.store[resourceName]; @@ -360,59 +363,59 @@ return /******/ (function(modules) { // webpackBootstrap }; } _utils2.default.forOwn(clause, function (term, op) { - var expr = undefined; + var expr = void 0; var isOr = op[0] === '|'; var val = _utils2.default.get(attrs, field); op = isOr ? op.substr(1) : op; if (op === '==') { expr = val == term; // eslint-disable-line } else if (op === '===') { - expr = val === term; - } else if (op === '!=') { - expr = val != term; // eslint-disable-line - } else if (op === '!==') { - expr = val !== term; - } else if (op === '>') { - expr = val > term; - } else if (op === '>=') { - expr = val >= term; - } else if (op === '<') { - expr = val < term; - } else if (op === '<=') { - expr = val <= term; - } else if (op === 'isectEmpty') { - expr = !_utils2.default.intersection(val || [], term || []).length; - } else if (op === 'isectNotEmpty') { - expr = _utils2.default.intersection(val || [], term || []).length; - } else if (op === 'in') { - if (_utils2.default._s(term)) { - expr = term.indexOf(val) !== -1; - } else { - expr = _utils2.default.contains(term, val); - } - } else if (op === 'notIn') { - if (_utils2.default._s(term)) { - expr = term.indexOf(val) === -1; - } else { - expr = !_utils2.default.contains(term, val); - } - } else if (op.indexOf('like') === 0) { - expr = like(term, op.substr(4)).exec(val) !== null; - } else if (op.indexOf('notLike') === 0) { - expr = like(term, op.substr(7)).exec(val) === null; - } else if (op === 'contains') { - if (_utils2.default._s(val)) { - expr = val.indexOf(term) !== -1; - } else { - expr = _utils2.default.contains(val, term); - } - } else if (op === 'notContains') { - if (_utils2.default._s(val)) { - expr = val.indexOf(term) === -1; - } else { - expr = !_utils2.default.contains(val, term); - } - } + expr = val === term; + } else if (op === '!=') { + expr = val != term; // eslint-disable-line + } else if (op === '!==') { + expr = val !== term; + } else if (op === '>') { + expr = val > term; + } else if (op === '>=') { + expr = val >= term; + } else if (op === '<') { + expr = val < term; + } else if (op === '<=') { + expr = val <= term; + } else if (op === 'isectEmpty') { + expr = !_utils2.default.intersection(val || [], term || []).length; + } else if (op === 'isectNotEmpty') { + expr = _utils2.default.intersection(val || [], term || []).length; + } else if (op === 'in') { + if (_utils2.default._s(term)) { + expr = term.indexOf(val) !== -1; + } else { + expr = _utils2.default.contains(term, val); + } + } else if (op === 'notIn') { + if (_utils2.default._s(term)) { + expr = term.indexOf(val) === -1; + } else { + expr = !_utils2.default.contains(term, val); + } + } else if (op.indexOf('like') === 0) { + expr = like(term, op.substr(4)).exec(val) !== null; + } else if (op.indexOf('notLike') === 0) { + expr = like(term, op.substr(7)).exec(val) === null; + } else if (op === 'contains') { + if (_utils2.default._s(val)) { + expr = val.indexOf(term) !== -1; + } else { + expr = _utils2.default.contains(val, term); + } + } else if (op === 'notContains') { + if (_utils2.default._s(val)) { + expr = val.indexOf(term) === -1; + } else { + expr = !_utils2.default.contains(val, term); + } + } if (expr !== undefined) { keep = first ? expr : isOr ? keep || expr : keep && expr; } @@ -679,9 +682,9 @@ return /******/ (function(modules) { // webpackBootstrap var set = __webpack_require__(27); var observe = __webpack_require__(29); var guid = __webpack_require__(30); - var w = undefined, - P = undefined, - File = undefined; + var w = void 0, + P = void 0, + File = void 0; var objectProto = Object.prototype; var toString = objectProto.toString; @@ -782,7 +785,7 @@ return /******/ (function(modules) { // webpackBootstrap return []; } var result = []; - var item = undefined; + var item = void 0; for (var i = 0, length = array1.length; i < length; i++) { item = array1[i]; if (contains(result, item)) { @@ -915,9 +918,9 @@ return /******/ (function(modules) { // webpackBootstrap stackDest.push(destination); } - var result = undefined; + var result = void 0; if (isArray(source)) { - var i = undefined; + var i = void 0; destination.length = 0; for (i = 0; i < source.length; i++) { result = copy(source[i], null, stackSource, stackDest, blacklist); @@ -993,26 +996,26 @@ return /******/ (function(modules) { // webpackBootstrap } else if (isRegExp(o1) && isRegExp(o2)) { return o1.toString() == o2.toString(); // eslint-disable-line } else { - if (isArray(o2)) { - return false; + if (isArray(o2)) { + return false; + } + keySet = {}; + for (key in o1) { + if (key.charAt(0) === '$' || isFunction(o1[key])) { + continue; } - keySet = {}; - for (key in o1) { - if (key.charAt(0) === '$' || isFunction(o1[key])) { - continue; - } - if (!equals(o1[key], o2[key])) { - return false; - } - keySet[key] = true; + if (!equals(o1[key], o2[key])) { + return false; } - for (key in o2) { - if (!keySet.hasOwnProperty(key) && key.charAt(0) !== '$' && o2[key] !== undefined && !isFunction(o2[key])) { - return false; - } + keySet[key] = true; + } + for (key in o2) { + if (!keySet.hasOwnProperty(key) && key.charAt(0) !== '$' && o2[key] !== undefined && !isFunction(o2[key])) { + return false; } - return true; } + return true; + } } } return false; @@ -1244,8 +1247,8 @@ return /******/ (function(modules) { // webpackBootstrap // Return a copy of "object" with cycles removed. removeCircular: function removeCircular(object) { return function rmCirc(value, ctx) { - var i = undefined; - var nu = undefined; + var i = void 0; + var nu = void 0; if ((typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value !== null && !(value instanceof Boolean) && !(value instanceof Date) && !(value instanceof Number) && !(value instanceof RegExp) && !(value instanceof String) && (!File || !(value instanceof File))) { // check if current object points back to itself @@ -1436,14 +1439,13 @@ return /******/ (function(modules) { // webpackBootstrap /** * Thrown during a method call when an argument passed into the method is invalid. */ - var IllegalArgumentError = function (_Error) { _inherits(IllegalArgumentError, _Error); function IllegalArgumentError(message) { _classCallCheck(this, IllegalArgumentError); - var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(IllegalArgumentError).call(this)); + var _this = _possibleConstructorReturn(this, (IllegalArgumentError.__proto__ || Object.getPrototypeOf(IllegalArgumentError)).call(this)); if (typeof Error.captureStackTrace === 'function') { Error.captureStackTrace(_this, _this.constructor); @@ -1467,7 +1469,7 @@ return /******/ (function(modules) { // webpackBootstrap function RuntimeError(message) { _classCallCheck(this, RuntimeError); - var _this2 = _possibleConstructorReturn(this, Object.getPrototypeOf(RuntimeError).call(this)); + var _this2 = _possibleConstructorReturn(this, (RuntimeError.__proto__ || Object.getPrototypeOf(RuntimeError)).call(this)); if (typeof Error.captureStackTrace === 'function') { Error.captureStackTrace(_this2, _this2.constructor); @@ -1491,7 +1493,7 @@ return /******/ (function(modules) { // webpackBootstrap function NonexistentResourceError(resourceName) { _classCallCheck(this, NonexistentResourceError); - var _this3 = _possibleConstructorReturn(this, Object.getPrototypeOf(NonexistentResourceError).call(this)); + var _this3 = _possibleConstructorReturn(this, (NonexistentResourceError.__proto__ || Object.getPrototypeOf(NonexistentResourceError)).call(this)); if (typeof Error.captureStackTrace === 'function') { Error.captureStackTrace(_this3, _this3.constructor); @@ -1517,213 +1519,152 @@ return /******/ (function(modules) { // webpackBootstrap /* 4 */ /***/ function(module, exports, __webpack_require__) { - /*! - * yabh - * @version 1.1.0 - Homepage - * @author Jason Dobry - * @copyright (c) 2015 Jason Dobry - * @license MIT - * - * @overview Yet another Binary Heap. - */ - (function webpackUniversalModuleDefinition(root, factory) { - if(true) - module.exports = factory(); - else if(typeof define === 'function' && define.amd) - define("yabh", factory); - else if(typeof exports === 'object') - exports["BinaryHeap"] = factory(); - else - root["BinaryHeap"] = factory(); - })(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] = { - /******/ exports: {}, - /******/ id: moduleId, - /******/ loaded: false - /******/ }; - - /******/ // Execute the module function - /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); - - /******/ // Flag the module as loaded - /******/ module.loaded = 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; - - /******/ // __webpack_public_path__ - /******/ __webpack_require__.p = ""; - - /******/ // Load entry module and return exports - /******/ return __webpack_require__(0); - /******/ }) - /************************************************************************/ - /******/ ([ - /* 0 */ - /***/ function(module, exports, __webpack_require__) { - - /** - * @method bubbleUp - * @param {array} heap The heap. - * @param {function} weightFunc The weight function. - * @param {number} n The index of the element to bubble up. - */ - function bubbleUp(heap, weightFunc, n) { - var element = heap[n]; - var weight = weightFunc(element); - // When at 0, an element can not go up any further. - while (n > 0) { - // Compute the parent element's index, and fetch it. - var parentN = Math.floor((n + 1) / 2) - 1; - var _parent = heap[parentN]; - // If the parent has a lesser weight, things are in order and we - // are done. - if (weight >= weightFunc(_parent)) { - break; - } else { - heap[parentN] = element; - heap[n] = _parent; - n = parentN; - } - } - } - - /** - * @method bubbleDown - * @param {array} heap The heap. - * @param {function} weightFunc The weight function. - * @param {number} n The index of the element to sink down. - */ - var bubbleDown = function bubbleDown(heap, weightFunc, n) { - var length = heap.length; - var node = heap[n]; - var nodeWeight = weightFunc(node); - - while (true) { - var child2N = (n + 1) * 2, - child1N = child2N - 1; - var swap = null; - if (child1N < length) { - var child1 = heap[child1N], - child1Weight = weightFunc(child1); - // If the score is less than our node's, we need to swap. - if (child1Weight < nodeWeight) { - swap = child1N; - } - } - // Do the same checks for the other child. - if (child2N < length) { - var child2 = heap[child2N], - child2Weight = weightFunc(child2); - if (child2Weight < (swap === null ? nodeWeight : weightFunc(heap[child1N]))) { - swap = child2N; - } - } - - if (swap === null) { - break; - } else { - heap[n] = heap[swap]; - heap[swap] = node; - n = swap; - } - } - }; - - function BinaryHeap(weightFunc, compareFunc) { - if (!weightFunc) { - weightFunc = function (x) { - return x; - }; - } - if (!compareFunc) { - compareFunc = function (x, y) { - return x === y; - }; - } - if (typeof weightFunc !== 'function') { - throw new Error('BinaryHeap([weightFunc][, compareFunc]): "weightFunc" must be a function!'); - } - if (typeof compareFunc !== 'function') { - throw new Error('BinaryHeap([weightFunc][, compareFunc]): "compareFunc" must be a function!'); - } - this.weightFunc = weightFunc; - this.compareFunc = compareFunc; - this.heap = []; - } - - var BHProto = BinaryHeap.prototype; - - BHProto.push = function (node) { - this.heap.push(node); - bubbleUp(this.heap, this.weightFunc, this.heap.length - 1); - }; - - BHProto.peek = function () { - return this.heap[0]; - }; - - BHProto.pop = function () { - var front = this.heap[0]; - var end = this.heap.pop(); - if (this.heap.length > 0) { - this.heap[0] = end; - bubbleDown(this.heap, this.weightFunc, 0); - } - return front; - }; - - BHProto.remove = function (node) { - var length = this.heap.length; - for (var i = 0; i < length; i++) { - if (this.compareFunc(this.heap[i], node)) { - var removed = this.heap[i]; - var end = this.heap.pop(); - if (i !== length - 1) { - this.heap[i] = end; - bubbleUp(this.heap, this.weightFunc, i); - bubbleDown(this.heap, this.weightFunc, i); - } - return removed; - } - } - return null; - }; - - BHProto.removeAll = function () { - this.heap = []; - }; - - BHProto.size = function () { - return this.heap.length; - }; - - module.exports = BinaryHeap; - - /***/ } - /******/ ]) - }); - ; + (function (global, factory) { + true ? module.exports = factory() : + typeof define === 'function' && define.amd ? define('yabh', factory) : + (global.BinaryHeap = factory()); + }(this, function () { 'use strict'; + + /** + * @method bubbleUp + * @param {array} heap The heap. + * @param {function} weightFunc The weight function. + * @param {number} n The index of the element to bubble up. + */ + var bubbleUp = function bubbleUp(heap, weightFunc, n) { + var element = heap[n]; + var weight = weightFunc(element); + // When at 0, an element can not go up any further. + while (n > 0) { + // Compute the parent element's index, and fetch it. + var parentN = Math.floor((n + 1) / 2) - 1; + var parent = heap[parentN]; + // If the parent has a lesser weight, things are in order and we + // are done. + if (weight >= weightFunc(parent)) { + break; + } else { + heap[parentN] = element; + heap[n] = parent; + n = parentN; + } + } + }; + + /** + * @method bubbleDown + * @param {array} heap The heap. + * @param {function} weightFunc The weight function. + * @param {number} n The index of the element to sink down. + */ + var bubbleDown = function bubbleDown(heap, weightFunc, n) { + var length = heap.length; + var node = heap[n]; + var nodeWeight = weightFunc(node); + + while (true) { + var child2N = (n + 1) * 2; + var child1N = child2N - 1; + var swap = null; + if (child1N < length) { + var child1 = heap[child1N]; + var child1Weight = weightFunc(child1); + // If the score is less than our node's, we need to swap. + if (child1Weight < nodeWeight) { + swap = child1N; + } + } + // Do the same checks for the other child. + if (child2N < length) { + var child2 = heap[child2N]; + var child2Weight = weightFunc(child2); + if (child2Weight < (swap === null ? nodeWeight : weightFunc(heap[child1N]))) { + swap = child2N; + } + } + + if (swap === null) { + break; + } else { + heap[n] = heap[swap]; + heap[swap] = node; + n = swap; + } + } + }; + + function BinaryHeap(weightFunc, compareFunc) { + if (!weightFunc) { + weightFunc = function weightFunc(x) { + return x; + }; + } + if (!compareFunc) { + compareFunc = function compareFunc(x, y) { + return x === y; + }; + } + if (typeof weightFunc !== 'function') { + throw new Error('BinaryHeap([weightFunc][, compareFunc]): "weightFunc" must be a function!'); + } + if (typeof compareFunc !== 'function') { + throw new Error('BinaryHeap([weightFunc][, compareFunc]): "compareFunc" must be a function!'); + } + this.weightFunc = weightFunc; + this.compareFunc = compareFunc; + this.heap = []; + } + + var BHProto = BinaryHeap.prototype; + + BHProto.push = function (node) { + this.heap.push(node); + bubbleUp(this.heap, this.weightFunc, this.heap.length - 1); + }; + + BHProto.peek = function () { + return this.heap[0]; + }; + + BHProto.pop = function () { + var front = this.heap[0]; + var end = this.heap.pop(); + if (this.heap.length > 0) { + this.heap[0] = end; + bubbleDown(this.heap, this.weightFunc, 0); + } + return front; + }; + + BHProto.remove = function (node) { + var length = this.heap.length; + for (var i = 0; i < length; i++) { + if (this.compareFunc(this.heap[i], node)) { + var removed = this.heap[i]; + var end = this.heap.pop(); + if (i !== length - 1) { + this.heap[i] = end; + bubbleUp(this.heap, this.weightFunc, i); + bubbleDown(this.heap, this.weightFunc, i); + } + return removed; + } + } + return null; + }; + + BHProto.removeAll = function () { + this.heap = []; + }; + + BHProto.size = function () { + return this.heap.length; + }; + + return BinaryHeap; + + })); + //# sourceMappingURL=yabh.js.map /***/ }, /* 5 */ @@ -3249,7 +3190,6 @@ return /******/ (function(modules) { // webpackBootstrap // @param options Optional configuration. // @param options.ignoredChanges Array of strings or regular expressions of fields, the changes of which are to be ignored. // @returns The changes of the given item, if any. - changes: function changes(resourceName, id, options) { var _check$call = check.call(this, 'changes', resourceName, id, options); @@ -3343,7 +3283,14 @@ return /******/ (function(modules) { // webpackBootstrap var resource = _this.store[_resourceName]; var item = _this.store[_resourceName].index[_id]; if (item) { - resource.previousAttributes[_id] = _utils2.default.copy(item, null, null, null, definition.relationFields); + var relationFields = definition.relationFields || []; + var previousAttributes = {}; + for (var key in item) { + if (relationFields.indexOf(key) === -1) { + previousAttributes[key] = _utils2.default.copy(item[key], null, null, null, []); + } + } + resource.previousAttributes[_id] = previousAttributes; } if (resource.changeHistories[_id].length) { @@ -3389,11 +3336,11 @@ return /******/ (function(modules) { // webpackBootstrap // @param resourceName The name of the type of resource of which to create an instance. // @param attrs Hash of properties with which to initialize the instance. // @param options Optional configuration. - // @param options.defaults Default values with which to initialize the instance. + // @param options.defaultValues Default values with which to initialize the instance. // @returns The new instance. createInstance: function createInstance(resourceName, attrs, options) { var definition = this.definitions[resourceName]; - var item = undefined; + var item = void 0; attrs = attrs || {}; @@ -3717,7 +3664,7 @@ return /******/ (function(modules) { // webpackBootstrap if (!instance) { return { - v: undefined + v: void 0 }; } @@ -4113,7 +4060,7 @@ return /******/ (function(modules) { // webpackBootstrap def.beforeDestroy = _utils2.default.promisify(def.beforeDestroy); def.afterDestroy = _utils2.default.promisify(def.afterDestroy); - var defaultAdapter = undefined; + var defaultAdapter = void 0; if (def.hasOwnProperty('defaultAdapter')) { defaultAdapter = def.defaultAdapter; } @@ -4220,7 +4167,7 @@ return /******/ (function(modules) { // webpackBootstrap var DSUtils = _this.utils; var definition = _this.definitions[resourceName]; var resource = _this.store[resourceName]; - var item = undefined; + var item = void 0; var found = false; id = DSUtils.resolveId(definition, id); @@ -4345,12 +4292,14 @@ return /******/ (function(modules) { // webpackBootstrap var queryHash = DSUtils.toJson(params); // get items that match the criteria - var items = definition.filter(params); + var items = void 0; if (DSUtils.isEmpty(params)) { + items = definition.getAll(); // remove all completed queries if ejecting all items resource.completedQueries = {}; } else { + items = definition.filter(params); // remove matching completed query, if any delete resource.completedQueries[queryHash]; } @@ -4452,7 +4401,7 @@ return /******/ (function(modules) { // webpackBootstrap */ return function _react(added, removed, changed, oldValueFn, firstTime) { var target = this; - var item = undefined; + var item = void 0; // Get the previous primary key of the observed item, in-case some knucklehead changed it var innerId = oldValueFn && oldValueFn(definition.idAttribute) ? oldValueFn(definition.idAttribute) : target[definition.idAttribute]; @@ -4533,7 +4482,7 @@ return /******/ (function(modules) { // webpackBootstrap */ function _inject(definition, resource, attrs, options) { var _this = this; - var injected = undefined; + var injected = void 0; if (_utils2.default._a(attrs)) { // have an array of objects, go ahead and inject each one individually and return the resulting array @@ -4628,6 +4577,9 @@ return /******/ (function(modules) { // webpackBootstrap item = attrs; } else { item = new definition[definition['class']](); + if (options.applyDefaultsOnInject && options.defaultValues) { + _utils2.default.deepMixIn(item, _utils2.default.copy(options.defaultValues)); + } } if (definition.instanceEvents && typeof item.emit !== 'function') { @@ -4671,7 +4623,13 @@ return /******/ (function(modules) { // webpackBootstrap // new properties take precedence if (options.onConflict === 'merge') { _utils2.default.deepMixIn(item, attrs); + _utils2.default.forOwn(definition.computed, function (fn, field) { + _utils2.default.compute.call(item, fn, field); + }); } else if (options.onConflict === 'replace') { + _utils2.default.forOwn(definition.computed, function (fn, field) { + _utils2.default.compute.call(attrs, fn, field); + }); _utils2.default.forOwn(item, function (v, k) { if (k !== definition.idAttribute) { if (!attrs.hasOwnProperty(k)) { @@ -4731,7 +4689,7 @@ return /******/ (function(modules) { // webpackBootstrap var _this = this; var definition = _this.definitions[resourceName]; var resource = _this.store[resourceName]; - var injected = undefined; + var injected = void 0; if (!definition) { throw new _errors2.default.NER(resourceName); @@ -4865,12 +4823,12 @@ return /******/ (function(modules) { // webpackBootstrap var DSUtils = _this.utils; var definition = _this.definitions[resourceName]; var resource = _this.store[resourceName]; - var adapter = undefined; + var adapter = void 0; options = options || {}; attrs = attrs || {}; - var rejectionError = undefined; + var rejectionError = void 0; if (!definition) { rejectionError = new _this.errors.NER(resourceName); } else if (!DSUtils._o(attrs)) { @@ -4951,8 +4909,8 @@ return /******/ (function(modules) { // webpackBootstrap var _this = this; var DSUtils = _this.utils; var definition = _this.definitions[resourceName]; - var item = undefined, - adapter = undefined; + var item = void 0, + adapter = void 0; return new DSUtils.Promise(function (resolve, reject) { id = DSUtils.resolveId(definition, id); @@ -5021,9 +4979,9 @@ return /******/ (function(modules) { // webpackBootstrap var _this = this; var DSUtils = _this.utils; var definition = _this.definitions[resourceName]; - var ejected = undefined, - toEject = undefined, - adapter = undefined; + var ejected = void 0, + toEject = void 0, + adapter = void 0; params = params || {}; @@ -5099,7 +5057,7 @@ return /******/ (function(modules) { // webpackBootstrap var DSUtils = _this.utils; var definition = _this.definitions[resourceName]; var resource = _this.store[resourceName]; - var adapter = undefined; + var adapter = void 0; return new DSUtils.Promise(function (resolve, reject) { if (!definition) { @@ -5131,8 +5089,9 @@ return /******/ (function(modules) { // webpackBootstrap } }).then(function (item) { if (!item) { - if (!(id in resource.pendingQueries)) { - var promise = undefined; + var usePendingFind = DSUtils.isFunction(options.usePendingFind) ? options.usePendingFind.call(this, resourceName, id, options) : options.usePendingFind; + if (!(id in resource.pendingQueries) && usePendingFind) { + var promise = void 0; var strategy = options.findStrategy || options.strategy; // try subsequent adapters if the preceeding one fails @@ -5247,8 +5206,8 @@ return /******/ (function(modules) { // webpackBootstrap var DSUtils = _this.utils; var definition = _this.definitions[resourceName]; var resource = _this.store[resourceName]; - var queryHash = undefined, - adapter = undefined; + var queryHash = void 0, + adapter = void 0; return new DSUtils.Promise(function (resolve, reject) { params = params || {}; @@ -5294,8 +5253,9 @@ return /******/ (function(modules) { // webpackBootstrap } }).then(function (items) { if (!items) { - if (!(queryHash in resource.pendingQueries)) { - var promise = undefined; + var usePendingFindAll = DSUtils.isFunction(options.usePendingFindAll) ? options.usePendingFindAll.call(this, resourceName, params, options) : options.usePendingFindAll; + if (!(queryHash in resource.pendingQueries) && usePendingFindAll) { + var promise = void 0; var strategy = options.findAllStrategy || options.strategy; // try subsequent adapters if the preceeding one fails @@ -5376,7 +5336,7 @@ return /******/ (function(modules) { // webpackBootstrap var DSErrors = _this.errors; var definition = _this.definitions[resourceName]; - var _options = undefined; + var _options = void 0; return new DSUtils.Promise(function (resolve, reject) { if (DSUtils._sn(instance)) { @@ -5409,7 +5369,7 @@ return /******/ (function(modules) { // webpackBootstrap // relations can be loaded based on resource name or field name if (!relations.length || DSUtils.contains(relations, relationName) || DSUtils.contains(relations, def.localField)) { - var task = undefined; + var task = void 0; var params = {}; if (__options.allowSimpleWhere) { params[def.foreignKey] = instance[definition.idAttribute]; @@ -5509,7 +5469,7 @@ return /******/ (function(modules) { // webpackBootstrap options.logFn('reap', options); var items = []; var now = new Date().getTime(); - var expiredItem = undefined; + var expiredItem = void 0; // find the expired items while ((expiredItem = resource.expiresHeap.peek()) && expiredItem.expires < now) { @@ -5592,9 +5552,9 @@ return /******/ (function(modules) { // webpackBootstrap var definition = _this.definitions[resourceName]; var resource = _this.store[resourceName]; - var item = undefined, - noChanges = undefined, - adapter = undefined; + var item = void 0, + noChanges = void 0, + adapter = void 0; return new DSUtils.Promise(function (resolve, reject) { id = DSUtils.resolveId(definition, id); @@ -5710,7 +5670,7 @@ return /******/ (function(modules) { // webpackBootstrap var DSErrors = _this.errors; var definition = _this.definitions[resourceName]; - var adapter = undefined; + var adapter = void 0; return new DSUtils.Promise(function (resolve, reject) { id = DSUtils.resolveId(definition, id); @@ -5788,7 +5748,7 @@ return /******/ (function(modules) { // webpackBootstrap var DSErrors = _this.errors; var definition = _this.definitions[resourceName]; - var adapter = undefined; + var adapter = void 0; return new DSUtils.Promise(function (resolve, reject) { if (!definition) { diff --git a/dist/js-data-debug.js.map b/dist/js-data-debug.js.map index 57e18d4a..09b3cb8b 100644 --- a/dist/js-data-debug.js.map +++ b/dist/js-data-debug.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap b0fc43e98a7bb8ccf5f5","webpack:///./src/index.js","webpack:///./src/datastore/index.js","webpack:///./src/utils.js","webpack:///./src/errors.js","webpack:///./~/yabh/dist/yabh.js","webpack:///./~/mout/array/forEach.js","webpack:///./~/mout/array/slice.js","webpack:///./~/mout/object/forOwn.js","webpack:///./~/mout/object/hasOwn.js","webpack:///./~/mout/object/forIn.js","webpack:///./~/mout/array/contains.js","webpack:///./~/mout/array/indexOf.js","webpack:///./~/mout/object/deepMixIn.js","webpack:///./~/mout/lang/isPlainObject.js","webpack:///./~/mout/string/pascalCase.js","webpack:///./~/mout/lang/toString.js","webpack:///./~/mout/string/camelCase.js","webpack:///./~/mout/string/replaceAccents.js","webpack:///./~/mout/string/removeNonWord.js","webpack:///./~/mout/string/upperCase.js","webpack:///./~/mout/string/lowerCase.js","webpack:///./~/mout/array/remove.js","webpack:///./~/mout/object/pick.js","webpack:///./~/mout/object/keys.js","webpack:///./~/mout/array/sort.js","webpack:///./~/mout/object/get.js","webpack:///./~/mout/lang/isPrimitive.js","webpack:///./~/mout/object/set.js","webpack:///./~/mout/object/namespace.js","webpack:///./lib/observe-js/observe.js","webpack:///./~/mout/random/guid.js","webpack:///./~/mout/random/randHex.js","webpack:///./~/mout/random/choice.js","webpack:///./~/mout/random/randInt.js","webpack:///./~/mout/number/MIN_INT.js","webpack:///./~/mout/number/MAX_INT.js","webpack:///./~/mout/random/rand.js","webpack:///./~/mout/random/random.js","webpack:///./~/mout/lang/isArray.js","webpack:///./~/mout/lang/isKind.js","webpack:///./~/mout/lang/kindOf.js","webpack:///./src/datastore/sync_methods/index.js","webpack:///./src/datastore/sync_methods/defineResource.js","webpack:///./src/datastore/sync_methods/eject.js","webpack:///./src/datastore/sync_methods/ejectAll.js","webpack:///./src/datastore/sync_methods/filter.js","webpack:///./src/datastore/sync_methods/inject.js","webpack:///./src/datastore/async_methods/index.js","webpack:///./src/datastore/async_methods/create.js","webpack:///./src/datastore/async_methods/destroy.js","webpack:///./src/datastore/async_methods/destroyAll.js","webpack:///./src/datastore/async_methods/find.js","webpack:///./src/datastore/async_methods/findAll.js","webpack:///./src/datastore/async_methods/loadRelations.js","webpack:///./src/datastore/async_methods/reap.js","webpack:///./src/datastore/async_methods/save.js","webpack:///./src/datastore/async_methods/update.js","webpack:///./src/datastore/async_methods/updateAll.js"],"names":[],"mappings":"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QAAK,wBAAL;;;;;;;AChDF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;AACD,qCAAoC;AACpC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,wBAAuB;AACvB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAY,MAAM;AAClB,aAAY,SAAS;AACrB,aAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAY,MAAM;AAClB,aAAY,SAAS;AACrB,aAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAkB,YAAY;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,EAAC;AACD,E;;;;;;;;AC5MA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClBA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;AChCA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;;;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;ACTA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,0BAAyB,iBAAiB;AAC1C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;;ACzEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;;;;;;;AC1BA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;;;;;;;;;;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA2C;AAC3C;AACA;AACA;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClCA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;ACTA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;ACXA;;AAEA;AACA;AACA;AACA;AACA;AACA,qBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;ACfA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;;AAEA;;;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;ACpDA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;AClBA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;;;;;;;;;ACdA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;;;;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA,wCAAuC;AACvC,oBAAmB,YAAY,EAAE;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oBAAmB,eAAe;AAClC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,oBAAmB,qBAAqB;AACxC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA,IAAG;;AAEH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,8BAA6B;AAC7B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA,MAAK;;AAEL;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,sBAAqB,oBAAoB;AACzC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,yBAAwB;AACxB,2BAA0B;AAC1B,2BAA0B;AAC1B;AACA;AACA;AACA;;AAEA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAG;;AAEH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,oBAAmB,0BAA0B;AAC7C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,wDAAuD;AACvD;AACA;AACA;;AAEA,EAAC;;;;;;;AC/hBD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtBA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;AChBA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;ACZA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;AChBA;AACA;AACA;;AAEA;;;;;;;;ACJA;AACA;AACA;;AAEA;;;;;;;;ACJA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;ACLA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;KCfK;KAAK;KAAI;;AACd,KAAM,iBAAe,IAAI,IAAJ,GAAW,OAAX,EAAf;;AAEN,UAAS,WAAT,CAAsB,IAAtB,EAA4B;AAC1B,UAAO,EAAE,gBAAQ,OAAR,CAAgB,KAAK,KAAL,CAAhB,IACT,gBAAQ,OAAR,CAAgB,KAAK,OAAL,CADP,IAET,gBAAQ,OAAR,CAAgB,KAAK,OAAL,CAFP,CAAF,CADmB;EAA5B;;AAMA,UAAS,KAAT,CAAgB,MAAhB,EAAwB,YAAxB,EAAsC,EAAtC,EAA0C,OAA1C,EAAmD;AACjD,OAAI,QAAQ,IAAR,CAD6C;AAEjD,OAAI,aAAa,MAAM,WAAN,CAAkB,YAAlB,CAAb,CAF6C;AAGjD,aAAU,WAAW,EAAX,CAHuC;;AAKjD,QAAK,gBAAQ,SAAR,CAAkB,UAAlB,EAA8B,EAA9B,CAAL,CALiD;AAMjD,OAAI,CAAC,UAAD,EAAa;AACf,WAAM,IAAI,GAAJ,CAAQ,YAAR,CAAN,CADe;IAAjB,MAEO,IAAI,CAAC,gBAAQ,GAAR,CAAY,EAAZ,CAAD,EAAkB;AAC3B,WAAM,gBAAQ,MAAR,CAAe,IAAf,CAAN,CAD2B;IAAtB;AAGP,QAAK,OAAO,MAAP,GAAgB,SAAhB,GAA4B,EAA5B,CAX4C;;AAajD,aAAU,gBAAQ,CAAR,CAAU,UAAV,EAAsB,OAAtB,CAAV,CAbiD;;AAejD,WAAQ,KAAR,CAAc,MAAd,EAAsB,EAAtB,EAA0B,OAA1B,EAfiD;;AAiBjD,UAAO,EAAC,YAAD,EAAQ,sBAAR,EAAoB,eAAe,YAAf,EAA6B,KAAK,EAAL,EAAS,UAAU,OAAV,EAAjE,CAjBiD;EAAnD;;mBAoBe;;;;;;;;;AAQb,6BAAS,cAAc,IAAI,SAAS;uBACsB,MAAM,IAAN,CAAW,IAAX,EAAiB,SAAjB,EAA4B,YAA5B,EAA0C,EAA1C,EAA8C,OAA9C,EADtB;;SAC7B,0BAD6B;SACtB,oCADsB;SACV,0CADU;SACK,sBADL;SACU,gCADV;;;AAGlC,SAAI,OAAO,WAAW,GAAX,CAAe,GAAf,CAAP,CAH8B;AAIlC,SAAI,IAAJ,EAAU;;AACR,aAAI,WAAW,MAAM,KAAN,CAAY,aAAZ,EAA2B,SAA3B,CAAqC,GAArC,CAAX;AACJ,aAAI,YAAY,OAAO,QAAP,KAAoB,UAApB,EAAgC;;AAE9C,oBAAS,OAAT,GAF8C;UAAhD;;AAKA,aAAI,iBAAiB,SAAS,cAAT,IAA2B,EAA3B;;AAErB,yBAAQ,OAAR,CAAgB,WAAW,cAAX,EAA2B,UAAU,KAAV,EAAiB;AAC1D,eAAI,CAAC,gBAAQ,QAAR,CAAiB,cAAjB,EAAiC,KAAjC,CAAD,EAA0C;AAC5C,4BAAe,IAAf,CAAoB,KAApB,EAD4C;YAA9C;UADyC,CAA3C;;AAMA,aAAI,OAAO,gBAAQ,uBAAR,CAAgC,IAAhC,EAAsC,MAAM,KAAN,CAAY,aAAZ,EAA2B,kBAA3B,CAA8C,GAA9C,CAAtC,EAA0F,gBAAQ,MAAR,EAAgB,cAA1G,CAAP;;AAEJ,yBAAQ,MAAR,CAAe,IAAf,EAAqB,UAAU,SAAV,EAAqB,IAArB,EAA2B;AAC9C,eAAI,SAAS,EAAT,CAD0C;AAE9C,2BAAQ,MAAR,CAAe,SAAf,EAA0B,UAAU,KAAV,EAAiB,KAAjB,EAAwB;AAChD,iBAAI,CAAC,gBAAQ,UAAR,CAAmB,KAAnB,CAAD,EAA4B;AAC9B,sBAAO,IAAP,CAAY,KAAZ,EAD8B;cAAhC;YADwB,CAA1B,CAF8C;AAO9C,gBAAK,IAAL,IAAa,gBAAQ,IAAR,CAAa,KAAK,IAAL,CAAb,EAAyB,MAAzB,CAAb,CAP8C;UAA3B,CAArB;;AAUA,yBAAQ,OAAR,CAAgB,WAAW,cAAX,EAA2B,UAAU,KAAV,EAAiB;AAC1D,kBAAO,KAAK,KAAL,CAAW,KAAX,CAAP,CAD0D;AAE1D,kBAAO,KAAK,OAAL,CAAa,KAAb,CAAP,CAF0D;AAG1D,kBAAO,KAAK,OAAL,CAAa,KAAb,CAAP,CAH0D;UAAjB,CAA3C;AAKA;cAAO;UAAP;WAhCQ;;;MAAV;IAZW;;;;;;;;AAqDb,yCAAe,cAAc,IAAI;wBACe,MAAM,IAAN,CAAW,IAAX,EAAiB,eAAjB,EAAkC,YAAlC,EAAgD,MAAM,MAAN,EAD/D;;SAC1B,2BAD0B;SACnB,qCADmB;SACP,2CADO;SACQ,uBADR;;AAE/B,SAAI,WAAW,MAAM,KAAN,CAAY,aAAZ,CAAX,CAF2B;;AAI/B,SAAI,CAAC,WAAW,iBAAX,EAA8B;AACjC,kBAAW,OAAX,CAAmB,8CAAnB,EADiC;MAAnC,MAEO;AACL,WAAI,aAAJ,EAAmB;AACjB,aAAI,OAAO,WAAW,GAAX,CAAe,GAAf,CAAP,CADa;AAEjB,aAAI,IAAJ,EAAU;AACR,kBAAO,SAAS,eAAT,CAAyB,GAAzB,CAAP,CADQ;UAAV;QAFF,MAKO;AACL,gBAAO,SAAS,aAAT,CADF;QALP;MAHF;IAzDW;AAuEb,2BAAQ,cAAc,IAAI;wBACsB,MAAM,IAAN,CAAW,IAAX,EAAiB,QAAjB,EAA2B,YAA3B,EAAyC,EAAzC,EADtB;;SACnB,2BADmB;SACZ,qCADY;SACA,2CADA;SACe,uBADf;;AAExB,SAAI,WAAW,MAAM,KAAN,CAAY,aAAZ,CAAX,CAFoB;AAGxB,SAAI,OAAO,MAAM,KAAN,CAAY,aAAZ,EAA2B,KAA3B,CAAiC,GAAjC,CAAP,CAHoB;AAIxB,SAAI,IAAJ,EAAU;AACR,gBAAS,kBAAT,CAA4B,GAA5B,IAAmC,gBAAQ,IAAR,CAAa,IAAb,EAAmB,IAAnB,EAAyB,IAAzB,EAA+B,IAA/B,EAAqC,WAAW,cAAX,CAAxE,CADQ;MAAV;;AAIA,SAAI,SAAS,eAAT,CAAyB,GAAzB,EAA8B,MAA9B,EAAsC;AACxC,uBAAQ,OAAR,CAAgB,SAAS,eAAT,CAAyB,GAAzB,CAAhB,EAA+C,UAAU,YAAV,EAAwB;AACrE,yBAAQ,MAAR,CAAe,SAAS,aAAT,EAAwB,YAAvC,EADqE;QAAxB,CAA/C,CADwC;AAIxC,gBAAS,eAAT,CAAyB,GAAzB,EAA8B,MAA9B,CAAqC,CAArC,EAAwC,SAAS,eAAT,CAAyB,GAAzB,EAA8B,MAA9B,CAAxC,CAJwC;MAA1C;AAMA,YAAO,IAAP,CAdwB;IAvEb;;;;;;;;AA6Fb,6BAAS,cAAc,UAAU;AAC/B,SAAI,QAAQ,IAAR,CAD2B;AAE/B,SAAI,aAAa,MAAM,WAAN,CAAkB,YAAlB,CAAb,CAF2B;;AAI/B,gBAAW,gBAAQ,WAAR,CAAoB,MAAM,KAAN,CAAY,YAAZ,CAApB,EAA+C,QAA/C,CAAX,CAJ+B;AAK/B,SAAI,CAAC,UAAD,EAAa;AACf,aAAM,IAAI,GAAJ,CAAQ,YAAR,CAAN,CADe;MAAjB,MAEO,IAAI,CAAC,QAAD,EAAW;AACpB,aAAM,IAAI,CAAJ,CAAM,wBAAN,CAAN,CADoB;MAAf,MAEA,IAAI,CAAC,gBAAQ,EAAR,CAAW,QAAX,CAAD,IAAyB,CAAC,gBAAQ,GAAR,CAAY,QAAZ,CAAD,EAAwB;AAC1D,aAAM,IAAI,EAAJ,CAAO,iDAAP,CAAN,CAD0D;MAArD;;AAIP,gBAAW,KAAX,CAAiB,SAAjB,EAA4B,QAA5B;;;AAb+B,oBAgB/B,CAAQ,MAAR,CAAe,WAAW,QAAX,EAAqB,UAAU,EAAV,EAAc,KAAd,EAAqB;AACvD,uBAAQ,OAAR,CAAgB,IAAhB,CAAqB,QAArB,EAA+B,EAA/B,EAAmC,KAAnC,EADuD;MAArB,CAApC,CAhB+B;AAmB/B,YAAO,QAAP,CAnB+B;IA7FpB;;;;;;;;;;AA0Hb,2CAAgB,cAAc,OAAO,SAAS;AAC5C,SAAI,aAAa,KAAK,WAAL,CAAiB,YAAjB,CAAb,CADwC;AAE5C,SAAI,gBAAJ,CAF4C;;AAI5C,aAAQ,SAAS,EAAT,CAJoC;;AAM5C,SAAI,CAAC,UAAD,EAAa;AACf,aAAM,IAAI,GAAJ,CAAQ,YAAR,CAAN,CADe;MAAjB,MAEO,IAAI,SAAS,CAAC,gBAAQ,QAAR,CAAiB,KAAjB,CAAD,EAA0B;AAC5C,aAAM,IAAI,EAAJ,CAAO,4BAAP,CAAN,CAD4C;MAAvC;;AAIP,eAAU,gBAAQ,CAAR,CAAU,UAAV,EAAsB,OAAtB,CAAV,CAZ4C;;AAc5C,SAAM,eAAe,WAAW,YAAX,IAA2B,EAA3B,CAduB;AAe5C,SAAI,aAAa,MAAb,EAAqB;AACvB,uBAAQ,OAAR,CAAgB,YAAhB,EAA8B,UAAU,GAAV,EAAe;AAC3C,aAAM,eAAe,gBAAQ,GAAR,CAAY,KAAZ,EAAmB,IAAI,UAAJ,CAAlC,CADqC;AAE3C,aAAI,YAAJ,EAAkB;AAChB,eAAI,gBAAQ,OAAR,CAAgB,YAAhB,CAAJ,EAAmC;;AACjC,mBAAM,QAAQ,EAAR;AACN,mBAAM,WAAW,WAAW,WAAX,CAAuB,IAAI,QAAJ,CAAlC;AACN,mBAAM,WAAW,QAAQ,IAAR,EAAX;AACN,+BAAQ,OAAR,CAAgB,YAAhB,EAA8B,UAAU,gBAAV,EAA4B;AACxD,uBAAM,IAAN,CAAW,SAAS,cAAT,CAAwB,gBAAxB,EAA0C,QAA1C,CAAX,EADwD;gBAA5B,CAA9B;AAGA,+BAAQ,GAAR,CAAY,KAAZ,EAAmB,IAAI,UAAJ,EAAgB,KAAnC;kBAPiC;YAAnC,MAQO,IAAI,gBAAQ,QAAR,CAAiB,YAAjB,CAAJ,EAAoC;AACzC,6BAAQ,GAAR,CAAY,KAAZ,EAAmB,IAAI,UAAJ,EAAgB,WAAW,WAAX,CAAuB,IAAI,QAAJ,CAAvB,CAAqC,cAArC,CAAoD,YAApD,EAAkE,QAAQ,IAAR,EAAlE,CAAnC,EADyC;YAApC;UATT;QAF4B,CAA9B,CADuB;MAAzB;;AAmBA,aAAQ,KAAR,CAAc,gBAAd,EAAgC,KAAhC,EAAuC,OAAvC;;;AAlC4C,YAqC5C,CAAQ,oBAAR,CAA6B,OAA7B,EAAsC,KAAtC;;;AArC4C,SAwCxC,cAAc,WAAW,WAAW,KAAX,CAAzB;;;AAxCwC,SA2C5C,GAAO,IAAI,WAAJ,EAAP,CA3C4C;;AA6C5C,SAAI,WAAW,cAAX,EAA2B;AAC7B,uBAAQ,MAAR,CAAe,IAAf,EAD6B;MAA/B;;;AA7C4C,SAkDxC,QAAQ,aAAR,EAAuB;AACzB,uBAAQ,SAAR,CAAkB,IAAlB,EAAwB,gBAAQ,IAAR,CAAa,QAAQ,aAAR,CAArC,EADyB;MAA3B;AAGA,qBAAQ,SAAR,CAAkB,IAAlB,EAAwB,KAAxB;;;AArD4C,SAwDxC,WAAW,QAAX,EAAqB;AACvB,kBAAW,OAAX,CAAmB,IAAnB,EADuB;MAAzB;;AAxD4C,YA4D5C,CAAQ,mBAAR,CAA4B,OAA5B,EAAqC,IAArC,EA5D4C;AA6D5C,YAAO,IAAP,CA7D4C;IA1HjC;;;;;;;;;;;AAkMb,+CAAkB,cAAc,KAAK,QAAQ,SAAS;AACpD,SAAI,QAAQ,IAAR,CADgD;AAEpD,SAAI,aAAa,MAAM,WAAN,CAAkB,YAAlB,CAAb,CAFgD;;AAIpD,WAAM,OAAO,EAAP,CAJ8C;AAKpD,cAAS,UAAU,EAAV,CAL2C;;AAOpD,SAAI,CAAC,UAAD,EAAa;AACf,aAAM,IAAI,GAAJ,CAAQ,YAAR,CAAN,CADe;MAAjB,MAEO,IAAI,OAAO,CAAC,gBAAQ,OAAR,CAAgB,GAAhB,CAAD,EAAuB;AACvC,aAAM,IAAI,EAAJ,CAAO,yBAAP,CAAN,CADuC;MAAlC;;AAIP,eAAU,gBAAQ,CAAR,CAAU,UAAV,EAAsB,OAAtB,CAAV,CAboD;;AAepD,aAAQ,KAAR,CAAc,kBAAd,EAAkC,GAAlC,EAAuC,OAAvC;;;AAfoD,YAkBpD,CAAQ,sBAAR,CAA+B,OAA/B,EAAwC,GAAxC;;;AAlBoD,WAqBpD,CAAO,gBAAP,CAAwB,GAAxB,EAA6B;;AAE3B,cAAO;AACL,gBAAO,eAAU,MAAV,EAAkB,OAAlB,EAA2B;AAChC,eAAI,SAAS,IAAT,CAD4B;AAEhC,kBAAO,MAAP,GAAgB,UAAU,OAAO,MAAP,CAFM;AAGhC,kBAAO,WAAW,OAAX,CAAmB,OAAO,MAAP,EAAe,OAAlC,EAA2C,IAA3C,CAAgD,UAAU,IAAV,EAAgB;AACrE,iBAAI,SAAS,MAAT,EAAiB;AACnB,sBAAO,MAAP,CADmB;cAArB;AAGA,kBAAK,OAAL,CAAa,OAAO,MAAP,CAAb,CAJqE;AAKrE,kBAAK,OAAL,CAAa,CAAb,EALqE;AAMrE,oBAAO,MAAP,CAAc,KAAd,CAAoB,MAApB,EAA4B,IAA5B,EANqE;AAOrE,kBAAK,KAAL,GAPqE;AAQrE,kBAAK,KAAL,GARqE;AASrE,iBAAI,KAAK,UAAL,EAAiB;AACnB,qBAAM,KAAN,CAAY,YAAZ,EAA0B,SAA1B,CAAoC,gBAAQ,MAAR,CAAe,OAAO,MAAP,CAAnD,IAAqE,MAArE,CADmB;AAEnB,sBAAO,UAAP,GAAoB,IAApB,CAFmB;cAArB;AAIA,oBAAO,MAAP,CAbqE;YAAhB,CAAvD,CAHgC;UAA3B;QADT;;AAsBA,eAAQ;AACN,gBAAO,MAAP;AACA,mBAAU,IAAV;QAFF;;AAKA,qBAAc;AACZ,gBAAO,YAAP;QADF;MA7BF;;;AArBoD,YAwDpD,CAAQ,qBAAR,CAA8B,OAA9B,EAAuC,GAAvC,EAxDoD;AAyDpD,YAAO,GAAP,CAzDoD;IAlMzC;;AA6Pb,mBAAgB,oBAAQ,EAAR,CAAhB;AACA,6BAAU;AACR,UAAK,OAAL,CAAa,QAAb,CAAsB,0BAAtB,GADQ;IA9PG;;AAiQb,UAAO,oBAAQ,EAAR,CAAP;AACA,aAAU,oBAAQ,EAAR,CAAV;AACA,WAAQ,oBAAQ,EAAR,CAAR;;;;;;;;AAQA,qBAAK,cAAc,IAAI;wBACa,MAAM,IAAN,CAAW,IAAX,EAAiB,KAAjB,EAAwB,YAAxB,EAAsC,EAAtC,EADb;;SAChB,2BADgB;SACT,2CADS;SACM;;;AADN;AAIrB,YAAO,MAAM,KAAN,CAAY,aAAZ,EAA2B,KAA3B,CAAiC,GAAjC,CAAP,CAJqB;IA3QV;;;;;;;;AAuRb,2BAAQ,cAAc,KAAK;AACzB,SAAI,QAAQ,IAAR,CADqB;AAEzB,SAAI,aAAa,MAAM,WAAN,CAAkB,YAAlB,CAAb,CAFqB;AAGzB,SAAI,WAAW,MAAM,KAAN,CAAY,YAAZ,CAAX,CAHqB;AAIzB,SAAI,aAAa,EAAb,CAJqB;;AAMzB,SAAI,CAAC,UAAD,EAAa;AACf,aAAM,IAAI,GAAJ,CAAQ,YAAR,CAAN,CADe;MAAjB,MAEO,IAAI,OAAO,CAAC,gBAAQ,EAAR,CAAW,GAAX,CAAD,EAAkB;AAClC,aAAM,gBAAQ,KAAR,CAAc,KAAd,CAAN,CADkC;MAA7B;;AAIP,gBAAW,KAAX,CAAiB,QAAjB,EAA2B,GAA3B,EAZyB;;AAczB,SAAI,gBAAQ,EAAR,CAAW,GAAX,CAAJ,EAAqB;;AAEnB,WAAI,SAAS,IAAI,MAAJ,CAFM;AAGnB,YAAK,IAAI,IAAI,CAAJ,EAAO,IAAI,MAAJ,EAAY,GAA5B,EAAiC;AAC/B,aAAI,SAAS,KAAT,CAAe,IAAI,CAAJ,CAAf,CAAJ,EAA4B;AAC1B,sBAAW,IAAX,CAAgB,SAAS,KAAT,CAAe,IAAI,CAAJ,CAAf,CAAhB,EAD0B;UAA5B;QADF;MAHF,MAQO;;AAEL,oBAAa,SAAS,UAAT,CAAoB,KAApB,EAAb,CAFK;MARP;;AAaA,YAAO,UAAP,CA3ByB;IAvRd;;;;;;;;AA0Tb,mCAAY,cAAc,IAAI;wBACJ,MAAM,IAAN,CAAW,IAAX,EAAiB,YAAjB,EAA+B,YAA/B,EAA6C,EAA7C,EADI;;SACvB,qCADuB;SACX,uBADW;;;AAG5B,YAAO,WAAW,GAAX,CAAe,GAAf,IAAsB,YAAY,WAAW,OAAX,CAAmB,GAAnB,CAAZ,CAAtB,GAA6D,KAA7D,CAHqB;IA1TjB;;AA+Tb,WAAQ,oBAAQ,EAAR,CAAR;;;;;;;AAOA,yBAAO,cAAc,IAAI;wBACW,MAAM,IAAN,CAAW,IAAX,EAAiB,OAAjB,EAA0B,YAA1B,EAAwC,MAAM,MAAN,EADnD;;SAClB,2BADkB;SACX,2CADW;SACI,uBADJ;;AAEvB,SAAI,WAAW,MAAM,KAAN,CAAY,aAAZ,CAAX,CAFmB;;AAIvB,YAAO,CAAC,CAAC,SAAS,cAAT,CAAwB,GAAxB,CAAD,CAJe;IAtUZ;;;;;;;;AAkVb,uCAAc,cAAc,IAAI;wBACI,MAAM,IAAN,CAAW,IAAX,EAAiB,cAAjB,EAAiC,YAAjC,EAA+C,MAAM,MAAN,EADnD;;SACzB,2BADyB;SAClB,2CADkB;SACH,uBADG;;AAE9B,SAAI,WAAW,MAAM,KAAN,CAAY,aAAZ,CAAX,CAF0B;;AAI9B,SAAI,GAAJ,EAAS;AACP,WAAI,EAAE,OAAO,SAAS,QAAT,CAAT,EAA6B;AAC/B,kBAAS,QAAT,CAAkB,GAAlB,IAAyB,CAAzB,CAD+B;QAAjC;AAGA,cAAO,SAAS,QAAT,CAAkB,GAAlB,CAAP,CAJO;MAAT;AAMA,YAAO,SAAS,kBAAT,CAVuB;IAlVnB;;;;;;;;AAoWb,iCAAW,cAAc,IAAI;wBACO,MAAM,IAAN,CAAW,IAAX,EAAiB,WAAjB,EAA8B,YAA9B,EAA4C,MAAM,MAAN,EADnD;;SACtB,2BADsB;SACf,2CADe;SACA,uBADA;;AAE3B,SAAI,WAAW,MAAM,KAAN,CAAY,aAAZ,CAAX,CAFuB;;AAI3B,SAAI,EAAE,OAAO,SAAS,KAAT,CAAT,EAA0B;AAC5B,gBAAS,KAAT,CAAe,GAAf,IAAsB,CAAtB,CAD4B;MAA9B;AAGA,YAAO,SAAS,KAAT,CAAe,GAAf,CAAP,CAP2B;IApWhB;;;;;;;;AAmXb,+BAAU,cAAc,IAAI;wBACQ,MAAM,IAAN,CAAW,IAAX,EAAiB,UAAjB,EAA6B,YAA7B,EAA2C,EAA3C,EADR;;SACrB,2BADqB;SACd,2CADc;SACC,uBADD;;AAE1B,SAAI,WAAW,MAAM,KAAN,CAAY,aAAZ,CAAX;;;AAFsB,YAKnB,SAAS,kBAAT,CAA4B,GAA5B,IAAmC,gBAAQ,IAAR,CAAa,SAAS,kBAAT,CAA4B,GAA5B,CAAb,CAAnC,GAAoF,SAApF,CALmB;IAnXf;;;;;;;;;AAiYb,2BAAQ,cAAc,IAAI,SAAS;yBACuB,MAAM,IAAN,CAAW,IAAX,EAAiB,QAAjB,EAA2B,YAA3B,EAAyC,EAAzC,EAA6C,OAA7C,EADvB;;SAC5B,4BAD4B;SACrB,sCADqB;SACT,4CADS;SACM,wBADN;SACW,kCADX;;;AAGjC,SAAI,WAAW,SAAS,QAAT,IAAqB,EAArB,CAHkB;AAIjC,SAAI,YAAY,EAAZ,CAJ6B;;AAMjC,SAAI,SAAS,MAAT,KAAoB,CAApB,EAAuB;AACzB,mBAAY,MAAM,QAAN,CAAe,aAAf,EAA8B,GAA9B,CAAZ,CADyB;MAA3B,MAEO;;AACL,aAAI,WAAW,WAAW,GAAX,CAAe,EAAf,CAAX;AACJ,aAAI,mBAAmB,MAAM,QAAN,CAAe,aAAf,EAA8B,GAA9B,CAAnB;;AAEJ,aAAI,CAAC,QAAD,EAAW;AAAE;;aAAF;UAAf;;AAEA,yBAAQ,MAAR,CAAe,QAAf,EAAyB,UAAU,KAAV,EAAiB,GAAjB,EAAsB;AAC7C,eAAI,gBAAQ,QAAR,CAAiB,QAAjB,EAA2B,GAA3B,CAAJ,EAAqC;AACnC,uBAAU,GAAV,IAAiB,SAAS,GAAT,CAAjB,CADmC;YAArC,MAEO;AACL,uBAAU,GAAV,IAAiB,iBAAiB,GAAjB,CAAjB,CADK;YAFP;UADuB,CAAzB;WANK;;;MAFP;;AAiBA,YAAO,WAAW,MAAX,CAAkB,SAAlB,EAA6B;AAClC,mBAAY,SAAZ;MADK,CAAP,CAvBiC;IAjYtB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjBf,KAAI,kBAAkB,CACpB,SADoB,EAEpB,OAFoB,EAGpB,SAHoB,EAIpB,MAJoB,EAKpB,QALoB,EAMpB,SANoB,EAOpB,eAPoB,EAQpB,eARoB,EASpB,SAToB,EAUpB,QAVoB,EAWpB,YAXoB,EAYpB,OAZoB,EAapB,cAboB,EAcpB,WAdoB,EAepB,UAfoB,EAgBpB,QAhBoB,CAAlB;;AAmBJ,QAAO,OAAP,GAAiB,SAAS,cAAT,CAAyB,UAAzB,EAAqC;AACpD,OAAI,QAAQ,IAAR,CADgD;AAEpD,OAAI,cAAc,MAAM,WAAN;;;;;;AAFkC,OAQhD,gBAAQ,EAAR,CAAW,UAAX,CAAJ,EAA4B;AAC1B,kBAAa;AACX,aAAM,WAAW,OAAX,CAAmB,MAAnB,EAA2B,EAA3B,CAAN;MADF,CAD0B;IAA5B;AAKA,OAAI,CAAC,gBAAQ,EAAR,CAAW,UAAX,CAAD,EAAyB;AAC3B,WAAM,gBAAQ,KAAR,CAAc,YAAd,CAAN,CAD2B;IAA7B,MAEO,IAAI,CAAC,gBAAQ,EAAR,CAAW,WAAW,IAAX,CAAZ,EAA8B;AACvC,WAAM,IAAI,iBAAS,EAAT,CAAY,0BAAhB,CAAN,CADuC;IAAlC,MAEA,IAAI,YAAY,WAAW,IAAX,CAAhB,EAAkC;AACvC,WAAM,IAAI,iBAAS,CAAT,CAAc,WAAW,IAAX,4BAAlB,CAAN,CADuC;IAAlC;;;;;;;AAjB6C,YA0B3C,QAAT,CAAmB,OAAnB,EAA4B;AAC1B,UAAK,aAAL,GAAqB,EAArB,CAD0B;AAE1B,UAAK,OAAL,GAAe,EAAf,CAF0B;AAG1B,UAAK,QAAL,GAAgB,EAAhB,CAH0B;AAI1B,UAAK,MAAL,GAAc,EAAd,CAJ0B;AAK1B,UAAK,OAAL,GAAe,EAAf,CAL0B;AAM1B,qBAAQ,SAAR,CAAkB,IAAlB,EAAwB,OAAxB,EAN0B;AAO1B,SAAI,SAAS,MAAM,QAAN,CAPa;AAQ1B,SAAI,WAAW,OAAX,IAAsB,YAAY,WAAW,OAAX,CAAlC,EAAuD;AACzD,gBAAS,YAAY,WAAW,OAAX,CAArB,CADyD;MAA3D;AAGA,qBAAQ,MAAR,CAAe,KAAK,aAAL,EAAoB,OAAO,aAAP,CAAnC,CAX0B;AAY1B,qBAAQ,MAAR,CAAe,KAAK,OAAL,EAAc,OAAO,OAAP,CAA7B,CAZ0B;AAa1B,qBAAQ,MAAR,CAAe,KAAK,QAAL,EAAe,OAAO,QAAP,CAA9B,CAb0B;AAc1B,qBAAQ,MAAR,CAAe,KAAK,MAAL,EAAa,OAAO,MAAP,CAA5B,CAd0B;AAe1B,qBAAQ,MAAR,CAAe,KAAK,OAAL,EAAc,OAAO,OAAP,CAA7B,CAf0B;AAgB1B,UAAK,QAAL,GAAgB,UAAC,IAAc,OAAd,GAAyB,QAAQ,QAAR,GAAmB,KAAK,IAAL,CAhBnC;IAA5B;;AAmBA,OAAI;SAWE,IAXF;;SAgEE,OAhEF;;;;AAEF,WAAI,WAAW,OAAX,IAAsB,YAAY,WAAW,OAAX,CAAlC,EAAuD;;AAEzD,kBAAS,SAAT,GAAqB,YAAY,WAAW,OAAX,CAAjC,CAFyD;QAA3D,MAGO;;AAEL,kBAAS,SAAT,GAAqB,MAAM,QAAN,CAFhB;QAHP;AAOA,mBAAY,WAAW,IAAX,CAAZ,GAA+B,IAAI,QAAJ,CAAa,UAAb,CAA/B;;AAEI,aAAM,YAAY,WAAW,IAAX,CAAlB;;;AAEJ,WAAI,WAAJ,GAAkB,UAAU,YAAV,EAAwB;AAAE,gBAAO,MAAM,WAAN,CAAkB,YAAlB,CAAP,CAAF;QAAxB;;AAElB,WAAI,KAAJ,CAAU,qBAAV;;AAEA,WAAI,CAAC,gBAAQ,EAAR,CAAW,IAAI,WAAJ,CAAZ,EAA8B;AAChC,eAAM,IAAI,iBAAS,EAAT,CAAY,iCAAhB,CAAN,CADgC;QAAlC;;;AAKA,WAAI,IAAI,SAAJ,EAAe;AACjB,aAAI,YAAJ,GAAmB,EAAnB,CADiB;AAEjB,aAAI,cAAJ,GAAqB,EAArB,CAFiB;AAGjB,yBAAQ,MAAR,CAAe,IAAI,SAAJ,EAAe,UAAU,aAAV,EAAyB,IAAzB,EAA+B;AAC3D,2BAAQ,MAAR,CAAe,aAAf,EAA8B,UAAU,IAAV,EAAgB,YAAhB,EAA8B;AAC1D,iBAAI,CAAC,gBAAQ,EAAR,CAAW,IAAX,CAAD,EAAmB;AACrB,6BAAc,YAAd,IAA8B,CAAC,IAAD,CAA9B,CADqB;cAAvB;AAGA,6BAAQ,OAAR,CAAgB,cAAc,YAAd,CAAhB,EAA6C,UAAU,CAAV,EAAa;AACxD,iBAAE,IAAF,GAAS,IAAT,CADwD;AAExD,iBAAE,QAAF,GAAa,YAAb,CAFwD;AAGxD,iBAAE,IAAF,GAAS,IAAI,IAAJ,CAH+C;AAIxD,mBAAI,YAAJ,CAAiB,IAAjB,CAAsB,CAAtB,EAJwD;AAKxD,mBAAI,EAAE,UAAF,EAAc;AAChB,qBAAI,cAAJ,CAAmB,IAAnB,CAAwB,EAAE,UAAF,CAAxB,CADgB;gBAAlB;cAL2C,CAA7C,CAJ0D;YAA9B,CAA9B,CAD2D;UAA/B,CAA9B,CAHiB;AAmBjB,aAAI,IAAI,SAAJ,CAAc,SAAd,EAAyB;AAC3B,eAAI,OAAJ,GAAc,EAAd,CAD2B;AAE3B,2BAAQ,MAAR,CAAe,IAAI,SAAJ,CAAc,SAAd,EAAyB,UAAU,YAAV,EAAwB,SAAxB,EAAmC;AACzE,6BAAQ,OAAR,CAAgB,YAAhB,EAA8B,UAAU,QAAV,EAAoB;AAChD,mBAAI,SAAS,MAAT,EAAiB;AACnB,qBAAI,MAAJ,GAAa,SAAb,CADmB;AAEnB,qBAAI,SAAJ,GAAgB,SAAS,QAAT,CAFG;AAGnB,qBAAI,WAAJ,GAAkB,SAAS,UAAT,CAHC;AAInB,qBAAI,OAAJ,CAAY,SAAZ,IAAyB;AACvB,wBAAK,IAAI,SAAJ;AACL,0BAAO,IAAI,WAAJ;kBAFT,CAJmB;gBAArB;cAD4B,CAA9B,CADyE;YAAnC,CAAxC,CAF2B;UAA7B;AAgBA,aAAI,OAAO,OAAO,MAAP,KAAkB,UAAzB,EAAqC;AACvC,kBAAO,MAAP,CAAc,IAAI,SAAJ,CAAd,CADuC;AAEvC,kBAAO,MAAP,CAAc,IAAI,YAAJ,CAAd,CAFuC;UAAzC;QAnCF;;;AA0CI,gBAAS,IAAI,OAAJ,IAAe,gBAAQ,UAAR,CAAmB,IAAI,IAAJ,CAAlC;;AACb,WAAI;AACF,aAAI,OAAO,IAAI,QAAJ,KAAiB,UAAxB,EAAoC;AACtC,eAAI,IAAI,GAAJ,EAAS;AACX,iBAAI,MAAJ,IAAc,YAAY;AAAE,mBAAI,QAAJ,CAAa,IAAb,CAAkB,IAAlB,EAAF;cAAZ,CADH;YAAb,MAEO;AACL,iBAAI,MAAJ,IAAc,IAAI,QAAJ,CAAa,KAAb,uBAAuC,0CAAvC,EAAgF,GAAhF,CAAd;AADK,YAFP;AAKA,eAAI,MAAJ,EAAY,SAAZ,GAAwB,UAAW,KAAV,EAAiB;AACxC,sBAAS,IAAT,GAAiB,EAAjB;;AAGA,kBAAK,SAAL,GAAiB,KAAjB,CAJwC;AAKxC,oBAAO,IAAI,IAAJ,EAAP,CALwC;YAAjB,CAMtB,IAAI,QAAJ,CAAa,SAAb,CANH,CANsC;UAAxC,MAaO,IAAI,IAAI,GAAJ,EAAS;AAClB,eAAI,MAAJ,IAAc,YAAY,EAAZ,CADI;UAAb,MAEA;AACL,eAAI,MAAJ,IAAc,IAAI,QAAJ,sBAAgC,gBAAhC,GAAd;AADK,UAFA;QAdT,CAmBE,OAAO,CAAP,EAAU;AACV,aAAI,MAAJ,IAAc,YAAY,EAAZ,CADJ;QAAV;;;AAKF,uBAAQ,MAAR,CAAe,IAAI,OAAJ,EAAa,UAAU,EAAV,EAAc,CAAd,EAAiB;AAC3C,aAAI,MAAJ,EAAY,SAAZ,CAAsB,CAAtB,IAA2B,EAA3B,CAD2C;QAAjB,CAA5B;;;;;;AAQA,WAAI,MAAJ,EAAY,SAAZ,CAAsB,GAAtB,GAA4B,UAAU,GAAV,EAAe,KAAf,EAAsB;;;AAChD,yBAAQ,GAAR,CAAY,IAAZ,EAAkB,GAAlB,EAAuB,KAAvB,EADgD;AAEhD,aAAI,OAAJ,CAAY,IAAZ,EAFgD;AAGhD,aAAI,IAAI,cAAJ,EAAoB;AACtB,sBAAW,YAAM;AACf,oBAAK,IAAL,CAAU,WAAV,EAAuB,GAAvB,UADe;YAAN,EAER,CAFH,EADsB;UAAxB;AAKA,aAAI,YAAJ,CAAiB,IAAjB,EARgD;AAShD,gBAAO,IAAP,CATgD;QAAtB;;;;;;AAgB5B,WAAI,MAAJ,EAAY,SAAZ,CAAsB,GAAtB,GAA4B,UAAU,GAAV,EAAe;AACzC,gBAAO,gBAAQ,GAAR,CAAY,IAAZ,EAAkB,GAAlB,CAAP,CADyC;QAAf;;;AAK5B,uBAAQ,4BAAR,CAAqC,KAArC,EAA4C,GAA5C,EAAiD,IAAI,MAAJ,EAAY,SAAZ,CAAjD;;AAEA,WAAI,aAAa,IAAb;AACJ,WAAI,CAAC,IAAI,cAAJ,CAAmB,MAAnB,CAAD,EAA6B;AAC/B,sBAAa,IAAI,IAAJ,CADkB;AAE/B,aAAI,IAAJ,GAAW,EAAX,CAF+B;QAAjC,MAGO;AACL,sBAAa,MAAM,QAAN,CAAe,IAAf,CADR;QAHP;AAMA,WAAI,IAAJ,GAAW,IAAI,IAAJ,CAAS,MAAT,CAAgB,cAAc,EAAd,CAA3B;;;AAGA,uBAAQ,MAAR,CAAe,IAAI,QAAJ,EAAc,UAAU,EAAV,EAAc,KAAd,EAAqB;AAChD,aAAI,gBAAQ,UAAR,CAAmB,EAAnB,CAAJ,EAA4B;AAC1B,eAAI,QAAJ,CAAa,KAAb,IAAsB,CAAC,EAAD,CAAtB,CAD0B;AAE1B,gBAAK,IAAI,QAAJ,CAAa,KAAb,CAAL,CAF0B;UAA5B;AAIA,aAAI,IAAI,OAAJ,IAAe,SAAS,IAAI,OAAJ,EAAa;AACvC,eAAI,OAAJ,yBAAkC,+DAAlC,EADuC;UAAzC;AAGA,aAAI,IAAJ,CAAS,IAAT,CAAc,KAAd,EARgD;AAShD,aAAI,gBAAQ,OAAR,CAAgB,EAAhB,CAAJ,EAAyB;AACvB,eAAI,IAAJ,CADuB;AAEvB,eAAI,GAAG,MAAH,KAAc,CAAd,EAAiB;AACnB,iBAAI,QAAQ,GAAG,CAAH,EAAM,QAAN,GAAiB,KAAjB,CAAuB,2BAAvB,CAAR,CADe;AAEnB,oBAAO,MAAM,CAAN,EAAS,KAAT,CAAe,GAAf,CAAP,CAFmB;AAGnB,oBAAO,gBAAQ,MAAR,CAAe,IAAf,EAAqB,UAAU,CAAV,EAAa;AAAE,sBAAO,CAAP,CAAF;cAAb,CAA5B,CAHmB;AAInB,iBAAI,QAAJ,CAAa,KAAb,IAAsB,KAAK,MAAL,CAAY,EAAZ,CAAtB,CAJmB;AAKnB,kBAAK,IAAI,QAAJ,CAAa,KAAb,CAAL,CALmB;AAMnB,iBAAI,KAAK,MAAL,EAAa;AACf,mBAAI,OAAJ,CAAY,8EAAZ,EADe;cAAjB;YANF;AAUA,kBAAO,GAAG,KAAH,CAAS,CAAT,EAAY,GAAG,MAAH,GAAY,CAAZ,CAAnB,CAZuB;AAavB,2BAAQ,OAAR,CAAgB,IAAhB,EAAsB,UAAU,GAAV,EAAe,KAAf,EAAsB;AAC1C,kBAAK,KAAL,IAAc,IAAI,IAAJ,EAAd,CAD0C;YAAtB,CAAtB,CAbuB;AAgBvB,cAAG,IAAH,GAAU,gBAAQ,MAAR,CAAe,IAAf,EAAqB,UAAU,GAAV,EAAe;AAC5C,oBAAO,CAAC,CAAC,GAAD,CADoC;YAAf,CAA/B,CAhBuB;UAAzB,MAmBO,IAAI,gBAAQ,QAAR,CAAiB,EAAjB,CAAJ,EAA0B;AAC/B,kBAAO,cAAP,CAAsB,IAAI,MAAJ,EAAY,SAAZ,EAAuB,KAA7C,EAAoD,EAApD,EAD+B;UAA1B;QA5BoB,CAA7B;;;AAkCA,uBAAQ,OAAR,CAAgB,eAAhB,EAAiC,UAAU,IAAV,EAAgB;AAC/C,aAAI,MAAJ,EAAY,SAAZ,QAA2B,gBAAQ,UAAR,CAAmB,IAAnB,CAA3B,IAAyD,YAAmB;6CAAN;;YAAM;;AAC1E,gBAAK,OAAL,CAAa,KAAK,IAAI,WAAJ,CAAL,IAAyB,IAAzB,CAAb,CAD0E;AAE1E,gBAAK,OAAL,CAAa,IAAI,IAAJ,CAAb,CAF0E;AAG1E,kBAAO,MAAM,IAAN,EAAY,KAAZ,CAAkB,KAAlB,EAAyB,IAAzB,CAAP,CAH0E;UAAnB,CADV;QAAhB,CAAjC;;;AASA,WAAI,MAAJ,EAAY,SAAZ,CAAsB,QAAtB,GAAiC,YAAmB;4CAAN;;UAAM;;AAClD,cAAK,OAAL,CAAa,IAAb,EADkD;AAElD,cAAK,OAAL,CAAa,IAAI,IAAJ,CAAb,CAFkD;AAGlD,gBAAO,MAAM,MAAN,CAAa,KAAb,CAAmB,KAAnB,EAA0B,IAA1B,CAAP,CAHkD;QAAnB;;;AAOjC,aAAM,KAAN,CAAY,IAAI,IAAJ,CAAZ,GAAwB;AACtB,qBAAY,EAAZ;AACA,sBAAa,IAAI,gBAAQ,UAAR,CAAmB,UAAU,CAAV,EAAa;AAAE,kBAAO,EAAE,OAAF,CAAT;UAAb,EAAmC,UAAU,CAAV,EAAa,CAAb,EAAgB;AAAE,kBAAO,EAAE,IAAF,KAAW,CAAX,CAAT;UAAhB,CAAvE;AACA,2BAAkB,EAAlB;AACA,oBAAW,EAAX;AACA,yBAAgB,EAAhB;AACA,gBAAO,EAAP;AACA,mBAAU,EAAV;AACA,gBAAO,EAAP;AACA,6BAAoB,EAApB;AACA,oBAAW,EAAX;AACA,0BAAiB,EAAjB;AACA,wBAAe,EAAf;AACA,6BAAoB,CAApB;AACA,yBAAgB,EAAhB;QAdF;;AAiBA,WAAI,WAAW,MAAM,KAAN,CAAY,IAAI,IAAJ,CAAvB;;;AAGJ,WAAI,IAAI,YAAJ,EAAkB;AACpB,qBAAY;kBAAM,IAAI,IAAJ;UAAN,EAAkB,IAAI,YAAJ,CAA9B,CADoB;QAAtB;;;AAKA,WAAI,MAAM,CAAC,iBAAD,EAAoB,gBAApB,EAAsC,YAAtC,EAAoD,IAApD,EAA0D,QAA1D,CAAN;AACJ,YAAK,IAAI,GAAJ,IAAW,KAAhB,EAAuB;AACrB,aAAI,OAAO,MAAM,GAAN,CAAP,KAAsB,UAAtB,EAAkC;AACpC,eAAI,IAAJ,CAAS,GAAT,EADoC;UAAtC;QADF;;;;;;;;;;;AAeA,uBAAQ,OAAR,CAAgB,GAAhB,EAAqB,UAAU,GAAV,EAAe;AAClC,aAAI,IAAI,GAAJ,CAD8B;AAElC,aAAI,EAAE,CAAF,MAAS,GAAT,EAAc;AAChB,kBADgB;UAAlB;AAGA,aAAI,MAAM,CAAN,EAAS,SAAT,KAAuB,KAAvB,EAA8B;AAChC,eAAI,CAAJ,IAAS,YAAmB;gDAAN;;cAAM;;AAC1B,kBAAK,OAAL,CAAa,IAAI,IAAJ,CAAb,CAD0B;AAE1B,oBAAO,MAAM,CAAN,EAAS,KAAT,CAAe,KAAf,EAAsB,IAAtB,CAAP,CAF0B;YAAnB,CADuB;AAKhC,eAAI,CAAJ,EAAO,MAAP,GAAgB,UAAU,EAAV,EAAc;AAC5B,iBAAI,OAAO,IAAI,CAAJ,CAAP,CADwB;AAE5B,iBAAI,CAAJ,IAAS,YAAmB;kDAAN;;gBAAM;;AAC1B,sBAAO,KAAK,KAAL,CAAW,GAAX,EAAgB,GAAG,KAAH,CAAS,GAAT,EAAc,IAAd,KAAuB,IAAvB,CAAvB,CAD0B;cAAnB,CAFmB;YAAd,CALgB;UAAlC,MAWO;AACL,eAAI,CAAJ,IAAS,YAAmB;gDAAN;;cAAM;;AAAE,oBAAO,MAAM,CAAN,EAAS,KAAT,CAAe,KAAf,EAAsB,IAAtB,CAAP,CAAF;YAAnB,CADJ;UAXP;QALmB,CAArB;;AAqBA,WAAI,cAAJ,GAAqB,gBAAQ,SAAR,CAAkB,IAAI,cAAJ,CAAvC;AACA,WAAI,QAAJ,GAAe,gBAAQ,SAAR,CAAkB,IAAI,QAAJ,CAAjC;AACA,WAAI,aAAJ,GAAoB,gBAAQ,SAAR,CAAkB,IAAI,aAAJ,CAAtC;AACA,WAAI,YAAJ,GAAmB,gBAAQ,SAAR,CAAkB,IAAI,YAAJ,CAArC;AACA,WAAI,WAAJ,GAAkB,gBAAQ,SAAR,CAAkB,IAAI,WAAJ,CAApC;AACA,WAAI,SAAJ,GAAgB,gBAAQ,SAAR,CAAkB,IAAI,SAAJ,CAAlC;AACA,WAAI,YAAJ,GAAmB,gBAAQ,SAAR,CAAkB,IAAI,YAAJ,CAArC;AACA,WAAI,kBAAJ,GAAyB,gBAAQ,SAAR,CAAkB,IAAI,kBAAJ,CAA3C;AACA,WAAI,YAAJ,GAAmB,gBAAQ,SAAR,CAAkB,IAAI,YAAJ,CAArC;AACA,WAAI,WAAJ,GAAkB,gBAAQ,SAAR,CAAkB,IAAI,WAAJ,CAApC;AACA,WAAI,aAAJ,GAAoB,gBAAQ,SAAR,CAAkB,IAAI,aAAJ,CAAtC;AACA,WAAI,YAAJ,GAAmB,gBAAQ,SAAR,CAAkB,IAAI,YAAJ,CAArC;;AAEA,WAAI,0BAAJ;AACA,WAAI,IAAI,cAAJ,CAAmB,gBAAnB,CAAJ,EAA0C;AACxC,0BAAiB,IAAI,cAAJ,CADuB;QAA1C;;;AAKA,uBAAQ,MAAR,CAAe,IAAI,OAAJ,EAAa,UAAU,MAAV,EAAkB,IAAlB,EAAwB;AAClD,aAAI,IAAI,IAAJ,KAAa,CAAC,IAAI,OAAJ,CAAY,IAAZ,CAAD,EAAoB;AACnC,iBAAM,IAAI,KAAJ,uCAA8C,WAA9C,CAAN,CADmC;UAArC;AAGA,gBAAO,OAAP,GAAiB,OAAO,OAAP,IAAkB,UAAU,MAAV,EAAkB;AAAE,kBAAO,MAAP,CAAF;UAAlB,CAJe;AAKlD,gBAAO,QAAP,GAAkB,OAAO,QAAP,IAAmB,UAAU,QAAV,EAAoB;AAAE,kBAAO,QAAP,CAAF;UAApB,CALa;AAMlD,gBAAO,aAAP,GAAuB,OAAO,aAAP,IAAwB,UAAU,GAAV,EAAe;AAAE,kBAAO,gBAAQ,OAAR,CAAgB,MAAhB,CAAuB,GAAvB,CAAP,CAAF;UAAf,CANG;AAOlD,aAAI,IAAJ,IAAY,UAAU,EAAV,EAAc,OAAd,EAAuB;AACjC,eAAI,gBAAQ,EAAR,CAAW,EAAX,CAAJ,EAAoB;AAClB,uBAAU,EAAV,CADkB;YAApB;AAGA,qBAAU,WAAW,EAAX,CAJuB;AAKjC,eAAI,UAAU,IAAI,UAAJ,CAAe,OAAO,OAAP,IAAkB,cAAlB,IAAoC,MAApC,CAAzB,CAL6B;AAMjC,eAAI,SAAS,gBAAQ,SAAR,CAAkB,EAAlB,EAAsB,MAAtB,CAAT,CAN6B;AAOjC,eAAI,CAAC,QAAQ,cAAR,CAAuB,UAAvB,CAAD,IAAuC,OAAO,QAAP,EAAiB;AAC1D,qBAAQ,QAAR,GAAmB,OAAO,QAAP,CADuC;YAA5D;AAGA,eAAI,OAAO,QAAQ,WAAR,KAAwB,UAA/B,EAA2C;AAC7C,oBAAO,GAAP,GAAa,QAAQ,WAAR,CAAoB,GAApB,EAAyB,OAAzB,CAAb,CAD6C;YAA/C,MAEO;AACL,iBAAI,QAAO,CAAC,QAAQ,QAAR,IAAoB,IAAI,QAAJ,IAAgB,QAAQ,QAAR,CAAiB,QAAjB,EAA2B,QAAQ,WAAR,CAAoB,GAApB,EAAyB,gBAAQ,GAAR,CAAY,EAAZ,IAAkB,EAAlB,GAAuB,IAAvB,EAA6B,OAAtD,CAAhE,CAAP,CADC;AAEL,iBAAI,gBAAQ,GAAR,CAAY,EAAZ,CAAJ,EAAqB;AACnB,qBAAK,IAAL,CAAU,EAAV,EADmB;cAArB;AAGA,mBAAK,IAAL,CAAU,OAAO,QAAP,IAAmB,IAAnB,CAAV,CALK;AAML,oBAAO,GAAP,GAAa,gBAAQ,QAAR,CAAiB,KAAjB,CAAuB,IAAvB,EAA6B,KAA7B,CAAb,CANK;YAFP;AAUA,kBAAO,MAAP,GAAgB,OAAO,MAAP,IAAiB,KAAjB,CApBiB;AAqBjC,kBAAO,YAAP,GAAsB,IAAI,IAAJ,CArBW;AAsBjC,2BAAQ,SAAR,CAAkB,MAAlB,EAA0B,OAA1B,EAtBiC;AAuBjC,kBAAO,IAAI,gBAAQ,OAAR,CAAgB,UAAU,OAAV,EAAmB;AAAE,oBAAO,QAAQ,MAAR,CAAP,CAAF;YAAnB,CAApB,CACJ,IADI,CACC,QAAQ,OAAR,IAAmB,OAAO,OAAP,CADpB,CAEJ,IAFI,CAEC,UAAU,MAAV,EAAkB;AAAE,oBAAO,QAAQ,IAAR,CAAa,MAAb,CAAP,CAAF;YAAlB,CAFD,CAGJ,IAHI,CAGC,UAAU,IAAV,EAAgB;AACpB,iBAAI,QAAQ,KAAK,MAAL,EAAa;AACvB,oBAAK,MAAL,CAAY,YAAZ,GAA2B,IAAI,IAAJ,CADJ;cAAzB;AAGA,oBAAO,IAAP,CAJoB;YAAhB,CAHD,CASJ,IATI,CASC,QAAQ,QAAR,IAAoB,OAAO,QAAP,EAAiB,QAAQ,aAAR,IAAyB,OAAO,aAAP,CATtE,CAvBiC;UAAvB,CAPsC;QAAxB,CAA5B;;;AA4CA,uBAAQ,MAAR,CAAe,GAAf;;AAEA,WAAI,YAAJ,GAAmB,UAAU,IAAV,EAAgB;AACjC,kBAAS,kBAAT,GAA8B,gBAAQ,eAAR,CAAwB,SAAS,kBAAT,CAAtD,CADiC;AAEjC,aAAI,IAAI,MAAJ,EAAY;AACd,sBAAW,YAAM;AACf,iBAAI,IAAJ,CAAS,WAAT,EAAsB,GAAtB,EAA2B,IAA3B,EADe;YAAN,EAER,CAFH,EADc;UAAhB;QAFiB;;AASnB,WAAI,KAAJ,CAAU,0BAAV;;AAEA;YAAO;QAAP;SA9TE;;;IAAJ,CA+TE,OAAO,GAAP,EAAY;AACZ,WAAM,QAAN,CAAe,OAAf,CAAuB,GAAvB,EADY;AAEZ,YAAO,YAAY,WAAW,IAAX,CAAnB,CAFY;AAGZ,YAAO,MAAM,KAAN,CAAY,WAAW,IAAX,CAAnB,CAHY;AAIZ,WAAM,GAAN,CAJY;IAAZ;EA5Wa,C;;;;;;;;;;;;;;;;;;;;;ACvBjB,QAAO,OAAP,GAAiB,SAAS,KAAT,CAAgB,YAAhB,EAA8B,EAA9B,EAAkC,OAAlC,EAA2C;AAC1D,OAAI,QAAQ,IAAR,CADsD;AAE1D,OAAI,UAAU,MAAM,KAAN,CAF4C;AAG1D,OAAI,aAAa,MAAM,WAAN,CAAkB,YAAlB,CAAb,CAHsD;AAI1D,OAAI,WAAW,MAAM,KAAN,CAAY,YAAZ,CAAX,CAJsD;AAK1D,OAAI,gBAAJ,CAL0D;AAM1D,OAAI,QAAQ,KAAR,CANsD;;AAQ1D,QAAK,QAAQ,SAAR,CAAkB,UAAlB,EAA8B,EAA9B,CAAL,CAR0D;;AAU1D,OAAI,CAAC,UAAD,EAAa;AACf,WAAM,IAAI,MAAM,MAAN,CAAa,GAAb,CAAiB,YAArB,CAAN,CADe;IAAjB,MAEO,IAAI,CAAC,QAAQ,GAAR,CAAY,EAAZ,CAAD,EAAkB;AAC3B,WAAM,QAAQ,MAAR,CAAe,IAAf,CAAN,CAD2B;IAAtB;;AAIP,aAAU,QAAQ,CAAR,CAAU,UAAV,EAAsB,OAAtB,CAAV,CAhB0D;;AAkB1D,WAAQ,KAAR,CAAc,OAAd,EAAuB,EAAvB,EAA2B,OAA3B;;;AAlB0D,QAqBrD,IAAI,IAAI,CAAJ,EAAO,IAAI,SAAS,UAAT,CAAoB,MAApB,EAA4B,GAAhD,EAAqD;AACnD,SAAI,SAAS,UAAT,CAAoB,CAApB,EAAuB,WAAW,WAAX,CAAvB,IAAkD,EAAlD,EAAsD;;AACxD,cAAO,SAAS,UAAT,CAAoB,CAApB,CAAP;;AADwD,eAGxD,CAAS,WAAT,CAAqB,MAArB,CAA4B,IAA5B,EAHwD;AAIxD,eAAQ,IAAR,CAJwD;AAKxD,aALwD;MAA1D;IADF;AASA,OAAI,KAAJ,EAAW;;;AAET,kBAAW,WAAX,CAAuB,OAAvB,EAAgC,IAAhC;AACA,WAAI,QAAQ,MAAR,EAAgB;AAClB,oBAAW,IAAX,CAAgB,gBAAhB,EAAkC,UAAlC,EAA8C,IAA9C,EADkB;QAApB;;;AAKA,WAAI,WAAW,EAAX;AACJ,eAAQ,MAAR,CAAe,SAAS,SAAT,EAAoB,UAAU,KAAV,EAAiB,SAAjB,EAA4B;AAC7D,aAAI,MAAM,UAAN,EAAkB;AACpB,mBAAQ,MAAR,CAAe,KAAf,EAAsB,IAAtB,EADoB;UAAtB;;AAD6D,aAKzD,CAAC,MAAM,MAAN,IAAgB,QAAQ,iBAAR,EAA2B;AAC9C,oBAAS,IAAT,CAAc,SAAd,EAD8C;UAAhD;QALiC,CAAnC;;;AAWA,eAAQ,OAAR,CAAgB,SAAS,eAAT,CAAyB,EAAzB,CAAhB,EAA8C,UAAU,YAAV,EAAwB;AACpE,iBAAQ,MAAR,CAAe,SAAS,aAAT,EAAwB,YAAvC,EADoE;QAAxB,CAA9C;AAGA,eAAQ,OAAR,CAAgB,QAAhB,EAA0B,UAAU,SAAV,EAAqB;AAC7C,gBAAO,SAAS,gBAAT,CAA0B,SAA1B,CAAP,CAD6C;AAE7C,gBAAO,SAAS,SAAT,CAAmB,SAAnB,CAAP,CAF6C;QAArB,CAA1B;AAIA,WAAI,SAAS,SAAT,CAAmB,EAAnB,KAA0B,OAAO,SAAS,SAAT,CAAmB,EAAnB,EAAuB,KAAvB,KAAiC,UAAxC,EAAoD;;AAEhF,kBAAS,SAAT,CAAmB,EAAnB,EAAuB,KAAvB,GAFgF;QAAlF;AAIA,cAAO,SAAS,SAAT,CAAmB,EAAnB,CAAP;AACA,cAAO,SAAS,KAAT,CAAe,EAAf,CAAP;AACA,cAAO,SAAS,kBAAT,CAA4B,EAA5B,CAAP;AACA,cAAO,SAAS,gBAAT,CAA0B,EAA1B,CAAP;AACA,cAAO,SAAS,cAAT,CAAwB,EAAxB,CAAP;AACA,cAAO,SAAS,eAAT,CAAyB,EAAzB,CAAP;AACA,cAAO,SAAS,QAAT,CAAkB,EAAlB,CAAP;AACA,cAAO,SAAS,KAAT,CAAe,EAAf,CAAP;AACA,WAAI,WAAW,cAAX,IAA6B,KAAK,GAAL,EAAU;AACzC,cAAK,GAAL,GADyC;QAA3C;;;AAKA,gBAAS,UAAT,CAAoB,MAApB,CAA2B,CAA3B,EAA8B,CAA9B;;AAEA,kBAAW,YAAX,CAAwB,IAAxB;;;AAGA,kBAAW,UAAX,CAAsB,OAAtB,EAA+B,IAA/B;AACA,WAAI,QAAQ,MAAR,EAAgB;AAClB,oBAAW,IAAX,CAAgB,eAAhB,EAAiC,UAAjC,EAA6C,IAA7C,EADkB;QAApB;;AAIA;YAAO;QAAP;SAtDS;;;IAAX;EA9Be,C;;;;;;;;;;;;;;;;ACHjB,QAAO,OAAP,GAAiB,SAAS,QAAT,CAAmB,YAAnB,EAAiC,MAAjC,EAAyC,OAAzC,EAAkD;AACjE,OAAI,QAAQ,IAAR,CAD6D;AAEjE,OAAI,UAAU,MAAM,KAAN,CAFmD;AAGjE,OAAI,aAAa,MAAM,WAAN,CAAkB,YAAlB,CAAb,CAH6D;AAIjE,YAAS,UAAU,EAAV,CAJwD;;AAMjE,OAAI,CAAC,UAAD,EAAa;AACf,WAAM,IAAI,MAAM,MAAN,CAAa,GAAb,CAAiB,YAArB,CAAN,CADe;IAAjB,MAEO,IAAI,CAAC,QAAQ,EAAR,CAAW,MAAX,CAAD,EAAqB;AAC9B,WAAM,QAAQ,KAAR,CAAc,QAAd,CAAN,CAD8B;IAAzB;;AAIP,aAAU,QAAQ,CAAR,CAAU,UAAV,EAAsB,OAAtB,CAAV,CAZiE;AAajE,cAAW,KAAX,CAAiB,UAAjB,EAA6B,MAA7B,EAAqC,OAArC,EAbiE;;AAejE,WAAQ,UAAR,CAAmB,UAAnB,EAA+B,MAA/B,EAAuC,OAAvC,EAfiE;;AAiBjE,OAAI,WAAW,MAAM,KAAN,CAAY,YAAZ,CAAX,CAjB6D;AAkBjE,OAAI,YAAY,QAAQ,MAAR,CAAe,MAAf,CAAZ;;;AAlB6D,OAqB7D,QAAQ,WAAW,MAAX,CAAkB,MAAlB,CAAR,CArB6D;;AAuBjE,OAAI,QAAQ,OAAR,CAAgB,MAAhB,CAAJ,EAA6B;;AAE3B,cAAS,gBAAT,GAA4B,EAA5B,CAF2B;IAA7B,MAGO;;AAEL,YAAO,SAAS,gBAAT,CAA0B,SAA1B,CAAP,CAFK;IAHP;;AAvBiE,UA+BjE,CAAQ,OAAR,CAAgB,KAAhB,EAAuB,UAAU,IAAV,EAAgB;AACrC,SAAI,QAAQ,KAAK,WAAW,WAAX,CAAb,EAAsC;AACxC,kBAAW,KAAX,CAAiB,KAAK,WAAW,WAAX,CAAtB,EAA+C,OAA/C,EADwC;MAA1C;IADqB,CAAvB;;AA/BiE,aAqCjE,CAAW,YAAX,CAAwB,KAAxB,EArCiE;AAsCjE,UAAO,KAAP,CAtCiE;EAAlD,C;;;;;;;;;;;;;;;;;;ACEjB,QAAO,OAAP,GAAiB,SAAS,MAAT,CAAiB,YAAjB,EAA+B,MAA/B,EAAuC,OAAvC,EAAgD;AAC/D,OAAI,QAAQ,IAAR,CAD2D;AAE/D,OAAI,UAAU,MAAM,KAAN,CAFiD;AAG/D,OAAI,aAAa,MAAM,WAAN,CAAkB,YAAlB,CAAb,CAH2D;;AAK/D,OAAI,CAAC,UAAD,EAAa;AACf,WAAM,IAAI,MAAM,MAAN,CAAa,GAAb,CAAiB,YAArB,CAAN,CADe;IAAjB,MAEO,IAAI,UAAU,CAAC,QAAQ,EAAR,CAAW,MAAX,CAAD,EAAqB;AACxC,WAAM,QAAQ,KAAR,CAAc,QAAd,CAAN,CADwC;IAAnC;;;AAPwD,SAY/D,GAAS,UAAU,EAAV,CAZsD;AAa/D,aAAU,QAAQ,CAAR,CAAU,UAAV,EAAsB,OAAtB,CAAV,CAb+D;AAc/D,WAAQ,KAAR,CAAc,QAAd,EAAwB,MAAxB,EAAgC,OAAhC,EAd+D;;AAgB/D,WAAQ,UAAR,CAAmB,UAAnB,EAA+B,MAA/B,EAAuC,OAAvC;;;AAhB+D,UAmBxD,WAAW,aAAX,CAAyB,IAAzB,CAA8B,KAA9B,EAAqC,MAAM,KAAN,CAAY,YAAZ,EAA0B,UAA1B,EAAsC,YAA3E,EAAyF,MAAzF,EAAiG,OAAjG,CAAP,CAnB+D;EAAhD,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACSjB,UAAS,mBAAT,CAA8B,UAA9B,EAA0C,QAA1C,EAAoD;AAClD,OAAI,KAAK,IAAL;;;AAD8C,OAI9C,OAAO,WAAW,IAAX;;;;;;;;;;;AAJuC,UAe3C,SAAS,MAAT,CAAiB,KAAjB,EAAwB,OAAxB,EAAiC,OAAjC,EAA0C,UAA1C,EAAsD,SAAtD,EAAiE;AACtE,SAAI,SAAS,IAAT,CADkE;AAEtE,SAAI,gBAAJ;;;AAFsE,SAKlE,UAAU,UAAC,IAAc,WAAW,WAAW,WAAX,CAAzB,GAAoD,WAAW,WAAW,WAAX,CAAhE,GAA0F,OAAO,WAAW,WAAX,CAAjG;;;AALwD,oBAQtE,CAAQ,OAAR,CAAgB,WAAW,cAAX,EAA2B,UAAU,KAAV,EAAiB;AAC1D,cAAO,MAAM,KAAN,CAAP,CAD0D;AAE1D,cAAO,QAAQ,KAAR,CAAP,CAF0D;AAG1D,cAAO,QAAQ,KAAR,CAAP,CAH0D;MAAjB,CAA3C;;;AARsE,SAelE,CAAC,gBAAQ,OAAR,CAAgB,KAAhB,CAAD,IAA2B,CAAC,gBAAQ,OAAR,CAAgB,OAAhB,CAAD,IAA6B,CAAC,gBAAQ,OAAR,CAAgB,OAAhB,CAAD,IAA6B,SAArF,EAAgG;AAClG,cAAO,GAAG,GAAH,CAAO,IAAP,EAAa,OAAb,CAAP;;;AADkG,eAIlG,CAAS,QAAT,CAAkB,OAAlB,IAA6B,gBAAQ,eAAR,CAAwB,SAAS,QAAT,CAAkB,OAAlB,CAAxB,CAA7B,CAJkG;;AAMlG,WAAI,QAAQ,WAAW,cAAX,EAA2B;AACrC,oBAAW,YAAY;AACrB,gBAAK,IAAL,CAAU,WAAV,EAAuB,UAAvB,EAAmC,IAAnC,EADqB;UAAZ,EAER,CAFH,EADqC;QAAvC;;AAMA,kBAAW,YAAX,CAAwB,IAAxB;;;AAZkG,WAe9F,WAAW,iBAAX,EAA8B;AAChC,aAAI,eAAe;AACjB,yBAAc,IAAd;AACA,mBAAQ,IAAR;AACA,uBAHiB;AAIjB,2BAJiB;AAKjB,2BALiB;AAMjB,sBAAW,SAAS,QAAT,CAAkB,OAAlB,CAAX;UANE,CAD4B;AAShC,kBAAS,eAAT,CAAyB,OAAzB,EAAkC,IAAlC,CAAuC,YAAvC,EATgC;AAUhC,kBAAS,aAAT,CAAuB,IAAvB,CAA4B,YAA5B,EAVgC;QAAlC;MAfF;;;AAfsE,SA6ClE,WAAW,QAAX,EAAqB;AACvB,cAAO,QAAQ,GAAG,GAAH,CAAO,IAAP,EAAa,OAAb,CAAR,CADgB;AAEvB,uBAAQ,MAAR,CAAe,WAAW,QAAX,EAAqB,UAAU,EAAV,EAAc,KAAd,EAAqB;AACvD,aAAI,gBAAQ,EAAR,CAAW,EAAX,CAAJ,EAAoB;AAClB,kBADkB;UAApB;AAGA,aAAI,UAAU,KAAV;;AAJmD,wBAMvD,CAAQ,OAAR,CAAgB,GAAG,IAAH,EAAS,UAAU,GAAV,EAAe;AACtC,eAAI,OAAO,KAAP,IAAgB,OAAO,OAAP,IAAkB,OAAO,OAAP,IAAkB,EAAE,SAAS,IAAT,CAAF,EAAkB;AACxE,uBAAU,IAAV,CADwE;YAA1E;UADuB,CAAzB,CANuD;AAWvD,mBAAU,WAAW,CAAC,GAAG,IAAH,CAAQ,MAAR,CAXiC;AAYvD,aAAI,OAAJ,EAAa;AACX,2BAAQ,OAAR,CAAgB,IAAhB,CAAqB,IAArB,EAA2B,EAA3B,EAA+B,KAA/B,EADW;UAAb;QAZkC,CAApC,CAFuB;MAAzB;;AAoBA,SAAI,WAAW,WAAX,IAA0B,OAA1B,EAAmC;AACrC,kBAAW,OAAX,6EAA6F,mEAA7F,EADqC;MAAvC;IAjEK,CAf2C;EAApD;;;;;;;;;;;;AAgGA,UAAS,OAAT,CAAkB,UAAlB,EAA8B,QAA9B,EAAwC,KAAxC,EAA+C,OAA/C,EAAwD;AACtD,OAAI,QAAQ,IAAR,CADkD;AAEtD,OAAI,oBAAJ,CAFsD;;AAItD,OAAI,gBAAQ,EAAR,CAAW,KAAX,CAAJ,EAAuB;;AAErB,gBAAW,EAAX,CAFqB;AAGrB,UAAK,IAAI,IAAI,CAAJ,EAAO,IAAI,MAAM,MAAN,EAAc,GAAlC,EAAuC;AACrC,gBAAS,IAAT,CAAc,QAAQ,IAAR,CAAa,KAAb,EAAoB,UAApB,EAAgC,QAAhC,EAA0C,MAAM,CAAN,CAA1C,EAAoD,OAApD,CAAd,EADqC;MAAvC;IAHF,MAMO;;AAEL,SAAI,IAAI,WAAW,QAAX,CAFH;AAGL,SAAI,MAAM,WAAW,WAAX;;AAHL,SAKD,KAAK,EAAE,GAAF,CAAL,EAAa;;AACf,aAAI,OAAO,EAAP;AACJ,yBAAQ,OAAR,CAAgB,EAAE,GAAF,EAAO,IAAP,EAAa,UAAU,GAAV,EAAe;AAC1C,gBAAK,IAAL,CAAU,MAAM,GAAN,CAAV,EAD0C;UAAf,CAA7B;AAGA,eAAM,GAAN,IAAa,EAAE,GAAF,EAAO,EAAE,GAAF,EAAO,MAAP,GAAgB,CAAhB,CAAP,CAA0B,KAA1B,CAAgC,KAAhC,EAAuC,IAAvC,CAAb;YALe;MAAjB,MAMO,IAAI,QAAQ,SAAR,EAAmB;AAC5B,aAAM,GAAN,IAAa,gBAAQ,IAAR,EAAb,CAD4B;MAAvB;;AAIP,SAAI,EAAE,OAAO,KAAP,CAAF,EAAiB;AACnB,WAAI,QAAQ,IAAI,iBAAS,CAAT,CAAc,WAAW,IAAX,2EAAlB,CAAR,CADe;AAEnB,eAAQ,OAAR,CAAgB,KAAhB,EAFmB;AAGnB,aAAM,KAAN,CAHmB;MAArB,MAIO;AACL,WAAI;;;;;AAIF,2BAAQ,OAAR,CAAgB,WAAW,YAAX,EAAyB,UAAU,GAAV,EAAe;AACtD,iBAAI,eAAe,IAAI,QAAJ,CADmC;AAEtD,iBAAI,cAAc,MAAM,WAAN,CAAkB,YAAlB,CAAd,CAFkD;AAGtD,iBAAI,WAAW,MAAM,IAAI,UAAJ,CAAjB,CAHkD;AAItD,iBAAI,OAAO,IAAI,MAAJ,KAAe,UAAtB,EAAkC;AACpC,mBAAI,MAAJ,CAAW,UAAX,EAAuB,GAAvB,EAA4B,KAA5B,EADoC;cAAtC,MAEO,IAAI,YAAY,IAAI,MAAJ,KAAe,KAAf,EAAsB;AAC3C,mBAAI,CAAC,WAAD,EAAc;AAChB,uBAAM,IAAI,iBAAS,CAAT,CAAc,WAAW,IAAX,kDAAlB,CAAN,CADgB;gBAAlB;;AAD2C,mBAKvC,gBAAQ,EAAR,CAAW,QAAX,CAAJ,EAA0B;;AACxB,uBAAI,QAAQ,EAAR;AACJ,mCAAQ,OAAR,CAAgB,QAAhB,EAA0B,UAAU,YAAV,EAAwB;AAChD,yBAAI,iBAAiB,MAAM,KAAN,CAAY,YAAZ,EAA0B,KAA1B,CAAgC,aAAa,YAAY,WAAZ,CAA7C,CAAjB,EAAyF;AAC3F,2BAAI;AACF,6BAAI,eAAe,YAAY,MAAZ,CAAmB,YAAnB,EAAiC,QAAQ,IAAR,EAAjC,CAAf,CADF;AAEF,6BAAI,IAAI,UAAJ,EAAgB;AAClB,2CAAQ,GAAR,CAAY,YAAZ,EAA0B,IAAI,UAAJ,EAAgB,MAAM,WAAW,WAAX,CAAhD,EADkB;0BAApB;AAGA,+BAAM,IAAN,CAAW,YAAX,EALE;wBAAJ,CAME,OAAO,GAAP,EAAY;AACZ,iCAAQ,OAAR,CAAgB,GAAhB,wBAAyC,IAAI,IAAJ,oBAAuB,mBAAhE,EADY;wBAAZ;sBAPJ;oBADwB,CAA1B;sBAFwB;gBAA1B,MAeO;;AAEL,qBAAI,aAAa,MAAM,KAAN,CAAY,YAAZ,EAA0B,KAA1B,CAAgC,SAAS,YAAY,WAAZ,CAAzC,CAAb,EAAiF;AACnF,uBAAI;AACF,yBAAI,YAAW,YAAY,MAAZ,CAAmB,MAAM,IAAI,UAAJ,CAAzB,EAA0C,QAAQ,IAAR,EAA1C,CAAX,CADF;AAEF,yBAAI,IAAI,UAAJ,EAAgB;AAClB,uCAAQ,GAAR,CAAY,SAAZ,EAAsB,IAAI,UAAJ,EAAgB,MAAM,WAAW,WAAX,CAA5C,EADkB;sBAApB;AAGA,yBAAI,IAAI,QAAJ,EAAc;AAChB,uCAAQ,GAAR,CAAY,KAAZ,EAAmB,IAAI,QAAJ,EAAc,gBAAQ,GAAR,CAAY,SAAZ,EAAsB,YAAY,WAAZ,CAAvD,EADgB;sBAAlB;oBALF,CAQE,OAAO,GAAP,EAAY;AACZ,6BAAQ,OAAR,CAAgB,GAAhB,wBAAyC,IAAI,IAAJ,oBAAuB,mBAAhE,EADY;oBAAZ;kBATJ;gBAjBF;cALK;YANgC,CAAzC;;;AA8CA,eAAI,KAAK,MAAM,GAAN,CAAL;;AAEJ,eAAI,OAAO,WAAW,GAAX,CAAe,EAAf,CAAP;;AAEJ,eAAI,sBAAsB,OAAO,SAAS,QAAT,CAAkB,EAAlB,CAAP,GAA+B,CAA/B;;;AAG1B,eAAI,CAAC,IAAD,EAAO;AACT,iBAAI,iBAAiB,WAAW,WAAW,OAAX,CAAX,CAAjB,EAAkD;AACpD,sBAAO,KAAP,CADoD;cAAtD,MAEO;AACL,sBAAO,IAAI,WAAW,WAAW,OAAX,CAAX,CAAJ,EAAP,CADK;cAFP;;AAMA,iBAAI,WAAW,cAAX,IAA6B,OAAO,KAAK,IAAL,KAAc,UAArB,EAAiC;AAChE,+BAAQ,MAAR,CAAe,IAAf,EADgE;cAAlE;;AAPS,4BAWT,CAAQ,OAAR,CAAgB,WAAW,YAAX,EAAyB,UAAU,GAAV,EAAe;AACtD,mBAAI,OAAO,IAAI,IAAJ,KAAa,SAApB,GAAgC,IAAI,IAAJ,GAAW,CAAC,CAAC,WAAW,aAAX,EAA0B;AACzE,wBAAO,MAAM,IAAI,UAAJ,CAAb,CADyE;gBAA3E;cADuC,CAAzC;;;AAXS,4BAkBT,CAAQ,SAAR,CAAkB,IAAlB,EAAwB,KAAxB;;;AAlBS,qBAqBT,CAAS,UAAT,CAAoB,IAApB,CAAyB,IAAzB,EArBS;AAsBT,sBAAS,eAAT,CAAyB,EAAzB,IAA+B,EAA/B;;;AAtBS,iBAyBL,SAAS,oBAAoB,IAApB,CAAyB,KAAzB,EAAgC,UAAhC,EAA4C,QAA5C,CAAT;;;AAzBK,iBA4BL,WAAW,YAAX,EAAyB;AAC3B,wBAAS,SAAT,CAAmB,EAAnB,IAAyB,IAAI,MAAM,OAAN,CAAc,cAAd,CAA6B,IAAjC,CAAzB,CAD2B;AAE3B,wBAAS,SAAT,CAAmB,EAAnB,EAAuB,IAAvB,CAA4B,MAA5B,EAAoC,IAApC,EAF2B;cAA7B;;;AA5BS,qBAkCT,CAAS,KAAT,CAAe,EAAf,IAAqB,IAArB;;AAlCS,mBAoCT,CAAO,IAAP,CAAY,IAAZ,EAAkB,EAAlB,EAAsB,EAAtB,EAA0B,EAA1B,EAA8B,IAA9B,EAAoC,IAApC;;AApCS,qBAsCT,CAAS,kBAAT,CAA4B,EAA5B,IAAkC,gBAAQ,IAAR,CAAa,IAAb,EAAmB,IAAnB,EAAyB,IAAzB,EAA+B,IAA/B,EAAqC,WAAW,cAAX,CAAvE;;AAtCS,iBAwCL,QAAQ,SAAR,EAAmB;AACrB,wBAAS,cAAT,CAAwB,EAAxB,IAA8B,IAA9B,CADqB;cAAvB;YAxCF,MA2CO;;;AAGL,iBAAI,QAAQ,UAAR,KAAuB,OAAvB,EAAgC;AAClC,+BAAQ,SAAR,CAAkB,IAAlB,EAAwB,KAAxB,EADkC;cAApC,MAEO,IAAI,QAAQ,UAAR,KAAuB,SAAvB,EAAkC;AAC3C,+BAAQ,MAAR,CAAe,IAAf,EAAqB,UAAU,CAAV,EAAa,CAAb,EAAgB;AACnC,qBAAI,MAAM,WAAW,WAAX,EAAwB;AAChC,uBAAI,CAAC,MAAM,cAAN,CAAqB,CAArB,CAAD,EAA0B;AAC5B,4BAAO,KAAK,CAAL,CAAP,CAD4B;oBAA9B;kBADF;gBADmB,CAArB,CAD2C;AAQ3C,+BAAQ,MAAR,CAAe,KAAf,EAAsB,UAAU,CAAV,EAAa,CAAb,EAAgB;AACpC,qBAAI,MAAM,WAAW,WAAX,EAAwB;AAChC,wBAAK,CAAL,IAAU,CAAV,CADgC;kBAAlC;gBADoB,CAAtB,CAR2C;cAAtC;;AAeP,iBAAI,WAAW,oBAAX,EAAiC;;AAEnC,qBAAM,MAAN,CAAa,WAAW,IAAX,EAAiB,EAA9B,EAFmC;cAArC;AAIA,iBAAI,SAAS,SAAT,CAAmB,EAAnB,KAA0B,OAAO,SAAS,SAAT,CAAmB,EAAnB,CAAP,KAAkC,UAAlC,EAA8C;;AAE1E,wBAAS,SAAT,CAAmB,EAAnB,EAAuB,OAAvB,GAF0E;cAA5E;YAnEF;;AAyEA,oBAAS,QAAT,CAAkB,EAAlB,IAAwB,uBAAuB,SAAS,QAAT,CAAkB,EAAlB,MAA0B,mBAA1B,GAAgD,gBAAQ,eAAR,CAAwB,SAAS,QAAT,CAAkB,EAAlB,CAAxB,CAAvE,GAAwH,SAAS,QAAT,CAAkB,EAAlB,CAAxH;;;AAGxB,oBAAS,WAAT,CAAqB,MAArB,CAA4B,IAA5B;AACA,eAAI,YAAY,IAAI,IAAJ,GAAW,OAAX,EAAZ;AACJ,oBAAS,WAAT,CAAqB,IAArB,CAA0B;AACxB,mBAAM,IAAN;AACA,wBAAW,SAAX;AACA,sBAAS,WAAW,MAAX,GAAoB,YAAY,WAAW,MAAX,GAAoB,OAAO,SAAP;YAH/D;;;AAOA,sBAAW,IAAX;cA9IE;QAAJ,CA+IE,OAAO,GAAP,EAAY;AACZ,iBAAQ,OAAR,CAAgB,GAAhB,EAAqB,KAArB,EADY;QAAZ;MApJJ;IArBF;AA8KA,UAAO,QAAP,CAlLsD;EAAxD;;;;;;;;;;;AA8LA,QAAO,OAAP,GAAiB,SAAS,MAAT,CAAiB,YAAjB,EAA+B,KAA/B,EAAsC,OAAtC,EAA+C;AAC9D,OAAI,QAAQ,IAAR,CAD0D;AAE9D,OAAI,aAAa,MAAM,WAAN,CAAkB,YAAlB,CAAb,CAF0D;AAG9D,OAAI,WAAW,MAAM,KAAN,CAAY,YAAZ,CAAX,CAH0D;AAI9D,OAAI,oBAAJ,CAJ8D;;AAM9D,OAAI,CAAC,UAAD,EAAa;AACf,WAAM,IAAI,iBAAS,GAAT,CAAa,YAAjB,CAAN,CADe;IAAjB,MAEO,IAAI,CAAC,gBAAQ,EAAR,CAAW,KAAX,CAAD,IAAsB,CAAC,gBAAQ,EAAR,CAAW,KAAX,CAAD,EAAoB;AACnD,WAAM,IAAI,iBAAS,EAAT,CAAe,gEAAnB,CAAN,CADmD;IAA9C;;AAIP,aAAU,gBAAQ,CAAR,CAAU,UAAV,EAAsB,OAAtB,CAAV,CAZ8D;AAa9D,WAAQ,KAAR,CAAc,QAAd,EAAwB,KAAxB,EAA+B,OAA/B;;;AAb8D,UAgB9D,CAAQ,YAAR,CAAqB,OAArB,EAA8B,KAA9B,EAhB8D;AAiB9D,OAAI,QAAQ,MAAR,EAAgB;AAClB,gBAAW,IAAX,CAAgB,iBAAhB,EAAmC,UAAnC,EAA+C,KAA/C,EADkB;IAApB;;;AAjB8D,WAsB9D,GAAW,QAAQ,IAAR,CAAa,KAAb,EAAoB,UAApB,EAAgC,QAAhC,EAA0C,KAA1C,EAAiD,OAAjD,CAAX;;;AAtB8D,aAyB9D,CAAW,YAAX,CAAwB,QAAxB;;;AAzB8D,UA4B9D,CAAQ,WAAR,CAAoB,OAApB,EAA6B,QAA7B,EA5B8D;AA6B9D,OAAI,QAAQ,MAAR,EAAgB;AAClB,gBAAW,IAAX,CAAgB,gBAAhB,EAAkC,UAAlC,EAA8C,QAA9C,EADkB;IAApB;;AAIA,UAAO,QAAP,CAjC8D;EAA/C,C;;;;;;;;;;;mBCjTF;AACb,WAAQ,oBAAQ,EAAR,CAAR;AACA,YAAS,oBAAQ,EAAR,CAAT;AACA,eAAY,oBAAQ,EAAR,CAAZ;AACA,SAAM,oBAAQ,EAAR,CAAN;AACA,YAAS,oBAAQ,EAAR,CAAT;AACA,kBAAe,oBAAQ,EAAR,CAAf;AACA,SAAM,oBAAQ,EAAR,CAAN;AACA,6BAAS,cAAc,IAAI,SAAS;AAClC,SAAI,QAAQ,IAAR,CAD8B;AAElC,SAAI,UAAU,MAAM,KAAN,CAFoB;;AAIlC,YAAO,IAAI,QAAQ,OAAR,CAAgB,UAAU,OAAV,EAAmB,MAAnB,EAA2B;AACpD,WAAI,aAAa,MAAM,WAAN,CAAkB,YAAlB,CAAb,CADgD;AAEpD,YAAK,QAAQ,SAAR,CAAkB,MAAM,WAAN,CAAkB,YAAlB,CAAlB,EAAmD,EAAnD,CAAL,CAFoD;AAGpD,WAAI,CAAC,UAAD,EAAa;AACf,gBAAO,IAAI,MAAM,MAAN,CAAa,GAAb,CAAiB,YAArB,CAAP,EADe;QAAjB,MAEO,IAAI,CAAC,QAAQ,GAAR,CAAY,EAAZ,CAAD,EAAkB;AAC3B,gBAAO,QAAQ,MAAR,CAAe,IAAf,CAAP,EAD2B;QAAtB,MAEA;AACL,mBAAU,QAAQ,CAAR,CAAU,UAAV,EAAsB,OAAtB,CAAV,CADK;AAEL,iBAAQ,WAAR,GAAsB,IAAtB,CAFK;AAGL,iBAAQ,KAAR,CAAc,SAAd,EAAyB,EAAzB,EAA6B,OAA7B,EAHK;AAIL,iBAAQ,MAAM,GAAN,CAAU,YAAV,EAAwB,EAAxB,CAAR,EAJK;QAFA;MALkB,CAApB,CAaJ,IAbI,CAaC,UAAU,IAAV,EAAgB;AAAE,cAAO,OAAO,MAAM,IAAN,CAAW,YAAX,EAAyB,EAAzB,EAA6B,OAA7B,CAAP,GAA+C,IAA/C,CAAT;MAAhB,CAbD,CAcJ,KAdI,CAcE,MAAM,OAAN,CAAc,SAAd,EAAyB,YAAzB,EAAuC,EAAvC,EAA2C,OAA3C,CAdF,CAAP,CAJkC;IARvB;AA4Bb,mCAAY,cAAc,QAAQ,SAAS;AACzC,SAAI,QAAQ,IAAR,CADqC;AAEzC,SAAI,UAAU,MAAM,KAAN,CAF2B;AAGzC,SAAI,aAAa,MAAM,WAAN,CAAkB,YAAlB,CAAb,CAHqC;AAIzC,cAAS,UAAU,EAAV,CAJgC;;AAMzC,YAAO,IAAI,QAAQ,OAAR,CAAgB,UAAU,OAAV,EAAmB,MAAnB,EAA2B;AACpD,WAAI,CAAC,UAAD,EAAa;AACf,gBAAO,IAAI,MAAM,MAAN,CAAa,GAAb,CAAiB,YAArB,CAAP,EADe;QAAjB,MAEO,IAAI,CAAC,QAAQ,EAAR,CAAW,MAAX,CAAD,EAAqB;AAC9B,gBAAO,QAAQ,KAAR,CAAc,QAAd,CAAP,EAD8B;QAAzB,MAEA;AACL,mBAAU,QAAQ,CAAR,CAAU,UAAV,EAAsB,OAAtB,CAAV,CADK;AAEL,iBAAQ,WAAR,GAAsB,IAAtB,CAFK;AAGL,iBAAQ,KAAR,CAAc,YAAd,EAA4B,MAA5B,EAAoC,OAApC,EAHK;AAIL,iBAAQ,MAAM,MAAN,CAAa,YAAb,EAA2B,MAA3B,EAAmC,OAAnC,CAAR,EAJK;QAFA;MAHkB,CAApB,CAWJ,IAXI,CAWC,UAAU,QAAV,EAAoB;AAC1B,eAAQ,WAAR,GAAsB,IAAtB,CAD0B;AAE1B,cAAO,MAAM,OAAN,CAAc,YAAd,EAA4B,MAA5B,EAAoC,OAApC,EAA6C,IAA7C,CAAkD,UAAU,KAAV,EAAiB;AACxE,iBAAQ,OAAR,CAAgB,QAAhB,EAA0B,UAAU,IAAV,EAAgB;AACxC,eAAI,MAAM,OAAN,CAAc,IAAd,MAAwB,CAAC,CAAD,EAAI;AAC9B,wBAAW,KAAX,CAAiB,IAAjB,EAD8B;YAAhC;UADwB,CAA1B,CADwE;AAMxE,gBAAO,KAAP,CANwE;QAAjB,CAAzD,CAF0B;MAApB,CAXD,CAqBJ,KArBI,CAqBE,MAAM,OAAN,CAAc,YAAd,EAA4B,YAA5B,EAA0C,MAA1C,EAAkD,OAAlD,CArBF,CAAP,CANyC;IA5B9B;;AAyDb,SAAM,oBAAQ,EAAR,CAAN;AACA,WAAQ,oBAAQ,EAAR,CAAR;AACA,cAAW,oBAAQ,EAAR,CAAX;;;;;;;;;;;;;;;;;;;;;;;;;;;ACzCF,QAAO,OAAP,GAAiB,SAAS,MAAT,CAAiB,YAAjB,EAA+B,KAA/B,EAAsC,OAAtC,EAA+C;AAC9D,OAAI,QAAQ,IAAR,CAD0D;AAE9D,OAAI,UAAU,MAAM,KAAN,CAFgD;AAG9D,OAAI,aAAa,MAAM,WAAN,CAAkB,YAAlB,CAAb,CAH0D;AAI9D,OAAI,WAAW,MAAM,KAAN,CAAY,YAAZ,CAAX,CAJ0D;AAK9D,OAAI,mBAAJ,CAL8D;;AAO9D,aAAU,WAAW,EAAX,CAPoD;AAQ9D,WAAQ,SAAS,EAAT,CARsD;;AAU9D,OAAI,0BAAJ,CAV8D;AAW9D,OAAI,CAAC,UAAD,EAAa;AACf,sBAAiB,IAAI,MAAM,MAAN,CAAa,GAAb,CAAiB,YAArB,CAAjB,CADe;IAAjB,MAEO,IAAI,CAAC,QAAQ,EAAR,CAAW,KAAX,CAAD,EAAoB;AAC7B,sBAAiB,QAAQ,KAAR,CAAc,OAAd,CAAjB,CAD6B;IAAxB,MAEA;AACL,eAAU,QAAQ,CAAR,CAAU,UAAV,EAAsB,OAAtB,CAAV,CADK;AAEL,SAAI,QAAQ,MAAR,IAAkB,QAAQ,GAAR,CAAY,MAAM,WAAW,WAAX,CAAlB,CAAlB,IAAgE,CAAC,SAAS,cAAT,CAAwB,MAAM,WAAW,WAAX,CAA9B,CAAD,EAAyD;AAC3H,cAAO,MAAM,MAAN,CAAa,YAAb,EAA2B,MAAM,WAAW,WAAX,CAAjC,EAA0D,KAA1D,EAAiE,OAAjE,CAAP,CAD2H;MAA7H;AAGA,aAAQ,KAAR,CAAc,QAAd,EAAwB,KAAxB,EAA+B,OAA/B,EALK;IAFA;;AAUP,UAAO,IAAI,QAAQ,OAAR,CAAgB,UAAU,OAAV,EAAmB,MAAnB,EAA2B;AACpD,SAAI,cAAJ,EAAoB;AAClB,cAAO,cAAP,EADkB;MAApB,MAEO;AACL,eAAQ,KAAR,EADK;MAFP;IADyB;;AAApB,IAQJ,IARI,CAQC,UAAU,KAAV,EAAiB;AAAE,YAAO,QAAQ,cAAR,CAAuB,IAAvB,CAA4B,KAA5B,EAAmC,OAAnC,EAA4C,KAA5C,CAAP,CAAF;IAAjB,CARD,CASJ,IATI,CASC,UAAU,KAAV,EAAiB;AAAE,YAAO,QAAQ,QAAR,CAAiB,IAAjB,CAAsB,KAAtB,EAA6B,OAA7B,EAAsC,KAAtC,CAAP,CAAF;IAAjB,CATD,CAUJ,IAVI,CAUC,UAAU,KAAV,EAAiB;AAAE,YAAO,QAAQ,aAAR,CAAsB,IAAtB,CAA2B,KAA3B,EAAkC,OAAlC,EAA2C,KAA3C,CAAP,CAAF;IAAjB,CAVD,CAWJ,IAXI,CAWC,UAAU,KAAV,EAAiB;AAAE,YAAO,QAAQ,YAAR,CAAqB,IAArB,CAA0B,KAA1B,EAAiC,OAAjC,EAA0C,KAA1C,CAAP,CAAF;IAAjB,CAXD,CAYJ,IAZI,CAYC,UAAU,KAAV,EAAiB;AACrB,SAAI,QAAQ,MAAR,EAAgB;AAClB,kBAAW,IAAX,CAAgB,iBAAhB,EAAmC,UAAnC,EAA+C,KAA/C,EADkB;MAApB;AAGA,eAAU,MAAM,cAAN,CAAqB,OAArB,CAAV,CAJqB;AAKrB,YAAO,MAAM,QAAN,CAAe,OAAf,EAAwB,MAAxB,CAA+B,UAA/B,EAA2C,QAAQ,IAAR,CAAa,KAAb,EAAoB,QAAQ,IAAR,CAA/D,EAA8E,OAA9E,CAAP,CALqB;IAAjB,CAZD,CAmBJ,IAnBI,CAmBC,UAAU,KAAV,EAAiB;AAAE,YAAO,QAAQ,WAAR,CAAoB,IAApB,CAAyB,KAAzB,EAAgC,OAAhC,EAAyC,KAAzC,CAAP,CAAF;IAAjB,CAnBD,CAoBJ,IApBI,CAoBC,UAAU,KAAV,EAAiB;AACrB,SAAI,QAAQ,MAAR,EAAgB;AAClB,kBAAW,IAAX,CAAgB,gBAAhB,EAAkC,UAAlC,EAA8C,KAA9C,EADkB;MAApB;AAGA,SAAI,QAAQ,aAAR,EAAuB;;AAEzB,WAAI,UAAU,MAAM,MAAN,CAAa,WAAW,IAAX,EAAiB,KAA9B,EAAqC,QAAQ,IAAR,EAArC,CAAV,CAFqB;AAGzB,WAAI,KAAK,QAAQ,WAAW,WAAX,CAAb;;AAHqB,WAKrB,YAAW,MAAM,KAAN,CAAY,YAAZ,CAAX,CALqB;AAMzB,iBAAS,gBAAT,CAA0B,EAA1B,IAAgC,IAAI,IAAJ,GAAW,OAAX,EAAhC,CANyB;AAOzB,iBAAS,KAAT,CAAe,EAAf,IAAqB,QAAQ,eAAR,CAAwB,UAAS,KAAT,CAAe,EAAf,CAAxB,CAArB,CAPyB;AAQzB,cAAO,OAAP,CARyB;MAA3B,MASO;;AAEL,cAAO,MAAM,cAAN,CAAqB,YAArB,EAAmC,KAAnC,EAA0C,OAA1C,CAAP,CAFK;MATP;IAJI,CApBD,CAsCJ,IAtCI,CAsCC,UAAU,IAAV,EAAgB;AACpB,YAAO,QAAQ,OAAR,CAAgB,IAAhB,EAAsB,EAAC,gBAAD,EAAtB,EAAiC,OAAjC,CAAP,CADoB;IAAhB,CAtCD,CAwCF,OAxCE,EAwCO,MAAM,OAAN,CAAc,QAAd,EAAwB,YAAxB,EAAsC,KAAtC,EAA6C,OAA7C,CAxCP,CAAP,CAvB8D;EAA/C,C;;;;;;;;;;;;;;;;;;;;ACNjB,QAAO,OAAP,GAAiB,SAAS,OAAT,CAAkB,YAAlB,EAAgC,EAAhC,EAAoC,OAApC,EAA6C;AAC5D,OAAI,QAAQ,IAAR,CADwD;AAE5D,OAAI,UAAU,MAAM,KAAN,CAF8C;AAG5D,OAAI,aAAa,MAAM,WAAN,CAAkB,YAAlB,CAAb,CAHwD;AAI5D,OAAI,gBAAJ;OAAU,mBAAV,CAJ4D;;AAM5D,UAAO,IAAI,QAAQ,OAAR,CAAgB,UAAU,OAAV,EAAmB,MAAnB,EAA2B;AACpD,UAAK,QAAQ,SAAR,CAAkB,UAAlB,EAA8B,EAA9B,CAAL,CADoD;AAEpD,SAAI,CAAC,UAAD,EAAa;AACf,cAAO,IAAI,MAAM,MAAN,CAAa,GAAb,CAAiB,YAArB,CAAP,EADe;MAAjB,MAEO,IAAI,CAAC,QAAQ,GAAR,CAAY,EAAZ,CAAD,EAAkB;AAC3B,cAAO,QAAQ,MAAR,CAAe,IAAf,CAAP,EAD2B;MAAtB,MAEA;;AAEL,cAAO,WAAW,GAAX,CAAe,EAAf,KAAsB,EAAE,IAAI,EAAJ,EAAxB,CAFF;AAGL,iBAAU,QAAQ,CAAR,CAAU,UAAV,EAAsB,OAAtB,CAAV,CAHK;AAIL,eAAQ,KAAR,CAAc,SAAd,EAAyB,EAAzB,EAA6B,OAA7B,EAJK;AAKL,eAAQ,IAAR,EALK;MAFA;IAJkB;;AAApB,IAeJ,IAfI,CAeC,UAAU,KAAV,EAAiB;AAAE,YAAO,QAAQ,aAAR,CAAsB,IAAtB,CAA2B,KAA3B,EAAkC,OAAlC,EAA2C,KAA3C,CAAP,CAAF;IAAjB,CAfD,CAgBJ,IAhBI,CAgBC,UAAU,KAAV,EAAiB;AACrB,SAAI,QAAQ,MAAR,EAAgB;AAClB,kBAAW,IAAX,CAAgB,kBAAhB,EAAoC,UAApC,EAAgD,KAAhD,EADkB;MAApB;;AADqB,SAKjB,QAAQ,UAAR,EAAoB;AACtB,kBAAW,KAAX,CAAiB,EAAjB,EADsB;MAAxB;AAGA,eAAU,WAAW,UAAX,CAAsB,OAAtB,CAAV,CARqB;AASrB,YAAO,QAAQ,OAAR,CAAgB,UAAhB,EAA4B,EAA5B,EAAgC,OAAhC,CAAP,CATqB;IAAjB,CAhBD,CA2BJ,IA3BI,CA2BC,YAAY;AAAE,YAAO,QAAQ,YAAR,CAAqB,IAArB,CAA0B,IAA1B,EAAgC,OAAhC,EAAyC,IAAzC,CAAP,CAAF;IAAZ,CA3BD,CA4BJ,IA5BI,CA4BC,UAAU,IAAV,EAAgB;AACpB,SAAI,QAAQ,MAAR,EAAgB;AAClB,kBAAW,IAAX,CAAgB,iBAAhB,EAAmC,UAAnC,EAA+C,IAA/C,EADkB;MAApB;;AADoB,eAKpB,CAAW,KAAX,CAAiB,EAAjB,EALoB;AAMpB,YAAO,QAAQ,OAAR,CAAgB,EAAhB,EAAoB,EAAC,gBAAD,EAApB,EAA+B,OAA/B,CAAP,CANoB;IAAhB,CA5BD,CAmCF,OAnCE,EAmCO,UAAU,GAAV,EAAe;;AAEzB,SAAI,WAAW,QAAQ,UAAR,IAAsB,IAAjC,EAAuC;AACzC,kBAAW,MAAX,CAAkB,IAAlB,EAAwB,EAAE,QAAQ,KAAR,EAA1B,EADyC;MAA3C;AAGA,YAAO,MAAM,OAAN,CAAc,SAAd,EAAyB,YAAzB,EAAuC,EAAvC,EAA2C,OAA3C,EAAoD,GAApD,CAAP,CALyB;IAAf,CAnCd,CAN4D;EAA7C,C;;;;;;;;;;;;;;;;;;;;ACAjB,QAAO,OAAP,GAAiB,SAAS,UAAT,CAAqB,YAArB,EAAmC,MAAnC,EAA2C,OAA3C,EAAoD;AACnE,OAAI,QAAQ,IAAR,CAD+D;AAEnE,OAAI,UAAU,MAAM,KAAN,CAFqD;AAGnE,OAAI,aAAa,MAAM,WAAN,CAAkB,YAAlB,CAAb,CAH+D;AAInE,OAAI,mBAAJ;OAAa,mBAAb;OAAsB,mBAAtB,CAJmE;;AAMnE,YAAS,UAAU,EAAV,CAN0D;;AAQnE,UAAO,IAAI,QAAQ,OAAR,CAAgB,UAAU,OAAV,EAAmB,MAAnB,EAA2B;AACpD,SAAI,CAAC,UAAD,EAAa;AACf,cAAO,IAAI,MAAM,MAAN,CAAa,GAAb,CAAiB,YAArB,CAAP,EADe;MAAjB,MAEO,IAAI,CAAC,QAAQ,EAAR,CAAW,MAAX,CAAD,EAAqB;AAC9B,cAAO,QAAQ,KAAR,CAAc,OAAd,CAAP,EAD8B;MAAzB,MAEA;AACL,iBAAU,QAAQ,CAAR,CAAU,UAAV,EAAsB,OAAtB,CAAV,CADK;AAEL,eAAQ,KAAR,CAAc,YAAd,EAA4B,MAA5B,EAAoC,OAApC,EAFK;AAGL,eAAQ,UAAR,CAAmB,UAAnB,EAA+B,MAA/B,EAAuC,OAAvC,EAHK;AAIL,iBAJK;MAFA;IAHkB,CAApB,CAWJ,IAXI,CAWC,YAAY;;AAElB,eAAU,WAAW,aAAX,CAAyB,IAAzB,CAA8B,KAA9B,EAAqC,YAArC,EAAmD,MAAnD,CAAV,CAFkB;AAGlB,YAAO,QAAQ,aAAR,CAAsB,OAAtB,EAA+B,OAA/B,CAAP,CAHkB;IAAZ,CAXD,CAeJ,IAfI,CAeC,YAAY;AAClB,SAAI,QAAQ,MAAR,EAAgB;AAClB,kBAAW,IAAX,CAAgB,kBAAhB,EAAoC,UAApC,EAAgD,OAAhD,EADkB;MAApB;;AADkB,SAKd,QAAQ,UAAR,EAAoB;AACtB,iBAAU,WAAW,QAAX,CAAoB,MAApB,CAAV,CADsB;MAAxB;AAGA,eAAU,WAAW,cAAX,CAA0B,OAA1B,CAAV,CARkB;AASlB,YAAO,MAAM,QAAN,CAAe,OAAf,EAAwB,UAAxB,CAAmC,UAAnC,EAA+C,MAA/C,EAAuD,OAAvD,CAAP,CATkB;IAAZ,CAfD,CAyBJ,IAzBI,CAyBC,YAAY;AAClB,YAAO,QAAQ,YAAR,CAAqB,OAArB,EAA8B,OAA9B,CAAP,CADkB;IAAZ,CAzBD,CA2BJ,IA3BI,CA2BC,YAAY;AAClB,SAAI,QAAQ,MAAR,EAAgB;AAClB,kBAAW,IAAX,CAAgB,iBAAhB,EAAmC,UAAnC,EAA+C,OAA/C,EADkB;MAApB;;AADkB,YAKX,WAAW,WAAW,QAAX,CAAoB,MAApB,CAAX,CALW;IAAZ,CA3BD,CAiCJ,IAjCI,CAiCC,UAAU,KAAV,EAAiB;AACvB,YAAO,QAAQ,OAAR,CAAgB,KAAhB,EAAuB,EAAC,gBAAD,EAAvB,EAAkC,OAAlC,CAAP,CADuB;IAAjB,CAjCD,CAmCJ,OAnCI,EAmCK,UAAU,GAAV,EAAe;;AAEzB,SAAI,WAAW,QAAQ,UAAR,IAAsB,OAAjC,EAA0C;AAC5C,kBAAW,MAAX,CAAkB,OAAlB,EAA2B,EAAC,QAAQ,KAAR,EAA5B,EAD4C;MAA9C;AAGA,YAAO,MAAM,OAAN,CAAc,YAAd,EAA4B,YAA5B,EAA0C,MAA1C,EAAkD,OAAlD,EAA2D,GAA3D,CAAP,CALyB;IAAf,CAnCZ,CARmE;EAApD,C;;;;;;;;;;;;;;;;;;;;;;;;;ACKjB,QAAO,OAAP,GAAiB,SAAS,IAAT,CAAe,YAAf,EAA6B,EAA7B,EAAiC,OAAjC,EAA0C;AACzD,OAAI,QAAQ,IAAR,CADqD;AAEzD,OAAI,UAAU,MAAM,KAAN,CAF2C;AAGzD,OAAI,aAAa,MAAM,WAAN,CAAkB,YAAlB,CAAb,CAHqD;AAIzD,OAAI,WAAW,MAAM,KAAN,CAAY,YAAZ,CAAX,CAJqD;AAKzD,OAAI,mBAAJ,CALyD;;AAOzD,UAAO,IAAI,QAAQ,OAAR,CAAgB,UAAU,OAAV,EAAmB,MAAnB,EAA2B;AACpD,SAAI,CAAC,UAAD,EAAa;AACf,cAAO,IAAI,MAAM,MAAN,CAAa,GAAb,CAAiB,YAArB,CAAP,EADe;MAAjB,MAEO,IAAI,CAAC,QAAQ,GAAR,CAAY,EAAZ,CAAD,EAAkB;AAC3B,cAAO,QAAQ,MAAR,CAAe,IAAf,CAAP,EAD2B;MAAtB,MAEA;AACL,iBAAU,QAAQ,CAAR,CAAU,UAAV,EAAsB,OAAtB,CAAV,CADK;AAEL,eAAQ,KAAR,CAAc,MAAd,EAAsB,EAAtB,EAA0B,OAA1B,EAFK;;AAIL,WAAI,QAAQ,MAAR,EAAgB;AAClB,iBAAQ,MAAR,GAAiB,QAAQ,IAAR,CAAa,QAAQ,MAAR,CAA9B,CADkB;QAApB;;AAIA,WAAI,QAAQ,WAAR,IAAuB,CAAC,QAAQ,aAAR,EAAuB;AACjD,gBAAO,SAAS,gBAAT,CAA0B,EAA1B,CAAP,CADiD;QAAnD;;AAIA,WAAI,UAAU,QAAQ,MAAR,IAAkB,MAAM,SAAS,gBAAT,IAChC,SAAS,gBAAT,CAA0B,EAA1B,IAAgC,QAAQ,MAAR,GAAiB,IAAI,IAAJ,GAAW,OAAX,EAAjD,CAbD;;AAeL,WAAI,CAAC,CAAC,QAAQ,eAAR,IAA2B,MAAM,SAAS,gBAAT,CAAnC,IAAiE,WAAW,GAAX,CAAe,EAAf,CAAjE,IACE,CAAC,QAAQ,WAAR,IAAuB,CAAC,OAAD,EAAU;;AAEtC,iBAAQ,WAAW,GAAX,CAAe,EAAf,CAAR,EAFsC;QADxC,MAIO;;AAEL,gBAAO,SAAS,gBAAT,CAA0B,EAA1B,CAAP,CAFK;AAGL,mBAHK;QAJP;MAjBK;IAHkB,CAApB,CA8BJ,IA9BI,CA8BC,UAAU,IAAV,EAAgB;AACtB,SAAI,CAAC,IAAD,EAAO;AACT,WAAI,EAAE,MAAM,SAAS,cAAT,CAAR,EAAkC;AACpC,aAAI,mBAAJ,CADoC;AAEpC,aAAI,WAAW,QAAQ,YAAR,IAAwB,QAAQ,QAAR;;;AAFH,aAKhC,aAAa,UAAb,EAAyB;AAC3B,eAAI,mBAAmB,SAAnB,gBAAmB,CAAU,KAAV,EAAiB;AACtC,uBAAU,WAAW,cAAX,CAA0B,CAAC,QAAQ,oBAAR,IAAgC,QAAQ,gBAAR,CAAjC,CAA2D,KAA3D,CAA1B,CAAV,CADsC;AAEtC,oBAAO,MAAM,QAAN,CAAe,OAAf,EAAwB,IAAxB,CAA6B,UAA7B,EAAyC,EAAzC,EAA6C,OAA7C,EAAsD,OAAtD,EAA+D,eAAO;AAC3E,uBAD2E;AAE3E,mBAAI,QAAQ,QAAQ,gBAAR,CAAyB,MAAzB,EAAiC;AAC3C,wBAAO,iBAAiB,KAAjB,CAAP,CAD2C;gBAA7C,MAEO;AACL,wBAAO,QAAQ,OAAR,CAAgB,MAAhB,CAAuB,GAAvB,CAAP,CADK;gBAFP;cAFoE,CAAtE,CAFsC;YAAjB,CADI;;AAa3B,qBAAU,iBAAiB,CAAjB,CAAV,CAb2B;UAA7B,MAcO;AACL,qBAAU,WAAW,cAAX,CAA0B,OAA1B,CAAV;;AADK,kBAGL,GAAU,MAAM,QAAN,CAAe,OAAf,EAAwB,IAAxB,CAA6B,UAA7B,EAAyC,EAAzC,EAA6C,OAA7C,CAAV,CAHK;UAdP;;AAoBA,kBAAS,cAAT,CAAwB,EAAxB,IAA8B,QAC3B,IAD2B,CACtB,UAAU,IAAV,EAAgB;AAAE,kBAAO,QAAQ,SAAR,CAAkB,IAAlB,CAAuB,IAAvB,EAA6B,OAA7B,EAAsC,IAAtC,CAAP,CAAF;UAAhB,CADsB,CAE3B,IAF2B,CAEtB,UAAU,IAAV,EAAgB;;AAEpB,kBAAO,SAAS,cAAT,CAAwB,EAAxB,CAAP,CAFoB;AAGpB,eAAI,QAAQ,aAAR,EAAuB;;AAEzB,iBAAI,WAAW,WAAW,MAAX,CAAkB,IAAlB,EAAwB,QAAQ,IAAR,EAAxB,CAAX;;AAFqB,qBAIzB,CAAS,gBAAT,CAA0B,EAA1B,IAAgC,IAAI,IAAJ,GAAW,OAAX,EAAhC,CAJyB;AAKzB,sBAAS,KAAT,CAAe,EAAf,IAAqB,QAAQ,eAAR,CAAwB,SAAS,KAAT,CAAe,EAAf,CAAxB,CAArB,CALyB;AAMzB,oBAAO,QAAP,CANyB;YAA3B,MAOO;;AAEL,oBAAO,WAAW,cAAX,CAA0B,IAA1B,EAAgC,QAAQ,IAAR,EAAhC,CAAP,CAFK;YAPP;UAHI,CAFR,CAzBoC;QAAtC;AA2CA,cAAO,SAAS,cAAT,CAAwB,EAAxB,CAAP,CA5CS;MAAX,MA6CO;;AAEL,cAAO,IAAP,CAFK;MA7CP;IADM,CA9BD,CAgFJ,IAhFI,CAgFC,UAAU,IAAV,EAAgB;AACtB,YAAO,QAAQ,OAAR,CAAgB,IAAhB,EAAsB,EAAC,gBAAD,EAAtB,EAAiC,OAAjC,CAAP,CADsB;IAAhB,CAhFD,CAkFJ,OAlFI,EAkFK,UAAU,GAAV,EAAe;AACzB,SAAI,QAAJ,EAAc;AACZ,cAAO,SAAS,cAAT,CAAwB,EAAxB,CAAP,CADY;MAAd;AAGA,YAAO,MAAM,OAAN,CAAc,MAAd,EAAsB,YAAtB,EAAoC,EAApC,EAAwC,OAAxC,EAAiD,GAAjD,CAAP,CAJyB;IAAf,CAlFZ,CAPyD;EAA1C,C;;;;;;;;;AChBjB,UAAS,cAAT,CAAyB,IAAzB,EAA+B,YAA/B,EAA6C,SAA7C,EAAwD,OAAxD,EAAiE;AAC/D,OAAI,QAAQ,IAAR,CAD2D;AAE/D,OAAI,UAAU,MAAM,KAAN,CAFiD;AAG/D,OAAI,aAAa,MAAM,WAAN,CAAkB,YAAlB,CAAb,CAH2D;AAI/D,OAAI,WAAW,MAAM,KAAN,CAAY,YAAZ,CAAX,CAJ2D;AAK/D,OAAI,cAAc,WAAW,WAAX,CAL6C;AAM/D,OAAI,OAAO,IAAI,IAAJ,GAAW,OAAX,EAAP,CAN2D;;AAQ/D,UAAO,QAAQ,EAAR;;;AARwD,UAWxD,SAAS,cAAT,CAAwB,SAAxB,CAAP,CAX+D;AAY/D,YAAS,gBAAT,CAA0B,SAA1B,IAAuC,IAAvC;;;AAZ+D,OAe3D,WAAW,WAAW,MAAX,CAAkB,IAAlB,EAAwB,QAAQ,IAAR,EAAxB,CAAX;;;AAf2D,OAkB3D,QAAQ,EAAR,CAAW,QAAX,CAAJ,EAA0B;AACxB,aAAQ,OAAR,CAAgB,QAAhB,EAA0B,UAAU,IAAV,EAAgB;AACxC,WAAI,IAAJ,EAAU;AACR,aAAI,KAAK,KAAK,WAAL,CAAL,CADI;AAER,aAAI,EAAJ,EAAQ;AACN,oBAAS,gBAAT,CAA0B,EAA1B,IAAgC,IAAhC,CADM;AAEN,oBAAS,KAAT,CAAe,EAAf,IAAqB,QAAQ,eAAR,CAAwB,SAAS,KAAT,CAAe,EAAf,CAAxB,CAArB,CAFM;UAAR;QAFF;MADwB,CAA1B,CADwB;IAA1B,MAUO;AACL,aAAQ,OAAR,CAAgB,sCAAhB,EADK;AAEL,cAAS,gBAAT,CAA0B,SAAS,WAAT,CAA1B,IAAmD,IAAnD,CAFK;IAVP;;AAeA,UAAO,QAAP,CAjC+D;EAAjE;;;;;;;;;;;;AA8CA,QAAO,OAAP,GAAiB,SAAS,OAAT,CAAkB,YAAlB,EAAgC,MAAhC,EAAwC,OAAxC,EAAiD;AAChE,OAAI,QAAQ,IAAR,CAD4D;AAEhE,OAAI,UAAU,MAAM,KAAN,CAFkD;AAGhE,OAAI,aAAa,MAAM,WAAN,CAAkB,YAAlB,CAAb,CAH4D;AAIhE,OAAI,WAAW,MAAM,KAAN,CAAY,YAAZ,CAAX,CAJ4D;AAKhE,OAAI,qBAAJ;OAAe,mBAAf,CALgE;;AAOhE,UAAO,IAAI,QAAQ,OAAR,CAAgB,UAAU,OAAV,EAAmB,MAAnB,EAA2B;AACpD,cAAS,UAAU,EAAV,CAD2C;;AAGpD,SAAI,CAAC,MAAM,WAAN,CAAkB,YAAlB,CAAD,EAAkC;AACpC,cAAO,IAAI,MAAM,MAAN,CAAa,GAAb,CAAiB,YAArB,CAAP,EADoC;MAAtC,MAEO,IAAI,CAAC,QAAQ,EAAR,CAAW,MAAX,CAAD,EAAqB;AAC9B,cAAO,QAAQ,KAAR,CAAc,QAAd,CAAP,EAD8B;MAAzB,MAEA;AACL,iBAAU,QAAQ,CAAR,CAAU,UAAV,EAAsB,OAAtB,CAAV,CADK;AAEL,mBAAY,QAAQ,MAAR,CAAe,MAAf,CAAZ,CAFK;AAGL,eAAQ,KAAR,CAAc,SAAd,EAAyB,MAAzB,EAAiC,OAAjC,EAHK;;AAKL,WAAI,QAAQ,MAAR,EAAgB;AAClB,iBAAQ,MAAR,GAAiB,QAAQ,IAAR,CAAa,QAAQ,MAAR,CAA9B,CADkB;QAApB;;AAIA,eAAQ,UAAR,CAAmB,UAAnB,EAA+B,MAA/B,EAAuC,OAAvC;;;AATK,WAYD,QAAQ,WAAR,IAAuB,CAAC,QAAQ,aAAR,EAAuB;AACjD,gBAAO,SAAS,gBAAT,CAA0B,SAA1B,CAAP,CADiD;AAEjD,gBAAO,SAAS,SAAT,CAAmB,SAAnB,CAAP,CAFiD;QAAnD;;AAKA,WAAI,UAAU,QAAQ,MAAR,IAAkB,aAAa,SAAS,gBAAT,IACvC,SAAS,gBAAT,CAA0B,SAA1B,IAAuC,QAAQ,MAAR,GAAiB,IAAI,IAAJ,GAAW,OAAX,EAAxD,CAlBD;;AAoBL,WAAI,aAAa,SAAS,gBAAT,IAA6B,CAAC,OAAD,EAAU;AACtD,aAAI,QAAQ,SAAR,EAAmB;AACrB,eAAI,QAAQ,SAAR,EAAmB;AACrB,qBAAQ,WAAW,MAAX,CAAkB,QAAQ,SAAR,EAAmB,QAAQ,IAAR,EAArC,CAAR,EADqB;YAAvB,MAEO;;AAEL,qBAAQ,WAAW,MAAX,CAAkB,MAAlB,EAA0B,QAAQ,IAAR,EAA1B,CAAR,EAFK;YAFP;UADF,MAOO;;AAEL,mBAAQ,SAAS,SAAT,CAAmB,SAAnB,CAAR,EAFK;UAPP;QADF,MAYO;AACL,mBADK;QAZP;MAtBK;IALkB,CAApB,CA2CJ,IA3CI,CA2CC,UAAU,KAAV,EAAiB;AACvB,SAAI,CAAC,KAAD,EAAQ;AACV,WAAI,EAAE,aAAa,SAAS,cAAT,CAAf,EAAyC;AAC3C,aAAI,mBAAJ,CAD2C;AAE3C,aAAI,WAAW,QAAQ,eAAR,IAA2B,QAAQ,QAAR;;;AAFC,aAKvC,aAAa,UAAb,EAAyB;AAC3B,eAAI,mBAAmB,SAAnB,gBAAmB,CAAU,KAAV,EAAiB;AACtC,uBAAU,WAAW,cAAX,CAA0B,CAAC,QAAQ,uBAAR,IAAmC,QAAQ,gBAAR,CAApC,CAA8D,KAA9D,CAA1B,CAAV,CADsC;AAEtC,oBAAO,MAAM,QAAN,CAAe,OAAf,EAAwB,OAAxB,CAAgC,UAAhC,EAA4C,MAA5C,EAAoD,OAApD,EAA6D,OAA7D,EAAsE,UAAU,GAAV,EAAe;AAC1F,uBAD0F;AAE1F,mBAAI,QAAQ,QAAQ,gBAAR,CAAyB,MAAzB,EAAiC;AAC3C,wBAAO,iBAAiB,KAAjB,CAAP,CAD2C;gBAA7C,MAEO;AACL,wBAAO,QAAQ,OAAR,CAAgB,MAAhB,CAAuB,GAAvB,CAAP,CADK;gBAFP;cAF2E,CAA7E,CAFsC;YAAjB,CADI;;AAa3B,qBAAU,iBAAiB,CAAjB,CAAV,CAb2B;UAA7B,MAcO;AACL,qBAAU,WAAW,cAAX,CAA0B,OAA1B,CAAV;;AADK,kBAGL,GAAU,MAAM,QAAN,CAAe,OAAf,EAAwB,OAAxB,CAAgC,UAAhC,EAA4C,MAA5C,EAAoD,OAApD,CAAV,CAHK;UAdP;;AAoBA,kBAAS,cAAT,CAAwB,SAAxB,IAAqC,QAClC,IADkC,CAC7B,UAAU,IAAV,EAAgB;AAAE,kBAAO,QAAQ,YAAR,CAAqB,IAArB,CAA0B,IAA1B,EAAgC,OAAhC,EAAyC,IAAzC,CAAP,CAAF;UAAhB,CAD6B,CAElC,IAFkC,CAE7B,UAAU,IAAV,EAAgB;;AAEpB,kBAAO,SAAS,cAAT,CAAwB,SAAxB,CAAP,CAFoB;AAGpB,eAAI,QAAQ,aAAR,EAAuB;;AAEzB,sBAAS,SAAT,CAAmB,SAAnB,IAAgC,eAAe,IAAf,CAAoB,KAApB,EAA2B,IAA3B,EAAiC,YAAjC,EAA+C,SAA/C,EAA0D,OAA1D,CAAhC,CAFyB;AAGzB,sBAAS,SAAT,CAAmB,SAAnB,EAA8B,UAA9B,GAA2C,IAA3C,CAHyB;AAIzB,oBAAO,SAAS,SAAT,CAAmB,SAAnB,CAAP,CAJyB;YAA3B,MAKO;AACL,qBAAQ,OAAR,CAAgB,IAAhB,EAAsB,UAAU,IAAV,EAAgB,CAAhB,EAAmB;AACvC,oBAAK,CAAL,IAAU,WAAW,cAAX,CAA0B,IAA1B,EAAgC,QAAQ,IAAR,EAAhC,CAAV,CADuC;cAAnB,CAAtB,CADK;AAIL,oBAAO,IAAP,CAJK;YALP;UAHI,CAFR,CAzB2C;QAA7C;;AA4CA,cAAO,SAAS,cAAT,CAAwB,SAAxB,CAAP,CA7CU;MAAZ,MA8CO;;AAEL,cAAO,KAAP,CAFK;MA9CP;IADM,CA3CD,CA8FJ,IA9FI,CA8FC,UAAU,KAAV,EAAiB;AACvB,YAAO,QAAQ,OAAR,CAAgB,KAAhB,EAAuB,EAAC,gBAAD,EAAvB,EAAkC,OAAlC,CAAP,CADuB;IAAjB,CA9FD,CAgGJ,OAhGI,EAgGK,UAAU,GAAV,EAAe;AACzB,SAAI,QAAJ,EAAc;AACZ,cAAO,SAAS,cAAT,CAAwB,SAAxB,CAAP,CADY;MAAd;AAGA,YAAO,MAAM,OAAN,CAAc,SAAd,EAAyB,YAAzB,EAAuC,MAAvC,EAA+C,OAA/C,EAAwD,GAAxD,CAAP,CAJyB;IAAf,CAhGZ,CAPgE;EAAjD,C;;;;;;;;;;;;;;;;;;;ACtCjB,QAAO,OAAP,GAAiB,SAAS,aAAT,CAAwB,YAAxB,EAAsC,QAAtC,EAAgD,SAAhD,EAA2D,OAA3D,EAAoE;AACnF,OAAI,QAAQ,IAAR,CAD+E;OAEvE,UAA6B,MAApC,MAF8E;OAEtD,WAAY,MAApB,OAF8D;;AAGnF,OAAI,aAAa,MAAM,WAAN,CAAkB,YAAlB,CAAb,CAH+E;AAInF,OAAI,oBAAJ,CAJmF;;AAMnF,UAAO,IAAI,QAAQ,OAAR,CAAgB,UAAU,OAAV,EAAmB,MAAnB,EAA2B;AACpD,SAAI,QAAQ,GAAR,CAAY,QAAZ,CAAJ,EAA2B;AACzB,kBAAW,WAAW,GAAX,CAAe,QAAf,CAAX,CADyB;MAA3B;;AAIA,SAAI,QAAQ,EAAR,CAAW,SAAX,CAAJ,EAA2B;AACzB,mBAAY,CAAC,SAAD,CAAZ,CADyB;MAA3B;;AAIA,iBAAY,aAAa,EAAb,CATwC;;AAWpD,SAAI,CAAC,UAAD,EAAa;AACf,cAAO,IAAI,SAAS,GAAT,CAAa,YAAjB,CAAP,EADe;MAAjB,MAEO,IAAI,CAAC,QAAQ,EAAR,CAAW,QAAX,CAAD,EAAuB;AAChC,cAAO,IAAI,SAAS,EAAT,CAAY,oDAAhB,CAAP,EADgC;MAA3B,MAEA,IAAI,CAAC,QAAQ,EAAR,CAAW,SAAX,CAAD,EAAwB;AACjC,cAAO,IAAI,SAAS,EAAT,CAAY,2CAAhB,CAAP,EADiC;MAA5B,MAEA;;AACL,oBAAW,QAAQ,CAAR,CAAU,UAAV,EAAsB,OAAtB,CAAX;AACA,kBAAS,KAAT,CAAe,eAAf,EAAgC,QAAhC,EAA0C,SAA1C,EAAqD,QAArD;;AAEA,aAAI,QAAQ,EAAR;;AAEJ,iBAAQ,OAAR,CAAgB,WAAW,YAAX,EAAyB,UAAU,GAAV,EAAe;AACtD,eAAI,eAAe,IAAI,QAAJ,CADmC;AAEtD,eAAI,cAAc,WAAW,WAAX,CAAuB,YAAvB,CAAd,CAFkD;AAGtD,eAAI,YAAY,QAAQ,CAAR,CAAU,WAAV,EAAuB,OAAvB,CAAZ;;;AAHkD,eAMlD,CAAC,UAAU,MAAV,IAAoB,QAAQ,QAAR,CAAiB,SAAjB,EAA4B,YAA5B,CAArB,IAAkE,QAAQ,QAAR,CAAiB,SAAjB,EAA4B,IAAI,UAAJ,CAA9F,EAA+G;AACjH,iBAAI,gBAAJ,CADiH;AAEjH,iBAAI,SAAS,EAAT,CAF6G;AAGjH,iBAAI,UAAU,gBAAV,EAA4B;AAC9B,sBAAO,IAAI,UAAJ,CAAP,GAAyB,SAAS,WAAW,WAAX,CAAlC,CAD8B;cAAhC,MAEO;AACL,sBAAO,KAAP,GAAe,EAAf,CADK;AAEL,sBAAO,KAAP,CAAa,IAAI,UAAJ,CAAb,GAA+B;AAC7B,uBAAM,SAAS,WAAW,WAAX,CAAf;gBADF,CAFK;cAFP;;AASA,iBAAI,OAAO,UAAU,IAAV,EAAP,CAZ6G;AAajH,iBAAI,SAAS,IAAI,QAAJ,GAAe,QAAQ,GAAR,CAAY,QAAZ,EAAsB,IAAI,QAAJ,CAArC,GAAqD,IAArD,CAboG;AAcjH,iBAAI,YAAY,CAAC,EAAE,UAAU,WAAW,CAAX,CAAZ,CAdgG;;AAgBjH,iBAAI,OAAO,IAAI,IAAJ,KAAa,UAApB,EAAgC;AAClC,sBAAO,IAAI,IAAJ,CAAS,UAAT,EAAqB,GAArB,EAA0B,QAA1B,EAAoC,IAApC,CAAP,CADkC;cAApC,MAEO;AACL,mBAAI,IAAI,IAAJ,KAAa,SAAb,EAAwB;AAC1B,qBAAI,IAAI,SAAJ,EAAe;AACjB,0BAAO,OAAO,IAAI,UAAJ,CAAd,CADiB;AAEjB,uBAAI,OAAO,QAAQ,GAAR,CAAY,QAAZ,EAAsB,IAAI,SAAJ,CAAtB,IAAwC,EAAxC,CAFM;AAGjB,0BAAO,QAAQ,EAAR,CAAW,IAAX,IAAmB,IAAnB,GAA0B,QAAQ,IAAR,CAAa,IAAb,CAA1B,CAHU;AAIjB,0BAAO,KAAP,uBACG,YAAY,WAAZ,EAA0B;AACzB,2BAAM,IAAN;qBAFJ,CAJiB;AASjB,wBAAK,SAAL,GAAiB,IAAjB,CATiB;kBAAnB,MAUO,IAAI,IAAI,WAAJ,EAAiB;AAC1B,0BAAO,OAAO,IAAI,UAAJ,CAAd,CAD0B;AAE1B,0BAAO,KAAP,uBACG,IAAI,WAAJ,EAAkB;AACjB,+BAAU,SAAS,WAAW,WAAX,CAAnB;qBAFJ,CAF0B;kBAArB;AAQP,wBAAO,YAAY,OAAZ,CAAoB,MAApB,EAA4B,IAA5B,CAAP,CAnB0B;gBAA5B,MAoBO,IAAI,IAAI,IAAJ,KAAa,QAAb,EAAuB;AAChC,qBAAI,IAAI,QAAJ,IAAgB,SAAhB,EAA2B;AAC7B,0BAAO,YAAY,IAAZ,CAAiB,MAAjB,EAAyB,IAAzB,CAAP,CAD6B;kBAA/B,MAEO,IAAI,IAAI,UAAJ,EAAgB;AACzB,0BAAO,YAAY,OAAZ,CAAoB,MAApB,EAA4B,IAA5B,EAAkC,IAAlC,CAAuC,UAAU,OAAV,EAAmB;AAAE,4BAAO,QAAQ,MAAR,GAAiB,QAAQ,CAAR,CAAjB,GAA8B,IAA9B,CAAT;oBAAnB,CAA9C,CADyB;kBAApB;gBAHF,MAMA,IAAI,SAAJ,EAAe;AACpB,wBAAO,YAAY,IAAZ,CAAiB,MAAjB,EAAyB,IAAzB,CAAP,CADoB;gBAAf;cA7BT;;AAkCA,iBAAI,IAAJ,EAAU;AACR,mBAAI,CAAC,SAAS,aAAT,EAAwB;AAC3B,wBAAO,KAAK,IAAL,CAAU,UAAU,IAAV,EAAgB;AAC/B,4BAAS,IAAI,UAAJ,CAAT,GAA2B,IAA3B,CAD+B;kBAAhB,CAAjB,CAD2B;gBAA7B;AAKA,qBAAM,IAAN,CAAW,IAAX,EANQ;cAAV;YAlDF;UANuC,CAAzC;;AAmEA,iBAAQ,KAAR;YAzEK;MAFA;IAfkB,CAApB,CA4FJ,IA5FI,CA4FC,UAAU,KAAV,EAAiB;AAAE,YAAO,QAAQ,OAAR,CAAgB,GAAhB,CAAoB,KAApB,CAAP,CAAF;IAAjB,CA5FD,CA6FJ,IA7FI,CA6FC,YAAY;AAAE,YAAO,SAAS,kBAAT,CAA4B,IAA5B,CAAiC,QAAjC,EAA2C,QAA3C,EAAqD,QAArD,CAAP,CAAF;IAAZ,CA7FD,CA8FJ,KA9FI,CA8FE,MAAM,OAAN,CAAc,eAAd,EAA+B,YAA/B,EAA6C,QAA7C,EAAuD,SAAvD,EAAkE,OAAlE,CA9FF,CAAP,CANmF;EAApE,C;;;;;;;;;;;;;;;;;ACFjB,QAAO,OAAP,GAAiB,SAAS,IAAT,CAAe,YAAf,EAA6B,OAA7B,EAAsC;AACrD,OAAI,QAAQ,IAAR,CADiD;AAErD,OAAI,UAAU,MAAM,KAAN,CAFuC;AAGrD,OAAI,aAAa,MAAM,WAAN,CAAkB,YAAlB,CAAb,CAHiD;AAIrD,OAAI,WAAW,MAAM,KAAN,CAAY,YAAZ,CAAX,CAJiD;;AAMrD,UAAO,IAAI,QAAQ,OAAR,CAAgB,UAAU,OAAV,EAAmB,MAAnB,EAA2B;AACpD,SAAI,CAAC,UAAD,EAAa;AACf,cAAO,IAAI,MAAM,MAAN,CAAa,GAAb,CAAiB,YAArB,CAAP,EADe;MAAjB,MAEO;AACL,iBAAU,QAAQ,CAAR,CAAU,UAAV,EAAsB,OAAtB,CAAV,CADK;AAEL,WAAI,CAAC,QAAQ,cAAR,CAAuB,QAAvB,CAAD,EAAmC;AACrC,iBAAQ,MAAR,GAAiB,KAAjB,CADqC;QAAvC;AAGA,eAAQ,KAAR,CAAc,MAAd,EAAsB,OAAtB,EALK;AAML,WAAI,QAAQ,EAAR,CANC;AAOL,WAAI,MAAM,IAAI,IAAJ,GAAW,OAAX,EAAN,CAPC;AAQL,WAAI,uBAAJ;;;AARK,cAWE,CAAC,cAAc,SAAS,WAAT,CAAqB,IAArB,EAAd,CAAD,IAA+C,YAAY,OAAZ,GAAsB,GAAtB,EAA2B;AAC/E,eAAM,IAAN,CAAW,YAAY,IAAZ,CAAX,CAD+E;AAE/E,gBAAO,YAAY,IAAZ,CAFwE;AAG/E,kBAAS,WAAT,CAAqB,GAArB,GAH+E;QAAjF;AAKA,eAAQ,KAAR,EAhBK;MAFP;IADyB,CAApB,CAqBJ,IArBI,CAqBC,UAAU,KAAV,EAAiB;;AAEvB,SAAI,MAAM,MAAN,EAAc;AAChB,kBAAW,UAAX,CAAsB,OAAtB,EAA+B,KAA/B,EADgB;AAEhB,WAAI,QAAQ,MAAR,EAAgB;AAClB,oBAAW,IAAX,CAAgB,eAAhB,EAAiC,UAAjC,EAA6C,KAA7C,EADkB;QAApB;MAFF;;AAOA,SAAI,QAAQ,UAAR,KAAuB,QAAvB,EAAiC;;AACnC,aAAI,YAAY,IAAI,IAAJ,GAAW,OAAX,EAAZ;AACJ,iBAAQ,OAAR,CAAgB,KAAhB,EAAuB,UAAU,IAAV,EAAgB;AACrC,oBAAS,WAAT,CAAqB,IAArB,CAA0B;AACxB,mBAAM,IAAN;AACA,wBAAW,SAAX;AACA,sBAAS,WAAW,MAAX,GAAoB,YAAY,WAAW,MAAX,GAAoB,OAAO,SAAP;YAH/D,EADqC;UAAhB,CAAvB;YAFmC;MAArC,MASO,IAAI,QAAQ,UAAR,KAAuB,OAAvB,EAAgC;AACzC,eAAQ,OAAR,CAAgB,KAAhB,EAAuB,UAAU,IAAV,EAAgB;AACrC,oBAAW,KAAX,CAAiB,KAAK,WAAW,WAAX,CAAtB,EADqC;QAAhB,CAAvB,CADyC;MAApC,MAIA,IAAI,QAAQ,UAAR,KAAuB,SAAvB,EAAkC;;AAC3C,aAAI,QAAQ,EAAR;AACJ,iBAAQ,OAAR,CAAgB,KAAhB,EAAuB,UAAU,IAAV,EAAgB;AACrC,iBAAM,IAAN,CAAW,WAAW,OAAX,CAAmB,KAAK,WAAW,WAAX,CAAxB,CAAX,EADqC;UAAhB,CAAvB;AAGA;cAAO,QAAQ,OAAR,CAAgB,GAAhB,CAAoB,KAApB;UAAP;WAL2C;;;MAAtC;AAOP,YAAO,KAAP,CA7BuB;IAAjB,CArBD,CAmDJ,IAnDI,CAmDC,UAAU,KAAV,EAAiB;;AAEvB,SAAI,MAAM,MAAN,EAAc;AAChB,kBAAW,SAAX,CAAqB,OAArB,EAA8B,KAA9B,EADgB;AAEhB,WAAI,QAAQ,MAAR,EAAgB;AAClB,oBAAW,IAAX,CAAgB,cAAhB,EAAgC,UAAhC,EAA4C,KAA5C,EADkB;QAApB;MAFF;AAMA,YAAO,KAAP,CARuB;IAAjB,CAnDD,CA4DJ,KA5DI,CA4DE,MAAM,OAAN,CAAc,MAAd,EAAsB,YAAtB,EAAoC,OAApC,CA5DF,CAAP,CANqD;EAAtC,C;;;;;;;;;;;;;;;;;;ACCjB,QAAO,OAAP,GAAiB,SAAS,IAAT,CAAe,YAAf,EAA6B,EAA7B,EAAiC,OAAjC,EAA0C;AACzD,OAAI,QAAQ,IAAR,CADqD;OAE7C,UAA6B,MAApC,MAFoD;OAE5B,WAAY,MAApB,OAFoC;;AAGzD,OAAI,aAAa,MAAM,WAAN,CAAkB,YAAlB,CAAb,CAHqD;AAIzD,OAAI,WAAW,MAAM,KAAN,CAAY,YAAZ,CAAX,CAJqD;AAKzD,OAAI,gBAAJ;OAAU,qBAAV;OAAqB,mBAArB,CALyD;;AAOzD,UAAO,IAAI,QAAQ,OAAR,CAAgB,UAAU,OAAV,EAAmB,MAAnB,EAA2B;AACpD,UAAK,QAAQ,SAAR,CAAkB,UAAlB,EAA8B,EAA9B,CAAL,CADoD;AAEpD,SAAI,CAAC,UAAD,EAAa;AACf,cAAO,IAAI,SAAS,GAAT,CAAa,YAAjB,CAAP,EADe;MAAjB,MAEO,IAAI,CAAC,QAAQ,GAAR,CAAY,EAAZ,CAAD,EAAkB;AAC3B,cAAO,QAAQ,MAAR,CAAe,IAAf,CAAP,EAD2B;MAAtB,MAEA,IAAI,CAAC,WAAW,GAAX,CAAe,EAAf,CAAD,EAAqB;AAC9B,cAAO,IAAI,SAAS,CAAT,UAAkB,4BAAtB,CAAP,EAD8B;MAAzB,MAEA;AACL,cAAO,WAAW,GAAX,CAAe,EAAf,CAAP,CADK;AAEL,iBAAU,QAAQ,CAAR,CAAU,UAAV,EAAsB,OAAtB,CAAV,CAFK;AAGL,eAAQ,KAAR,CAAc,MAAd,EAAsB,EAAtB,EAA0B,OAA1B,EAHK;AAIL,eAAQ,IAAR,EAJK;MAFA;IANkB;;AAApB,IAgBJ,IAhBI,CAgBC,UAAU,KAAV,EAAiB;AAAE,YAAO,QAAQ,cAAR,CAAuB,IAAvB,CAA4B,KAA5B,EAAmC,OAAnC,EAA4C,KAA5C,CAAP,CAAF;IAAjB,CAhBD,CAiBJ,IAjBI,CAiBC,UAAU,KAAV,EAAiB;AAAE,YAAO,QAAQ,QAAR,CAAiB,IAAjB,CAAsB,KAAtB,EAA6B,OAA7B,EAAsC,KAAtC,CAAP,CAAF;IAAjB,CAjBD,CAkBJ,IAlBI,CAkBC,UAAU,KAAV,EAAiB;AAAE,YAAO,QAAQ,aAAR,CAAsB,IAAtB,CAA2B,KAA3B,EAAkC,OAAlC,EAA2C,KAA3C,CAAP,CAAF;IAAjB,CAlBD,CAmBJ,IAnBI,CAmBC,UAAU,KAAV,EAAiB;AAAE,YAAO,QAAQ,YAAR,CAAqB,IAArB,CAA0B,KAA1B,EAAiC,OAAjC,EAA0C,KAA1C,CAAP,CAAF;IAAjB,CAnBD,CAoBJ,IApBI,CAoBC,UAAU,KAAV,EAAiB;AACrB,SAAI,QAAQ,MAAR,EAAgB;AAClB,kBAAW,IAAX,CAAgB,iBAAhB,EAAmC,UAAnC,EAA+C,KAA/C,EADkB;MAApB;;AADqB,SAKjB,QAAQ,WAAR,EAAqB;WAOd,IAPc;;;AACvB,aAAI,SAAS,SAAT,CAAmB,EAAnB,KAA0B,OAAO,SAAS,SAAT,CAAmB,EAAnB,CAAP,KAAkC,UAAlC,EAA8C;AAC1E,oBAAS,SAAT,CAAmB,EAAnB,EAAuB,OAAvB,GAD0E;UAA5E;AAGA,aAAI,SAAS,EAAT;AACJ,aAAI,UAAU,WAAW,OAAX,CAAmB,EAAnB,CAAV;;AAEJ,cAAS,GAAT,IAAgB,QAAQ,KAAR,EAAe;AAC7B,kBAAO,IAAP,CAAY,GAAZ,EAD6B;UAA/B;AAGA,cAAK,GAAL,IAAY,QAAQ,OAAR,EAAiB;AAC3B,kBAAO,IAAP,CAAY,GAAZ,EAD2B;UAA7B;AAGA,iBAAQ,OAAR,CAAgB,QAAQ,MAAR,EAAgB,oBAAY;AAC1C,kBAAO,IAAP,CAAY,QAAZ,EAD0C;UAAZ,CAAhC;AAGA,mBAAU,QAAQ,IAAR,CAAa,KAAb,EAAoB,MAApB,CAAV;;AAEA,aAAI,QAAQ,OAAR,CAAgB,OAAhB,CAAJ,EAA8B;;AAE5B,mBAAQ,KAAR,CAAc,mBAAd,EAAmC,EAAnC,EAAuC,OAAvC,EAF4B;AAG5B,uBAAY,IAAZ,CAH4B;AAI5B;gBAAO;YAAP,CAJ4B;UAA9B,MAKO;AACL,mBAAQ,OAAR,CADK;UALP;WAlBuB;;;MAAzB;AA2BA,eAAU,WAAW,cAAX,CAA0B,OAA1B,CAAV,CAhCqB;AAiCrB,YAAO,MAAM,QAAN,CAAe,OAAf,EAAwB,MAAxB,CAA+B,UAA/B,EAA2C,EAA3C,EAA+C,QAAQ,IAAR,CAAa,KAAb,EAAoB,QAAQ,IAAR,CAAnE,EAAkF,OAAlF,CAAP,CAjCqB;IAAjB,CApBD,CAuDJ,IAvDI,CAuDC,UAAU,IAAV,EAAgB;AAAE,YAAO,QAAQ,WAAR,CAAoB,IAApB,CAAyB,IAAzB,EAA+B,OAA/B,EAAwC,IAAxC,CAAP,CAAF;IAAhB,CAvDD,CAwDJ,IAxDI,CAwDC,UAAU,KAAV,EAAiB;AACrB,SAAI,QAAQ,MAAR,EAAgB;AAClB,kBAAW,IAAX,CAAgB,gBAAhB,EAAkC,UAAlC,EAA8C,KAA9C,EADkB;MAApB;AAGA,SAAI,SAAJ,EAAe;;AAEb,cAAO,KAAP,CAFa;MAAf,MAGO,IAAI,QAAQ,aAAR,EAAuB;;AAEhC,WAAI,WAAW,WAAW,MAAX,CAAkB,KAAlB,EAAyB,QAAQ,IAAR,EAAzB,CAAX;;AAF4B,eAIhC,CAAS,KAAT,CAAe,EAAf,IAAqB,QAAQ,eAAR,CAAwB,SAAS,KAAT,CAAe,EAAf,CAAxB,CAArB,CAJgC;AAKhC,WAAI,CAAC,WAAW,oBAAX,EAAiC;AACpC,kBAAS,kBAAT,CAA4B,EAA5B,IAAkC,QAAQ,IAAR,CAAa,QAAb,EAAuB,IAAvB,EAA6B,IAA7B,EAAmC,IAAnC,EAAyC,WAAW,cAAX,CAA3E,CADoC;QAAtC;AAGA,cAAO,QAAP,CARgC;MAA3B,MASA;;AAEL,cAAO,WAAW,cAAX,CAA0B,KAA1B,EAAiC,QAAQ,IAAR,EAAjC,CAAP,CAFK;MATA;IAPH,CAxDD,CA6EJ,IA7EI,CA6EC,UAAU,IAAV,EAAgB;AACpB,YAAO,QAAQ,OAAR,CAAgB,IAAhB,EAAsB,EAAC,gBAAD,EAAtB,EAAiC,OAAjC,CAAP,CADoB;IAAhB,CA7ED,CAgFJ,KAhFI,CAgFE,MAAM,OAAN,CAAc,MAAd,EAAsB,YAAtB,EAAoC,EAApC,EAAwC,OAAxC,CAhFF,CAAP,CAPyD;EAA1C,C;;;;;;;;;;;;;;;;;ACCjB,QAAO,OAAP,GAAiB,SAAS,MAAT,CAAiB,YAAjB,EAA+B,EAA/B,EAAmC,KAAnC,EAA0C,OAA1C,EAAmD;AAClE,OAAI,QAAQ,IAAR,CAD8D;OAEtD,UAA6B,MAApC,MAF6D;OAErC,WAAY,MAApB,OAF6C;;AAGlE,OAAI,aAAa,MAAM,WAAN,CAAkB,YAAlB,CAAb,CAH8D;AAIlE,OAAI,mBAAJ,CAJkE;;AAMlE,UAAO,IAAI,QAAQ,OAAR,CAAgB,UAAU,OAAV,EAAmB,MAAnB,EAA2B;AACpD,UAAK,QAAQ,SAAR,CAAkB,UAAlB,EAA8B,EAA9B,CAAL,CADoD;AAEpD,SAAI,CAAC,UAAD,EAAa;AACf,cAAO,IAAI,SAAS,GAAT,CAAa,YAAjB,CAAP,EADe;MAAjB,MAEO,IAAI,CAAC,QAAQ,GAAR,CAAY,EAAZ,CAAD,EAAkB;AAC3B,cAAO,QAAQ,MAAR,CAAe,IAAf,CAAP,EAD2B;MAAtB,MAEA;AACL,iBAAU,QAAQ,CAAR,CAAU,UAAV,EAAsB,OAAtB,CAAV,CADK;AAEL,eAAQ,KAAR,CAAc,QAAd,EAAwB,EAAxB,EAA4B,KAA5B,EAAmC,OAAnC,EAFK;AAGL,eAAQ,KAAR,EAHK;MAFA;IAJkB;;AAApB,IAaJ,IAbI,CAaC,UAAU,KAAV,EAAiB;AAAE,YAAO,QAAQ,cAAR,CAAuB,IAAvB,CAA4B,KAA5B,EAAmC,OAAnC,EAA4C,KAA5C,CAAP,CAAF;IAAjB,CAbD,CAcJ,IAdI,CAcC,UAAU,KAAV,EAAiB;AAAE,YAAO,QAAQ,QAAR,CAAiB,IAAjB,CAAsB,KAAtB,EAA6B,OAA7B,EAAsC,KAAtC,CAAP,CAAF;IAAjB,CAdD,CAeJ,IAfI,CAeC,UAAU,KAAV,EAAiB;AAAE,YAAO,QAAQ,aAAR,CAAsB,IAAtB,CAA2B,KAA3B,EAAkC,OAAlC,EAA2C,KAA3C,CAAP,CAAF;IAAjB,CAfD,CAgBJ,IAhBI,CAgBC,UAAU,KAAV,EAAiB;AAAE,YAAO,QAAQ,YAAR,CAAqB,IAArB,CAA0B,KAA1B,EAAiC,OAAjC,EAA0C,KAA1C,CAAP,CAAF;IAAjB,CAhBD,CAiBJ,IAjBI,CAiBC,UAAU,KAAV,EAAiB;AACrB,SAAI,QAAQ,MAAR,EAAgB;AAClB,kBAAW,IAAX,CAAgB,iBAAhB,EAAmC,UAAnC,EAA+C,KAA/C,EADkB;MAApB;AAGA,eAAU,WAAW,cAAX,CAA0B,OAA1B,CAAV,CAJqB;AAKrB,YAAO,MAAM,QAAN,CAAe,OAAf,EAAwB,MAAxB,CAA+B,UAA/B,EAA2C,EAA3C,EAA+C,QAAQ,IAAR,CAAa,KAAb,EAAoB,QAAQ,IAAR,CAAnE,EAAkF,OAAlF,CAAP,CALqB;IAAjB,CAjBD,CAwBJ,IAxBI,CAwBC,UAAU,IAAV,EAAgB;AAAE,YAAO,QAAQ,WAAR,CAAoB,IAApB,CAAyB,IAAzB,EAA+B,OAA/B,EAAwC,IAAxC,CAAP,CAAF;IAAhB,CAxBD,CAyBJ,IAzBI,CAyBC,UAAU,KAAV,EAAiB;AACrB,SAAI,QAAQ,MAAR,EAAgB;AAClB,kBAAW,IAAX,CAAgB,gBAAhB,EAAkC,UAAlC,EAA8C,KAA9C,EADkB;MAApB;AAGA,SAAI,QAAQ,aAAR,EAAuB;;AAEzB,WAAI,WAAW,WAAW,MAAX,CAAkB,KAAlB,EAAyB,QAAQ,IAAR,EAAzB,CAAX,CAFqB;AAGzB,WAAI,WAAW,MAAM,KAAN,CAAY,YAAZ,CAAX,CAHqB;AAIzB,WAAI,MAAK,SAAS,WAAW,WAAX,CAAd;;AAJqB,eAMzB,CAAS,KAAT,CAAe,GAAf,IAAqB,QAAQ,eAAR,CAAwB,SAAS,KAAT,CAAe,GAAf,CAAxB,CAArB,CANyB;AAOzB,WAAI,CAAC,WAAW,oBAAX,EAAiC;AACpC,kBAAS,kBAAT,CAA4B,GAA5B,IAAkC,QAAQ,IAAR,CAAa,QAAb,EAAuB,IAAvB,EAA6B,IAA7B,EAAmC,IAAnC,EAAyC,WAAW,cAAX,CAA3E,CADoC;QAAtC;AAGA,cAAO,QAAP,CAVyB;MAA3B,MAWO;;AAEL,cAAO,WAAW,cAAX,CAA0B,KAA1B,EAAiC,QAAQ,IAAR,EAAjC,CAAP,CAFK;MAXP;IAJI,CAzBD,CA6CJ,IA7CI,CA6CC,UAAU,IAAV,EAAgB;AACpB,YAAO,QAAQ,OAAR,CAAgB,IAAhB,EAAsB,EAAC,gBAAD,EAAtB,EAAiC,OAAjC,CAAP,CADoB;IAAhB,CA7CD,CAgDJ,KAhDI,CAgDE,MAAM,OAAN,CAAc,QAAd,EAAwB,YAAxB,EAAsC,EAAtC,EAA0C,KAA1C,EAAiD,OAAjD,CAhDF,CAAP,CANkE;EAAnD,C;;;;;;;;;;;;;;;;;;;ACAjB,QAAO,OAAP,GAAiB,SAAS,SAAT,CAAoB,YAApB,EAAkC,KAAlC,EAAyC,MAAzC,EAAiD,OAAjD,EAA0D;AACzE,OAAI,QAAQ,IAAR,CADqE;OAE7D,UAA6B,MAApC,MAFoE;OAE5C,WAAY,MAApB,OAFoD;;AAGzE,OAAI,aAAa,MAAM,WAAN,CAAkB,YAAlB,CAAb,CAHqE;AAIzE,OAAI,mBAAJ,CAJyE;;AAMzE,UAAO,IAAI,QAAQ,OAAR,CAAgB,UAAU,OAAV,EAAmB,MAAnB,EAA2B;AACpD,SAAI,CAAC,UAAD,EAAa;AACf,cAAO,IAAI,SAAS,GAAT,CAAa,YAAjB,CAAP,EADe;MAAjB,MAEO;AACL,iBAAU,QAAQ,CAAR,CAAU,UAAV,EAAsB,OAAtB,CAAV,CADK;AAEL,eAAQ,KAAR,CAAc,WAAd,EAA2B,KAA3B,EAAkC,MAAlC,EAA0C,OAA1C,EAFK;AAGL,eAAQ,UAAR,CAAmB,UAAnB,EAA+B,MAA/B,EAAuC,OAAvC,EAHK;AAIL,eAAQ,KAAR,EAJK;MAFP;IADyB;;AAApB,IAWJ,IAXI,CAWC,UAAU,KAAV,EAAiB;AAAE,YAAO,QAAQ,cAAR,CAAuB,IAAvB,CAA4B,KAA5B,EAAmC,OAAnC,EAA4C,KAA5C,CAAP,CAAF;IAAjB,CAXD,CAYJ,IAZI,CAYC,UAAU,KAAV,EAAiB;AAAE,YAAO,QAAQ,QAAR,CAAiB,IAAjB,CAAsB,KAAtB,EAA6B,OAA7B,EAAsC,KAAtC,CAAP,CAAF;IAAjB,CAZD,CAaJ,IAbI,CAaC,UAAU,KAAV,EAAiB;AAAE,YAAO,QAAQ,aAAR,CAAsB,IAAtB,CAA2B,KAA3B,EAAkC,OAAlC,EAA2C,KAA3C,CAAP,CAAF;IAAjB,CAbD,CAcJ,IAdI,CAcC,UAAU,KAAV,EAAiB;AAAE,YAAO,QAAQ,YAAR,CAAqB,IAArB,CAA0B,KAA1B,EAAiC,OAAjC,EAA0C,KAA1C,CAAP,CAAF;IAAjB,CAdD,CAeJ,IAfI,CAeC,UAAU,KAAV,EAAiB;AACrB,SAAI,QAAQ,MAAR,EAAgB;AAClB,kBAAW,IAAX,CAAgB,iBAAhB,EAAmC,UAAnC,EAA+C,KAA/C,EADkB;MAApB;AAGA,eAAU,WAAW,cAAX,CAA0B,OAA1B,CAAV,CAJqB;AAKrB,YAAO,MAAM,QAAN,CAAe,OAAf,EAAwB,SAAxB,CAAkC,UAAlC,EAA8C,QAAQ,IAAR,CAAa,KAAb,EAAoB,QAAQ,IAAR,CAAlE,EAAiF,MAAjF,EAAyF,OAAzF,CAAP,CALqB;IAAjB,CAfD,CAsBJ,IAtBI,CAsBC,UAAU,IAAV,EAAgB;AAAE,YAAO,QAAQ,WAAR,CAAoB,IAApB,CAAyB,IAAzB,EAA+B,OAA/B,EAAwC,IAAxC,CAAP,CAAF;IAAhB,CAtBD,CAuBJ,IAvBI,CAuBC,UAAU,IAAV,EAAgB;AACpB,SAAI,QAAQ,MAAR,EAAgB;AAClB,kBAAW,IAAX,CAAgB,gBAAhB,EAAkC,UAAlC,EAA8C,KAA9C,EADkB;MAApB;AAGA,SAAI,cAAc,QAAQ,IAAR,EAAd,CAJgB;AAKpB,SAAI,QAAQ,aAAR,EAAuB;;;AAEzB,aAAI,WAAW,WAAW,MAAX,CAAkB,IAAlB,EAAwB,WAAxB,CAAX;AACJ,aAAI,WAAW,MAAM,KAAN,CAAY,YAAZ,CAAX;;AAEJ,iBAAQ,OAAR,CAAgB,QAAhB,EAA0B,aAAK;AAC7B,eAAI,KAAK,EAAE,WAAW,WAAX,CAAP,CADyB;AAE7B,oBAAS,KAAT,CAAe,EAAf,IAAqB,QAAQ,eAAR,CAAwB,SAAS,KAAT,CAAe,EAAf,CAAxB,CAArB,CAF6B;AAG7B,eAAI,CAAC,WAAW,oBAAX,EAAiC;AACpC,sBAAS,kBAAT,CAA4B,EAA5B,IAAkC,QAAQ,IAAR,CAAa,CAAb,EAAgB,IAAhB,EAAsB,IAAtB,EAA4B,IAA5B,EAAkC,WAAW,cAAX,CAApE,CADoC;YAAtC;UAHwB,CAA1B;AAOA;cAAO;UAAP;WAZyB;;;MAA3B,MAaO;;;AAEL,aAAI,YAAY,EAAZ;AACJ,iBAAQ,OAAR,CAAgB,IAAhB,EAAsB,gBAAQ;AAC5B,qBAAU,IAAV,CAAe,WAAW,cAAX,CAA0B,IAA1B,EAAgC,WAAhC,CAAf,EAD4B;UAAR,CAAtB;AAGA;cAAO;UAAP;WANK;;;MAbP;IALI,CAvBD,CAkDJ,IAlDI,CAkDC,UAAU,KAAV,EAAiB;AACrB,YAAO,QAAQ,OAAR,CAAgB,KAAhB,EAAuB,EAAC,gBAAD,EAAvB,EAAkC,OAAlC,CAAP,CADqB;IAAjB,CAlDD,CAqDJ,KArDI,CAqDE,MAAM,OAAN,CAAc,WAAd,EAA2B,YAA3B,EAAyC,KAAzC,EAAgD,MAAhD,EAAwD,OAAxD,CArDF,CAAP,CANyE;EAA1D,C","file":"./dist/js-data-debug.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[\"JSData\"] = factory();\n\telse\n\t\troot[\"JSData\"] = factory();\n})(this, function() {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/universalModuleDefinition\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\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\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.loaded = 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// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap b0fc43e98a7bb8ccf5f5\n **/","import DS from './datastore/index'\nimport DSUtils from './utils'\nimport DSErrors from './errors'\n\n/**\n * The library export.\n * - window.JSData\n * - require('js-data')\n * - define(['js-data', function (JSData) { ... }]);\n * - import JSData from 'js-data'\n */\nmodule.exports = {\n DS,\n DSUtils,\n DSErrors,\n createStore (options) {\n return new DS(options)\n },\n version: {\n full: '<%= pkg.version %>',\n major: parseInt('<%= major %>', 10),\n minor: parseInt('<%= minor %>', 10),\n patch: parseInt('<%= patch %>', 10),\n alpha: '<%= alpha %>' !== 'false' ? '<%= alpha %>' : false,\n beta: '<%= beta %>' !== 'false' ? '<%= beta %>' : false\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/index.js\n **/","/* jshint eqeqeq:false */\nimport DSUtils from '../utils'\nimport DSErrors from '../errors'\nimport syncMethods from './sync_methods/index'\nimport asyncMethods from './async_methods/index'\n\nfunction lifecycleNoopCb (resource, attrs, cb) {\n cb(null, attrs)\n}\n\nfunction lifecycleNoop (resource, attrs) {\n return attrs\n}\n\nfunction compare (orderBy, index, a, b) {\n let def = orderBy[index]\n let cA = DSUtils.get(a, def[0])\n let cB = DSUtils.get(b, def[0])\n if (DSUtils._s(cA)) {\n cA = DSUtils.upperCase(cA)\n }\n if (DSUtils._s(cB)) {\n cB = DSUtils.upperCase(cB)\n }\n if (def[1] === 'DESC') {\n if (cB < cA) {\n return -1\n } else if (cB > cA) {\n return 1\n } else {\n if (index < orderBy.length - 1) {\n return compare(orderBy, index + 1, a, b)\n } else {\n return 0\n }\n }\n } else {\n if (cA < cB) {\n return -1\n } else if (cA > cB) {\n return 1\n } else {\n if (index < orderBy.length - 1) {\n return compare(orderBy, index + 1, a, b)\n } else {\n return 0\n }\n }\n }\n}\n\nclass Defaults {\n errorFn (a, b) {\n if (this.error && typeof this.error === 'function') {\n try {\n if (typeof a === 'string') {\n throw new Error(a)\n } else {\n throw a\n }\n } catch (err) {\n a = err\n }\n this.error(this.name || null, a || null, b || null)\n }\n }\n}\n\nvar defaultsPrototype = Defaults.prototype\n\ndefaultsPrototype.actions = {}\ndefaultsPrototype.afterCreate = lifecycleNoopCb\ndefaultsPrototype.afterCreateCollection = lifecycleNoop\ndefaultsPrototype.afterCreateInstance = lifecycleNoop\ndefaultsPrototype.afterDestroy = lifecycleNoopCb\ndefaultsPrototype.afterEject = lifecycleNoop\ndefaultsPrototype.afterFind = lifecycleNoopCb\ndefaultsPrototype.afterFindAll = lifecycleNoopCb\ndefaultsPrototype.afterInject = lifecycleNoop\ndefaultsPrototype.afterLoadRelations = lifecycleNoopCb\ndefaultsPrototype.afterReap = lifecycleNoop\ndefaultsPrototype.afterUpdate = lifecycleNoopCb\ndefaultsPrototype.afterValidate = lifecycleNoopCb\ndefaultsPrototype.allowSimpleWhere = true\ndefaultsPrototype.basePath = ''\ndefaultsPrototype.beforeCreate = lifecycleNoopCb\ndefaultsPrototype.beforeCreateCollection = lifecycleNoop\ndefaultsPrototype.beforeCreateInstance = lifecycleNoop\ndefaultsPrototype.beforeDestroy = lifecycleNoopCb\ndefaultsPrototype.beforeEject = lifecycleNoop\ndefaultsPrototype.beforeInject = lifecycleNoop\ndefaultsPrototype.beforeReap = lifecycleNoop\ndefaultsPrototype.beforeUpdate = lifecycleNoopCb\ndefaultsPrototype.beforeValidate = lifecycleNoopCb\ndefaultsPrototype.bypassCache = false\ndefaultsPrototype.cacheResponse = !!DSUtils.w\ndefaultsPrototype.csp = false\ndefaultsPrototype.clearEmptyQueries = true\ndefaultsPrototype.computed = {}\ndefaultsPrototype.defaultAdapter = 'http'\ndefaultsPrototype.debug = false\ndefaultsPrototype.defaultValues = {}\ndefaultsPrototype.eagerEject = false\n// TODO: Implement eagerInject in DS#create\ndefaultsPrototype.eagerInject = false\ndefaultsPrototype.endpoint = ''\ndefaultsPrototype.error = console ? (a, b, c) => console[typeof console.error === 'function' ? 'error' : 'log'](a, b, c) : false\ndefaultsPrototype.errorHandler = function (...args) {\n return DSUtils.Promise.reject(args[0])\n}\ndefaultsPrototype.fallbackAdapters = ['http']\ndefaultsPrototype.findStrictCache = false\ndefaultsPrototype.idAttribute = 'id'\ndefaultsPrototype.ignoredChanges = [/\\$/]\ndefaultsPrototype.instanceEvents = !!DSUtils.w\ndefaultsPrototype.keepChangeHistory = false\ndefaultsPrototype.linkRelations = !!DSUtils.w\ndefaultsPrototype.log = console ? (a, b, c, d, e) => console[typeof console.info === 'function' ? 'info' : 'log'](a, b, c, d, e) : false\n\ndefaultsPrototype.logFn = function (a, b, c, d) {\n let _this = this\n if (_this.debug && _this.log && typeof _this.log === 'function') {\n _this.log(_this.name || null, a || null, b || null, c || null, d || null)\n }\n}\n\ndefaultsPrototype.maxAge = false\ndefaultsPrototype.methods = {}\ndefaultsPrototype.notify = !!DSUtils.w\ndefaultsPrototype.omit = []\ndefaultsPrototype.onConflict = 'merge'\ndefaultsPrototype.reapAction = DSUtils.w ? 'inject' : 'none'\ndefaultsPrototype.reapInterval = DSUtils.w ? 30000 : false\ndefaultsPrototype.relationsEnumerable = false\ndefaultsPrototype.resetHistoryOnInject = true\ndefaultsPrototype.returnMeta = false\ndefaultsPrototype.scopes = {}\ndefaultsPrototype.strategy = 'single'\ndefaultsPrototype.upsert = !!DSUtils.w\ndefaultsPrototype.useClass = true\ndefaultsPrototype.useFilter = false\ndefaultsPrototype.validate = lifecycleNoopCb\ndefaultsPrototype.watchChanges = !!DSUtils.w\n\nlet escapeRegExp = /([.*+?^=!:${}()|[\\]\\/\\\\])/g\nlet percentRegExp = /%/g\nlet underscoreRegExp = /_/g\n\nfunction escape (pattern) {\n return pattern.replace(escapeRegExp, '\\\\$1')\n}\n\nfunction like (pattern, flags) {\n return new RegExp(`^${(escape(pattern).replace(percentRegExp, '.*').replace(underscoreRegExp, '.'))}$`, flags)\n}\n\ndefaultsPrototype.defaultFilter = function (collection, resourceName, params, options) {\n let definition = this.definitions[resourceName]\n let idA = 'id'\n let resource\n if (definition) {\n idA = definition.idAttribute\n resource = this.store[resourceName]\n }\n let filtered = collection\n let where = null\n let reserved = {\n skip: '',\n offset: '',\n where: '',\n limit: '',\n orderBy: '',\n sort: ''\n }\n\n params = params || {}\n options = options || {}\n\n if (DSUtils._o(params.where)) {\n where = params.where\n } else {\n where = {}\n }\n\n if (options.allowSimpleWhere) {\n DSUtils.forOwn(params, function (value, key) {\n if (!(key in reserved) && !(key in where)) {\n where[key] = {\n '==': value\n }\n }\n })\n }\n\n if (DSUtils.isEmpty(where)) {\n where = null\n }\n\n if (where) {\n filtered = DSUtils.filter(filtered, function (attrs) {\n let first = true\n let keep = true\n\n if (options.excludeTemporary && resource && resource.temporaryItems[attrs[idA]]) {\n return false\n }\n\n DSUtils.forOwn(where, function (clause, field) {\n if (!DSUtils._o(clause)) {\n clause = {\n '==': clause\n }\n }\n DSUtils.forOwn(clause, function (term, op) {\n let expr\n let isOr = op[0] === '|'\n let val = DSUtils.get(attrs, field)\n op = isOr ? op.substr(1) : op\n if (op === '==') {\n expr = val == term // eslint-disable-line\n } else if (op === '===') {\n expr = val === term\n } else if (op === '!=') {\n expr = val != term // eslint-disable-line\n } else if (op === '!==') {\n expr = val !== term\n } else if (op === '>') {\n expr = val > term\n } else if (op === '>=') {\n expr = val >= term\n } else if (op === '<') {\n expr = val < term\n } else if (op === '<=') {\n expr = val <= term\n } else if (op === 'isectEmpty') {\n expr = !DSUtils.intersection((val || []), (term || [])).length\n } else if (op === 'isectNotEmpty') {\n expr = DSUtils.intersection((val || []), (term || [])).length\n } else if (op === 'in') {\n if (DSUtils._s(term)) {\n expr = term.indexOf(val) !== -1\n } else {\n expr = DSUtils.contains(term, val)\n }\n } else if (op === 'notIn') {\n if (DSUtils._s(term)) {\n expr = term.indexOf(val) === -1\n } else {\n expr = !DSUtils.contains(term, val)\n }\n } else if (op.indexOf('like') === 0) {\n expr = like(term, op.substr(4)).exec(val) !== null\n } else if (op.indexOf('notLike') === 0) {\n expr = like(term, op.substr(7)).exec(val) === null\n } else if (op === 'contains') {\n if (DSUtils._s(val)) {\n expr = val.indexOf(term) !== -1\n } else {\n expr = DSUtils.contains(val, term)\n }\n } else if (op === 'notContains') {\n if (DSUtils._s(val)) {\n expr = val.indexOf(term) === -1\n } else {\n expr = !DSUtils.contains(val, term)\n }\n }\n if (expr !== undefined) {\n keep = first ? expr : (isOr ? keep || expr : keep && expr)\n }\n first = false\n })\n })\n\n return keep\n })\n } else if (options.excludeTemporary && resource) {\n filtered = DSUtils.filter(filtered, function (attrs) {\n return resource.temporaryItems[attrs[idA]]\n })\n }\n\n let orderBy = null\n\n if (DSUtils._s(params.orderBy)) {\n orderBy = [\n [params.orderBy, 'ASC']\n ]\n } else if (DSUtils._a(params.orderBy)) {\n orderBy = params.orderBy\n }\n\n if (!orderBy && DSUtils._s(params.sort)) {\n orderBy = [\n [params.sort, 'ASC']\n ]\n } else if (!orderBy && DSUtils._a(params.sort)) {\n orderBy = params.sort\n }\n\n // Apply 'orderBy'\n if (orderBy) {\n let index = 0\n DSUtils.forEach(orderBy, function (def, i) {\n if (DSUtils._s(def)) {\n orderBy[i] = [def, 'ASC']\n } else if (!DSUtils._a(def)) {\n throw new DSErrors.IA(`DS.filter(\"${resourceName}\"[, params][, options]): ${DSUtils.toJson(def)}: Must be a string or an array!`, {\n params: {\n 'orderBy[i]': {\n actual: typeof def,\n expected: 'string|array'\n }\n }\n })\n }\n })\n filtered = DSUtils.sort(filtered, function (a, b) {\n return compare(orderBy, index, a, b)\n })\n }\n\n let limit = DSUtils._n(params.limit) ? params.limit : null\n let skip = null\n\n if (DSUtils._n(params.skip)) {\n skip = params.skip\n } else if (DSUtils._n(params.offset)) {\n skip = params.offset\n }\n\n // Apply 'limit' and 'skip'\n if (limit && skip) {\n filtered = DSUtils.slice(filtered, skip, Math.min(filtered.length, skip + limit))\n } else if (DSUtils._n(limit)) {\n filtered = DSUtils.slice(filtered, 0, Math.min(filtered.length, limit))\n } else if (DSUtils._n(skip)) {\n if (skip < filtered.length) {\n filtered = DSUtils.slice(filtered, skip)\n } else {\n filtered = []\n }\n }\n\n return filtered === collection ? filtered.slice() : filtered\n}\n\nclass DS {\n constructor (options) {\n let _this = this\n options = options || {}\n\n _this.store = {}\n _this.definitions = {}\n _this.adapters = {}\n _this.defaults = new Defaults()\n _this.observe = DSUtils.observe\n DSUtils.forOwn(options, function (v, k) {\n if (k === 'omit') {\n _this.defaults.omit = v.concat(Defaults.prototype.omit)\n } else {\n _this.defaults[k] = v\n }\n })\n _this.defaults.logFn('new data store created', _this.defaults)\n\n let P = DSUtils.Promise\n\n if (P && !P.prototype.spread) {\n P.prototype.spread = function (cb) {\n return this.then(function (arr) {\n return cb.apply(this, arr)\n })\n }\n }\n\n DSUtils.Events(_this)\n }\n\n getAdapterName (options) {\n let errorIfNotExist = false\n options = options || {}\n this.defaults.logFn('getAdapterName', options)\n if (DSUtils._s(options)) {\n errorIfNotExist = true\n options = {\n adapter: options\n }\n }\n if (this.adapters[options.adapter]) {\n return options.adapter\n } else if (errorIfNotExist) {\n throw new Error(`${options.adapter} is not a registered adapter!`)\n } else {\n return options.defaultAdapter\n }\n }\n\n getAdapter (options) {\n options = options || {}\n this.defaults.logFn('getAdapter', options)\n return this.adapters[this.getAdapterName(options)]\n }\n\n registerAdapter (name, Adapter, options) {\n let _this = this\n options = options || {}\n _this.defaults.logFn('registerAdapter', name, Adapter, options)\n if (DSUtils.isFunction(Adapter)) {\n _this.adapters[name] = new Adapter(options)\n } else {\n _this.adapters[name] = Adapter\n }\n if (options.default) {\n _this.defaults.defaultAdapter = name\n }\n _this.defaults.logFn(`default adapter is ${_this.defaults.defaultAdapter}`)\n }\n\n is (resourceName, instance) {\n let definition = this.definitions[resourceName]\n if (!definition) {\n throw new DSErrors.NER(resourceName)\n }\n return instance instanceof definition[definition.class]\n }\n\n clear () {\n let ejected = {}\n DSUtils.forOwn(this.definitions, (definition) => {\n let name = definition.name\n ejected[name] = definition.ejectAll()\n this.store[name].completedQueries = {}\n this.store[name].queryData = {}\n })\n return ejected\n }\n\n errorFn (...args) {\n let options = args[args.length - 1]\n let defaultHandler = this.defaults.errorHandler\n let errorHandler = options ? options.errorHandler : defaultHandler\n errorHandler = errorHandler || defaultHandler\n return function (err) {\n return errorHandler(err, ...args)\n }\n }\n}\n\nvar dsPrototype = DS.prototype\n\ndsPrototype.getAdapterName.shorthand = false\ndsPrototype.getAdapter.shorthand = false\ndsPrototype.registerAdapter.shorthand = false\ndsPrototype.errors = DSErrors\ndsPrototype.utils = DSUtils\n\nfunction addMethods (target, obj) {\n DSUtils.forOwn(obj, function (v, k) {\n target[k] = v\n target[k].before = function (fn) {\n let orig = target[k]\n target[k] = function (...args) {\n return orig.apply(this, fn.apply(this, args) || args)\n }\n }\n })\n}\n\naddMethods(dsPrototype, syncMethods)\naddMethods(dsPrototype, asyncMethods)\n\nexport default DS\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/datastore/index.js\n **/","/* jshint eqeqeq:false */\n\n/**\n * Mix of ES6 and CommonJS module imports because the interop of Babel + Webpack + ES6 modules + CommonJS isn't very good.\n */\nimport DSErrors from './errors'\nlet BinaryHeap = require('yabh')\nlet forEach = require('mout/array/forEach')\nlet slice = require('mout/array/slice')\nlet forOwn = require('mout/object/forOwn')\nlet contains = require('mout/array/contains')\nlet deepMixIn = require('mout/object/deepMixIn')\nlet pascalCase = require('mout/string/pascalCase')\nlet remove = require('mout/array/remove')\nlet pick = require('mout/object/pick')\nlet _keys = require('mout/object/keys')\nlet sort = require('mout/array/sort')\nlet upperCase = require('mout/string/upperCase')\nlet get = require('mout/object/get')\nlet set = require('mout/object/set')\nlet observe = require('../lib/observe-js/observe.js')\nlet guid = require('mout/random/guid')\nlet w, P, File\nlet objectProto = Object.prototype\nlet toString = objectProto.toString\n\n/**\n * Attempt to detect the global Promise constructor.\n * JSData will still work without one, as long you do something like this:\n *\n * var JSData = require('js-data');\n * JSData.DSUtils.Promise = MyPromiseLib;\n */\ntry {\n P = Promise\n} catch (e) {\n console.error('js-data requires a global Promise constructor!')\n}\n\ntry {\n File = window.File\n} catch (e) {\n File = function () {}\n}\n\nfunction _isArray (value) {\n return toString.call(value) === '[object Array]' || false\n}\n\nlet isArray = Array.isArray || _isArray\n\nfunction isRegExp (value) {\n return toString.call(value) === '[object RegExp]' || false\n}\n\n// adapted from lodash.isString\nfunction isString (value) {\n return typeof value === 'string' || (value && typeof value === 'object' && toString.call(value) === '[object String]') || false\n}\n\nfunction isObject (value) {\n return toString.call(value) === '[object Object]' || false\n}\n\n// adapted from lodash.isDate\nfunction isDate (value) {\n return (value && typeof value === 'object' && toString.call(value) === '[object Date]') || false\n}\n\n// adapted from lodash.isNumber\nfunction isNumber (value) {\n let type = typeof value\n return type === 'number' || (value && type === 'object' && toString.call(value) === '[object Number]') || false\n}\n\n// adapted from lodash.isFunction\nfunction isFunction (value) {\n return typeof value === 'function' || (value && toString.call(value) === '[object Function]') || false\n}\n\n// shorthand argument checking functions, using these shaves 1.18 kb off of the minified build\nfunction isStringOrNumber (value) {\n return isString(value) || isNumber(value)\n}\n\nfunction isStringOrNumberErr (field) {\n return new DSErrors.IA(`\"${field}\" must be a string or a number!`)\n}\n\nfunction isObjectErr (field) {\n return new DSErrors.IA(`\"${field}\" must be an object!`)\n}\n\nfunction isArrayErr (field) {\n return new DSErrors.IA(`\"${field}\" must be an array!`)\n}\n\n// adapted from mout.isEmpty\nfunction isEmpty (val) {\n if (val == null) { // jshint ignore:line\n // typeof null == 'object' so we check it first\n return true\n } else if (typeof val === 'string' || isArray(val)) {\n return !val.length\n } else if (typeof val === 'object') {\n let result = true\n forOwn(val, function () {\n result = false\n return false // break loop\n })\n return result\n } else {\n return true\n }\n}\n\n// Find the intersection between two arrays\nfunction intersection (array1, array2) {\n if (!array1 || !array2) {\n return []\n }\n let result = []\n let item\n for (let i = 0, length = array1.length; i < length; i++) {\n item = array1[i]\n if (contains(result, item)) {\n continue\n }\n if (contains(array2, item)) {\n result.push(item)\n }\n }\n return result\n}\n\nfunction filter (array, cb, thisObj) {\n let results = []\n forEach(array, function (value, key, arr) {\n if (cb(value, key, arr)) {\n results.push(value)\n }\n }, thisObj)\n return results\n}\n\n/**\n * Attempt to detect whether we are in the browser.\n */\ntry {\n w = window\n w = {}\n} catch (e) {\n w = null\n}\n\n/**\n * Event mixin. Usage:\n *\n * function handler() { ... }\n * Events(myObject);\n * myObject.on('foo', handler);\n * myObject.emit('foo', 'some', 'data');\n * myObject.off('foo', handler);\n */\nfunction Events (target) {\n let events = {}\n target = target || this\n Object.defineProperties(target, {\n on: {\n value: function (type, func, ctx) {\n events[type] = events[type] || []\n events[type].push({\n f: func,\n c: ctx\n })\n }\n },\n off: {\n value: function (type, func) {\n let listeners = events[type]\n if (!listeners) {\n events = {}\n } else if (func) {\n for (let i = 0; i < listeners.length; i++) {\n if (listeners[i].f === func) {\n listeners.splice(i, 1)\n break\n }\n }\n } else {\n listeners.splice(0, listeners.length)\n }\n }\n },\n emit: {\n value: function (...args) {\n let listeners = events[args.shift()] || []\n if (listeners) {\n for (let i = 0; i < listeners.length; i++) {\n listeners[i].f.apply(listeners[i].c, args)\n }\n }\n }\n }\n })\n}\n\n/**\n * Lifecycle hooks that should support promises.\n */\nlet toPromisify = [\n 'beforeValidate',\n 'validate',\n 'afterValidate',\n 'beforeCreate',\n 'afterCreate',\n 'beforeUpdate',\n 'afterUpdate',\n 'beforeDestroy',\n 'afterDestroy'\n]\n\n/**\n * Return whether \"prop\" is in the blacklist.\n */\nlet isBlacklisted = observe.isBlacklisted\n\n// adapted from angular.copy\nfunction copy (source, destination, stackSource, stackDest, blacklist) {\n if (!destination) {\n destination = source\n if (source) {\n if (isArray(source)) {\n destination = copy(source, [], stackSource, stackDest, blacklist)\n } else if (isDate(source)) {\n destination = new Date(source.getTime())\n } else if (isRegExp(source)) {\n destination = new RegExp(source.source, source.toString().match(/[^\\/]*$/)[0])\n destination.lastIndex = source.lastIndex\n } else if (isObject(source)) {\n destination = copy(source, Object.create(Object.getPrototypeOf(source)), stackSource, stackDest, blacklist)\n }\n }\n } else {\n if (source === destination) {\n throw new Error('Cannot copy! Source and destination are identical.')\n }\n\n stackSource = stackSource || []\n stackDest = stackDest || []\n\n if (isObject(source)) {\n let index = stackSource.indexOf(source)\n if (index !== -1) {\n return stackDest[index]\n }\n\n stackSource.push(source)\n stackDest.push(destination)\n }\n\n let result\n if (isArray(source)) {\n let i\n destination.length = 0\n for (i = 0; i < source.length; i++) {\n result = copy(source[i], null, stackSource, stackDest, blacklist)\n if (isObject(source[i])) {\n stackSource.push(source[i])\n stackDest.push(result)\n }\n destination.push(result)\n }\n } else {\n if (isArray(destination)) {\n destination.length = 0\n } else {\n forEach(destination, function (value, key) {\n delete destination[key]\n })\n }\n for (let key in source) {\n if (source.hasOwnProperty(key)) {\n if (isBlacklisted(key, blacklist)) {\n continue\n }\n result = copy(source[key], null, stackSource, stackDest, blacklist)\n if (isObject(source[key])) {\n stackSource.push(source[key])\n stackDest.push(result)\n }\n destination[key] = result\n }\n }\n }\n }\n return destination\n}\n\n// adapted from angular.equals\nfunction equals (o1, o2) {\n if (o1 === o2) {\n return true\n }\n if (o1 === null || o2 === null) {\n return false\n }\n if (o1 !== o1 && o2 !== o2) { // eslint-disable-line\n return true\n } // NaN === NaN\n var t1 = typeof o1\n var t2 = typeof o2\n var length, key, keySet\n if (t1 == t2) { // eslint-disable-line\n if (t1 == 'object') { // eslint-disable-line\n if (isArray(o1)) {\n if (!isArray(o2)) {\n return false\n }\n if ((length = o1.length) === o2.length) { // jshint ignore:line\n for (key = 0; key < length; key++) {\n if (!equals(o1[key], o2[key])) {\n return false\n }\n }\n return true\n }\n } else if (isDate(o1)) {\n if (!isDate(o2)) {\n return false\n }\n return equals(o1.getTime(), o2.getTime())\n } else if (isRegExp(o1) && isRegExp(o2)) {\n return o1.toString() == o2.toString() // eslint-disable-line\n } else {\n if (isArray(o2)) {\n return false\n }\n keySet = {}\n for (key in o1) {\n if (key.charAt(0) === '$' || isFunction(o1[key])) {\n continue\n }\n if (!equals(o1[key], o2[key])) {\n return false\n }\n keySet[key] = true\n }\n for (key in o2) {\n if (!keySet.hasOwnProperty(key) &&\n key.charAt(0) !== '$' &&\n o2[key] !== undefined && !isFunction(o2[key])) {\n return false\n }\n }\n return true\n }\n }\n }\n return false\n}\n\n/**\n * Given either an instance or the primary key of an instance, return the primary key.\n */\nfunction resolveId (definition, idOrInstance) {\n if (isString(idOrInstance) || isNumber(idOrInstance)) {\n return idOrInstance\n } else if (idOrInstance && definition) {\n return idOrInstance[definition.idAttribute] || idOrInstance\n } else {\n return idOrInstance\n }\n}\n\n/**\n * Given either an instance or the primary key of an instance, return the instance.\n */\nfunction resolveItem (resource, idOrInstance) {\n if (resource && (isString(idOrInstance) || isNumber(idOrInstance))) {\n return resource.index[idOrInstance] || idOrInstance\n } else {\n return idOrInstance\n }\n}\n\nfunction isValidString (val) {\n return (val != null && val !== '') // jshint ignore:line\n}\n\nfunction join (items, separator) {\n separator = separator || ''\n return filter(items, isValidString).join(separator)\n}\n\nfunction makePath (...args) {\n let result = join(args, '/')\n return result.replace(/([^:\\/]|^)\\/{2,}/g, '$1/')\n}\n\nexport default {\n Promise: P,\n /**\n * Method to wrap an \"options\" object so that it will inherit from\n * some parent object, such as a resource definition.\n */\n _ (parent, options) {\n let _this = this\n parent = parent || {}\n options = options || {}\n if (options && options.constructor === parent.constructor) {\n return options\n } else if (!isObject(options)) {\n throw new DSErrors.IA('\"options\" must be an object!')\n }\n forEach(toPromisify, function (name) {\n if (typeof options[name] === 'function' && options[name].toString().indexOf('for (var _len = arg') === -1) {\n options[name] = _this.promisify(options[name])\n }\n })\n // Dynamic constructor function\n let O = function Options (attrs) {\n let self = this\n forOwn(attrs, function (value, key) {\n self[key] = value\n })\n }\n // Inherit from some parent object\n O.prototype = parent\n // Give us a way to get the original options back.\n O.prototype.orig = function () {\n let orig = {}\n forOwn(this, function (value, key) {\n orig[key] = value\n })\n return orig\n }\n return new O(options)\n },\n _n: isNumber,\n _s: isString,\n _sn: isStringOrNumber,\n _snErr: isStringOrNumberErr,\n _o: isObject,\n _oErr: isObjectErr,\n _a: isArray,\n _aErr: isArrayErr,\n applyScope (definition, params, options) {\n let scope = options.scope\n let _params = copy(params)\n if (scope) {\n if (isString(scope)) {\n scope = [scope]\n }\n } else {\n scope = []\n }\n scope.unshift('defaultScope')\n forEach(scope, function (_scope) {\n let scopeDef = options.scopes[_scope]\n if (typeof scopeDef === 'function') {\n deepMixIn(params, scopeDef(definition))\n } else if (scopeDef) {\n deepMixIn(params, scopeDef)\n }\n })\n deepMixIn(params, _params)\n },\n compute (fn, field) {\n let _this = this\n let args = []\n if (!isObject(fn)) {\n forEach(fn.deps, function (dep) {\n args.push(get(_this, dep))\n })\n // compute property\n set(_this, field, fn[fn.length - 1].apply(_this, args))\n }\n },\n contains,\n copy,\n deepMixIn,\n diffObjectFromOldObject: observe.diffObjectFromOldObject,\n BinaryHeap,\n equals,\n Events,\n filter,\n fillIn (target, obj) {\n forOwn(obj, function (v, k) {\n if (!(k in target)) {\n target[k] = v\n }\n })\n return target\n },\n forEach,\n forOwn,\n fromJson (json) {\n return isString(json) ? JSON.parse(json) : json\n },\n get,\n guid,\n intersection,\n isArray,\n isBlacklisted,\n isEmpty,\n isFunction,\n isObject,\n isNumber,\n isString,\n keys: _keys,\n makePath,\n observe,\n omit (obj, bl) {\n let toRemove = []\n forOwn(obj, function (v, k) {\n if (isBlacklisted(k, bl)) {\n toRemove.push(k)\n }\n })\n forEach(toRemove, function (k) {\n delete obj[k]\n })\n return obj\n },\n pascalCase,\n pick,\n // Turn the given node-style callback function into one that can return a promise.\n promisify (fn, target) {\n let _this = this\n if (!fn) {\n return\n } else if (typeof fn !== 'function') {\n throw new Error('Can only promisify functions!')\n }\n return function (...args) {\n return new _this.Promise(function (resolve, reject) {\n args.push(function (err, result) {\n if (err) {\n reject(err)\n } else {\n resolve(result)\n }\n })\n\n try {\n let promise = fn.apply(target || this, args)\n if (promise && promise.then) {\n promise.then(resolve, reject)\n }\n } catch (err) {\n reject(err)\n }\n })\n }\n },\n remove,\n set,\n slice,\n sort,\n toJson: JSON.stringify,\n updateTimestamp (timestamp) {\n let newTimestamp = typeof Date.now === 'function' ? Date.now() : new Date().getTime()\n if (timestamp && newTimestamp <= timestamp) {\n return timestamp + 1\n } else {\n return newTimestamp\n }\n },\n upperCase,\n // Return a copy of \"object\" with cycles removed.\n removeCircular (object) {\n return (function rmCirc (value, ctx) {\n let i\n let nu\n\n if (\n typeof value === 'object' &&\n value !== null &&\n !(value instanceof Boolean) &&\n !(value instanceof Date) &&\n !(value instanceof Number) &&\n !(value instanceof RegExp) &&\n !(value instanceof String) &&\n (!File || !(value instanceof File))\n ) {\n // check if current object points back to itself\n let cur = ctx.cur\n var parent = ctx.ctx\n while (parent) {\n if (parent.cur === cur) {\n return undefined\n }\n parent = parent.ctx\n }\n\n if (isArray(value)) {\n nu = []\n for (i = 0; i < value.length; i += 1) {\n nu[i] = rmCirc(value[i], {ctx, cur: value[i]})\n }\n } else {\n nu = {}\n forOwn(value, function (v, k) {\n nu[k] = rmCirc(value[k], {ctx, cur: value[k]})\n })\n }\n return nu\n }\n return value\n }(object, {ctx: null, cur: object}))\n },\n resolveItem,\n resolveId,\n respond (response, meta, options) {\n if (options.returnMeta === 'array') {\n return [response, meta]\n } else if (options.returnMeta === 'object') {\n return {response, meta}\n } else {\n return response\n }\n },\n w,\n // This is where the magic of relations happens.\n applyRelationGettersToTarget (store, definition, target) {\n this.forEach(definition.relationList, def => {\n let relationName = def.relation\n let localField = def.localField\n let localKey = def.localKey\n let foreignKey = def.foreignKey\n let localKeys = def.localKeys\n let foreignKeys = def.foreignKeys\n let enumerable = typeof def.enumerable === 'boolean' ? def.enumerable : !!definition.relationsEnumerable\n if (typeof def.link === 'boolean' ? def.link : !!definition.linkRelations) {\n delete target[localField]\n let prop = {\n enumerable\n }\n if (def.type === 'belongsTo') {\n prop.get = function () {\n let key = get(this, localKey)\n let hasKey = !!(key || key === 0)\n return hasKey ? definition.getResource(relationName).get(key) : undefined\n }\n prop.set = function (parent) {\n if (parent) {\n set(this, localKey, get(parent, definition.getResource(relationName).idAttribute))\n }\n return get(this, localField)\n }\n } else if (def.type === 'hasMany') {\n prop.get = function () {\n let params = {}\n if (foreignKey) {\n params[foreignKey] = this[definition.idAttribute]\n return definition.getResource(relationName).defaultFilter.call(store, store.store[relationName].collection, relationName, params, {allowSimpleWhere: true})\n } else if (localKeys) {\n let keys = get(this, localKeys) || []\n return definition.getResource(relationName).getAll(isArray(keys) ? keys : _keys(keys))\n } else if (foreignKeys) {\n set(params, `where.${foreignKeys}.contains`, this[definition.idAttribute])\n return definition.getResource(relationName).defaultFilter.call(store, store.store[relationName].collection, relationName, params)\n }\n return undefined\n }\n prop.set = function (children) {\n if (children && children.length) {\n let id = get(this, definition.idAttribute)\n if (foreignKey) {\n forEach(children, function (child) {\n set(child, foreignKey, id)\n })\n } else if (localKeys) {\n let keys = []\n forEach(children, function (child) {\n keys.push(get(child, definition.getResource(relationName).idAttribute))\n })\n set(this, localKeys, keys)\n } else if (foreignKeys) {\n forEach(children, function (child) {\n let keys = get(child, foreignKeys)\n if (keys) {\n if (!contains(keys, id)) {\n keys.push(id)\n }\n } else {\n set(child, foreignKeys, [id])\n }\n })\n }\n }\n return get(this, localField)\n }\n } else if (def.type === 'hasOne') {\n if (localKey) {\n prop.get = function () {\n let key = get(this, localKey)\n let hasKey = !!(key || key === 0)\n return hasKey ? definition.getResource(relationName).get(key) : undefined\n }\n prop.set = function (sibling) {\n if (sibling) {\n set(this, localKey, get(sibling, definition.getResource(relationName).idAttribute))\n }\n return get(this, localField)\n }\n } else {\n prop.get = function () {\n let params = {}\n params[foreignKey] = this[definition.idAttribute]\n let items = params[foreignKey] ? definition.getResource(relationName).defaultFilter.call(store, store.store[relationName].collection, relationName, params, {allowSimpleWhere: true}) : []\n if (items.length) {\n return items[0]\n }\n return undefined\n }\n prop.set = function (sibling) {\n if (sibling) {\n set(sibling, foreignKey, get(this, definition.idAttribute))\n }\n return get(this, localField)\n }\n }\n }\n if (def.get) {\n let orig = prop.get\n prop.get = function () {\n return def.get(definition, def, this, (...args) => orig.apply(this, args))\n }\n }\n Object.defineProperty(target, localField, prop)\n }\n })\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/utils.js\n **/","/**\n * Thrown during a method call when an argument passed into the method is invalid.\n */\nclass IllegalArgumentError extends Error {\n constructor (message) {\n super()\n if (typeof Error.captureStackTrace === 'function') {\n Error.captureStackTrace(this, this.constructor)\n }\n this.type = this.constructor.name\n this.message = message\n }\n}\n\n/**\n * Thrown when an invariant is violated or unrecoverable error is encountered during execution.\n */\nclass RuntimeError extends Error {\n constructor (message) {\n super()\n if (typeof Error.captureStackTrace === 'function') {\n Error.captureStackTrace(this, this.constructor)\n }\n this.type = this.constructor.name\n this.message = message\n }\n}\n\n/**\n * Thrown when attempting to access or work with a non-existent resource.\n */\nclass NonexistentResourceError extends Error {\n constructor (resourceName) {\n super()\n if (typeof Error.captureStackTrace === 'function') {\n Error.captureStackTrace(this, this.constructor)\n }\n this.type = this.constructor.name\n this.message = `${resourceName} is not a registered resource!`\n }\n}\n\nexport default {\n IllegalArgumentError,\n IA: IllegalArgumentError,\n RuntimeError,\n R: RuntimeError,\n NonexistentResourceError,\n NER: NonexistentResourceError\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/errors.js\n **/","/*!\n * yabh\n * @version 1.1.0 - Homepage \n * @author Jason Dobry \n * @copyright (c) 2015 Jason Dobry \n * @license MIT \n * \n * @overview Yet another Binary Heap.\n */\n(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(\"yabh\", factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"BinaryHeap\"] = factory();\n\telse\n\t\troot[\"BinaryHeap\"] = factory();\n})(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\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\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.loaded = 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// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * @method bubbleUp\n\t * @param {array} heap The heap.\n\t * @param {function} weightFunc The weight function.\n\t * @param {number} n The index of the element to bubble up.\n\t */\n\tfunction bubbleUp(heap, weightFunc, n) {\n\t var element = heap[n];\n\t var weight = weightFunc(element);\n\t // When at 0, an element can not go up any further.\n\t while (n > 0) {\n\t // Compute the parent element's index, and fetch it.\n\t var parentN = Math.floor((n + 1) / 2) - 1;\n\t var _parent = heap[parentN];\n\t // If the parent has a lesser weight, things are in order and we\n\t // are done.\n\t if (weight >= weightFunc(_parent)) {\n\t break;\n\t } else {\n\t heap[parentN] = element;\n\t heap[n] = _parent;\n\t n = parentN;\n\t }\n\t }\n\t}\n\n\t/**\n\t * @method bubbleDown\n\t * @param {array} heap The heap.\n\t * @param {function} weightFunc The weight function.\n\t * @param {number} n The index of the element to sink down.\n\t */\n\tvar bubbleDown = function bubbleDown(heap, weightFunc, n) {\n\t var length = heap.length;\n\t var node = heap[n];\n\t var nodeWeight = weightFunc(node);\n\n\t while (true) {\n\t var child2N = (n + 1) * 2,\n\t child1N = child2N - 1;\n\t var swap = null;\n\t if (child1N < length) {\n\t var child1 = heap[child1N],\n\t child1Weight = weightFunc(child1);\n\t // If the score is less than our node's, we need to swap.\n\t if (child1Weight < nodeWeight) {\n\t swap = child1N;\n\t }\n\t }\n\t // Do the same checks for the other child.\n\t if (child2N < length) {\n\t var child2 = heap[child2N],\n\t child2Weight = weightFunc(child2);\n\t if (child2Weight < (swap === null ? nodeWeight : weightFunc(heap[child1N]))) {\n\t swap = child2N;\n\t }\n\t }\n\n\t if (swap === null) {\n\t break;\n\t } else {\n\t heap[n] = heap[swap];\n\t heap[swap] = node;\n\t n = swap;\n\t }\n\t }\n\t};\n\n\tfunction BinaryHeap(weightFunc, compareFunc) {\n\t if (!weightFunc) {\n\t weightFunc = function (x) {\n\t return x;\n\t };\n\t }\n\t if (!compareFunc) {\n\t compareFunc = function (x, y) {\n\t return x === y;\n\t };\n\t }\n\t if (typeof weightFunc !== 'function') {\n\t throw new Error('BinaryHeap([weightFunc][, compareFunc]): \"weightFunc\" must be a function!');\n\t }\n\t if (typeof compareFunc !== 'function') {\n\t throw new Error('BinaryHeap([weightFunc][, compareFunc]): \"compareFunc\" must be a function!');\n\t }\n\t this.weightFunc = weightFunc;\n\t this.compareFunc = compareFunc;\n\t this.heap = [];\n\t}\n\n\tvar BHProto = BinaryHeap.prototype;\n\n\tBHProto.push = function (node) {\n\t this.heap.push(node);\n\t bubbleUp(this.heap, this.weightFunc, this.heap.length - 1);\n\t};\n\n\tBHProto.peek = function () {\n\t return this.heap[0];\n\t};\n\n\tBHProto.pop = function () {\n\t var front = this.heap[0];\n\t var end = this.heap.pop();\n\t if (this.heap.length > 0) {\n\t this.heap[0] = end;\n\t bubbleDown(this.heap, this.weightFunc, 0);\n\t }\n\t return front;\n\t};\n\n\tBHProto.remove = function (node) {\n\t var length = this.heap.length;\n\t for (var i = 0; i < length; i++) {\n\t if (this.compareFunc(this.heap[i], node)) {\n\t var removed = this.heap[i];\n\t var end = this.heap.pop();\n\t if (i !== length - 1) {\n\t this.heap[i] = end;\n\t bubbleUp(this.heap, this.weightFunc, i);\n\t bubbleDown(this.heap, this.weightFunc, i);\n\t }\n\t return removed;\n\t }\n\t }\n\t return null;\n\t};\n\n\tBHProto.removeAll = function () {\n\t this.heap = [];\n\t};\n\n\tBHProto.size = function () {\n\t return this.heap.length;\n\t};\n\n\tmodule.exports = BinaryHeap;\n\n/***/ }\n/******/ ])\n});\n;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/yabh/dist/yabh.js\n ** module id = 4\n ** module chunks = 0\n **/","\n\n /**\n * Array forEach\n */\n function forEach(arr, callback, thisObj) {\n if (arr == null) {\n return;\n }\n var i = -1,\n len = arr.length;\n while (++i < len) {\n // we iterate over sparse items since there is no way to make it\n // work properly on IE 7-8. see #64\n if ( callback.call(thisObj, arr[i], i, arr) === false ) {\n break;\n }\n }\n }\n\n module.exports = forEach;\n\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/array/forEach.js\n ** module id = 5\n ** module chunks = 0\n **/","\n\n /**\n * Create slice of source array or array-like object\n */\n function slice(arr, start, end){\n var len = arr.length;\n\n if (start == null) {\n start = 0;\n } else if (start < 0) {\n start = Math.max(len + start, 0);\n } else {\n start = Math.min(start, len);\n }\n\n if (end == null) {\n end = len;\n } else if (end < 0) {\n end = Math.max(len + end, 0);\n } else {\n end = Math.min(end, len);\n }\n\n var result = [];\n while (start < end) {\n result.push(arr[start++]);\n }\n\n return result;\n }\n\n module.exports = slice;\n\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/array/slice.js\n ** module id = 6\n ** module chunks = 0\n **/","var hasOwn = require('./hasOwn');\nvar forIn = require('./forIn');\n\n /**\n * Similar to Array/forEach but works over object properties and fixes Don't\n * Enum bug on IE.\n * based on: http://whattheheadsaid.com/2010/10/a-safer-object-keys-compatibility-implementation\n */\n function forOwn(obj, fn, thisObj){\n forIn(obj, function(val, key){\n if (hasOwn(obj, key)) {\n return fn.call(thisObj, obj[key], key, obj);\n }\n });\n }\n\n module.exports = forOwn;\n\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/object/forOwn.js\n ** module id = 7\n ** module chunks = 0\n **/","\n\n /**\n * Safer Object.hasOwnProperty\n */\n function hasOwn(obj, prop){\n return Object.prototype.hasOwnProperty.call(obj, prop);\n }\n\n module.exports = hasOwn;\n\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/object/hasOwn.js\n ** module id = 8\n ** module chunks = 0\n **/","var hasOwn = require('./hasOwn');\n\n var _hasDontEnumBug,\n _dontEnums;\n\n function checkDontEnum(){\n _dontEnums = [\n 'toString',\n 'toLocaleString',\n 'valueOf',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'constructor'\n ];\n\n _hasDontEnumBug = true;\n\n for (var key in {'toString': null}) {\n _hasDontEnumBug = false;\n }\n }\n\n /**\n * Similar to Array/forEach but works over object properties and fixes Don't\n * Enum bug on IE.\n * based on: http://whattheheadsaid.com/2010/10/a-safer-object-keys-compatibility-implementation\n */\n function forIn(obj, fn, thisObj){\n var key, i = 0;\n // no need to check if argument is a real object that way we can use\n // it for arrays, functions, date, etc.\n\n //post-pone check till needed\n if (_hasDontEnumBug == null) checkDontEnum();\n\n for (key in obj) {\n if (exec(fn, obj, key, thisObj) === false) {\n break;\n }\n }\n\n\n if (_hasDontEnumBug) {\n var ctor = obj.constructor,\n isProto = !!ctor && obj === ctor.prototype;\n\n while (key = _dontEnums[i++]) {\n // For constructor, if it is a prototype object the constructor\n // is always non-enumerable unless defined otherwise (and\n // enumerated above). For non-prototype objects, it will have\n // to be defined on this object, since it cannot be defined on\n // any prototype objects.\n //\n // For other [[DontEnum]] properties, check if the value is\n // different than Object prototype value.\n if (\n (key !== 'constructor' ||\n (!isProto && hasOwn(obj, key))) &&\n obj[key] !== Object.prototype[key]\n ) {\n if (exec(fn, obj, key, thisObj) === false) {\n break;\n }\n }\n }\n }\n }\n\n function exec(fn, obj, key, thisObj){\n return fn.call(thisObj, obj[key], key, obj);\n }\n\n module.exports = forIn;\n\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/object/forIn.js\n ** module id = 9\n ** module chunks = 0\n **/","var indexOf = require('./indexOf');\n\n /**\n * If array contains values.\n */\n function contains(arr, val) {\n return indexOf(arr, val) !== -1;\n }\n module.exports = contains;\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/array/contains.js\n ** module id = 10\n ** module chunks = 0\n **/","\n\n /**\n * Array.indexOf\n */\n function indexOf(arr, item, fromIndex) {\n fromIndex = fromIndex || 0;\n if (arr == null) {\n return -1;\n }\n\n var len = arr.length,\n i = fromIndex < 0 ? len + fromIndex : fromIndex;\n while (i < len) {\n // we iterate over sparse items since there is no way to make it\n // work properly on IE 7-8. see #64\n if (arr[i] === item) {\n return i;\n }\n\n i++;\n }\n\n return -1;\n }\n\n module.exports = indexOf;\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/array/indexOf.js\n ** module id = 11\n ** module chunks = 0\n **/","var forOwn = require('./forOwn');\nvar isPlainObject = require('../lang/isPlainObject');\n\n /**\n * Mixes objects into the target object, recursively mixing existing child\n * objects.\n */\n function deepMixIn(target, objects) {\n var i = 0,\n n = arguments.length,\n obj;\n\n while(++i < n){\n obj = arguments[i];\n if (obj) {\n forOwn(obj, copyProp, target);\n }\n }\n\n return target;\n }\n\n function copyProp(val, key) {\n var existing = this[key];\n if (isPlainObject(val) && isPlainObject(existing)) {\n deepMixIn(existing, val);\n } else {\n this[key] = val;\n }\n }\n\n module.exports = deepMixIn;\n\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/object/deepMixIn.js\n ** module id = 12\n ** module chunks = 0\n **/","\n\n /**\n * Checks if the value is created by the `Object` constructor.\n */\n function isPlainObject(value) {\n return (!!value && typeof value === 'object' &&\n value.constructor === Object);\n }\n\n module.exports = isPlainObject;\n\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/lang/isPlainObject.js\n ** module id = 13\n ** module chunks = 0\n **/","var toString = require('../lang/toString');\nvar camelCase = require('./camelCase');\nvar upperCase = require('./upperCase');\n /**\n * camelCase + UPPERCASE first char\n */\n function pascalCase(str){\n str = toString(str);\n return camelCase(str).replace(/^[a-z]/, upperCase);\n }\n\n module.exports = pascalCase;\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/string/pascalCase.js\n ** module id = 14\n ** module chunks = 0\n **/","\n\n /**\n * Typecast a value to a String, using an empty string value for null or\n * undefined.\n */\n function toString(val){\n return val == null ? '' : val.toString();\n }\n\n module.exports = toString;\n\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/lang/toString.js\n ** module id = 15\n ** module chunks = 0\n **/","var toString = require('../lang/toString');\nvar replaceAccents = require('./replaceAccents');\nvar removeNonWord = require('./removeNonWord');\nvar upperCase = require('./upperCase');\nvar lowerCase = require('./lowerCase');\n /**\n * Convert string to camelCase text.\n */\n function camelCase(str){\n str = toString(str);\n str = replaceAccents(str);\n str = removeNonWord(str)\n .replace(/[\\-_]/g, ' ') //convert all hyphens and underscores to spaces\n .replace(/\\s[a-z]/g, upperCase) //convert first char of each word to UPPERCASE\n .replace(/\\s+/g, '') //remove spaces\n .replace(/^[A-Z]/g, lowerCase); //convert first char to lowercase\n return str;\n }\n module.exports = camelCase;\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/string/camelCase.js\n ** module id = 16\n ** module chunks = 0\n **/","var toString = require('../lang/toString');\n /**\n * Replaces all accented chars with regular ones\n */\n function replaceAccents(str){\n str = toString(str);\n\n // verifies if the String has accents and replace them\n if (str.search(/[\\xC0-\\xFF]/g) > -1) {\n str = str\n .replace(/[\\xC0-\\xC5]/g, \"A\")\n .replace(/[\\xC6]/g, \"AE\")\n .replace(/[\\xC7]/g, \"C\")\n .replace(/[\\xC8-\\xCB]/g, \"E\")\n .replace(/[\\xCC-\\xCF]/g, \"I\")\n .replace(/[\\xD0]/g, \"D\")\n .replace(/[\\xD1]/g, \"N\")\n .replace(/[\\xD2-\\xD6\\xD8]/g, \"O\")\n .replace(/[\\xD9-\\xDC]/g, \"U\")\n .replace(/[\\xDD]/g, \"Y\")\n .replace(/[\\xDE]/g, \"P\")\n .replace(/[\\xE0-\\xE5]/g, \"a\")\n .replace(/[\\xE6]/g, \"ae\")\n .replace(/[\\xE7]/g, \"c\")\n .replace(/[\\xE8-\\xEB]/g, \"e\")\n .replace(/[\\xEC-\\xEF]/g, \"i\")\n .replace(/[\\xF1]/g, \"n\")\n .replace(/[\\xF2-\\xF6\\xF8]/g, \"o\")\n .replace(/[\\xF9-\\xFC]/g, \"u\")\n .replace(/[\\xFE]/g, \"p\")\n .replace(/[\\xFD\\xFF]/g, \"y\");\n }\n return str;\n }\n module.exports = replaceAccents;\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/string/replaceAccents.js\n ** module id = 17\n ** module chunks = 0\n **/","var toString = require('../lang/toString');\n // This pattern is generated by the _build/pattern-removeNonWord.js script\n var PATTERN = /[^\\x20\\x2D0-9A-Z\\x5Fa-z\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\xFF]/g;\n\n /**\n * Remove non-word chars.\n */\n function removeNonWord(str){\n str = toString(str);\n return str.replace(PATTERN, '');\n }\n\n module.exports = removeNonWord;\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/string/removeNonWord.js\n ** module id = 18\n ** module chunks = 0\n **/","var toString = require('../lang/toString');\n /**\n * \"Safer\" String.toUpperCase()\n */\n function upperCase(str){\n str = toString(str);\n return str.toUpperCase();\n }\n module.exports = upperCase;\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/string/upperCase.js\n ** module id = 19\n ** module chunks = 0\n **/","var toString = require('../lang/toString');\n /**\n * \"Safer\" String.toLowerCase()\n */\n function lowerCase(str){\n str = toString(str);\n return str.toLowerCase();\n }\n\n module.exports = lowerCase;\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/string/lowerCase.js\n ** module id = 20\n ** module chunks = 0\n **/","var indexOf = require('./indexOf');\n\n /**\n * Remove a single item from the array.\n * (it won't remove duplicates, just a single item)\n */\n function remove(arr, item){\n var idx = indexOf(arr, item);\n if (idx !== -1) arr.splice(idx, 1);\n }\n\n module.exports = remove;\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/array/remove.js\n ** module id = 21\n ** module chunks = 0\n **/","var slice = require('../array/slice');\n\n /**\n * Return a copy of the object, filtered to only have values for the whitelisted keys.\n */\n function pick(obj, var_keys){\n var keys = typeof arguments[1] !== 'string'? arguments[1] : slice(arguments, 1),\n out = {},\n i = 0, key;\n while (key = keys[i++]) {\n out[key] = obj[key];\n }\n return out;\n }\n\n module.exports = pick;\n\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/object/pick.js\n ** module id = 22\n ** module chunks = 0\n **/","var forOwn = require('./forOwn');\n\n /**\n * Get object keys\n */\n var keys = Object.keys || function (obj) {\n var keys = [];\n forOwn(obj, function(val, key){\n keys.push(key);\n });\n return keys;\n };\n\n module.exports = keys;\n\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/object/keys.js\n ** module id = 23\n ** module chunks = 0\n **/","\n\n /**\n * Merge sort (http://en.wikipedia.org/wiki/Merge_sort)\n */\n function mergeSort(arr, compareFn) {\n if (arr == null) {\n return [];\n } else if (arr.length < 2) {\n return arr;\n }\n\n if (compareFn == null) {\n compareFn = defaultCompare;\n }\n\n var mid, left, right;\n\n mid = ~~(arr.length / 2);\n left = mergeSort( arr.slice(0, mid), compareFn );\n right = mergeSort( arr.slice(mid, arr.length), compareFn );\n\n return merge(left, right, compareFn);\n }\n\n function defaultCompare(a, b) {\n return a < b ? -1 : (a > b? 1 : 0);\n }\n\n function merge(left, right, compareFn) {\n var result = [];\n\n while (left.length && right.length) {\n if (compareFn(left[0], right[0]) <= 0) {\n // if 0 it should preserve same order (stable)\n result.push(left.shift());\n } else {\n result.push(right.shift());\n }\n }\n\n if (left.length) {\n result.push.apply(result, left);\n }\n\n if (right.length) {\n result.push.apply(result, right);\n }\n\n return result;\n }\n\n module.exports = mergeSort;\n\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/array/sort.js\n ** module id = 24\n ** module chunks = 0\n **/","var isPrimitive = require('../lang/isPrimitive');\n\n /**\n * get \"nested\" object property\n */\n function get(obj, prop){\n var parts = prop.split('.'),\n last = parts.pop();\n\n while (prop = parts.shift()) {\n obj = obj[prop];\n if (obj == null) return;\n }\n\n return obj[last];\n }\n\n module.exports = get;\n\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/object/get.js\n ** module id = 25\n ** module chunks = 0\n **/","\n\n /**\n * Checks if the object is a primitive\n */\n function isPrimitive(value) {\n // Using switch fallthrough because it's simple to read and is\n // generally fast: http://jsperf.com/testing-value-is-primitive/5\n switch (typeof value) {\n case \"string\":\n case \"number\":\n case \"boolean\":\n return true;\n }\n\n return value == null;\n }\n\n module.exports = isPrimitive;\n\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/lang/isPrimitive.js\n ** module id = 26\n ** module chunks = 0\n **/","var namespace = require('./namespace');\n\n /**\n * set \"nested\" object property\n */\n function set(obj, prop, val){\n var parts = (/^(.+)\\.(.+)$/).exec(prop);\n if (parts){\n namespace(obj, parts[1])[parts[2]] = val;\n } else {\n obj[prop] = val;\n }\n }\n\n module.exports = set;\n\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/object/set.js\n ** module id = 27\n ** module chunks = 0\n **/","var forEach = require('../array/forEach');\n\n /**\n * Create nested object if non-existent\n */\n function namespace(obj, path){\n if (!path) return obj;\n forEach(path.split('.'), function(key){\n if (!obj[key]) {\n obj[key] = {};\n }\n obj = obj[key];\n });\n return obj;\n }\n\n module.exports = namespace;\n\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/object/namespace.js\n ** module id = 28\n ** module chunks = 0\n **/","/*\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n */\n\n// Modifications\n// Copyright 2014-2015 Jason Dobry\n//\n// Summary of modifications:\n// Fixed use of \"delete\" keyword for IE8 compatibility\n// Exposed diffObjectFromOldObject on the exported object\n// Added the \"equals\" argument to diffObjectFromOldObject to be used to check equality\n// Added a way in diffObjectFromOldObject to ignore changes to certain properties\n// Removed all code related to:\n// - ArrayObserver\n// - ArraySplice\n// - PathObserver\n// - CompoundObserver\n// - Path\n// - ObserverTransform\n\n(function(global) {\n var testingExposeCycleCount = global.testingExposeCycleCount;\n\n // Detect and do basic sanity checking on Object/Array.observe.\n function detectObjectObserve() {\n if (typeof Object.observe !== 'function' ||\n typeof Array.observe !== 'function') {\n return false;\n }\n\n var records = [];\n\n function callback(recs) {\n records = recs;\n }\n\n var test = {};\n var arr = [];\n Object.observe(test, callback);\n Array.observe(arr, callback);\n test.id = 1;\n test.id = 2;\n delete test.id;\n arr.push(1, 2);\n arr.length = 0;\n\n Object.deliverChangeRecords(callback);\n if (records.length !== 5)\n return false;\n\n if (records[0].type != 'add' ||\n records[1].type != 'update' ||\n records[2].type != 'delete' ||\n records[3].type != 'splice' ||\n records[4].type != 'splice') {\n return false;\n }\n\n Object.unobserve(test, callback);\n Array.unobserve(arr, callback);\n\n return true;\n }\n\n var hasObserve = detectObjectObserve();\n\n var createObject = ('__proto__' in {}) ?\n function(obj) { return obj; } :\n function(obj) {\n var proto = obj.__proto__;\n if (!proto)\n return obj;\n var newObject = Object.create(proto);\n Object.getOwnPropertyNames(obj).forEach(function(name) {\n Object.defineProperty(newObject, name,\n Object.getOwnPropertyDescriptor(obj, name));\n });\n return newObject;\n };\n\n var MAX_DIRTY_CHECK_CYCLES = 1000;\n\n function dirtyCheck(observer) {\n var cycles = 0;\n while (cycles < MAX_DIRTY_CHECK_CYCLES && observer.check_()) {\n cycles++;\n }\n if (testingExposeCycleCount)\n global.dirtyCheckCycleCount = cycles;\n\n return cycles > 0;\n }\n\n function objectIsEmpty(object) {\n for (var prop in object)\n return false;\n return true;\n }\n\n function diffIsEmpty(diff) {\n return objectIsEmpty(diff.added) &&\n objectIsEmpty(diff.removed) &&\n objectIsEmpty(diff.changed);\n }\n\n function isBlacklisted(prop, bl) {\n if (!bl || !bl.length) {\n return false;\n }\n var matches;\n for (var i = 0; i < bl.length; i++) {\n if ((Object.prototype.toString.call(bl[i]) === '[object RegExp]' && bl[i].test(prop)) || bl[i] === prop) {\n return matches = prop;\n }\n }\n return !!matches;\n }\n\n function diffObjectFromOldObject(object, oldObject, equals, bl) {\n var added = {};\n var removed = {};\n var changed = {};\n\n for (var prop in oldObject) {\n var newValue = object[prop];\n\n if (isBlacklisted(prop, bl))\n continue;\n\n if (newValue !== undefined && (equals ? equals(newValue, oldObject[prop]) : newValue === oldObject[prop]))\n continue;\n\n if (!(prop in object)) {\n removed[prop] = undefined;\n continue;\n }\n\n if (equals ? !equals(newValue, oldObject[prop]) : newValue !== oldObject[prop])\n changed[prop] = newValue;\n }\n\n for (var prop in object) {\n if (prop in oldObject)\n continue;\n\n if (isBlacklisted(prop, bl))\n continue;\n\n added[prop] = object[prop];\n }\n\n if (Array.isArray(object) && object.length !== oldObject.length)\n changed.length = object.length;\n\n return {\n added: added,\n removed: removed,\n changed: changed\n };\n }\n\n var eomTasks = [];\n function runEOMTasks() {\n if (!eomTasks.length)\n return false;\n\n for (var i = 0; i < eomTasks.length; i++) {\n eomTasks[i]();\n }\n eomTasks.length = 0;\n return true;\n }\n\n var runEOM = hasObserve ? (function(){\n return function(fn) {\n return Promise.resolve().then(fn);\n }\n })() :\n (function() {\n return function(fn) {\n eomTasks.push(fn);\n };\n })();\n\n var observedObjectCache = [];\n\n function newObservedObject() {\n var observer;\n var object;\n var discardRecords = false;\n var first = true;\n\n function callback(records) {\n if (observer && observer.state_ === OPENED && !discardRecords)\n observer.check_(records);\n }\n\n return {\n open: function(obs) {\n if (observer)\n throw Error('ObservedObject in use');\n\n if (!first)\n Object.deliverChangeRecords(callback);\n\n observer = obs;\n first = false;\n },\n observe: function(obj, arrayObserve) {\n object = obj;\n if (arrayObserve)\n Array.observe(object, callback);\n else\n Object.observe(object, callback);\n },\n deliver: function(discard) {\n discardRecords = discard;\n Object.deliverChangeRecords(callback);\n discardRecords = false;\n },\n close: function() {\n observer = undefined;\n Object.unobserve(object, callback);\n observedObjectCache.push(this);\n }\n };\n }\n\n function getObservedObject(observer, object, arrayObserve) {\n var dir = observedObjectCache.pop() || newObservedObject();\n dir.open(observer);\n dir.observe(object, arrayObserve);\n return dir;\n }\n\n var UNOPENED = 0;\n var OPENED = 1;\n var CLOSED = 2;\n\n var nextObserverId = 1;\n\n function Observer() {\n this.state_ = UNOPENED;\n this.callback_ = undefined;\n this.target_ = undefined; // TODO(rafaelw): Should be WeakRef\n this.directObserver_ = undefined;\n this.value_ = undefined;\n this.id_ = nextObserverId++;\n }\n\n Observer.prototype = {\n open: function(callback, target) {\n if (this.state_ != UNOPENED)\n throw Error('Observer has already been opened.');\n\n addToAll(this);\n this.callback_ = callback;\n this.target_ = target;\n this.connect_();\n this.state_ = OPENED;\n return this.value_;\n },\n\n close: function() {\n if (this.state_ != OPENED)\n return;\n\n removeFromAll(this);\n this.disconnect_();\n this.value_ = undefined;\n this.callback_ = undefined;\n this.target_ = undefined;\n this.state_ = CLOSED;\n },\n\n deliver: function() {\n if (this.state_ != OPENED)\n return;\n\n dirtyCheck(this);\n },\n\n report_: function(changes) {\n try {\n this.callback_.apply(this.target_, changes);\n } catch (ex) {\n Observer._errorThrownDuringCallback = true;\n console.error('Exception caught during observer callback: ' +\n (ex.stack || ex));\n }\n },\n\n discardChanges: function() {\n this.check_(undefined, true);\n return this.value_;\n }\n }\n\n var collectObservers = !hasObserve;\n var allObservers;\n Observer._allObserversCount = 0;\n\n if (collectObservers) {\n allObservers = [];\n }\n\n function addToAll(observer) {\n Observer._allObserversCount++;\n if (!collectObservers)\n return;\n\n allObservers.push(observer);\n }\n\n function removeFromAll(observer) {\n Observer._allObserversCount--;\n }\n\n var runningMicrotaskCheckpoint = false;\n\n global.Platform = global.Platform || {};\n\n global.Platform.performMicrotaskCheckpoint = function() {\n if (runningMicrotaskCheckpoint)\n return;\n\n if (!collectObservers)\n return;\n\n runningMicrotaskCheckpoint = true;\n\n var cycles = 0;\n var anyChanged, toCheck;\n\n do {\n cycles++;\n toCheck = allObservers;\n allObservers = [];\n anyChanged = false;\n\n for (var i = 0; i < toCheck.length; i++) {\n var observer = toCheck[i];\n if (observer.state_ != OPENED)\n continue;\n\n if (observer.check_())\n anyChanged = true;\n\n allObservers.push(observer);\n }\n if (runEOMTasks())\n anyChanged = true;\n } while (cycles < MAX_DIRTY_CHECK_CYCLES && anyChanged);\n\n if (testingExposeCycleCount)\n global.dirtyCheckCycleCount = cycles;\n\n runningMicrotaskCheckpoint = false;\n };\n\n if (collectObservers) {\n global.Platform.clearObservers = function() {\n allObservers = [];\n };\n }\n\n function ObjectObserver(object) {\n Observer.call(this);\n this.value_ = object;\n this.oldObject_ = undefined;\n }\n\n ObjectObserver.prototype = createObject({\n __proto__: Observer.prototype,\n\n arrayObserve: false,\n\n connect_: function(callback, target) {\n if (hasObserve) {\n this.directObserver_ = getObservedObject(this, this.value_,\n this.arrayObserve);\n } else {\n this.oldObject_ = this.copyObject(this.value_);\n }\n\n },\n\n copyObject: function(object) {\n var copy = Array.isArray(object) ? [] : {};\n for (var prop in object) {\n copy[prop] = object[prop];\n };\n if (Array.isArray(object))\n copy.length = object.length;\n return copy;\n },\n\n check_: function(changeRecords, skipChanges) {\n var diff;\n var oldValues;\n if (hasObserve) {\n if (!changeRecords)\n return false;\n\n oldValues = {};\n diff = diffObjectFromChangeRecords(this.value_, changeRecords,\n oldValues);\n } else {\n oldValues = this.oldObject_;\n diff = diffObjectFromOldObject(this.value_, this.oldObject_);\n }\n\n if (diffIsEmpty(diff))\n return false;\n\n if (!hasObserve)\n this.oldObject_ = this.copyObject(this.value_);\n\n this.report_([\n diff.added || {},\n diff.removed || {},\n diff.changed || {},\n function(property) {\n return oldValues[property];\n }\n ]);\n\n return true;\n },\n\n disconnect_: function() {\n if (hasObserve) {\n this.directObserver_.close();\n this.directObserver_ = undefined;\n } else {\n this.oldObject_ = undefined;\n }\n },\n\n deliver: function() {\n if (this.state_ != OPENED)\n return;\n\n if (hasObserve)\n this.directObserver_.deliver(false);\n else\n dirtyCheck(this);\n },\n\n discardChanges: function() {\n if (this.directObserver_)\n this.directObserver_.deliver(true);\n else\n this.oldObject_ = this.copyObject(this.value_);\n\n return this.value_;\n }\n });\n\n var observerSentinel = {};\n\n var expectedRecordTypes = {\n add: true,\n update: true,\n 'delete': true\n };\n\n function diffObjectFromChangeRecords(object, changeRecords, oldValues) {\n var added = {};\n var removed = {};\n\n for (var i = 0; i < changeRecords.length; i++) {\n var record = changeRecords[i];\n if (!expectedRecordTypes[record.type]) {\n console.error('Unknown changeRecord type: ' + record.type);\n console.error(record);\n continue;\n }\n\n if (!(record.name in oldValues))\n oldValues[record.name] = record.oldValue;\n\n if (record.type == 'update')\n continue;\n\n if (record.type == 'add') {\n if (record.name in removed)\n delete removed[record.name];\n else\n added[record.name] = true;\n\n continue;\n }\n\n // type = 'delete'\n if (record.name in added) {\n delete added[record.name];\n delete oldValues[record.name];\n } else {\n removed[record.name] = true;\n }\n }\n\n for (var prop in added)\n added[prop] = object[prop];\n\n for (var prop in removed)\n removed[prop] = undefined;\n\n var changed = {};\n for (var prop in oldValues) {\n if (prop in added || prop in removed)\n continue;\n\n var newValue = object[prop];\n if (oldValues[prop] !== newValue)\n changed[prop] = newValue;\n }\n\n return {\n added: added,\n removed: removed,\n changed: changed\n };\n }\n\n // Export the observe-js object for **Node.js**, with backwards-compatibility\n // for the old `require()` API. Also ensure `exports` is not a DOM Element.\n // If we're in the browser, export as a global object.\n\n global.Observer = Observer;\n global.isBlacklisted = isBlacklisted;\n global.Observer.runEOM_ = runEOM;\n global.Observer.observerSentinel_ = observerSentinel; // for testing.\n global.Observer.hasObjectObserve = hasObserve;\n global.diffObjectFromOldObject = diffObjectFromOldObject;\n global.ObjectObserver = ObjectObserver;\n\n})(exports);\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./lib/observe-js/observe.js\n ** module id = 29\n ** module chunks = 0\n **/","var randHex = require('./randHex');\nvar choice = require('./choice');\n\n /**\n * Returns pseudo-random guid (UUID v4)\n * IMPORTANT: it's not totally \"safe\" since randHex/choice uses Math.random\n * by default and sequences can be predicted in some cases. See the\n * \"random/random\" documentation for more info about it and how to replace\n * the default PRNG.\n */\n function guid() {\n return (\n randHex(8)+'-'+\n randHex(4)+'-'+\n // v4 UUID always contain \"4\" at this position to specify it was\n // randomly generated\n '4' + randHex(3) +'-'+\n // v4 UUID always contain chars [a,b,8,9] at this position\n choice(8, 9, 'a', 'b') + randHex(3)+'-'+\n randHex(12)\n );\n }\n module.exports = guid;\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/random/guid.js\n ** module id = 30\n ** module chunks = 0\n **/","var choice = require('./choice');\n\n var _chars = '0123456789abcdef'.split('');\n\n /**\n * Returns a random hexadecimal string\n */\n function randHex(size){\n size = size && size > 0? size : 6;\n var str = '';\n while (size--) {\n str += choice(_chars);\n }\n return str;\n }\n\n module.exports = randHex;\n\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/random/randHex.js\n ** module id = 31\n ** module chunks = 0\n **/","var randInt = require('./randInt');\nvar isArray = require('../lang/isArray');\n\n /**\n * Returns a random element from the supplied arguments\n * or from the array (if single argument is an array).\n */\n function choice(items) {\n var target = (arguments.length === 1 && isArray(items))? items : arguments;\n return target[ randInt(0, target.length - 1) ];\n }\n\n module.exports = choice;\n\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/random/choice.js\n ** module id = 32\n ** module chunks = 0\n **/","var MIN_INT = require('../number/MIN_INT');\nvar MAX_INT = require('../number/MAX_INT');\nvar rand = require('./rand');\n\n /**\n * Gets random integer inside range or snap to min/max values.\n */\n function randInt(min, max){\n min = min == null? MIN_INT : ~~min;\n max = max == null? MAX_INT : ~~max;\n // can't be max + 0.5 otherwise it will round up if `rand`\n // returns `max` causing it to overflow range.\n // -0.5 and + 0.49 are required to avoid bias caused by rounding\n return Math.round( rand(min - 0.5, max + 0.499999999999) );\n }\n\n module.exports = randInt;\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/random/randInt.js\n ** module id = 33\n ** module chunks = 0\n **/","/**\n * @constant Minimum 32-bit signed integer value (-2^31).\n */\n\n module.exports = -2147483648;\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/number/MIN_INT.js\n ** module id = 34\n ** module chunks = 0\n **/","/**\n * @constant Maximum 32-bit signed integer value. (2^31 - 1)\n */\n\n module.exports = 2147483647;\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/number/MAX_INT.js\n ** module id = 35\n ** module chunks = 0\n **/","var random = require('./random');\nvar MIN_INT = require('../number/MIN_INT');\nvar MAX_INT = require('../number/MAX_INT');\n\n /**\n * Returns random number inside range\n */\n function rand(min, max){\n min = min == null? MIN_INT : min;\n max = max == null? MAX_INT : max;\n return min + (max - min) * random();\n }\n\n module.exports = rand;\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/random/rand.js\n ** module id = 36\n ** module chunks = 0\n **/","\n\n /**\n * Just a wrapper to Math.random. No methods inside mout/random should call\n * Math.random() directly so we can inject the pseudo-random number\n * generator if needed (ie. in case we need a seeded random or a better\n * algorithm than the native one)\n */\n function random(){\n return random.get();\n }\n\n // we expose the method so it can be swapped if needed\n random.get = Math.random;\n\n module.exports = random;\n\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/random/random.js\n ** module id = 37\n ** module chunks = 0\n **/","var isKind = require('./isKind');\n /**\n */\n var isArray = Array.isArray || function (val) {\n return isKind(val, 'Array');\n };\n module.exports = isArray;\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/lang/isArray.js\n ** module id = 38\n ** module chunks = 0\n **/","var kindOf = require('./kindOf');\n /**\n * Check if value is from a specific \"kind\".\n */\n function isKind(val, kind){\n return kindOf(val) === kind;\n }\n module.exports = isKind;\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/lang/isKind.js\n ** module id = 39\n ** module chunks = 0\n **/","\n\n var _rKind = /^\\[object (.*)\\]$/,\n _toString = Object.prototype.toString,\n UNDEF;\n\n /**\n * Gets the \"kind\" of value. (e.g. \"String\", \"Number\", etc)\n */\n function kindOf(val) {\n if (val === null) {\n return 'Null';\n } else if (val === UNDEF) {\n return 'Undefined';\n } else {\n return _rKind.exec( _toString.call(val) )[1];\n }\n }\n module.exports = kindOf;\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/lang/kindOf.js\n ** module id = 40\n ** module chunks = 0\n **/","import DSUtils from '../../utils'\nimport DSErrors from '../../errors'\n\nlet {NER, IA, R} = DSErrors\nconst fakeId = `DS_${new Date().getTime()}`\n\nfunction diffIsEmpty (diff) {\n return !(DSUtils.isEmpty(diff.added) &&\n DSUtils.isEmpty(diff.removed) &&\n DSUtils.isEmpty(diff.changed))\n}\n\nfunction check (fnName, resourceName, id, options) {\n let _this = this\n let definition = _this.definitions[resourceName]\n options = options || {}\n\n id = DSUtils.resolveId(definition, id)\n if (!definition) {\n throw new NER(resourceName)\n } else if (!DSUtils._sn(id)) {\n throw DSUtils._snErr('id')\n }\n id = id === fakeId ? undefined : id\n\n options = DSUtils._(definition, options)\n\n options.logFn(fnName, id, options)\n\n return {_this, definition, _resourceName: resourceName, _id: id, _options: options}\n}\n\nexport default {\n // Return the changes for the given item, if any.\n //\n // @param resourceName The name of the type of resource of the item whose changes are to be returned.\n // @param id The primary key of the item whose changes are to be returned.\n // @param options Optional configuration.\n // @param options.ignoredChanges Array of strings or regular expressions of fields, the changes of which are to be ignored.\n // @returns The changes of the given item, if any.\n changes (resourceName, id, options) {\n let {_this, definition, _resourceName, _id, _options} = check.call(this, 'changes', resourceName, id, options)\n\n let item = definition.get(_id)\n if (item) {\n let observer = _this.store[_resourceName].observers[_id]\n if (observer && typeof observer === 'function') {\n // force observation handler to be fired for item if there are changes and `Object.observe` is not available\n observer.deliver()\n }\n\n let ignoredChanges = _options.ignoredChanges || []\n // add linked relations to list of ignored changes\n DSUtils.forEach(definition.relationFields, function (field) {\n if (!DSUtils.contains(ignoredChanges, field)) {\n ignoredChanges.push(field)\n }\n })\n // calculate changes\n let diff = DSUtils.diffObjectFromOldObject(item, _this.store[_resourceName].previousAttributes[_id], DSUtils.equals, ignoredChanges)\n // remove functions from diff\n DSUtils.forOwn(diff, function (changeset, name) {\n let toKeep = []\n DSUtils.forOwn(changeset, function (value, field) {\n if (!DSUtils.isFunction(value)) {\n toKeep.push(field)\n }\n })\n diff[name] = DSUtils.pick(diff[name], toKeep)\n })\n // definitely ignore changes to linked relations\n DSUtils.forEach(definition.relationFields, function (field) {\n delete diff.added[field]\n delete diff.removed[field]\n delete diff.changed[field]\n })\n return diff\n }\n },\n\n // Return the change history of the given item, if any.\n //\n // @param resourceName The name of the type of resource of the item whose change history is to be returned.\n // @param id The primary key of the item whose change history is to be returned.\n // @returns The change history of the given item, if any.\n changeHistory (resourceName, id) {\n let {_this, definition, _resourceName, _id} = check.call(this, 'changeHistory', resourceName, id || fakeId)\n let resource = _this.store[_resourceName]\n\n if (!definition.keepChangeHistory) {\n definition.errorFn('changeHistory is disabled for this resource!')\n } else {\n if (_resourceName) {\n let item = definition.get(_id)\n if (item) {\n return resource.changeHistories[_id]\n }\n } else {\n return resource.changeHistory\n }\n }\n },\n\n commit (resourceName, id) {\n let {_this, definition, _resourceName, _id} = check.call(this, 'commit', resourceName, id)\n let resource = _this.store[_resourceName]\n let item = _this.store[_resourceName].index[_id]\n if (item) {\n resource.previousAttributes[_id] = DSUtils.copy(item, null, null, null, definition.relationFields)\n }\n\n if (resource.changeHistories[_id].length) {\n DSUtils.forEach(resource.changeHistories[_id], function (changeRecord) {\n DSUtils.remove(resource.changeHistory, changeRecord)\n })\n resource.changeHistories[_id].splice(0, resource.changeHistories[_id].length)\n }\n return item\n },\n\n // Re-compute the computed properties of the given item.\n //\n // @param resourceName The name of the type of resource of the item whose computed properties are to be re-computed.\n // @param instance The instance whose computed properties are to be re-computed.\n // @returns The item whose computed properties were re-computed.\n compute (resourceName, instance) {\n let _this = this\n let definition = _this.definitions[resourceName]\n\n instance = DSUtils.resolveItem(_this.store[resourceName], instance)\n if (!definition) {\n throw new NER(resourceName)\n } else if (!instance) {\n throw new R('Item not in the store!')\n } else if (!DSUtils._o(instance) && !DSUtils._sn(instance)) {\n throw new IA('\"instance\" must be an object, string or number!')\n }\n\n definition.logFn('compute', instance)\n\n // re-compute all computed properties\n DSUtils.forOwn(definition.computed, function (fn, field) {\n DSUtils.compute.call(instance, fn, field)\n })\n return instance\n },\n\n // Factory function to create an instance of the specified Resource.\n //\n // @param resourceName The name of the type of resource of which to create an instance.\n // @param attrs Hash of properties with which to initialize the instance.\n // @param options Optional configuration.\n // @param options.defaults Default values with which to initialize the instance.\n // @returns The new instance.\n createInstance (resourceName, attrs, options) {\n let definition = this.definitions[resourceName]\n let item\n\n attrs = attrs || {}\n\n if (!definition) {\n throw new NER(resourceName)\n } else if (attrs && !DSUtils.isObject(attrs)) {\n throw new IA('\"attrs\" must be an object!')\n }\n\n options = DSUtils._(definition, options)\n\n const relationList = definition.relationList || []\n if (relationList.length) {\n DSUtils.forEach(relationList, function (def) {\n const relationData = DSUtils.get(attrs, def.localField)\n if (relationData) {\n if (DSUtils.isArray(relationData)) {\n const array = []\n const Resource = definition.getResource(def.relation)\n const _options = options.orig()\n DSUtils.forEach(relationData, function (relationDataItem) {\n array.push(Resource.createInstance(relationDataItem, _options))\n })\n DSUtils.set(attrs, def.localField, array)\n } else if (DSUtils.isObject(relationData)) {\n DSUtils.set(attrs, def.localField, definition.getResource(def.relation).createInstance(relationData, options.orig()))\n }\n }\n })\n }\n\n options.logFn('createInstance', attrs, options)\n\n // lifecycle\n options.beforeCreateInstance(options, attrs)\n\n // grab instance constructor function from Resource definition\n let Constructor = definition[definition.class]\n\n // create instance\n item = new Constructor()\n\n if (definition.instanceEvents) {\n DSUtils.Events(item)\n }\n\n // add default values\n if (options.defaultValues) {\n DSUtils.deepMixIn(item, DSUtils.copy(options.defaultValues))\n }\n DSUtils.deepMixIn(item, attrs)\n\n // compute computed properties\n if (definition.computed) {\n definition.compute(item)\n }\n // lifecycle\n options.afterCreateInstance(options, item)\n return item\n },\n\n // Create a new collection of the specified Resource.\n //\n // @param resourceName The name of the type of resource of which to create a collection\n // @param arr Possibly empty array of data from which to create the collection.\n // @param params The criteria by which to filter items. Will be passed to `DS#findAll` if `fetch` is called. See http://www.js-data.io/docs/query-syntax\n // @param options Optional configuration.\n // @param options.notify Whether to call the beforeCreateCollection and afterCreateCollection lifecycle hooks..\n // @returns The new collection.\n createCollection (resourceName, arr, params, options) {\n let _this = this\n let definition = _this.definitions[resourceName]\n\n arr = arr || []\n params = params || {}\n\n if (!definition) {\n throw new NER(resourceName)\n } else if (arr && !DSUtils.isArray(arr)) {\n throw new IA('\"arr\" must be an array!')\n }\n\n options = DSUtils._(definition, options)\n\n options.logFn('createCollection', arr, options)\n\n // lifecycle\n options.beforeCreateCollection(options, arr)\n\n // define the API for this collection\n Object.defineProperties(arr, {\n // Call DS#findAll with the params of this collection, filling the collection with the results.\n fetch: {\n value: function (params, options) {\n let __this = this\n __this.params = params || __this.params\n return definition.findAll(__this.params, options).then(function (data) {\n if (data === __this) {\n return __this\n }\n data.unshift(__this.length)\n data.unshift(0)\n __this.splice.apply(__this, data)\n data.shift()\n data.shift()\n if (data.$$injected) {\n _this.store[resourceName].queryData[DSUtils.toJson(__this.params)] = __this\n __this.$$injected = true\n }\n return __this\n })\n }\n },\n // params for this collection. See http://www.js-data.io/docs/query-syntax\n params: {\n value: params,\n writable: true\n },\n // name of the resource type of this collection\n resourceName: {\n value: resourceName\n }\n })\n\n // lifecycle\n options.afterCreateCollection(options, arr)\n return arr\n },\n defineResource: require('./defineResource'),\n digest () {\n this.observe.Platform.performMicrotaskCheckpoint()\n },\n eject: require('./eject'),\n ejectAll: require('./ejectAll'),\n filter: require('./filter'),\n\n // Return the item with the given primary key if its in the store.\n //\n // @param resourceName The name of the type of resource of the item to retrieve.\n // @param id The primary key of the item to retrieve.\n // @returns The item with the given primary key if it's in the store.\n // /\n get (resourceName, id) {\n let {_this, _resourceName, _id} = check.call(this, 'get', resourceName, id)\n\n // return the item if it exists\n return _this.store[_resourceName].index[_id]\n },\n\n // Return the items in the store that have the given primary keys.\n //\n // @param resourceName The name of the type of resource of the items to retrieve.\n // @param ids The primary keys of the items to retrieve.\n // @returns The items with the given primary keys if they're in the store.\n getAll (resourceName, ids) {\n let _this = this\n let definition = _this.definitions[resourceName]\n let resource = _this.store[resourceName]\n let collection = []\n\n if (!definition) {\n throw new NER(resourceName)\n } else if (ids && !DSUtils._a(ids)) {\n throw DSUtils._aErr('ids')\n }\n\n definition.logFn('getAll', ids)\n\n if (DSUtils._a(ids)) {\n // return just the items with the given primary keys\n let length = ids.length\n for (var i = 0; i < length; i++) {\n if (resource.index[ids[i]]) {\n collection.push(resource.index[ids[i]])\n }\n }\n } else {\n // most efficient of retrieving ALL items from the store\n collection = resource.collection.slice()\n }\n\n return collection\n },\n\n // Return the whether the item with the given primary key has any changes.\n //\n // @param resourceName The name of the type of resource of the item.\n // @param id The primary key of the item.\n // @returns Whether the item with the given primary key has any changes.\n hasChanges (resourceName, id) {\n let {definition, _id} = check.call(this, 'hasChanges', resourceName, id)\n\n return definition.get(_id) ? diffIsEmpty(definition.changes(_id)) : false\n },\n inject: require('./inject'),\n\n // Return whether the item with the given primary key is a temporary item.\n //\n // @param resourceName The name of the type of resource of the item.\n // @param id The primary key of the item.\n // @returns Whether the item with the given primary key is a temporary item.\n isNew (resourceName, id) {\n let {_this, _resourceName, _id} = check.call(this, 'isNew', resourceName, id || fakeId)\n let resource = _this.store[_resourceName]\n\n return !!resource.temporaryItems[_id]\n },\n\n // Return the timestamp from the last time the item with the given primary key was changed.\n //\n // @param resourceName The name of the type of resource of the item.\n // @param id The primary key of the item.\n // @returns Timestamp from the last time the item was changed.\n lastModified (resourceName, id) {\n let {_this, _resourceName, _id} = check.call(this, 'lastModified', resourceName, id || fakeId)\n let resource = _this.store[_resourceName]\n\n if (_id) {\n if (!(_id in resource.modified)) {\n resource.modified[_id] = 0\n }\n return resource.modified[_id]\n }\n return resource.collectionModified\n },\n\n // Return the timestamp from the last time the item with the given primary key was saved via an adapter.\n //\n // @param resourceName The name of the type of resource of the item.\n // @param id The primary key of the item.\n // @returns Timestamp from the last time the item was saved.\n lastSaved (resourceName, id) {\n let {_this, _resourceName, _id} = check.call(this, 'lastSaved', resourceName, id || fakeId)\n let resource = _this.store[_resourceName]\n\n if (!(_id in resource.saved)) {\n resource.saved[_id] = 0\n }\n return resource.saved[_id]\n },\n\n // Return the previous attributes of the item with the given primary key before it was changed.\n //\n // @param resourceName The name of the type of resource of the item.\n // @param id The primary key of the item.\n // @returns The previous attributes of the item\n previous (resourceName, id) {\n let {_this, _resourceName, _id} = check.call(this, 'previous', resourceName, id)\n let resource = _this.store[_resourceName]\n\n // return resource from cache\n return resource.previousAttributes[_id] ? DSUtils.copy(resource.previousAttributes[_id]) : undefined\n },\n\n // Revert all attributes of the item with the given primary key to their previous values.\n //\n // @param resourceName The name of the type of resource of the item.\n // @param id The primary key of the item.\n // @param options Optional configuration.\n // @returns The reverted item\n revert (resourceName, id, options) {\n let {_this, definition, _resourceName, _id, _options} = check.call(this, 'revert', resourceName, id, options)\n\n let preserve = _options.preserve || []\n let injectObj = {}\n\n if (preserve.length === 0) {\n injectObj = _this.previous(_resourceName, _id)\n } else {\n let instance = definition.get(id)\n let previousInstance = _this.previous(_resourceName, _id)\n\n if (!instance) { return }\n\n DSUtils.forOwn(instance, function (value, key) {\n if (DSUtils.contains(preserve, key)) {\n injectObj[key] = instance[key]\n } else {\n injectObj[key] = previousInstance[key]\n }\n })\n }\n\n return definition.inject(injectObj, {\n onConflict: 'replace'\n })\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/datastore/sync_methods/index.js\n **/","/* jshint evil:true, loopfunc:true */\nimport DSUtils from '../../utils'\nimport DSErrors from '../../errors'\n\n/**\n * These are DS methods that will be proxied by instances. e.g.\n *\n * var store = new JSData.DS()\n * var User = store.defineResource('user')\n * var user = User.createInstance({ id: 1 })\n *\n * store.update(resourceName, id, attrs[, options]) // DS method\n * User.update(id, attrs[, options]) // DS method proxied on a Resource\n * user.DSUpdate(attrs[, options]) // DS method proxied on an Instance\n */\nlet instanceMethods = [\n 'compute',\n 'eject',\n 'refresh',\n 'save',\n 'update',\n 'destroy',\n 'loadRelations',\n 'changeHistory',\n 'changes',\n 'commit',\n 'hasChanges',\n 'isNew',\n 'lastModified',\n 'lastSaved',\n 'previous',\n 'revert'\n]\n\nmodule.exports = function defineResource (definition) {\n let _this = this\n let definitions = _this.definitions\n\n /**\n * This allows the name-only definition shorthand.\n * store.defineResource('user') is the same as store.defineResource({ name: 'user'})\n */\n if (DSUtils._s(definition)) {\n definition = {\n name: definition.replace(/\\s/gi, '')\n }\n }\n if (!DSUtils._o(definition)) {\n throw DSUtils._oErr('definition')\n } else if (!DSUtils._s(definition.name)) {\n throw new DSErrors.IA('\"name\" must be a string!')\n } else if (definitions[definition.name]) {\n throw new DSErrors.R(`${definition.name} is already registered!`)\n }\n\n /**\n * Dynamic Resource constructor function.\n *\n * A Resource inherits from the defaults of the data store that created it.\n */\n function Resource (options) {\n this.defaultValues = {}\n this.methods = {}\n this.computed = {}\n this.scopes = {}\n this.actions = {}\n DSUtils.deepMixIn(this, options)\n let parent = _this.defaults\n if (definition.extends && definitions[definition.extends]) {\n parent = definitions[definition.extends]\n }\n DSUtils.fillIn(this.defaultValues, parent.defaultValues)\n DSUtils.fillIn(this.methods, parent.methods)\n DSUtils.fillIn(this.computed, parent.computed)\n DSUtils.fillIn(this.scopes, parent.scopes)\n DSUtils.fillIn(this.actions, parent.actions)\n this.endpoint = ('endpoint' in options) ? options.endpoint : this.name\n }\n\n try {\n // Resources can inherit from another resource instead of inheriting directly from the data store defaults.\n if (definition.extends && definitions[definition.extends]) {\n // Inherit from another resource\n Resource.prototype = definitions[definition.extends]\n } else {\n // Inherit from global defaults\n Resource.prototype = _this.defaults\n }\n definitions[definition.name] = new Resource(definition)\n\n var def = definitions[definition.name]\n\n def.getResource = function (resourceName) { return _this.definitions[resourceName] }\n\n def.logFn('Preparing resource.')\n\n if (!DSUtils._s(def.idAttribute)) {\n throw new DSErrors.IA('\"idAttribute\" must be a string!')\n }\n\n // Setup nested parent configuration\n if (def.relations) {\n def.relationList = []\n def.relationFields = []\n DSUtils.forOwn(def.relations, function (relatedModels, type) {\n DSUtils.forOwn(relatedModels, function (defs, relationName) {\n if (!DSUtils._a(defs)) {\n relatedModels[relationName] = [defs]\n }\n DSUtils.forEach(relatedModels[relationName], function (d) {\n d.type = type\n d.relation = relationName\n d.name = def.name\n def.relationList.push(d)\n if (d.localField) {\n def.relationFields.push(d.localField)\n }\n })\n })\n })\n if (def.relations.belongsTo) {\n def.parents = {}\n DSUtils.forOwn(def.relations.belongsTo, function (relatedModel, modelName) {\n DSUtils.forEach(relatedModel, function (relation) {\n if (relation.parent) {\n def.parent = modelName\n def.parentKey = relation.localKey\n def.parentField = relation.localField\n def.parents[modelName] = {\n key: def.parentKey,\n field: def.parentField\n }\n }\n })\n })\n }\n if (typeof Object.freeze === 'function') {\n Object.freeze(def.relations)\n Object.freeze(def.relationList)\n }\n }\n\n // Create the wrapper class for the new resource\n var _class = def['class'] = DSUtils.pascalCase(def.name)\n try {\n if (typeof def.useClass === 'function') {\n if (def.csp) {\n def[_class] = function () { def.useClass.call(this) }\n } else {\n def[_class] = new Function('def', `return function ${_class}() { def.useClass.call(this); }`)(def) // eslint-disable-line\n }\n def[_class].prototype = (function (proto) {\n function Ctor () {\n }\n\n Ctor.prototype = proto\n return new Ctor()\n })(def.useClass.prototype)\n } else if (def.csp) {\n def[_class] = function () { }\n } else {\n def[_class] = new Function(`return function ${_class}() {}`)() // eslint-disable-line\n }\n } catch (e) {\n def[_class] = function () {}\n }\n\n // Apply developer-defined instance methods\n DSUtils.forOwn(def.methods, function (fn, m) {\n def[_class].prototype[m] = fn\n })\n\n /**\n * var user = User.createInstance({ id: 1 })\n * user.set('foo', 'bar')\n */\n def[_class].prototype.set = function (key, value) {\n DSUtils.set(this, key, value)\n def.compute(this)\n if (def.instanceEvents) {\n setTimeout(() => {\n this.emit('DS.change', def, this)\n }, 0)\n }\n def.handleChange(this)\n return this\n }\n\n /**\n * var user = User.createInstance({ id: 1 })\n * user.get('id') // 1\n */\n def[_class].prototype.get = function (key) {\n return DSUtils.get(this, key)\n }\n\n // Setup the relation links\n DSUtils.applyRelationGettersToTarget(_this, def, def[_class].prototype)\n\n let parentOmit = null\n if (!def.hasOwnProperty('omit')) {\n parentOmit = def.omit\n def.omit = []\n } else {\n parentOmit = _this.defaults.omit\n }\n def.omit = def.omit.concat(parentOmit || [])\n\n // Prepare for computed properties\n DSUtils.forOwn(def.computed, function (fn, field) {\n if (DSUtils.isFunction(fn)) {\n def.computed[field] = [fn]\n fn = def.computed[field]\n }\n if (def.methods && field in def.methods) {\n def.errorFn(`Computed property \"${field}\" conflicts with previously defined prototype method!`)\n }\n def.omit.push(field)\n if (DSUtils.isArray(fn)) {\n var deps\n if (fn.length === 1) {\n let match = fn[0].toString().match(/function.*?\\(([\\s\\S]*?)\\)/)\n deps = match[1].split(',')\n deps = DSUtils.filter(deps, function (x) { return x })\n def.computed[field] = deps.concat(fn)\n fn = def.computed[field]\n if (deps.length) {\n def.errorFn('Use the computed property array syntax for compatibility with minified code!')\n }\n }\n deps = fn.slice(0, fn.length - 1)\n DSUtils.forEach(deps, function (val, index) {\n deps[index] = val.trim()\n })\n fn.deps = DSUtils.filter(deps, function (dep) {\n return !!dep\n })\n } else if (DSUtils.isObject(fn)) {\n Object.defineProperty(def[_class].prototype, field, fn)\n }\n })\n\n // add instance proxies of DS methods\n DSUtils.forEach(instanceMethods, function (name) {\n def[_class].prototype[`DS${DSUtils.pascalCase(name)}`] = function (...args) {\n args.unshift(this[def.idAttribute] || this)\n args.unshift(def.name)\n return _this[name].apply(_this, args)\n }\n })\n\n // manually add instance proxy for DS#create\n def[_class].prototype.DSCreate = function (...args) {\n args.unshift(this)\n args.unshift(def.name)\n return _this.create.apply(_this, args)\n }\n\n // Initialize store data for the new resource\n _this.store[def.name] = {\n collection: [],\n expiresHeap: new DSUtils.BinaryHeap(function (x) { return x.expires }, function (x, y) { return x.item === y }),\n completedQueries: {},\n queryData: {},\n pendingQueries: {},\n index: {},\n modified: {},\n saved: {},\n previousAttributes: {},\n observers: {},\n changeHistories: {},\n changeHistory: [],\n collectionModified: 0,\n temporaryItems: {}\n }\n\n let resource = _this.store[def.name]\n\n // start the reaping\n if (def.reapInterval) {\n setInterval(() => def.reap(), def.reapInterval)\n }\n\n // proxy DS methods with shorthand ones\n let fns = ['registerAdapter', 'getAdapterName', 'getAdapter', 'is', '!clear']\n for (let key in _this) {\n if (typeof _this[key] === 'function') {\n fns.push(key)\n }\n }\n\n /**\n * Create the Resource shorthands that proxy DS methods. e.g.\n *\n * var store = new JSData.DS()\n * var User = store.defineResource('user')\n *\n * store.update(resourceName, id, attrs[, options]) // DS method\n * User.update(id, attrs[, options]) // DS method proxied on a Resource\n */\n DSUtils.forEach(fns, function (key) {\n let k = key\n if (k[0] === '!') {\n return\n }\n if (_this[k].shorthand !== false) {\n def[k] = function (...args) {\n args.unshift(def.name)\n return _this[k].apply(_this, args)\n }\n def[k].before = function (fn) {\n let orig = def[k]\n def[k] = function (...args) {\n return orig.apply(def, fn.apply(def, args) || args)\n }\n }\n } else {\n def[k] = function (...args) { return _this[k].apply(_this, args) }\n }\n })\n\n def.beforeValidate = DSUtils.promisify(def.beforeValidate)\n def.validate = DSUtils.promisify(def.validate)\n def.afterValidate = DSUtils.promisify(def.afterValidate)\n def.beforeCreate = DSUtils.promisify(def.beforeCreate)\n def.afterCreate = DSUtils.promisify(def.afterCreate)\n def.afterFind = DSUtils.promisify(def.afterFind)\n def.afterFindAll = DSUtils.promisify(def.afterFindAll)\n def.afterLoadRelations = DSUtils.promisify(def.afterLoadRelations)\n def.beforeUpdate = DSUtils.promisify(def.beforeUpdate)\n def.afterUpdate = DSUtils.promisify(def.afterUpdate)\n def.beforeDestroy = DSUtils.promisify(def.beforeDestroy)\n def.afterDestroy = DSUtils.promisify(def.afterDestroy)\n\n let defaultAdapter\n if (def.hasOwnProperty('defaultAdapter')) {\n defaultAdapter = def.defaultAdapter\n }\n\n // setup \"actions\"\n DSUtils.forOwn(def.actions, function (action, name) {\n if (def[name] && !def.actions[name]) {\n throw new Error(`Cannot override existing method \"${name}\"!`)\n }\n action.request = action.request || function (config) { return config }\n action.response = action.response || function (response) { return response }\n action.responseError = action.responseError || function (err) { return DSUtils.Promise.reject(err) }\n def[name] = function (id, options) {\n if (DSUtils._o(id)) {\n options = id\n }\n options = options || {}\n let adapter = def.getAdapter(action.adapter || defaultAdapter || 'http')\n let config = DSUtils.deepMixIn({}, action)\n if (!options.hasOwnProperty('endpoint') && config.endpoint) {\n options.endpoint = config.endpoint\n }\n if (typeof options.getEndpoint === 'function') {\n config.url = options.getEndpoint(def, options)\n } else {\n let args = [options.basePath || def.basePath || adapter.defaults.basePath, adapter.getEndpoint(def, DSUtils._sn(id) ? id : null, options)]\n if (DSUtils._sn(id)) {\n args.push(id)\n }\n args.push(action.pathname || name)\n config.url = DSUtils.makePath.apply(null, args)\n }\n config.method = config.method || 'GET'\n config.resourceName = def.name\n DSUtils.deepMixIn(config, options)\n return new DSUtils.Promise(function (resolve) { return resolve(config) })\n .then(options.request || action.request)\n .then(function (config) { return adapter.HTTP(config) })\n .then(function (data) {\n if (data && data.config) {\n data.config.resourceName = def.name\n }\n return data\n })\n .then(options.response || action.response, options.responseError || action.responseError)\n }\n })\n\n // mix in events\n DSUtils.Events(def)\n\n def.handleChange = function (data) {\n resource.collectionModified = DSUtils.updateTimestamp(resource.collectionModified)\n if (def.notify) {\n setTimeout(() => {\n def.emit('DS.change', def, data)\n }, 0)\n }\n }\n\n def.logFn('Done preparing resource.')\n\n return def\n } catch (err) {\n _this.defaults.errorFn(err)\n delete definitions[definition.name]\n delete _this.store[definition.name]\n throw err\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/datastore/sync_methods/defineResource.js\n **/","/* jshint eqeqeq:false */\n/**\n * Eject an item from the store, if it is currently in the store.\n *\n * @param resourceName The name of the resource type of the item eject.\n * @param id The primary key of the item to eject.\n * @param options Optional configuration.\n * @param options.notify Whether to emit the \"DS.beforeEject\" and \"DS.afterEject\" events\n * @param options.clearEmptyQueries Whether to remove cached findAll queries that become empty as a result of this method call.\n * @returns The ejected item if one was ejected.\n */\nmodule.exports = function eject (resourceName, id, options) {\n let _this = this\n let DSUtils = _this.utils\n let definition = _this.definitions[resourceName]\n let resource = _this.store[resourceName]\n let item\n let found = false\n\n id = DSUtils.resolveId(definition, id)\n\n if (!definition) {\n throw new _this.errors.NER(resourceName)\n } else if (!DSUtils._sn(id)) {\n throw DSUtils._snErr('id')\n }\n\n options = DSUtils._(definition, options)\n\n options.logFn('eject', id, options)\n\n // find the item to eject\n for (var i = 0; i < resource.collection.length; i++) {\n if (resource.collection[i][definition.idAttribute] == id) { // eslint-disable-line\n item = resource.collection[i]\n // remove its expiration timestamp\n resource.expiresHeap.remove(item)\n found = true\n break\n }\n }\n if (found) {\n // lifecycle\n definition.beforeEject(options, item)\n if (options.notify) {\n definition.emit('DS.beforeEject', definition, item)\n }\n\n // find the item in any ($$injected) cached queries\n let toRemove = []\n DSUtils.forOwn(resource.queryData, function (items, queryHash) {\n if (items.$$injected) {\n DSUtils.remove(items, item)\n }\n // optionally remove any empty queries\n if (!items.length && options.clearEmptyQueries) {\n toRemove.push(queryHash)\n }\n })\n\n // clean up\n DSUtils.forEach(resource.changeHistories[id], function (changeRecord) {\n DSUtils.remove(resource.changeHistory, changeRecord)\n })\n DSUtils.forEach(toRemove, function (queryHash) {\n delete resource.completedQueries[queryHash]\n delete resource.queryData[queryHash]\n })\n if (resource.observers[id] && typeof resource.observers[id].close === 'function') {\n // stop observation\n resource.observers[id].close()\n }\n delete resource.observers[id]\n delete resource.index[id]\n delete resource.previousAttributes[id]\n delete resource.completedQueries[id]\n delete resource.pendingQueries[id]\n delete resource.changeHistories[id]\n delete resource.modified[id]\n delete resource.saved[id]\n if (definition.instanceEvents && item.off) {\n item.off()\n }\n\n // remove it from the store\n resource.collection.splice(i, 1)\n // collection has been modified\n definition.handleChange(item)\n\n // lifecycle\n definition.afterEject(options, item)\n if (options.notify) {\n definition.emit('DS.afterEject', definition, item)\n }\n\n return item\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/datastore/sync_methods/eject.js\n **/","/**\n * Eject a collection of items from the store, if any items currently in the store match the given criteria.\n *\n * @param resourceName The name of the resource type of the items eject.\n * @param params The criteria by which to match items to eject. See http://www.js-data.io/docs/query-syntax\n * @param options Optional configuration.\n * @returns The collection of items that were ejected, if any.\n */\nmodule.exports = function ejectAll (resourceName, params, options) {\n let _this = this\n let DSUtils = _this.utils\n let definition = _this.definitions[resourceName]\n params = params || {}\n\n if (!definition) {\n throw new _this.errors.NER(resourceName)\n } else if (!DSUtils._o(params)) {\n throw DSUtils._oErr('params')\n }\n\n options = DSUtils._(definition, options)\n definition.logFn('ejectAll', params, options)\n\n DSUtils.applyScope(definition, params, options)\n\n let resource = _this.store[resourceName]\n let queryHash = DSUtils.toJson(params)\n\n // get items that match the criteria\n let items = definition.filter(params)\n\n if (DSUtils.isEmpty(params)) {\n // remove all completed queries if ejecting all items\n resource.completedQueries = {}\n } else {\n // remove matching completed query, if any\n delete resource.completedQueries[queryHash]\n }\n // prepare to remove matching items\n DSUtils.forEach(items, function (item) {\n if (item && item[definition.idAttribute]) {\n definition.eject(item[definition.idAttribute], options)\n }\n })\n // collection has been modified\n definition.handleChange(items)\n return items\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/datastore/sync_methods/ejectAll.js\n **/","/**\n * Return the subset of items currently in the store that match the given criteria.\n *\n * The actual filtering is delegated to DS#defaults.defaultFilter, which can be overridden by developers.\n *\n * @param resourceName The name of the resource type of the items to filter.\n * @param params The criteria by which to filter items. See http://www.js-data.io/docs/query-syntax\n * @param options Optional configuration.\n * @returns Matching items.\n */\nmodule.exports = function filter (resourceName, params, options) {\n let _this = this\n let DSUtils = _this.utils\n let definition = _this.definitions[resourceName]\n\n if (!definition) {\n throw new _this.errors.NER(resourceName)\n } else if (params && !DSUtils._o(params)) {\n throw DSUtils._oErr('params')\n }\n\n // Protect against null\n params = params || {}\n options = DSUtils._(definition, options)\n options.logFn('filter', params, options)\n\n DSUtils.applyScope(definition, params, options)\n\n // delegate filtering to DS#defaults.defaultFilter, which can be overridden by developers.\n return definition.defaultFilter.call(_this, _this.store[resourceName].collection, resourceName, params, options)\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/datastore/sync_methods/filter.js\n **/","import DSUtils from '../../utils'\nimport DSErrors from '../../errors'\n\n/**\n * This is a beast of a file, but it's where a significant portion of the magic happens.\n *\n * DS#inject makes up the core of how data gets into the store.\n */\n\n/**\n * This factory function produces an observer handler function tailor-made for the current item being injected.\n *\n * The observer handler is what allows computed properties and change tracking to function.\n *\n * @param definition Resource definition produced by DS#defineResource\n * @param resource Resource data as internally stored by the data store\n * @returns {Function} Observer handler function\n * @private\n */\nfunction makeObserverHandler (definition, resource) {\n var DS = this\n\n // using \"var\" avoids a JSHint error\n var name = definition.name\n\n /**\n * This will be called by observe-js when a new change record is available for the observed object\n *\n * @param added Change record for added properties\n * @param removed Change record for removed properties\n * @param changed Change record for changed properties\n * @param oldValueFn Function that can be used to get the previous value of a changed property\n * @param firstTime Whether this is the first time this function is being called for the given item. Will only be true once.\n */\n return function _react (added, removed, changed, oldValueFn, firstTime) {\n let target = this\n let item\n\n // Get the previous primary key of the observed item, in-case some knucklehead changed it\n let innerId = (oldValueFn && oldValueFn(definition.idAttribute)) ? oldValueFn(definition.idAttribute) : target[definition.idAttribute]\n\n // Ignore changes to relation links\n DSUtils.forEach(definition.relationFields, function (field) {\n delete added[field]\n delete removed[field]\n delete changed[field]\n })\n\n // Detect whether there are actually any changes\n if (!DSUtils.isEmpty(added) || !DSUtils.isEmpty(removed) || !DSUtils.isEmpty(changed) || firstTime) {\n item = DS.get(name, innerId)\n\n // update item and collection \"modified\" timestamps\n resource.modified[innerId] = DSUtils.updateTimestamp(resource.modified[innerId])\n\n if (item && definition.instanceEvents) {\n setTimeout(function () {\n item.emit('DS.change', definition, item)\n }, 0)\n }\n\n definition.handleChange(item)\n\n // Save a change record for the item\n if (definition.keepChangeHistory) {\n let changeRecord = {\n resourceName: name,\n target: item,\n added,\n removed,\n changed,\n timestamp: resource.modified[innerId]\n }\n resource.changeHistories[innerId].push(changeRecord)\n resource.changeHistory.push(changeRecord)\n }\n }\n\n // Recompute computed properties if any computed properties depend on changed properties\n if (definition.computed) {\n item = item || DS.get(name, innerId)\n DSUtils.forOwn(definition.computed, function (fn, field) {\n if (DSUtils._o(fn)) {\n return\n }\n let compute = false\n // check if required fields changed\n DSUtils.forEach(fn.deps, function (dep) {\n if (dep in added || dep in removed || dep in changed || !(field in item)) {\n compute = true\n }\n })\n compute = compute || !fn.deps.length\n if (compute) {\n DSUtils.compute.call(item, fn, field)\n }\n })\n }\n\n if (definition.idAttribute in changed) {\n definition.errorFn(`Doh! You just changed the primary key of an object! Your data for the \"${name}\" resource is now in an undefined (probably broken) state.`)\n }\n }\n}\n\n/**\n * A recursive function for injecting data into the store.\n *\n * @param definition Resource definition produced by DS#defineResource\n * @param resource Resource data as internally stored by the data store\n * @param attrs The data to be injected. Will be an object or an array of objects.\n * @param options Optional configuration.\n * @returns The injected data\n * @private\n */\nfunction _inject (definition, resource, attrs, options) {\n let _this = this\n let injected\n\n if (DSUtils._a(attrs)) {\n // have an array of objects, go ahead and inject each one individually and return the resulting array\n injected = []\n for (var i = 0; i < attrs.length; i++) {\n injected.push(_inject.call(_this, definition, resource, attrs[i], options))\n }\n } else {\n // check if \"idAttribute\" is a computed property\n let c = definition.computed\n let idA = definition.idAttribute\n // compute the primary key if necessary\n if (c && c[idA]) {\n let args = []\n DSUtils.forEach(c[idA].deps, function (dep) {\n args.push(attrs[dep])\n })\n attrs[idA] = c[idA][c[idA].length - 1].apply(attrs, args)\n } else if (options.temporary) {\n attrs[idA] = DSUtils.guid()\n }\n\n if (!(idA in attrs)) {\n let error = new DSErrors.R(`${definition.name}.inject: \"attrs\" must contain the property specified by \"idAttribute\"!`)\n options.errorFn(error)\n throw error\n } else {\n try {\n // when injecting object that contain their nested relations, this code\n // will recursively inject them into their proper places in the data store.\n // Magic!\n DSUtils.forEach(definition.relationList, function (def) {\n let relationName = def.relation\n let relationDef = _this.definitions[relationName]\n let toInject = attrs[def.localField]\n if (typeof def.inject === 'function') {\n def.inject(definition, def, attrs)\n } else if (toInject && def.inject !== false) {\n if (!relationDef) {\n throw new DSErrors.R(`${definition.name} relation is defined but the resource is not!`)\n }\n // handle injecting hasMany relations\n if (DSUtils._a(toInject)) {\n let items = []\n DSUtils.forEach(toInject, function (toInjectItem) {\n if (toInjectItem !== _this.store[relationName].index[toInjectItem[relationDef.idAttribute]]) {\n try {\n let injectedItem = relationDef.inject(toInjectItem, options.orig())\n if (def.foreignKey) {\n DSUtils.set(injectedItem, def.foreignKey, attrs[definition.idAttribute])\n }\n items.push(injectedItem)\n } catch (err) {\n options.errorFn(err, `Failed to inject ${def.type} relation: \"${relationName}\"!`)\n }\n }\n })\n } else {\n // handle injecting belongsTo and hasOne relations\n if (toInject !== _this.store[relationName].index[toInject[relationDef.idAttribute]]) {\n try {\n let injected = relationDef.inject(attrs[def.localField], options.orig())\n if (def.foreignKey) {\n DSUtils.set(injected, def.foreignKey, attrs[definition.idAttribute])\n }\n if (def.localKey) {\n DSUtils.set(attrs, def.localKey, DSUtils.get(injected, relationDef.idAttribute))\n }\n } catch (err) {\n options.errorFn(err, `Failed to inject ${def.type} relation: \"${relationName}\"!`)\n }\n }\n }\n }\n })\n\n // primary key of item being injected\n let id = attrs[idA]\n // item being injected\n let item = definition.get(id)\n // 0 if the item is new, otherwise the previous last modified timestamp of the item\n let initialLastModified = item ? resource.modified[id] : 0\n\n // item is new\n if (!item) {\n if (attrs instanceof definition[definition['class']]) {\n item = attrs\n } else {\n item = new definition[definition['class']]()\n }\n\n if (definition.instanceEvents && typeof item.emit !== 'function') {\n DSUtils.Events(item)\n }\n // remove relation properties from the item, since those relations have been injected by now\n DSUtils.forEach(definition.relationList, function (def) {\n if (typeof def.link === 'boolean' ? def.link : !!definition.linkRelations) {\n delete attrs[def.localField]\n }\n })\n\n // copy remaining properties to the injected item\n DSUtils.deepMixIn(item, attrs)\n\n // add item to collection\n resource.collection.push(item)\n resource.changeHistories[id] = []\n\n // create the observer handler for the data to be injected\n let _react = makeObserverHandler.call(_this, definition, resource)\n\n // If we're in the browser, start observation\n if (definition.watchChanges) {\n resource.observers[id] = new _this.observe.ObjectObserver(item)\n resource.observers[id].open(_react, item)\n }\n\n // index item\n resource.index[id] = item\n // fire observation handler for the first time\n _react.call(item, {}, {}, {}, null, true)\n // save \"previous\" attributes of the injected item, for change diffs later\n resource.previousAttributes[id] = DSUtils.copy(item, null, null, null, definition.relationFields)\n // mark item as temporary if guid has been generated\n if (options.temporary) {\n resource.temporaryItems[id] = true\n }\n } else {\n // item is being re-injected\n // new properties take precedence\n if (options.onConflict === 'merge') {\n DSUtils.deepMixIn(item, attrs)\n } else if (options.onConflict === 'replace') {\n DSUtils.forOwn(item, function (v, k) {\n if (k !== definition.idAttribute) {\n if (!attrs.hasOwnProperty(k)) {\n delete item[k]\n }\n }\n })\n DSUtils.forOwn(attrs, function (v, k) {\n if (k !== definition.idAttribute) {\n item[k] = v\n }\n })\n }\n\n if (definition.resetHistoryOnInject) {\n // clear change history for item\n _this.commit(definition.name, id)\n }\n if (resource.observers[id] && typeof resource.observers[id] === 'function') {\n // force observation callback to be fired if there are any changes to the item and `Object.observe` is not available\n resource.observers[id].deliver()\n }\n }\n // update modified timestamp of item\n resource.modified[id] = initialLastModified && resource.modified[id] === initialLastModified ? DSUtils.updateTimestamp(resource.modified[id]) : resource.modified[id]\n\n // reset expiry tracking for item\n resource.expiresHeap.remove(item)\n let timestamp = new Date().getTime()\n resource.expiresHeap.push({\n item: item,\n timestamp: timestamp,\n expires: definition.maxAge ? timestamp + definition.maxAge : Number.MAX_VALUE\n })\n\n // final injected item\n injected = item\n } catch (err) {\n options.errorFn(err, attrs)\n }\n }\n }\n return injected\n}\n\n/**\n * Inject the given object or array of objects into the data store.\n *\n * @param resourceName The name of the type of resource of the data to be injected.\n * @param attrs Object or array of objects. Objects must contain a primary key.\n * @param options Optional configuration.\n * @param options.notify Whether to emit the \"DS.beforeInject\" and \"DS.afterInject\" events.\n * @returns The injected data.\n */\nmodule.exports = function inject (resourceName, attrs, options) {\n let _this = this\n let definition = _this.definitions[resourceName]\n let resource = _this.store[resourceName]\n let injected\n\n if (!definition) {\n throw new DSErrors.NER(resourceName)\n } else if (!DSUtils._o(attrs) && !DSUtils._a(attrs)) {\n throw new DSErrors.IA(`${resourceName}.inject: \"attrs\" must be an object or an array!`)\n }\n\n options = DSUtils._(definition, options)\n options.logFn('inject', attrs, options)\n\n // lifecycle\n options.beforeInject(options, attrs)\n if (options.notify) {\n definition.emit('DS.beforeInject', definition, attrs)\n }\n\n // start the recursive injection of data\n injected = _inject.call(_this, definition, resource, attrs, options)\n\n // collection was modified\n definition.handleChange(injected)\n\n // lifecycle\n options.afterInject(options, injected)\n if (options.notify) {\n definition.emit('DS.afterInject', definition, injected)\n }\n\n return injected\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/datastore/sync_methods/inject.js\n **/","export default {\n create: require('./create'),\n destroy: require('./destroy'),\n destroyAll: require('./destroyAll'),\n find: require('./find'),\n findAll: require('./findAll'),\n loadRelations: require('./loadRelations'),\n reap: require('./reap'),\n refresh (resourceName, id, options) {\n let _this = this\n let DSUtils = _this.utils\n\n return new DSUtils.Promise(function (resolve, reject) {\n let definition = _this.definitions[resourceName]\n id = DSUtils.resolveId(_this.definitions[resourceName], id)\n if (!definition) {\n reject(new _this.errors.NER(resourceName))\n } else if (!DSUtils._sn(id)) {\n reject(DSUtils._snErr('id'))\n } else {\n options = DSUtils._(definition, options)\n options.bypassCache = true\n options.logFn('refresh', id, options)\n resolve(_this.get(resourceName, id))\n }\n }).then(function (item) { return item ? _this.find(resourceName, id, options) : item })\n .catch(_this.errorFn('refresh', resourceName, id, options))\n },\n refreshAll (resourceName, params, options) {\n let _this = this\n let DSUtils = _this.utils\n let definition = _this.definitions[resourceName]\n params = params || {}\n\n return new DSUtils.Promise(function (resolve, reject) {\n if (!definition) {\n reject(new _this.errors.NER(resourceName))\n } else if (!DSUtils._o(params)) {\n reject(DSUtils._oErr('params'))\n } else {\n options = DSUtils._(definition, options)\n options.bypassCache = true\n options.logFn('refreshAll', params, options)\n resolve(_this.filter(resourceName, params, options))\n }\n }).then(function (existing) {\n options.bypassCache = true\n return _this.findAll(resourceName, params, options).then(function (found) {\n DSUtils.forEach(existing, function (item) {\n if (found.indexOf(item) === -1) {\n definition.eject(item)\n }\n })\n return found\n })\n }).catch(_this.errorFn('refreshAll', resourceName, params, options))\n },\n save: require('./save'),\n update: require('./update'),\n updateAll: require('./updateAll')\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/datastore/async_methods/index.js\n **/","/**\n * Using an adapter, create a new item.\n *\n * Generally a primary key will NOT be provided in the properties hash,\n * because the adapter's persistence layer should be generating one.\n *\n * @param resourceName The name of the type of resource of the new item.\n * @param attrs Hash of properties with which to create the new item.\n * @param options Optional configuration.\n * @param options.cacheResponse Whether the newly created item as returned by the adapter should be injected into the data store.\n * @param options.upsert If the properties hash contains a primary key, attempt to call DS#update instead.\n * @param options.notify Whether to emit the \"DS.beforeCreate\" and \"DS.afterCreate\" events.\n * @param options.beforeValidate Lifecycle hook.\n * @param options.validate Lifecycle hook.\n * @param options.afterValidate Lifecycle hook.\n * @param options.beforeCreate Lifecycle hook.\n * @param options.afterCreate Lifecycle hook.\n */\nmodule.exports = function create (resourceName, attrs, options) {\n let _this = this\n let DSUtils = _this.utils\n let definition = _this.definitions[resourceName]\n let resource = _this.store[resourceName]\n let adapter\n\n options = options || {}\n attrs = attrs || {}\n\n let rejectionError\n if (!definition) {\n rejectionError = new _this.errors.NER(resourceName)\n } else if (!DSUtils._o(attrs)) {\n rejectionError = DSUtils._oErr('attrs')\n } else {\n options = DSUtils._(definition, options)\n if (options.upsert && DSUtils._sn(attrs[definition.idAttribute]) && !resource.temporaryItems[attrs[definition.idAttribute]]) {\n return _this.update(resourceName, attrs[definition.idAttribute], attrs, options)\n }\n options.logFn('create', attrs, options)\n }\n\n return new DSUtils.Promise(function (resolve, reject) {\n if (rejectionError) {\n reject(rejectionError)\n } else {\n resolve(attrs)\n }\n })\n // start lifecycle\n .then(function (attrs) { return options.beforeValidate.call(attrs, options, attrs) })\n .then(function (attrs) { return options.validate.call(attrs, options, attrs) })\n .then(function (attrs) { return options.afterValidate.call(attrs, options, attrs) })\n .then(function (attrs) { return options.beforeCreate.call(attrs, options, attrs) })\n .then(function (attrs) {\n if (options.notify) {\n definition.emit('DS.beforeCreate', definition, attrs)\n }\n adapter = _this.getAdapterName(options)\n return _this.adapters[adapter].create(definition, DSUtils.omit(attrs, options.omit), options)\n })\n .then(function (attrs) { return options.afterCreate.call(attrs, options, attrs) })\n .then(function (attrs) {\n if (options.notify) {\n definition.emit('DS.afterCreate', definition, attrs)\n }\n if (options.cacheResponse) {\n // injected created intem into the store\n let created = _this.inject(definition.name, attrs, options.orig())\n let id = created[definition.idAttribute]\n // mark item's `find` query as completed, so a subsequent `find` call for this item will resolve immediately\n let resource = _this.store[resourceName]\n resource.completedQueries[id] = new Date().getTime()\n resource.saved[id] = DSUtils.updateTimestamp(resource.saved[id])\n return created\n } else {\n // just return an un-injected instance\n return _this.createInstance(resourceName, attrs, options)\n }\n })\n .then(function (item) {\n return DSUtils.respond(item, {adapter}, options)\n })['catch'](_this.errorFn('create', resourceName, attrs, options))\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/datastore/async_methods/create.js\n **/","/**\n * Using an adapter, destroy an item.\n *\n * @param resourceName The name of the type of resource of the item to destroy.\n * @param id The primary key of the item to destroy.\n * @param options Optional configuration.\n * @param options.eagerEject Whether to eject the item from the store before the adapter operation completes, re-injecting if the adapter operation fails.\n * @param options.notify Whether to emit the \"DS.beforeDestroy\" and \"DS.afterDestroy\" events.\n * @param options.beforeDestroy Lifecycle hook.\n * @param options.afterDestroy Lifecycle hook.\n * @returns The primary key of the destroyed item.\n */\nmodule.exports = function destroy (resourceName, id, options) {\n let _this = this\n let DSUtils = _this.utils\n let definition = _this.definitions[resourceName]\n let item, adapter\n\n return new DSUtils.Promise(function (resolve, reject) {\n id = DSUtils.resolveId(definition, id)\n if (!definition) {\n reject(new _this.errors.NER(resourceName))\n } else if (!DSUtils._sn(id)) {\n reject(DSUtils._snErr('id'))\n } else {\n // check if the item is in the store\n item = definition.get(id) || { id: id }\n options = DSUtils._(definition, options)\n options.logFn('destroy', id, options)\n resolve(item)\n }\n })\n // start lifecycle\n .then(function (attrs) { return options.beforeDestroy.call(attrs, options, attrs) })\n .then(function (attrs) {\n if (options.notify) {\n definition.emit('DS.beforeDestroy', definition, attrs)\n }\n // don't wait for the adapter, remove the item from the store\n if (options.eagerEject) {\n definition.eject(id)\n }\n adapter = definition.getAdapter(options)\n return adapter.destroy(definition, id, options)\n })\n .then(function () { return options.afterDestroy.call(item, options, item) })\n .then(function (item) {\n if (options.notify) {\n definition.emit('DS.afterDestroy', definition, item)\n }\n // make sure the item is removed from the store\n definition.eject(id)\n return DSUtils.respond(id, {adapter}, options)\n })['catch'](function (err) {\n // rollback by re-injecting the item into the store\n if (options && options.eagerEject && item) {\n definition.inject(item, { notify: false })\n }\n return _this.errorFn('destroy', resourceName, id, options)(err)\n })\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/datastore/async_methods/destroy.js\n **/","/**\n * Using an adapter, destroy an item.\n *\n * @param resourceName The name of the type of resource of the item to destroy.\n * @param params The criteria by which to filter items to destroy. See http://www.js-data.io/docs/query-syntax\n * @param options Optional configuration.\n * @param options.eagerEject Whether to eject the items from the store before the adapter operation completes, re-injecting if the adapter operation fails.\n * @param options.notify Whether to emit the \"DS.beforeDestroy\" and \"DS.afterDestroy\" events.\n * @param options.beforeDestroy Lifecycle hook.\n * @param options.afterDestroy Lifecycle hook.\n * @returns The ejected items, if any.\n */\nmodule.exports = function destroyAll (resourceName, params, options) {\n let _this = this\n let DSUtils = _this.utils\n let definition = _this.definitions[resourceName]\n let ejected, toEject, adapter\n\n params = params || {}\n\n return new DSUtils.Promise(function (resolve, reject) {\n if (!definition) {\n reject(new _this.errors.NER(resourceName))\n } else if (!DSUtils._o(params)) {\n reject(DSUtils._oErr('attrs'))\n } else {\n options = DSUtils._(definition, options)\n options.logFn('destroyAll', params, options)\n DSUtils.applyScope(definition, params, options)\n resolve()\n }\n }).then(function () {\n // find items that are to be ejected from the store\n toEject = definition.defaultFilter.call(_this, resourceName, params)\n return options.beforeDestroy(options, toEject)\n }).then(function () {\n if (options.notify) {\n definition.emit('DS.beforeDestroy', definition, toEject)\n }\n // don't wait for the adapter, remove the items from the store\n if (options.eagerEject) {\n ejected = definition.ejectAll(params)\n }\n adapter = definition.getAdapterName(options)\n return _this.adapters[adapter].destroyAll(definition, params, options)\n }).then(function () {\n return options.afterDestroy(options, toEject)\n }).then(function () {\n if (options.notify) {\n definition.emit('DS.afterDestroy', definition, toEject)\n }\n // make sure items are removed from the store\n return ejected || definition.ejectAll(params)\n }).then(function (items) {\n return DSUtils.respond(items, {adapter}, options)\n })['catch'](function (err) {\n // rollback by re-injecting the items into the store\n if (options && options.eagerEject && ejected) {\n definition.inject(ejected, {notify: false})\n }\n return _this.errorFn('destroyAll', resourceName, params, options)(err)\n })\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/datastore/async_methods/destroyAll.js\n **/","/* jshint -W082 */\n\n/**\n * Using an adapter, retrieve a single item.\n *\n * @param resourceName The of the type of resource of the item to retrieve.\n * @param id The primary key of the item to retrieve.\n * @param options Optional configuration.\n * @param options.bypassCache Whether to ignore any cached item and force the retrieval through the adapter.\n * @param options.cacheResponse Whether to inject the found item into the data store.\n * @param options.strictCache Whether to only consider items to be \"cached\" if they were injected into the store as the result of `find` or `findAll`.\n * @param options.strategy The retrieval strategy to use.\n * @param options.findStrategy The retrieval strategy to use. Overrides \"strategy\".\n * @param options.fallbackAdapters Array of names of adapters to use if using \"fallback\" strategy.\n * @param options.findFallbackAdapters Array of names of adapters to use if using \"fallback\" strategy. Overrides \"fallbackAdapters\".\n * @returns The item.\n */\nmodule.exports = function find (resourceName, id, options) {\n let _this = this\n let DSUtils = _this.utils\n let definition = _this.definitions[resourceName]\n let resource = _this.store[resourceName]\n let adapter\n\n return new DSUtils.Promise(function (resolve, reject) {\n if (!definition) {\n reject(new _this.errors.NER(resourceName))\n } else if (!DSUtils._sn(id)) {\n reject(DSUtils._snErr('id'))\n } else {\n options = DSUtils._(definition, options)\n options.logFn('find', id, options)\n\n if (options.params) {\n options.params = DSUtils.copy(options.params)\n }\n\n if (options.bypassCache || !options.cacheResponse) {\n delete resource.completedQueries[id]\n }\n\n let expired = options.maxAge && id in resource.completedQueries &&\n resource.completedQueries[id] + options.maxAge < new Date().getTime()\n\n if ((!options.findStrictCache || id in resource.completedQueries) && definition.get(id) &&\n !options.bypassCache && !expired) {\n // resolve immediately with the cached item\n resolve(definition.get(id))\n } else {\n // we're going to delegate to the adapter next\n delete resource.completedQueries[id]\n resolve()\n }\n }\n }).then(function (item) {\n if (!item) {\n if (!(id in resource.pendingQueries)) {\n let promise\n let strategy = options.findStrategy || options.strategy\n\n // try subsequent adapters if the preceeding one fails\n if (strategy === 'fallback') {\n var makeFallbackCall = function (index) {\n adapter = definition.getAdapterName((options.findFallbackAdapters || options.fallbackAdapters)[index])\n return _this.adapters[adapter].find(definition, id, options)['catch'](err => {\n index++\n if (index < options.fallbackAdapters.length) {\n return makeFallbackCall(index)\n } else {\n return DSUtils.Promise.reject(err)\n }\n })\n }\n\n promise = makeFallbackCall(0)\n } else {\n adapter = definition.getAdapterName(options)\n // just make a single attempt\n promise = _this.adapters[adapter].find(definition, id, options)\n }\n\n resource.pendingQueries[id] = promise\n .then(function (data) { return options.afterFind.call(data, options, data) })\n .then(function (data) {\n // Query is no longer pending\n delete resource.pendingQueries[id]\n if (options.cacheResponse) {\n // inject the item into the data store\n let injected = definition.inject(data, options.orig())\n // mark the item as \"cached\"\n resource.completedQueries[id] = new Date().getTime()\n resource.saved[id] = DSUtils.updateTimestamp(resource.saved[id])\n return injected\n } else {\n // just return an un-injected instance\n return definition.createInstance(data, options.orig())\n }\n })\n }\n return resource.pendingQueries[id]\n } else {\n // resolve immediately with the item\n return item\n }\n }).then(function (item) {\n return DSUtils.respond(item, {adapter}, options)\n })['catch'](function (err) {\n if (resource) {\n delete resource.pendingQueries[id]\n }\n return _this.errorFn('find', resourceName, id, options)(err)\n })\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/datastore/async_methods/find.js\n **/","/* jshint -W082 */\nfunction processResults (data, resourceName, queryHash, options) {\n let _this = this\n let DSUtils = _this.utils\n let definition = _this.definitions[resourceName]\n let resource = _this.store[resourceName]\n let idAttribute = definition.idAttribute\n let date = new Date().getTime()\n\n data = data || []\n\n // Query is no longer pending\n delete resource.pendingQueries[queryHash]\n resource.completedQueries[queryHash] = date\n\n // Merge the new values into the cache\n let injected = definition.inject(data, options.orig())\n\n // Make sure each object is added to completedQueries\n if (DSUtils._a(injected)) {\n DSUtils.forEach(injected, function (item) {\n if (item) {\n let id = item[idAttribute]\n if (id) {\n resource.completedQueries[id] = date\n resource.saved[id] = DSUtils.updateTimestamp(resource.saved[id])\n }\n }\n })\n } else {\n options.errorFn('response is expected to be an array!')\n resource.completedQueries[injected[idAttribute]] = date\n }\n\n return injected\n}\n\n/**\n * Using an adapter, retrieve a collection of items.\n *\n * @param resourceName The name of the type of resource of the items to retrieve.\n * @param params The criteria by which to filter items to retrieve. See http://www.js-data.io/docs/query-syntax\n * @param options Optional configuration.\n * @param options.bypassCache Whether to ignore any cached query for these items and force the retrieval through the adapter.\n * @param options.cacheResponse Whether to inject the found items into the data store.\n * @returns The items.\n */\nmodule.exports = function findAll (resourceName, params, options) {\n let _this = this\n let DSUtils = _this.utils\n let definition = _this.definitions[resourceName]\n let resource = _this.store[resourceName]\n let queryHash, adapter\n\n return new DSUtils.Promise(function (resolve, reject) {\n params = params || {}\n\n if (!_this.definitions[resourceName]) {\n reject(new _this.errors.NER(resourceName))\n } else if (!DSUtils._o(params)) {\n reject(DSUtils._oErr('params'))\n } else {\n options = DSUtils._(definition, options)\n queryHash = DSUtils.toJson(params)\n options.logFn('findAll', params, options)\n\n if (options.params) {\n options.params = DSUtils.copy(options.params)\n }\n\n DSUtils.applyScope(definition, params, options)\n\n // force a new request\n if (options.bypassCache || !options.cacheResponse) {\n delete resource.completedQueries[queryHash]\n delete resource.queryData[queryHash]\n }\n\n let expired = options.maxAge && queryHash in resource.completedQueries &&\n resource.completedQueries[queryHash] + options.maxAge < new Date().getTime()\n\n if (queryHash in resource.completedQueries && !expired) {\n if (options.useFilter) {\n if (options.localKeys) {\n resolve(definition.getAll(options.localKeys, options.orig()))\n } else {\n // resolve immediately by filtering data from the data store\n resolve(definition.filter(params, options.orig()))\n }\n } else {\n // resolve immediately by returning the cached array from the previously made query\n resolve(resource.queryData[queryHash])\n }\n } else {\n resolve()\n }\n }\n }).then(function (items) {\n if (!items) {\n if (!(queryHash in resource.pendingQueries)) {\n let promise\n let strategy = options.findAllStrategy || options.strategy\n\n // try subsequent adapters if the preceeding one fails\n if (strategy === 'fallback') {\n var makeFallbackCall = function (index) {\n adapter = definition.getAdapterName((options.findAllFallbackAdapters || options.fallbackAdapters)[index])\n return _this.adapters[adapter].findAll(definition, params, options)['catch'](function (err) {\n index++\n if (index < options.fallbackAdapters.length) {\n return makeFallbackCall(index)\n } else {\n return DSUtils.Promise.reject(err)\n }\n })\n }\n\n promise = makeFallbackCall(0)\n } else {\n adapter = definition.getAdapterName(options)\n // just make a single attempt\n promise = _this.adapters[adapter].findAll(definition, params, options)\n }\n\n resource.pendingQueries[queryHash] = promise\n .then(function (data) { return options.afterFindAll.call(data, options, data) })\n .then(function (data) {\n // Query is no longer pending\n delete resource.pendingQueries[queryHash]\n if (options.cacheResponse) {\n // inject the items into the data store\n resource.queryData[queryHash] = processResults.call(_this, data, resourceName, queryHash, options)\n resource.queryData[queryHash].$$injected = true\n return resource.queryData[queryHash]\n } else {\n DSUtils.forEach(data, function (item, i) {\n data[i] = definition.createInstance(item, options.orig())\n })\n return data\n }\n })\n }\n\n return resource.pendingQueries[queryHash]\n } else {\n // resolve immediately with the items\n return items\n }\n }).then(function (items) {\n return DSUtils.respond(items, {adapter}, options)\n })['catch'](function (err) {\n if (resource) {\n delete resource.pendingQueries[queryHash]\n }\n return _this.errorFn('findAll', resourceName, params, options)(err)\n })\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/datastore/async_methods/findAll.js\n **/","/**\n * Load the specified relations for the given instance.\n *\n * @param resourceName The name of the type of resource of the instance for which to load relations.\n * @param instance The instance or the primary key of the instance.\n * @param relations An array of the relations to load.\n * @param options Optional configuration.\n * @returns The instance, now with its relations loaded.\n */\nmodule.exports = function loadRelations (resourceName, instance, relations, options) {\n let _this = this\n let {utils: DSUtils, errors: DSErrors} = _this\n let definition = _this.definitions[resourceName]\n let _options\n\n return new DSUtils.Promise(function (resolve, reject) {\n if (DSUtils._sn(instance)) {\n instance = definition.get(instance)\n }\n\n if (DSUtils._s(relations)) {\n relations = [relations]\n }\n\n relations = relations || []\n\n if (!definition) {\n reject(new DSErrors.NER(resourceName))\n } else if (!DSUtils._o(instance)) {\n reject(new DSErrors.IA('\"instance(id)\" must be a string, number or object!'))\n } else if (!DSUtils._a(relations)) {\n reject(new DSErrors.IA('\"relations\" must be a string or an array!'))\n } else {\n _options = DSUtils._(definition, options)\n _options.logFn('loadRelations', instance, relations, _options)\n\n let tasks = []\n\n DSUtils.forEach(definition.relationList, function (def) {\n let relationName = def.relation\n let relationDef = definition.getResource(relationName)\n let __options = DSUtils._(relationDef, options)\n\n // relations can be loaded based on resource name or field name\n if (!relations.length || DSUtils.contains(relations, relationName) || DSUtils.contains(relations, def.localField)) {\n let task\n let params = {}\n if (__options.allowSimpleWhere) {\n params[def.foreignKey] = instance[definition.idAttribute]\n } else {\n params.where = {}\n params.where[def.foreignKey] = {\n '==': instance[definition.idAttribute]\n }\n }\n\n let orig = __options.orig()\n let defKey = def.localKey ? DSUtils.get(instance, def.localKey) : null\n let hasDefKey = !!(defKey || defKey === 0)\n\n if (typeof def.load === 'function') {\n task = def.load(definition, def, instance, orig)\n } else {\n if (def.type === 'hasMany') {\n if (def.localKeys) {\n delete params[def.foreignKey]\n let keys = DSUtils.get(instance, def.localKeys) || []\n keys = DSUtils._a(keys) ? keys : DSUtils.keys(keys)\n params.where = {\n [relationDef.idAttribute]: {\n 'in': keys\n }\n }\n orig.localKeys = keys\n } else if (def.foreignKeys) {\n delete params[def.foreignKey]\n params.where = {\n [def.foreignKeys]: {\n contains: instance[definition.idAttribute]\n }\n }\n }\n task = relationDef.findAll(params, orig)\n } else if (def.type === 'hasOne') {\n if (def.localKey && hasDefKey) {\n task = relationDef.find(defKey, orig)\n } else if (def.foreignKey) {\n task = relationDef.findAll(params, orig).then(function (hasOnes) { return hasOnes.length ? hasOnes[0] : null })\n }\n } else if (hasDefKey) {\n task = relationDef.find(defKey, orig)\n }\n }\n\n if (task) {\n if (!_options.linkRelations) {\n task = task.then(function (data) {\n instance[def.localField] = data\n })\n }\n tasks.push(task)\n }\n }\n })\n\n resolve(tasks)\n }\n }).then(function (tasks) { return DSUtils.Promise.all(tasks) })\n .then(function () { return _options.afterLoadRelations.call(instance, _options, instance) })\n .catch(_this.errorFn('loadRelations', resourceName, instance, relations, options))\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/datastore/async_methods/loadRelations.js\n **/","/**\n * Find expired items of the specified resource type and perform the configured action.\n *\n * @param resourceName The name of the type of resource of the items to reap.\n * @param options Optional configuration.\n * @returns The reaped items.\n */\nmodule.exports = function reap (resourceName, options) {\n let _this = this\n var DSUtils = _this.utils\n let definition = _this.definitions[resourceName]\n let resource = _this.store[resourceName]\n\n return new DSUtils.Promise(function (resolve, reject) {\n if (!definition) {\n reject(new _this.errors.NER(resourceName))\n } else {\n options = DSUtils._(definition, options)\n if (!options.hasOwnProperty('notify')) {\n options.notify = false\n }\n options.logFn('reap', options)\n let items = []\n let now = new Date().getTime()\n let expiredItem\n\n // find the expired items\n while ((expiredItem = resource.expiresHeap.peek()) && expiredItem.expires < now) {\n items.push(expiredItem.item)\n delete expiredItem.item\n resource.expiresHeap.pop()\n }\n resolve(items)\n }\n }).then(function (items) {\n // only hit lifecycle if there are items\n if (items.length) {\n definition.beforeReap(options, items)\n if (options.notify) {\n definition.emit('DS.beforeReap', definition, items)\n }\n }\n\n if (options.reapAction === 'inject') {\n let timestamp = new Date().getTime()\n DSUtils.forEach(items, function (item) {\n resource.expiresHeap.push({\n item: item,\n timestamp: timestamp,\n expires: definition.maxAge ? timestamp + definition.maxAge : Number.MAX_VALUE\n })\n })\n } else if (options.reapAction === 'eject') {\n DSUtils.forEach(items, function (item) {\n definition.eject(item[definition.idAttribute])\n })\n } else if (options.reapAction === 'refresh') {\n let tasks = []\n DSUtils.forEach(items, function (item) {\n tasks.push(definition.refresh(item[definition.idAttribute]))\n })\n return DSUtils.Promise.all(tasks)\n }\n return items\n }).then(function (items) {\n // only hit lifecycle if there are items\n if (items.length) {\n definition.afterReap(options, items)\n if (options.notify) {\n definition.emit('DS.afterReap', definition, items)\n }\n }\n return items\n }).catch(_this.errorFn('reap', resourceName, options))\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/datastore/async_methods/reap.js\n **/","/**\n * Save a single item in its present state.\n *\n * @param resourceName The name of the type of resource of the item.\n * @param id The primary key of the item.\n * @param options Optional congifuration.\n * @returns The item, now saved.\n */\nmodule.exports = function save (resourceName, id, options) {\n let _this = this\n let {utils: DSUtils, errors: DSErrors} = _this\n let definition = _this.definitions[resourceName]\n let resource = _this.store[resourceName]\n let item, noChanges, adapter\n\n return new DSUtils.Promise(function (resolve, reject) {\n id = DSUtils.resolveId(definition, id)\n if (!definition) {\n reject(new DSErrors.NER(resourceName))\n } else if (!DSUtils._sn(id)) {\n reject(DSUtils._snErr('id'))\n } else if (!definition.get(id)) {\n reject(new DSErrors.R(`id \"${id}\" not found in cache!`))\n } else {\n item = definition.get(id)\n options = DSUtils._(definition, options)\n options.logFn('save', id, options)\n resolve(item)\n }\n })\n // start lifecycle\n .then(function (attrs) { return options.beforeValidate.call(attrs, options, attrs) })\n .then(function (attrs) { return options.validate.call(attrs, options, attrs) })\n .then(function (attrs) { return options.afterValidate.call(attrs, options, attrs) })\n .then(function (attrs) { return options.beforeUpdate.call(attrs, options, attrs) })\n .then(function (attrs) {\n if (options.notify) {\n definition.emit('DS.beforeUpdate', definition, attrs)\n }\n // only send changed properties to the adapter\n if (options.changesOnly) {\n if (resource.observers[id] && typeof resource.observers[id] === 'function') {\n resource.observers[id].deliver()\n }\n let toKeep = []\n let changes = definition.changes(id)\n\n for (var key in changes.added) {\n toKeep.push(key)\n }\n for (key in changes.changed) {\n toKeep.push(key)\n }\n DSUtils.forEach(options.always, property => {\n toKeep.push(property)\n })\n changes = DSUtils.pick(attrs, toKeep)\n // no changes? no save\n if (DSUtils.isEmpty(changes)) {\n // no changes, return\n options.logFn('save - no changes', id, options)\n noChanges = true\n return attrs\n } else {\n attrs = changes\n }\n }\n adapter = definition.getAdapterName(options)\n return _this.adapters[adapter].update(definition, id, DSUtils.omit(attrs, options.omit), options)\n })\n .then(function (data) { return options.afterUpdate.call(data, options, data) })\n .then(function (attrs) {\n if (options.notify) {\n definition.emit('DS.afterUpdate', definition, attrs)\n }\n if (noChanges) {\n // no changes, just return\n return attrs\n } else if (options.cacheResponse) {\n // inject the reponse into the store, updating the item\n let injected = definition.inject(attrs, options.orig())\n // mark the item as \"saved\"\n resource.saved[id] = DSUtils.updateTimestamp(resource.saved[id])\n if (!definition.resetHistoryOnInject) {\n resource.previousAttributes[id] = DSUtils.copy(injected, null, null, null, definition.relationFields)\n }\n return injected\n } else {\n // just return an instance\n return definition.createInstance(attrs, options.orig())\n }\n })\n .then(function (item) {\n return DSUtils.respond(item, {adapter}, options)\n })\n .catch(_this.errorFn('save', resourceName, id, options))\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/datastore/async_methods/save.js\n **/","/**\n * Update a single item using the supplied properties hash.\n *\n * @param resourceName The name of the type of resource of the item to update.\n * @param id The primary key of the item to update.\n * @param attrs The attributes with which to update the item.\n * @param options Optional configuration.\n * @returns The item, now updated.\n */\nmodule.exports = function update (resourceName, id, attrs, options) {\n let _this = this\n let {utils: DSUtils, errors: DSErrors} = _this\n let definition = _this.definitions[resourceName]\n let adapter\n\n return new DSUtils.Promise(function (resolve, reject) {\n id = DSUtils.resolveId(definition, id)\n if (!definition) {\n reject(new DSErrors.NER(resourceName))\n } else if (!DSUtils._sn(id)) {\n reject(DSUtils._snErr('id'))\n } else {\n options = DSUtils._(definition, options)\n options.logFn('update', id, attrs, options)\n resolve(attrs)\n }\n })\n // start lifecycle\n .then(function (attrs) { return options.beforeValidate.call(attrs, options, attrs) })\n .then(function (attrs) { return options.validate.call(attrs, options, attrs) })\n .then(function (attrs) { return options.afterValidate.call(attrs, options, attrs) })\n .then(function (attrs) { return options.beforeUpdate.call(attrs, options, attrs) })\n .then(function (attrs) {\n if (options.notify) {\n definition.emit('DS.beforeUpdate', definition, attrs)\n }\n adapter = definition.getAdapterName(options)\n return _this.adapters[adapter].update(definition, id, DSUtils.omit(attrs, options.omit), options)\n })\n .then(function (data) { return options.afterUpdate.call(data, options, data) })\n .then(function (attrs) {\n if (options.notify) {\n definition.emit('DS.afterUpdate', definition, attrs)\n }\n if (options.cacheResponse) {\n // inject the updated item into the store\n let injected = definition.inject(attrs, options.orig())\n let resource = _this.store[resourceName]\n let id = injected[definition.idAttribute]\n // mark the item as \"saved\"\n resource.saved[id] = DSUtils.updateTimestamp(resource.saved[id])\n if (!definition.resetHistoryOnInject) {\n resource.previousAttributes[id] = DSUtils.copy(injected, null, null, null, definition.relationFields)\n }\n return injected\n } else {\n // just return an instance\n return definition.createInstance(attrs, options.orig())\n }\n })\n .then(function (item) {\n return DSUtils.respond(item, {adapter}, options)\n })\n .catch(_this.errorFn('update', resourceName, id, attrs, options))\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/datastore/async_methods/update.js\n **/","/**\n * Update a collection of items using the supplied properties hash.\n *\n * @param resourceName The name of the type of resource of the items to update.\n * @param attrs The attributes with which to update the item.\n * @param params The criteria by which to select items to update. See http://www.js-data.io/docs/query-syntax\n * @param options Optional configuration.\n * @returns The updated items.\n */\nmodule.exports = function updateAll (resourceName, attrs, params, options) {\n let _this = this\n let {utils: DSUtils, errors: DSErrors} = _this\n let definition = _this.definitions[resourceName]\n let adapter\n\n return new DSUtils.Promise(function (resolve, reject) {\n if (!definition) {\n reject(new DSErrors.NER(resourceName))\n } else {\n options = DSUtils._(definition, options)\n options.logFn('updateAll', attrs, params, options)\n DSUtils.applyScope(definition, params, options)\n resolve(attrs)\n }\n })\n // start lifecycle\n .then(function (attrs) { return options.beforeValidate.call(attrs, options, attrs) })\n .then(function (attrs) { return options.validate.call(attrs, options, attrs) })\n .then(function (attrs) { return options.afterValidate.call(attrs, options, attrs) })\n .then(function (attrs) { return options.beforeUpdate.call(attrs, options, attrs) })\n .then(function (attrs) {\n if (options.notify) {\n definition.emit('DS.beforeUpdate', definition, attrs)\n }\n adapter = definition.getAdapterName(options)\n return _this.adapters[adapter].updateAll(definition, DSUtils.omit(attrs, options.omit), params, options)\n })\n .then(function (data) { return options.afterUpdate.call(data, options, data) })\n .then(function (data) {\n if (options.notify) {\n definition.emit('DS.afterUpdate', definition, attrs)\n }\n let origOptions = options.orig()\n if (options.cacheResponse) {\n // inject the updated items into the store\n let injected = definition.inject(data, origOptions)\n let resource = _this.store[resourceName]\n // mark the items as \"saved\"\n DSUtils.forEach(injected, i => {\n let id = i[definition.idAttribute]\n resource.saved[id] = DSUtils.updateTimestamp(resource.saved[id])\n if (!definition.resetHistoryOnInject) {\n resource.previousAttributes[id] = DSUtils.copy(i, null, null, null, definition.relationFields)\n }\n })\n return injected\n } else {\n // just return instances\n let instances = []\n DSUtils.forEach(data, item => {\n instances.push(definition.createInstance(item, origOptions))\n })\n return instances\n }\n })\n .then(function (items) {\n return DSUtils.respond(items, {adapter}, options)\n })\n .catch(_this.errorFn('updateAll', resourceName, attrs, params, options))\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/datastore/async_methods/updateAll.js\n **/"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap fddaa3a55430ff39835f","webpack:///./src/index.js","webpack:///./src/datastore/index.js","webpack:///./src/utils.js","webpack:///./src/errors.js","webpack:///./~/yabh/dist/yabh.js","webpack:///./~/mout/array/forEach.js","webpack:///./~/mout/array/slice.js","webpack:///./~/mout/object/forOwn.js","webpack:///./~/mout/object/hasOwn.js","webpack:///./~/mout/object/forIn.js","webpack:///./~/mout/array/contains.js","webpack:///./~/mout/array/indexOf.js","webpack:///./~/mout/object/deepMixIn.js","webpack:///./~/mout/lang/isPlainObject.js","webpack:///./~/mout/string/pascalCase.js","webpack:///./~/mout/lang/toString.js","webpack:///./~/mout/string/camelCase.js","webpack:///./~/mout/string/replaceAccents.js","webpack:///./~/mout/string/removeNonWord.js","webpack:///./~/mout/string/upperCase.js","webpack:///./~/mout/string/lowerCase.js","webpack:///./~/mout/array/remove.js","webpack:///./~/mout/object/pick.js","webpack:///./~/mout/object/keys.js","webpack:///./~/mout/array/sort.js","webpack:///./~/mout/object/get.js","webpack:///./~/mout/lang/isPrimitive.js","webpack:///./~/mout/object/set.js","webpack:///./~/mout/object/namespace.js","webpack:///./lib/observe-js/observe.js","webpack:///./~/mout/random/guid.js","webpack:///./~/mout/random/randHex.js","webpack:///./~/mout/random/choice.js","webpack:///./~/mout/random/randInt.js","webpack:///./~/mout/number/MIN_INT.js","webpack:///./~/mout/number/MAX_INT.js","webpack:///./~/mout/random/rand.js","webpack:///./~/mout/random/random.js","webpack:///./~/mout/lang/isArray.js","webpack:///./~/mout/lang/isKind.js","webpack:///./~/mout/lang/kindOf.js","webpack:///./src/datastore/sync_methods/index.js","webpack:///./src/datastore/sync_methods/defineResource.js","webpack:///./src/datastore/sync_methods/eject.js","webpack:///./src/datastore/sync_methods/ejectAll.js","webpack:///./src/datastore/sync_methods/filter.js","webpack:///./src/datastore/sync_methods/inject.js","webpack:///./src/datastore/async_methods/index.js","webpack:///./src/datastore/async_methods/create.js","webpack:///./src/datastore/async_methods/destroy.js","webpack:///./src/datastore/async_methods/destroyAll.js","webpack:///./src/datastore/async_methods/find.js","webpack:///./src/datastore/async_methods/findAll.js","webpack:///./src/datastore/async_methods/loadRelations.js","webpack:///./src/datastore/async_methods/reap.js","webpack:///./src/datastore/async_methods/save.js","webpack:///./src/datastore/async_methods/update.js","webpack:///./src/datastore/async_methods/updateAll.js"],"names":["module","exports","DS","DSUtils","DSErrors","createStore","options","version","full","major","parseInt","minor","patch","alpha","beta","lifecycleNoopCb","resource","attrs","cb","lifecycleNoop","compare","orderBy","index","a","b","def","cA","get","cB","_s","upperCase","length","Defaults","error","Error","err","name","defaultsPrototype","prototype","actions","afterCreate","afterCreateCollection","afterCreateInstance","afterDestroy","afterEject","afterFind","afterFindAll","afterInject","afterLoadRelations","afterReap","afterUpdate","afterValidate","allowSimpleWhere","applyDefaultsOnInject","basePath","beforeCreate","beforeCreateCollection","beforeCreateInstance","beforeDestroy","beforeEject","beforeInject","beforeReap","beforeUpdate","beforeValidate","bypassCache","cacheResponse","w","csp","clearEmptyQueries","computed","defaultAdapter","debug","defaultValues","eagerEject","eagerInject","endpoint","console","c","errorHandler","Promise","reject","fallbackAdapters","findStrictCache","idAttribute","ignoredChanges","instanceEvents","keepChangeHistory","linkRelations","log","d","e","info","logFn","_this","maxAge","methods","notify","omit","onConflict","reapAction","reapInterval","relationsEnumerable","resetHistoryOnInject","returnMeta","scopes","strategy","upsert","useClass","useFilter","usePendingFind","usePendingFindAll","validate","watchChanges","escapeRegExp","percentRegExp","underscoreRegExp","escape","pattern","replace","like","flags","RegExp","defaultFilter","collection","resourceName","params","definition","definitions","idA","store","filtered","where","reserved","skip","offset","limit","sort","_o","forOwn","value","key","isEmpty","filter","first","keep","excludeTemporary","temporaryItems","clause","field","term","op","expr","isOr","val","substr","intersection","indexOf","contains","exec","undefined","_a","forEach","i","IA","toJson","actual","expected","_n","slice","Math","min","adapters","defaults","observe","v","k","concat","P","spread","then","arr","apply","Events","errorIfNotExist","adapter","getAdapterName","Adapter","isFunction","default","instance","NER","class","ejected","ejectAll","completedQueries","queryData","args","defaultHandler","dsPrototype","shorthand","getAdapter","registerAdapter","errors","utils","addMethods","target","obj","before","fn","orig","BinaryHeap","require","deepMixIn","pascalCase","remove","pick","_keys","set","guid","File","objectProto","Object","toString","window","_isArray","call","isArray","Array","isRegExp","isString","isObject","isDate","isNumber","type","isStringOrNumber","isStringOrNumberErr","isObjectErr","isArrayErr","result","array1","array2","item","push","array","thisObj","results","events","defineProperties","on","func","ctx","f","off","listeners","splice","emit","shift","toPromisify","isBlacklisted","copy","source","destination","stackSource","stackDest","blacklist","Date","getTime","match","lastIndex","create","getPrototypeOf","hasOwnProperty","equals","o1","o2","t1","t2","keySet","charAt","resolveId","idOrInstance","resolveItem","isValidString","join","items","separator","makePath","_","parent","constructor","promisify","O","Options","self","_sn","_snErr","_oErr","_aErr","applyScope","scope","_params","unshift","_scope","scopeDef","compute","deps","dep","diffObjectFromOldObject","fillIn","fromJson","json","JSON","parse","keys","bl","toRemove","resolve","promise","stringify","updateTimestamp","timestamp","newTimestamp","now","removeCircular","object","rmCirc","nu","Boolean","Number","String","cur","respond","response","meta","applyRelationGettersToTarget","relationList","relationName","relation","localField","localKey","foreignKey","localKeys","foreignKeys","enumerable","link","prop","hasKey","getResource","getAll","children","id","child","sibling","defineProperty","IllegalArgumentError","message","captureStackTrace","RuntimeError","NonexistentResourceError","R","fakeId","diffIsEmpty","diff","added","removed","changed","check","fnName","_resourceName","_id","_options","changes","observer","observers","deliver","relationFields","previousAttributes","changeset","toKeep","changeHistory","errorFn","changeHistories","commit","changeRecord","createInstance","relationData","Resource","relationDataItem","Constructor","createCollection","fetch","__this","findAll","data","$$injected","writable","defineResource","digest","Platform","performMicrotaskCheckpoint","eject","ids","hasChanges","inject","isNew","lastModified","modified","collectionModified","lastSaved","saved","previous","revert","preserve","injectObj","previousInstance","instanceMethods","extends","_class","relations","relatedModels","defs","belongsTo","parents","relatedModel","modelName","parentKey","parentField","freeze","Function","proto","Ctor","m","setTimeout","handleChange","parentOmit","split","x","trim","DSCreate","expiresHeap","expires","y","pendingQueries","setInterval","reap","fns","action","request","config","responseError","getEndpoint","url","pathname","method","HTTP","found","queryHash","close","makeObserverHandler","_react","oldValueFn","firstTime","innerId","_inject","injected","temporary","relationDef","toInject","toInjectItem","injectedItem","initialLastModified","ObjectObserver","open","MAX_VALUE","destroy","destroyAll","find","loadRelations","refresh","catch","refreshAll","existing","save","update","updateAll","rejectionError","created","toEject","expired","findStrategy","makeFallbackCall","findFallbackAdapters","processResults","date","findAllStrategy","findAllFallbackAdapters","tasks","__options","task","defKey","hasDefKey","load","hasOnes","all","expiredItem","peek","pop","noChanges","changesOnly","always","property","origOptions","instances"],"mappings":"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La;AAMbxK,QAAKwK;AANQ,E;;;;;;AC1Cf;AACA;AACA;AACA;AACA,EAAC,oBAAoB;;AAErB;AACA;AACA,cAAa,MAAM;AACnB,cAAa,SAAS;AACtB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAa,MAAM;AACnB,cAAa,SAAS;AACtB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,oBAAmB,YAAY;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,EAAC;AACD,iC;;;;;;;;AC/IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClBA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;AChCA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;;;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;ACTA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,0BAAyB,iBAAiB;AAC1C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;;ACzEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;;;;;;;AC1BA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;;;;;;;;;;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA2C;AAC3C;AACA;AACA;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClCA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;ACTA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;ACXA;;AAEA;AACA;AACA;AACA;AACA;AACA,qBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;ACfA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;;AAEA;;;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;ACpDA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;AClBA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;;;;;;;;;ACdA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;;;;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA,wCAAuC;AACvC,oBAAmB,YAAY,EAAE;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oBAAmB,eAAe;AAClC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,oBAAmB,qBAAqB;AACxC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA,IAAG;;AAEH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,8BAA6B;AAC7B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA,MAAK;;AAEL;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,sBAAqB,oBAAoB;AACzC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,yBAAwB;AACxB,2BAA0B;AAC1B,2BAA0B;AAC1B;AACA;AACA;AACA;;AAEA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAG;;AAEH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,oBAAmB,0BAA0B;AAC7C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,wDAAuD;AACvD;AACA;AACA;;AAEA,EAAC;;;;;;;AC/hBD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtBA;;AAEA;;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","file":"./dist/js-data-debug.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[\"JSData\"] = factory();\n\telse\n\t\troot[\"JSData\"] = factory();\n})(this, function() {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/universalModuleDefinition\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\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\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.loaded = 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// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap fddaa3a55430ff39835f\n **/","import DS from './datastore/index'\nimport DSUtils from './utils'\nimport DSErrors from './errors'\n\n/**\n * The library export.\n * - window.JSData\n * - require('js-data')\n * - define(['js-data', function (JSData) { ... }]);\n * - import JSData from 'js-data'\n */\nmodule.exports = {\n DS,\n DSUtils,\n DSErrors,\n createStore (options) {\n return new DS(options)\n },\n version: {\n full: '<%= pkg.version %>',\n major: parseInt('<%= major %>', 10),\n minor: parseInt('<%= minor %>', 10),\n patch: parseInt('<%= patch %>', 10),\n alpha: '<%= alpha %>' !== 'false' ? '<%= alpha %>' : false,\n beta: '<%= beta %>' !== 'false' ? '<%= beta %>' : false\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/index.js\n **/","/* jshint eqeqeq:false */\nimport DSUtils from '../utils'\nimport DSErrors from '../errors'\nimport syncMethods from './sync_methods/index'\nimport asyncMethods from './async_methods/index'\n\nfunction lifecycleNoopCb (resource, attrs, cb) {\n cb(null, attrs)\n}\n\nfunction lifecycleNoop (resource, attrs) {\n return attrs\n}\n\nfunction compare (orderBy, index, a, b) {\n let def = orderBy[index]\n let cA = DSUtils.get(a, def[0])\n let cB = DSUtils.get(b, def[0])\n if (DSUtils._s(cA)) {\n cA = DSUtils.upperCase(cA)\n }\n if (DSUtils._s(cB)) {\n cB = DSUtils.upperCase(cB)\n }\n if (def[1] === 'DESC') {\n if (cB < cA) {\n return -1\n } else if (cB > cA) {\n return 1\n } else {\n if (index < orderBy.length - 1) {\n return compare(orderBy, index + 1, a, b)\n } else {\n return 0\n }\n }\n } else {\n if (cA < cB) {\n return -1\n } else if (cA > cB) {\n return 1\n } else {\n if (index < orderBy.length - 1) {\n return compare(orderBy, index + 1, a, b)\n } else {\n return 0\n }\n }\n }\n}\n\nclass Defaults {\n errorFn (a, b) {\n if (this.error && typeof this.error === 'function') {\n try {\n if (typeof a === 'string') {\n throw new Error(a)\n } else {\n throw a\n }\n } catch (err) {\n a = err\n }\n this.error(this.name || null, a || null, b || null)\n }\n }\n}\n\nvar defaultsPrototype = Defaults.prototype\n\ndefaultsPrototype.actions = {}\ndefaultsPrototype.afterCreate = lifecycleNoopCb\ndefaultsPrototype.afterCreateCollection = lifecycleNoop\ndefaultsPrototype.afterCreateInstance = lifecycleNoop\ndefaultsPrototype.afterDestroy = lifecycleNoopCb\ndefaultsPrototype.afterEject = lifecycleNoop\ndefaultsPrototype.afterFind = lifecycleNoopCb\ndefaultsPrototype.afterFindAll = lifecycleNoopCb\ndefaultsPrototype.afterInject = lifecycleNoop\ndefaultsPrototype.afterLoadRelations = lifecycleNoopCb\ndefaultsPrototype.afterReap = lifecycleNoop\ndefaultsPrototype.afterUpdate = lifecycleNoopCb\ndefaultsPrototype.afterValidate = lifecycleNoopCb\ndefaultsPrototype.allowSimpleWhere = true\ndefaultsPrototype.applyDefaultsOnInject = false\ndefaultsPrototype.basePath = ''\ndefaultsPrototype.beforeCreate = lifecycleNoopCb\ndefaultsPrototype.beforeCreateCollection = lifecycleNoop\ndefaultsPrototype.beforeCreateInstance = lifecycleNoop\ndefaultsPrototype.beforeDestroy = lifecycleNoopCb\ndefaultsPrototype.beforeEject = lifecycleNoop\ndefaultsPrototype.beforeInject = lifecycleNoop\ndefaultsPrototype.beforeReap = lifecycleNoop\ndefaultsPrototype.beforeUpdate = lifecycleNoopCb\ndefaultsPrototype.beforeValidate = lifecycleNoopCb\ndefaultsPrototype.bypassCache = false\ndefaultsPrototype.cacheResponse = !!DSUtils.w\ndefaultsPrototype.csp = false\ndefaultsPrototype.clearEmptyQueries = true\ndefaultsPrototype.computed = {}\ndefaultsPrototype.defaultAdapter = 'http'\ndefaultsPrototype.debug = false\ndefaultsPrototype.defaultValues = {}\ndefaultsPrototype.eagerEject = false\n// TODO: Implement eagerInject in DS#create\ndefaultsPrototype.eagerInject = false\ndefaultsPrototype.endpoint = ''\ndefaultsPrototype.error = console ? (a, b, c) => console[typeof console.error === 'function' ? 'error' : 'log'](a, b, c) : false\ndefaultsPrototype.errorHandler = function (...args) {\n return DSUtils.Promise.reject(args[0])\n}\ndefaultsPrototype.fallbackAdapters = ['http']\ndefaultsPrototype.findStrictCache = false\ndefaultsPrototype.idAttribute = 'id'\ndefaultsPrototype.ignoredChanges = [/\\$/]\ndefaultsPrototype.instanceEvents = !!DSUtils.w\ndefaultsPrototype.keepChangeHistory = false\ndefaultsPrototype.linkRelations = !!DSUtils.w\ndefaultsPrototype.log = console ? (a, b, c, d, e) => console[typeof console.info === 'function' ? 'info' : 'log'](a, b, c, d, e) : false\n\ndefaultsPrototype.logFn = function (a, b, c, d) {\n let _this = this\n if (_this.debug && _this.log && typeof _this.log === 'function') {\n _this.log(_this.name || null, a || null, b || null, c || null, d || null)\n }\n}\n\ndefaultsPrototype.maxAge = false\ndefaultsPrototype.methods = {}\ndefaultsPrototype.notify = !!DSUtils.w\ndefaultsPrototype.omit = []\ndefaultsPrototype.onConflict = 'merge'\ndefaultsPrototype.reapAction = DSUtils.w ? 'inject' : 'none'\ndefaultsPrototype.reapInterval = DSUtils.w ? 30000 : false\ndefaultsPrototype.relationsEnumerable = false\ndefaultsPrototype.resetHistoryOnInject = true\ndefaultsPrototype.returnMeta = false\ndefaultsPrototype.scopes = {}\ndefaultsPrototype.strategy = 'single'\ndefaultsPrototype.upsert = !!DSUtils.w\ndefaultsPrototype.useClass = true\ndefaultsPrototype.useFilter = false\ndefaultsPrototype.usePendingFind = true\ndefaultsPrototype.usePendingFindAll = true\ndefaultsPrototype.validate = lifecycleNoopCb\ndefaultsPrototype.watchChanges = !!DSUtils.w\n\nlet escapeRegExp = /([.*+?^=!:${}()|[\\]\\/\\\\])/g\nlet percentRegExp = /%/g\nlet underscoreRegExp = /_/g\n\nfunction escape (pattern) {\n return pattern.replace(escapeRegExp, '\\\\$1')\n}\n\nfunction like (pattern, flags) {\n return new RegExp(`^${(escape(pattern).replace(percentRegExp, '.*').replace(underscoreRegExp, '.'))}$`, flags)\n}\n\ndefaultsPrototype.defaultFilter = function (collection, resourceName, params, options) {\n let definition = this.definitions[resourceName]\n let idA = 'id'\n let resource\n if (definition) {\n idA = definition.idAttribute\n resource = this.store[resourceName]\n }\n let filtered = collection\n let where = null\n let reserved = {\n skip: '',\n offset: '',\n where: '',\n limit: '',\n orderBy: '',\n sort: ''\n }\n\n params = params || {}\n options = options || {}\n\n if (DSUtils._o(params.where)) {\n where = params.where\n } else {\n where = {}\n }\n\n if (options.allowSimpleWhere) {\n DSUtils.forOwn(params, function (value, key) {\n if (!(key in reserved) && !(key in where)) {\n where[key] = {\n '==': value\n }\n }\n })\n }\n\n if (DSUtils.isEmpty(where)) {\n where = null\n }\n\n if (where) {\n filtered = DSUtils.filter(filtered, function (attrs) {\n let first = true\n let keep = true\n\n if (options.excludeTemporary && resource && resource.temporaryItems[attrs[idA]]) {\n return false\n }\n\n DSUtils.forOwn(where, function (clause, field) {\n if (!DSUtils._o(clause)) {\n clause = {\n '==': clause\n }\n }\n DSUtils.forOwn(clause, function (term, op) {\n let expr\n let isOr = op[0] === '|'\n let val = DSUtils.get(attrs, field)\n op = isOr ? op.substr(1) : op\n if (op === '==') {\n expr = val == term // eslint-disable-line\n } else if (op === '===') {\n expr = val === term\n } else if (op === '!=') {\n expr = val != term // eslint-disable-line\n } else if (op === '!==') {\n expr = val !== term\n } else if (op === '>') {\n expr = val > term\n } else if (op === '>=') {\n expr = val >= term\n } else if (op === '<') {\n expr = val < term\n } else if (op === '<=') {\n expr = val <= term\n } else if (op === 'isectEmpty') {\n expr = !DSUtils.intersection((val || []), (term || [])).length\n } else if (op === 'isectNotEmpty') {\n expr = DSUtils.intersection((val || []), (term || [])).length\n } else if (op === 'in') {\n if (DSUtils._s(term)) {\n expr = term.indexOf(val) !== -1\n } else {\n expr = DSUtils.contains(term, val)\n }\n } else if (op === 'notIn') {\n if (DSUtils._s(term)) {\n expr = term.indexOf(val) === -1\n } else {\n expr = !DSUtils.contains(term, val)\n }\n } else if (op.indexOf('like') === 0) {\n expr = like(term, op.substr(4)).exec(val) !== null\n } else if (op.indexOf('notLike') === 0) {\n expr = like(term, op.substr(7)).exec(val) === null\n } else if (op === 'contains') {\n if (DSUtils._s(val)) {\n expr = val.indexOf(term) !== -1\n } else {\n expr = DSUtils.contains(val, term)\n }\n } else if (op === 'notContains') {\n if (DSUtils._s(val)) {\n expr = val.indexOf(term) === -1\n } else {\n expr = !DSUtils.contains(val, term)\n }\n }\n if (expr !== undefined) {\n keep = first ? expr : (isOr ? keep || expr : keep && expr)\n }\n first = false\n })\n })\n\n return keep\n })\n } else if (options.excludeTemporary && resource) {\n filtered = DSUtils.filter(filtered, function (attrs) {\n return resource.temporaryItems[attrs[idA]]\n })\n }\n\n let orderBy = null\n\n if (DSUtils._s(params.orderBy)) {\n orderBy = [\n [params.orderBy, 'ASC']\n ]\n } else if (DSUtils._a(params.orderBy)) {\n orderBy = params.orderBy\n }\n\n if (!orderBy && DSUtils._s(params.sort)) {\n orderBy = [\n [params.sort, 'ASC']\n ]\n } else if (!orderBy && DSUtils._a(params.sort)) {\n orderBy = params.sort\n }\n\n // Apply 'orderBy'\n if (orderBy) {\n let index = 0\n DSUtils.forEach(orderBy, function (def, i) {\n if (DSUtils._s(def)) {\n orderBy[i] = [def, 'ASC']\n } else if (!DSUtils._a(def)) {\n throw new DSErrors.IA(`DS.filter(\"${resourceName}\"[, params][, options]): ${DSUtils.toJson(def)}: Must be a string or an array!`, {\n params: {\n 'orderBy[i]': {\n actual: typeof def,\n expected: 'string|array'\n }\n }\n })\n }\n })\n filtered = DSUtils.sort(filtered, function (a, b) {\n return compare(orderBy, index, a, b)\n })\n }\n\n let limit = DSUtils._n(params.limit) ? params.limit : null\n let skip = null\n\n if (DSUtils._n(params.skip)) {\n skip = params.skip\n } else if (DSUtils._n(params.offset)) {\n skip = params.offset\n }\n\n // Apply 'limit' and 'skip'\n if (limit && skip) {\n filtered = DSUtils.slice(filtered, skip, Math.min(filtered.length, skip + limit))\n } else if (DSUtils._n(limit)) {\n filtered = DSUtils.slice(filtered, 0, Math.min(filtered.length, limit))\n } else if (DSUtils._n(skip)) {\n if (skip < filtered.length) {\n filtered = DSUtils.slice(filtered, skip)\n } else {\n filtered = []\n }\n }\n\n return filtered === collection ? filtered.slice() : filtered\n}\n\nclass DS {\n constructor (options) {\n let _this = this\n options = options || {}\n\n _this.store = {}\n _this.definitions = {}\n _this.adapters = {}\n _this.defaults = new Defaults()\n _this.observe = DSUtils.observe\n DSUtils.forOwn(options, function (v, k) {\n if (k === 'omit') {\n _this.defaults.omit = v.concat(Defaults.prototype.omit)\n } else {\n _this.defaults[k] = v\n }\n })\n _this.defaults.logFn('new data store created', _this.defaults)\n\n let P = DSUtils.Promise\n\n if (P && !P.prototype.spread) {\n P.prototype.spread = function (cb) {\n return this.then(function (arr) {\n return cb.apply(this, arr)\n })\n }\n }\n\n DSUtils.Events(_this)\n }\n\n getAdapterName (options) {\n let errorIfNotExist = false\n options = options || {}\n this.defaults.logFn('getAdapterName', options)\n if (DSUtils._s(options)) {\n errorIfNotExist = true\n options = {\n adapter: options\n }\n }\n if (this.adapters[options.adapter]) {\n return options.adapter\n } else if (errorIfNotExist) {\n throw new Error(`${options.adapter} is not a registered adapter!`)\n } else {\n return options.defaultAdapter\n }\n }\n\n getAdapter (options) {\n options = options || {}\n this.defaults.logFn('getAdapter', options)\n return this.adapters[this.getAdapterName(options)]\n }\n\n registerAdapter (name, Adapter, options) {\n let _this = this\n options = options || {}\n _this.defaults.logFn('registerAdapter', name, Adapter, options)\n if (DSUtils.isFunction(Adapter)) {\n _this.adapters[name] = new Adapter(options)\n } else {\n _this.adapters[name] = Adapter\n }\n if (options.default) {\n _this.defaults.defaultAdapter = name\n }\n _this.defaults.logFn(`default adapter is ${_this.defaults.defaultAdapter}`)\n }\n\n is (resourceName, instance) {\n let definition = this.definitions[resourceName]\n if (!definition) {\n throw new DSErrors.NER(resourceName)\n }\n return instance instanceof definition[definition.class]\n }\n\n clear () {\n let ejected = {}\n DSUtils.forOwn(this.definitions, (definition) => {\n let name = definition.name\n ejected[name] = definition.ejectAll()\n this.store[name].completedQueries = {}\n this.store[name].queryData = {}\n })\n return ejected\n }\n\n errorFn (...args) {\n let options = args[args.length - 1]\n let defaultHandler = this.defaults.errorHandler\n let errorHandler = options ? options.errorHandler : defaultHandler\n errorHandler = errorHandler || defaultHandler\n return function (err) {\n return errorHandler(err, ...args)\n }\n }\n}\n\nvar dsPrototype = DS.prototype\n\ndsPrototype.getAdapterName.shorthand = false\ndsPrototype.getAdapter.shorthand = false\ndsPrototype.registerAdapter.shorthand = false\ndsPrototype.errors = DSErrors\ndsPrototype.utils = DSUtils\n\nfunction addMethods (target, obj) {\n DSUtils.forOwn(obj, function (v, k) {\n target[k] = v\n target[k].before = function (fn) {\n let orig = target[k]\n target[k] = function (...args) {\n return orig.apply(this, fn.apply(this, args) || args)\n }\n }\n })\n}\n\naddMethods(dsPrototype, syncMethods)\naddMethods(dsPrototype, asyncMethods)\n\nexport default DS\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/datastore/index.js\n **/","/* jshint eqeqeq:false */\n\n/**\n * Mix of ES6 and CommonJS module imports because the interop of Babel + Webpack + ES6 modules + CommonJS isn't very good.\n */\nimport DSErrors from './errors'\nlet BinaryHeap = require('yabh')\nlet forEach = require('mout/array/forEach')\nlet slice = require('mout/array/slice')\nlet forOwn = require('mout/object/forOwn')\nlet contains = require('mout/array/contains')\nlet deepMixIn = require('mout/object/deepMixIn')\nlet pascalCase = require('mout/string/pascalCase')\nlet remove = require('mout/array/remove')\nlet pick = require('mout/object/pick')\nlet _keys = require('mout/object/keys')\nlet sort = require('mout/array/sort')\nlet upperCase = require('mout/string/upperCase')\nlet get = require('mout/object/get')\nlet set = require('mout/object/set')\nlet observe = require('../lib/observe-js/observe.js')\nlet guid = require('mout/random/guid')\nlet w, P, File\nlet objectProto = Object.prototype\nlet toString = objectProto.toString\n\n/**\n * Attempt to detect the global Promise constructor.\n * JSData will still work without one, as long you do something like this:\n *\n * var JSData = require('js-data');\n * JSData.DSUtils.Promise = MyPromiseLib;\n */\ntry {\n P = Promise\n} catch (e) {\n console.error('js-data requires a global Promise constructor!')\n}\n\ntry {\n File = window.File\n} catch (e) {\n File = function () {}\n}\n\nfunction _isArray (value) {\n return toString.call(value) === '[object Array]' || false\n}\n\nlet isArray = Array.isArray || _isArray\n\nfunction isRegExp (value) {\n return toString.call(value) === '[object RegExp]' || false\n}\n\n// adapted from lodash.isString\nfunction isString (value) {\n return typeof value === 'string' || (value && typeof value === 'object' && toString.call(value) === '[object String]') || false\n}\n\nfunction isObject (value) {\n return toString.call(value) === '[object Object]' || false\n}\n\n// adapted from lodash.isDate\nfunction isDate (value) {\n return (value && typeof value === 'object' && toString.call(value) === '[object Date]') || false\n}\n\n// adapted from lodash.isNumber\nfunction isNumber (value) {\n let type = typeof value\n return type === 'number' || (value && type === 'object' && toString.call(value) === '[object Number]') || false\n}\n\n// adapted from lodash.isFunction\nfunction isFunction (value) {\n return typeof value === 'function' || (value && toString.call(value) === '[object Function]') || false\n}\n\n// shorthand argument checking functions, using these shaves 1.18 kb off of the minified build\nfunction isStringOrNumber (value) {\n return isString(value) || isNumber(value)\n}\n\nfunction isStringOrNumberErr (field) {\n return new DSErrors.IA(`\"${field}\" must be a string or a number!`)\n}\n\nfunction isObjectErr (field) {\n return new DSErrors.IA(`\"${field}\" must be an object!`)\n}\n\nfunction isArrayErr (field) {\n return new DSErrors.IA(`\"${field}\" must be an array!`)\n}\n\n// adapted from mout.isEmpty\nfunction isEmpty (val) {\n if (val == null) { // jshint ignore:line\n // typeof null == 'object' so we check it first\n return true\n } else if (typeof val === 'string' || isArray(val)) {\n return !val.length\n } else if (typeof val === 'object') {\n let result = true\n forOwn(val, function () {\n result = false\n return false // break loop\n })\n return result\n } else {\n return true\n }\n}\n\n// Find the intersection between two arrays\nfunction intersection (array1, array2) {\n if (!array1 || !array2) {\n return []\n }\n let result = []\n let item\n for (let i = 0, length = array1.length; i < length; i++) {\n item = array1[i]\n if (contains(result, item)) {\n continue\n }\n if (contains(array2, item)) {\n result.push(item)\n }\n }\n return result\n}\n\nfunction filter (array, cb, thisObj) {\n let results = []\n forEach(array, function (value, key, arr) {\n if (cb(value, key, arr)) {\n results.push(value)\n }\n }, thisObj)\n return results\n}\n\n/**\n * Attempt to detect whether we are in the browser.\n */\ntry {\n w = window\n w = {}\n} catch (e) {\n w = null\n}\n\n/**\n * Event mixin. Usage:\n *\n * function handler() { ... }\n * Events(myObject);\n * myObject.on('foo', handler);\n * myObject.emit('foo', 'some', 'data');\n * myObject.off('foo', handler);\n */\nfunction Events (target) {\n let events = {}\n target = target || this\n Object.defineProperties(target, {\n on: {\n value: function (type, func, ctx) {\n events[type] = events[type] || []\n events[type].push({\n f: func,\n c: ctx\n })\n }\n },\n off: {\n value: function (type, func) {\n let listeners = events[type]\n if (!listeners) {\n events = {}\n } else if (func) {\n for (let i = 0; i < listeners.length; i++) {\n if (listeners[i].f === func) {\n listeners.splice(i, 1)\n break\n }\n }\n } else {\n listeners.splice(0, listeners.length)\n }\n }\n },\n emit: {\n value: function (...args) {\n let listeners = events[args.shift()] || []\n if (listeners) {\n for (let i = 0; i < listeners.length; i++) {\n listeners[i].f.apply(listeners[i].c, args)\n }\n }\n }\n }\n })\n}\n\n/**\n * Lifecycle hooks that should support promises.\n */\nlet toPromisify = [\n 'beforeValidate',\n 'validate',\n 'afterValidate',\n 'beforeCreate',\n 'afterCreate',\n 'beforeUpdate',\n 'afterUpdate',\n 'beforeDestroy',\n 'afterDestroy'\n]\n\n/**\n * Return whether \"prop\" is in the blacklist.\n */\nlet isBlacklisted = observe.isBlacklisted\n\n// adapted from angular.copy\nfunction copy (source, destination, stackSource, stackDest, blacklist) {\n if (!destination) {\n destination = source\n if (source) {\n if (isArray(source)) {\n destination = copy(source, [], stackSource, stackDest, blacklist)\n } else if (isDate(source)) {\n destination = new Date(source.getTime())\n } else if (isRegExp(source)) {\n destination = new RegExp(source.source, source.toString().match(/[^\\/]*$/)[0])\n destination.lastIndex = source.lastIndex\n } else if (isObject(source)) {\n destination = copy(source, Object.create(Object.getPrototypeOf(source)), stackSource, stackDest, blacklist)\n }\n }\n } else {\n if (source === destination) {\n throw new Error('Cannot copy! Source and destination are identical.')\n }\n\n stackSource = stackSource || []\n stackDest = stackDest || []\n\n if (isObject(source)) {\n let index = stackSource.indexOf(source)\n if (index !== -1) {\n return stackDest[index]\n }\n\n stackSource.push(source)\n stackDest.push(destination)\n }\n\n let result\n if (isArray(source)) {\n let i\n destination.length = 0\n for (i = 0; i < source.length; i++) {\n result = copy(source[i], null, stackSource, stackDest, blacklist)\n if (isObject(source[i])) {\n stackSource.push(source[i])\n stackDest.push(result)\n }\n destination.push(result)\n }\n } else {\n if (isArray(destination)) {\n destination.length = 0\n } else {\n forEach(destination, function (value, key) {\n delete destination[key]\n })\n }\n for (let key in source) {\n if (source.hasOwnProperty(key)) {\n if (isBlacklisted(key, blacklist)) {\n continue\n }\n result = copy(source[key], null, stackSource, stackDest, blacklist)\n if (isObject(source[key])) {\n stackSource.push(source[key])\n stackDest.push(result)\n }\n destination[key] = result\n }\n }\n }\n }\n return destination\n}\n\n// adapted from angular.equals\nfunction equals (o1, o2) {\n if (o1 === o2) {\n return true\n }\n if (o1 === null || o2 === null) {\n return false\n }\n if (o1 !== o1 && o2 !== o2) { // eslint-disable-line\n return true\n } // NaN === NaN\n var t1 = typeof o1\n var t2 = typeof o2\n var length, key, keySet\n if (t1 == t2) { // eslint-disable-line\n if (t1 == 'object') { // eslint-disable-line\n if (isArray(o1)) {\n if (!isArray(o2)) {\n return false\n }\n if ((length = o1.length) === o2.length) { // jshint ignore:line\n for (key = 0; key < length; key++) {\n if (!equals(o1[key], o2[key])) {\n return false\n }\n }\n return true\n }\n } else if (isDate(o1)) {\n if (!isDate(o2)) {\n return false\n }\n return equals(o1.getTime(), o2.getTime())\n } else if (isRegExp(o1) && isRegExp(o2)) {\n return o1.toString() == o2.toString() // eslint-disable-line\n } else {\n if (isArray(o2)) {\n return false\n }\n keySet = {}\n for (key in o1) {\n if (key.charAt(0) === '$' || isFunction(o1[key])) {\n continue\n }\n if (!equals(o1[key], o2[key])) {\n return false\n }\n keySet[key] = true\n }\n for (key in o2) {\n if (!keySet.hasOwnProperty(key) &&\n key.charAt(0) !== '$' &&\n o2[key] !== undefined && !isFunction(o2[key])) {\n return false\n }\n }\n return true\n }\n }\n }\n return false\n}\n\n/**\n * Given either an instance or the primary key of an instance, return the primary key.\n */\nfunction resolveId (definition, idOrInstance) {\n if (isString(idOrInstance) || isNumber(idOrInstance)) {\n return idOrInstance\n } else if (idOrInstance && definition) {\n return idOrInstance[definition.idAttribute] || idOrInstance\n } else {\n return idOrInstance\n }\n}\n\n/**\n * Given either an instance or the primary key of an instance, return the instance.\n */\nfunction resolveItem (resource, idOrInstance) {\n if (resource && (isString(idOrInstance) || isNumber(idOrInstance))) {\n return resource.index[idOrInstance] || idOrInstance\n } else {\n return idOrInstance\n }\n}\n\nfunction isValidString (val) {\n return (val != null && val !== '') // jshint ignore:line\n}\n\nfunction join (items, separator) {\n separator = separator || ''\n return filter(items, isValidString).join(separator)\n}\n\nfunction makePath (...args) {\n let result = join(args, '/')\n return result.replace(/([^:\\/]|^)\\/{2,}/g, '$1/')\n}\n\nexport default {\n Promise: P,\n /**\n * Method to wrap an \"options\" object so that it will inherit from\n * some parent object, such as a resource definition.\n */\n _ (parent, options) {\n let _this = this\n parent = parent || {}\n options = options || {}\n if (options && options.constructor === parent.constructor) {\n return options\n } else if (!isObject(options)) {\n throw new DSErrors.IA('\"options\" must be an object!')\n }\n forEach(toPromisify, function (name) {\n if (typeof options[name] === 'function' && options[name].toString().indexOf('for (var _len = arg') === -1) {\n options[name] = _this.promisify(options[name])\n }\n })\n // Dynamic constructor function\n let O = function Options (attrs) {\n let self = this\n forOwn(attrs, function (value, key) {\n self[key] = value\n })\n }\n // Inherit from some parent object\n O.prototype = parent\n // Give us a way to get the original options back.\n O.prototype.orig = function () {\n let orig = {}\n forOwn(this, function (value, key) {\n orig[key] = value\n })\n return orig\n }\n return new O(options)\n },\n _n: isNumber,\n _s: isString,\n _sn: isStringOrNumber,\n _snErr: isStringOrNumberErr,\n _o: isObject,\n _oErr: isObjectErr,\n _a: isArray,\n _aErr: isArrayErr,\n applyScope (definition, params, options) {\n let scope = options.scope\n let _params = copy(params)\n if (scope) {\n if (isString(scope)) {\n scope = [scope]\n }\n } else {\n scope = []\n }\n scope.unshift('defaultScope')\n forEach(scope, function (_scope) {\n let scopeDef = options.scopes[_scope]\n if (typeof scopeDef === 'function') {\n deepMixIn(params, scopeDef(definition))\n } else if (scopeDef) {\n deepMixIn(params, scopeDef)\n }\n })\n deepMixIn(params, _params)\n },\n compute (fn, field) {\n let _this = this\n let args = []\n if (!isObject(fn)) {\n forEach(fn.deps, function (dep) {\n args.push(get(_this, dep))\n })\n // compute property\n set(_this, field, fn[fn.length - 1].apply(_this, args))\n }\n },\n contains,\n copy,\n deepMixIn,\n diffObjectFromOldObject: observe.diffObjectFromOldObject,\n BinaryHeap,\n equals,\n Events,\n filter,\n fillIn (target, obj) {\n forOwn(obj, function (v, k) {\n if (!(k in target)) {\n target[k] = v\n }\n })\n return target\n },\n forEach,\n forOwn,\n fromJson (json) {\n return isString(json) ? JSON.parse(json) : json\n },\n get,\n guid,\n intersection,\n isArray,\n isBlacklisted,\n isEmpty,\n isFunction,\n isObject,\n isNumber,\n isString,\n keys: _keys,\n makePath,\n observe,\n omit (obj, bl) {\n let toRemove = []\n forOwn(obj, function (v, k) {\n if (isBlacklisted(k, bl)) {\n toRemove.push(k)\n }\n })\n forEach(toRemove, function (k) {\n delete obj[k]\n })\n return obj\n },\n pascalCase,\n pick,\n // Turn the given node-style callback function into one that can return a promise.\n promisify (fn, target) {\n let _this = this\n if (!fn) {\n return\n } else if (typeof fn !== 'function') {\n throw new Error('Can only promisify functions!')\n }\n return function (...args) {\n return new _this.Promise(function (resolve, reject) {\n args.push(function (err, result) {\n if (err) {\n reject(err)\n } else {\n resolve(result)\n }\n })\n\n try {\n let promise = fn.apply(target || this, args)\n if (promise && promise.then) {\n promise.then(resolve, reject)\n }\n } catch (err) {\n reject(err)\n }\n })\n }\n },\n remove,\n set,\n slice,\n sort,\n toJson: JSON.stringify,\n updateTimestamp (timestamp) {\n let newTimestamp = typeof Date.now === 'function' ? Date.now() : new Date().getTime()\n if (timestamp && newTimestamp <= timestamp) {\n return timestamp + 1\n } else {\n return newTimestamp\n }\n },\n upperCase,\n // Return a copy of \"object\" with cycles removed.\n removeCircular (object) {\n return (function rmCirc (value, ctx) {\n let i\n let nu\n\n if (\n typeof value === 'object' &&\n value !== null &&\n !(value instanceof Boolean) &&\n !(value instanceof Date) &&\n !(value instanceof Number) &&\n !(value instanceof RegExp) &&\n !(value instanceof String) &&\n (!File || !(value instanceof File))\n ) {\n // check if current object points back to itself\n let cur = ctx.cur\n var parent = ctx.ctx\n while (parent) {\n if (parent.cur === cur) {\n return undefined\n }\n parent = parent.ctx\n }\n\n if (isArray(value)) {\n nu = []\n for (i = 0; i < value.length; i += 1) {\n nu[i] = rmCirc(value[i], {ctx, cur: value[i]})\n }\n } else {\n nu = {}\n forOwn(value, function (v, k) {\n nu[k] = rmCirc(value[k], {ctx, cur: value[k]})\n })\n }\n return nu\n }\n return value\n }(object, {ctx: null, cur: object}))\n },\n resolveItem,\n resolveId,\n respond (response, meta, options) {\n if (options.returnMeta === 'array') {\n return [response, meta]\n } else if (options.returnMeta === 'object') {\n return {response, meta}\n } else {\n return response\n }\n },\n w,\n // This is where the magic of relations happens.\n applyRelationGettersToTarget (store, definition, target) {\n this.forEach(definition.relationList, def => {\n let relationName = def.relation\n let localField = def.localField\n let localKey = def.localKey\n let foreignKey = def.foreignKey\n let localKeys = def.localKeys\n let foreignKeys = def.foreignKeys\n let enumerable = typeof def.enumerable === 'boolean' ? def.enumerable : !!definition.relationsEnumerable\n if (typeof def.link === 'boolean' ? def.link : !!definition.linkRelations) {\n delete target[localField]\n let prop = {\n enumerable\n }\n if (def.type === 'belongsTo') {\n prop.get = function () {\n let key = get(this, localKey)\n let hasKey = !!(key || key === 0)\n return hasKey ? definition.getResource(relationName).get(key) : undefined\n }\n prop.set = function (parent) {\n if (parent) {\n set(this, localKey, get(parent, definition.getResource(relationName).idAttribute))\n }\n return get(this, localField)\n }\n } else if (def.type === 'hasMany') {\n prop.get = function () {\n let params = {}\n if (foreignKey) {\n params[foreignKey] = this[definition.idAttribute]\n return definition.getResource(relationName).defaultFilter.call(store, store.store[relationName].collection, relationName, params, {allowSimpleWhere: true})\n } else if (localKeys) {\n let keys = get(this, localKeys) || []\n return definition.getResource(relationName).getAll(isArray(keys) ? keys : _keys(keys))\n } else if (foreignKeys) {\n set(params, `where.${foreignKeys}.contains`, this[definition.idAttribute])\n return definition.getResource(relationName).defaultFilter.call(store, store.store[relationName].collection, relationName, params)\n }\n return undefined\n }\n prop.set = function (children) {\n if (children && children.length) {\n let id = get(this, definition.idAttribute)\n if (foreignKey) {\n forEach(children, function (child) {\n set(child, foreignKey, id)\n })\n } else if (localKeys) {\n let keys = []\n forEach(children, function (child) {\n keys.push(get(child, definition.getResource(relationName).idAttribute))\n })\n set(this, localKeys, keys)\n } else if (foreignKeys) {\n forEach(children, function (child) {\n let keys = get(child, foreignKeys)\n if (keys) {\n if (!contains(keys, id)) {\n keys.push(id)\n }\n } else {\n set(child, foreignKeys, [id])\n }\n })\n }\n }\n return get(this, localField)\n }\n } else if (def.type === 'hasOne') {\n if (localKey) {\n prop.get = function () {\n let key = get(this, localKey)\n let hasKey = !!(key || key === 0)\n return hasKey ? definition.getResource(relationName).get(key) : undefined\n }\n prop.set = function (sibling) {\n if (sibling) {\n set(this, localKey, get(sibling, definition.getResource(relationName).idAttribute))\n }\n return get(this, localField)\n }\n } else {\n prop.get = function () {\n let params = {}\n params[foreignKey] = this[definition.idAttribute]\n let items = params[foreignKey] ? definition.getResource(relationName).defaultFilter.call(store, store.store[relationName].collection, relationName, params, {allowSimpleWhere: true}) : []\n if (items.length) {\n return items[0]\n }\n return undefined\n }\n prop.set = function (sibling) {\n if (sibling) {\n set(sibling, foreignKey, get(this, definition.idAttribute))\n }\n return get(this, localField)\n }\n }\n }\n if (def.get) {\n let orig = prop.get\n prop.get = function () {\n return def.get(definition, def, this, (...args) => orig.apply(this, args))\n }\n }\n Object.defineProperty(target, localField, prop)\n }\n })\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/utils.js\n **/","/**\n * Thrown during a method call when an argument passed into the method is invalid.\n */\nclass IllegalArgumentError extends Error {\n constructor (message) {\n super()\n if (typeof Error.captureStackTrace === 'function') {\n Error.captureStackTrace(this, this.constructor)\n }\n this.type = this.constructor.name\n this.message = message\n }\n}\n\n/**\n * Thrown when an invariant is violated or unrecoverable error is encountered during execution.\n */\nclass RuntimeError extends Error {\n constructor (message) {\n super()\n if (typeof Error.captureStackTrace === 'function') {\n Error.captureStackTrace(this, this.constructor)\n }\n this.type = this.constructor.name\n this.message = message\n }\n}\n\n/**\n * Thrown when attempting to access or work with a non-existent resource.\n */\nclass NonexistentResourceError extends Error {\n constructor (resourceName) {\n super()\n if (typeof Error.captureStackTrace === 'function') {\n Error.captureStackTrace(this, this.constructor)\n }\n this.type = this.constructor.name\n this.message = `${resourceName} is not a registered resource!`\n }\n}\n\nexport default {\n IllegalArgumentError,\n IA: IllegalArgumentError,\n RuntimeError,\n R: RuntimeError,\n NonexistentResourceError,\n NER: NonexistentResourceError\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/errors.js\n **/","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define('yabh', factory) :\n (global.BinaryHeap = factory());\n}(this, function () { 'use strict';\n\n /**\n * @method bubbleUp\n * @param {array} heap The heap.\n * @param {function} weightFunc The weight function.\n * @param {number} n The index of the element to bubble up.\n */\n var bubbleUp = function bubbleUp(heap, weightFunc, n) {\n var element = heap[n];\n var weight = weightFunc(element);\n // When at 0, an element can not go up any further.\n while (n > 0) {\n // Compute the parent element's index, and fetch it.\n var parentN = Math.floor((n + 1) / 2) - 1;\n var parent = heap[parentN];\n // If the parent has a lesser weight, things are in order and we\n // are done.\n if (weight >= weightFunc(parent)) {\n break;\n } else {\n heap[parentN] = element;\n heap[n] = parent;\n n = parentN;\n }\n }\n };\n\n /**\n * @method bubbleDown\n * @param {array} heap The heap.\n * @param {function} weightFunc The weight function.\n * @param {number} n The index of the element to sink down.\n */\n var bubbleDown = function bubbleDown(heap, weightFunc, n) {\n var length = heap.length;\n var node = heap[n];\n var nodeWeight = weightFunc(node);\n\n while (true) {\n var child2N = (n + 1) * 2;\n var child1N = child2N - 1;\n var swap = null;\n if (child1N < length) {\n var child1 = heap[child1N];\n var child1Weight = weightFunc(child1);\n // If the score is less than our node's, we need to swap.\n if (child1Weight < nodeWeight) {\n swap = child1N;\n }\n }\n // Do the same checks for the other child.\n if (child2N < length) {\n var child2 = heap[child2N];\n var child2Weight = weightFunc(child2);\n if (child2Weight < (swap === null ? nodeWeight : weightFunc(heap[child1N]))) {\n swap = child2N;\n }\n }\n\n if (swap === null) {\n break;\n } else {\n heap[n] = heap[swap];\n heap[swap] = node;\n n = swap;\n }\n }\n };\n\n function BinaryHeap(weightFunc, compareFunc) {\n if (!weightFunc) {\n weightFunc = function weightFunc(x) {\n return x;\n };\n }\n if (!compareFunc) {\n compareFunc = function compareFunc(x, y) {\n return x === y;\n };\n }\n if (typeof weightFunc !== 'function') {\n throw new Error('BinaryHeap([weightFunc][, compareFunc]): \"weightFunc\" must be a function!');\n }\n if (typeof compareFunc !== 'function') {\n throw new Error('BinaryHeap([weightFunc][, compareFunc]): \"compareFunc\" must be a function!');\n }\n this.weightFunc = weightFunc;\n this.compareFunc = compareFunc;\n this.heap = [];\n }\n\n var BHProto = BinaryHeap.prototype;\n\n BHProto.push = function (node) {\n this.heap.push(node);\n bubbleUp(this.heap, this.weightFunc, this.heap.length - 1);\n };\n\n BHProto.peek = function () {\n return this.heap[0];\n };\n\n BHProto.pop = function () {\n var front = this.heap[0];\n var end = this.heap.pop();\n if (this.heap.length > 0) {\n this.heap[0] = end;\n bubbleDown(this.heap, this.weightFunc, 0);\n }\n return front;\n };\n\n BHProto.remove = function (node) {\n var length = this.heap.length;\n for (var i = 0; i < length; i++) {\n if (this.compareFunc(this.heap[i], node)) {\n var removed = this.heap[i];\n var end = this.heap.pop();\n if (i !== length - 1) {\n this.heap[i] = end;\n bubbleUp(this.heap, this.weightFunc, i);\n bubbleDown(this.heap, this.weightFunc, i);\n }\n return removed;\n }\n }\n return null;\n };\n\n BHProto.removeAll = function () {\n this.heap = [];\n };\n\n BHProto.size = function () {\n return this.heap.length;\n };\n\n return BinaryHeap;\n\n}));\n//# sourceMappingURL=yabh.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/yabh/dist/yabh.js\n ** module id = 4\n ** module chunks = 0\n **/","\n\n /**\n * Array forEach\n */\n function forEach(arr, callback, thisObj) {\n if (arr == null) {\n return;\n }\n var i = -1,\n len = arr.length;\n while (++i < len) {\n // we iterate over sparse items since there is no way to make it\n // work properly on IE 7-8. see #64\n if ( callback.call(thisObj, arr[i], i, arr) === false ) {\n break;\n }\n }\n }\n\n module.exports = forEach;\n\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/array/forEach.js\n ** module id = 5\n ** module chunks = 0\n **/","\n\n /**\n * Create slice of source array or array-like object\n */\n function slice(arr, start, end){\n var len = arr.length;\n\n if (start == null) {\n start = 0;\n } else if (start < 0) {\n start = Math.max(len + start, 0);\n } else {\n start = Math.min(start, len);\n }\n\n if (end == null) {\n end = len;\n } else if (end < 0) {\n end = Math.max(len + end, 0);\n } else {\n end = Math.min(end, len);\n }\n\n var result = [];\n while (start < end) {\n result.push(arr[start++]);\n }\n\n return result;\n }\n\n module.exports = slice;\n\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/array/slice.js\n ** module id = 6\n ** module chunks = 0\n **/","var hasOwn = require('./hasOwn');\nvar forIn = require('./forIn');\n\n /**\n * Similar to Array/forEach but works over object properties and fixes Don't\n * Enum bug on IE.\n * based on: http://whattheheadsaid.com/2010/10/a-safer-object-keys-compatibility-implementation\n */\n function forOwn(obj, fn, thisObj){\n forIn(obj, function(val, key){\n if (hasOwn(obj, key)) {\n return fn.call(thisObj, obj[key], key, obj);\n }\n });\n }\n\n module.exports = forOwn;\n\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/object/forOwn.js\n ** module id = 7\n ** module chunks = 0\n **/","\n\n /**\n * Safer Object.hasOwnProperty\n */\n function hasOwn(obj, prop){\n return Object.prototype.hasOwnProperty.call(obj, prop);\n }\n\n module.exports = hasOwn;\n\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/object/hasOwn.js\n ** module id = 8\n ** module chunks = 0\n **/","var hasOwn = require('./hasOwn');\n\n var _hasDontEnumBug,\n _dontEnums;\n\n function checkDontEnum(){\n _dontEnums = [\n 'toString',\n 'toLocaleString',\n 'valueOf',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'constructor'\n ];\n\n _hasDontEnumBug = true;\n\n for (var key in {'toString': null}) {\n _hasDontEnumBug = false;\n }\n }\n\n /**\n * Similar to Array/forEach but works over object properties and fixes Don't\n * Enum bug on IE.\n * based on: http://whattheheadsaid.com/2010/10/a-safer-object-keys-compatibility-implementation\n */\n function forIn(obj, fn, thisObj){\n var key, i = 0;\n // no need to check if argument is a real object that way we can use\n // it for arrays, functions, date, etc.\n\n //post-pone check till needed\n if (_hasDontEnumBug == null) checkDontEnum();\n\n for (key in obj) {\n if (exec(fn, obj, key, thisObj) === false) {\n break;\n }\n }\n\n\n if (_hasDontEnumBug) {\n var ctor = obj.constructor,\n isProto = !!ctor && obj === ctor.prototype;\n\n while (key = _dontEnums[i++]) {\n // For constructor, if it is a prototype object the constructor\n // is always non-enumerable unless defined otherwise (and\n // enumerated above). For non-prototype objects, it will have\n // to be defined on this object, since it cannot be defined on\n // any prototype objects.\n //\n // For other [[DontEnum]] properties, check if the value is\n // different than Object prototype value.\n if (\n (key !== 'constructor' ||\n (!isProto && hasOwn(obj, key))) &&\n obj[key] !== Object.prototype[key]\n ) {\n if (exec(fn, obj, key, thisObj) === false) {\n break;\n }\n }\n }\n }\n }\n\n function exec(fn, obj, key, thisObj){\n return fn.call(thisObj, obj[key], key, obj);\n }\n\n module.exports = forIn;\n\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/object/forIn.js\n ** module id = 9\n ** module chunks = 0\n **/","var indexOf = require('./indexOf');\n\n /**\n * If array contains values.\n */\n function contains(arr, val) {\n return indexOf(arr, val) !== -1;\n }\n module.exports = contains;\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/array/contains.js\n ** module id = 10\n ** module chunks = 0\n **/","\n\n /**\n * Array.indexOf\n */\n function indexOf(arr, item, fromIndex) {\n fromIndex = fromIndex || 0;\n if (arr == null) {\n return -1;\n }\n\n var len = arr.length,\n i = fromIndex < 0 ? len + fromIndex : fromIndex;\n while (i < len) {\n // we iterate over sparse items since there is no way to make it\n // work properly on IE 7-8. see #64\n if (arr[i] === item) {\n return i;\n }\n\n i++;\n }\n\n return -1;\n }\n\n module.exports = indexOf;\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/array/indexOf.js\n ** module id = 11\n ** module chunks = 0\n **/","var forOwn = require('./forOwn');\nvar isPlainObject = require('../lang/isPlainObject');\n\n /**\n * Mixes objects into the target object, recursively mixing existing child\n * objects.\n */\n function deepMixIn(target, objects) {\n var i = 0,\n n = arguments.length,\n obj;\n\n while(++i < n){\n obj = arguments[i];\n if (obj) {\n forOwn(obj, copyProp, target);\n }\n }\n\n return target;\n }\n\n function copyProp(val, key) {\n var existing = this[key];\n if (isPlainObject(val) && isPlainObject(existing)) {\n deepMixIn(existing, val);\n } else {\n this[key] = val;\n }\n }\n\n module.exports = deepMixIn;\n\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/object/deepMixIn.js\n ** module id = 12\n ** module chunks = 0\n **/","\n\n /**\n * Checks if the value is created by the `Object` constructor.\n */\n function isPlainObject(value) {\n return (!!value && typeof value === 'object' &&\n value.constructor === Object);\n }\n\n module.exports = isPlainObject;\n\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/lang/isPlainObject.js\n ** module id = 13\n ** module chunks = 0\n **/","var toString = require('../lang/toString');\nvar camelCase = require('./camelCase');\nvar upperCase = require('./upperCase');\n /**\n * camelCase + UPPERCASE first char\n */\n function pascalCase(str){\n str = toString(str);\n return camelCase(str).replace(/^[a-z]/, upperCase);\n }\n\n module.exports = pascalCase;\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/string/pascalCase.js\n ** module id = 14\n ** module chunks = 0\n **/","\n\n /**\n * Typecast a value to a String, using an empty string value for null or\n * undefined.\n */\n function toString(val){\n return val == null ? '' : val.toString();\n }\n\n module.exports = toString;\n\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/lang/toString.js\n ** module id = 15\n ** module chunks = 0\n **/","var toString = require('../lang/toString');\nvar replaceAccents = require('./replaceAccents');\nvar removeNonWord = require('./removeNonWord');\nvar upperCase = require('./upperCase');\nvar lowerCase = require('./lowerCase');\n /**\n * Convert string to camelCase text.\n */\n function camelCase(str){\n str = toString(str);\n str = replaceAccents(str);\n str = removeNonWord(str)\n .replace(/[\\-_]/g, ' ') //convert all hyphens and underscores to spaces\n .replace(/\\s[a-z]/g, upperCase) //convert first char of each word to UPPERCASE\n .replace(/\\s+/g, '') //remove spaces\n .replace(/^[A-Z]/g, lowerCase); //convert first char to lowercase\n return str;\n }\n module.exports = camelCase;\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/string/camelCase.js\n ** module id = 16\n ** module chunks = 0\n **/","var toString = require('../lang/toString');\n /**\n * Replaces all accented chars with regular ones\n */\n function replaceAccents(str){\n str = toString(str);\n\n // verifies if the String has accents and replace them\n if (str.search(/[\\xC0-\\xFF]/g) > -1) {\n str = str\n .replace(/[\\xC0-\\xC5]/g, \"A\")\n .replace(/[\\xC6]/g, \"AE\")\n .replace(/[\\xC7]/g, \"C\")\n .replace(/[\\xC8-\\xCB]/g, \"E\")\n .replace(/[\\xCC-\\xCF]/g, \"I\")\n .replace(/[\\xD0]/g, \"D\")\n .replace(/[\\xD1]/g, \"N\")\n .replace(/[\\xD2-\\xD6\\xD8]/g, \"O\")\n .replace(/[\\xD9-\\xDC]/g, \"U\")\n .replace(/[\\xDD]/g, \"Y\")\n .replace(/[\\xDE]/g, \"P\")\n .replace(/[\\xE0-\\xE5]/g, \"a\")\n .replace(/[\\xE6]/g, \"ae\")\n .replace(/[\\xE7]/g, \"c\")\n .replace(/[\\xE8-\\xEB]/g, \"e\")\n .replace(/[\\xEC-\\xEF]/g, \"i\")\n .replace(/[\\xF1]/g, \"n\")\n .replace(/[\\xF2-\\xF6\\xF8]/g, \"o\")\n .replace(/[\\xF9-\\xFC]/g, \"u\")\n .replace(/[\\xFE]/g, \"p\")\n .replace(/[\\xFD\\xFF]/g, \"y\");\n }\n return str;\n }\n module.exports = replaceAccents;\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/string/replaceAccents.js\n ** module id = 17\n ** module chunks = 0\n **/","var toString = require('../lang/toString');\n // This pattern is generated by the _build/pattern-removeNonWord.js script\n var PATTERN = /[^\\x20\\x2D0-9A-Z\\x5Fa-z\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\xFF]/g;\n\n /**\n * Remove non-word chars.\n */\n function removeNonWord(str){\n str = toString(str);\n return str.replace(PATTERN, '');\n }\n\n module.exports = removeNonWord;\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/string/removeNonWord.js\n ** module id = 18\n ** module chunks = 0\n **/","var toString = require('../lang/toString');\n /**\n * \"Safer\" String.toUpperCase()\n */\n function upperCase(str){\n str = toString(str);\n return str.toUpperCase();\n }\n module.exports = upperCase;\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/string/upperCase.js\n ** module id = 19\n ** module chunks = 0\n **/","var toString = require('../lang/toString');\n /**\n * \"Safer\" String.toLowerCase()\n */\n function lowerCase(str){\n str = toString(str);\n return str.toLowerCase();\n }\n\n module.exports = lowerCase;\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/string/lowerCase.js\n ** module id = 20\n ** module chunks = 0\n **/","var indexOf = require('./indexOf');\n\n /**\n * Remove a single item from the array.\n * (it won't remove duplicates, just a single item)\n */\n function remove(arr, item){\n var idx = indexOf(arr, item);\n if (idx !== -1) arr.splice(idx, 1);\n }\n\n module.exports = remove;\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/array/remove.js\n ** module id = 21\n ** module chunks = 0\n **/","var slice = require('../array/slice');\n\n /**\n * Return a copy of the object, filtered to only have values for the whitelisted keys.\n */\n function pick(obj, var_keys){\n var keys = typeof arguments[1] !== 'string'? arguments[1] : slice(arguments, 1),\n out = {},\n i = 0, key;\n while (key = keys[i++]) {\n out[key] = obj[key];\n }\n return out;\n }\n\n module.exports = pick;\n\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/object/pick.js\n ** module id = 22\n ** module chunks = 0\n **/","var forOwn = require('./forOwn');\n\n /**\n * Get object keys\n */\n var keys = Object.keys || function (obj) {\n var keys = [];\n forOwn(obj, function(val, key){\n keys.push(key);\n });\n return keys;\n };\n\n module.exports = keys;\n\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/object/keys.js\n ** module id = 23\n ** module chunks = 0\n **/","\n\n /**\n * Merge sort (http://en.wikipedia.org/wiki/Merge_sort)\n */\n function mergeSort(arr, compareFn) {\n if (arr == null) {\n return [];\n } else if (arr.length < 2) {\n return arr;\n }\n\n if (compareFn == null) {\n compareFn = defaultCompare;\n }\n\n var mid, left, right;\n\n mid = ~~(arr.length / 2);\n left = mergeSort( arr.slice(0, mid), compareFn );\n right = mergeSort( arr.slice(mid, arr.length), compareFn );\n\n return merge(left, right, compareFn);\n }\n\n function defaultCompare(a, b) {\n return a < b ? -1 : (a > b? 1 : 0);\n }\n\n function merge(left, right, compareFn) {\n var result = [];\n\n while (left.length && right.length) {\n if (compareFn(left[0], right[0]) <= 0) {\n // if 0 it should preserve same order (stable)\n result.push(left.shift());\n } else {\n result.push(right.shift());\n }\n }\n\n if (left.length) {\n result.push.apply(result, left);\n }\n\n if (right.length) {\n result.push.apply(result, right);\n }\n\n return result;\n }\n\n module.exports = mergeSort;\n\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/array/sort.js\n ** module id = 24\n ** module chunks = 0\n **/","var isPrimitive = require('../lang/isPrimitive');\n\n /**\n * get \"nested\" object property\n */\n function get(obj, prop){\n var parts = prop.split('.'),\n last = parts.pop();\n\n while (prop = parts.shift()) {\n obj = obj[prop];\n if (obj == null) return;\n }\n\n return obj[last];\n }\n\n module.exports = get;\n\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/object/get.js\n ** module id = 25\n ** module chunks = 0\n **/","\n\n /**\n * Checks if the object is a primitive\n */\n function isPrimitive(value) {\n // Using switch fallthrough because it's simple to read and is\n // generally fast: http://jsperf.com/testing-value-is-primitive/5\n switch (typeof value) {\n case \"string\":\n case \"number\":\n case \"boolean\":\n return true;\n }\n\n return value == null;\n }\n\n module.exports = isPrimitive;\n\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/lang/isPrimitive.js\n ** module id = 26\n ** module chunks = 0\n **/","var namespace = require('./namespace');\n\n /**\n * set \"nested\" object property\n */\n function set(obj, prop, val){\n var parts = (/^(.+)\\.(.+)$/).exec(prop);\n if (parts){\n namespace(obj, parts[1])[parts[2]] = val;\n } else {\n obj[prop] = val;\n }\n }\n\n module.exports = set;\n\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/object/set.js\n ** module id = 27\n ** module chunks = 0\n **/","var forEach = require('../array/forEach');\n\n /**\n * Create nested object if non-existent\n */\n function namespace(obj, path){\n if (!path) return obj;\n forEach(path.split('.'), function(key){\n if (!obj[key]) {\n obj[key] = {};\n }\n obj = obj[key];\n });\n return obj;\n }\n\n module.exports = namespace;\n\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/object/namespace.js\n ** module id = 28\n ** module chunks = 0\n **/","/*\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n */\n\n// Modifications\n// Copyright 2014-2015 Jason Dobry\n//\n// Summary of modifications:\n// Fixed use of \"delete\" keyword for IE8 compatibility\n// Exposed diffObjectFromOldObject on the exported object\n// Added the \"equals\" argument to diffObjectFromOldObject to be used to check equality\n// Added a way in diffObjectFromOldObject to ignore changes to certain properties\n// Removed all code related to:\n// - ArrayObserver\n// - ArraySplice\n// - PathObserver\n// - CompoundObserver\n// - Path\n// - ObserverTransform\n\n(function(global) {\n var testingExposeCycleCount = global.testingExposeCycleCount;\n\n // Detect and do basic sanity checking on Object/Array.observe.\n function detectObjectObserve() {\n if (typeof Object.observe !== 'function' ||\n typeof Array.observe !== 'function') {\n return false;\n }\n\n var records = [];\n\n function callback(recs) {\n records = recs;\n }\n\n var test = {};\n var arr = [];\n Object.observe(test, callback);\n Array.observe(arr, callback);\n test.id = 1;\n test.id = 2;\n delete test.id;\n arr.push(1, 2);\n arr.length = 0;\n\n Object.deliverChangeRecords(callback);\n if (records.length !== 5)\n return false;\n\n if (records[0].type != 'add' ||\n records[1].type != 'update' ||\n records[2].type != 'delete' ||\n records[3].type != 'splice' ||\n records[4].type != 'splice') {\n return false;\n }\n\n Object.unobserve(test, callback);\n Array.unobserve(arr, callback);\n\n return true;\n }\n\n var hasObserve = detectObjectObserve();\n\n var createObject = ('__proto__' in {}) ?\n function(obj) { return obj; } :\n function(obj) {\n var proto = obj.__proto__;\n if (!proto)\n return obj;\n var newObject = Object.create(proto);\n Object.getOwnPropertyNames(obj).forEach(function(name) {\n Object.defineProperty(newObject, name,\n Object.getOwnPropertyDescriptor(obj, name));\n });\n return newObject;\n };\n\n var MAX_DIRTY_CHECK_CYCLES = 1000;\n\n function dirtyCheck(observer) {\n var cycles = 0;\n while (cycles < MAX_DIRTY_CHECK_CYCLES && observer.check_()) {\n cycles++;\n }\n if (testingExposeCycleCount)\n global.dirtyCheckCycleCount = cycles;\n\n return cycles > 0;\n }\n\n function objectIsEmpty(object) {\n for (var prop in object)\n return false;\n return true;\n }\n\n function diffIsEmpty(diff) {\n return objectIsEmpty(diff.added) &&\n objectIsEmpty(diff.removed) &&\n objectIsEmpty(diff.changed);\n }\n\n function isBlacklisted(prop, bl) {\n if (!bl || !bl.length) {\n return false;\n }\n var matches;\n for (var i = 0; i < bl.length; i++) {\n if ((Object.prototype.toString.call(bl[i]) === '[object RegExp]' && bl[i].test(prop)) || bl[i] === prop) {\n return matches = prop;\n }\n }\n return !!matches;\n }\n\n function diffObjectFromOldObject(object, oldObject, equals, bl) {\n var added = {};\n var removed = {};\n var changed = {};\n\n for (var prop in oldObject) {\n var newValue = object[prop];\n\n if (isBlacklisted(prop, bl))\n continue;\n\n if (newValue !== undefined && (equals ? equals(newValue, oldObject[prop]) : newValue === oldObject[prop]))\n continue;\n\n if (!(prop in object)) {\n removed[prop] = undefined;\n continue;\n }\n\n if (equals ? !equals(newValue, oldObject[prop]) : newValue !== oldObject[prop])\n changed[prop] = newValue;\n }\n\n for (var prop in object) {\n if (prop in oldObject)\n continue;\n\n if (isBlacklisted(prop, bl))\n continue;\n\n added[prop] = object[prop];\n }\n\n if (Array.isArray(object) && object.length !== oldObject.length)\n changed.length = object.length;\n\n return {\n added: added,\n removed: removed,\n changed: changed\n };\n }\n\n var eomTasks = [];\n function runEOMTasks() {\n if (!eomTasks.length)\n return false;\n\n for (var i = 0; i < eomTasks.length; i++) {\n eomTasks[i]();\n }\n eomTasks.length = 0;\n return true;\n }\n\n var runEOM = hasObserve ? (function(){\n return function(fn) {\n return Promise.resolve().then(fn);\n }\n })() :\n (function() {\n return function(fn) {\n eomTasks.push(fn);\n };\n })();\n\n var observedObjectCache = [];\n\n function newObservedObject() {\n var observer;\n var object;\n var discardRecords = false;\n var first = true;\n\n function callback(records) {\n if (observer && observer.state_ === OPENED && !discardRecords)\n observer.check_(records);\n }\n\n return {\n open: function(obs) {\n if (observer)\n throw Error('ObservedObject in use');\n\n if (!first)\n Object.deliverChangeRecords(callback);\n\n observer = obs;\n first = false;\n },\n observe: function(obj, arrayObserve) {\n object = obj;\n if (arrayObserve)\n Array.observe(object, callback);\n else\n Object.observe(object, callback);\n },\n deliver: function(discard) {\n discardRecords = discard;\n Object.deliverChangeRecords(callback);\n discardRecords = false;\n },\n close: function() {\n observer = undefined;\n Object.unobserve(object, callback);\n observedObjectCache.push(this);\n }\n };\n }\n\n function getObservedObject(observer, object, arrayObserve) {\n var dir = observedObjectCache.pop() || newObservedObject();\n dir.open(observer);\n dir.observe(object, arrayObserve);\n return dir;\n }\n\n var UNOPENED = 0;\n var OPENED = 1;\n var CLOSED = 2;\n\n var nextObserverId = 1;\n\n function Observer() {\n this.state_ = UNOPENED;\n this.callback_ = undefined;\n this.target_ = undefined; // TODO(rafaelw): Should be WeakRef\n this.directObserver_ = undefined;\n this.value_ = undefined;\n this.id_ = nextObserverId++;\n }\n\n Observer.prototype = {\n open: function(callback, target) {\n if (this.state_ != UNOPENED)\n throw Error('Observer has already been opened.');\n\n addToAll(this);\n this.callback_ = callback;\n this.target_ = target;\n this.connect_();\n this.state_ = OPENED;\n return this.value_;\n },\n\n close: function() {\n if (this.state_ != OPENED)\n return;\n\n removeFromAll(this);\n this.disconnect_();\n this.value_ = undefined;\n this.callback_ = undefined;\n this.target_ = undefined;\n this.state_ = CLOSED;\n },\n\n deliver: function() {\n if (this.state_ != OPENED)\n return;\n\n dirtyCheck(this);\n },\n\n report_: function(changes) {\n try {\n this.callback_.apply(this.target_, changes);\n } catch (ex) {\n Observer._errorThrownDuringCallback = true;\n console.error('Exception caught during observer callback: ' +\n (ex.stack || ex));\n }\n },\n\n discardChanges: function() {\n this.check_(undefined, true);\n return this.value_;\n }\n }\n\n var collectObservers = !hasObserve;\n var allObservers;\n Observer._allObserversCount = 0;\n\n if (collectObservers) {\n allObservers = [];\n }\n\n function addToAll(observer) {\n Observer._allObserversCount++;\n if (!collectObservers)\n return;\n\n allObservers.push(observer);\n }\n\n function removeFromAll(observer) {\n Observer._allObserversCount--;\n }\n\n var runningMicrotaskCheckpoint = false;\n\n global.Platform = global.Platform || {};\n\n global.Platform.performMicrotaskCheckpoint = function() {\n if (runningMicrotaskCheckpoint)\n return;\n\n if (!collectObservers)\n return;\n\n runningMicrotaskCheckpoint = true;\n\n var cycles = 0;\n var anyChanged, toCheck;\n\n do {\n cycles++;\n toCheck = allObservers;\n allObservers = [];\n anyChanged = false;\n\n for (var i = 0; i < toCheck.length; i++) {\n var observer = toCheck[i];\n if (observer.state_ != OPENED)\n continue;\n\n if (observer.check_())\n anyChanged = true;\n\n allObservers.push(observer);\n }\n if (runEOMTasks())\n anyChanged = true;\n } while (cycles < MAX_DIRTY_CHECK_CYCLES && anyChanged);\n\n if (testingExposeCycleCount)\n global.dirtyCheckCycleCount = cycles;\n\n runningMicrotaskCheckpoint = false;\n };\n\n if (collectObservers) {\n global.Platform.clearObservers = function() {\n allObservers = [];\n };\n }\n\n function ObjectObserver(object) {\n Observer.call(this);\n this.value_ = object;\n this.oldObject_ = undefined;\n }\n\n ObjectObserver.prototype = createObject({\n __proto__: Observer.prototype,\n\n arrayObserve: false,\n\n connect_: function(callback, target) {\n if (hasObserve) {\n this.directObserver_ = getObservedObject(this, this.value_,\n this.arrayObserve);\n } else {\n this.oldObject_ = this.copyObject(this.value_);\n }\n\n },\n\n copyObject: function(object) {\n var copy = Array.isArray(object) ? [] : {};\n for (var prop in object) {\n copy[prop] = object[prop];\n };\n if (Array.isArray(object))\n copy.length = object.length;\n return copy;\n },\n\n check_: function(changeRecords, skipChanges) {\n var diff;\n var oldValues;\n if (hasObserve) {\n if (!changeRecords)\n return false;\n\n oldValues = {};\n diff = diffObjectFromChangeRecords(this.value_, changeRecords,\n oldValues);\n } else {\n oldValues = this.oldObject_;\n diff = diffObjectFromOldObject(this.value_, this.oldObject_);\n }\n\n if (diffIsEmpty(diff))\n return false;\n\n if (!hasObserve)\n this.oldObject_ = this.copyObject(this.value_);\n\n this.report_([\n diff.added || {},\n diff.removed || {},\n diff.changed || {},\n function(property) {\n return oldValues[property];\n }\n ]);\n\n return true;\n },\n\n disconnect_: function() {\n if (hasObserve) {\n this.directObserver_.close();\n this.directObserver_ = undefined;\n } else {\n this.oldObject_ = undefined;\n }\n },\n\n deliver: function() {\n if (this.state_ != OPENED)\n return;\n\n if (hasObserve)\n this.directObserver_.deliver(false);\n else\n dirtyCheck(this);\n },\n\n discardChanges: function() {\n if (this.directObserver_)\n this.directObserver_.deliver(true);\n else\n this.oldObject_ = this.copyObject(this.value_);\n\n return this.value_;\n }\n });\n\n var observerSentinel = {};\n\n var expectedRecordTypes = {\n add: true,\n update: true,\n 'delete': true\n };\n\n function diffObjectFromChangeRecords(object, changeRecords, oldValues) {\n var added = {};\n var removed = {};\n\n for (var i = 0; i < changeRecords.length; i++) {\n var record = changeRecords[i];\n if (!expectedRecordTypes[record.type]) {\n console.error('Unknown changeRecord type: ' + record.type);\n console.error(record);\n continue;\n }\n\n if (!(record.name in oldValues))\n oldValues[record.name] = record.oldValue;\n\n if (record.type == 'update')\n continue;\n\n if (record.type == 'add') {\n if (record.name in removed)\n delete removed[record.name];\n else\n added[record.name] = true;\n\n continue;\n }\n\n // type = 'delete'\n if (record.name in added) {\n delete added[record.name];\n delete oldValues[record.name];\n } else {\n removed[record.name] = true;\n }\n }\n\n for (var prop in added)\n added[prop] = object[prop];\n\n for (var prop in removed)\n removed[prop] = undefined;\n\n var changed = {};\n for (var prop in oldValues) {\n if (prop in added || prop in removed)\n continue;\n\n var newValue = object[prop];\n if (oldValues[prop] !== newValue)\n changed[prop] = newValue;\n }\n\n return {\n added: added,\n removed: removed,\n changed: changed\n };\n }\n\n // Export the observe-js object for **Node.js**, with backwards-compatibility\n // for the old `require()` API. Also ensure `exports` is not a DOM Element.\n // If we're in the browser, export as a global object.\n\n global.Observer = Observer;\n global.isBlacklisted = isBlacklisted;\n global.Observer.runEOM_ = runEOM;\n global.Observer.observerSentinel_ = observerSentinel; // for testing.\n global.Observer.hasObjectObserve = hasObserve;\n global.diffObjectFromOldObject = diffObjectFromOldObject;\n global.ObjectObserver = ObjectObserver;\n\n})(exports);\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./lib/observe-js/observe.js\n ** module id = 29\n ** module chunks = 0\n **/","var randHex = require('./randHex');\nvar choice = require('./choice');\n\n /**\n * Returns pseudo-random guid (UUID v4)\n * IMPORTANT: it's not totally \"safe\" since randHex/choice uses Math.random\n * by default and sequences can be predicted in some cases. See the\n * \"random/random\" documentation for more info about it and how to replace\n * the default PRNG.\n */\n function guid() {\n return (\n randHex(8)+'-'+\n randHex(4)+'-'+\n // v4 UUID always contain \"4\" at this position to specify it was\n // randomly generated\n '4' + randHex(3) +'-'+\n // v4 UUID always contain chars [a,b,8,9] at this position\n choice(8, 9, 'a', 'b') + randHex(3)+'-'+\n randHex(12)\n );\n }\n module.exports = guid;\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/random/guid.js\n ** module id = 30\n ** module chunks = 0\n **/","var choice = require('./choice');\n\n var _chars = '0123456789abcdef'.split('');\n\n /**\n * Returns a random hexadecimal string\n */\n function randHex(size){\n size = size && size > 0? size : 6;\n var str = '';\n while (size--) {\n str += choice(_chars);\n }\n return str;\n }\n\n module.exports = randHex;\n\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/random/randHex.js\n ** module id = 31\n ** module chunks = 0\n **/","var randInt = require('./randInt');\nvar isArray = require('../lang/isArray');\n\n /**\n * Returns a random element from the supplied arguments\n * or from the array (if single argument is an array).\n */\n function choice(items) {\n var target = (arguments.length === 1 && isArray(items))? items : arguments;\n return target[ randInt(0, target.length - 1) ];\n }\n\n module.exports = choice;\n\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/random/choice.js\n ** module id = 32\n ** module chunks = 0\n **/","var MIN_INT = require('../number/MIN_INT');\nvar MAX_INT = require('../number/MAX_INT');\nvar rand = require('./rand');\n\n /**\n * Gets random integer inside range or snap to min/max values.\n */\n function randInt(min, max){\n min = min == null? MIN_INT : ~~min;\n max = max == null? MAX_INT : ~~max;\n // can't be max + 0.5 otherwise it will round up if `rand`\n // returns `max` causing it to overflow range.\n // -0.5 and + 0.49 are required to avoid bias caused by rounding\n return Math.round( rand(min - 0.5, max + 0.499999999999) );\n }\n\n module.exports = randInt;\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/random/randInt.js\n ** module id = 33\n ** module chunks = 0\n **/","/**\n * @constant Minimum 32-bit signed integer value (-2^31).\n */\n\n module.exports = -2147483648;\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/number/MIN_INT.js\n ** module id = 34\n ** module chunks = 0\n **/","/**\n * @constant Maximum 32-bit signed integer value. (2^31 - 1)\n */\n\n module.exports = 2147483647;\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/number/MAX_INT.js\n ** module id = 35\n ** module chunks = 0\n **/","var random = require('./random');\nvar MIN_INT = require('../number/MIN_INT');\nvar MAX_INT = require('../number/MAX_INT');\n\n /**\n * Returns random number inside range\n */\n function rand(min, max){\n min = min == null? MIN_INT : min;\n max = max == null? MAX_INT : max;\n return min + (max - min) * random();\n }\n\n module.exports = rand;\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/random/rand.js\n ** module id = 36\n ** module chunks = 0\n **/","\n\n /**\n * Just a wrapper to Math.random. No methods inside mout/random should call\n * Math.random() directly so we can inject the pseudo-random number\n * generator if needed (ie. in case we need a seeded random or a better\n * algorithm than the native one)\n */\n function random(){\n return random.get();\n }\n\n // we expose the method so it can be swapped if needed\n random.get = Math.random;\n\n module.exports = random;\n\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/random/random.js\n ** module id = 37\n ** module chunks = 0\n **/","var isKind = require('./isKind');\n /**\n */\n var isArray = Array.isArray || function (val) {\n return isKind(val, 'Array');\n };\n module.exports = isArray;\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/lang/isArray.js\n ** module id = 38\n ** module chunks = 0\n **/","var kindOf = require('./kindOf');\n /**\n * Check if value is from a specific \"kind\".\n */\n function isKind(val, kind){\n return kindOf(val) === kind;\n }\n module.exports = isKind;\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/lang/isKind.js\n ** module id = 39\n ** module chunks = 0\n **/","\n\n var _rKind = /^\\[object (.*)\\]$/,\n _toString = Object.prototype.toString,\n UNDEF;\n\n /**\n * Gets the \"kind\" of value. (e.g. \"String\", \"Number\", etc)\n */\n function kindOf(val) {\n if (val === null) {\n return 'Null';\n } else if (val === UNDEF) {\n return 'Undefined';\n } else {\n return _rKind.exec( _toString.call(val) )[1];\n }\n }\n module.exports = kindOf;\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/lang/kindOf.js\n ** module id = 40\n ** module chunks = 0\n **/","import DSUtils from '../../utils'\nimport DSErrors from '../../errors'\n\nlet {NER, IA, R} = DSErrors\nconst fakeId = `DS_${new Date().getTime()}`\n\nfunction diffIsEmpty (diff) {\n return !(DSUtils.isEmpty(diff.added) &&\n DSUtils.isEmpty(diff.removed) &&\n DSUtils.isEmpty(diff.changed))\n}\n\nfunction check (fnName, resourceName, id, options) {\n let _this = this\n let definition = _this.definitions[resourceName]\n options = options || {}\n\n id = DSUtils.resolveId(definition, id)\n if (!definition) {\n throw new NER(resourceName)\n } else if (!DSUtils._sn(id)) {\n throw DSUtils._snErr('id')\n }\n id = id === fakeId ? undefined : id\n\n options = DSUtils._(definition, options)\n\n options.logFn(fnName, id, options)\n\n return {_this, definition, _resourceName: resourceName, _id: id, _options: options}\n}\n\nexport default {\n // Return the changes for the given item, if any.\n //\n // @param resourceName The name of the type of resource of the item whose changes are to be returned.\n // @param id The primary key of the item whose changes are to be returned.\n // @param options Optional configuration.\n // @param options.ignoredChanges Array of strings or regular expressions of fields, the changes of which are to be ignored.\n // @returns The changes of the given item, if any.\n changes (resourceName, id, options) {\n let {_this, definition, _resourceName, _id, _options} = check.call(this, 'changes', resourceName, id, options)\n\n let item = definition.get(_id)\n if (item) {\n let observer = _this.store[_resourceName].observers[_id]\n if (observer && typeof observer === 'function') {\n // force observation handler to be fired for item if there are changes and `Object.observe` is not available\n observer.deliver()\n }\n\n let ignoredChanges = _options.ignoredChanges || []\n // add linked relations to list of ignored changes\n DSUtils.forEach(definition.relationFields, function (field) {\n if (!DSUtils.contains(ignoredChanges, field)) {\n ignoredChanges.push(field)\n }\n })\n // calculate changes\n let diff = DSUtils.diffObjectFromOldObject(item, _this.store[_resourceName].previousAttributes[_id], DSUtils.equals, ignoredChanges)\n // remove functions from diff\n DSUtils.forOwn(diff, function (changeset, name) {\n let toKeep = []\n DSUtils.forOwn(changeset, function (value, field) {\n if (!DSUtils.isFunction(value)) {\n toKeep.push(field)\n }\n })\n diff[name] = DSUtils.pick(diff[name], toKeep)\n })\n // definitely ignore changes to linked relations\n DSUtils.forEach(definition.relationFields, function (field) {\n delete diff.added[field]\n delete diff.removed[field]\n delete diff.changed[field]\n })\n return diff\n }\n },\n\n // Return the change history of the given item, if any.\n //\n // @param resourceName The name of the type of resource of the item whose change history is to be returned.\n // @param id The primary key of the item whose change history is to be returned.\n // @returns The change history of the given item, if any.\n changeHistory (resourceName, id) {\n let {_this, definition, _resourceName, _id} = check.call(this, 'changeHistory', resourceName, id || fakeId)\n let resource = _this.store[_resourceName]\n\n if (!definition.keepChangeHistory) {\n definition.errorFn('changeHistory is disabled for this resource!')\n } else {\n if (_resourceName) {\n let item = definition.get(_id)\n if (item) {\n return resource.changeHistories[_id]\n }\n } else {\n return resource.changeHistory\n }\n }\n },\n\n commit (resourceName, id) {\n let {_this, definition, _resourceName, _id} = check.call(this, 'commit', resourceName, id)\n let resource = _this.store[_resourceName]\n let item = _this.store[_resourceName].index[_id]\n if (item) {\n const relationFields = definition.relationFields || []\n const previousAttributes = {}\n for (let key in item) {\n if (relationFields.indexOf(key) === -1) {\n previousAttributes[key] = DSUtils.copy(item[key], null, null, null, [])\n }\n }\n resource.previousAttributes[_id] = previousAttributes\n }\n\n if (resource.changeHistories[_id].length) {\n DSUtils.forEach(resource.changeHistories[_id], function (changeRecord) {\n DSUtils.remove(resource.changeHistory, changeRecord)\n })\n resource.changeHistories[_id].splice(0, resource.changeHistories[_id].length)\n }\n return item\n },\n\n // Re-compute the computed properties of the given item.\n //\n // @param resourceName The name of the type of resource of the item whose computed properties are to be re-computed.\n // @param instance The instance whose computed properties are to be re-computed.\n // @returns The item whose computed properties were re-computed.\n compute (resourceName, instance) {\n let _this = this\n let definition = _this.definitions[resourceName]\n\n instance = DSUtils.resolveItem(_this.store[resourceName], instance)\n if (!definition) {\n throw new NER(resourceName)\n } else if (!instance) {\n throw new R('Item not in the store!')\n } else if (!DSUtils._o(instance) && !DSUtils._sn(instance)) {\n throw new IA('\"instance\" must be an object, string or number!')\n }\n\n definition.logFn('compute', instance)\n\n // re-compute all computed properties\n DSUtils.forOwn(definition.computed, function (fn, field) {\n DSUtils.compute.call(instance, fn, field)\n })\n return instance\n },\n\n // Factory function to create an instance of the specified Resource.\n //\n // @param resourceName The name of the type of resource of which to create an instance.\n // @param attrs Hash of properties with which to initialize the instance.\n // @param options Optional configuration.\n // @param options.defaultValues Default values with which to initialize the instance.\n // @returns The new instance.\n createInstance (resourceName, attrs, options) {\n let definition = this.definitions[resourceName]\n let item\n\n attrs = attrs || {}\n\n if (!definition) {\n throw new NER(resourceName)\n } else if (attrs && !DSUtils.isObject(attrs)) {\n throw new IA('\"attrs\" must be an object!')\n }\n\n options = DSUtils._(definition, options)\n\n const relationList = definition.relationList || []\n if (relationList.length) {\n DSUtils.forEach(relationList, function (def) {\n const relationData = DSUtils.get(attrs, def.localField)\n if (relationData) {\n if (DSUtils.isArray(relationData)) {\n const array = []\n const Resource = definition.getResource(def.relation)\n const _options = options.orig()\n DSUtils.forEach(relationData, function (relationDataItem) {\n array.push(Resource.createInstance(relationDataItem, _options))\n })\n DSUtils.set(attrs, def.localField, array)\n } else if (DSUtils.isObject(relationData)) {\n DSUtils.set(attrs, def.localField, definition.getResource(def.relation).createInstance(relationData, options.orig()))\n }\n }\n })\n }\n\n options.logFn('createInstance', attrs, options)\n\n // lifecycle\n options.beforeCreateInstance(options, attrs)\n\n // grab instance constructor function from Resource definition\n let Constructor = definition[definition.class]\n\n // create instance\n item = new Constructor()\n\n if (definition.instanceEvents) {\n DSUtils.Events(item)\n }\n\n // add default values\n if (options.defaultValues) {\n DSUtils.deepMixIn(item, DSUtils.copy(options.defaultValues))\n }\n DSUtils.deepMixIn(item, attrs)\n\n // compute computed properties\n if (definition.computed) {\n definition.compute(item)\n }\n // lifecycle\n options.afterCreateInstance(options, item)\n return item\n },\n\n // Create a new collection of the specified Resource.\n //\n // @param resourceName The name of the type of resource of which to create a collection\n // @param arr Possibly empty array of data from which to create the collection.\n // @param params The criteria by which to filter items. Will be passed to `DS#findAll` if `fetch` is called. See http://www.js-data.io/docs/query-syntax\n // @param options Optional configuration.\n // @param options.notify Whether to call the beforeCreateCollection and afterCreateCollection lifecycle hooks..\n // @returns The new collection.\n createCollection (resourceName, arr, params, options) {\n let _this = this\n let definition = _this.definitions[resourceName]\n\n arr = arr || []\n params = params || {}\n\n if (!definition) {\n throw new NER(resourceName)\n } else if (arr && !DSUtils.isArray(arr)) {\n throw new IA('\"arr\" must be an array!')\n }\n\n options = DSUtils._(definition, options)\n\n options.logFn('createCollection', arr, options)\n\n // lifecycle\n options.beforeCreateCollection(options, arr)\n\n // define the API for this collection\n Object.defineProperties(arr, {\n // Call DS#findAll with the params of this collection, filling the collection with the results.\n fetch: {\n value: function (params, options) {\n let __this = this\n __this.params = params || __this.params\n return definition.findAll(__this.params, options).then(function (data) {\n if (data === __this) {\n return __this\n }\n data.unshift(__this.length)\n data.unshift(0)\n __this.splice.apply(__this, data)\n data.shift()\n data.shift()\n if (data.$$injected) {\n _this.store[resourceName].queryData[DSUtils.toJson(__this.params)] = __this\n __this.$$injected = true\n }\n return __this\n })\n }\n },\n // params for this collection. See http://www.js-data.io/docs/query-syntax\n params: {\n value: params,\n writable: true\n },\n // name of the resource type of this collection\n resourceName: {\n value: resourceName\n }\n })\n\n // lifecycle\n options.afterCreateCollection(options, arr)\n return arr\n },\n defineResource: require('./defineResource'),\n digest () {\n this.observe.Platform.performMicrotaskCheckpoint()\n },\n eject: require('./eject'),\n ejectAll: require('./ejectAll'),\n filter: require('./filter'),\n\n // Return the item with the given primary key if its in the store.\n //\n // @param resourceName The name of the type of resource of the item to retrieve.\n // @param id The primary key of the item to retrieve.\n // @returns The item with the given primary key if it's in the store.\n // /\n get (resourceName, id) {\n let {_this, _resourceName, _id} = check.call(this, 'get', resourceName, id)\n\n // return the item if it exists\n return _this.store[_resourceName].index[_id]\n },\n\n // Return the items in the store that have the given primary keys.\n //\n // @param resourceName The name of the type of resource of the items to retrieve.\n // @param ids The primary keys of the items to retrieve.\n // @returns The items with the given primary keys if they're in the store.\n getAll (resourceName, ids) {\n let _this = this\n let definition = _this.definitions[resourceName]\n let resource = _this.store[resourceName]\n let collection = []\n\n if (!definition) {\n throw new NER(resourceName)\n } else if (ids && !DSUtils._a(ids)) {\n throw DSUtils._aErr('ids')\n }\n\n definition.logFn('getAll', ids)\n\n if (DSUtils._a(ids)) {\n // return just the items with the given primary keys\n let length = ids.length\n for (var i = 0; i < length; i++) {\n if (resource.index[ids[i]]) {\n collection.push(resource.index[ids[i]])\n }\n }\n } else {\n // most efficient of retrieving ALL items from the store\n collection = resource.collection.slice()\n }\n\n return collection\n },\n\n // Return the whether the item with the given primary key has any changes.\n //\n // @param resourceName The name of the type of resource of the item.\n // @param id The primary key of the item.\n // @returns Whether the item with the given primary key has any changes.\n hasChanges (resourceName, id) {\n let {definition, _id} = check.call(this, 'hasChanges', resourceName, id)\n\n return definition.get(_id) ? diffIsEmpty(definition.changes(_id)) : false\n },\n inject: require('./inject'),\n\n // Return whether the item with the given primary key is a temporary item.\n //\n // @param resourceName The name of the type of resource of the item.\n // @param id The primary key of the item.\n // @returns Whether the item with the given primary key is a temporary item.\n isNew (resourceName, id) {\n let {_this, _resourceName, _id} = check.call(this, 'isNew', resourceName, id || fakeId)\n let resource = _this.store[_resourceName]\n\n return !!resource.temporaryItems[_id]\n },\n\n // Return the timestamp from the last time the item with the given primary key was changed.\n //\n // @param resourceName The name of the type of resource of the item.\n // @param id The primary key of the item.\n // @returns Timestamp from the last time the item was changed.\n lastModified (resourceName, id) {\n let {_this, _resourceName, _id} = check.call(this, 'lastModified', resourceName, id || fakeId)\n let resource = _this.store[_resourceName]\n\n if (_id) {\n if (!(_id in resource.modified)) {\n resource.modified[_id] = 0\n }\n return resource.modified[_id]\n }\n return resource.collectionModified\n },\n\n // Return the timestamp from the last time the item with the given primary key was saved via an adapter.\n //\n // @param resourceName The name of the type of resource of the item.\n // @param id The primary key of the item.\n // @returns Timestamp from the last time the item was saved.\n lastSaved (resourceName, id) {\n let {_this, _resourceName, _id} = check.call(this, 'lastSaved', resourceName, id || fakeId)\n let resource = _this.store[_resourceName]\n\n if (!(_id in resource.saved)) {\n resource.saved[_id] = 0\n }\n return resource.saved[_id]\n },\n\n // Return the previous attributes of the item with the given primary key before it was changed.\n //\n // @param resourceName The name of the type of resource of the item.\n // @param id The primary key of the item.\n // @returns The previous attributes of the item\n previous (resourceName, id) {\n let {_this, _resourceName, _id} = check.call(this, 'previous', resourceName, id)\n let resource = _this.store[_resourceName]\n\n // return resource from cache\n return resource.previousAttributes[_id] ? DSUtils.copy(resource.previousAttributes[_id]) : undefined\n },\n\n // Revert all attributes of the item with the given primary key to their previous values.\n //\n // @param resourceName The name of the type of resource of the item.\n // @param id The primary key of the item.\n // @param options Optional configuration.\n // @returns The reverted item\n revert (resourceName, id, options) {\n let {_this, definition, _resourceName, _id, _options} = check.call(this, 'revert', resourceName, id, options)\n\n let preserve = _options.preserve || []\n let injectObj = {}\n\n if (preserve.length === 0) {\n injectObj = _this.previous(_resourceName, _id)\n } else {\n let instance = definition.get(id)\n let previousInstance = _this.previous(_resourceName, _id)\n\n if (!instance) { return }\n\n DSUtils.forOwn(instance, function (value, key) {\n if (DSUtils.contains(preserve, key)) {\n injectObj[key] = instance[key]\n } else {\n injectObj[key] = previousInstance[key]\n }\n })\n }\n\n return definition.inject(injectObj, {\n onConflict: 'replace'\n })\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/datastore/sync_methods/index.js\n **/","/* jshint evil:true, loopfunc:true */\nimport DSUtils from '../../utils'\nimport DSErrors from '../../errors'\n\n/**\n * These are DS methods that will be proxied by instances. e.g.\n *\n * var store = new JSData.DS()\n * var User = store.defineResource('user')\n * var user = User.createInstance({ id: 1 })\n *\n * store.update(resourceName, id, attrs[, options]) // DS method\n * User.update(id, attrs[, options]) // DS method proxied on a Resource\n * user.DSUpdate(attrs[, options]) // DS method proxied on an Instance\n */\nlet instanceMethods = [\n 'compute',\n 'eject',\n 'refresh',\n 'save',\n 'update',\n 'destroy',\n 'loadRelations',\n 'changeHistory',\n 'changes',\n 'commit',\n 'hasChanges',\n 'isNew',\n 'lastModified',\n 'lastSaved',\n 'previous',\n 'revert'\n]\n\nmodule.exports = function defineResource (definition) {\n let _this = this\n let definitions = _this.definitions\n\n /**\n * This allows the name-only definition shorthand.\n * store.defineResource('user') is the same as store.defineResource({ name: 'user'})\n */\n if (DSUtils._s(definition)) {\n definition = {\n name: definition.replace(/\\s/gi, '')\n }\n }\n if (!DSUtils._o(definition)) {\n throw DSUtils._oErr('definition')\n } else if (!DSUtils._s(definition.name)) {\n throw new DSErrors.IA('\"name\" must be a string!')\n } else if (definitions[definition.name]) {\n throw new DSErrors.R(`${definition.name} is already registered!`)\n }\n\n /**\n * Dynamic Resource constructor function.\n *\n * A Resource inherits from the defaults of the data store that created it.\n */\n function Resource (options) {\n this.defaultValues = {}\n this.methods = {}\n this.computed = {}\n this.scopes = {}\n this.actions = {}\n DSUtils.deepMixIn(this, options)\n let parent = _this.defaults\n if (definition.extends && definitions[definition.extends]) {\n parent = definitions[definition.extends]\n }\n DSUtils.fillIn(this.defaultValues, parent.defaultValues)\n DSUtils.fillIn(this.methods, parent.methods)\n DSUtils.fillIn(this.computed, parent.computed)\n DSUtils.fillIn(this.scopes, parent.scopes)\n DSUtils.fillIn(this.actions, parent.actions)\n this.endpoint = ('endpoint' in options) ? options.endpoint : this.name\n }\n\n try {\n // Resources can inherit from another resource instead of inheriting directly from the data store defaults.\n if (definition.extends && definitions[definition.extends]) {\n // Inherit from another resource\n Resource.prototype = definitions[definition.extends]\n } else {\n // Inherit from global defaults\n Resource.prototype = _this.defaults\n }\n definitions[definition.name] = new Resource(definition)\n\n var def = definitions[definition.name]\n\n def.getResource = function (resourceName) { return _this.definitions[resourceName] }\n\n def.logFn('Preparing resource.')\n\n if (!DSUtils._s(def.idAttribute)) {\n throw new DSErrors.IA('\"idAttribute\" must be a string!')\n }\n\n // Setup nested parent configuration\n if (def.relations) {\n def.relationList = []\n def.relationFields = []\n DSUtils.forOwn(def.relations, function (relatedModels, type) {\n DSUtils.forOwn(relatedModels, function (defs, relationName) {\n if (!DSUtils._a(defs)) {\n relatedModels[relationName] = [defs]\n }\n DSUtils.forEach(relatedModels[relationName], function (d) {\n d.type = type\n d.relation = relationName\n d.name = def.name\n def.relationList.push(d)\n if (d.localField) {\n def.relationFields.push(d.localField)\n }\n })\n })\n })\n if (def.relations.belongsTo) {\n def.parents = {}\n DSUtils.forOwn(def.relations.belongsTo, function (relatedModel, modelName) {\n DSUtils.forEach(relatedModel, function (relation) {\n if (relation.parent) {\n def.parent = modelName\n def.parentKey = relation.localKey\n def.parentField = relation.localField\n def.parents[modelName] = {\n key: def.parentKey,\n field: def.parentField\n }\n }\n })\n })\n }\n if (typeof Object.freeze === 'function') {\n Object.freeze(def.relations)\n Object.freeze(def.relationList)\n }\n }\n\n // Create the wrapper class for the new resource\n var _class = def['class'] = DSUtils.pascalCase(def.name)\n try {\n if (typeof def.useClass === 'function') {\n if (def.csp) {\n def[_class] = function () { def.useClass.call(this) }\n } else {\n def[_class] = new Function('def', `return function ${_class}() { def.useClass.call(this); }`)(def) // eslint-disable-line\n }\n def[_class].prototype = (function (proto) {\n function Ctor () {\n }\n\n Ctor.prototype = proto\n return new Ctor()\n })(def.useClass.prototype)\n } else if (def.csp) {\n def[_class] = function () { }\n } else {\n def[_class] = new Function(`return function ${_class}() {}`)() // eslint-disable-line\n }\n } catch (e) {\n def[_class] = function () {}\n }\n\n // Apply developer-defined instance methods\n DSUtils.forOwn(def.methods, function (fn, m) {\n def[_class].prototype[m] = fn\n })\n\n /**\n * var user = User.createInstance({ id: 1 })\n * user.set('foo', 'bar')\n */\n def[_class].prototype.set = function (key, value) {\n DSUtils.set(this, key, value)\n def.compute(this)\n if (def.instanceEvents) {\n setTimeout(() => {\n this.emit('DS.change', def, this)\n }, 0)\n }\n def.handleChange(this)\n return this\n }\n\n /**\n * var user = User.createInstance({ id: 1 })\n * user.get('id') // 1\n */\n def[_class].prototype.get = function (key) {\n return DSUtils.get(this, key)\n }\n\n // Setup the relation links\n DSUtils.applyRelationGettersToTarget(_this, def, def[_class].prototype)\n\n let parentOmit = null\n if (!def.hasOwnProperty('omit')) {\n parentOmit = def.omit\n def.omit = []\n } else {\n parentOmit = _this.defaults.omit\n }\n def.omit = def.omit.concat(parentOmit || [])\n\n // Prepare for computed properties\n DSUtils.forOwn(def.computed, function (fn, field) {\n if (DSUtils.isFunction(fn)) {\n def.computed[field] = [fn]\n fn = def.computed[field]\n }\n if (def.methods && field in def.methods) {\n def.errorFn(`Computed property \"${field}\" conflicts with previously defined prototype method!`)\n }\n def.omit.push(field)\n if (DSUtils.isArray(fn)) {\n var deps\n if (fn.length === 1) {\n let match = fn[0].toString().match(/function.*?\\(([\\s\\S]*?)\\)/)\n deps = match[1].split(',')\n deps = DSUtils.filter(deps, function (x) { return x })\n def.computed[field] = deps.concat(fn)\n fn = def.computed[field]\n if (deps.length) {\n def.errorFn('Use the computed property array syntax for compatibility with minified code!')\n }\n }\n deps = fn.slice(0, fn.length - 1)\n DSUtils.forEach(deps, function (val, index) {\n deps[index] = val.trim()\n })\n fn.deps = DSUtils.filter(deps, function (dep) {\n return !!dep\n })\n } else if (DSUtils.isObject(fn)) {\n Object.defineProperty(def[_class].prototype, field, fn)\n }\n })\n\n // add instance proxies of DS methods\n DSUtils.forEach(instanceMethods, function (name) {\n def[_class].prototype[`DS${DSUtils.pascalCase(name)}`] = function (...args) {\n args.unshift(this[def.idAttribute] || this)\n args.unshift(def.name)\n return _this[name].apply(_this, args)\n }\n })\n\n // manually add instance proxy for DS#create\n def[_class].prototype.DSCreate = function (...args) {\n args.unshift(this)\n args.unshift(def.name)\n return _this.create.apply(_this, args)\n }\n\n // Initialize store data for the new resource\n _this.store[def.name] = {\n collection: [],\n expiresHeap: new DSUtils.BinaryHeap(function (x) { return x.expires }, function (x, y) { return x.item === y }),\n completedQueries: {},\n queryData: {},\n pendingQueries: {},\n index: {},\n modified: {},\n saved: {},\n previousAttributes: {},\n observers: {},\n changeHistories: {},\n changeHistory: [],\n collectionModified: 0,\n temporaryItems: {}\n }\n\n let resource = _this.store[def.name]\n\n // start the reaping\n if (def.reapInterval) {\n setInterval(() => def.reap(), def.reapInterval)\n }\n\n // proxy DS methods with shorthand ones\n let fns = ['registerAdapter', 'getAdapterName', 'getAdapter', 'is', '!clear']\n for (let key in _this) {\n if (typeof _this[key] === 'function') {\n fns.push(key)\n }\n }\n\n /**\n * Create the Resource shorthands that proxy DS methods. e.g.\n *\n * var store = new JSData.DS()\n * var User = store.defineResource('user')\n *\n * store.update(resourceName, id, attrs[, options]) // DS method\n * User.update(id, attrs[, options]) // DS method proxied on a Resource\n */\n DSUtils.forEach(fns, function (key) {\n let k = key\n if (k[0] === '!') {\n return\n }\n if (_this[k].shorthand !== false) {\n def[k] = function (...args) {\n args.unshift(def.name)\n return _this[k].apply(_this, args)\n }\n def[k].before = function (fn) {\n let orig = def[k]\n def[k] = function (...args) {\n return orig.apply(def, fn.apply(def, args) || args)\n }\n }\n } else {\n def[k] = function (...args) { return _this[k].apply(_this, args) }\n }\n })\n\n def.beforeValidate = DSUtils.promisify(def.beforeValidate)\n def.validate = DSUtils.promisify(def.validate)\n def.afterValidate = DSUtils.promisify(def.afterValidate)\n def.beforeCreate = DSUtils.promisify(def.beforeCreate)\n def.afterCreate = DSUtils.promisify(def.afterCreate)\n def.afterFind = DSUtils.promisify(def.afterFind)\n def.afterFindAll = DSUtils.promisify(def.afterFindAll)\n def.afterLoadRelations = DSUtils.promisify(def.afterLoadRelations)\n def.beforeUpdate = DSUtils.promisify(def.beforeUpdate)\n def.afterUpdate = DSUtils.promisify(def.afterUpdate)\n def.beforeDestroy = DSUtils.promisify(def.beforeDestroy)\n def.afterDestroy = DSUtils.promisify(def.afterDestroy)\n\n let defaultAdapter\n if (def.hasOwnProperty('defaultAdapter')) {\n defaultAdapter = def.defaultAdapter\n }\n\n // setup \"actions\"\n DSUtils.forOwn(def.actions, function (action, name) {\n if (def[name] && !def.actions[name]) {\n throw new Error(`Cannot override existing method \"${name}\"!`)\n }\n action.request = action.request || function (config) { return config }\n action.response = action.response || function (response) { return response }\n action.responseError = action.responseError || function (err) { return DSUtils.Promise.reject(err) }\n def[name] = function (id, options) {\n if (DSUtils._o(id)) {\n options = id\n }\n options = options || {}\n let adapter = def.getAdapter(action.adapter || defaultAdapter || 'http')\n let config = DSUtils.deepMixIn({}, action)\n if (!options.hasOwnProperty('endpoint') && config.endpoint) {\n options.endpoint = config.endpoint\n }\n if (typeof options.getEndpoint === 'function') {\n config.url = options.getEndpoint(def, options)\n } else {\n let args = [options.basePath || def.basePath || adapter.defaults.basePath, adapter.getEndpoint(def, DSUtils._sn(id) ? id : null, options)]\n if (DSUtils._sn(id)) {\n args.push(id)\n }\n args.push(action.pathname || name)\n config.url = DSUtils.makePath.apply(null, args)\n }\n config.method = config.method || 'GET'\n config.resourceName = def.name\n DSUtils.deepMixIn(config, options)\n return new DSUtils.Promise(function (resolve) { return resolve(config) })\n .then(options.request || action.request)\n .then(function (config) { return adapter.HTTP(config) })\n .then(function (data) {\n if (data && data.config) {\n data.config.resourceName = def.name\n }\n return data\n })\n .then(options.response || action.response, options.responseError || action.responseError)\n }\n })\n\n // mix in events\n DSUtils.Events(def)\n\n def.handleChange = function (data) {\n resource.collectionModified = DSUtils.updateTimestamp(resource.collectionModified)\n if (def.notify) {\n setTimeout(() => {\n def.emit('DS.change', def, data)\n }, 0)\n }\n }\n\n def.logFn('Done preparing resource.')\n\n return def\n } catch (err) {\n _this.defaults.errorFn(err)\n delete definitions[definition.name]\n delete _this.store[definition.name]\n throw err\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/datastore/sync_methods/defineResource.js\n **/","/* jshint eqeqeq:false */\n/**\n * Eject an item from the store, if it is currently in the store.\n *\n * @param resourceName The name of the resource type of the item eject.\n * @param id The primary key of the item to eject.\n * @param options Optional configuration.\n * @param options.notify Whether to emit the \"DS.beforeEject\" and \"DS.afterEject\" events\n * @param options.clearEmptyQueries Whether to remove cached findAll queries that become empty as a result of this method call.\n * @returns The ejected item if one was ejected.\n */\nmodule.exports = function eject (resourceName, id, options) {\n let _this = this\n let DSUtils = _this.utils\n let definition = _this.definitions[resourceName]\n let resource = _this.store[resourceName]\n let item\n let found = false\n\n id = DSUtils.resolveId(definition, id)\n\n if (!definition) {\n throw new _this.errors.NER(resourceName)\n } else if (!DSUtils._sn(id)) {\n throw DSUtils._snErr('id')\n }\n\n options = DSUtils._(definition, options)\n\n options.logFn('eject', id, options)\n\n // find the item to eject\n for (var i = 0; i < resource.collection.length; i++) {\n if (resource.collection[i][definition.idAttribute] == id) { // eslint-disable-line\n item = resource.collection[i]\n // remove its expiration timestamp\n resource.expiresHeap.remove(item)\n found = true\n break\n }\n }\n if (found) {\n // lifecycle\n definition.beforeEject(options, item)\n if (options.notify) {\n definition.emit('DS.beforeEject', definition, item)\n }\n\n // find the item in any ($$injected) cached queries\n let toRemove = []\n DSUtils.forOwn(resource.queryData, function (items, queryHash) {\n if (items.$$injected) {\n DSUtils.remove(items, item)\n }\n // optionally remove any empty queries\n if (!items.length && options.clearEmptyQueries) {\n toRemove.push(queryHash)\n }\n })\n\n // clean up\n DSUtils.forEach(resource.changeHistories[id], function (changeRecord) {\n DSUtils.remove(resource.changeHistory, changeRecord)\n })\n DSUtils.forEach(toRemove, function (queryHash) {\n delete resource.completedQueries[queryHash]\n delete resource.queryData[queryHash]\n })\n if (resource.observers[id] && typeof resource.observers[id].close === 'function') {\n // stop observation\n resource.observers[id].close()\n }\n delete resource.observers[id]\n delete resource.index[id]\n delete resource.previousAttributes[id]\n delete resource.completedQueries[id]\n delete resource.pendingQueries[id]\n delete resource.changeHistories[id]\n delete resource.modified[id]\n delete resource.saved[id]\n if (definition.instanceEvents && item.off) {\n item.off()\n }\n\n // remove it from the store\n resource.collection.splice(i, 1)\n // collection has been modified\n definition.handleChange(item)\n\n // lifecycle\n definition.afterEject(options, item)\n if (options.notify) {\n definition.emit('DS.afterEject', definition, item)\n }\n\n return item\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/datastore/sync_methods/eject.js\n **/","/**\n * Eject a collection of items from the store, if any items currently in the store match the given criteria.\n *\n * @param resourceName The name of the resource type of the items eject.\n * @param params The criteria by which to match items to eject. See http://www.js-data.io/docs/query-syntax\n * @param options Optional configuration.\n * @returns The collection of items that were ejected, if any.\n */\nmodule.exports = function ejectAll (resourceName, params, options) {\n let _this = this\n let DSUtils = _this.utils\n let definition = _this.definitions[resourceName]\n params = params || {}\n\n if (!definition) {\n throw new _this.errors.NER(resourceName)\n } else if (!DSUtils._o(params)) {\n throw DSUtils._oErr('params')\n }\n\n options = DSUtils._(definition, options)\n definition.logFn('ejectAll', params, options)\n\n DSUtils.applyScope(definition, params, options)\n\n let resource = _this.store[resourceName]\n let queryHash = DSUtils.toJson(params)\n\n // get items that match the criteria\n let items\n\n if (DSUtils.isEmpty(params)) {\n items = definition.getAll()\n // remove all completed queries if ejecting all items\n resource.completedQueries = {}\n } else {\n items = definition.filter(params)\n // remove matching completed query, if any\n delete resource.completedQueries[queryHash]\n }\n // prepare to remove matching items\n DSUtils.forEach(items, function (item) {\n if (item && item[definition.idAttribute]) {\n definition.eject(item[definition.idAttribute], options)\n }\n })\n // collection has been modified\n definition.handleChange(items)\n return items\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/datastore/sync_methods/ejectAll.js\n **/","/**\n * Return the subset of items currently in the store that match the given criteria.\n *\n * The actual filtering is delegated to DS#defaults.defaultFilter, which can be overridden by developers.\n *\n * @param resourceName The name of the resource type of the items to filter.\n * @param params The criteria by which to filter items. See http://www.js-data.io/docs/query-syntax\n * @param options Optional configuration.\n * @returns Matching items.\n */\nmodule.exports = function filter (resourceName, params, options) {\n let _this = this\n let DSUtils = _this.utils\n let definition = _this.definitions[resourceName]\n\n if (!definition) {\n throw new _this.errors.NER(resourceName)\n } else if (params && !DSUtils._o(params)) {\n throw DSUtils._oErr('params')\n }\n\n // Protect against null\n params = params || {}\n options = DSUtils._(definition, options)\n options.logFn('filter', params, options)\n\n DSUtils.applyScope(definition, params, options)\n\n // delegate filtering to DS#defaults.defaultFilter, which can be overridden by developers.\n return definition.defaultFilter.call(_this, _this.store[resourceName].collection, resourceName, params, options)\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/datastore/sync_methods/filter.js\n **/","import DSUtils from '../../utils'\nimport DSErrors from '../../errors'\n\n/**\n * This is a beast of a file, but it's where a significant portion of the magic happens.\n *\n * DS#inject makes up the core of how data gets into the store.\n */\n\n/**\n * This factory function produces an observer handler function tailor-made for the current item being injected.\n *\n * The observer handler is what allows computed properties and change tracking to function.\n *\n * @param definition Resource definition produced by DS#defineResource\n * @param resource Resource data as internally stored by the data store\n * @returns {Function} Observer handler function\n * @private\n */\nfunction makeObserverHandler (definition, resource) {\n var DS = this\n\n // using \"var\" avoids a JSHint error\n var name = definition.name\n\n /**\n * This will be called by observe-js when a new change record is available for the observed object\n *\n * @param added Change record for added properties\n * @param removed Change record for removed properties\n * @param changed Change record for changed properties\n * @param oldValueFn Function that can be used to get the previous value of a changed property\n * @param firstTime Whether this is the first time this function is being called for the given item. Will only be true once.\n */\n return function _react (added, removed, changed, oldValueFn, firstTime) {\n let target = this\n let item\n\n // Get the previous primary key of the observed item, in-case some knucklehead changed it\n let innerId = (oldValueFn && oldValueFn(definition.idAttribute)) ? oldValueFn(definition.idAttribute) : target[definition.idAttribute]\n\n // Ignore changes to relation links\n DSUtils.forEach(definition.relationFields, function (field) {\n delete added[field]\n delete removed[field]\n delete changed[field]\n })\n\n // Detect whether there are actually any changes\n if (!DSUtils.isEmpty(added) || !DSUtils.isEmpty(removed) || !DSUtils.isEmpty(changed) || firstTime) {\n item = DS.get(name, innerId)\n\n // update item and collection \"modified\" timestamps\n resource.modified[innerId] = DSUtils.updateTimestamp(resource.modified[innerId])\n\n if (item && definition.instanceEvents) {\n setTimeout(function () {\n item.emit('DS.change', definition, item)\n }, 0)\n }\n\n definition.handleChange(item)\n\n // Save a change record for the item\n if (definition.keepChangeHistory) {\n let changeRecord = {\n resourceName: name,\n target: item,\n added,\n removed,\n changed,\n timestamp: resource.modified[innerId]\n }\n resource.changeHistories[innerId].push(changeRecord)\n resource.changeHistory.push(changeRecord)\n }\n }\n\n // Recompute computed properties if any computed properties depend on changed properties\n if (definition.computed) {\n item = item || DS.get(name, innerId)\n DSUtils.forOwn(definition.computed, function (fn, field) {\n if (DSUtils._o(fn)) {\n return\n }\n let compute = false\n // check if required fields changed\n DSUtils.forEach(fn.deps, function (dep) {\n if (dep in added || dep in removed || dep in changed || !(field in item)) {\n compute = true\n }\n })\n compute = compute || !fn.deps.length\n if (compute) {\n DSUtils.compute.call(item, fn, field)\n }\n })\n }\n\n if (definition.idAttribute in changed) {\n definition.errorFn(`Doh! You just changed the primary key of an object! Your data for the \"${name}\" resource is now in an undefined (probably broken) state.`)\n }\n }\n}\n\n/**\n * A recursive function for injecting data into the store.\n *\n * @param definition Resource definition produced by DS#defineResource\n * @param resource Resource data as internally stored by the data store\n * @param attrs The data to be injected. Will be an object or an array of objects.\n * @param options Optional configuration.\n * @returns The injected data\n * @private\n */\nfunction _inject (definition, resource, attrs, options) {\n let _this = this\n let injected\n\n if (DSUtils._a(attrs)) {\n // have an array of objects, go ahead and inject each one individually and return the resulting array\n injected = []\n for (var i = 0; i < attrs.length; i++) {\n injected.push(_inject.call(_this, definition, resource, attrs[i], options))\n }\n } else {\n // check if \"idAttribute\" is a computed property\n let c = definition.computed\n let idA = definition.idAttribute\n // compute the primary key if necessary\n if (c && c[idA]) {\n let args = []\n DSUtils.forEach(c[idA].deps, function (dep) {\n args.push(attrs[dep])\n })\n attrs[idA] = c[idA][c[idA].length - 1].apply(attrs, args)\n } else if (options.temporary) {\n attrs[idA] = DSUtils.guid()\n }\n\n if (!(idA in attrs)) {\n let error = new DSErrors.R(`${definition.name}.inject: \"attrs\" must contain the property specified by \"idAttribute\"!`)\n options.errorFn(error)\n throw error\n } else {\n try {\n // when injecting object that contain their nested relations, this code\n // will recursively inject them into their proper places in the data store.\n // Magic!\n DSUtils.forEach(definition.relationList, function (def) {\n let relationName = def.relation\n let relationDef = _this.definitions[relationName]\n let toInject = attrs[def.localField]\n if (typeof def.inject === 'function') {\n def.inject(definition, def, attrs)\n } else if (toInject && def.inject !== false) {\n if (!relationDef) {\n throw new DSErrors.R(`${definition.name} relation is defined but the resource is not!`)\n }\n // handle injecting hasMany relations\n if (DSUtils._a(toInject)) {\n let items = []\n DSUtils.forEach(toInject, function (toInjectItem) {\n if (toInjectItem !== _this.store[relationName].index[toInjectItem[relationDef.idAttribute]]) {\n try {\n let injectedItem = relationDef.inject(toInjectItem, options.orig())\n if (def.foreignKey) {\n DSUtils.set(injectedItem, def.foreignKey, attrs[definition.idAttribute])\n }\n items.push(injectedItem)\n } catch (err) {\n options.errorFn(err, `Failed to inject ${def.type} relation: \"${relationName}\"!`)\n }\n }\n })\n } else {\n // handle injecting belongsTo and hasOne relations\n if (toInject !== _this.store[relationName].index[toInject[relationDef.idAttribute]]) {\n try {\n let injected = relationDef.inject(attrs[def.localField], options.orig())\n if (def.foreignKey) {\n DSUtils.set(injected, def.foreignKey, attrs[definition.idAttribute])\n }\n if (def.localKey) {\n DSUtils.set(attrs, def.localKey, DSUtils.get(injected, relationDef.idAttribute))\n }\n } catch (err) {\n options.errorFn(err, `Failed to inject ${def.type} relation: \"${relationName}\"!`)\n }\n }\n }\n }\n })\n\n // primary key of item being injected\n let id = attrs[idA]\n // item being injected\n let item = definition.get(id)\n // 0 if the item is new, otherwise the previous last modified timestamp of the item\n let initialLastModified = item ? resource.modified[id] : 0\n\n // item is new\n if (!item) {\n if (attrs instanceof definition[definition['class']]) {\n item = attrs\n } else {\n item = new definition[definition['class']]()\n if (options.applyDefaultsOnInject && options.defaultValues) {\n DSUtils.deepMixIn(item, DSUtils.copy(options.defaultValues))\n }\n }\n\n if (definition.instanceEvents && typeof item.emit !== 'function') {\n DSUtils.Events(item)\n }\n // remove relation properties from the item, since those relations have been injected by now\n DSUtils.forEach(definition.relationList, function (def) {\n if (typeof def.link === 'boolean' ? def.link : !!definition.linkRelations) {\n delete attrs[def.localField]\n }\n })\n\n // copy remaining properties to the injected item\n DSUtils.deepMixIn(item, attrs)\n\n // add item to collection\n resource.collection.push(item)\n resource.changeHistories[id] = []\n\n // create the observer handler for the data to be injected\n let _react = makeObserverHandler.call(_this, definition, resource)\n\n // If we're in the browser, start observation\n if (definition.watchChanges) {\n resource.observers[id] = new _this.observe.ObjectObserver(item)\n resource.observers[id].open(_react, item)\n }\n\n // index item\n resource.index[id] = item\n // fire observation handler for the first time\n _react.call(item, {}, {}, {}, null, true)\n // save \"previous\" attributes of the injected item, for change diffs later\n resource.previousAttributes[id] = DSUtils.copy(item, null, null, null, definition.relationFields)\n // mark item as temporary if guid has been generated\n if (options.temporary) {\n resource.temporaryItems[id] = true\n }\n } else {\n // item is being re-injected\n // new properties take precedence\n if (options.onConflict === 'merge') {\n DSUtils.deepMixIn(item, attrs)\n DSUtils.forOwn(definition.computed, function (fn, field) {\n DSUtils.compute.call(item, fn, field)\n })\n } else if (options.onConflict === 'replace') {\n DSUtils.forOwn(definition.computed, function (fn, field) {\n DSUtils.compute.call(attrs, fn, field)\n })\n DSUtils.forOwn(item, function (v, k) {\n if (k !== definition.idAttribute) {\n if (!attrs.hasOwnProperty(k)) {\n delete item[k]\n }\n }\n })\n DSUtils.forOwn(attrs, function (v, k) {\n if (k !== definition.idAttribute) {\n item[k] = v\n }\n })\n }\n\n if (definition.resetHistoryOnInject) {\n // clear change history for item\n _this.commit(definition.name, id)\n }\n if (resource.observers[id] && typeof resource.observers[id] === 'function') {\n // force observation callback to be fired if there are any changes to the item and `Object.observe` is not available\n resource.observers[id].deliver()\n }\n }\n // update modified timestamp of item\n resource.modified[id] = initialLastModified && resource.modified[id] === initialLastModified ? DSUtils.updateTimestamp(resource.modified[id]) : resource.modified[id]\n\n // reset expiry tracking for item\n resource.expiresHeap.remove(item)\n let timestamp = new Date().getTime()\n resource.expiresHeap.push({\n item: item,\n timestamp: timestamp,\n expires: definition.maxAge ? timestamp + definition.maxAge : Number.MAX_VALUE\n })\n\n // final injected item\n injected = item\n } catch (err) {\n options.errorFn(err, attrs)\n }\n }\n }\n return injected\n}\n\n/**\n * Inject the given object or array of objects into the data store.\n *\n * @param resourceName The name of the type of resource of the data to be injected.\n * @param attrs Object or array of objects. Objects must contain a primary key.\n * @param options Optional configuration.\n * @param options.notify Whether to emit the \"DS.beforeInject\" and \"DS.afterInject\" events.\n * @returns The injected data.\n */\nmodule.exports = function inject (resourceName, attrs, options) {\n let _this = this\n let definition = _this.definitions[resourceName]\n let resource = _this.store[resourceName]\n let injected\n\n if (!definition) {\n throw new DSErrors.NER(resourceName)\n } else if (!DSUtils._o(attrs) && !DSUtils._a(attrs)) {\n throw new DSErrors.IA(`${resourceName}.inject: \"attrs\" must be an object or an array!`)\n }\n\n options = DSUtils._(definition, options)\n options.logFn('inject', attrs, options)\n\n // lifecycle\n options.beforeInject(options, attrs)\n if (options.notify) {\n definition.emit('DS.beforeInject', definition, attrs)\n }\n\n // start the recursive injection of data\n injected = _inject.call(_this, definition, resource, attrs, options)\n\n // collection was modified\n definition.handleChange(injected)\n\n // lifecycle\n options.afterInject(options, injected)\n if (options.notify) {\n definition.emit('DS.afterInject', definition, injected)\n }\n\n return injected\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/datastore/sync_methods/inject.js\n **/","export default {\n create: require('./create'),\n destroy: require('./destroy'),\n destroyAll: require('./destroyAll'),\n find: require('./find'),\n findAll: require('./findAll'),\n loadRelations: require('./loadRelations'),\n reap: require('./reap'),\n refresh (resourceName, id, options) {\n let _this = this\n let DSUtils = _this.utils\n\n return new DSUtils.Promise(function (resolve, reject) {\n let definition = _this.definitions[resourceName]\n id = DSUtils.resolveId(_this.definitions[resourceName], id)\n if (!definition) {\n reject(new _this.errors.NER(resourceName))\n } else if (!DSUtils._sn(id)) {\n reject(DSUtils._snErr('id'))\n } else {\n options = DSUtils._(definition, options)\n options.bypassCache = true\n options.logFn('refresh', id, options)\n resolve(_this.get(resourceName, id))\n }\n }).then(function (item) { return item ? _this.find(resourceName, id, options) : item })\n .catch(_this.errorFn('refresh', resourceName, id, options))\n },\n refreshAll (resourceName, params, options) {\n let _this = this\n let DSUtils = _this.utils\n let definition = _this.definitions[resourceName]\n params = params || {}\n\n return new DSUtils.Promise(function (resolve, reject) {\n if (!definition) {\n reject(new _this.errors.NER(resourceName))\n } else if (!DSUtils._o(params)) {\n reject(DSUtils._oErr('params'))\n } else {\n options = DSUtils._(definition, options)\n options.bypassCache = true\n options.logFn('refreshAll', params, options)\n resolve(_this.filter(resourceName, params, options))\n }\n }).then(function (existing) {\n options.bypassCache = true\n return _this.findAll(resourceName, params, options).then(function (found) {\n DSUtils.forEach(existing, function (item) {\n if (found.indexOf(item) === -1) {\n definition.eject(item)\n }\n })\n return found\n })\n }).catch(_this.errorFn('refreshAll', resourceName, params, options))\n },\n save: require('./save'),\n update: require('./update'),\n updateAll: require('./updateAll')\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/datastore/async_methods/index.js\n **/","/**\n * Using an adapter, create a new item.\n *\n * Generally a primary key will NOT be provided in the properties hash,\n * because the adapter's persistence layer should be generating one.\n *\n * @param resourceName The name of the type of resource of the new item.\n * @param attrs Hash of properties with which to create the new item.\n * @param options Optional configuration.\n * @param options.cacheResponse Whether the newly created item as returned by the adapter should be injected into the data store.\n * @param options.upsert If the properties hash contains a primary key, attempt to call DS#update instead.\n * @param options.notify Whether to emit the \"DS.beforeCreate\" and \"DS.afterCreate\" events.\n * @param options.beforeValidate Lifecycle hook.\n * @param options.validate Lifecycle hook.\n * @param options.afterValidate Lifecycle hook.\n * @param options.beforeCreate Lifecycle hook.\n * @param options.afterCreate Lifecycle hook.\n */\nmodule.exports = function create (resourceName, attrs, options) {\n let _this = this\n let DSUtils = _this.utils\n let definition = _this.definitions[resourceName]\n let resource = _this.store[resourceName]\n let adapter\n\n options = options || {}\n attrs = attrs || {}\n\n let rejectionError\n if (!definition) {\n rejectionError = new _this.errors.NER(resourceName)\n } else if (!DSUtils._o(attrs)) {\n rejectionError = DSUtils._oErr('attrs')\n } else {\n options = DSUtils._(definition, options)\n if (options.upsert && DSUtils._sn(attrs[definition.idAttribute]) && !resource.temporaryItems[attrs[definition.idAttribute]]) {\n return _this.update(resourceName, attrs[definition.idAttribute], attrs, options)\n }\n options.logFn('create', attrs, options)\n }\n\n return new DSUtils.Promise(function (resolve, reject) {\n if (rejectionError) {\n reject(rejectionError)\n } else {\n resolve(attrs)\n }\n })\n // start lifecycle\n .then(function (attrs) { return options.beforeValidate.call(attrs, options, attrs) })\n .then(function (attrs) { return options.validate.call(attrs, options, attrs) })\n .then(function (attrs) { return options.afterValidate.call(attrs, options, attrs) })\n .then(function (attrs) { return options.beforeCreate.call(attrs, options, attrs) })\n .then(function (attrs) {\n if (options.notify) {\n definition.emit('DS.beforeCreate', definition, attrs)\n }\n adapter = _this.getAdapterName(options)\n return _this.adapters[adapter].create(definition, DSUtils.omit(attrs, options.omit), options)\n })\n .then(function (attrs) { return options.afterCreate.call(attrs, options, attrs) })\n .then(function (attrs) {\n if (options.notify) {\n definition.emit('DS.afterCreate', definition, attrs)\n }\n if (options.cacheResponse) {\n // injected created intem into the store\n let created = _this.inject(definition.name, attrs, options.orig())\n let id = created[definition.idAttribute]\n // mark item's `find` query as completed, so a subsequent `find` call for this item will resolve immediately\n let resource = _this.store[resourceName]\n resource.completedQueries[id] = new Date().getTime()\n resource.saved[id] = DSUtils.updateTimestamp(resource.saved[id])\n return created\n } else {\n // just return an un-injected instance\n return _this.createInstance(resourceName, attrs, options)\n }\n })\n .then(function (item) {\n return DSUtils.respond(item, {adapter}, options)\n })['catch'](_this.errorFn('create', resourceName, attrs, options))\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/datastore/async_methods/create.js\n **/","/**\n * Using an adapter, destroy an item.\n *\n * @param resourceName The name of the type of resource of the item to destroy.\n * @param id The primary key of the item to destroy.\n * @param options Optional configuration.\n * @param options.eagerEject Whether to eject the item from the store before the adapter operation completes, re-injecting if the adapter operation fails.\n * @param options.notify Whether to emit the \"DS.beforeDestroy\" and \"DS.afterDestroy\" events.\n * @param options.beforeDestroy Lifecycle hook.\n * @param options.afterDestroy Lifecycle hook.\n * @returns The primary key of the destroyed item.\n */\nmodule.exports = function destroy (resourceName, id, options) {\n let _this = this\n let DSUtils = _this.utils\n let definition = _this.definitions[resourceName]\n let item, adapter\n\n return new DSUtils.Promise(function (resolve, reject) {\n id = DSUtils.resolveId(definition, id)\n if (!definition) {\n reject(new _this.errors.NER(resourceName))\n } else if (!DSUtils._sn(id)) {\n reject(DSUtils._snErr('id'))\n } else {\n // check if the item is in the store\n item = definition.get(id) || { id: id }\n options = DSUtils._(definition, options)\n options.logFn('destroy', id, options)\n resolve(item)\n }\n })\n // start lifecycle\n .then(function (attrs) { return options.beforeDestroy.call(attrs, options, attrs) })\n .then(function (attrs) {\n if (options.notify) {\n definition.emit('DS.beforeDestroy', definition, attrs)\n }\n // don't wait for the adapter, remove the item from the store\n if (options.eagerEject) {\n definition.eject(id)\n }\n adapter = definition.getAdapter(options)\n return adapter.destroy(definition, id, options)\n })\n .then(function () { return options.afterDestroy.call(item, options, item) })\n .then(function (item) {\n if (options.notify) {\n definition.emit('DS.afterDestroy', definition, item)\n }\n // make sure the item is removed from the store\n definition.eject(id)\n return DSUtils.respond(id, {adapter}, options)\n })['catch'](function (err) {\n // rollback by re-injecting the item into the store\n if (options && options.eagerEject && item) {\n definition.inject(item, { notify: false })\n }\n return _this.errorFn('destroy', resourceName, id, options)(err)\n })\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/datastore/async_methods/destroy.js\n **/","/**\n * Using an adapter, destroy an item.\n *\n * @param resourceName The name of the type of resource of the item to destroy.\n * @param params The criteria by which to filter items to destroy. See http://www.js-data.io/docs/query-syntax\n * @param options Optional configuration.\n * @param options.eagerEject Whether to eject the items from the store before the adapter operation completes, re-injecting if the adapter operation fails.\n * @param options.notify Whether to emit the \"DS.beforeDestroy\" and \"DS.afterDestroy\" events.\n * @param options.beforeDestroy Lifecycle hook.\n * @param options.afterDestroy Lifecycle hook.\n * @returns The ejected items, if any.\n */\nmodule.exports = function destroyAll (resourceName, params, options) {\n let _this = this\n let DSUtils = _this.utils\n let definition = _this.definitions[resourceName]\n let ejected, toEject, adapter\n\n params = params || {}\n\n return new DSUtils.Promise(function (resolve, reject) {\n if (!definition) {\n reject(new _this.errors.NER(resourceName))\n } else if (!DSUtils._o(params)) {\n reject(DSUtils._oErr('attrs'))\n } else {\n options = DSUtils._(definition, options)\n options.logFn('destroyAll', params, options)\n DSUtils.applyScope(definition, params, options)\n resolve()\n }\n }).then(function () {\n // find items that are to be ejected from the store\n toEject = definition.defaultFilter.call(_this, resourceName, params)\n return options.beforeDestroy(options, toEject)\n }).then(function () {\n if (options.notify) {\n definition.emit('DS.beforeDestroy', definition, toEject)\n }\n // don't wait for the adapter, remove the items from the store\n if (options.eagerEject) {\n ejected = definition.ejectAll(params)\n }\n adapter = definition.getAdapterName(options)\n return _this.adapters[adapter].destroyAll(definition, params, options)\n }).then(function () {\n return options.afterDestroy(options, toEject)\n }).then(function () {\n if (options.notify) {\n definition.emit('DS.afterDestroy', definition, toEject)\n }\n // make sure items are removed from the store\n return ejected || definition.ejectAll(params)\n }).then(function (items) {\n return DSUtils.respond(items, {adapter}, options)\n })['catch'](function (err) {\n // rollback by re-injecting the items into the store\n if (options && options.eagerEject && ejected) {\n definition.inject(ejected, {notify: false})\n }\n return _this.errorFn('destroyAll', resourceName, params, options)(err)\n })\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/datastore/async_methods/destroyAll.js\n **/","/* jshint -W082 */\n\n/**\n * Using an adapter, retrieve a single item.\n *\n * @param resourceName The of the type of resource of the item to retrieve.\n * @param id The primary key of the item to retrieve.\n * @param options Optional configuration.\n * @param options.bypassCache Whether to ignore any cached item and force the retrieval through the adapter.\n * @param options.cacheResponse Whether to inject the found item into the data store.\n * @param options.strictCache Whether to only consider items to be \"cached\" if they were injected into the store as the result of `find` or `findAll`.\n * @param options.strategy The retrieval strategy to use.\n * @param options.findStrategy The retrieval strategy to use. Overrides \"strategy\".\n * @param options.fallbackAdapters Array of names of adapters to use if using \"fallback\" strategy.\n * @param options.findFallbackAdapters Array of names of adapters to use if using \"fallback\" strategy. Overrides \"fallbackAdapters\".\n * @returns The item.\n */\nmodule.exports = function find (resourceName, id, options) {\n let _this = this\n let DSUtils = _this.utils\n let definition = _this.definitions[resourceName]\n let resource = _this.store[resourceName]\n let adapter\n\n return new DSUtils.Promise(function (resolve, reject) {\n if (!definition) {\n reject(new _this.errors.NER(resourceName))\n } else if (!DSUtils._sn(id)) {\n reject(DSUtils._snErr('id'))\n } else {\n options = DSUtils._(definition, options)\n options.logFn('find', id, options)\n\n if (options.params) {\n options.params = DSUtils.copy(options.params)\n }\n\n if (options.bypassCache || !options.cacheResponse) {\n delete resource.completedQueries[id]\n }\n\n let expired = options.maxAge && id in resource.completedQueries &&\n resource.completedQueries[id] + options.maxAge < new Date().getTime()\n\n if ((!options.findStrictCache || id in resource.completedQueries) && definition.get(id) &&\n !options.bypassCache && !expired) {\n // resolve immediately with the cached item\n resolve(definition.get(id))\n } else {\n // we're going to delegate to the adapter next\n delete resource.completedQueries[id]\n resolve()\n }\n }\n }).then(function (item) {\n if (!item) {\n const usePendingFind = DSUtils.isFunction(options.usePendingFind) ? options.usePendingFind.call(this, resourceName, id, options) : options.usePendingFind\n if (!(id in resource.pendingQueries) && usePendingFind) {\n let promise\n let strategy = options.findStrategy || options.strategy\n\n // try subsequent adapters if the preceeding one fails\n if (strategy === 'fallback') {\n var makeFallbackCall = function (index) {\n adapter = definition.getAdapterName((options.findFallbackAdapters || options.fallbackAdapters)[index])\n return _this.adapters[adapter].find(definition, id, options)['catch'](err => {\n index++\n if (index < options.fallbackAdapters.length) {\n return makeFallbackCall(index)\n } else {\n return DSUtils.Promise.reject(err)\n }\n })\n }\n\n promise = makeFallbackCall(0)\n } else {\n adapter = definition.getAdapterName(options)\n // just make a single attempt\n promise = _this.adapters[adapter].find(definition, id, options)\n }\n\n resource.pendingQueries[id] = promise\n .then(function (data) { return options.afterFind.call(data, options, data) })\n .then(function (data) {\n // Query is no longer pending\n delete resource.pendingQueries[id]\n if (options.cacheResponse) {\n // inject the item into the data store\n let injected = definition.inject(data, options.orig())\n // mark the item as \"cached\"\n resource.completedQueries[id] = new Date().getTime()\n resource.saved[id] = DSUtils.updateTimestamp(resource.saved[id])\n return injected\n } else {\n // just return an un-injected instance\n return definition.createInstance(data, options.orig())\n }\n })\n }\n return resource.pendingQueries[id]\n } else {\n // resolve immediately with the item\n return item\n }\n }).then(function (item) {\n return DSUtils.respond(item, {adapter}, options)\n })['catch'](function (err) {\n if (resource) {\n delete resource.pendingQueries[id]\n }\n return _this.errorFn('find', resourceName, id, options)(err)\n })\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/datastore/async_methods/find.js\n **/","/* jshint -W082 */\nfunction processResults (data, resourceName, queryHash, options) {\n let _this = this\n let DSUtils = _this.utils\n let definition = _this.definitions[resourceName]\n let resource = _this.store[resourceName]\n let idAttribute = definition.idAttribute\n let date = new Date().getTime()\n\n data = data || []\n\n // Query is no longer pending\n delete resource.pendingQueries[queryHash]\n resource.completedQueries[queryHash] = date\n\n // Merge the new values into the cache\n let injected = definition.inject(data, options.orig())\n\n // Make sure each object is added to completedQueries\n if (DSUtils._a(injected)) {\n DSUtils.forEach(injected, function (item) {\n if (item) {\n let id = item[idAttribute]\n if (id) {\n resource.completedQueries[id] = date\n resource.saved[id] = DSUtils.updateTimestamp(resource.saved[id])\n }\n }\n })\n } else {\n options.errorFn('response is expected to be an array!')\n resource.completedQueries[injected[idAttribute]] = date\n }\n\n return injected\n}\n\n/**\n * Using an adapter, retrieve a collection of items.\n *\n * @param resourceName The name of the type of resource of the items to retrieve.\n * @param params The criteria by which to filter items to retrieve. See http://www.js-data.io/docs/query-syntax\n * @param options Optional configuration.\n * @param options.bypassCache Whether to ignore any cached query for these items and force the retrieval through the adapter.\n * @param options.cacheResponse Whether to inject the found items into the data store.\n * @returns The items.\n */\nmodule.exports = function findAll (resourceName, params, options) {\n let _this = this\n let DSUtils = _this.utils\n let definition = _this.definitions[resourceName]\n let resource = _this.store[resourceName]\n let queryHash, adapter\n\n return new DSUtils.Promise(function (resolve, reject) {\n params = params || {}\n\n if (!_this.definitions[resourceName]) {\n reject(new _this.errors.NER(resourceName))\n } else if (!DSUtils._o(params)) {\n reject(DSUtils._oErr('params'))\n } else {\n options = DSUtils._(definition, options)\n queryHash = DSUtils.toJson(params)\n options.logFn('findAll', params, options)\n\n if (options.params) {\n options.params = DSUtils.copy(options.params)\n }\n\n DSUtils.applyScope(definition, params, options)\n\n // force a new request\n if (options.bypassCache || !options.cacheResponse) {\n delete resource.completedQueries[queryHash]\n delete resource.queryData[queryHash]\n }\n\n let expired = options.maxAge && queryHash in resource.completedQueries &&\n resource.completedQueries[queryHash] + options.maxAge < new Date().getTime()\n\n if (queryHash in resource.completedQueries && !expired) {\n if (options.useFilter) {\n if (options.localKeys) {\n resolve(definition.getAll(options.localKeys, options.orig()))\n } else {\n // resolve immediately by filtering data from the data store\n resolve(definition.filter(params, options.orig()))\n }\n } else {\n // resolve immediately by returning the cached array from the previously made query\n resolve(resource.queryData[queryHash])\n }\n } else {\n resolve()\n }\n }\n }).then(function (items) {\n if (!items) {\n const usePendingFindAll = DSUtils.isFunction(options.usePendingFindAll) ? options.usePendingFindAll.call(this, resourceName, params, options) : options.usePendingFindAll\n if (!(queryHash in resource.pendingQueries) && usePendingFindAll) {\n let promise\n let strategy = options.findAllStrategy || options.strategy\n\n // try subsequent adapters if the preceeding one fails\n if (strategy === 'fallback') {\n var makeFallbackCall = function (index) {\n adapter = definition.getAdapterName((options.findAllFallbackAdapters || options.fallbackAdapters)[index])\n return _this.adapters[adapter].findAll(definition, params, options)['catch'](function (err) {\n index++\n if (index < options.fallbackAdapters.length) {\n return makeFallbackCall(index)\n } else {\n return DSUtils.Promise.reject(err)\n }\n })\n }\n\n promise = makeFallbackCall(0)\n } else {\n adapter = definition.getAdapterName(options)\n // just make a single attempt\n promise = _this.adapters[adapter].findAll(definition, params, options)\n }\n\n resource.pendingQueries[queryHash] = promise\n .then(function (data) { return options.afterFindAll.call(data, options, data) })\n .then(function (data) {\n // Query is no longer pending\n delete resource.pendingQueries[queryHash]\n if (options.cacheResponse) {\n // inject the items into the data store\n resource.queryData[queryHash] = processResults.call(_this, data, resourceName, queryHash, options)\n resource.queryData[queryHash].$$injected = true\n return resource.queryData[queryHash]\n } else {\n DSUtils.forEach(data, function (item, i) {\n data[i] = definition.createInstance(item, options.orig())\n })\n return data\n }\n })\n }\n\n return resource.pendingQueries[queryHash]\n } else {\n // resolve immediately with the items\n return items\n }\n }).then(function (items) {\n return DSUtils.respond(items, {adapter}, options)\n })['catch'](function (err) {\n if (resource) {\n delete resource.pendingQueries[queryHash]\n }\n return _this.errorFn('findAll', resourceName, params, options)(err)\n })\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/datastore/async_methods/findAll.js\n **/","/**\n * Load the specified relations for the given instance.\n *\n * @param resourceName The name of the type of resource of the instance for which to load relations.\n * @param instance The instance or the primary key of the instance.\n * @param relations An array of the relations to load.\n * @param options Optional configuration.\n * @returns The instance, now with its relations loaded.\n */\nmodule.exports = function loadRelations (resourceName, instance, relations, options) {\n let _this = this\n let {utils: DSUtils, errors: DSErrors} = _this\n let definition = _this.definitions[resourceName]\n let _options\n\n return new DSUtils.Promise(function (resolve, reject) {\n if (DSUtils._sn(instance)) {\n instance = definition.get(instance)\n }\n\n if (DSUtils._s(relations)) {\n relations = [relations]\n }\n\n relations = relations || []\n\n if (!definition) {\n reject(new DSErrors.NER(resourceName))\n } else if (!DSUtils._o(instance)) {\n reject(new DSErrors.IA('\"instance(id)\" must be a string, number or object!'))\n } else if (!DSUtils._a(relations)) {\n reject(new DSErrors.IA('\"relations\" must be a string or an array!'))\n } else {\n _options = DSUtils._(definition, options)\n _options.logFn('loadRelations', instance, relations, _options)\n\n let tasks = []\n\n DSUtils.forEach(definition.relationList, function (def) {\n let relationName = def.relation\n let relationDef = definition.getResource(relationName)\n let __options = DSUtils._(relationDef, options)\n\n // relations can be loaded based on resource name or field name\n if (!relations.length || DSUtils.contains(relations, relationName) || DSUtils.contains(relations, def.localField)) {\n let task\n let params = {}\n if (__options.allowSimpleWhere) {\n params[def.foreignKey] = instance[definition.idAttribute]\n } else {\n params.where = {}\n params.where[def.foreignKey] = {\n '==': instance[definition.idAttribute]\n }\n }\n\n let orig = __options.orig()\n let defKey = def.localKey ? DSUtils.get(instance, def.localKey) : null\n let hasDefKey = !!(defKey || defKey === 0)\n\n if (typeof def.load === 'function') {\n task = def.load(definition, def, instance, orig)\n } else {\n if (def.type === 'hasMany') {\n if (def.localKeys) {\n delete params[def.foreignKey]\n let keys = DSUtils.get(instance, def.localKeys) || []\n keys = DSUtils._a(keys) ? keys : DSUtils.keys(keys)\n params.where = {\n [relationDef.idAttribute]: {\n 'in': keys\n }\n }\n orig.localKeys = keys\n } else if (def.foreignKeys) {\n delete params[def.foreignKey]\n params.where = {\n [def.foreignKeys]: {\n contains: instance[definition.idAttribute]\n }\n }\n }\n task = relationDef.findAll(params, orig)\n } else if (def.type === 'hasOne') {\n if (def.localKey && hasDefKey) {\n task = relationDef.find(defKey, orig)\n } else if (def.foreignKey) {\n task = relationDef.findAll(params, orig).then(function (hasOnes) { return hasOnes.length ? hasOnes[0] : null })\n }\n } else if (hasDefKey) {\n task = relationDef.find(defKey, orig)\n }\n }\n\n if (task) {\n if (!_options.linkRelations) {\n task = task.then(function (data) {\n instance[def.localField] = data\n })\n }\n tasks.push(task)\n }\n }\n })\n\n resolve(tasks)\n }\n }).then(function (tasks) { return DSUtils.Promise.all(tasks) })\n .then(function () { return _options.afterLoadRelations.call(instance, _options, instance) })\n .catch(_this.errorFn('loadRelations', resourceName, instance, relations, options))\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/datastore/async_methods/loadRelations.js\n **/","/**\n * Find expired items of the specified resource type and perform the configured action.\n *\n * @param resourceName The name of the type of resource of the items to reap.\n * @param options Optional configuration.\n * @returns The reaped items.\n */\nmodule.exports = function reap (resourceName, options) {\n let _this = this\n var DSUtils = _this.utils\n let definition = _this.definitions[resourceName]\n let resource = _this.store[resourceName]\n\n return new DSUtils.Promise(function (resolve, reject) {\n if (!definition) {\n reject(new _this.errors.NER(resourceName))\n } else {\n options = DSUtils._(definition, options)\n if (!options.hasOwnProperty('notify')) {\n options.notify = false\n }\n options.logFn('reap', options)\n let items = []\n let now = new Date().getTime()\n let expiredItem\n\n // find the expired items\n while ((expiredItem = resource.expiresHeap.peek()) && expiredItem.expires < now) {\n items.push(expiredItem.item)\n delete expiredItem.item\n resource.expiresHeap.pop()\n }\n resolve(items)\n }\n }).then(function (items) {\n // only hit lifecycle if there are items\n if (items.length) {\n definition.beforeReap(options, items)\n if (options.notify) {\n definition.emit('DS.beforeReap', definition, items)\n }\n }\n\n if (options.reapAction === 'inject') {\n let timestamp = new Date().getTime()\n DSUtils.forEach(items, function (item) {\n resource.expiresHeap.push({\n item: item,\n timestamp: timestamp,\n expires: definition.maxAge ? timestamp + definition.maxAge : Number.MAX_VALUE\n })\n })\n } else if (options.reapAction === 'eject') {\n DSUtils.forEach(items, function (item) {\n definition.eject(item[definition.idAttribute])\n })\n } else if (options.reapAction === 'refresh') {\n let tasks = []\n DSUtils.forEach(items, function (item) {\n tasks.push(definition.refresh(item[definition.idAttribute]))\n })\n return DSUtils.Promise.all(tasks)\n }\n return items\n }).then(function (items) {\n // only hit lifecycle if there are items\n if (items.length) {\n definition.afterReap(options, items)\n if (options.notify) {\n definition.emit('DS.afterReap', definition, items)\n }\n }\n return items\n }).catch(_this.errorFn('reap', resourceName, options))\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/datastore/async_methods/reap.js\n **/","/**\n * Save a single item in its present state.\n *\n * @param resourceName The name of the type of resource of the item.\n * @param id The primary key of the item.\n * @param options Optional congifuration.\n * @returns The item, now saved.\n */\nmodule.exports = function save (resourceName, id, options) {\n let _this = this\n let {utils: DSUtils, errors: DSErrors} = _this\n let definition = _this.definitions[resourceName]\n let resource = _this.store[resourceName]\n let item, noChanges, adapter\n\n return new DSUtils.Promise(function (resolve, reject) {\n id = DSUtils.resolveId(definition, id)\n if (!definition) {\n reject(new DSErrors.NER(resourceName))\n } else if (!DSUtils._sn(id)) {\n reject(DSUtils._snErr('id'))\n } else if (!definition.get(id)) {\n reject(new DSErrors.R(`id \"${id}\" not found in cache!`))\n } else {\n item = definition.get(id)\n options = DSUtils._(definition, options)\n options.logFn('save', id, options)\n resolve(item)\n }\n })\n // start lifecycle\n .then(function (attrs) { return options.beforeValidate.call(attrs, options, attrs) })\n .then(function (attrs) { return options.validate.call(attrs, options, attrs) })\n .then(function (attrs) { return options.afterValidate.call(attrs, options, attrs) })\n .then(function (attrs) { return options.beforeUpdate.call(attrs, options, attrs) })\n .then(function (attrs) {\n if (options.notify) {\n definition.emit('DS.beforeUpdate', definition, attrs)\n }\n // only send changed properties to the adapter\n if (options.changesOnly) {\n if (resource.observers[id] && typeof resource.observers[id] === 'function') {\n resource.observers[id].deliver()\n }\n let toKeep = []\n let changes = definition.changes(id)\n\n for (var key in changes.added) {\n toKeep.push(key)\n }\n for (key in changes.changed) {\n toKeep.push(key)\n }\n DSUtils.forEach(options.always, property => {\n toKeep.push(property)\n })\n changes = DSUtils.pick(attrs, toKeep)\n // no changes? no save\n if (DSUtils.isEmpty(changes)) {\n // no changes, return\n options.logFn('save - no changes', id, options)\n noChanges = true\n return attrs\n } else {\n attrs = changes\n }\n }\n adapter = definition.getAdapterName(options)\n return _this.adapters[adapter].update(definition, id, DSUtils.omit(attrs, options.omit), options)\n })\n .then(function (data) { return options.afterUpdate.call(data, options, data) })\n .then(function (attrs) {\n if (options.notify) {\n definition.emit('DS.afterUpdate', definition, attrs)\n }\n if (noChanges) {\n // no changes, just return\n return attrs\n } else if (options.cacheResponse) {\n // inject the reponse into the store, updating the item\n let injected = definition.inject(attrs, options.orig())\n // mark the item as \"saved\"\n resource.saved[id] = DSUtils.updateTimestamp(resource.saved[id])\n if (!definition.resetHistoryOnInject) {\n resource.previousAttributes[id] = DSUtils.copy(injected, null, null, null, definition.relationFields)\n }\n return injected\n } else {\n // just return an instance\n return definition.createInstance(attrs, options.orig())\n }\n })\n .then(function (item) {\n return DSUtils.respond(item, {adapter}, options)\n })\n .catch(_this.errorFn('save', resourceName, id, options))\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/datastore/async_methods/save.js\n **/","/**\n * Update a single item using the supplied properties hash.\n *\n * @param resourceName The name of the type of resource of the item to update.\n * @param id The primary key of the item to update.\n * @param attrs The attributes with which to update the item.\n * @param options Optional configuration.\n * @returns The item, now updated.\n */\nmodule.exports = function update (resourceName, id, attrs, options) {\n let _this = this\n let {utils: DSUtils, errors: DSErrors} = _this\n let definition = _this.definitions[resourceName]\n let adapter\n\n return new DSUtils.Promise(function (resolve, reject) {\n id = DSUtils.resolveId(definition, id)\n if (!definition) {\n reject(new DSErrors.NER(resourceName))\n } else if (!DSUtils._sn(id)) {\n reject(DSUtils._snErr('id'))\n } else {\n options = DSUtils._(definition, options)\n options.logFn('update', id, attrs, options)\n resolve(attrs)\n }\n })\n // start lifecycle\n .then(function (attrs) { return options.beforeValidate.call(attrs, options, attrs) })\n .then(function (attrs) { return options.validate.call(attrs, options, attrs) })\n .then(function (attrs) { return options.afterValidate.call(attrs, options, attrs) })\n .then(function (attrs) { return options.beforeUpdate.call(attrs, options, attrs) })\n .then(function (attrs) {\n if (options.notify) {\n definition.emit('DS.beforeUpdate', definition, attrs)\n }\n adapter = definition.getAdapterName(options)\n return _this.adapters[adapter].update(definition, id, DSUtils.omit(attrs, options.omit), options)\n })\n .then(function (data) { return options.afterUpdate.call(data, options, data) })\n .then(function (attrs) {\n if (options.notify) {\n definition.emit('DS.afterUpdate', definition, attrs)\n }\n if (options.cacheResponse) {\n // inject the updated item into the store\n let injected = definition.inject(attrs, options.orig())\n let resource = _this.store[resourceName]\n let id = injected[definition.idAttribute]\n // mark the item as \"saved\"\n resource.saved[id] = DSUtils.updateTimestamp(resource.saved[id])\n if (!definition.resetHistoryOnInject) {\n resource.previousAttributes[id] = DSUtils.copy(injected, null, null, null, definition.relationFields)\n }\n return injected\n } else {\n // just return an instance\n return definition.createInstance(attrs, options.orig())\n }\n })\n .then(function (item) {\n return DSUtils.respond(item, {adapter}, options)\n })\n .catch(_this.errorFn('update', resourceName, id, attrs, options))\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/datastore/async_methods/update.js\n **/","/**\n * Update a collection of items using the supplied properties hash.\n *\n * @param resourceName The name of the type of resource of the items to update.\n * @param attrs The attributes with which to update the item.\n * @param params The criteria by which to select items to update. See http://www.js-data.io/docs/query-syntax\n * @param options Optional configuration.\n * @returns The updated items.\n */\nmodule.exports = function updateAll (resourceName, attrs, params, options) {\n let _this = this\n let {utils: DSUtils, errors: DSErrors} = _this\n let definition = _this.definitions[resourceName]\n let adapter\n\n return new DSUtils.Promise(function (resolve, reject) {\n if (!definition) {\n reject(new DSErrors.NER(resourceName))\n } else {\n options = DSUtils._(definition, options)\n options.logFn('updateAll', attrs, params, options)\n DSUtils.applyScope(definition, params, options)\n resolve(attrs)\n }\n })\n // start lifecycle\n .then(function (attrs) { return options.beforeValidate.call(attrs, options, attrs) })\n .then(function (attrs) { return options.validate.call(attrs, options, attrs) })\n .then(function (attrs) { return options.afterValidate.call(attrs, options, attrs) })\n .then(function (attrs) { return options.beforeUpdate.call(attrs, options, attrs) })\n .then(function (attrs) {\n if (options.notify) {\n definition.emit('DS.beforeUpdate', definition, attrs)\n }\n adapter = definition.getAdapterName(options)\n return _this.adapters[adapter].updateAll(definition, DSUtils.omit(attrs, options.omit), params, options)\n })\n .then(function (data) { return options.afterUpdate.call(data, options, data) })\n .then(function (data) {\n if (options.notify) {\n definition.emit('DS.afterUpdate', definition, attrs)\n }\n let origOptions = options.orig()\n if (options.cacheResponse) {\n // inject the updated items into the store\n let injected = definition.inject(data, origOptions)\n let resource = _this.store[resourceName]\n // mark the items as \"saved\"\n DSUtils.forEach(injected, i => {\n let id = i[definition.idAttribute]\n resource.saved[id] = DSUtils.updateTimestamp(resource.saved[id])\n if (!definition.resetHistoryOnInject) {\n resource.previousAttributes[id] = DSUtils.copy(i, null, null, null, definition.relationFields)\n }\n })\n return injected\n } else {\n // just return instances\n let instances = []\n DSUtils.forEach(data, item => {\n instances.push(definition.createInstance(item, origOptions))\n })\n return instances\n }\n })\n .then(function (items) {\n return DSUtils.respond(items, {adapter}, options)\n })\n .catch(_this.errorFn('updateAll', resourceName, attrs, params, options))\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/datastore/async_methods/updateAll.js\n **/"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/js-data.js b/dist/js-data.js index 86032ada..f0f43d39 100644 --- a/dist/js-data.js +++ b/dist/js-data.js @@ -1,6 +1,6 @@ /*! * js-data - * @version 2.9.0 - Homepage + * @version 2.10.0 - Homepage * @author Jason Dobry * @copyright (c) 2014-2016 Jason Dobry * @license MIT @@ -95,9 +95,9 @@ return /******/ (function(modules) { // webpackBootstrap }, version: { - full: '2.9.0', + full: '2.10.0', major: parseInt('2', 10), - minor: parseInt('9', 10), + minor: parseInt('10', 10), patch: parseInt('0', 10), alpha: true ? 'false' : false, beta: true ? 'false' : false @@ -226,6 +226,7 @@ return /******/ (function(modules) { // webpackBootstrap defaultsPrototype.afterUpdate = lifecycleNoopCb; defaultsPrototype.afterValidate = lifecycleNoopCb; defaultsPrototype.allowSimpleWhere = true; + defaultsPrototype.applyDefaultsOnInject = false; defaultsPrototype.basePath = ''; defaultsPrototype.beforeCreate = lifecycleNoopCb; defaultsPrototype.beforeCreateCollection = lifecycleNoop; @@ -287,6 +288,8 @@ return /******/ (function(modules) { // webpackBootstrap defaultsPrototype.upsert = !!_utils2.default.w; defaultsPrototype.useClass = true; defaultsPrototype.useFilter = false; + defaultsPrototype.usePendingFind = true; + defaultsPrototype.usePendingFindAll = true; defaultsPrototype.validate = lifecycleNoopCb; defaultsPrototype.watchChanges = !!_utils2.default.w; @@ -305,7 +308,7 @@ return /******/ (function(modules) { // webpackBootstrap defaultsPrototype.defaultFilter = function (collection, resourceName, params, options) { var definition = this.definitions[resourceName]; var idA = 'id'; - var resource = undefined; + var resource = void 0; if (definition) { idA = definition.idAttribute; resource = this.store[resourceName]; @@ -360,59 +363,59 @@ return /******/ (function(modules) { // webpackBootstrap }; } _utils2.default.forOwn(clause, function (term, op) { - var expr = undefined; + var expr = void 0; var isOr = op[0] === '|'; var val = _utils2.default.get(attrs, field); op = isOr ? op.substr(1) : op; if (op === '==') { expr = val == term; // eslint-disable-line } else if (op === '===') { - expr = val === term; - } else if (op === '!=') { - expr = val != term; // eslint-disable-line - } else if (op === '!==') { - expr = val !== term; - } else if (op === '>') { - expr = val > term; - } else if (op === '>=') { - expr = val >= term; - } else if (op === '<') { - expr = val < term; - } else if (op === '<=') { - expr = val <= term; - } else if (op === 'isectEmpty') { - expr = !_utils2.default.intersection(val || [], term || []).length; - } else if (op === 'isectNotEmpty') { - expr = _utils2.default.intersection(val || [], term || []).length; - } else if (op === 'in') { - if (_utils2.default._s(term)) { - expr = term.indexOf(val) !== -1; - } else { - expr = _utils2.default.contains(term, val); - } - } else if (op === 'notIn') { - if (_utils2.default._s(term)) { - expr = term.indexOf(val) === -1; - } else { - expr = !_utils2.default.contains(term, val); - } - } else if (op.indexOf('like') === 0) { - expr = like(term, op.substr(4)).exec(val) !== null; - } else if (op.indexOf('notLike') === 0) { - expr = like(term, op.substr(7)).exec(val) === null; - } else if (op === 'contains') { - if (_utils2.default._s(val)) { - expr = val.indexOf(term) !== -1; - } else { - expr = _utils2.default.contains(val, term); - } - } else if (op === 'notContains') { - if (_utils2.default._s(val)) { - expr = val.indexOf(term) === -1; - } else { - expr = !_utils2.default.contains(val, term); - } - } + expr = val === term; + } else if (op === '!=') { + expr = val != term; // eslint-disable-line + } else if (op === '!==') { + expr = val !== term; + } else if (op === '>') { + expr = val > term; + } else if (op === '>=') { + expr = val >= term; + } else if (op === '<') { + expr = val < term; + } else if (op === '<=') { + expr = val <= term; + } else if (op === 'isectEmpty') { + expr = !_utils2.default.intersection(val || [], term || []).length; + } else if (op === 'isectNotEmpty') { + expr = _utils2.default.intersection(val || [], term || []).length; + } else if (op === 'in') { + if (_utils2.default._s(term)) { + expr = term.indexOf(val) !== -1; + } else { + expr = _utils2.default.contains(term, val); + } + } else if (op === 'notIn') { + if (_utils2.default._s(term)) { + expr = term.indexOf(val) === -1; + } else { + expr = !_utils2.default.contains(term, val); + } + } else if (op.indexOf('like') === 0) { + expr = like(term, op.substr(4)).exec(val) !== null; + } else if (op.indexOf('notLike') === 0) { + expr = like(term, op.substr(7)).exec(val) === null; + } else if (op === 'contains') { + if (_utils2.default._s(val)) { + expr = val.indexOf(term) !== -1; + } else { + expr = _utils2.default.contains(val, term); + } + } else if (op === 'notContains') { + if (_utils2.default._s(val)) { + expr = val.indexOf(term) === -1; + } else { + expr = !_utils2.default.contains(val, term); + } + } if (expr !== undefined) { keep = first ? expr : isOr ? keep || expr : keep && expr; } @@ -674,9 +677,9 @@ return /******/ (function(modules) { // webpackBootstrap var set = __webpack_require__(27); var observe = __webpack_require__(29); var guid = __webpack_require__(30); - var w = undefined, - P = undefined, - File = undefined; + var w = void 0, + P = void 0, + File = void 0; var objectProto = Object.prototype; var toString = objectProto.toString; @@ -777,7 +780,7 @@ return /******/ (function(modules) { // webpackBootstrap return []; } var result = []; - var item = undefined; + var item = void 0; for (var i = 0, length = array1.length; i < length; i++) { item = array1[i]; if (contains(result, item)) { @@ -910,9 +913,9 @@ return /******/ (function(modules) { // webpackBootstrap stackDest.push(destination); } - var result = undefined; + var result = void 0; if (isArray(source)) { - var i = undefined; + var i = void 0; destination.length = 0; for (i = 0; i < source.length; i++) { result = copy(source[i], null, stackSource, stackDest, blacklist); @@ -988,26 +991,26 @@ return /******/ (function(modules) { // webpackBootstrap } else if (isRegExp(o1) && isRegExp(o2)) { return o1.toString() == o2.toString(); // eslint-disable-line } else { - if (isArray(o2)) { - return false; + if (isArray(o2)) { + return false; + } + keySet = {}; + for (key in o1) { + if (key.charAt(0) === '$' || isFunction(o1[key])) { + continue; } - keySet = {}; - for (key in o1) { - if (key.charAt(0) === '$' || isFunction(o1[key])) { - continue; - } - if (!equals(o1[key], o2[key])) { - return false; - } - keySet[key] = true; + if (!equals(o1[key], o2[key])) { + return false; } - for (key in o2) { - if (!keySet.hasOwnProperty(key) && key.charAt(0) !== '$' && o2[key] !== undefined && !isFunction(o2[key])) { - return false; - } + keySet[key] = true; + } + for (key in o2) { + if (!keySet.hasOwnProperty(key) && key.charAt(0) !== '$' && o2[key] !== undefined && !isFunction(o2[key])) { + return false; } - return true; } + return true; + } } } return false; @@ -1239,8 +1242,8 @@ return /******/ (function(modules) { // webpackBootstrap // Return a copy of "object" with cycles removed. removeCircular: function removeCircular(object) { return function rmCirc(value, ctx) { - var i = undefined; - var nu = undefined; + var i = void 0; + var nu = void 0; if ((typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value !== null && !(value instanceof Boolean) && !(value instanceof Date) && !(value instanceof Number) && !(value instanceof RegExp) && !(value instanceof String) && (!File || !(value instanceof File))) { // check if current object points back to itself @@ -1431,14 +1434,13 @@ return /******/ (function(modules) { // webpackBootstrap /** * Thrown during a method call when an argument passed into the method is invalid. */ - var IllegalArgumentError = function (_Error) { _inherits(IllegalArgumentError, _Error); function IllegalArgumentError(message) { _classCallCheck(this, IllegalArgumentError); - var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(IllegalArgumentError).call(this)); + var _this = _possibleConstructorReturn(this, (IllegalArgumentError.__proto__ || Object.getPrototypeOf(IllegalArgumentError)).call(this)); if (typeof Error.captureStackTrace === 'function') { Error.captureStackTrace(_this, _this.constructor); @@ -1462,7 +1464,7 @@ return /******/ (function(modules) { // webpackBootstrap function RuntimeError(message) { _classCallCheck(this, RuntimeError); - var _this2 = _possibleConstructorReturn(this, Object.getPrototypeOf(RuntimeError).call(this)); + var _this2 = _possibleConstructorReturn(this, (RuntimeError.__proto__ || Object.getPrototypeOf(RuntimeError)).call(this)); if (typeof Error.captureStackTrace === 'function') { Error.captureStackTrace(_this2, _this2.constructor); @@ -1486,7 +1488,7 @@ return /******/ (function(modules) { // webpackBootstrap function NonexistentResourceError(resourceName) { _classCallCheck(this, NonexistentResourceError); - var _this3 = _possibleConstructorReturn(this, Object.getPrototypeOf(NonexistentResourceError).call(this)); + var _this3 = _possibleConstructorReturn(this, (NonexistentResourceError.__proto__ || Object.getPrototypeOf(NonexistentResourceError)).call(this)); if (typeof Error.captureStackTrace === 'function') { Error.captureStackTrace(_this3, _this3.constructor); @@ -1512,213 +1514,152 @@ return /******/ (function(modules) { // webpackBootstrap /* 4 */ /***/ function(module, exports, __webpack_require__) { - /*! - * yabh - * @version 1.1.0 - Homepage - * @author Jason Dobry - * @copyright (c) 2015 Jason Dobry - * @license MIT - * - * @overview Yet another Binary Heap. - */ - (function webpackUniversalModuleDefinition(root, factory) { - if(true) - module.exports = factory(); - else if(typeof define === 'function' && define.amd) - define("yabh", factory); - else if(typeof exports === 'object') - exports["BinaryHeap"] = factory(); - else - root["BinaryHeap"] = factory(); - })(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] = { - /******/ exports: {}, - /******/ id: moduleId, - /******/ loaded: false - /******/ }; - - /******/ // Execute the module function - /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); - - /******/ // Flag the module as loaded - /******/ module.loaded = 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; - - /******/ // __webpack_public_path__ - /******/ __webpack_require__.p = ""; - - /******/ // Load entry module and return exports - /******/ return __webpack_require__(0); - /******/ }) - /************************************************************************/ - /******/ ([ - /* 0 */ - /***/ function(module, exports, __webpack_require__) { - - /** - * @method bubbleUp - * @param {array} heap The heap. - * @param {function} weightFunc The weight function. - * @param {number} n The index of the element to bubble up. - */ - function bubbleUp(heap, weightFunc, n) { - var element = heap[n]; - var weight = weightFunc(element); - // When at 0, an element can not go up any further. - while (n > 0) { - // Compute the parent element's index, and fetch it. - var parentN = Math.floor((n + 1) / 2) - 1; - var _parent = heap[parentN]; - // If the parent has a lesser weight, things are in order and we - // are done. - if (weight >= weightFunc(_parent)) { - break; - } else { - heap[parentN] = element; - heap[n] = _parent; - n = parentN; - } - } - } - - /** - * @method bubbleDown - * @param {array} heap The heap. - * @param {function} weightFunc The weight function. - * @param {number} n The index of the element to sink down. - */ - var bubbleDown = function bubbleDown(heap, weightFunc, n) { - var length = heap.length; - var node = heap[n]; - var nodeWeight = weightFunc(node); - - while (true) { - var child2N = (n + 1) * 2, - child1N = child2N - 1; - var swap = null; - if (child1N < length) { - var child1 = heap[child1N], - child1Weight = weightFunc(child1); - // If the score is less than our node's, we need to swap. - if (child1Weight < nodeWeight) { - swap = child1N; - } - } - // Do the same checks for the other child. - if (child2N < length) { - var child2 = heap[child2N], - child2Weight = weightFunc(child2); - if (child2Weight < (swap === null ? nodeWeight : weightFunc(heap[child1N]))) { - swap = child2N; - } - } - - if (swap === null) { - break; - } else { - heap[n] = heap[swap]; - heap[swap] = node; - n = swap; - } - } - }; - - function BinaryHeap(weightFunc, compareFunc) { - if (!weightFunc) { - weightFunc = function (x) { - return x; - }; - } - if (!compareFunc) { - compareFunc = function (x, y) { - return x === y; - }; - } - if (typeof weightFunc !== 'function') { - throw new Error('BinaryHeap([weightFunc][, compareFunc]): "weightFunc" must be a function!'); - } - if (typeof compareFunc !== 'function') { - throw new Error('BinaryHeap([weightFunc][, compareFunc]): "compareFunc" must be a function!'); - } - this.weightFunc = weightFunc; - this.compareFunc = compareFunc; - this.heap = []; - } - - var BHProto = BinaryHeap.prototype; - - BHProto.push = function (node) { - this.heap.push(node); - bubbleUp(this.heap, this.weightFunc, this.heap.length - 1); - }; - - BHProto.peek = function () { - return this.heap[0]; - }; - - BHProto.pop = function () { - var front = this.heap[0]; - var end = this.heap.pop(); - if (this.heap.length > 0) { - this.heap[0] = end; - bubbleDown(this.heap, this.weightFunc, 0); - } - return front; - }; - - BHProto.remove = function (node) { - var length = this.heap.length; - for (var i = 0; i < length; i++) { - if (this.compareFunc(this.heap[i], node)) { - var removed = this.heap[i]; - var end = this.heap.pop(); - if (i !== length - 1) { - this.heap[i] = end; - bubbleUp(this.heap, this.weightFunc, i); - bubbleDown(this.heap, this.weightFunc, i); - } - return removed; - } - } - return null; - }; - - BHProto.removeAll = function () { - this.heap = []; - }; - - BHProto.size = function () { - return this.heap.length; - }; - - module.exports = BinaryHeap; - - /***/ } - /******/ ]) - }); - ; + (function (global, factory) { + true ? module.exports = factory() : + typeof define === 'function' && define.amd ? define('yabh', factory) : + (global.BinaryHeap = factory()); + }(this, function () { 'use strict'; + + /** + * @method bubbleUp + * @param {array} heap The heap. + * @param {function} weightFunc The weight function. + * @param {number} n The index of the element to bubble up. + */ + var bubbleUp = function bubbleUp(heap, weightFunc, n) { + var element = heap[n]; + var weight = weightFunc(element); + // When at 0, an element can not go up any further. + while (n > 0) { + // Compute the parent element's index, and fetch it. + var parentN = Math.floor((n + 1) / 2) - 1; + var parent = heap[parentN]; + // If the parent has a lesser weight, things are in order and we + // are done. + if (weight >= weightFunc(parent)) { + break; + } else { + heap[parentN] = element; + heap[n] = parent; + n = parentN; + } + } + }; + + /** + * @method bubbleDown + * @param {array} heap The heap. + * @param {function} weightFunc The weight function. + * @param {number} n The index of the element to sink down. + */ + var bubbleDown = function bubbleDown(heap, weightFunc, n) { + var length = heap.length; + var node = heap[n]; + var nodeWeight = weightFunc(node); + + while (true) { + var child2N = (n + 1) * 2; + var child1N = child2N - 1; + var swap = null; + if (child1N < length) { + var child1 = heap[child1N]; + var child1Weight = weightFunc(child1); + // If the score is less than our node's, we need to swap. + if (child1Weight < nodeWeight) { + swap = child1N; + } + } + // Do the same checks for the other child. + if (child2N < length) { + var child2 = heap[child2N]; + var child2Weight = weightFunc(child2); + if (child2Weight < (swap === null ? nodeWeight : weightFunc(heap[child1N]))) { + swap = child2N; + } + } + + if (swap === null) { + break; + } else { + heap[n] = heap[swap]; + heap[swap] = node; + n = swap; + } + } + }; + + function BinaryHeap(weightFunc, compareFunc) { + if (!weightFunc) { + weightFunc = function weightFunc(x) { + return x; + }; + } + if (!compareFunc) { + compareFunc = function compareFunc(x, y) { + return x === y; + }; + } + if (typeof weightFunc !== 'function') { + throw new Error('BinaryHeap([weightFunc][, compareFunc]): "weightFunc" must be a function!'); + } + if (typeof compareFunc !== 'function') { + throw new Error('BinaryHeap([weightFunc][, compareFunc]): "compareFunc" must be a function!'); + } + this.weightFunc = weightFunc; + this.compareFunc = compareFunc; + this.heap = []; + } + + var BHProto = BinaryHeap.prototype; + + BHProto.push = function (node) { + this.heap.push(node); + bubbleUp(this.heap, this.weightFunc, this.heap.length - 1); + }; + + BHProto.peek = function () { + return this.heap[0]; + }; + + BHProto.pop = function () { + var front = this.heap[0]; + var end = this.heap.pop(); + if (this.heap.length > 0) { + this.heap[0] = end; + bubbleDown(this.heap, this.weightFunc, 0); + } + return front; + }; + + BHProto.remove = function (node) { + var length = this.heap.length; + for (var i = 0; i < length; i++) { + if (this.compareFunc(this.heap[i], node)) { + var removed = this.heap[i]; + var end = this.heap.pop(); + if (i !== length - 1) { + this.heap[i] = end; + bubbleUp(this.heap, this.weightFunc, i); + bubbleDown(this.heap, this.weightFunc, i); + } + return removed; + } + } + return null; + }; + + BHProto.removeAll = function () { + this.heap = []; + }; + + BHProto.size = function () { + return this.heap.length; + }; + + return BinaryHeap; + + })); + //# sourceMappingURL=yabh.js.map /***/ }, /* 5 */ @@ -3243,7 +3184,6 @@ return /******/ (function(modules) { // webpackBootstrap // @param options Optional configuration. // @param options.ignoredChanges Array of strings or regular expressions of fields, the changes of which are to be ignored. // @returns The changes of the given item, if any. - changes: function changes(resourceName, id, options) { var _check$call = check.call(this, 'changes', resourceName, id, options); @@ -3337,7 +3277,14 @@ return /******/ (function(modules) { // webpackBootstrap var resource = _this.store[_resourceName]; var item = _this.store[_resourceName].index[_id]; if (item) { - resource.previousAttributes[_id] = _utils2.default.copy(item, null, null, null, definition.relationFields); + var relationFields = definition.relationFields || []; + var previousAttributes = {}; + for (var key in item) { + if (relationFields.indexOf(key) === -1) { + previousAttributes[key] = _utils2.default.copy(item[key], null, null, null, []); + } + } + resource.previousAttributes[_id] = previousAttributes; } if (resource.changeHistories[_id].length) { @@ -3382,11 +3329,11 @@ return /******/ (function(modules) { // webpackBootstrap // @param resourceName The name of the type of resource of which to create an instance. // @param attrs Hash of properties with which to initialize the instance. // @param options Optional configuration. - // @param options.defaults Default values with which to initialize the instance. + // @param options.defaultValues Default values with which to initialize the instance. // @returns The new instance. createInstance: function createInstance(resourceName, attrs, options) { var definition = this.definitions[resourceName]; - var item = undefined; + var item = void 0; attrs = attrs || {}; @@ -3707,7 +3654,7 @@ return /******/ (function(modules) { // webpackBootstrap if (!instance) { return { - v: undefined + v: void 0 }; } @@ -4102,7 +4049,7 @@ return /******/ (function(modules) { // webpackBootstrap def.beforeDestroy = _utils2.default.promisify(def.beforeDestroy); def.afterDestroy = _utils2.default.promisify(def.afterDestroy); - var defaultAdapter = undefined; + var defaultAdapter = void 0; if (def.hasOwnProperty('defaultAdapter')) { defaultAdapter = def.defaultAdapter; } @@ -4208,7 +4155,7 @@ return /******/ (function(modules) { // webpackBootstrap var DSUtils = _this.utils; var definition = _this.definitions[resourceName]; var resource = _this.store[resourceName]; - var item = undefined; + var item = void 0; var found = false; id = DSUtils.resolveId(definition, id); @@ -4331,12 +4278,14 @@ return /******/ (function(modules) { // webpackBootstrap var queryHash = DSUtils.toJson(params); // get items that match the criteria - var items = definition.filter(params); + var items = void 0; if (DSUtils.isEmpty(params)) { + items = definition.getAll(); // remove all completed queries if ejecting all items resource.completedQueries = {}; } else { + items = definition.filter(params); // remove matching completed query, if any delete resource.completedQueries[queryHash]; } @@ -4437,7 +4386,7 @@ return /******/ (function(modules) { // webpackBootstrap */ return function _react(added, removed, changed, oldValueFn, firstTime) { var target = this; - var item = undefined; + var item = void 0; // Get the previous primary key of the observed item, in-case some knucklehead changed it var innerId = oldValueFn && oldValueFn(definition.idAttribute) ? oldValueFn(definition.idAttribute) : target[definition.idAttribute]; @@ -4518,7 +4467,7 @@ return /******/ (function(modules) { // webpackBootstrap */ function _inject(definition, resource, attrs, options) { var _this = this; - var injected = undefined; + var injected = void 0; if (_utils2.default._a(attrs)) { // have an array of objects, go ahead and inject each one individually and return the resulting array @@ -4613,6 +4562,9 @@ return /******/ (function(modules) { // webpackBootstrap item = attrs; } else { item = new definition[definition['class']](); + if (options.applyDefaultsOnInject && options.defaultValues) { + _utils2.default.deepMixIn(item, _utils2.default.copy(options.defaultValues)); + } } if (definition.instanceEvents && typeof item.emit !== 'function') { @@ -4656,7 +4608,13 @@ return /******/ (function(modules) { // webpackBootstrap // new properties take precedence if (options.onConflict === 'merge') { _utils2.default.deepMixIn(item, attrs); + _utils2.default.forOwn(definition.computed, function (fn, field) { + _utils2.default.compute.call(item, fn, field); + }); } else if (options.onConflict === 'replace') { + _utils2.default.forOwn(definition.computed, function (fn, field) { + _utils2.default.compute.call(attrs, fn, field); + }); _utils2.default.forOwn(item, function (v, k) { if (k !== definition.idAttribute) { if (!attrs.hasOwnProperty(k)) { @@ -4716,7 +4674,7 @@ return /******/ (function(modules) { // webpackBootstrap var _this = this; var definition = _this.definitions[resourceName]; var resource = _this.store[resourceName]; - var injected = undefined; + var injected = void 0; if (!definition) { throw new _errors2.default.NER(resourceName); @@ -4847,12 +4805,12 @@ return /******/ (function(modules) { // webpackBootstrap var DSUtils = _this.utils; var definition = _this.definitions[resourceName]; var resource = _this.store[resourceName]; - var adapter = undefined; + var adapter = void 0; options = options || {}; attrs = attrs || {}; - var rejectionError = undefined; + var rejectionError = void 0; if (!definition) { rejectionError = new _this.errors.NER(resourceName); } else if (!DSUtils._o(attrs)) { @@ -4932,8 +4890,8 @@ return /******/ (function(modules) { // webpackBootstrap var _this = this; var DSUtils = _this.utils; var definition = _this.definitions[resourceName]; - var item = undefined, - adapter = undefined; + var item = void 0, + adapter = void 0; return new DSUtils.Promise(function (resolve, reject) { id = DSUtils.resolveId(definition, id); @@ -5001,9 +4959,9 @@ return /******/ (function(modules) { // webpackBootstrap var _this = this; var DSUtils = _this.utils; var definition = _this.definitions[resourceName]; - var ejected = undefined, - toEject = undefined, - adapter = undefined; + var ejected = void 0, + toEject = void 0, + adapter = void 0; params = params || {}; @@ -5078,7 +5036,7 @@ return /******/ (function(modules) { // webpackBootstrap var DSUtils = _this.utils; var definition = _this.definitions[resourceName]; var resource = _this.store[resourceName]; - var adapter = undefined; + var adapter = void 0; return new DSUtils.Promise(function (resolve, reject) { if (!definition) { @@ -5109,8 +5067,9 @@ return /******/ (function(modules) { // webpackBootstrap } }).then(function (item) { if (!item) { - if (!(id in resource.pendingQueries)) { - var promise = undefined; + var usePendingFind = DSUtils.isFunction(options.usePendingFind) ? options.usePendingFind.call(this, resourceName, id, options) : options.usePendingFind; + if (!(id in resource.pendingQueries) && usePendingFind) { + var promise = void 0; var strategy = options.findStrategy || options.strategy; // try subsequent adapters if the preceeding one fails @@ -5225,8 +5184,8 @@ return /******/ (function(modules) { // webpackBootstrap var DSUtils = _this.utils; var definition = _this.definitions[resourceName]; var resource = _this.store[resourceName]; - var queryHash = undefined, - adapter = undefined; + var queryHash = void 0, + adapter = void 0; return new DSUtils.Promise(function (resolve, reject) { params = params || {}; @@ -5271,8 +5230,9 @@ return /******/ (function(modules) { // webpackBootstrap } }).then(function (items) { if (!items) { - if (!(queryHash in resource.pendingQueries)) { - var promise = undefined; + var usePendingFindAll = DSUtils.isFunction(options.usePendingFindAll) ? options.usePendingFindAll.call(this, resourceName, params, options) : options.usePendingFindAll; + if (!(queryHash in resource.pendingQueries) && usePendingFindAll) { + var promise = void 0; var strategy = options.findAllStrategy || options.strategy; // try subsequent adapters if the preceeding one fails @@ -5353,7 +5313,7 @@ return /******/ (function(modules) { // webpackBootstrap var DSErrors = _this.errors; var definition = _this.definitions[resourceName]; - var _options = undefined; + var _options = void 0; return new DSUtils.Promise(function (resolve, reject) { if (DSUtils._sn(instance)) { @@ -5385,7 +5345,7 @@ return /******/ (function(modules) { // webpackBootstrap // relations can be loaded based on resource name or field name if (!relations.length || DSUtils.contains(relations, relationName) || DSUtils.contains(relations, def.localField)) { - var task = undefined; + var task = void 0; var params = {}; if (__options.allowSimpleWhere) { params[def.foreignKey] = instance[definition.idAttribute]; @@ -5484,7 +5444,7 @@ return /******/ (function(modules) { // webpackBootstrap } var items = []; var now = new Date().getTime(); - var expiredItem = undefined; + var expiredItem = void 0; // find the expired items while ((expiredItem = resource.expiresHeap.peek()) && expiredItem.expires < now) { @@ -5567,9 +5527,9 @@ return /******/ (function(modules) { // webpackBootstrap var definition = _this.definitions[resourceName]; var resource = _this.store[resourceName]; - var item = undefined, - noChanges = undefined, - adapter = undefined; + var item = void 0, + noChanges = void 0, + adapter = void 0; return new DSUtils.Promise(function (resolve, reject) { id = DSUtils.resolveId(definition, id); @@ -5683,7 +5643,7 @@ return /******/ (function(modules) { // webpackBootstrap var DSErrors = _this.errors; var definition = _this.definitions[resourceName]; - var adapter = undefined; + var adapter = void 0; return new DSUtils.Promise(function (resolve, reject) { id = DSUtils.resolveId(definition, id); @@ -5760,7 +5720,7 @@ return /******/ (function(modules) { // webpackBootstrap var DSErrors = _this.errors; var definition = _this.definitions[resourceName]; - var adapter = undefined; + var adapter = void 0; return new DSUtils.Promise(function (resolve, reject) { if (!definition) { diff --git a/dist/js-data.min.js b/dist/js-data.min.js index 28bd573c..4c58a7a0 100644 --- a/dist/js-data.min.js +++ b/dist/js-data.min.js @@ -1,12 +1,12 @@ /*! * js-data -* @version 2.9.0 - Homepage +* @version 2.10.0 - Homepage * @author Jason Dobry * @copyright (c) 2014-2016 Jason Dobry * @license MIT * * @overview Robust framework-agnostic data store. */ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.JSData=t():e.JSData=t()}(this,function(){return function(e){function t(n){if(r[n])return r[n].exports;var i=r[n]={exports:{},id:n,loaded:!1};return e[n].call(i.exports,i,i.exports,t),i.loaded=!0,i.exports}var r={};return t.m=e,t.c=r,t.p="",t(0)}([function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}var i=r(1),o=n(i),a=r(2),u=n(a),f=r(3),s=n(f);e.exports={DS:o.default,DSUtils:u.default,DSErrors:s.default,createStore:function(e){return new o.default(e)},version:{full:"<%= pkg.version %>",major:parseInt("<%= major %>",10),minor:parseInt("<%= minor %>",10),patch:parseInt("<%= patch %>",10),alpha:"<%= alpha %>",beta:"<%= beta %>"}}},function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t,r){r(null,t)}function a(e,t){return t}function u(e,t,r,n){var i=e[t],o=h.default.get(r,i[0]),a=h.default.get(n,i[0]);return h.default._s(o)&&(o=h.default.upperCase(o)),h.default._s(a)&&(a=h.default.upperCase(a)),"DESC"===i[1]?o>a?-1:a>o?1:to?-1:o>a?1:ti;i++)r[i]=arguments[i];return n.apply(this,t.apply(this,r)||r)}}})}Object.defineProperty(t,"__esModule",{value:!0});var l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e},d=function(){function e(e,t){for(var r=0;r"===o?a=f>n:">="===o?a=f>=n:"<"===o?a=n>f:"<="===o?a=n>=f:"isectEmpty"===o?a=!h.default.intersection(f||[],n||[]).length:"isectNotEmpty"===o?a=h.default.intersection(f||[],n||[]).length:"in"===o?a=h.default._s(n)?-1!==n.indexOf(f):h.default.contains(n,f):"notIn"===o?a=h.default._s(n)?-1===n.indexOf(f):!h.default.contains(n,f):0===o.indexOf("like")?a=null!==s(n,o.substr(4)).exec(f):0===o.indexOf("notLike")?a=null===s(n,o.substr(7)).exec(f):"contains"===o?a=h.default._s(f)?-1!==f.indexOf(n):h.default.contains(f,n):"notContains"===o&&(a=h.default._s(f)?-1===f.indexOf(n):!h.default.contains(f,n)),void 0!==a&&(r=t?a:u?r||a:r&&a),t=!1})}),r)}):n.excludeTemporary&&a&&(f=h.default.filter(f,function(e){return a.temporaryItems[e[o]]}));var p=null;h.default._s(r.orderBy)?p=[[r.orderBy,"ASC"]]:h.default._a(r.orderBy)&&(p=r.orderBy),!p&&h.default._s(r.sort)?p=[[r.sort,"ASC"]]:!p&&h.default._a(r.sort)&&(p=r.sort),p&&!function(){var e=0;h.default.forEach(p,function(e,r){if(h.default._s(e))p[r]=[e,"ASC"];else if(!h.default._a(e))throw new y.default.IA('DS.filter("'+t+'"[, params][, options]): '+h.default.toJson(e)+": Must be a string or an array!",{params:{"orderBy[i]":{actual:"undefined"==typeof e?"undefined":l(e),expected:"string|array"}}})}),f=h.default.sort(f,function(t,r){return u(p,e,t,r)})}();var v=h.default._n(r.limit)?r.limit:null,m=null;return h.default._n(r.skip)?m=r.skip:h.default._n(r.offset)&&(m=r.offset),v&&m?f=h.default.slice(f,m,Math.min(f.length,m+v)):h.default._n(v)?f=h.default.slice(f,0,Math.min(f.length,v)):h.default._n(m)&&(f=mr;r++)t[r]=arguments[r];var n=t[t.length-1],i=this.defaults.errorHandler,o=n?n.errorHandler:i;return o=o||i,function(e){return o.apply(void 0,[e].concat(t))}}}]),e}(),C=O.prototype;C.getAdapterName.shorthand=!1,C.getAdapter.shorthand=!1,C.registerAdapter.shorthand=!1,C.errors=y.default,C.utils=h.default,c(C,g.default),c(C,_.default),t.default=O},function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function i(e){return"[object Array]"===W.call(e)||!1}function o(e){return"[object RegExp]"===W.call(e)||!1}function a(e){return"string"==typeof e||e&&"object"===("undefined"==typeof e?"undefined":O(e))&&"[object String]"===W.call(e)||!1}function u(e){return"[object Object]"===W.call(e)||!1}function f(e){return e&&"object"===("undefined"==typeof e?"undefined":O(e))&&"[object Date]"===W.call(e)||!1}function s(e){var t="undefined"==typeof e?"undefined":O(e);return"number"===t||e&&"object"===t&&"[object Number]"===W.call(e)||!1}function c(e){return"function"==typeof e||e&&"[object Function]"===W.call(e)||!1}function l(e){return a(e)||s(e)}function d(e){return new F.default.IA('"'+e+'" must be a string or a number!')}function p(e){return new F.default.IA('"'+e+'" must be an object!')}function h(e){return new F.default.IA('"'+e+'" must be an array!')}function v(e){if(null==e)return!0;if("string"==typeof e||G(e))return!e.length;if("object"===("undefined"==typeof e?"undefined":O(e))){var t=!0;return I(e,function(){return t=!1,!1}),t}return!0}function y(e,t){if(!e||!t)return[];for(var r=[],n=void 0,i=0,o=e.length;o>i;i++)n=e[i],R(r,n)||R(t,n)&&r.push(n);return r}function m(e,t,r){var n=[];return D(e,function(e,r,i){t(e,r,i)&&n.push(e)},r),n}function g(e){var t={};e=e||this,Object.defineProperties(e,{on:{value:function(e,r,n){t[e]=t[e]||[],t[e].push({f:r,c:n})}},off:{value:function(e,r){var n=t[e];if(n)if(r){for(var i=0;in;n++)r[n]=arguments[n];var i=t[r.shift()]||[];if(i)for(var o=0;on;n++)if(!_(e[n],t[n]))return!1;return!0}}return!1}function w(e,t){return a(t)||s(t)?t:t&&e?t[e.idAttribute]||t:t}function x(e,t){return e&&(a(t)||s(t))?e.index[t]||t:t}function A(e){return null!=e&&""!==e}function j(e,t){return t=t||"",m(e,A).join(t)}function E(){for(var e=arguments.length,t=Array(e),r=0;e>r;r++)t[r]=arguments[r];var n=j(t,"/");return n.replace(/([^:\/]|^)\/{2,}/g,"$1/")}Object.defineProperty(t,"__esModule",{value:!0});var O="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e},C=r(3),F=n(C),S=r(4),D=r(5),k=r(6),I=r(7),R=r(10),P=r(12),N=r(14),T=r(21),M=r(22),H=r(23),Q=r(24),K=r(19),U=r(25),V=r(27),$=r(29),q=r(30),L=void 0,B=void 0,J=void 0,z=Object.prototype,W=z.toString;try{B=Promise}catch(e){console.error("js-data requires a global Promise constructor!")}try{J=window.File}catch(e){J=function(){}}var G=Array.isArray||i;try{L=window,L={}}catch(e){L=null}var Y=["beforeValidate","validate","afterValidate","beforeCreate","afterCreate","beforeUpdate","afterUpdate","beforeDestroy","afterDestroy"],X=$.isBlacklisted;t.default={Promise:B,_:function(e,t){var r=this;if(e=e||{},t=t||{},t&&t.constructor===e.constructor)return t;if(!u(t))throw new F.default.IA('"options" must be an object!');D(Y,function(e){"function"==typeof t[e]&&-1===t[e].toString().indexOf("for (var _len = arg")&&(t[e]=r.promisify(t[e]))});var n=function(e){var t=this;I(e,function(e,r){t[r]=e})};return n.prototype=e,n.prototype.orig=function(){var e={};return I(this,function(t,r){e[r]=t}),e},new n(t)},_n:s,_s:a,_sn:l,_snErr:d,_o:u,_oErr:p,_a:G,_aErr:h,applyScope:function(e,t,r){var n=r.scope,i=b(t);n?a(n)&&(n=[n]):n=[],n.unshift("defaultScope"),D(n,function(n){var i=r.scopes[n];"function"==typeof i?P(t,i(e)):i&&P(t,i)}),P(t,i)},compute:function(e,t){var r=this,n=[];u(e)||(D(e.deps,function(e){n.push(U(r,e))}),V(r,t,e[e.length-1].apply(r,n)))},contains:R,copy:b,deepMixIn:P,diffObjectFromOldObject:$.diffObjectFromOldObject,BinaryHeap:S,equals:_,Events:g,filter:m,fillIn:function(e,t){return I(t,function(t,r){r in e||(e[r]=t)}),e},forEach:D,forOwn:I,fromJson:function(e){return a(e)?JSON.parse(e):e},get:U,guid:q,intersection:y,isArray:G,isBlacklisted:X,isEmpty:v,isFunction:c,isObject:u,isNumber:s,isString:a,keys:H,makePath:E,observe:$,omit:function(e,t){var r=[];return I(e,function(e,n){X(n,t)&&r.push(n)}),D(r,function(t){delete e[t]}),e},pascalCase:N,pick:M,promisify:function(e,t){var r=this;if(e){if("function"!=typeof e)throw new Error("Can only promisify functions!");return function(){for(var n=arguments.length,i=Array(n),o=0;n>o;o++)i[o]=arguments[o];return new r.Promise(function(r,n){i.push(function(e,t){e?n(e):r(t)});try{var o=e.apply(t||this,i);o&&o.then&&o.then(r,n)}catch(e){n(e)}})}}},remove:T,set:V,slice:k,sort:Q,toJson:JSON.stringify,updateTimestamp:function(e){var t="function"==typeof Date.now?Date.now():(new Date).getTime();return e&&e>=t?e+1:t},upperCase:K,removeCircular:function(e){return function e(t,r){var n=void 0,i=void 0;if(!("object"!==("undefined"==typeof t?"undefined":O(t))||null===t||t instanceof Boolean||t instanceof Date||t instanceof Number||t instanceof RegExp||t instanceof String||J&&t instanceof J)){for(var o=r.cur,a=r.ctx;a;){if(a.cur===o)return;a=a.ctx}if(G(t))for(i=[],n=0;ni;i++)n[i]=arguments[i];return e.apply(r,n)})}}(),Object.defineProperty(r,o,l)}})}}},function(e,t){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function n(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var o=function(e){function t(e){r(this,t);var i=n(this,Object.getPrototypeOf(t).call(this));return"function"==typeof Error.captureStackTrace&&Error.captureStackTrace(i,i.constructor),i.type=i.constructor.name,i.message=e,i}return i(t,e),t}(Error),a=function(e){function t(e){r(this,t);var i=n(this,Object.getPrototypeOf(t).call(this));return"function"==typeof Error.captureStackTrace&&Error.captureStackTrace(i,i.constructor),i.type=i.constructor.name,i.message=e,i}return i(t,e),t}(Error),u=function(e){function t(e){r(this,t);var i=n(this,Object.getPrototypeOf(t).call(this));return"function"==typeof Error.captureStackTrace&&Error.captureStackTrace(i,i.constructor),i.type=i.constructor.name,i.message=e+" is not a registered resource!",i}return i(t,e),t}(Error);t.default={IllegalArgumentError:o,IA:o,RuntimeError:a,R:a,NonexistentResourceError:u,NER:u}},function(e,t,r){!function(t,r){e.exports=r()}(this,function(){return function(e){function t(n){if(r[n])return r[n].exports;var i=r[n]={exports:{},id:n,loaded:!1};return e[n].call(i.exports,i,i.exports,t),i.loaded=!0,i.exports}var r={};return t.m=e,t.c=r,t.p="",t(0)}([function(e,t,r){function n(e,t,r){for(var n=e[r],i=t(n);r>0;){var o=Math.floor((r+1)/2)-1,a=e[o];if(i>=t(a))break;e[o]=n,e[r]=a,r=o}}function i(e,t){if(e||(e=function(e){return e}),t||(t=function(e,t){return e===t}),"function"!=typeof e)throw new Error('BinaryHeap([weightFunc][, compareFunc]): "weightFunc" must be a function!');if("function"!=typeof t)throw new Error('BinaryHeap([weightFunc][, compareFunc]): "compareFunc" must be a function!');this.weightFunc=e,this.compareFunc=t,this.heap=[]}var o=function(e,t,r){for(var n=e.length,i=e[r],o=t(i);;){var a=2*(r+1),u=a-1,f=null;if(n>u){var s=e[u],c=t(s);o>c&&(f=u)}if(n>a){var l=e[a],d=t(l);d<(null===f?o:t(e[u]))&&(f=a)}if(null===f)break;e[r]=e[f],e[f]=i,r=f}},a=i.prototype;a.push=function(e){this.heap.push(e),n(this.heap,this.weightFunc,this.heap.length-1)},a.peek=function(){return this.heap[0]},a.pop=function(){var e=this.heap[0],t=this.heap.pop();return this.heap.length>0&&(this.heap[0]=t,o(this.heap,this.weightFunc,0)),e},a.remove=function(e){for(var t=this.heap.length,r=0;t>r;r++)if(this.compareFunc(this.heap[r],e)){var i=this.heap[r],a=this.heap.pop();return r!==t-1&&(this.heap[r]=a,n(this.heap,this.weightFunc,r),o(this.heap,this.weightFunc,r)),i}return null},a.removeAll=function(){this.heap=[]},a.size=function(){return this.heap.length},e.exports=i}])})},function(e,t){function r(e,t,r){if(null!=e)for(var n=-1,i=e.length;++nt?Math.max(n+t,0):Math.min(t,n),r=null==r?n:0>r?Math.max(n+r,0):Math.min(r,n);for(var i=[];r>t;)i.push(e[t++]);return i}e.exports=r},function(e,t,r){function n(e,t,r){o(e,function(n,o){return i(e,o)?t.call(r,e[o],o,e):void 0})}var i=r(8),o=r(9);e.exports=n},function(e,t){function r(e,t){return Object.prototype.hasOwnProperty.call(e,t)}e.exports=r},function(e,t,r){function n(){u=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],a=!0;for(var e in{toString:null})a=!1}function i(e,t,r){var i,s=0;null==a&&n();for(i in e)if(o(t,e,i,r)===!1)break;if(a)for(var c=e.constructor,l=!!c&&e===c.prototype;(i=u[s++])&&("constructor"===i&&(l||!f(e,i))||e[i]===Object.prototype[i]||o(t,e,i,r)!==!1););}function o(e,t,r,n){return e.call(n,t[r],r,t)}var a,u,f=r(8);e.exports=i},function(e,t,r){function n(e,t){return-1!==i(e,t)}var i=r(11);e.exports=n},function(e,t){function r(e,t,r){if(r=r||0,null==e)return-1;for(var n=e.length,i=0>r?n+r:r;n>i;){if(e[i]===t)return i;i++}return-1}e.exports=r},function(e,t,r){function n(e,t){for(var r,n=0,a=arguments.length;++n-1&&(e=e.replace(/[\xC0-\xC5]/g,"A").replace(/[\xC6]/g,"AE").replace(/[\xC7]/g,"C").replace(/[\xC8-\xCB]/g,"E").replace(/[\xCC-\xCF]/g,"I").replace(/[\xD0]/g,"D").replace(/[\xD1]/g,"N").replace(/[\xD2-\xD6\xD8]/g,"O").replace(/[\xD9-\xDC]/g,"U").replace(/[\xDD]/g,"Y").replace(/[\xDE]/g,"P").replace(/[\xE0-\xE5]/g,"a").replace(/[\xE6]/g,"ae").replace(/[\xE7]/g,"c").replace(/[\xE8-\xEB]/g,"e").replace(/[\xEC-\xEF]/g,"i").replace(/[\xF1]/g,"n").replace(/[\xF2-\xF6\xF8]/g,"o").replace(/[\xF9-\xFC]/g,"u").replace(/[\xFE]/g,"p").replace(/[\xFD\xFF]/g,"y")),e}var i=r(15);e.exports=n},function(e,t,r){function n(e){return e=i(e),e.replace(o,"")}var i=r(15),o=/[^\x20\x2D0-9A-Z\x5Fa-z\xC0-\xD6\xD8-\xF6\xF8-\xFF]/g;e.exports=n},function(e,t,r){function n(e){return e=i(e),e.toUpperCase()}var i=r(15);e.exports=n},function(e,t,r){function n(e){return e=i(e),e.toLowerCase()}var i=r(15);e.exports=n},function(e,t,r){function n(e,t){var r=i(e,t);-1!==r&&e.splice(r,1)}var i=r(11);e.exports=n},function(e,t,r){function n(e,t){for(var r,n="string"!=typeof arguments[1]?arguments[1]:i(arguments,1),o={},a=0;r=n[a++];)o[r]=e[r];return o}var i=r(6);e.exports=n},function(e,t,r){var n=r(7),i=Object.keys||function(e){var t=[];return n(e,function(e,r){t.push(r)}),t};e.exports=i},function(e,t){function r(e,t){if(null==e)return[];if(e.length<2)return e;null==t&&(t=n);var o,a,u;return o=~~(e.length/2),a=r(e.slice(0,o),t),u=r(e.slice(o,e.length),t),i(a,u,t)}function n(e,t){return t>e?-1:e>t?1:0}function i(e,t,r){for(var n=[];e.length&&t.length;)r(e[0],t[0])<=0?n.push(e.shift()):n.push(t.shift());return e.length&&n.push.apply(n,e),t.length&&n.push.apply(n,t),n}e.exports=r},function(e,t,r){function n(e,t){for(var r=t.split("."),n=r.pop();t=r.shift();)if(e=e[t],null==e)return;return e[n]}r(26);e.exports=n},function(e,t){function r(e){switch(typeof e){case"string":case"number":case"boolean":return!0}return null==e}e.exports=r},function(e,t,r){function n(e,t,r){var n=/^(.+)\.(.+)$/.exec(t);n?i(e,n[1])[n[2]]=r:e[t]=r}var i=r(28);e.exports=n},function(e,t,r){function n(e,t){return t?(i(t.split("."),function(t){e[t]||(e[t]={}),e=e[t]}),e):e}var i=r(5);e.exports=n},function(e,t){!function(e){function t(){function e(e){t=e}if("function"!=typeof Object.observe||"function"!=typeof Array.observe)return!1;var t=[],r={},n=[];return Object.observe(r,e),Array.observe(n,e),r.id=1,r.id=2,delete r.id,n.push(1,2),n.length=0,Object.deliverChangeRecords(e),5!==t.length?!1:"add"!=t[0].type||"update"!=t[1].type||"delete"!=t[2].type||"splice"!=t[3].type||"splice"!=t[4].type?!1:(Object.unobserve(r,e),Array.unobserve(n,e),!0)}function r(t){for(var r=0;g>r&&t.check_();)r++;return v&&(e.dirtyCheckCycleCount=r),r>0}function n(e){for(var t in e)return!1;return!0}function i(e){return n(e.added)&&n(e.removed)&&n(e.changed)}function o(e,t){if(!t||!t.length)return!1;for(var r,n=0;nn&&t);v&&(e.dirtyCheckCycleCount=n),F=!1}},C&&(e.Platform.clearObservers=function(){O=[]}),p.prototype=m({__proto__:c.prototype,arrayObserve:!1,connect_:function(e,t){y?this.directObserver_=s(this,this.value_,this.arrayObserve):this.oldObject_=this.copyObject(this.value_)},copyObject:function(e){var t=Array.isArray(e)?[]:{};for(var r in e)t[r]=e[r];return Array.isArray(e)&&(t.length=e.length),t},check_:function(e,t){var r,n;if(y){if(!e)return!1;n={},r=h(this.value_,e,n)}else n=this.oldObject_,r=a(this.value_,this.oldObject_);return i(r)?!1:(y||(this.oldObject_=this.copyObject(this.value_)),this.report_([r.added||{},r.removed||{},r.changed||{},function(e){return n[e]}]),!0)},disconnect_:function(){y?(this.directObserver_.close(),this.directObserver_=void 0):this.oldObject_=void 0},deliver:function(){this.state_==A&&(y?this.directObserver_.deliver(!1):r(this))},discardChanges:function(){return this.directObserver_?this.directObserver_.deliver(!0):this.oldObject_=this.copyObject(this.value_),this.value_}});var S={},D={add:!0,update:!0,delete:!0};e.Observer=c,e.isBlacklisted=o,e.Observer.runEOM_=_,e.Observer.observerSentinel_=S,e.Observer.hasObjectObserve=y,e.diffObjectFromOldObject=a,e.ObjectObserver=p}(t)},function(e,t,r){function n(){return i(8)+"-"+i(4)+"-4"+i(3)+"-"+o(8,9,"a","b")+i(3)+"-"+i(12)}var i=r(31),o=r(32);e.exports=n},function(e,t,r){function n(e){e=e&&e>0?e:6;for(var t="";e--;)t+=i(o);return t}var i=r(32),o="0123456789abcdef".split("");e.exports=n},function(e,t,r){function n(e){var t=1===arguments.length&&o(e)?e:arguments;return t[i(0,t.length-1)]}var i=r(33),o=r(38);e.exports=n},function(e,t,r){function n(e,t){return e=null==e?i:~~e,t=null==t?o:~~t,Math.round(a(e-.5,t+.499999999999))}var i=r(34),o=r(35),a=r(36);e.exports=n},function(e,t){e.exports=-2147483648},function(e,t){e.exports=2147483647},function(e,t,r){function n(e,t){return e=null==e?o:e,t=null==t?a:t,e+(t-e)*i()}var i=r(37),o=r(34),a=r(35);e.exports=n},function(e,t){function r(){return r.get()}r.get=Math.random,e.exports=r},function(e,t,r){var n=r(39),i=Array.isArray||function(e){return n(e,"Array")};e.exports=i},function(e,t,r){function n(e,t){return i(e)===t}var i=r(40);e.exports=n},function(e,t){function r(e){return null===e?"Null":e===n?"Undefined":i.exec(o.call(e))[1]}var n,i=/^\[object (.*)\]$/,o=Object.prototype.toString;e.exports=r},function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function i(e){return!(f.default.isEmpty(e.added)&&f.default.isEmpty(e.removed)&&f.default.isEmpty(e.changed))}function o(e,t,r,n){var i=this,o=i.definitions[t];if(n=n||{},r=f.default.resolveId(o,r),!o)throw new l(t);if(!f.default._sn(r))throw f.default._snErr("id");return r=r===h?void 0:r,n=f.default._(o,n),{_this:i,definition:o,_resourceName:t,_id:r,_options:n}}Object.defineProperty(t,"__esModule",{value:!0});var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e},u=r(2),f=n(u),s=r(3),c=n(s),l=c.default.NER,d=c.default.IA,p=c.default.R,h="DS_"+(new Date).getTime();t.default={changes:function(e,t,r){var n=o.call(this,"changes",e,t,r),i=n._this,u=n.definition,s=n._resourceName,c=n._id,l=n._options,d=u.get(c);if(d){var p=function(){var e=i.store[s].observers[c];e&&"function"==typeof e&&e.deliver();var t=l.ignoredChanges||[];f.default.forEach(u.relationFields,function(e){f.default.contains(t,e)||t.push(e)});var r=f.default.diffObjectFromOldObject(d,i.store[s].previousAttributes[c],f.default.equals,t);return f.default.forOwn(r,function(e,t){var n=[];f.default.forOwn(e,function(e,t){f.default.isFunction(e)||n.push(t)}),r[t]=f.default.pick(r[t],n)}),f.default.forEach(u.relationFields,function(e){delete r.added[e],delete r.removed[e],delete r.changed[e]}),{v:r}}();if("object"===("undefined"==typeof p?"undefined":a(p)))return p.v}},changeHistory:function(e,t){var r=o.call(this,"changeHistory",e,t||h),n=r._this,i=r.definition,a=r._resourceName,u=r._id,f=n.store[a];if(i.keepChangeHistory){if(!a)return f.changeHistory;var s=i.get(u);if(s)return f.changeHistories[u]}else i.errorFn("changeHistory is disabled for this resource!")},commit:function(e,t){var r=o.call(this,"commit",e,t),n=r._this,i=r.definition,a=r._resourceName,u=r._id,s=n.store[a],c=n.store[a].index[u];return c&&(s.previousAttributes[u]=f.default.copy(c,null,null,null,i.relationFields)), -s.changeHistories[u].length&&(f.default.forEach(s.changeHistories[u],function(e){f.default.remove(s.changeHistory,e)}),s.changeHistories[u].splice(0,s.changeHistories[u].length)),c},compute:function(e,t){var r=this,n=r.definitions[e];if(t=f.default.resolveItem(r.store[e],t),!n)throw new l(e);if(!t)throw new p("Item not in the store!");if(!f.default._o(t)&&!f.default._sn(t))throw new d('"instance" must be an object, string or number!');return f.default.forOwn(n.computed,function(e,r){f.default.compute.call(t,e,r)}),t},createInstance:function(e,t,r){var n=this.definitions[e],i=void 0;if(t=t||{},!n)throw new l(e);if(t&&!f.default.isObject(t))throw new d('"attrs" must be an object!');r=f.default._(n,r);var o=n.relationList||[];o.length&&f.default.forEach(o,function(e){var i=f.default.get(t,e.localField);i&&(f.default.isArray(i)?!function(){var o=[],a=n.getResource(e.relation),u=r.orig();f.default.forEach(i,function(e){o.push(a.createInstance(e,u))}),f.default.set(t,e.localField,o)}():f.default.isObject(i)&&f.default.set(t,e.localField,n.getResource(e.relation).createInstance(i,r.orig())))}),r.beforeCreateInstance(r,t);var a=n[n.class];return i=new a,n.instanceEvents&&f.default.Events(i),r.defaultValues&&f.default.deepMixIn(i,f.default.copy(r.defaultValues)),f.default.deepMixIn(i,t),n.computed&&n.compute(i),r.afterCreateInstance(r,i),i},createCollection:function(e,t,r,n){var i=this,o=i.definitions[e];if(t=t||[],r=r||{},!o)throw new l(e);if(t&&!f.default.isArray(t))throw new d('"arr" must be an array!');return n=f.default._(o,n),n.beforeCreateCollection(n,t),Object.defineProperties(t,{fetch:{value:function(t,r){var n=this;return n.params=t||n.params,o.findAll(n.params,r).then(function(t){return t===n?n:(t.unshift(n.length),t.unshift(0),n.splice.apply(n,t),t.shift(),t.shift(),t.$$injected&&(i.store[e].queryData[f.default.toJson(n.params)]=n,n.$$injected=!0),n)})}},params:{value:r,writable:!0},resourceName:{value:e}}),n.afterCreateCollection(n,t),t},defineResource:r(42),digest:function(){this.observe.Platform.performMicrotaskCheckpoint()},eject:r(43),ejectAll:r(44),filter:r(45),get:function(e,t){var r=o.call(this,"get",e,t),n=r._this,i=r._resourceName,a=r._id;return n.store[i].index[a]},getAll:function(e,t){var r=this,n=r.definitions[e],i=r.store[e],o=[];if(!n)throw new l(e);if(t&&!f.default._a(t))throw f.default._aErr("ids");if(f.default._a(t))for(var a=t.length,u=0;a>u;u++)i.index[t[u]]&&o.push(i.index[t[u]]);else o=i.collection.slice();return o},hasChanges:function(e,t){var r=o.call(this,"hasChanges",e,t),n=r.definition,a=r._id;return n.get(a)?i(n.changes(a)):!1},inject:r(46),isNew:function(e,t){var r=o.call(this,"isNew",e,t||h),n=r._this,i=r._resourceName,a=r._id,u=n.store[i];return!!u.temporaryItems[a]},lastModified:function(e,t){var r=o.call(this,"lastModified",e,t||h),n=r._this,i=r._resourceName,a=r._id,u=n.store[i];return a?(a in u.modified||(u.modified[a]=0),u.modified[a]):u.collectionModified},lastSaved:function(e,t){var r=o.call(this,"lastSaved",e,t||h),n=r._this,i=r._resourceName,a=r._id,u=n.store[i];return a in u.saved||(u.saved[a]=0),u.saved[a]},previous:function(e,t){var r=o.call(this,"previous",e,t),n=r._this,i=r._resourceName,a=r._id,u=n.store[i];return u.previousAttributes[a]?f.default.copy(u.previousAttributes[a]):void 0},revert:function(e,t,r){var n=o.call(this,"revert",e,t,r),i=n._this,u=n.definition,s=n._resourceName,c=n._id,l=n._options,d=l.preserve||[],p={};if(0===d.length)p=i.previous(s,c);else{var h=function(){var e=u.get(t),r=i.previous(s,c);return e?void f.default.forOwn(e,function(t,n){f.default.contains(d,n)?p[n]=e[n]:p[n]=r[n]}):{v:void 0}}();if("object"===("undefined"==typeof h?"undefined":a(h)))return h.v}return u.inject(p,{onConflict:"replace"})}}},function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}var i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e},o=r(2),a=n(o),u=r(3),f=n(u),s=["compute","eject","refresh","save","update","destroy","loadRelations","changeHistory","changes","commit","hasChanges","isNew","lastModified","lastSaved","previous","revert"];e.exports=function(e){function t(t){this.defaultValues={},this.methods={},this.computed={},this.scopes={},this.actions={},a.default.deepMixIn(this,t);var i=r.defaults;e.extends&&n[e.extends]&&(i=n[e.extends]),a.default.fillIn(this.defaultValues,i.defaultValues),a.default.fillIn(this.methods,i.methods),a.default.fillIn(this.computed,i.computed),a.default.fillIn(this.scopes,i.scopes),a.default.fillIn(this.actions,i.actions),this.endpoint="endpoint"in t?t.endpoint:this.name}var r=this,n=r.definitions;if(a.default._s(e)&&(e={name:e.replace(/\s/gi,"")}),!a.default._o(e))throw a.default._oErr("definition");if(!a.default._s(e.name))throw new f.default.IA('"name" must be a string!');if(n[e.name])throw new f.default.R(e.name+" is already registered!");try{var o,u,c=function(){if(e.extends&&n[e.extends]?t.prototype=n[e.extends]:t.prototype=r.defaults,n[e.name]=new t(e),o=n[e.name],o.getResource=function(e){return r.definitions[e]},!a.default._s(o.idAttribute))throw new f.default.IA('"idAttribute" must be a string!');o.relations&&(o.relationList=[],o.relationFields=[],a.default.forOwn(o.relations,function(e,t){a.default.forOwn(e,function(r,n){a.default._a(r)||(e[n]=[r]),a.default.forEach(e[n],function(e){e.type=t,e.relation=n,e.name=o.name,o.relationList.push(e),e.localField&&o.relationFields.push(e.localField)})})}),o.relations.belongsTo&&(o.parents={},a.default.forOwn(o.relations.belongsTo,function(e,t){a.default.forEach(e,function(e){e.parent&&(o.parent=t,o.parentKey=e.localKey,o.parentField=e.localField,o.parents[t]={key:o.parentKey,field:o.parentField})})})),"function"==typeof Object.freeze&&(Object.freeze(o.relations),Object.freeze(o.relationList))),u=o.class=a.default.pascalCase(o.name);try{"function"==typeof o.useClass?(o.csp?o[u]=function(){o.useClass.call(this)}:o[u]=new Function("def","return function "+u+"() { def.useClass.call(this); }")(o),o[u].prototype=function(e){function t(){}return t.prototype=e,new t}(o.useClass.prototype)):o.csp?o[u]=function(){}:o[u]=new Function("return function "+u+"() {}")()}catch(e){o[u]=function(){}}a.default.forOwn(o.methods,function(e,t){o[u].prototype[t]=e}),o[u].prototype.set=function(e,t){var r=this;return a.default.set(this,e,t),o.compute(this),o.instanceEvents&&setTimeout(function(){r.emit("DS.change",o,r)},0),o.handleChange(this),this},o[u].prototype.get=function(e){return a.default.get(this,e)},a.default.applyRelationGettersToTarget(r,o,o[u].prototype);var i=null;o.hasOwnProperty("omit")?i=r.defaults.omit:(i=o.omit,o.omit=[]),o.omit=o.omit.concat(i||[]),a.default.forOwn(o.computed,function(e,t){if(a.default.isFunction(e)&&(o.computed[t]=[e],e=o.computed[t]),o.methods&&t in o.methods&&o.errorFn('Computed property "'+t+'" conflicts with previously defined prototype method!'),o.omit.push(t),a.default.isArray(e)){var r;if(1===e.length){var n=e[0].toString().match(/function.*?\(([\s\S]*?)\)/);r=n[1].split(","),r=a.default.filter(r,function(e){return e}),o.computed[t]=r.concat(e),e=o.computed[t],r.length&&o.errorFn("Use the computed property array syntax for compatibility with minified code!")}r=e.slice(0,e.length-1),a.default.forEach(r,function(e,t){r[t]=e.trim()}),e.deps=a.default.filter(r,function(e){return!!e})}else a.default.isObject(e)&&Object.defineProperty(o[u].prototype,t,e)}),a.default.forEach(s,function(e){o[u].prototype["DS"+a.default.pascalCase(e)]=function(){for(var t=arguments.length,n=Array(t),i=0;t>i;i++)n[i]=arguments[i];return n.unshift(this[o.idAttribute]||this),n.unshift(o.name),r[e].apply(r,n)}}),o[u].prototype.DSCreate=function(){for(var e=arguments.length,t=Array(e),n=0;e>n;n++)t[n]=arguments[n];return t.unshift(this),t.unshift(o.name),r.create.apply(r,t)},r.store[o.name]={collection:[],expiresHeap:new a.default.BinaryHeap(function(e){return e.expires},function(e,t){return e.item===t}),completedQueries:{},queryData:{},pendingQueries:{},index:{},modified:{},saved:{},previousAttributes:{},observers:{},changeHistories:{},changeHistory:[],collectionModified:0,temporaryItems:{}};var c=r.store[o.name];o.reapInterval&&setInterval(function(){return o.reap()},o.reapInterval);var l=["registerAdapter","getAdapterName","getAdapter","is","!clear"];for(var d in r)"function"==typeof r[d]&&l.push(d);a.default.forEach(l,function(e){var t=e;"!"!==t[0]&&(r[t].shorthand!==!1?(o[t]=function(){for(var e=arguments.length,n=Array(e),i=0;e>i;i++)n[i]=arguments[i];return n.unshift(o.name),r[t].apply(r,n)},o[t].before=function(e){var r=o[t];o[t]=function(){for(var t=arguments.length,n=Array(t),i=0;t>i;i++)n[i]=arguments[i];return r.apply(o,e.apply(o,n)||n)}}):o[t]=function(){for(var e=arguments.length,n=Array(e),i=0;e>i;i++)n[i]=arguments[i];return r[t].apply(r,n)})}),o.beforeValidate=a.default.promisify(o.beforeValidate),o.validate=a.default.promisify(o.validate),o.afterValidate=a.default.promisify(o.afterValidate),o.beforeCreate=a.default.promisify(o.beforeCreate),o.afterCreate=a.default.promisify(o.afterCreate),o.afterFind=a.default.promisify(o.afterFind),o.afterFindAll=a.default.promisify(o.afterFindAll),o.afterLoadRelations=a.default.promisify(o.afterLoadRelations),o.beforeUpdate=a.default.promisify(o.beforeUpdate),o.afterUpdate=a.default.promisify(o.afterUpdate),o.beforeDestroy=a.default.promisify(o.beforeDestroy),o.afterDestroy=a.default.promisify(o.afterDestroy);var p=void 0;return o.hasOwnProperty("defaultAdapter")&&(p=o.defaultAdapter),a.default.forOwn(o.actions,function(e,t){if(o[t]&&!o.actions[t])throw new Error('Cannot override existing method "'+t+'"!');e.request=e.request||function(e){return e},e.response=e.response||function(e){return e},e.responseError=e.responseError||function(e){return a.default.Promise.reject(e)},o[t]=function(r,n){a.default._o(r)&&(n=r),n=n||{};var i=o.getAdapter(e.adapter||p||"http"),u=a.default.deepMixIn({},e);if(!n.hasOwnProperty("endpoint")&&u.endpoint&&(n.endpoint=u.endpoint),"function"==typeof n.getEndpoint)u.url=n.getEndpoint(o,n);else{var f=[n.basePath||o.basePath||i.defaults.basePath,i.getEndpoint(o,a.default._sn(r)?r:null,n)];a.default._sn(r)&&f.push(r),f.push(e.pathname||t),u.url=a.default.makePath.apply(null,f)}return u.method=u.method||"GET",u.resourceName=o.name,a.default.deepMixIn(u,n),new a.default.Promise(function(e){return e(u)}).then(n.request||e.request).then(function(e){return i.HTTP(e)}).then(function(e){return e&&e.config&&(e.config.resourceName=o.name),e}).then(n.response||e.response,n.responseError||e.responseError)}}),a.default.Events(o),o.handleChange=function(e){c.collectionModified=a.default.updateTimestamp(c.collectionModified),o.notify&&setTimeout(function(){o.emit("DS.change",o,e)},0)},{v:o}}();if("object"===("undefined"==typeof c?"undefined":i(c)))return c.v}catch(t){throw r.defaults.errorFn(t),delete n[e.name],delete r.store[e.name],t}}},function(e,t){"use strict";var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e};e.exports=function(e,t,n){var i=this,o=i.utils,a=i.definitions[e],u=i.store[e],f=void 0,s=!1;if(t=o.resolveId(a,t),!a)throw new i.errors.NER(e);if(!o._sn(t))throw o._snErr("id");n=o._(a,n);for(var c=0;c",major:parseInt("<%= major %>",10),minor:parseInt("<%= minor %>",10),patch:parseInt("<%= patch %>",10),alpha:"<%= alpha %>",beta:"<%= beta %>"}}},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t,n){n(null,t)}function a(e,t){return t}function u(e,t,n,r){var i=e[t],o=h.default.get(n,i[0]),a=h.default.get(r,i[0]);return h.default._s(o)&&(o=h.default.upperCase(o)),h.default._s(a)&&(a=h.default.upperCase(a)),"DESC"===i[1]?ao?1:ta?1:t"===o?a=f>r:">="===o?a=f>=r:"<"===o?a=f0;){var o=Math.floor((n+1)/2)-1,a=e[o];if(i>=t(a))break;e[o]=r,e[n]=a,n=o}},n=function(e,t,n){for(var r=e.length,i=e[n],o=t(i);;){var a=2*(n+1),u=a-1,f=null;if(u0&&(this.heap[0]=t,n(this.heap,this.weightFunc,0)),e},r.remove=function(e){for(var r=this.heap.length,i=0;i-1&&(e=e.replace(/[\xC0-\xC5]/g,"A").replace(/[\xC6]/g,"AE").replace(/[\xC7]/g,"C").replace(/[\xC8-\xCB]/g,"E").replace(/[\xCC-\xCF]/g,"I").replace(/[\xD0]/g,"D").replace(/[\xD1]/g,"N").replace(/[\xD2-\xD6\xD8]/g,"O").replace(/[\xD9-\xDC]/g,"U").replace(/[\xDD]/g,"Y").replace(/[\xDE]/g,"P").replace(/[\xE0-\xE5]/g,"a").replace(/[\xE6]/g,"ae").replace(/[\xE7]/g,"c").replace(/[\xE8-\xEB]/g,"e").replace(/[\xEC-\xEF]/g,"i").replace(/[\xF1]/g,"n").replace(/[\xF2-\xF6\xF8]/g,"o").replace(/[\xF9-\xFC]/g,"u").replace(/[\xFE]/g,"p").replace(/[\xFD\xFF]/g,"y")),e}var i=n(15);e.exports=r},function(e,t,n){function r(e){return e=i(e),e.replace(o,"")}var i=n(15),o=/[^\x20\x2D0-9A-Z\x5Fa-z\xC0-\xD6\xD8-\xF6\xF8-\xFF]/g;e.exports=r},function(e,t,n){function r(e){return e=i(e),e.toUpperCase()}var i=n(15);e.exports=r},function(e,t,n){function r(e){return e=i(e),e.toLowerCase()}var i=n(15);e.exports=r},function(e,t,n){function r(e,t){var n=i(e,t);n!==-1&&e.splice(n,1)}var i=n(11);e.exports=r},function(e,t,n){function r(e,t){for(var n,r="string"!=typeof arguments[1]?arguments[1]:i(arguments,1),o={},a=0;n=r[a++];)o[n]=e[n];return o}var i=n(6);e.exports=r},function(e,t,n){var r=n(7),i=Object.keys||function(e){var t=[];return r(e,function(e,n){t.push(n)}),t};e.exports=i},function(e,t){function n(e,t){if(null==e)return[];if(e.length<2)return e;null==t&&(t=r);var o,a,u;return o=~~(e.length/2),a=n(e.slice(0,o),t),u=n(e.slice(o,e.length),t),i(a,u,t)}function r(e,t){return et?1:0}function i(e,t,n){for(var r=[];e.length&&t.length;)n(e[0],t[0])<=0?r.push(e.shift()):r.push(t.shift());return e.length&&r.push.apply(r,e),t.length&&r.push.apply(r,t),r}e.exports=n},function(e,t,n){function r(e,t){for(var n=t.split("."),r=n.pop();t=n.shift();)if(e=e[t],null==e)return;return e[r]}n(26);e.exports=r},function(e,t){function n(e){switch(typeof e){case"string":case"number":case"boolean":return!0}return null==e}e.exports=n},function(e,t,n){function r(e,t,n){var r=/^(.+)\.(.+)$/.exec(t);r?i(e,r[1])[r[2]]=n:e[t]=n}var i=n(28);e.exports=r},function(e,t,n){function r(e,t){return t?(i(t.split("."),function(t){e[t]||(e[t]={}),e=e[t]}),e):e}var i=n(5);e.exports=r},function(e,t){!function(e){function t(){function e(e){t=e}if("function"!=typeof Object.observe||"function"!=typeof Array.observe)return!1;var t=[],n={},r=[];return Object.observe(n,e),Array.observe(r,e),n.id=1,n.id=2,delete n.id,r.push(1,2),r.length=0,Object.deliverChangeRecords(e),5===t.length&&("add"==t[0].type&&"update"==t[1].type&&"delete"==t[2].type&&"splice"==t[3].type&&"splice"==t[4].type&&(Object.unobserve(n,e),Array.unobserve(r,e),!0))}function n(t){for(var n=0;n0}function r(e){for(var t in e)return!1;return!0}function i(e){return r(e.added)&&r(e.removed)&&r(e.changed)}function o(e,t){if(!t||!t.length)return!1;for(var n,r=0;r0?e:6;for(var t="";e--;)t+=i(o);return t}var i=n(32),o="0123456789abcdef".split("");e.exports=r},function(e,t,n){function r(e){var t=1===arguments.length&&o(e)?e:arguments;return t[i(0,t.length-1)]}var i=n(33),o=n(38);e.exports=r},function(e,t,n){function r(e,t){return e=null==e?i:~~e,t=null==t?o:~~t,Math.round(a(e-.5,t+.499999999999))}var i=n(34),o=n(35),a=n(36);e.exports=r},function(e,t){e.exports=-2147483648},function(e,t){e.exports=2147483647},function(e,t,n){function r(e,t){return e=null==e?o:e,t=null==t?a:t,e+(t-e)*i()}var i=n(37),o=n(34),a=n(35);e.exports=r},function(e,t){function n(){return n.get()}n.get=Math.random,e.exports=n},function(e,t,n){var r=n(39),i=Array.isArray||function(e){return r(e,"Array")};e.exports=i},function(e,t,n){function r(e,t){return i(e)===t}var i=n(40);e.exports=r},function(e,t){function n(e){return null===e?"Null":e===r?"Undefined":i.exec(o.call(e))[1]}var r,i=/^\[object (.*)\]$/,o=Object.prototype.toString;e.exports=n},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(e){return!(f.default.isEmpty(e.added)&&f.default.isEmpty(e.removed)&&f.default.isEmpty(e.changed))}function o(e,t,n,r){var i=this,o=i.definitions[t];if(r=r||{},n=f.default.resolveId(o,n),!o)throw new l(t);if(!f.default._sn(n))throw f.default._snErr("id");return n=n===h?void 0:n,r=f.default._(o,r),{_this:i,definition:o,_resourceName:t,_id:n,_options:r}}Object.defineProperty(t,"__esModule",{value:!0});var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e},u=n(2),f=r(u),s=n(3),c=r(s),l=c.default.NER,d=c.default.IA,p=c.default.R,h="DS_"+(new Date).getTime();t.default={changes:function(e,t,n){var r=o.call(this,"changes",e,t,n),i=r._this,u=r.definition,s=r._resourceName,c=r._id,l=r._options,d=u.get(c);if(d){var p=function(){var e=i.store[s].observers[c];e&&"function"==typeof e&&e.deliver();var t=l.ignoredChanges||[];f.default.forEach(u.relationFields,function(e){f.default.contains(t,e)||t.push(e)});var n=f.default.diffObjectFromOldObject(d,i.store[s].previousAttributes[c],f.default.equals,t);return f.default.forOwn(n,function(e,t){var r=[];f.default.forOwn(e,function(e,t){f.default.isFunction(e)||r.push(t)}),n[t]=f.default.pick(n[t],r)}),f.default.forEach(u.relationFields,function(e){delete n.added[e],delete n.removed[e],delete n.changed[e]}),{v:n}}();if("object"===("undefined"==typeof p?"undefined":a(p)))return p.v}},changeHistory:function(e,t){var n=o.call(this,"changeHistory",e,t||h),r=n._this,i=n.definition,a=n._resourceName,u=n._id,f=r.store[a];if(i.keepChangeHistory){if(!a)return f.changeHistory;var s=i.get(u);if(s)return f.changeHistories[u]}else i.errorFn("changeHistory is disabled for this resource!")},commit:function(e,t){var n=o.call(this,"commit",e,t),r=n._this,i=n.definition,a=n._resourceName,u=n._id,s=r.store[a],c=r.store[a].index[u];if(c){var l=i.relationFields||[],d={};for(var p in c)l.indexOf(p)===-1&&(d[p]=f.default.copy(c[p],null,null,null,[]));s.previousAttributes[u]=d}return s.changeHistories[u].length&&(f.default.forEach(s.changeHistories[u],function(e){ +f.default.remove(s.changeHistory,e)}),s.changeHistories[u].splice(0,s.changeHistories[u].length)),c},compute:function(e,t){var n=this,r=n.definitions[e];if(t=f.default.resolveItem(n.store[e],t),!r)throw new l(e);if(!t)throw new p("Item not in the store!");if(!f.default._o(t)&&!f.default._sn(t))throw new d('"instance" must be an object, string or number!');return f.default.forOwn(r.computed,function(e,n){f.default.compute.call(t,e,n)}),t},createInstance:function(e,t,n){var r=this.definitions[e],i=void 0;if(t=t||{},!r)throw new l(e);if(t&&!f.default.isObject(t))throw new d('"attrs" must be an object!');n=f.default._(r,n);var o=r.relationList||[];o.length&&f.default.forEach(o,function(e){var i=f.default.get(t,e.localField);i&&(f.default.isArray(i)?!function(){var o=[],a=r.getResource(e.relation),u=n.orig();f.default.forEach(i,function(e){o.push(a.createInstance(e,u))}),f.default.set(t,e.localField,o)}():f.default.isObject(i)&&f.default.set(t,e.localField,r.getResource(e.relation).createInstance(i,n.orig())))}),n.beforeCreateInstance(n,t);var a=r[r.class];return i=new a,r.instanceEvents&&f.default.Events(i),n.defaultValues&&f.default.deepMixIn(i,f.default.copy(n.defaultValues)),f.default.deepMixIn(i,t),r.computed&&r.compute(i),n.afterCreateInstance(n,i),i},createCollection:function(e,t,n,r){var i=this,o=i.definitions[e];if(t=t||[],n=n||{},!o)throw new l(e);if(t&&!f.default.isArray(t))throw new d('"arr" must be an array!');return r=f.default._(o,r),r.beforeCreateCollection(r,t),Object.defineProperties(t,{fetch:{value:function(t,n){var r=this;return r.params=t||r.params,o.findAll(r.params,n).then(function(t){return t===r?r:(t.unshift(r.length),t.unshift(0),r.splice.apply(r,t),t.shift(),t.shift(),t.$$injected&&(i.store[e].queryData[f.default.toJson(r.params)]=r,r.$$injected=!0),r)})}},params:{value:n,writable:!0},resourceName:{value:e}}),r.afterCreateCollection(r,t),t},defineResource:n(42),digest:function(){this.observe.Platform.performMicrotaskCheckpoint()},eject:n(43),ejectAll:n(44),filter:n(45),get:function(e,t){var n=o.call(this,"get",e,t),r=n._this,i=n._resourceName,a=n._id;return r.store[i].index[a]},getAll:function(e,t){var n=this,r=n.definitions[e],i=n.store[e],o=[];if(!r)throw new l(e);if(t&&!f.default._a(t))throw f.default._aErr("ids");if(f.default._a(t))for(var a=t.length,u=0;u