{"version":3,"sources":["webpack:///./node_modules/store/src/util.js","webpack:///./node_modules/store/dist/store.legacy.js","webpack:///./node_modules/store/src/store-engine.js","webpack:///./node_modules/store/storages/all.js","webpack:///./node_modules/store/storages/localStorage.js","webpack:///./node_modules/store/storages/oldFF-globalStorage.js","webpack:///./node_modules/store/storages/oldIE-userDataStorage.js","webpack:///./node_modules/store/storages/cookieStorage.js","webpack:///./node_modules/store/storages/sessionStorage.js","webpack:///./node_modules/store/storages/memoryStorage.js","webpack:///./node_modules/store/plugins/json2.js","webpack:///./node_modules/store/plugins/lib/json2.js"],"names":["Object","assign","obj","props1","props2","etc","i","arguments","length","each","val","key","create","assignProps1","assignProps2","assignArgsList","slice","apply","this","concat","F","prototype","make_create","trim","String","str","call","replace","Global","window","global","arr","index","Array","fn","pluck","isList","hasOwnProperty","module","exports","bind","map","res","v","k","isFunction","toString","isObject","engine","storages","plugins","createStore","util","_createStore","storeAPI","version","enabled","get","optionalDefaultValue","data","storage","read","_namespacePrefix","_deserialize","set","value","undefined","remove","write","_serialize","callback","self","namespacedKey","_namespaceRegexp","clearAll","hasNamespace","namespace","addPlugin","plugin","_addPlugin","_namespace","namespacePrefix","namespaceRegexp","RegExp","test","Error","_privateStoreProps","_testStorage","testStr","ok","e","_assignPluginFnProp","pluginFnProp","propName","oldFn","args","super_fn","arg","newFnArgs","JSON","stringify","strVal","defaultVal","parse","_addStorage","seenPlugin","push","pluginProperties","name","addStorage","_console","console","warn","log","_warn","store","raw","prop","localStorage","getItem","setItem","removeItem","clear","globalStorage","_","unfixedKey","disable","fixedKey","fixKey","_withStorageEl","storageEl","setAttribute","save","storageName","getAttribute","attributes","XMLDocument","documentElement","attr","removeAttribute","load","doc","document","addBehavior","storageOwner","storageContainer","scriptTag","ActiveXObject","open","close","w","frames","createElement","body","storeFunction","unshift","appendChild","removeChild","_makeIEStorageElFunction","navigator","userAgent","match","forbiddenCharsRegex","_has","regexpStr","escape","unescape","cookie","cookies","split","kvp","sessionStorage","memoryStorage","_typeof","Symbol","iterator","constructor","rx_one","rx_two","rx_three","rx_four","rx_escapable","rx_dangerous","gap","indent","meta","rep","f","n","this_value","valueOf","quote","string","lastIndex","a","c","charCodeAt","holder","partial","mind","toJSON","isFinite","join","Date","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","Boolean","Number","replacer","space","text","reviver","j","walk","eval","SyntaxError"],"mappings":"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","file":"js/17-5bdfb09addd8b882e684.chunk.js","sourcesContent":["var assign = make_assign();\nvar create = make_create();\nvar trim = make_trim();\nvar Global = typeof window !== 'undefined' ? window : global;\nmodule.exports = {\n assign: assign,\n create: create,\n trim: trim,\n bind: bind,\n slice: slice,\n each: each,\n map: map,\n pluck: pluck,\n isList: isList,\n isFunction: isFunction,\n isObject: isObject,\n Global: Global\n};\n\nfunction make_assign() {\n if (Object.assign) {\n return Object.assign;\n } else {\n return function shimAssign(obj, props1, props2, etc) {\n for (var i = 1; i < arguments.length; i++) {\n each(Object(arguments[i]), function (val, key) {\n obj[key] = val;\n });\n }\n\n return obj;\n };\n }\n}\n\nfunction make_create() {\n if (Object.create) {\n return function create(obj, assignProps1, assignProps2, etc) {\n var assignArgsList = slice(arguments, 1);\n return assign.apply(this, [Object.create(obj)].concat(assignArgsList));\n };\n } else {\n function F() {} // eslint-disable-line no-inner-declarations\n\n\n return function create(obj, assignProps1, assignProps2, etc) {\n var assignArgsList = slice(arguments, 1);\n F.prototype = obj;\n return assign.apply(this, [new F()].concat(assignArgsList));\n };\n }\n}\n\nfunction make_trim() {\n if (String.prototype.trim) {\n return function trim(str) {\n return String.prototype.trim.call(str);\n };\n } else {\n return function trim(str) {\n return str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n };\n }\n}\n\nfunction bind(obj, fn) {\n return function () {\n return fn.apply(obj, Array.prototype.slice.call(arguments, 0));\n };\n}\n\nfunction slice(arr, index) {\n return Array.prototype.slice.call(arr, index || 0);\n}\n\nfunction each(obj, fn) {\n pluck(obj, function (val, key) {\n fn(val, key);\n return false;\n });\n}\n\nfunction map(obj, fn) {\n var res = isList(obj) ? [] : {};\n pluck(obj, function (v, k) {\n res[k] = fn(v, k);\n return false;\n });\n return res;\n}\n\nfunction pluck(obj, fn) {\n if (isList(obj)) {\n for (var i = 0; i < obj.length; i++) {\n if (fn(obj[i], i)) {\n return obj[i];\n }\n }\n } else {\n for (var key in obj) {\n if (obj.hasOwnProperty(key)) {\n if (fn(obj[key], key)) {\n return obj[key];\n }\n }\n }\n }\n}\n\nfunction isList(val) {\n return val != null && typeof val != 'function' && typeof val.length == 'number';\n}\n\nfunction isFunction(val) {\n return val && {}.toString.call(val) === '[object Function]';\n}\n\nfunction isObject(val) {\n return val && {}.toString.call(val) === '[object Object]';\n}","var engine = require('../src/store-engine');\n\nvar storages = require('../storages/all');\n\nvar plugins = [require('../plugins/json2')];\nmodule.exports = engine.createStore(storages, plugins);","var util = require('./util');\n\nvar slice = util.slice;\nvar pluck = util.pluck;\nvar each = util.each;\nvar bind = util.bind;\nvar create = util.create;\nvar isList = util.isList;\nvar isFunction = util.isFunction;\nvar isObject = util.isObject;\nmodule.exports = {\n createStore: _createStore\n};\nvar storeAPI = {\n version: '2.0.12',\n enabled: false,\n // get returns the value of the given key. If that value\n // is undefined, it returns optionalDefaultValue instead.\n get: function get(key, optionalDefaultValue) {\n var data = this.storage.read(this._namespacePrefix + key);\n return this._deserialize(data, optionalDefaultValue);\n },\n // set will store the given value at key and returns value.\n // Calling set with value === undefined is equivalent to calling remove.\n set: function set(key, value) {\n if (value === undefined) {\n return this.remove(key);\n }\n\n this.storage.write(this._namespacePrefix + key, this._serialize(value));\n return value;\n },\n // remove deletes the key and value stored at the given key.\n remove: function remove(key) {\n this.storage.remove(this._namespacePrefix + key);\n },\n // each will call the given callback once for each key-value pair\n // in this store.\n each: function each(callback) {\n var self = this;\n this.storage.each(function (val, namespacedKey) {\n callback.call(self, self._deserialize(val), (namespacedKey || '').replace(self._namespaceRegexp, ''));\n });\n },\n // clearAll will remove all the stored key-value pairs in this store.\n clearAll: function clearAll() {\n this.storage.clearAll();\n },\n // additional functionality that can't live in plugins\n // ---------------------------------------------------\n // hasNamespace returns true if this store instance has the given namespace.\n hasNamespace: function hasNamespace(namespace) {\n return this._namespacePrefix == '__storejs_' + namespace + '_';\n },\n // createStore creates a store.js instance with the first\n // functioning storage in the list of storage candidates,\n // and applies the the given mixins to the instance.\n createStore: function createStore() {\n return _createStore.apply(this, arguments);\n },\n addPlugin: function addPlugin(plugin) {\n this._addPlugin(plugin);\n },\n namespace: function namespace(_namespace) {\n return _createStore(this.storage, this.plugins, _namespace);\n }\n};\n\nfunction _warn() {\n var _console = typeof console == 'undefined' ? null : console;\n\n if (!_console) {\n return;\n }\n\n var fn = _console.warn ? _console.warn : _console.log;\n fn.apply(_console, arguments);\n}\n\nfunction _createStore(storages, plugins, namespace) {\n if (!namespace) {\n namespace = '';\n }\n\n if (storages && !isList(storages)) {\n storages = [storages];\n }\n\n if (plugins && !isList(plugins)) {\n plugins = [plugins];\n }\n\n var namespacePrefix = namespace ? '__storejs_' + namespace + '_' : '';\n var namespaceRegexp = namespace ? new RegExp('^' + namespacePrefix) : null;\n var legalNamespaces = /^[a-zA-Z0-9_\\-]*$/; // alpha-numeric + underscore and dash\n\n if (!legalNamespaces.test(namespace)) {\n throw new Error('store.js namespaces can only have alphanumerics + underscores and dashes');\n }\n\n var _privateStoreProps = {\n _namespacePrefix: namespacePrefix,\n _namespaceRegexp: namespaceRegexp,\n _testStorage: function _testStorage(storage) {\n try {\n var testStr = '__storejs__test__';\n storage.write(testStr, testStr);\n var ok = storage.read(testStr) === testStr;\n storage.remove(testStr);\n return ok;\n } catch (e) {\n return false;\n }\n },\n _assignPluginFnProp: function _assignPluginFnProp(pluginFnProp, propName) {\n var oldFn = this[propName];\n\n this[propName] = function pluginFn() {\n var args = slice(arguments, 0);\n var self = this; // super_fn calls the old function which was overwritten by\n // this mixin.\n\n function super_fn() {\n if (!oldFn) {\n return;\n }\n\n each(arguments, function (arg, i) {\n args[i] = arg;\n });\n return oldFn.apply(self, args);\n } // Give mixing function access to super_fn by prefixing all mixin function\n // arguments with super_fn.\n\n\n var newFnArgs = [super_fn].concat(args);\n return pluginFnProp.apply(self, newFnArgs);\n };\n },\n _serialize: function _serialize(obj) {\n return JSON.stringify(obj);\n },\n _deserialize: function _deserialize(strVal, defaultVal) {\n if (!strVal) {\n return defaultVal;\n } // It is possible that a raw string value has been previously stored\n // in a storage without using store.js, meaning it will be a raw\n // string value instead of a JSON serialized string. By defaulting\n // to the raw string value in case of a JSON parse error, we allow\n // for past stored values to be forwards-compatible with store.js\n\n\n var val = '';\n\n try {\n val = JSON.parse(strVal);\n } catch (e) {\n val = strVal;\n }\n\n return val !== undefined ? val : defaultVal;\n },\n _addStorage: function _addStorage(storage) {\n if (this.enabled) {\n return;\n }\n\n if (this._testStorage(storage)) {\n this.storage = storage;\n this.enabled = true;\n }\n },\n _addPlugin: function _addPlugin(plugin) {\n var self = this; // If the plugin is an array, then add all plugins in the array.\n // This allows for a plugin to depend on other plugins.\n\n if (isList(plugin)) {\n each(plugin, function (plugin) {\n self._addPlugin(plugin);\n });\n return;\n } // Keep track of all plugins we've seen so far, so that we\n // don't add any of them twice.\n\n\n var seenPlugin = pluck(this.plugins, function (seenPlugin) {\n return plugin === seenPlugin;\n });\n\n if (seenPlugin) {\n return;\n }\n\n this.plugins.push(plugin); // Check that the plugin is properly formed\n\n if (!isFunction(plugin)) {\n throw new Error('Plugins must be function values that return objects');\n }\n\n var pluginProperties = plugin.call(this);\n\n if (!isObject(pluginProperties)) {\n throw new Error('Plugins must return an object of function properties');\n } // Add the plugin function properties to this store instance.\n\n\n each(pluginProperties, function (pluginFnProp, propName) {\n if (!isFunction(pluginFnProp)) {\n throw new Error('Bad plugin property: ' + propName + ' from plugin ' + plugin.name + '. Plugins should only return functions.');\n }\n\n self._assignPluginFnProp(pluginFnProp, propName);\n });\n },\n // Put deprecated properties in the private API, so as to not expose it to accidential\n // discovery through inspection of the store object.\n // Deprecated: addStorage\n addStorage: function addStorage(storage) {\n _warn('store.addStorage(storage) is deprecated. Use createStore([storages])');\n\n this._addStorage(storage);\n }\n };\n var store = create(_privateStoreProps, storeAPI, {\n plugins: []\n });\n store.raw = {};\n each(store, function (prop, propName) {\n if (isFunction(prop)) {\n store.raw[propName] = bind(store, prop);\n }\n });\n each(storages, function (storage) {\n store._addStorage(storage);\n });\n each(plugins, function (plugin) {\n store._addPlugin(plugin);\n });\n return store;\n}","module.exports = [// Listed in order of usage preference\nrequire('./localStorage'), require('./oldFF-globalStorage'), require('./oldIE-userDataStorage'), require('./cookieStorage'), require('./sessionStorage'), require('./memoryStorage')];","var util = require('../src/util');\n\nvar Global = util.Global;\nmodule.exports = {\n name: 'localStorage',\n read: read,\n write: write,\n each: each,\n remove: remove,\n clearAll: clearAll\n};\n\nfunction localStorage() {\n return Global.localStorage;\n}\n\nfunction read(key) {\n return localStorage().getItem(key);\n}\n\nfunction write(key, data) {\n return localStorage().setItem(key, data);\n}\n\nfunction each(fn) {\n for (var i = localStorage().length - 1; i >= 0; i--) {\n var key = localStorage().key(i);\n fn(read(key), key);\n }\n}\n\nfunction remove(key) {\n return localStorage().removeItem(key);\n}\n\nfunction clearAll() {\n return localStorage().clear();\n}","// oldFF-globalStorage provides storage for Firefox\n// versions 6 and 7, where no localStorage, etc\n// is available.\nvar util = require('../src/util');\n\nvar Global = util.Global;\nmodule.exports = {\n name: 'oldFF-globalStorage',\n read: read,\n write: write,\n each: each,\n remove: remove,\n clearAll: clearAll\n};\nvar globalStorage = Global.globalStorage;\n\nfunction read(key) {\n return globalStorage[key];\n}\n\nfunction write(key, data) {\n globalStorage[key] = data;\n}\n\nfunction each(fn) {\n for (var i = globalStorage.length - 1; i >= 0; i--) {\n var key = globalStorage.key(i);\n fn(globalStorage[key], key);\n }\n}\n\nfunction remove(key) {\n return globalStorage.removeItem(key);\n}\n\nfunction clearAll() {\n each(function (key, _) {\n delete globalStorage[key];\n });\n}","// oldIE-userDataStorage provides storage for Internet Explorer\n// versions 6 and 7, where no localStorage, sessionStorage, etc\n// is available.\nvar util = require('../src/util');\n\nvar Global = util.Global;\nmodule.exports = {\n name: 'oldIE-userDataStorage',\n write: write,\n read: read,\n each: each,\n remove: remove,\n clearAll: clearAll\n};\nvar storageName = 'storejs';\nvar doc = Global.document;\n\nvar _withStorageEl = _makeIEStorageElFunction();\n\nvar disable = (Global.navigator ? Global.navigator.userAgent : '').match(/ (MSIE 8|MSIE 9|MSIE 10)\\./); // MSIE 9.x, MSIE 10.x\n\nfunction write(unfixedKey, data) {\n if (disable) {\n return;\n }\n\n var fixedKey = fixKey(unfixedKey);\n\n _withStorageEl(function (storageEl) {\n storageEl.setAttribute(fixedKey, data);\n storageEl.save(storageName);\n });\n}\n\nfunction read(unfixedKey) {\n if (disable) {\n return;\n }\n\n var fixedKey = fixKey(unfixedKey);\n var res = null;\n\n _withStorageEl(function (storageEl) {\n res = storageEl.getAttribute(fixedKey);\n });\n\n return res;\n}\n\nfunction each(callback) {\n _withStorageEl(function (storageEl) {\n var attributes = storageEl.XMLDocument.documentElement.attributes;\n\n for (var i = attributes.length - 1; i >= 0; i--) {\n var attr = attributes[i];\n callback(storageEl.getAttribute(attr.name), attr.name);\n }\n });\n}\n\nfunction remove(unfixedKey) {\n var fixedKey = fixKey(unfixedKey);\n\n _withStorageEl(function (storageEl) {\n storageEl.removeAttribute(fixedKey);\n storageEl.save(storageName);\n });\n}\n\nfunction clearAll() {\n _withStorageEl(function (storageEl) {\n var attributes = storageEl.XMLDocument.documentElement.attributes;\n storageEl.load(storageName);\n\n for (var i = attributes.length - 1; i >= 0; i--) {\n storageEl.removeAttribute(attributes[i].name);\n }\n\n storageEl.save(storageName);\n });\n} // Helpers\n//////////\n// In IE7, keys cannot start with a digit or contain certain chars.\n// See https://github.com/marcuswestin/store.js/issues/40\n// See https://github.com/marcuswestin/store.js/issues/83\n\n\nvar forbiddenCharsRegex = new RegExp(\"[!\\\"#$%&'()*+,/\\\\\\\\:;<=>?@[\\\\]^`{|}~]\", \"g\");\n\nfunction fixKey(key) {\n return key.replace(/^\\d/, '___$&').replace(forbiddenCharsRegex, '___');\n}\n\nfunction _makeIEStorageElFunction() {\n if (!doc || !doc.documentElement || !doc.documentElement.addBehavior) {\n return null;\n }\n\n var scriptTag = 'script',\n storageOwner,\n storageContainer,\n storageEl; // Since #userData storage applies only to specific paths, we need to\n // somehow link our data to a specific path. We choose /favicon.ico\n // as a pretty safe option, since all browsers already make a request to\n // this URL anyway and being a 404 will not hurt us here. We wrap an\n // iframe pointing to the favicon in an ActiveXObject(htmlfile) object\n // (see: http://msdn.microsoft.com/en-us/library/aa752574(v=VS.85).aspx)\n // since the iframe access rules appear to allow direct access and\n // manipulation of the document element, even for a 404 page. This\n // document can be used instead of the current document (which would\n // have been limited to the current path) to perform #userData storage.\n\n try {\n /* global ActiveXObject */\n storageContainer = new ActiveXObject('htmlfile');\n storageContainer.open();\n storageContainer.write('<' + scriptTag + '>document.w=window');\n storageContainer.close();\n storageOwner = storageContainer.w.frames[0].document;\n storageEl = storageOwner.createElement('div');\n } catch (e) {\n // somehow ActiveXObject instantiation failed (perhaps some special\n // security settings or otherwse), fall back to per-path storage\n storageEl = doc.createElement('div');\n storageOwner = doc.body;\n }\n\n return function (storeFunction) {\n var args = [].slice.call(arguments, 0);\n args.unshift(storageEl); // See http://msdn.microsoft.com/en-us/library/ms531081(v=VS.85).aspx\n // and http://msdn.microsoft.com/en-us/library/ms531424(v=VS.85).aspx\n\n storageOwner.appendChild(storageEl);\n storageEl.addBehavior('#default#userData');\n storageEl.load(storageName);\n storeFunction.apply(this, args);\n storageOwner.removeChild(storageEl);\n return;\n };\n}","// cookieStorage is useful Safari private browser mode, where localStorage\n// doesn't work but cookies do. This implementation is adopted from\n// https://developer.mozilla.org/en-US/docs/Web/API/Storage/LocalStorage\nvar util = require('../src/util');\n\nvar Global = util.Global;\nvar trim = util.trim;\nmodule.exports = {\n name: 'cookieStorage',\n read: read,\n write: write,\n each: each,\n remove: remove,\n clearAll: clearAll\n};\nvar doc = Global.document;\n\nfunction read(key) {\n if (!key || !_has(key)) {\n return null;\n }\n\n var regexpStr = \"(?:^|.*;\\\\s*)\" + escape(key).replace(/[\\-\\.\\+\\*]/g, \"\\\\$&\") + \"\\\\s*\\\\=\\\\s*((?:[^;](?!;))*[^;]?).*\";\n return unescape(doc.cookie.replace(new RegExp(regexpStr), \"$1\"));\n}\n\nfunction each(callback) {\n var cookies = doc.cookie.split(/; ?/g);\n\n for (var i = cookies.length - 1; i >= 0; i--) {\n if (!trim(cookies[i])) {\n continue;\n }\n\n var kvp = cookies[i].split('=');\n var key = unescape(kvp[0]);\n var val = unescape(kvp[1]);\n callback(val, key);\n }\n}\n\nfunction write(key, data) {\n if (!key) {\n return;\n }\n\n doc.cookie = escape(key) + \"=\" + escape(data) + \"; expires=Tue, 19 Jan 2038 03:14:07 GMT; path=/\";\n}\n\nfunction remove(key) {\n if (!key || !_has(key)) {\n return;\n }\n\n doc.cookie = escape(key) + \"=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/\";\n}\n\nfunction clearAll() {\n each(function (_, key) {\n remove(key);\n });\n}\n\nfunction _has(key) {\n return new RegExp(\"(?:^|;\\\\s*)\" + escape(key).replace(/[\\-\\.\\+\\*]/g, \"\\\\$&\") + \"\\\\s*\\\\=\").test(doc.cookie);\n}","var util = require('../src/util');\n\nvar Global = util.Global;\nmodule.exports = {\n name: 'sessionStorage',\n read: read,\n write: write,\n each: each,\n remove: remove,\n clearAll: clearAll\n};\n\nfunction sessionStorage() {\n return Global.sessionStorage;\n}\n\nfunction read(key) {\n return sessionStorage().getItem(key);\n}\n\nfunction write(key, data) {\n return sessionStorage().setItem(key, data);\n}\n\nfunction each(fn) {\n for (var i = sessionStorage().length - 1; i >= 0; i--) {\n var key = sessionStorage().key(i);\n fn(read(key), key);\n }\n}\n\nfunction remove(key) {\n return sessionStorage().removeItem(key);\n}\n\nfunction clearAll() {\n return sessionStorage().clear();\n}","// memoryStorage is a useful last fallback to ensure that the store\n// is functions (meaning store.get(), store.set(), etc will all function).\n// However, stored values will not persist when the browser navigates to\n// a new page or reloads the current page.\nmodule.exports = {\n name: 'memoryStorage',\n read: read,\n write: write,\n each: each,\n remove: remove,\n clearAll: clearAll\n};\nvar memoryStorage = {};\n\nfunction read(key) {\n return memoryStorage[key];\n}\n\nfunction write(key, data) {\n memoryStorage[key] = data;\n}\n\nfunction each(callback) {\n for (var key in memoryStorage) {\n if (memoryStorage.hasOwnProperty(key)) {\n callback(memoryStorage[key], key);\n }\n }\n}\n\nfunction remove(key) {\n delete memoryStorage[key];\n}\n\nfunction clearAll(key) {\n memoryStorage = {};\n}","module.exports = json2Plugin;\n\nfunction json2Plugin() {\n require('./lib/json2');\n\n return {};\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/* eslint-disable */\n// json2.js\n// 2016-10-28\n// Public Domain.\n// NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.\n// See http://www.JSON.org/js.html\n// This code should be minified before deployment.\n// See http://javascript.crockford.com/jsmin.html\n// USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO\n// NOT CONTROL.\n// This file creates a global JSON object containing two methods: stringify\n// and parse. This file provides the ES5 JSON capability to ES3 systems.\n// If a project might run on IE8 or earlier, then this file should be included.\n// This file does nothing on ES5 systems.\n// JSON.stringify(value, replacer, space)\n// value any JavaScript value, usually an object or array.\n// replacer an optional parameter that determines how object\n// values are stringified for objects. It can be a\n// function or an array of strings.\n// space an optional parameter that specifies the indentation\n// of nested structures. If it is omitted, the text will\n// be packed without extra whitespace. If it is a number,\n// it will specify the number of spaces to indent at each\n// level. If it is a string (such as \"\\t\" or \" \"),\n// it contains the characters used to indent at each level.\n// This method produces a JSON text from a JavaScript value.\n// When an object value is found, if the object contains a toJSON\n// method, its toJSON method will be called and the result will be\n// stringified. A toJSON method does not serialize: it returns the\n// value represented by the name/value pair that should be serialized,\n// or undefined if nothing should be serialized. The toJSON method\n// will be passed the key associated with the value, and this will be\n// bound to the value.\n// For example, this would serialize Dates as ISO strings.\n// Date.prototype.toJSON = function (key) {\n// function f(n) {\n// // Format integers to have at least two digits.\n// return (n < 10)\n// ? \"0\" + n\n// : n;\n// }\n// return this.getUTCFullYear() + \"-\" +\n// f(this.getUTCMonth() + 1) + \"-\" +\n// f(this.getUTCDate()) + \"T\" +\n// f(this.getUTCHours()) + \":\" +\n// f(this.getUTCMinutes()) + \":\" +\n// f(this.getUTCSeconds()) + \"Z\";\n// };\n// You can provide an optional replacer method. It will be passed the\n// key and value of each member, with this bound to the containing\n// object. The value that is returned from your method will be\n// serialized. If your method returns undefined, then the member will\n// be excluded from the serialization.\n// If the replacer parameter is an array of strings, then it will be\n// used to select the members to be serialized. It filters the results\n// such that only members with keys listed in the replacer array are\n// stringified.\n// Values that do not have JSON representations, such as undefined or\n// functions, will not be serialized. Such values in objects will be\n// dropped; in arrays they will be replaced with null. You can use\n// a replacer function to replace those with JSON values.\n// JSON.stringify(undefined) returns undefined.\n// The optional space parameter produces a stringification of the\n// value that is filled with line breaks and indentation to make it\n// easier to read.\n// If the space parameter is a non-empty string, then that string will\n// be used for indentation. If the space parameter is a number, then\n// the indentation will be that many spaces.\n// Example:\n// text = JSON.stringify([\"e\", {pluribus: \"unum\"}]);\n// // text is '[\"e\",{\"pluribus\":\"unum\"}]'\n// text = JSON.stringify([\"e\", {pluribus: \"unum\"}], null, \"\\t\");\n// // text is '[\\n\\t\"e\",\\n\\t{\\n\\t\\t\"pluribus\": \"unum\"\\n\\t}\\n]'\n// text = JSON.stringify([new Date()], function (key, value) {\n// return this[key] instanceof Date\n// ? \"Date(\" + this[key] + \")\"\n// : value;\n// });\n// // text is '[\"Date(---current time---)\"]'\n// JSON.parse(text, reviver)\n// This method parses a JSON text to produce an object or array.\n// It can throw a SyntaxError exception.\n// The optional reviver parameter is a function that can filter and\n// transform the results. It receives each of the keys and values,\n// and its return value is used instead of the original value.\n// If it returns what it received, then the structure is not modified.\n// If it returns undefined then the member is deleted.\n// Example:\n// // Parse the text. Values that look like ISO date strings will\n// // be converted to Date objects.\n// myData = JSON.parse(text, function (key, value) {\n// var a;\n// if (typeof value === \"string\") {\n// a =\n// /^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2}(?:\\.\\d*)?)Z$/.exec(value);\n// if (a) {\n// return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4],\n// +a[5], +a[6]));\n// }\n// }\n// return value;\n// });\n// myData = JSON.parse('[\"Date(09/09/2001)\"]', function (key, value) {\n// var d;\n// if (typeof value === \"string\" &&\n// value.slice(0, 5) === \"Date(\" &&\n// value.slice(-1) === \")\") {\n// d = new Date(value.slice(5, -1));\n// if (d) {\n// return d;\n// }\n// }\n// return value;\n// });\n// This is a reference implementation. You are free to copy, modify, or\n// redistribute.\n\n/*jslint\n eval, for, this\n*/\n\n/*property\n JSON, apply, call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours,\n getUTCMinutes, getUTCMonth, getUTCSeconds, hasOwnProperty, join,\n lastIndex, length, parse, prototype, push, replace, slice, stringify,\n test, toJSON, toString, valueOf\n*/\n// Create a JSON object only if one does not already exist. We create the\n// methods in a closure to avoid creating global variables.\nif ((typeof JSON === \"undefined\" ? \"undefined\" : _typeof(JSON)) !== \"object\") {\n JSON = {};\n}\n\n(function () {\n \"use strict\";\n\n var rx_one = /^[\\],:{}\\s]*$/;\n var rx_two = /\\\\(?:[\"\\\\\\/bfnrt]|u[0-9a-fA-F]{4})/g;\n var rx_three = /\"[^\"\\\\\\n\\r]*\"|true|false|null|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g;\n var rx_four = /(?:^|:|,)(?:\\s*\\[)+/g;\n var rx_escapable = /[\\\\\"\\u0000-\\u001f\\u007f-\\u009f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g;\n var rx_dangerous = /[\\u0000\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g;\n\n function f(n) {\n // Format integers to have at least two digits.\n return n < 10 ? \"0\" + n : n;\n }\n\n function this_value() {\n return this.valueOf();\n }\n\n if (typeof Date.prototype.toJSON !== \"function\") {\n Date.prototype.toJSON = function () {\n return isFinite(this.valueOf()) ? this.getUTCFullYear() + \"-\" + f(this.getUTCMonth() + 1) + \"-\" + f(this.getUTCDate()) + \"T\" + f(this.getUTCHours()) + \":\" + f(this.getUTCMinutes()) + \":\" + f(this.getUTCSeconds()) + \"Z\" : null;\n };\n\n Boolean.prototype.toJSON = this_value;\n Number.prototype.toJSON = this_value;\n String.prototype.toJSON = this_value;\n }\n\n var gap;\n var indent;\n var meta;\n var rep;\n\n function quote(string) {\n // If the string contains no control characters, no quote characters, and no\n // backslash characters, then we can safely slap some quotes around it.\n // Otherwise we must also replace the offending characters with safe escape\n // sequences.\n rx_escapable.lastIndex = 0;\n return rx_escapable.test(string) ? \"\\\"\" + string.replace(rx_escapable, function (a) {\n var c = meta[a];\n return typeof c === \"string\" ? c : \"\\\\u\" + (\"0000\" + a.charCodeAt(0).toString(16)).slice(-4);\n }) + \"\\\"\" : \"\\\"\" + string + \"\\\"\";\n }\n\n function str(key, holder) {\n // Produce a string from holder[key].\n var i; // The loop counter.\n\n var k; // The member key.\n\n var v; // The member value.\n\n var length;\n var mind = gap;\n var partial;\n var value = holder[key]; // If the value has a toJSON method, call it to obtain a replacement value.\n\n if (value && _typeof(value) === \"object\" && typeof value.toJSON === \"function\") {\n value = value.toJSON(key);\n } // If we were called with a replacer function, then call the replacer to\n // obtain a replacement value.\n\n\n if (typeof rep === \"function\") {\n value = rep.call(holder, key, value);\n } // What happens next depends on the value's type.\n\n\n switch (_typeof(value)) {\n case \"string\":\n return quote(value);\n\n case \"number\":\n // JSON numbers must be finite. Encode non-finite numbers as null.\n return isFinite(value) ? String(value) : \"null\";\n\n case \"boolean\":\n case \"null\":\n // If the value is a boolean or null, convert it to a string. Note:\n // typeof null does not produce \"null\". The case is included here in\n // the remote chance that this gets fixed someday.\n return String(value);\n // If the type is \"object\", we might be dealing with an object or an array or\n // null.\n\n case \"object\":\n // Due to a specification blunder in ECMAScript, typeof null is \"object\",\n // so watch out for that case.\n if (!value) {\n return \"null\";\n } // Make an array to hold the partial results of stringifying this object value.\n\n\n gap += indent;\n partial = []; // Is the value an array?\n\n if (Object.prototype.toString.apply(value) === \"[object Array]\") {\n // The value is an array. Stringify every element. Use null as a placeholder\n // for non-JSON values.\n length = value.length;\n\n for (i = 0; i < length; i += 1) {\n partial[i] = str(i, value) || \"null\";\n } // Join all of the elements together, separated with commas, and wrap them in\n // brackets.\n\n\n v = partial.length === 0 ? \"[]\" : gap ? \"[\\n\" + gap + partial.join(\",\\n\" + gap) + \"\\n\" + mind + \"]\" : \"[\" + partial.join(\",\") + \"]\";\n gap = mind;\n return v;\n } // If the replacer is an array, use it to select the members to be stringified.\n\n\n if (rep && _typeof(rep) === \"object\") {\n length = rep.length;\n\n for (i = 0; i < length; i += 1) {\n if (typeof rep[i] === \"string\") {\n k = rep[i];\n v = str(k, value);\n\n if (v) {\n partial.push(quote(k) + (gap ? \": \" : \":\") + v);\n }\n }\n }\n } else {\n // Otherwise, iterate through all of the keys in the object.\n for (k in value) {\n if (Object.prototype.hasOwnProperty.call(value, k)) {\n v = str(k, value);\n\n if (v) {\n partial.push(quote(k) + (gap ? \": \" : \":\") + v);\n }\n }\n }\n } // Join all of the member texts together, separated with commas,\n // and wrap them in braces.\n\n\n v = partial.length === 0 ? \"{}\" : gap ? \"{\\n\" + gap + partial.join(\",\\n\" + gap) + \"\\n\" + mind + \"}\" : \"{\" + partial.join(\",\") + \"}\";\n gap = mind;\n return v;\n }\n } // If the JSON object does not yet have a stringify method, give it one.\n\n\n if (typeof JSON.stringify !== \"function\") {\n meta = {\n // table of character substitutions\n \"\\b\": \"\\\\b\",\n \"\\t\": \"\\\\t\",\n \"\\n\": \"\\\\n\",\n \"\\f\": \"\\\\f\",\n \"\\r\": \"\\\\r\",\n \"\\\"\": \"\\\\\\\"\",\n \"\\\\\": \"\\\\\\\\\"\n };\n\n JSON.stringify = function (value, replacer, space) {\n // The stringify method takes a value and an optional replacer, and an optional\n // space parameter, and returns a JSON text. The replacer can be a function\n // that can replace values, or an array of strings that will select the keys.\n // A default replacer method can be provided. Use of the space parameter can\n // produce text that is more easily readable.\n var i;\n gap = \"\";\n indent = \"\"; // If the space parameter is a number, make an indent string containing that\n // many spaces.\n\n if (typeof space === \"number\") {\n for (i = 0; i < space; i += 1) {\n indent += \" \";\n } // If the space parameter is a string, it will be used as the indent string.\n\n } else if (typeof space === \"string\") {\n indent = space;\n } // If there is a replacer, it must be a function or an array.\n // Otherwise, throw an error.\n\n\n rep = replacer;\n\n if (replacer && typeof replacer !== \"function\" && (_typeof(replacer) !== \"object\" || typeof replacer.length !== \"number\")) {\n throw new Error(\"JSON.stringify\");\n } // Make a fake root object containing our value under the key of \"\".\n // Return the result of stringifying the value.\n\n\n return str(\"\", {\n \"\": value\n });\n };\n } // If the JSON object does not yet have a parse method, give it one.\n\n\n if (typeof JSON.parse !== \"function\") {\n JSON.parse = function (text, reviver) {\n // The parse method takes a text and an optional reviver function, and returns\n // a JavaScript value if the text is a valid JSON text.\n var j;\n\n function walk(holder, key) {\n // The walk method is used to recursively walk the resulting structure so\n // that modifications can be made.\n var k;\n var v;\n var value = holder[key];\n\n if (value && _typeof(value) === \"object\") {\n for (k in value) {\n if (Object.prototype.hasOwnProperty.call(value, k)) {\n v = walk(value, k);\n\n if (v !== undefined) {\n value[k] = v;\n } else {\n delete value[k];\n }\n }\n }\n }\n\n return reviver.call(holder, key, value);\n } // Parsing happens in four stages. In the first stage, we replace certain\n // Unicode characters with escape sequences. JavaScript handles many characters\n // incorrectly, either silently deleting them, or treating them as line endings.\n\n\n text = String(text);\n rx_dangerous.lastIndex = 0;\n\n if (rx_dangerous.test(text)) {\n text = text.replace(rx_dangerous, function (a) {\n return \"\\\\u\" + (\"0000\" + a.charCodeAt(0).toString(16)).slice(-4);\n });\n } // In the second stage, we run the text against regular expressions that look\n // for non-JSON patterns. We are especially concerned with \"()\" and \"new\"\n // because they can cause invocation, and \"=\" because it can cause mutation.\n // But just to be safe, we want to reject all unexpected forms.\n // We split the second stage into 4 regexp operations in order to work around\n // crippling inefficiencies in IE's and Safari's regexp engines. First we\n // replace the JSON backslash pairs with \"@\" (a non-JSON character). Second, we\n // replace all simple value tokens with \"]\" characters. Third, we delete all\n // open brackets that follow a colon or comma or that begin the text. Finally,\n // we look to see that the remaining characters are only whitespace or \"]\" or\n // \",\" or \":\" or \"{\" or \"}\". If that is so, then the text is safe for eval.\n\n\n if (rx_one.test(text.replace(rx_two, \"@\").replace(rx_three, \"]\").replace(rx_four, \"\"))) {\n // In the third stage we use the eval function to compile the text into a\n // JavaScript structure. The \"{\" operator is subject to a syntactic ambiguity\n // in JavaScript: it can begin a block or an object literal. We wrap the text\n // in parens to eliminate the ambiguity.\n j = eval(\"(\" + text + \")\"); // In the optional fourth stage, we recursively walk the new structure, passing\n // each name/value pair to a reviver function for possible transformation.\n\n return typeof reviver === \"function\" ? walk({\n \"\": j\n }, \"\") : j;\n } // If the text is not JSON parseable, then a SyntaxError is thrown.\n\n\n throw new SyntaxError(\"JSON.parse\");\n };\n }\n})();"],"sourceRoot":""}