Update frontend
[akkoma] / priv / static / sw-pleroma.js.map
index c704cb9519b7cab0c5aed5cded462676738dff4a..37a17be47d0a98e6e2c10de3e135064cdefb5a69 100644 (file)
@@ -1 +1 @@
-{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/localforage/dist/localforage.js","webpack:///./src/sw.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","f","define","amd","window","global","self","this","localforage","e","u","a","require","Error","code","length","1","_dereq_","scheduleDrain","draining","Mutation","MutationObserver","WebKitMutationObserver","called","observer","nextTick","element","document","createTextNode","observe","characterData","data","setImmediate","MessageChannel","createElement","scriptEl","onreadystatechange","parentNode","removeChild","documentElement","appendChild","setTimeout","channel","port1","onmessage","port2","postMessage","queue","oldQueue","len","task","push","2","immediate","INTERNAL","handlers","REJECTED","FULFILLED","PENDING","Promise","resolver","TypeError","state","outcome","safelyResolveThenable","QueueItem","promise","onFulfilled","onRejected","callFulfilled","otherCallFulfilled","callRejected","otherCallRejected","unwrap","func","returnValue","reject","resolve","getThen","obj","then","apply","arguments","thenable","onError","onSuccess","result","tryCatch","status","out","constructor","error","reason","all","iterable","toString","values","Array","resolved","allResolver","outValue","race","response","3","4","_typeof","iterator","idb","indexedDB","webkitIndexedDB","mozIndexedDB","OIndexedDB","msIndexedDB","getIDB","createBlob","parts","properties","Blob","builder","BlobBuilder","MSBlobBuilder","MozBlobBuilder","WebKitBlobBuilder","append","getBlob","type","Promise$1","executeCallback","callback","executeTwoCallbacks","errorCallback","normalizeKey","console","warn","String","getCallback","supportsBlobs","dbContexts","_checkBlobSupport","txn","transaction","blob","objectStore","put","onabort","preventDefault","stopPropagation","oncomplete","matchedChrome","navigator","userAgent","match","matchedEdge","parseInt","_checkBlobSupportWithoutCaching","_deferReadiness","dbInfo","dbContext","deferredOperation","deferredOperations","dbReady","_advanceReadiness","pop","_rejectReadiness","err","_getConnection","upgradeNeeded","forages","db","close","dbArgs","version","openreq","open","onupgradeneeded","createObjectStore","storeName","oldVersion","ex","newVersion","onerror","onsuccess","_getOriginalConnection","_getUpgradedConnection","_isUpgradeNeeded","defaultVersion","isNewStore","objectStoreNames","contains","isDowngrade","isUpgrade","incVersion","_decodeBlob","encodedBlob","bin","buf","ArrayBuffer","arr","Uint8Array","charCodeAt","_binStringToArrayBuffer","atob","_isEncodedBlob","__local_forage_encoded_blob","_fullyReady","_initReady","_dbInfo","createTransaction","retries","undefined","tx","forage","_tryReconnect","asyncStorage","_driver","_initStorage","options","ready","initPromises","ignoreErrors","j","slice","_defaultConfig","k","_support","isSafari","openDatabase","test","platform","hasFetch","fetch","indexOf","IDBKeyRange","isIndexedDBValid","iterate","req","openCursor","iterationNumber","cursor","getItem","setItem","blobSupport","reader","FileReader","onloadend","base64","btoa","target","readAsBinaryString","store","removeItem","clear","count","advanced","advance","keys","dropInstance","currentConfig","config","isCurrentDb","dbPromise","deleteObjectStore","_forage2","deleteDatabase","onblocked","BASE_CHARS","BLOB_TYPE_PREFIX_REGEX","SERIALIZED_MARKER_LENGTH","TYPE_SERIALIZED_MARKER_LENGTH","toString$1","stringToBuffer","serializedString","encoded1","encoded2","encoded3","encoded4","bufferLength","buffer","bytes","bufferToString","base64String","substring","localforageSerializer","serialize","valueType","marker","fileReader","onload","str","SERIALIZED_MARKER","readAsArrayBuffer","JSON","stringify","deserialize","parse","blobType","matcher","Int8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","createDbTable","executeSql","tryExecuteSql","sqlStatement","args","SYNTAX_ERR","results","rows","_setItem","retriesLeft","originalValue","serializer","sqlError","QUOTA_ERR","getAllStoreNames","storeNames","item","webSQLStorage","dbInfoPromise","description","size","operationInfo","dropTable","operations","_getKeyPrefix","defaultConfig","keyPrefix","_isLocalStorageUsable","localStorage","checkIfLocalStorageThrows","localStorageWrapper","isLocalStorageValid","keyPrefixLength","itemKey","includes","array","searchElement","x","y","isNaN","isArray","arg","DefinedDrivers","DriverSupport","DefaultDrivers","INDEXEDDB","WEBSQL","LOCALSTORAGE","DefaultDriverOrder","OptionalDriverMethods","LibraryMethods","concat","DefaultConfig","driver","callWhenReady","localForageInstance","libraryMethod","_args","extend","_key","localforage_js","LocalForage","driverTypeKey","instance","Constructor","_classCallCheck","driverName","defineDriver","_config","_driverSet","_initDriver","_ready","_wrapLibraryMethodsWithReady","setDriver","replace","driverObject","complianceError","driverMethods","driverMethodName","methodNotImplementedFactory","methodName","_i","_len","optionalDriverMethod","configureMissingMethods","setDriverSupport","support","info","getDriver","getDriverPromise","getSerializer","serializerPromise","drivers","supportedDrivers","_getSupportedDrivers","setDriverToConfig","extendSelfWithDriver","_extend","oldDriverSetDone","currentDriverIndex","driverPromiseLoop","initDriver","supports","libraryMethodsAndProperties","createInstance","getWindowClients","clients","matchAll","includeUncontrolled","clientList","filter","addEventListener","event","waitUntil","localForage","webPushNotifications","isEnabled","list","json","registration","showNotification","title","notification","client","url","focus","openWindow"],"mappings":"aACE,IAAIA,EAAmB,GAGvB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUC,QAGnC,IAAIC,EAASJ,EAAiBE,GAAY,CACzCG,EAAGH,EACHI,GAAG,EACHH,QAAS,IAUV,OANAI,EAAQL,GAAUM,KAAKJ,EAAOD,QAASC,EAAQA,EAAOD,QAASF,GAG/DG,EAAOE,GAAI,EAGJF,EAAOD,QAKfF,EAAoBQ,EAAIF,EAGxBN,EAAoBS,EAAIV,EAGxBC,EAAoBU,EAAI,SAASR,EAASS,EAAMC,GAC3CZ,EAAoBa,EAAEX,EAASS,IAClCG,OAAOC,eAAeb,EAASS,EAAM,CAAEK,YAAY,EAAMC,IAAKL,KAKhEZ,EAAoBkB,EAAI,SAAShB,GACX,oBAAXiB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAeb,EAASiB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,KAQvDrB,EAAoBsB,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQrB,EAAoBqB,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,iBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFA1B,EAAoBkB,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAOrB,EAAoBU,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,IAAQC,KAAK,KAAMD,IAC9I,OAAOF,GAIRzB,EAAoB6B,EAAI,SAAS1B,GAChC,IAAIS,EAAST,GAAUA,EAAOqB,WAC7B,WAAwB,OAAOrB,EAAgB,SAC/C,WAA8B,OAAOA,GAEtC,OADAH,EAAoBU,EAAEE,EAAQ,IAAKA,GAC5BA,GAIRZ,EAAoBa,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,IAGzG/B,EAAoBkC,EAAI,IAIjBlC,EAAoBA,EAAoBmC,EAAI,G;;;;;;;CC5ErD,SAAUC,GAAG,GAAoB,iBAAVlC,QAAoC,IAATC,EAAsBA,EAAOD,QAAQkC,SAAS,GAAmB,mBAATC,QAAqBA,OAAOC,IAAKD,OAAO,GAAGD,OAAO,EAA0B,oBAATG,OAAwBA,OAA+B,oBAATC,OAAwBA,OAA6B,oBAAPC,KAAsBA,KAAYC,MAAOC,YAAcP,KAAhU,EAAuU,WAAqC,OAAO,SAAUQ,EAAEtB,EAAEO,EAAEX,GAAG,SAASiB,EAAEtB,EAAEgC,GAAG,IAAIhB,EAAEhB,GAAG,CAAC,IAAIS,EAAET,GAAG,CAAC,IAAIiC,EAAkB,mBAATC,SAAqBA,QAAQ,IAAIF,GAAGC,EAAE,OAAOA,EAAEjC,GAAE,GAAI,GAAGT,EAAE,OAAOA,EAAES,GAAE,GAAI,IAAIuB,EAAE,IAAIY,MAAM,uBAAuBnC,EAAE,KAAK,MAAOuB,EAAEa,KAAK,mBAAoBb,EAAG,IAAI/B,EAAEwB,EAAEhB,GAAG,CAACX,QAAQ,IAAIoB,EAAET,GAAG,GAAGN,KAAKF,EAAEH,SAAQ,SAAS0C,GAAG,IAAIf,EAAEP,EAAET,GAAG,GAAG+B,GAAG,OAAOT,EAAEN,GAAIe,KAAIvC,EAAEA,EAAEH,QAAQ0C,EAAEtB,EAAEO,EAAEX,GAAG,OAAOW,EAAEhB,GAAGX,QAAkD,IAA1C,IAAIE,EAAkB,mBAAT2C,SAAqBA,QAAgBlC,EAAE,EAAEA,EAAEK,EAAEgC,OAAOrC,IAAIsB,EAAEjB,EAAEL,IAAI,OAAOsB,EAA1b,CAA8b,CAACgB,EAAE,CAAC,SAASC,EAAQjD,EAAOD,IAC70B,SAAWsC,GACX,aACA,IAEIa,EAyCAC,EA3CAC,EAAWf,EAAOgB,kBAAoBhB,EAAOiB,uBAK/C,GAAIF,EAAU,CACZ,IAAIG,EAAS,EACTC,EAAW,IAAIJ,EAASK,GACxBC,EAAUrB,EAAOsB,SAASC,eAAe,IAC7CJ,EAASK,QAAQH,EAAS,CACxBI,eAAe,IAEjBZ,EAAgB,WACdQ,EAAQK,KAAQR,IAAWA,EAAS,QAEjC,GAAKlB,EAAO2B,mBAAiD,IAA1B3B,EAAO4B,eAO/Cf,EADS,aAAcb,GAAU,uBAAwBA,EAAOsB,SAASO,cAAc,UACvE,WAId,IAAIC,EAAW9B,EAAOsB,SAASO,cAAc,UAC7CC,EAASC,mBAAqB,WAC5BX,IAEAU,EAASC,mBAAqB,KAC9BD,EAASE,WAAWC,YAAYH,GAChCA,EAAW,MAEb9B,EAAOsB,SAASY,gBAAgBC,YAAYL,IAG9B,WACdM,WAAWhB,EAAU,QAvBwD,CAC/E,IAAIiB,EAAU,IAAIrC,EAAO4B,eACzBS,EAAQC,MAAMC,UAAYnB,EAC1BP,EAAgB,WACdwB,EAAQG,MAAMC,YAAY,IAyBhC,IAAIC,EAAQ,GAEZ,SAAStB,IAEP,IAAIxD,EAAG+E,EADP7B,GAAW,EAGX,IADA,IAAI8B,EAAMF,EAAMhC,OACTkC,GAAK,CAIV,IAHAD,EAAWD,EACXA,EAAQ,GACR9E,GAAK,IACIA,EAAIgF,GACXD,EAAS/E,KAEXgF,EAAMF,EAAMhC,OAEdI,GAAW,EAGbnD,EAAOD,QACP,SAAmBmF,GACQ,IAArBH,EAAMI,KAAKD,IAAgB/B,GAC7BD,OAID9C,KAAKmC,KAAuB,oBAAXF,OAAyBA,OAAyB,oBAATC,KAAuBA,KAAyB,oBAAXF,OAAyBA,OAAS,KAClI,IAAIgD,EAAE,CAAC,SAASnC,EAAQjD,EAAOD,GACjC,aACA,IAAIsF,EAAYpC,EAAQ,GAGxB,SAASqC,KAET,IAAIC,EAAW,GAEXC,EAAW,CAAC,YACZC,EAAY,CAAC,aACbC,EAAU,CAAC,WAIf,SAASC,EAAQC,GACf,GAAwB,mBAAbA,EACT,MAAM,IAAIC,UAAU,+BAEtBtD,KAAKuD,MAAQJ,EACbnD,KAAKwC,MAAQ,GACbxC,KAAKwD,aAAU,EACXH,IAAaN,GACfU,EAAsBzD,KAAMqD,GAsBhC,SAASK,EAAUC,EAASC,EAAaC,GACvC7D,KAAK2D,QAAUA,EACY,mBAAhBC,IACT5D,KAAK4D,YAAcA,EACnB5D,KAAK8D,cAAgB9D,KAAK+D,oBAEF,mBAAfF,IACT7D,KAAK6D,WAAaA,EAClB7D,KAAKgE,aAAehE,KAAKiE,mBAgB7B,SAASC,EAAOP,EAASQ,EAAMxF,GAC7BmE,GAAU,WACR,IAAIsB,EACJ,IACEA,EAAcD,EAAKxF,GACnB,MAAOuB,GACP,OAAO8C,EAASqB,OAAOV,EAASzD,GAE9BkE,IAAgBT,EAClBX,EAASqB,OAAOV,EAAS,IAAIL,UAAU,uCAEvCN,EAASsB,QAAQX,EAASS,MAoChC,SAASG,EAAQC,GAEf,IAAIC,EAAOD,GAAOA,EAAIC,KACtB,GAAID,IAAuB,iBAARA,GAAmC,mBAARA,IAAuC,mBAATC,EAC1E,OAAO,WACLA,EAAKC,MAAMF,EAAKG,YAKtB,SAASlB,EAAsB1D,EAAM6E,GAEnC,IAAI5D,GAAS,EACb,SAAS6D,EAAQlG,GACXqC,IAGJA,GAAS,EACTgC,EAASqB,OAAOtE,EAAMpB,IAGxB,SAASmG,EAAUnG,GACbqC,IAGJA,GAAS,EACTgC,EAASsB,QAAQvE,EAAMpB,IAOzB,IAAIoG,EAASC,GAJb,WACEJ,EAASE,EAAWD,MAIA,UAAlBE,EAAOE,QACTJ,EAAQE,EAAOpG,OAInB,SAASqG,EAASb,EAAMxF,GACtB,IAAIuG,EAAM,GACV,IACEA,EAAIvG,MAAQwF,EAAKxF,GACjBuG,EAAID,OAAS,UACb,MAAO/E,GACPgF,EAAID,OAAS,QACbC,EAAIvG,MAAQuB,EAEd,OAAOgF,EAvJTzH,EAAOD,QAAU4F,EAcjBA,EAAQ9D,UAAiB,MAAI,SAAUuE,GACrC,OAAO7D,KAAKyE,KAAK,KAAMZ,IAEzBT,EAAQ9D,UAAUmF,KAAO,SAAUb,EAAaC,GAC9C,GAA2B,mBAAhBD,GAA8B5D,KAAKuD,QAAUL,GAChC,mBAAfW,GAA6B7D,KAAKuD,QAAUN,EACnD,OAAOjD,KAET,IAAI2D,EAAU,IAAI3D,KAAKmF,YAAYpC,GAC/B/C,KAAKuD,QAAUJ,EAEjBe,EAAOP,EADQ3D,KAAKuD,QAAUL,EAAYU,EAAcC,EAC9B7D,KAAKwD,SAE/BxD,KAAKwC,MAAMI,KAAK,IAAIc,EAAUC,EAASC,EAAaC,IAGtD,OAAOF,GAaTD,EAAUpE,UAAUwE,cAAgB,SAAUnF,GAC5CqE,EAASsB,QAAQtE,KAAK2D,QAAShF,IAEjC+E,EAAUpE,UAAUyE,mBAAqB,SAAUpF,GACjDuF,EAAOlE,KAAK2D,QAAS3D,KAAK4D,YAAajF,IAEzC+E,EAAUpE,UAAU0E,aAAe,SAAUrF,GAC3CqE,EAASqB,OAAOrE,KAAK2D,QAAShF,IAEhC+E,EAAUpE,UAAU2E,kBAAoB,SAAUtF,GAChDuF,EAAOlE,KAAK2D,QAAS3D,KAAK6D,WAAYlF,IAmBxCqE,EAASsB,QAAU,SAAUvE,EAAMpB,GACjC,IAAIoG,EAASC,EAAST,EAAS5F,GAC/B,GAAsB,UAAlBoG,EAAOE,OACT,OAAOjC,EAASqB,OAAOtE,EAAMgF,EAAOpG,OAEtC,IAAIiG,EAAWG,EAAOpG,MAEtB,GAAIiG,EACFnB,EAAsB1D,EAAM6E,OACvB,CACL7E,EAAKwD,MAAQL,EACbnD,EAAKyD,QAAU7E,EAGf,IAFA,IAAIjB,GAAK,EACLgF,EAAM3C,EAAKyC,MAAMhC,SACZ9C,EAAIgF,GACX3C,EAAKyC,MAAM9E,GAAGoG,cAAcnF,GAGhC,OAAOoB,GAETiD,EAASqB,OAAS,SAAUtE,EAAMqF,GAChCrF,EAAKwD,MAAQN,EACblD,EAAKyD,QAAU4B,EAGf,IAFA,IAAI1H,GAAK,EACLgF,EAAM3C,EAAKyC,MAAMhC,SACZ9C,EAAIgF,GACX3C,EAAKyC,MAAM9E,GAAGsG,aAAaoB,GAE7B,OAAOrF,GAsDTqD,EAAQkB,QACR,SAAiB3F,GACf,GAAIA,aAAiBqB,KACnB,OAAOrB,EAET,OAAOqE,EAASsB,QAAQ,IAAItE,KAAK+C,GAAWpE,IAG9CyE,EAAQiB,OACR,SAAgBgB,GACd,IAAI1B,EAAU,IAAI3D,KAAK+C,GACvB,OAAOC,EAASqB,OAAOV,EAAS0B,IAGlCjC,EAAQkC,IACR,SAAaC,GACX,IAAIxF,EAAOC,KACX,GAAiD,mBAA7C5B,OAAOkB,UAAUkG,SAAS3H,KAAK0H,GACjC,OAAOvF,KAAKqE,OAAO,IAAIf,UAAU,qBAGnC,IAAIZ,EAAM6C,EAAS/E,OACfQ,GAAS,EACb,IAAK0B,EACH,OAAO1C,KAAKsE,QAAQ,IAGtB,IAAImB,EAAS,IAAIC,MAAMhD,GACnBiD,EAAW,EACXjI,GAAK,EACLiG,EAAU,IAAI3D,KAAK+C,GAEvB,OAASrF,EAAIgF,GACXkD,EAAYL,EAAS7H,GAAIA,GAE3B,OAAOiG,EACP,SAASiC,EAAYjH,EAAOjB,GAC1BqC,EAAKuE,QAAQ3F,GAAO8F,MAMpB,SAAwBoB,GACtBJ,EAAO/H,GAAKmI,IACNF,IAAajD,GAAQ1B,IACzBA,GAAS,EACTgC,EAASsB,QAAQX,EAAS8B,OAVW,SAAUL,GAC5CpE,IACHA,GAAS,EACTgC,EAASqB,OAAOV,EAASyB,SAajChC,EAAQ0C,KACR,SAAcP,GACZ,IAAIxF,EAAOC,KACX,GAAiD,mBAA7C5B,OAAOkB,UAAUkG,SAAS3H,KAAK0H,GACjC,OAAOvF,KAAKqE,OAAO,IAAIf,UAAU,qBAGnC,IAAIZ,EAAM6C,EAAS/E,OACfQ,GAAS,EACb,IAAK0B,EACH,OAAO1C,KAAKsE,QAAQ,IAGtB,IAAI5G,GAAK,EACLiG,EAAU,IAAI3D,KAAK+C,GAEvB,OAASrF,EAAIgF,GAIK/D,EAHP4G,EAAS7H,GAIlBqC,EAAKuE,QAAQ3F,GAAO8F,MAAK,SAAUsB,GAC5B/E,IACHA,GAAS,EACTgC,EAASsB,QAAQX,EAASoC,OAE3B,SAAUX,GACNpE,IACHA,GAAS,EACTgC,EAASqB,OAAOV,EAASyB,OAT/B,IAAkBzG,EADlB,OAAOgF,IAgBP,CAAC,EAAI,IAAIqC,EAAE,CAAC,SAAStF,EAAQjD,EAAOD,IACtC,SAAWsC,GACX,aAC8B,mBAAnBA,EAAOsD,UAChBtD,EAAOsD,QAAU1C,EAAQ,MAGxB7C,KAAKmC,KAAuB,oBAAXF,OAAyBA,OAAyB,oBAATC,KAAuBA,KAAyB,oBAAXF,OAAyBA,OAAS,KAClI,CAAC,EAAI,IAAIoG,EAAE,CAAC,SAASvF,EAAQjD,EAAOD,GACtC,aAEA,IAAI0I,EAA4B,mBAAXzH,QAAoD,iBAApBA,OAAO0H,SAAwB,SAAU3B,GAAO,cAAcA,GAAS,SAAUA,GAAO,OAAOA,GAAyB,mBAAX/F,QAAyB+F,EAAIW,cAAgB1G,QAAU+F,IAAQ/F,OAAOa,UAAY,gBAAkBkF,GA2BtQ,IAAI4B,EAvBJ,WAEI,IACI,GAAyB,oBAAdC,UACP,OAAOA,UAEX,GAA+B,oBAApBC,gBACP,OAAOA,gBAEX,GAA4B,oBAAjBC,aACP,OAAOA,aAEX,GAA0B,oBAAfC,WACP,OAAOA,WAEX,GAA2B,oBAAhBC,YACP,OAAOA,YAEb,MAAOvG,GACL,QAIEwG,GAoCV,SAASC,EAAWC,EAAOC,GAEvBD,EAAQA,GAAS,GACjBC,EAAaA,GAAc,GAC3B,IACI,OAAO,IAAIC,KAAKF,EAAOC,GACzB,MAAO3G,GACL,GAAe,cAAXA,EAAEjC,KACF,MAAMiC,EAIV,IAFA,IACI6G,EAAU,IADuB,oBAAhBC,YAA8BA,YAAuC,oBAAlBC,cAAgCA,cAA0C,oBAAnBC,eAAiCA,eAAiBC,mBAExKzJ,EAAI,EAAGA,EAAIkJ,EAAMpG,OAAQ9C,GAAK,EACnCqJ,EAAQK,OAAOR,EAAMlJ,IAEzB,OAAOqJ,EAAQM,QAAQR,EAAWS,OAMnB,oBAAZlE,SAGP1C,EAAQ,GAEZ,IAAI6G,EAAYnE,QAEhB,SAASoE,EAAgB7D,EAAS8D,GAC1BA,GACA9D,EAAQc,MAAK,SAAUM,GACnB0C,EAAS,KAAM1C,MAChB,SAAUK,GACTqC,EAASrC,MAKrB,SAASsC,EAAoB/D,EAAS8D,EAAUE,GACpB,mBAAbF,GACP9D,EAAQc,KAAKgD,GAGY,mBAAlBE,GACPhE,EAAe,MAAEgE,GAIzB,SAASC,EAAa3I,GAOlB,MALmB,iBAARA,IACP4I,QAAQC,KAAK7I,EAAM,2CACnBA,EAAM8I,OAAO9I,IAGVA,EAGX,SAAS+I,IACL,GAAIrD,UAAUnE,QAAqD,mBAApCmE,UAAUA,UAAUnE,OAAS,GACxD,OAAOmE,UAAUA,UAAUnE,OAAS,GAO5C,IACIyH,OAAgB,EAChBC,EAAa,GACb1C,EAAWpH,OAAOkB,UAAUkG,SA8DhC,SAAS2C,EAAkB/B,GACvB,MAA6B,kBAAlB6B,EACAV,EAAUjD,QAAQ2D,GA5BjC,SAAyC7B,GACrC,OAAO,IAAImB,GAAU,SAAUjD,GAC3B,IAAI8D,EAAMhC,EAAIiC,YAzCU,mCAOf,aAmCLC,EAAO3B,EAAW,CAAC,KACvByB,EAAIG,YA3CoB,oCA2CmBC,IAAIF,EAAM,OAErDF,EAAIK,QAAU,SAAUvI,GAGpBA,EAAEwI,iBACFxI,EAAEyI,kBACFrE,GAAQ,IAGZ8D,EAAIQ,WAAa,WACb,IAAIC,EAAgBC,UAAUC,UAAUC,MAAM,iBAC1CC,EAAcH,UAAUC,UAAUC,MAAM,UAG5C1E,EAAQ2E,IAAgBJ,GAAiBK,SAASL,EAAc,GAAI,KAAO,QAEzE,OAAE,WACR,OAAO,KAQJM,CAAgC/C,GAAK3B,MAAK,SAAU9F,GAEvD,OADAsJ,EAAgBtJ,KAKxB,SAASyK,EAAgBC,GACrB,IAAIC,EAAYpB,EAAWmB,EAAOpL,MAG9BsL,EAAoB,GAExBA,EAAkB5F,QAAU,IAAI4D,GAAU,SAAUjD,EAASD,GACzDkF,EAAkBjF,QAAUA,EAC5BiF,EAAkBlF,OAASA,KAI/BiF,EAAUE,mBAAmB5G,KAAK2G,GAG7BD,EAAUG,QAGXH,EAAUG,QAAUH,EAAUG,QAAQhF,MAAK,WACvC,OAAO8E,EAAkB5F,WAH7B2F,EAAUG,QAAUF,EAAkB5F,QAQ9C,SAAS+F,EAAkBL,GACvB,IAGIE,EAHYrB,EAAWmB,EAAOpL,MAGAuL,mBAAmBG,MAIrD,GAAIJ,EAEA,OADAA,EAAkBjF,UACXiF,EAAkB5F,QAIjC,SAASiG,EAAiBP,EAAQQ,GAC9B,IAGIN,EAHYrB,EAAWmB,EAAOpL,MAGAuL,mBAAmBG,MAIrD,GAAIJ,EAEA,OADAA,EAAkBlF,OAAOwF,GAClBN,EAAkB5F,QAIjC,SAASmG,EAAeT,EAAQU,GAC5B,OAAO,IAAIxC,GAAU,SAAUjD,EAASD,GAGpC,GAFA6D,EAAWmB,EAAOpL,MAAQiK,EAAWmB,EAAOpL,OAoNzC,CAEH+L,QAAS,GAETC,GAAI,KAEJR,QAAS,KAETD,mBAAoB,IA1NhBH,EAAOY,GAAI,CACX,IAAIF,EAIA,OAAOzF,EAAQ+E,EAAOY,IAHtBb,EAAgBC,GAChBA,EAAOY,GAAGC,QAMlB,IAAIC,EAAS,CAACd,EAAOpL,MAEjB8L,GACAI,EAAOvH,KAAKyG,EAAOe,SAGvB,IAAIC,EAAUjE,EAAIkE,KAAK5F,MAAM0B,EAAK+D,GAE9BJ,IACAM,EAAQE,gBAAkB,SAAUrK,GAChC,IAAI+J,EAAKI,EAAQtF,OACjB,IACIkF,EAAGO,kBAAkBnB,EAAOoB,WACxBvK,EAAEwK,YAAc,GAEhBT,EAAGO,kBA3JK,oCA6Jd,MAAOG,GACL,GAAgB,oBAAZA,EAAG1M,KAGH,MAAM0M,EAFN9C,QAAQC,KAAK,iBAAmBuB,EAAOpL,KAA1B,oCAA4EiC,EAAEwK,WAAa,eAAiBxK,EAAE0K,WAAa,sBAAwBvB,EAAOoB,UAAY,wBAQnMJ,EAAQQ,QAAU,SAAU3K,GACxBA,EAAEwI,iBACFrE,EAAOgG,EAAQjF,QAGnBiF,EAAQS,UAAY,WAChBxG,EAAQ+F,EAAQtF,QAChB2E,EAAkBL,OAK9B,SAAS0B,EAAuB1B,GAC5B,OAAOS,EAAeT,GAAQ,GAGlC,SAAS2B,EAAuB3B,GAC5B,OAAOS,EAAeT,GAAQ,GAGlC,SAAS4B,EAAiB5B,EAAQ6B,GAC9B,IAAK7B,EAAOY,GACR,OAAO,EAGX,IAAIkB,GAAc9B,EAAOY,GAAGmB,iBAAiBC,SAAShC,EAAOoB,WACzDa,EAAcjC,EAAOe,QAAUf,EAAOY,GAAGG,QACzCmB,EAAYlC,EAAOe,QAAUf,EAAOY,GAAGG,QAY3C,GAVIkB,IAGIjC,EAAOe,UAAYc,GACnBrD,QAAQC,KAAK,iBAAmBuB,EAAOpL,KAA1B,uCAA8EoL,EAAOY,GAAGG,QAAU,eAAiBf,EAAOe,QAAU,KAGrJf,EAAOe,QAAUf,EAAOY,GAAGG,SAG3BmB,GAAaJ,EAAY,CAIzB,GAAIA,EAAY,CACZ,IAAIK,EAAanC,EAAOY,GAAGG,QAAU,EACjCoB,EAAanC,EAAOe,UACpBf,EAAOe,QAAUoB,GAIzB,OAAO,EAGX,OAAO,EAqBX,SAASC,EAAYC,GAEjB,OAAO/E,EAAW,CArOtB,SAAiCgF,GAI7B,IAHA,IAAInL,EAASmL,EAAInL,OACboL,EAAM,IAAIC,YAAYrL,GACtBsL,EAAM,IAAIC,WAAWH,GAChBlO,EAAI,EAAGA,EAAI8C,EAAQ9C,IACxBoO,EAAIpO,GAAKiO,EAAIK,WAAWtO,GAE5B,OAAOkO,EA6NSK,CAAwBC,KAAKR,EAAYlK,QAC1B,CAAE8F,KAAMoE,EAAYpE,OAIvD,SAAS6E,EAAexN,GACpB,OAAOA,GAASA,EAAMyN,4BAO1B,SAASC,EAAY5E,GACjB,IAAI1H,EAAOC,KAEP2D,EAAU5D,EAAKuM,aAAa7H,MAAK,WACjC,IAAI6E,EAAYpB,EAAWnI,EAAKwM,QAAQtO,MAExC,GAAIqL,GAAaA,EAAUG,QACvB,OAAOH,EAAUG,WAKzB,OADA/B,EAAoB/D,EAAS8D,EAAUA,GAChC9D,EA2CX,SAAS6I,EAAkBnD,EAAQxK,EAAM4I,EAAUgF,QAC/BC,IAAZD,IACAA,EAAU,GAGd,IACI,IAAIE,EAAKtD,EAAOY,GAAG5B,YAAYgB,EAAOoB,UAAW5L,GACjD4I,EAAS,KAAMkF,GACjB,MAAO9C,GACL,GAAI4C,EAAU,KAAOpD,EAAOY,IAAmB,sBAAbJ,EAAI5L,MAA6C,kBAAb4L,EAAI5L,MACtE,OAAOsJ,EAAUjD,UAAUG,MAAK,WAC5B,IAAK4E,EAAOY,IAAmB,kBAAbJ,EAAI5L,OAA6BoL,EAAOY,GAAGmB,iBAAiBC,SAAShC,EAAOoB,YAAcpB,EAAOe,SAAWf,EAAOY,GAAGG,QAMpI,OAJIf,EAAOY,KACPZ,EAAOe,QAAUf,EAAOY,GAAGG,QAAU,GAGlCY,EAAuB3B,MAEnC5E,MAAK,WACJ,OAzDhB,SAAuB4E,GACnBD,EAAgBC,GAKhB,IAHA,IAAIC,EAAYpB,EAAWmB,EAAOpL,MAC9B+L,EAAUV,EAAUU,QAEftM,EAAI,EAAGA,EAAIsM,EAAQxJ,OAAQ9C,IAAK,CACrC,IAAIkP,EAAS5C,EAAQtM,GACjBkP,EAAOL,QAAQtC,KACf2C,EAAOL,QAAQtC,GAAGC,QAClB0C,EAAOL,QAAQtC,GAAK,MAK5B,OAFAZ,EAAOY,GAAK,KAELc,EAAuB1B,GAAQ5E,MAAK,SAAUwF,GAEjD,OADAZ,EAAOY,GAAKA,EACRgB,EAAiB5B,GAEV2B,EAAuB3B,GAE3BY,KACRxF,MAAK,SAAUwF,GAGdZ,EAAOY,GAAKX,EAAUW,GAAKA,EAC3B,IAAK,IAAIvM,EAAI,EAAGA,EAAIsM,EAAQxJ,OAAQ9C,IAChCsM,EAAQtM,GAAG6O,QAAQtC,GAAKA,KAEtB,OAAE,SAAUJ,GAElB,MADAD,EAAiBP,EAAQQ,GACnBA,KA0BSgD,CAAcxD,GAAQ5E,MAAK,WAC9B+H,EAAkBnD,EAAQxK,EAAM4I,EAAUgF,EAAU,SAElD,MAAEhF,GAGhBA,EAASoC,IAylBjB,IAAIiD,EAAe,CACfC,QAAS,eACTC,aAxkBJ,SAAsBC,GAClB,IAAIlN,EAAOC,KACPqJ,EAAS,CACTY,GAAI,MAGR,GAAIgD,EACA,IAAK,IAAIvP,KAAKuP,EACV5D,EAAO3L,GAAKuP,EAAQvP,GAK5B,IAAI4L,EAAYpB,EAAWmB,EAAOpL,MAG7BqL,IACDA,EA/BG,CAEHU,QAAS,GAETC,GAAI,KAEJR,QAAS,KAETD,mBAAoB,IAyBpBtB,EAAWmB,EAAOpL,MAAQqL,GAI9BA,EAAUU,QAAQpH,KAAK7C,GAGlBA,EAAKuM,aACNvM,EAAKuM,WAAavM,EAAKmN,MACvBnN,EAAKmN,MAAQb,GAIjB,IAAIc,EAAe,GAEnB,SAASC,IAGL,OAAO7F,EAAUjD,UAGrB,IAAK,IAAI+I,EAAI,EAAGA,EAAI/D,EAAUU,QAAQxJ,OAAQ6M,IAAK,CAC/C,IAAIT,EAAStD,EAAUU,QAAQqD,GAC3BT,IAAW7M,GAEXoN,EAAavK,KAAKgK,EAAON,aAAoB,MAAEc,IAKvD,IAAIpD,EAAUV,EAAUU,QAAQsD,MAAM,GAItC,OAAO/F,EAAUjC,IAAI6H,GAAc1I,MAAK,WAGpC,OAFA4E,EAAOY,GAAKX,EAAUW,GAEfc,EAAuB1B,MAC/B5E,MAAK,SAAUwF,GAEd,OADAZ,EAAOY,GAAKA,EACRgB,EAAiB5B,EAAQtJ,EAAKwN,eAAenD,SAEtCY,EAAuB3B,GAE3BY,KACRxF,MAAK,SAAUwF,GACdZ,EAAOY,GAAKX,EAAUW,GAAKA,EAC3BlK,EAAKwM,QAAUlD,EAEf,IAAK,IAAImE,EAAI,EAAGA,EAAIxD,EAAQxJ,OAAQgN,IAAK,CACrC,IAAIZ,EAAS5C,EAAQwD,GACjBZ,IAAW7M,IAEX6M,EAAOL,QAAQtC,GAAKZ,EAAOY,GAC3B2C,EAAOL,QAAQnC,QAAUf,EAAOe,cAggB5CqD,SAjhCJ,WACI,IAGI,IAAKrH,EACD,OAAO,EAMX,IAAIsH,EAAmC,oBAAjBC,cAAgC,4BAA4BC,KAAK9E,UAAUC,aAAe,SAAS6E,KAAK9E,UAAUC,aAAe,aAAa6E,KAAK9E,UAAU+E,UAE/KC,EAA4B,mBAAVC,QAAsE,IAA9CA,MAAMvI,WAAWwI,QAAQ,gBAIvE,QAASN,GAAYI,IAAkC,oBAAdzH,WAKlB,oBAAhB4H,YACT,MAAO/N,GACL,OAAO,GAy/BDgO,GACVC,QAjdJ,SAAiBhI,EAAUsB,GACvB,IAAI1H,EAAOC,KAEP2D,EAAU,IAAI4D,GAAU,SAAUjD,EAASD,GAC3CtE,EAAKmN,QAAQzI,MAAK,WACd+H,EAAkBzM,EAAKwM,QA3dnB,YA2duC,SAAU1C,EAAKxB,GACtD,GAAIwB,EACA,OAAOxF,EAAOwF,GAGlB,IACI,IACIuE,EADQ/F,EAAYE,YAAYxI,EAAKwM,QAAQ9B,WACjC4D,aACZC,EAAkB,EAEtBF,EAAItD,UAAY,WACZ,IAAIyD,EAASH,EAAIrJ,OAEjB,GAAIwJ,EAAQ,CACR,IAAI5P,EAAQ4P,EAAO5P,MACfwN,EAAexN,KACfA,EAAQ8M,EAAY9M,IAExB,IAAIoG,EAASoB,EAASxH,EAAO4P,EAAOtP,IAAKqP,UAK1B,IAAXvJ,EACAT,EAAQS,GAERwJ,EAAiB,gBAGrBjK,KAIR8J,EAAIvD,QAAU,WACVxG,EAAO+J,EAAIhJ,QAEjB,MAAOlF,GACLmE,EAAOnE,UAGT,MAAEmE,MAKhB,OAFAmD,EAAgB7D,EAAS8D,GAElB9D,GAgaP6K,QA5fJ,SAAiBvP,EAAKwI,GAClB,IAAI1H,EAAOC,KAEXf,EAAM2I,EAAa3I,GAEnB,IAAI0E,EAAU,IAAI4D,GAAU,SAAUjD,EAASD,GAC3CtE,EAAKmN,QAAQzI,MAAK,WACd+H,EAAkBzM,EAAKwM,QAnbnB,YAmbuC,SAAU1C,EAAKxB,GACtD,GAAIwB,EACA,OAAOxF,EAAOwF,GAGlB,IACI,IACIuE,EADQ/F,EAAYE,YAAYxI,EAAKwM,QAAQ9B,WACjClM,IAAIU,GAEpBmP,EAAItD,UAAY,WACZ,IAAInM,EAAQyP,EAAIrJ,YACF2H,IAAV/N,IACAA,EAAQ,MAERwN,EAAexN,KACfA,EAAQ8M,EAAY9M,IAExB2F,EAAQ3F,IAGZyP,EAAIvD,QAAU,WACVxG,EAAO+J,EAAIhJ,QAEjB,MAAOlF,GACLmE,EAAOnE,UAGT,MAAEmE,MAIhB,OADAmD,EAAgB7D,EAAS8D,GAClB9D,GAudP8K,QA9ZJ,SAAiBxP,EAAKN,EAAO8I,GACzB,IAAI1H,EAAOC,KAEXf,EAAM2I,EAAa3I,GAEnB,IAAI0E,EAAU,IAAI4D,GAAU,SAAUjD,EAASD,GAC3C,IAAIgF,EACJtJ,EAAKmN,QAAQzI,MAAK,WAEd,OADA4E,EAAStJ,EAAKwM,QACe,kBAAzB/G,EAAS3H,KAAKc,GACPwJ,EAAkBkB,EAAOY,IAAIxF,MAAK,SAAUiK,GAC/C,OAAIA,EACO/P,GA7TV2J,EA+TkB3J,EA9T5B,IAAI4I,GAAU,SAAUjD,EAASD,GACpC,IAAIsK,EAAS,IAAIC,WACjBD,EAAO9D,QAAUxG,EACjBsK,EAAOE,UAAY,SAAU3O,GACzB,IAAI4O,EAASC,KAAK7O,EAAE8O,OAAOjK,QAAU,IACrCT,EAAQ,CACJ8H,6BAA6B,EAC7B5K,KAAMsN,EACNxH,KAAMgB,EAAKhB,QAGnBqH,EAAOM,mBAAmB3G,OAZlC,IAAqBA,KAkUF3J,KACR8F,MAAK,SAAU9F,GACd6N,EAAkBzM,EAAKwM,QA7hBlB,aA6hBuC,SAAU1C,EAAKxB,GACvD,GAAIwB,EACA,OAAOxF,EAAOwF,GAGlB,IACI,IAAIqF,EAAQ7G,EAAYE,YAAYxI,EAAKwM,QAAQ9B,WAMnC,OAAV9L,IACAA,OAAQ+N,GAGZ,IAAI0B,EAAMc,EAAM1G,IAAI7J,EAAOM,GAE3BoJ,EAAYO,WAAa,gBAOP8D,IAAV/N,IACAA,EAAQ,MAGZ2F,EAAQ3F,IAEZ0J,EAAYI,QAAUJ,EAAYwC,QAAU,WACxC,IAAIhB,EAAMuE,EAAIhJ,MAAQgJ,EAAIhJ,MAAQgJ,EAAI/F,YAAYjD,MAClDf,EAAOwF,IAEb,MAAO3J,GACLmE,EAAOnE,UAGT,MAAEmE,MAIhB,OADAmD,EAAgB7D,EAAS8D,GAClB9D,GAiWPwL,WA9VJ,SAAoBlQ,EAAKwI,GACrB,IAAI1H,EAAOC,KAEXf,EAAM2I,EAAa3I,GAEnB,IAAI0E,EAAU,IAAI4D,GAAU,SAAUjD,EAASD,GAC3CtE,EAAKmN,QAAQzI,MAAK,WACd+H,EAAkBzM,EAAKwM,QAllBlB,aAklBuC,SAAU1C,EAAKxB,GACvD,GAAIwB,EACA,OAAOxF,EAAOwF,GAGlB,IACI,IAMIuE,EANQ/F,EAAYE,YAAYxI,EAAKwM,QAAQ9B,WAMzB,OAAExL,GAC1BoJ,EAAYO,WAAa,WACrBtE,KAGJ+D,EAAYwC,QAAU,WAClBxG,EAAO+J,EAAIhJ,QAKfiD,EAAYI,QAAU,WAClB,IAAIoB,EAAMuE,EAAIhJ,MAAQgJ,EAAIhJ,MAAQgJ,EAAI/F,YAAYjD,MAClDf,EAAOwF,IAEb,MAAO3J,GACLmE,EAAOnE,UAGT,MAAEmE,MAIhB,OADAmD,EAAgB7D,EAAS8D,GAClB9D,GAqTPyL,MAlTJ,SAAe3H,GACX,IAAI1H,EAAOC,KAEP2D,EAAU,IAAI4D,GAAU,SAAUjD,EAASD,GAC3CtE,EAAKmN,QAAQzI,MAAK,WACd+H,EAAkBzM,EAAKwM,QA7nBlB,aA6nBuC,SAAU1C,EAAKxB,GACvD,GAAIwB,EACA,OAAOxF,EAAOwF,GAGlB,IACI,IACIuE,EADQ/F,EAAYE,YAAYxI,EAAKwM,QAAQ9B,WACjC2E,QAEhB/G,EAAYO,WAAa,WACrBtE,KAGJ+D,EAAYI,QAAUJ,EAAYwC,QAAU,WACxC,IAAIhB,EAAMuE,EAAIhJ,MAAQgJ,EAAIhJ,MAAQgJ,EAAI/F,YAAYjD,MAClDf,EAAOwF,IAEb,MAAO3J,GACLmE,EAAOnE,UAGT,MAAEmE,MAIhB,OADAmD,EAAgB7D,EAAS8D,GAClB9D,GAqRPnD,OAlRJ,SAAgBiH,GACZ,IAAI1H,EAAOC,KAEP2D,EAAU,IAAI4D,GAAU,SAAUjD,EAASD,GAC3CtE,EAAKmN,QAAQzI,MAAK,WACd+H,EAAkBzM,EAAKwM,QA/pBnB,YA+pBuC,SAAU1C,EAAKxB,GACtD,GAAIwB,EACA,OAAOxF,EAAOwF,GAGlB,IACI,IACIuE,EADQ/F,EAAYE,YAAYxI,EAAKwM,QAAQ9B,WACjC4E,QAEhBjB,EAAItD,UAAY,WACZxG,EAAQ8J,EAAIrJ,SAGhBqJ,EAAIvD,QAAU,WACVxG,EAAO+J,EAAIhJ,QAEjB,MAAOlF,GACLmE,EAAOnE,UAGT,MAAEmE,MAIhB,OADAmD,EAAgB7D,EAAS8D,GAClB9D,GAsPP1E,IAnPJ,SAAaE,EAAGsI,GACZ,IAAI1H,EAAOC,KAEP2D,EAAU,IAAI4D,GAAU,SAAUjD,EAASD,GACvClF,EAAI,EACJmF,EAAQ,MAKZvE,EAAKmN,QAAQzI,MAAK,WACd+H,EAAkBzM,EAAKwM,QArsBnB,YAqsBuC,SAAU1C,EAAKxB,GACtD,GAAIwB,EACA,OAAOxF,EAAOwF,GAGlB,IACI,IAAIqF,EAAQ7G,EAAYE,YAAYxI,EAAKwM,QAAQ9B,WAC7C6E,GAAW,EACXlB,EAAMc,EAAMb,aAEhBD,EAAItD,UAAY,WACZ,IAAIyD,EAASH,EAAIrJ,OACZwJ,EAOK,IAANpP,GAKKmQ,EAFLhL,EAAQiK,EAAOtP,MAKXqQ,GAAW,EACXf,EAAOgB,QAAQpQ,IAdnBmF,EAAQ,OAsBhB8J,EAAIvD,QAAU,WACVxG,EAAO+J,EAAIhJ,QAEjB,MAAOlF,GACLmE,EAAOnE,UAGT,MAAEmE,MAIhB,OADAmD,EAAgB7D,EAAS8D,GAClB9D,GA0LP6L,KAvLJ,SAAc/H,GACV,IAAI1H,EAAOC,KAEP2D,EAAU,IAAI4D,GAAU,SAAUjD,EAASD,GAC3CtE,EAAKmN,QAAQzI,MAAK,WACd+H,EAAkBzM,EAAKwM,QA5vBnB,YA4vBuC,SAAU1C,EAAKxB,GACtD,GAAIwB,EACA,OAAOxF,EAAOwF,GAGlB,IACI,IACIuE,EADQ/F,EAAYE,YAAYxI,EAAKwM,QAAQ9B,WACjC4D,aACZmB,EAAO,GAEXpB,EAAItD,UAAY,WACZ,IAAIyD,EAASH,EAAIrJ,OAEZwJ,GAKLiB,EAAK5M,KAAK2L,EAAOtP,KACjBsP,EAAiB,YALbjK,EAAQkL,IAQhBpB,EAAIvD,QAAU,WACVxG,EAAO+J,EAAIhJ,QAEjB,MAAOlF,GACLmE,EAAOnE,UAGT,MAAEmE,MAIhB,OADAmD,EAAgB7D,EAAS8D,GAClB9D,GAkJP8L,aA/IJ,SAAsBxC,EAASxF,GAC3BA,EAAWO,EAAYtD,MAAM1E,KAAM2E,WAEnC,IAAI+K,EAAgB1P,KAAK2P,UACzB1C,EAA6B,mBAAZA,GAA0BA,GAAW,IACzChP,OACTgP,EAAQhP,KAAOgP,EAAQhP,MAAQyR,EAAczR,KAC7CgP,EAAQxC,UAAYwC,EAAQxC,WAAaiF,EAAcjF,WAG3D,IACI9G,EADA5D,EAAOC,KAEX,GAAKiN,EAAQhP,KAEN,CACH,IAAI2R,EAAc3C,EAAQhP,OAASyR,EAAczR,MAAQ8B,EAAKwM,QAAQtC,GAElE4F,EAAYD,EAAcrI,EAAUjD,QAAQvE,EAAKwM,QAAQtC,IAAMc,EAAuBkC,GAASxI,MAAK,SAAUwF,GAC9G,IAAIX,EAAYpB,EAAW+E,EAAQhP,MAC/B+L,EAAUV,EAAUU,QACxBV,EAAUW,GAAKA,EACf,IAAK,IAAIvM,EAAI,EAAGA,EAAIsM,EAAQxJ,OAAQ9C,IAChCsM,EAAQtM,GAAG6O,QAAQtC,GAAKA,EAE5B,OAAOA,KAgDPtG,EA7CCsJ,EAAQxC,UA6CCoF,EAAUpL,MAAK,SAAUwF,GAC/B,GAAKA,EAAGmB,iBAAiBC,SAAS4B,EAAQxC,WAA1C,CAIA,IAAIG,EAAaX,EAAGG,QAAU,EAE9BhB,EAAgB6D,GAEhB,IAAI3D,EAAYpB,EAAW+E,EAAQhP,MAC/B+L,EAAUV,EAAUU,QAExBC,EAAGC,QACH,IAAK,IAAIxM,EAAI,EAAGA,EAAIsM,EAAQxJ,OAAQ9C,IAAK,CACrC,IAAIkP,EAAS5C,EAAQtM,GACrBkP,EAAOL,QAAQtC,GAAK,KACpB2C,EAAOL,QAAQnC,QAAUQ,EAwB7B,OArBwB,IAAIrD,GAAU,SAAUjD,EAASD,GACrD,IAAI+J,EAAMhI,EAAIkE,KAAK2C,EAAQhP,KAAM2M,GAEjCwD,EAAIvD,QAAU,SAAUhB,GACXuE,EAAIrJ,OACVmF,QACH7F,EAAOwF,IAGXuE,EAAI7D,gBAAkB,WACT6D,EAAIrJ,OACV+K,kBAAkB7C,EAAQxC,YAGjC2D,EAAItD,UAAY,WACZ,IAAIb,EAAKmE,EAAIrJ,OACbkF,EAAGC,QACH5F,EAAQ2F,OAISxF,MAAK,SAAUwF,GACpCX,EAAUW,GAAKA,EACf,IAAK,IAAIoD,EAAI,EAAGA,EAAIrD,EAAQxJ,OAAQ6M,IAAK,CACrC,IAAI0C,EAAW/F,EAAQqD,GACvB0C,EAASxD,QAAQtC,GAAKA,EACtBP,EAAkBqG,EAASxD,aAEzB,OAAE,SAAU1C,GAElB,MADCD,EAAiBqD,EAASpD,IAAQtC,EAAUjD,WAAkB,OAAE,eAC3DuF,SA7FJgG,EAAUpL,MAAK,SAAUwF,GAC/Bb,EAAgB6D,GAEhB,IAAI3D,EAAYpB,EAAW+E,EAAQhP,MAC/B+L,EAAUV,EAAUU,QAExBC,EAAGC,QACH,IAAK,IAAIxM,EAAI,EAAGA,EAAIsM,EAAQxJ,OAAQ9C,IAAK,CACxBsM,EAAQtM,GACd6O,QAAQtC,GAAK,KAuBxB,OApBoB,IAAI1C,GAAU,SAAUjD,EAASD,GACjD,IAAI+J,EAAMhI,EAAI4J,eAAe/C,EAAQhP,MAErCmQ,EAAIvD,QAAUuD,EAAI6B,UAAY,SAAUpG,GACpC,IAAII,EAAKmE,EAAIrJ,OACTkF,GACAA,EAAGC,QAEP7F,EAAOwF,IAGXuE,EAAItD,UAAY,WACZ,IAAIb,EAAKmE,EAAIrJ,OACTkF,GACAA,EAAGC,QAEP5F,EAAQ2F,OAIKxF,MAAK,SAAUwF,GAChCX,EAAUW,GAAKA,EACf,IAAK,IAAIvM,EAAI,EAAGA,EAAIsM,EAAQxJ,OAAQ9C,IAAK,CAErCgM,EADcM,EAAQtM,GACI6O,aAExB,OAAE,SAAU1C,GAElB,MADCD,EAAiBqD,EAASpD,IAAQtC,EAAUjD,WAAkB,OAAE,eAC3DuF,aAvDlBlG,EAAU4D,EAAUlD,OAAO,qBAmH/B,OADAmD,EAAgB7D,EAAS8D,GAClB9D,IAyBX,IAAIuM,EAAa,mEAGbC,EAAyB,gCAGzBC,EADoB,YACyB5P,OAc7C6P,EAAgCD,EAXb,OAWyD5P,OAE5E8P,EAAalS,OAAOkB,UAAUkG,SAElC,SAAS+K,EAAeC,GAEpB,IAEI9S,EAEA+S,EAAUC,EAAUC,EAAUC,EAJ9BC,EAAyC,IAA1BL,EAAiBhQ,OAChCkC,EAAM8N,EAAiBhQ,OAEvBhB,EAAI,EAG8C,MAAlDgR,EAAiBA,EAAiBhQ,OAAS,KAC3CqQ,IACsD,MAAlDL,EAAiBA,EAAiBhQ,OAAS,IAC3CqQ,KAIR,IAAIC,EAAS,IAAIjF,YAAYgF,GACzBE,EAAQ,IAAIhF,WAAW+E,GAE3B,IAAKpT,EAAI,EAAGA,EAAIgF,EAAKhF,GAAK,EACtB+S,EAAWP,EAAWlC,QAAQwC,EAAiB9S,IAC/CgT,EAAWR,EAAWlC,QAAQwC,EAAiB9S,EAAI,IACnDiT,EAAWT,EAAWlC,QAAQwC,EAAiB9S,EAAI,IACnDkT,EAAWV,EAAWlC,QAAQwC,EAAiB9S,EAAI,IAGnDqT,EAAMvR,KAAOiR,GAAY,EAAIC,GAAY,EACzCK,EAAMvR,MAAmB,GAAXkR,IAAkB,EAAIC,GAAY,EAChDI,EAAMvR,MAAmB,EAAXmR,IAAiB,EAAe,GAAXC,EAEvC,OAAOE,EAKX,SAASE,EAAeF,GAEpB,IAEIpT,EAFAqT,EAAQ,IAAIhF,WAAW+E,GACvBG,EAAe,GAGnB,IAAKvT,EAAI,EAAGA,EAAIqT,EAAMvQ,OAAQ9C,GAAK,EAE/BuT,GAAgBf,EAAWa,EAAMrT,IAAM,GACvCuT,GAAgBf,GAAuB,EAAXa,EAAMrT,KAAW,EAAIqT,EAAMrT,EAAI,IAAM,GACjEuT,GAAgBf,GAA2B,GAAfa,EAAMrT,EAAI,KAAY,EAAIqT,EAAMrT,EAAI,IAAM,GACtEuT,GAAgBf,EAA0B,GAAfa,EAAMrT,EAAI,IASzC,OANIqT,EAAMvQ,OAAS,GAAM,EACrByQ,EAAeA,EAAaC,UAAU,EAAGD,EAAazQ,OAAS,GAAK,IAC7DuQ,EAAMvQ,OAAS,GAAM,IAC5ByQ,EAAeA,EAAaC,UAAU,EAAGD,EAAazQ,OAAS,GAAK,MAGjEyQ,EAyIX,IAAIE,EAAwB,CACxBC,UApIJ,SAAmBzS,EAAO8I,GACtB,IAAI4J,EAAY,GAShB,GARI1S,IACA0S,EAAYf,EAAWzS,KAAKc,IAO5BA,IAAwB,yBAAd0S,GAAwC1S,EAAMmS,QAA4C,yBAAlCR,EAAWzS,KAAKc,EAAMmS,SAAqC,CAG7H,IAAIA,EACAQ,EA7FY,YA+FZ3S,aAAiBkN,aACjBiF,EAASnS,EACT2S,GA7FW,SA+FXR,EAASnS,EAAMmS,OAEG,uBAAdO,EACAC,GAhGK,OAiGgB,wBAAdD,EACPC,GAjGM,OAkGe,+BAAdD,EACPC,GAlGa,OAmGQ,wBAAdD,EACPC,GAnGM,OAoGe,yBAAdD,EACPC,GAnGO,OAoGc,wBAAdD,EACPC,GAtGM,OAuGe,yBAAdD,EACPC,GAtGO,OAuGc,0BAAdD,EACPC,GAvGQ,OAwGa,0BAAdD,EACPC,GAxGQ,OA0GR7J,EAAS,IAAInH,MAAM,wCAI3BmH,EAAS6J,EAASN,EAAeF,SAC9B,GAAkB,kBAAdO,EAA+B,CAEtC,IAAIE,EAAa,IAAI3C,WAErB2C,EAAWC,OAAS,WAEhB,IAAIC,EAtIO,uBAsIkB9S,EAAM2I,KAAO,IAAM0J,EAAehR,KAAK+E,QAEpE0C,EAASiK,gBAAgCD,IAG7CF,EAAWI,kBAAkBhT,QAE7B,IACI8I,EAASmK,KAAKC,UAAUlT,IAC1B,MAAOuB,GACL2H,QAAQzC,MAAM,8CAA+CzG,GAE7D8I,EAAS,KAAMvH,KAqEvB4R,YAxDJ,SAAqBnT,GAIjB,GAhKoB,cAgKhBA,EAAMuS,UAAU,EAAGd,GACnB,OAAOwB,KAAKG,MAAMpT,GAMtB,IAGIqT,EAHAxB,EAAmB7R,EAAMuS,UAAUb,GACnC/I,EAAO3I,EAAMuS,UAAUd,EAA0BC,GAKrD,GAxKY,SAwKR/I,GAAsB6I,EAAuBvC,KAAK4C,GAAmB,CACrE,IAAIyB,EAAUzB,EAAiBxH,MAAMmH,GACrC6B,EAAWC,EAAQ,GACnBzB,EAAmBA,EAAiBU,UAAUe,EAAQ,GAAGzR,QAE7D,IAAIsQ,EAASP,EAAeC,GAI5B,OAAQlJ,GACJ,IAnLe,OAoLX,OAAOwJ,EACX,IApLQ,OAqLJ,OAAOnK,EAAW,CAACmK,GAAS,CAAExJ,KAAM0K,IACxC,IArLa,OAsLT,OAAO,IAAIE,UAAUpB,GACzB,IAtLc,OAuLV,OAAO,IAAI/E,WAAW+E,GAC1B,IAvLqB,OAwLjB,OAAO,IAAIqB,kBAAkBrB,GACjC,IAxLc,OAyLV,OAAO,IAAIsB,WAAWtB,GAC1B,IAxLe,OAyLX,OAAO,IAAIuB,YAAYvB,GAC3B,IA3Lc,OA4LV,OAAO,IAAIwB,WAAWxB,GAC1B,IA3Le,OA4LX,OAAO,IAAIyB,YAAYzB,GAC3B,IA5LgB,OA6LZ,OAAO,IAAI0B,aAAa1B,GAC5B,IA7LgB,OA8LZ,OAAO,IAAI2B,aAAa3B,GAC5B,QACI,MAAM,IAAIxQ,MAAM,gBAAkBgH,KAO1CiJ,eAAgBA,EAChBS,eAAgBA,GAapB,SAAS0B,EAAc9T,EAAGyK,EAAQ5B,EAAUE,GACxC/I,EAAE+T,WAAW,8BAAgCtJ,EAAOoB,UAAvC,+CAAwG,GAAIhD,EAAUE,GAyCvI,SAASiL,EAAchU,EAAGyK,EAAQwJ,EAAcC,EAAMrL,EAAUE,GAC5D/I,EAAE+T,WAAWE,EAAcC,EAAMrL,GAAU,SAAU7I,EAAGwG,GAChDA,EAAM7E,OAAS6E,EAAM2N,WACrBnU,EAAE+T,WAAW,iEAAuE,CAACtJ,EAAOoB,YAAY,SAAU7L,EAAGoU,GAC5GA,EAAQC,KAAKzS,OAOdmH,EAAc/I,EAAGwG,GAJjBsN,EAAc9T,EAAGyK,GAAQ,WACrBzK,EAAE+T,WAAWE,EAAcC,EAAMrL,EAAUE,KAC5CA,KAIRA,GAEHA,EAAc/I,EAAGwG,KAEtBuC,GA6EP,SAASuL,EAASjU,EAAKN,EAAO8I,EAAU0L,GACpC,IAAIpT,EAAOC,KAEXf,EAAM2I,EAAa3I,GAEnB,IAAI0E,EAAU,IAAI4D,GAAU,SAAUjD,EAASD,GAC3CtE,EAAKmN,QAAQzI,MAAK,gBAIAiI,IAAV/N,IACAA,EAAQ,MAIZ,IAAIyU,EAAgBzU,EAEhB0K,EAAStJ,EAAKwM,QAClBlD,EAAOgK,WAAWjC,UAAUzS,GAAO,SAAUA,EAAOyG,GAC5CA,EACAf,EAAOe,GAEPiE,EAAOY,GAAG5B,aAAY,SAAUzJ,GAC5BgU,EAAchU,EAAGyK,EAAQ,0BAA4BA,EAAOoB,UAAnC,8BAAmF,CAACxL,EAAKN,IAAQ,WACtH2F,EAAQ8O,MACT,SAAUxU,EAAGwG,GACZf,EAAOe,SAEZ,SAAUkO,GAGT,GAAIA,EAAS/S,OAAS+S,EAASC,UAAW,CAQtC,GAAIJ,EAAc,EAEd,YADA7O,EAAQ4O,EAASxO,MAAM3E,EAAM,CAACd,EAAKmU,EAAe3L,EAAU0L,EAAc,KAG9E9O,EAAOiP,aAKjB,MAAEjP,MAIhB,OADAmD,EAAgB7D,EAAS8D,GAClB9D,EAmIX,SAAS6P,EAAiBvJ,GACtB,OAAO,IAAI1C,GAAU,SAAUjD,EAASD,GACpC4F,EAAG5B,aAAY,SAAUzJ,GACrBA,EAAE+T,WAAW,8FAAoG,IAAI,SAAU/T,EAAGoU,GAG9H,IAFA,IAAIS,EAAa,GAER/V,EAAI,EAAGA,EAAIsV,EAAQC,KAAKzS,OAAQ9C,IACrC+V,EAAW7Q,KAAKoQ,EAAQC,KAAKS,KAAKhW,GAAGO,MAGzCqG,EAAQ,CACJ2F,GAAIA,EACJwJ,WAAYA,OAEjB,SAAU7U,EAAGwG,GACZf,EAAOe,SAEZ,SAAUkO,GACTjP,EAAOiP,SAwEnB,IAAIK,EAAgB,CAChB5G,QAAS,gBACTC,aArZJ,SAAwBC,GACpB,IAAIlN,EAAOC,KACPqJ,EAAS,CACTY,GAAI,MAGR,GAAIgD,EACA,IAAK,IAAIvP,KAAKuP,EACV5D,EAAO3L,GAA2B,iBAAfuP,EAAQvP,GAAkBuP,EAAQvP,GAAG8H,WAAayH,EAAQvP,GAIrF,IAAIkW,EAAgB,IAAIrM,GAAU,SAAUjD,EAASD,GAGjD,IACIgF,EAAOY,GAAK0D,aAAatE,EAAOpL,KAAM8J,OAAOsB,EAAOe,SAAUf,EAAOwK,YAAaxK,EAAOyK,MAC3F,MAAO5T,GACL,OAAOmE,EAAOnE,GAIlBmJ,EAAOY,GAAG5B,aAAY,SAAUzJ,GAC5B8T,EAAc9T,EAAGyK,GAAQ,WACrBtJ,EAAKwM,QAAUlD,EACf/E,OACD,SAAU1F,EAAGwG,GACZf,EAAOe,QAEZf,MAIP,OADAgF,EAAOgK,WAAalC,EACbyC,GAqXPnG,SA1oB+B,mBAAjBE,aA2oBdQ,QAjUJ,SAAmBhI,EAAUsB,GACzB,IAAI1H,EAAOC,KAEP2D,EAAU,IAAI4D,GAAU,SAAUjD,EAASD,GAC3CtE,EAAKmN,QAAQzI,MAAK,WACd,IAAI4E,EAAStJ,EAAKwM,QAElBlD,EAAOY,GAAG5B,aAAY,SAAUzJ,GAC5BgU,EAAchU,EAAGyK,EAAQ,iBAAmBA,EAAOoB,UAAW,IAAI,SAAU7L,EAAGoU,GAI3E,IAHA,IAAIC,EAAOD,EAAQC,KACfzS,EAASyS,EAAKzS,OAET9C,EAAI,EAAGA,EAAI8C,EAAQ9C,IAAK,CAC7B,IAAIgW,EAAOT,EAAKS,KAAKhW,GACjBqH,EAAS2O,EAAK/U,MAYlB,GARIoG,IACAA,EAASsE,EAAOgK,WAAWvB,YAAY/M,SAO5B,KAJfA,EAASoB,EAASpB,EAAQ2O,EAAKzU,IAAKvB,EAAI,IAMpC,YADA4G,EAAQS,GAKhBT,OACD,SAAU1F,EAAGwG,GACZf,EAAOe,YAGT,MAAEf,MAIhB,OADAmD,EAAgB7D,EAAS8D,GAClB9D,GAyRP6K,QAhWJ,SAAmBvP,EAAKwI,GACpB,IAAI1H,EAAOC,KAEXf,EAAM2I,EAAa3I,GAEnB,IAAI0E,EAAU,IAAI4D,GAAU,SAAUjD,EAASD,GAC3CtE,EAAKmN,QAAQzI,MAAK,WACd,IAAI4E,EAAStJ,EAAKwM,QAClBlD,EAAOY,GAAG5B,aAAY,SAAUzJ,GAC5BgU,EAAchU,EAAGyK,EAAQ,iBAAmBA,EAAOoB,UAAY,yBAA0B,CAACxL,IAAM,SAAUL,EAAGoU,GACzG,IAAIjO,EAASiO,EAAQC,KAAKzS,OAASwS,EAAQC,KAAKS,KAAK,GAAG/U,MAAQ,KAI5DoG,IACAA,EAASsE,EAAOgK,WAAWvB,YAAY/M,IAG3CT,EAAQS,MACT,SAAUnG,EAAGwG,GACZf,EAAOe,YAGT,MAAEf,MAIhB,OADAmD,EAAgB7D,EAAS8D,GAClB9D,GAsUP8K,QAhOJ,SAAmBxP,EAAKN,EAAO8I,GAC3B,OAAOyL,EAASxO,MAAM1E,KAAM,CAACf,EAAKN,EAAO8I,EAAU,KAgOnD0H,WA7NJ,SAAsBlQ,EAAKwI,GACvB,IAAI1H,EAAOC,KAEXf,EAAM2I,EAAa3I,GAEnB,IAAI0E,EAAU,IAAI4D,GAAU,SAAUjD,EAASD,GAC3CtE,EAAKmN,QAAQzI,MAAK,WACd,IAAI4E,EAAStJ,EAAKwM,QAClBlD,EAAOY,GAAG5B,aAAY,SAAUzJ,GAC5BgU,EAAchU,EAAGyK,EAAQ,eAAiBA,EAAOoB,UAAY,iBAAkB,CAACxL,IAAM,WAClFqF,OACD,SAAU1F,EAAGwG,GACZf,EAAOe,YAGT,MAAEf,MAIhB,OADAmD,EAAgB7D,EAAS8D,GAClB9D,GA2MPyL,MAtMJ,SAAiB3H,GACb,IAAI1H,EAAOC,KAEP2D,EAAU,IAAI4D,GAAU,SAAUjD,EAASD,GAC3CtE,EAAKmN,QAAQzI,MAAK,WACd,IAAI4E,EAAStJ,EAAKwM,QAClBlD,EAAOY,GAAG5B,aAAY,SAAUzJ,GAC5BgU,EAAchU,EAAGyK,EAAQ,eAAiBA,EAAOoB,UAAW,IAAI,WAC5DnG,OACD,SAAU1F,EAAGwG,GACZf,EAAOe,YAGT,MAAEf,MAIhB,OADAmD,EAAgB7D,EAAS8D,GAClB9D,GAsLPnD,OAjLJ,SAAkBiH,GACd,IAAI1H,EAAOC,KAEP2D,EAAU,IAAI4D,GAAU,SAAUjD,EAASD,GAC3CtE,EAAKmN,QAAQzI,MAAK,WACd,IAAI4E,EAAStJ,EAAKwM,QAClBlD,EAAOY,GAAG5B,aAAY,SAAUzJ,GAE5BgU,EAAchU,EAAGyK,EAAQ,+BAAiCA,EAAOoB,UAAW,IAAI,SAAU7L,EAAGoU,GACzF,IAAIjO,EAASiO,EAAQC,KAAKS,KAAK,GAAG3V,EAClCuG,EAAQS,MACT,SAAUnG,EAAGwG,GACZf,EAAOe,YAGT,MAAEf,MAIhB,OADAmD,EAAgB7D,EAAS8D,GAClB9D,GA+JP1E,IArJJ,SAAeE,EAAGsI,GACd,IAAI1H,EAAOC,KAEP2D,EAAU,IAAI4D,GAAU,SAAUjD,EAASD,GAC3CtE,EAAKmN,QAAQzI,MAAK,WACd,IAAI4E,EAAStJ,EAAKwM,QAClBlD,EAAOY,GAAG5B,aAAY,SAAUzJ,GAC5BgU,EAAchU,EAAGyK,EAAQ,mBAAqBA,EAAOoB,UAAY,wBAAyB,CAACtL,EAAI,IAAI,SAAUP,EAAGoU,GAC5G,IAAIjO,EAASiO,EAAQC,KAAKzS,OAASwS,EAAQC,KAAKS,KAAK,GAAGzU,IAAM,KAC9DqF,EAAQS,MACT,SAAUnG,EAAGwG,GACZf,EAAOe,YAGT,MAAEf,MAIhB,OADAmD,EAAgB7D,EAAS8D,GAClB9D,GAoIP6L,KAjIJ,SAAgB/H,GACZ,IAAI1H,EAAOC,KAEP2D,EAAU,IAAI4D,GAAU,SAAUjD,EAASD,GAC3CtE,EAAKmN,QAAQzI,MAAK,WACd,IAAI4E,EAAStJ,EAAKwM,QAClBlD,EAAOY,GAAG5B,aAAY,SAAUzJ,GAC5BgU,EAAchU,EAAGyK,EAAQ,mBAAqBA,EAAOoB,UAAW,IAAI,SAAU7L,EAAGoU,GAG7E,IAFA,IAAIxD,EAAO,GAEF9R,EAAI,EAAGA,EAAIsV,EAAQC,KAAKzS,OAAQ9C,IACrC8R,EAAK5M,KAAKoQ,EAAQC,KAAKS,KAAKhW,GAAGuB,KAGnCqF,EAAQkL,MACT,SAAU5Q,EAAGwG,GACZf,EAAOe,YAGT,MAAEf,MAIhB,OADAmD,EAAgB7D,EAAS8D,GAClB9D,GA2GP8L,aA/EJ,SAAwBxC,EAASxF,GAC7BA,EAAWO,EAAYtD,MAAM1E,KAAM2E,WAEnC,IAAI+K,EAAgB1P,KAAK2P,UACzB1C,EAA6B,mBAAZA,GAA0BA,GAAW,IACzChP,OACTgP,EAAQhP,KAAOgP,EAAQhP,MAAQyR,EAAczR,KAC7CgP,EAAQxC,UAAYwC,EAAQxC,WAAaiF,EAAcjF,WAG3D,IACI9G,EADA5D,EAAOC,KAsDX,OADAwH,EAhDI7D,EAHCsJ,EAAQhP,KAGC,IAAIsJ,GAAU,SAAUjD,GAC9B,IAAI2F,EAGAA,EAFAgD,EAAQhP,OAASyR,EAAczR,KAE1B8B,EAAKwM,QAAQtC,GAEb0D,aAAaV,EAAQhP,KAAM,GAAI,GAAI,GAGvCgP,EAAQxC,UAITnG,EAAQ,CACJ2F,GAAIA,EACJwJ,WAAY,CAACxG,EAAQxC,aAJzBnG,EAAQkP,EAAiBvJ,OAO9BxF,MAAK,SAAUsP,GACd,OAAO,IAAIxM,GAAU,SAAUjD,EAASD,GACpC0P,EAAc9J,GAAG5B,aAAY,SAAUzJ,GACnC,SAASoV,EAAUvJ,GACf,OAAO,IAAIlD,GAAU,SAAUjD,EAASD,GACpCzF,EAAE+T,WAAW,wBAA0BlI,EAAW,IAAI,WAClDnG,OACD,SAAU1F,EAAGwG,GACZf,EAAOe,SAMnB,IADA,IAAI6O,EAAa,GACRvW,EAAI,EAAGgF,EAAMqR,EAAcN,WAAWjT,OAAQ9C,EAAIgF,EAAKhF,IAC5DuW,EAAWrR,KAAKoR,EAAUD,EAAcN,WAAW/V,KAGvD6J,EAAUjC,IAAI2O,GAAYxP,MAAK,WAC3BH,OACM,OAAE,SAAUpE,GAClBmE,EAAOnE,SAEZ,SAAUoT,GACTjP,EAAOiP,YA5CT/L,EAAUlD,OAAO,qBAkDNoD,GAClB9D,IA4BX,SAASuQ,EAAcjH,EAASkH,GAC5B,IAAIC,EAAYnH,EAAQhP,KAAO,IAK/B,OAHIgP,EAAQxC,YAAc0J,EAAc1J,YACpC2J,GAAanH,EAAQxC,UAAY,KAE9B2J,EAqBX,SAASC,IACL,OAlBJ,WAGI,IAII,OAHAC,aAAa7F,QAHS,6BAGoB,GAC1C6F,aAAanF,WAJS,8BAMf,EACT,MAAOjP,GACL,OAAO,GASHqU,IAA+BD,aAAa9T,OAAS,EA6QjE,IAAIgU,EAAsB,CACtBzH,QAAS,sBACTC,aA3QJ,SAAwBC,GACpB,IACI5D,EAAS,GACb,GAAI4D,EACA,IAAK,IAAIvP,KAAKuP,EACV5D,EAAO3L,GAAKuP,EAAQvP,GAM5B,OAFA2L,EAAO+K,UAAYF,EAAcjH,EARtBjN,KAQoCuN,gBAE1C8G,KAVMrU,KAcNuM,QAAUlD,EACfA,EAAOgK,WAAalC,EAEb5J,EAAUjD,WANNiD,EAAUlD,UAgQrBoJ,SAtTJ,WACI,IACI,MAA+B,oBAAjB6G,cAAgC,YAAaA,gBAEzDA,aAAa7F,QACjB,MAAOvO,GACL,OAAO,GAgTDuU,GACVtG,QAxMJ,SAAmBhI,EAAUsB,GACzB,IAAI1H,EAAOC,KAEP2D,EAAU5D,EAAKmN,QAAQzI,MAAK,WAc5B,IAbA,IAAI4E,EAAStJ,EAAKwM,QACd6H,EAAY/K,EAAO+K,UACnBM,EAAkBN,EAAU5T,OAC5BA,EAAS8T,aAAa9T,OAQtB8N,EAAkB,EAEb5Q,EAAI,EAAGA,EAAI8C,EAAQ9C,IAAK,CAC7B,IAAIuB,EAAMqV,aAAarV,IAAIvB,GAC3B,GAA+B,IAA3BuB,EAAI+O,QAAQoG,GAAhB,CAGA,IAAIzV,EAAQ2V,aAAa9F,QAAQvP,GAYjC,GANIN,IACAA,EAAQ0K,EAAOgK,WAAWvB,YAAYnT,SAK5B,KAFdA,EAAQwH,EAASxH,EAAOM,EAAIiS,UAAUwD,GAAkBpG,MAGpD,OAAO3P,OAMnB,OADA6I,EAAgB7D,EAAS8D,GAClB9D,GAgKP6K,QAlOJ,SAAmBvP,EAAKwI,GACpB,IAAI1H,EAAOC,KAEXf,EAAM2I,EAAa3I,GAEnB,IAAI0E,EAAU5D,EAAKmN,QAAQzI,MAAK,WAC5B,IAAI4E,EAAStJ,EAAKwM,QACdxH,EAASuP,aAAa9F,QAAQnF,EAAO+K,UAAYnV,GAUrD,OAJI8F,IACAA,EAASsE,EAAOgK,WAAWvB,YAAY/M,IAGpCA,KAIX,OADAyC,EAAgB7D,EAAS8D,GAClB9D,GA8MP8K,QAnFJ,SAAmBxP,EAAKN,EAAO8I,GAC3B,IAAI1H,EAAOC,KAEXf,EAAM2I,EAAa3I,GAEnB,IAAI0E,EAAU5D,EAAKmN,QAAQzI,MAAK,gBAGdiI,IAAV/N,IACAA,EAAQ,MAIZ,IAAIyU,EAAgBzU,EAEpB,OAAO,IAAI4I,GAAU,SAAUjD,EAASD,GACpC,IAAIgF,EAAStJ,EAAKwM,QAClBlD,EAAOgK,WAAWjC,UAAUzS,GAAO,SAAUA,EAAOyG,GAChD,GAAIA,EACAf,EAAOe,QAEP,IACIkP,aAAa7F,QAAQpF,EAAO+K,UAAYnV,EAAKN,GAC7C2F,EAAQ8O,GACV,MAAOlT,GAGU,uBAAXA,EAAEjC,MAA4C,+BAAXiC,EAAEjC,MACrCoG,EAAOnE,GAEXmE,EAAOnE,aAQ3B,OADAsH,EAAgB7D,EAAS8D,GAClB9D,GA8CPwL,WAtGJ,SAAsBlQ,EAAKwI,GACvB,IAAI1H,EAAOC,KAEXf,EAAM2I,EAAa3I,GAEnB,IAAI0E,EAAU5D,EAAKmN,QAAQzI,MAAK,WAC5B,IAAI4E,EAAStJ,EAAKwM,QAClB+H,aAAanF,WAAW9F,EAAO+K,UAAYnV,MAI/C,OADAuI,EAAgB7D,EAAS8D,GAClB9D,GA4FPyL,MA1PJ,SAAiB3H,GACb,IAAI1H,EAAOC,KACP2D,EAAU5D,EAAKmN,QAAQzI,MAAK,WAG5B,IAFA,IAAI2P,EAAYrU,EAAKwM,QAAQ6H,UAEpB1W,EAAI4W,aAAa9T,OAAS,EAAG9C,GAAK,EAAGA,IAAK,CAC/C,IAAIuB,EAAMqV,aAAarV,IAAIvB,GAEI,IAA3BuB,EAAI+O,QAAQoG,IACZE,aAAanF,WAAWlQ,OAMpC,OADAuI,EAAgB7D,EAAS8D,GAClB9D,GA4OPnD,OAnHJ,SAAkBiH,GACd,IACI9D,EADO3D,KACQwP,OAAO/K,MAAK,SAAU+K,GACrC,OAAOA,EAAKhP,UAIhB,OADAgH,EAAgB7D,EAAS8D,GAClB9D,GA6GP1E,IAjKJ,SAAeE,EAAGsI,GACd,IAAI1H,EAAOC,KACP2D,EAAU5D,EAAKmN,QAAQzI,MAAK,WAC5B,IACIM,EADAsE,EAAStJ,EAAKwM,QAElB,IACIxH,EAASuP,aAAarV,IAAIE,GAC5B,MAAOiG,GACLL,EAAS,KAQb,OAJIA,IACAA,EAASA,EAAOmM,UAAU7H,EAAO+K,UAAU5T,SAGxCuE,KAIX,OADAyC,EAAgB7D,EAAS8D,GAClB9D,GA8IP6L,KA3IJ,SAAgB/H,GACZ,IAAI1H,EAAOC,KACP2D,EAAU5D,EAAKmN,QAAQzI,MAAK,WAK5B,IAJA,IAAI4E,EAAStJ,EAAKwM,QACd/L,EAAS8T,aAAa9T,OACtBgP,EAAO,GAEF9R,EAAI,EAAGA,EAAI8C,EAAQ9C,IAAK,CAC7B,IAAIiX,EAAUL,aAAarV,IAAIvB,GACW,IAAtCiX,EAAQ3G,QAAQ3E,EAAO+K,YACvB5E,EAAK5M,KAAK+R,EAAQzD,UAAU7H,EAAO+K,UAAU5T,SAIrD,OAAOgP,KAIX,OADAhI,EAAgB7D,EAAS8D,GAClB9D,GA0HP8L,aAhDJ,SAAwBxC,EAASxF,GAI7B,GAHAA,EAAWO,EAAYtD,MAAM1E,KAAM2E,aAEnCsI,EAA6B,mBAAZA,GAA0BA,GAAW,IACzChP,KAAM,CACf,IAAIyR,EAAgB1P,KAAK2P,SACzB1C,EAAQhP,KAAOgP,EAAQhP,MAAQyR,EAAczR,KAC7CgP,EAAQxC,UAAYwC,EAAQxC,WAAaiF,EAAcjF,UAG3D,IACI9G,EADA5D,EAAOC,KAuBX,OADAwH,EAjBI7D,EAHCsJ,EAAQhP,KAGC,IAAIsJ,GAAU,SAAUjD,GACzB2I,EAAQxC,UAGTnG,EAAQ4P,EAAcjH,EAASlN,EAAKwN,iBAFpCjJ,EAAQ2I,EAAQhP,KAAO,QAI5BwG,MAAK,SAAU2P,GACd,IAAK,IAAI1W,EAAI4W,aAAa9T,OAAS,EAAG9C,GAAK,EAAGA,IAAK,CAC/C,IAAIuB,EAAMqV,aAAarV,IAAIvB,GAEI,IAA3BuB,EAAI+O,QAAQoG,IACZE,aAAanF,WAAWlQ,OAb1BsI,EAAUlD,OAAO,qBAmBNoD,GAClB9D,IAsBPiR,EAAW,SAAkBC,EAAOC,GAGpC,IAFA,IAL+BC,EAAGC,EAK9BtS,EAAMmS,EAAMrU,OACZ9C,EAAI,EACDA,EAAIgF,GAAK,CACZ,IAR2BqS,EAQbF,EAAMnX,OARUsX,EAQNF,IAPG,iBAANC,GAA+B,iBAANC,GAAkBC,MAAMF,IAAME,MAAMD,GAQ9E,OAAO,EAEXtX,IAGJ,OAAO,GAGPwX,EAAUxP,MAAMwP,SAAW,SAAUC,GACrC,MAA+C,mBAAxC/W,OAAOkB,UAAUkG,SAAS3H,KAAKsX,IAKtCC,EAAiB,GAEjBC,EAAgB,GAEhBC,EAAiB,CACjBC,UAAWzI,EACX0I,OAAQ7B,EACR8B,aAAcjB,GAGdkB,EAAqB,CAACJ,EAAeC,UAAUxI,QAASuI,EAAeE,OAAOzI,QAASuI,EAAeG,aAAa1I,SAEnH4I,EAAwB,CAAC,gBAEzBC,EAAiB,CAAC,QAAS,UAAW,UAAW,MAAO,OAAQ,SAAU,aAAc,WAAWC,OAAOF,GAE1GG,EAAgB,CAChBjC,YAAa,GACbkC,OAAQL,EAAmBpI,QAC3BrP,KAAM,cAGN6V,KAAM,QACNrJ,UAAW,gBACXL,QAAS,GAGb,SAAS4L,EAAcC,EAAqBC,GACxCD,EAAoBC,GAAiB,WACjC,IAAIC,EAAQxR,UACZ,OAAOsR,EAAoB/I,QAAQzI,MAAK,WACpC,OAAOwR,EAAoBC,GAAexR,MAAMuR,EAAqBE,OAKjF,SAASC,IACL,IAAK,IAAI1Y,EAAI,EAAGA,EAAIiH,UAAUnE,OAAQ9C,IAAK,CACvC,IAAIyX,EAAMxQ,UAAUjH,GAEpB,GAAIyX,EACA,IAAK,IAAIkB,KAAQlB,EACTA,EAAI5V,eAAe8W,KACfnB,EAAQC,EAAIkB,IACZ1R,UAAU,GAAG0R,GAAQlB,EAAIkB,GAAM/I,QAE/B3I,UAAU,GAAG0R,GAAQlB,EAAIkB,IAO7C,OAAO1R,UAAU,GAGrB,IA4SI2R,GAAiB,IA5SH,WACd,SAASC,EAAYtJ,GAGjB,IAAK,IAAIuJ,KApmEjB,SAAyBC,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAIpT,UAAU,qCAkmExGqT,CAAgB3W,KAAMuW,GAEIjB,EACtB,GAAIA,EAAe/V,eAAeiX,GAAgB,CAC9C,IAAIT,EAAST,EAAekB,GACxBI,EAAab,EAAOhJ,QACxB/M,KAAKwW,GAAiBI,EAEjBxB,EAAewB,IAIhB5W,KAAK6W,aAAad,GAK9B/V,KAAKuN,eAAiB6I,EAAO,GAAIN,GACjC9V,KAAK8W,QAAUV,EAAO,GAAIpW,KAAKuN,eAAgBN,GAC/CjN,KAAK+W,WAAa,KAClB/W,KAAKgX,YAAc,KACnBhX,KAAKiX,QAAS,EACdjX,KAAKuM,QAAU,KAEfvM,KAAKkX,+BACLlX,KAAKmX,UAAUnX,KAAK8W,QAAQf,QAAe,OAAE,eA0QjD,OAjQAQ,EAAYjX,UAAUqQ,OAAS,SAAgB1C,GAI3C,GAA0E,iBAAlD,IAAZA,EAA0B,YAAc/G,EAAQ+G,IAAwB,CAGhF,GAAIjN,KAAKiX,OACL,OAAO,IAAI3W,MAAM,wDAGrB,IAAK,IAAI5C,KAAKuP,EAAS,CAKnB,GAJU,cAANvP,IACAuP,EAAQvP,GAAKuP,EAAQvP,GAAG0Z,QAAQ,MAAO,MAGjC,YAAN1Z,GAAyC,iBAAfuP,EAAQvP,GAClC,OAAO,IAAI4C,MAAM,sCAGrBN,KAAK8W,QAAQpZ,GAAKuP,EAAQvP,GAK9B,QAAI,WAAYuP,KAAWA,EAAQ8I,QACxB/V,KAAKmX,UAAUnX,KAAK8W,QAAQf,QAIpC,MAAuB,iBAAZ9I,EACPjN,KAAK8W,QAAQ7J,GAEbjN,KAAK8W,SAQpBP,EAAYjX,UAAUuX,aAAe,SAAsBQ,EAAc5P,EAAUE,GAC/E,IAAIhE,EAAU,IAAI4D,GAAU,SAAUjD,EAASD,GAC3C,IACI,IAAIuS,EAAaS,EAAatK,QAC1BuK,EAAkB,IAAIhX,MAAM,wFAIhC,IAAK+W,EAAatK,QAEd,YADA1I,EAAOiT,GAKX,IADA,IAAIC,EAAgB3B,EAAeC,OAAO,gBACjCnY,EAAI,EAAGgF,EAAM6U,EAAc/W,OAAQ9C,EAAIgF,EAAKhF,IAAK,CACtD,IAAI8Z,EAAmBD,EAAc7Z,GAKrC,KADkBkX,EAASe,EAAuB6B,IAC/BH,EAAaG,KAAgE,mBAAnCH,EAAaG,GAEtE,YADAnT,EAAOiT,IAKe,WAU1B,IATA,IAAIG,EAA8B,SAAqCC,GACnE,OAAO,WACH,IAAItS,EAAQ,IAAI9E,MAAM,UAAYoX,EAAa,6CAC3C/T,EAAU4D,EAAUlD,OAAOe,GAE/B,OADAoC,EAAgB7D,EAASgB,UAAUA,UAAUnE,OAAS,IAC/CmD,IAINgU,EAAK,EAAGC,EAAOjC,EAAsBnV,OAAQmX,EAAKC,EAAMD,IAAM,CACnE,IAAIE,EAAuBlC,EAAsBgC,GAC5CN,EAAaQ,KACdR,EAAaQ,GAAwBJ,EAA4BI,KAK7EC,GAEA,IAAIC,EAAmB,SAA0BC,GACzC5C,EAAewB,IACf/O,QAAQoQ,KAAK,kCAAoCrB,GAErDxB,EAAewB,GAAcS,EAC7BhC,EAAcuB,GAAcoB,EAI5B1T,KAGA,aAAc+S,EACVA,EAAa5J,UAA6C,mBAA1B4J,EAAa5J,SAC7C4J,EAAa5J,WAAWhJ,KAAKsT,EAAkB1T,GAE/C0T,IAAmBV,EAAa5J,UAGpCsK,GAAiB,GAEvB,MAAO7X,GACLmE,EAAOnE,OAKf,OADAwH,EAAoB/D,EAAS8D,EAAUE,GAChChE,GAGX4S,EAAYjX,UAAUyW,OAAS,WAC3B,OAAO/V,KAAK+M,SAAW,MAG3BwJ,EAAYjX,UAAU4Y,UAAY,SAAmBtB,EAAYnP,EAAUE,GACvE,IAAIwQ,EAAmB/C,EAAewB,GAAcrP,EAAUjD,QAAQ8Q,EAAewB,IAAerP,EAAUlD,OAAO,IAAI/D,MAAM,sBAG/H,OADAoH,EAAoByQ,EAAkB1Q,EAAUE,GACzCwQ,GAGX5B,EAAYjX,UAAU8Y,cAAgB,SAAuB3Q,GACzD,IAAI4Q,EAAoB9Q,EAAUjD,QAAQ6M,GAE1C,OADAzJ,EAAoB2Q,EAAmB5Q,GAChC4Q,GAGX9B,EAAYjX,UAAU4N,MAAQ,SAAezF,GACzC,IAAI1H,EAAOC,KAEP2D,EAAU5D,EAAKgX,WAAWtS,MAAK,WAK/B,OAJoB,OAAhB1E,EAAKkX,SACLlX,EAAKkX,OAASlX,EAAKiX,eAGhBjX,EAAKkX,UAIhB,OADAvP,EAAoB/D,EAAS8D,EAAUA,GAChC9D,GAGX4S,EAAYjX,UAAU6X,UAAY,SAAmBmB,EAAS7Q,EAAUE,GACpE,IAAI5H,EAAOC,KAENkV,EAAQoD,KACTA,EAAU,CAACA,IAGf,IAAIC,EAAmBvY,KAAKwY,qBAAqBF,GAEjD,SAASG,IACL1Y,EAAK+W,QAAQf,OAAShW,EAAKgW,SAG/B,SAAS2C,EAAqB3C,GAK1B,OAJAhW,EAAK4Y,QAAQ5C,GACb0C,IAEA1Y,EAAKkX,OAASlX,EAAKiN,aAAajN,EAAK+W,SAC9B/W,EAAKkX,OA+BhB,IAAI2B,EAAuC,OAApB5Y,KAAK+W,WAAsB/W,KAAK+W,WAAkB,OAAE,WACvE,OAAOxP,EAAUjD,aAChBiD,EAAUjD,UAqBf,OAnBAtE,KAAK+W,WAAa6B,EAAiBnU,MAAK,WACpC,IAAImS,EAAa2B,EAAiB,GAIlC,OAHAxY,EAAKwM,QAAU,KACfxM,EAAKkX,OAAS,KAEPlX,EAAKmY,UAAUtB,GAAYnS,MAAK,SAAUsR,GAC7ChW,EAAKgN,QAAUgJ,EAAOhJ,QACtB0L,IACA1Y,EAAKmX,+BACLnX,EAAKiX,YAzCb,SAAoBuB,GAChB,OAAO,WACH,IAAIM,EAAqB,EAmBzB,OAjBA,SAASC,IACL,KAAOD,EAAqBN,EAAiB/X,QAAQ,CACjD,IAAIoW,EAAa2B,EAAiBM,GAMlC,OALAA,IAEA9Y,EAAKwM,QAAU,KACfxM,EAAKkX,OAAS,KAEPlX,EAAKmY,UAAUtB,GAAYnS,KAAKiU,GAA6B,MAAEI,GAG1EL,IACA,IAAIrT,EAAQ,IAAI9E,MAAM,sCAEtB,OADAP,EAAKgX,WAAaxP,EAAUlD,OAAOe,GAC5BrF,EAAKgX,WAGT+B,IAoBYC,CAAWR,SAE5B,OAAE,WACRE,IACA,IAAIrT,EAAQ,IAAI9E,MAAM,sCAEtB,OADAP,EAAKgX,WAAaxP,EAAUlD,OAAOe,GAC5BrF,EAAKgX,cAGhBrP,EAAoB1H,KAAK+W,WAAYtP,EAAUE,GACxC3H,KAAK+W,YAGhBR,EAAYjX,UAAU0Z,SAAW,SAAkBpC,GAC/C,QAASvB,EAAcuB,IAG3BL,EAAYjX,UAAUqZ,QAAU,SAAiBM,GAC7C7C,EAAOpW,KAAMiZ,IAGjB1C,EAAYjX,UAAUkZ,qBAAuB,SAA8BF,GAEvE,IADA,IAAIC,EAAmB,GACd7a,EAAI,EAAGgF,EAAM4V,EAAQ9X,OAAQ9C,EAAIgF,EAAKhF,IAAK,CAChD,IAAIkZ,EAAa0B,EAAQ5a,GACrBsC,KAAKgZ,SAASpC,IACd2B,EAAiB3V,KAAKgU,GAG9B,OAAO2B,GAGXhC,EAAYjX,UAAU4X,6BAA+B,WAKjD,IAAK,IAAIxZ,EAAI,EAAGgF,EAAMkT,EAAepV,OAAQ9C,EAAIgF,EAAKhF,IAClDsY,EAAchW,KAAM4V,EAAelY,KAI3C6Y,EAAYjX,UAAU4Z,eAAiB,SAAwBjM,GAC3D,OAAO,IAAIsJ,EAAYtJ,IAGpBsJ,EArSO,IA8SlB9Y,EAAOD,QAAU8Y,IAEf,CAAC,EAAI,KAAK,GAAG,CAAC,GAruFmW,CAquF/V,O,6BCzuFpB,2BAOA,SAAS6C,IACP,OAAOC,QAAQC,SAAS,CAAEC,qBAAqB,IAC5C7U,MAAK,SAAC8U,GAAD,OAAgBA,EAAWC,QAAO,kBAAuB,WAAvB,EAAGlS,WAG/CvH,KAAK0Z,iBAAiB,QAAQ,SAACC,GACzBA,EAAMlY,MACRkY,EAAMC,UAXDC,IAAYpL,QAAQ,WACxB/J,MAAK,SAAAjD,GAAI,OAAIA,EAAKmO,OAAOkK,wBAUEpV,MAAK,SAACqV,GAChC,OAAOA,GAAaX,IAAmB1U,MAAK,SAACsV,GAC3C,IAAMvY,EAAOkY,EAAMlY,KAAKwY,OAExB,GAAoB,IAAhBD,EAAKvZ,OAAc,OAAOT,KAAKka,aAAaC,iBAAiB1Y,EAAK2Y,MAAO3Y,aAMrFzB,KAAK0Z,iBAAiB,qBAAqB,SAACC,GAC1CA,EAAMU,aAAalQ,QAEnBwP,EAAMC,UAAUR,IAAmB1U,MAAK,SAACsV,GACvC,IAAK,IAAIrc,EAAI,EAAGA,EAAIqc,EAAKvZ,OAAQ9C,IAAK,CACpC,IAAI2c,EAASN,EAAKrc,GAClB,GAAmB,MAAf2c,EAAOC,KAAe,UAAWD,EAAU,OAAOA,EAAOE,QAG/D,GAAInB,QAAQoB,WAAY,OAAOpB,QAAQoB,WAAW","file":"sw-pleroma.js","sourcesContent":[" \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 \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\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.l = 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// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 1);\n","/*!\n    localForage -- Offline Storage, Improved\n    Version 1.7.3\n    https://localforage.github.io/localForage\n    (c) 2013-2017 Mozilla, Apache License 2.0\n*/\n(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.localforage = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw (f.code=\"MODULE_NOT_FOUND\", f)}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){\n(function (global){\n'use strict';\nvar Mutation = global.MutationObserver || global.WebKitMutationObserver;\n\nvar scheduleDrain;\n\n{\n  if (Mutation) {\n    var called = 0;\n    var observer = new Mutation(nextTick);\n    var element = global.document.createTextNode('');\n    observer.observe(element, {\n      characterData: true\n    });\n    scheduleDrain = function () {\n      element.data = (called = ++called % 2);\n    };\n  } else if (!global.setImmediate && typeof global.MessageChannel !== 'undefined') {\n    var channel = new global.MessageChannel();\n    channel.port1.onmessage = nextTick;\n    scheduleDrain = function () {\n      channel.port2.postMessage(0);\n    };\n  } else if ('document' in global && 'onreadystatechange' in global.document.createElement('script')) {\n    scheduleDrain = function () {\n\n      // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n      // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n      var scriptEl = global.document.createElement('script');\n      scriptEl.onreadystatechange = function () {\n        nextTick();\n\n        scriptEl.onreadystatechange = null;\n        scriptEl.parentNode.removeChild(scriptEl);\n        scriptEl = null;\n      };\n      global.document.documentElement.appendChild(scriptEl);\n    };\n  } else {\n    scheduleDrain = function () {\n      setTimeout(nextTick, 0);\n    };\n  }\n}\n\nvar draining;\nvar queue = [];\n//named nextTick for less confusing stack traces\nfunction nextTick() {\n  draining = true;\n  var i, oldQueue;\n  var len = queue.length;\n  while (len) {\n    oldQueue = queue;\n    queue = [];\n    i = -1;\n    while (++i < len) {\n      oldQueue[i]();\n    }\n    len = queue.length;\n  }\n  draining = false;\n}\n\nmodule.exports = immediate;\nfunction immediate(task) {\n  if (queue.push(task) === 1 && !draining) {\n    scheduleDrain();\n  }\n}\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{}],2:[function(_dereq_,module,exports){\n'use strict';\nvar immediate = _dereq_(1);\n\n/* istanbul ignore next */\nfunction INTERNAL() {}\n\nvar handlers = {};\n\nvar REJECTED = ['REJECTED'];\nvar FULFILLED = ['FULFILLED'];\nvar PENDING = ['PENDING'];\n\nmodule.exports = Promise;\n\nfunction Promise(resolver) {\n  if (typeof resolver !== 'function') {\n    throw new TypeError('resolver must be a function');\n  }\n  this.state = PENDING;\n  this.queue = [];\n  this.outcome = void 0;\n  if (resolver !== INTERNAL) {\n    safelyResolveThenable(this, resolver);\n  }\n}\n\nPromise.prototype[\"catch\"] = function (onRejected) {\n  return this.then(null, onRejected);\n};\nPromise.prototype.then = function (onFulfilled, onRejected) {\n  if (typeof onFulfilled !== 'function' && this.state === FULFILLED ||\n    typeof onRejected !== 'function' && this.state === REJECTED) {\n    return this;\n  }\n  var promise = new this.constructor(INTERNAL);\n  if (this.state !== PENDING) {\n    var resolver = this.state === FULFILLED ? onFulfilled : onRejected;\n    unwrap(promise, resolver, this.outcome);\n  } else {\n    this.queue.push(new QueueItem(promise, onFulfilled, onRejected));\n  }\n\n  return promise;\n};\nfunction QueueItem(promise, onFulfilled, onRejected) {\n  this.promise = promise;\n  if (typeof onFulfilled === 'function') {\n    this.onFulfilled = onFulfilled;\n    this.callFulfilled = this.otherCallFulfilled;\n  }\n  if (typeof onRejected === 'function') {\n    this.onRejected = onRejected;\n    this.callRejected = this.otherCallRejected;\n  }\n}\nQueueItem.prototype.callFulfilled = function (value) {\n  handlers.resolve(this.promise, value);\n};\nQueueItem.prototype.otherCallFulfilled = function (value) {\n  unwrap(this.promise, this.onFulfilled, value);\n};\nQueueItem.prototype.callRejected = function (value) {\n  handlers.reject(this.promise, value);\n};\nQueueItem.prototype.otherCallRejected = function (value) {\n  unwrap(this.promise, this.onRejected, value);\n};\n\nfunction unwrap(promise, func, value) {\n  immediate(function () {\n    var returnValue;\n    try {\n      returnValue = func(value);\n    } catch (e) {\n      return handlers.reject(promise, e);\n    }\n    if (returnValue === promise) {\n      handlers.reject(promise, new TypeError('Cannot resolve promise with itself'));\n    } else {\n      handlers.resolve(promise, returnValue);\n    }\n  });\n}\n\nhandlers.resolve = function (self, value) {\n  var result = tryCatch(getThen, value);\n  if (result.status === 'error') {\n    return handlers.reject(self, result.value);\n  }\n  var thenable = result.value;\n\n  if (thenable) {\n    safelyResolveThenable(self, thenable);\n  } else {\n    self.state = FULFILLED;\n    self.outcome = value;\n    var i = -1;\n    var len = self.queue.length;\n    while (++i < len) {\n      self.queue[i].callFulfilled(value);\n    }\n  }\n  return self;\n};\nhandlers.reject = function (self, error) {\n  self.state = REJECTED;\n  self.outcome = error;\n  var i = -1;\n  var len = self.queue.length;\n  while (++i < len) {\n    self.queue[i].callRejected(error);\n  }\n  return self;\n};\n\nfunction getThen(obj) {\n  // Make sure we only access the accessor once as required by the spec\n  var then = obj && obj.then;\n  if (obj && (typeof obj === 'object' || typeof obj === 'function') && typeof then === 'function') {\n    return function appyThen() {\n      then.apply(obj, arguments);\n    };\n  }\n}\n\nfunction safelyResolveThenable(self, thenable) {\n  // Either fulfill, reject or reject with error\n  var called = false;\n  function onError(value) {\n    if (called) {\n      return;\n    }\n    called = true;\n    handlers.reject(self, value);\n  }\n\n  function onSuccess(value) {\n    if (called) {\n      return;\n    }\n    called = true;\n    handlers.resolve(self, value);\n  }\n\n  function tryToUnwrap() {\n    thenable(onSuccess, onError);\n  }\n\n  var result = tryCatch(tryToUnwrap);\n  if (result.status === 'error') {\n    onError(result.value);\n  }\n}\n\nfunction tryCatch(func, value) {\n  var out = {};\n  try {\n    out.value = func(value);\n    out.status = 'success';\n  } catch (e) {\n    out.status = 'error';\n    out.value = e;\n  }\n  return out;\n}\n\nPromise.resolve = resolve;\nfunction resolve(value) {\n  if (value instanceof this) {\n    return value;\n  }\n  return handlers.resolve(new this(INTERNAL), value);\n}\n\nPromise.reject = reject;\nfunction reject(reason) {\n  var promise = new this(INTERNAL);\n  return handlers.reject(promise, reason);\n}\n\nPromise.all = all;\nfunction all(iterable) {\n  var self = this;\n  if (Object.prototype.toString.call(iterable) !== '[object Array]') {\n    return this.reject(new TypeError('must be an array'));\n  }\n\n  var len = iterable.length;\n  var called = false;\n  if (!len) {\n    return this.resolve([]);\n  }\n\n  var values = new Array(len);\n  var resolved = 0;\n  var i = -1;\n  var promise = new this(INTERNAL);\n\n  while (++i < len) {\n    allResolver(iterable[i], i);\n  }\n  return promise;\n  function allResolver(value, i) {\n    self.resolve(value).then(resolveFromAll, function (error) {\n      if (!called) {\n        called = true;\n        handlers.reject(promise, error);\n      }\n    });\n    function resolveFromAll(outValue) {\n      values[i] = outValue;\n      if (++resolved === len && !called) {\n        called = true;\n        handlers.resolve(promise, values);\n      }\n    }\n  }\n}\n\nPromise.race = race;\nfunction race(iterable) {\n  var self = this;\n  if (Object.prototype.toString.call(iterable) !== '[object Array]') {\n    return this.reject(new TypeError('must be an array'));\n  }\n\n  var len = iterable.length;\n  var called = false;\n  if (!len) {\n    return this.resolve([]);\n  }\n\n  var i = -1;\n  var promise = new this(INTERNAL);\n\n  while (++i < len) {\n    resolver(iterable[i]);\n  }\n  return promise;\n  function resolver(value) {\n    self.resolve(value).then(function (response) {\n      if (!called) {\n        called = true;\n        handlers.resolve(promise, response);\n      }\n    }, function (error) {\n      if (!called) {\n        called = true;\n        handlers.reject(promise, error);\n      }\n    });\n  }\n}\n\n},{\"1\":1}],3:[function(_dereq_,module,exports){\n(function (global){\n'use strict';\nif (typeof global.Promise !== 'function') {\n  global.Promise = _dereq_(2);\n}\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{\"2\":2}],4:[function(_dereq_,module,exports){\n'use strict';\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction getIDB() {\n    /* global indexedDB,webkitIndexedDB,mozIndexedDB,OIndexedDB,msIndexedDB */\n    try {\n        if (typeof indexedDB !== 'undefined') {\n            return indexedDB;\n        }\n        if (typeof webkitIndexedDB !== 'undefined') {\n            return webkitIndexedDB;\n        }\n        if (typeof mozIndexedDB !== 'undefined') {\n            return mozIndexedDB;\n        }\n        if (typeof OIndexedDB !== 'undefined') {\n            return OIndexedDB;\n        }\n        if (typeof msIndexedDB !== 'undefined') {\n            return msIndexedDB;\n        }\n    } catch (e) {\n        return;\n    }\n}\n\nvar idb = getIDB();\n\nfunction isIndexedDBValid() {\n    try {\n        // Initialize IndexedDB; fall back to vendor-prefixed versions\n        // if needed.\n        if (!idb) {\n            return false;\n        }\n        // We mimic PouchDB here;\n        //\n        // We test for openDatabase because IE Mobile identifies itself\n        // as Safari. Oh the lulz...\n        var isSafari = typeof openDatabase !== 'undefined' && /(Safari|iPhone|iPad|iPod)/.test(navigator.userAgent) && !/Chrome/.test(navigator.userAgent) && !/BlackBerry/.test(navigator.platform);\n\n        var hasFetch = typeof fetch === 'function' && fetch.toString().indexOf('[native code') !== -1;\n\n        // Safari <10.1 does not meet our requirements for IDB support (#5572)\n        // since Safari 10.1 shipped with fetch, we can use that to detect it\n        return (!isSafari || hasFetch) && typeof indexedDB !== 'undefined' &&\n        // some outdated implementations of IDB that appear on Samsung\n        // and HTC Android devices <4.4 are missing IDBKeyRange\n        // See: https://github.com/mozilla/localForage/issues/128\n        // See: https://github.com/mozilla/localForage/issues/272\n        typeof IDBKeyRange !== 'undefined';\n    } catch (e) {\n        return false;\n    }\n}\n\n// Abstracts constructing a Blob object, so it also works in older\n// browsers that don't support the native Blob constructor. (i.e.\n// old QtWebKit versions, at least).\n// Abstracts constructing a Blob object, so it also works in older\n// browsers that don't support the native Blob constructor. (i.e.\n// old QtWebKit versions, at least).\nfunction createBlob(parts, properties) {\n    /* global BlobBuilder,MSBlobBuilder,MozBlobBuilder,WebKitBlobBuilder */\n    parts = parts || [];\n    properties = properties || {};\n    try {\n        return new Blob(parts, properties);\n    } catch (e) {\n        if (e.name !== 'TypeError') {\n            throw e;\n        }\n        var Builder = typeof BlobBuilder !== 'undefined' ? BlobBuilder : typeof MSBlobBuilder !== 'undefined' ? MSBlobBuilder : typeof MozBlobBuilder !== 'undefined' ? MozBlobBuilder : WebKitBlobBuilder;\n        var builder = new Builder();\n        for (var i = 0; i < parts.length; i += 1) {\n            builder.append(parts[i]);\n        }\n        return builder.getBlob(properties.type);\n    }\n}\n\n// This is CommonJS because lie is an external dependency, so Rollup\n// can just ignore it.\nif (typeof Promise === 'undefined') {\n    // In the \"nopromises\" build this will just throw if you don't have\n    // a global promise object, but it would throw anyway later.\n    _dereq_(3);\n}\nvar Promise$1 = Promise;\n\nfunction executeCallback(promise, callback) {\n    if (callback) {\n        promise.then(function (result) {\n            callback(null, result);\n        }, function (error) {\n            callback(error);\n        });\n    }\n}\n\nfunction executeTwoCallbacks(promise, callback, errorCallback) {\n    if (typeof callback === 'function') {\n        promise.then(callback);\n    }\n\n    if (typeof errorCallback === 'function') {\n        promise[\"catch\"](errorCallback);\n    }\n}\n\nfunction normalizeKey(key) {\n    // Cast the key to a string, as that's all we can set as a key.\n    if (typeof key !== 'string') {\n        console.warn(key + ' used as a key, but it is not a string.');\n        key = String(key);\n    }\n\n    return key;\n}\n\nfunction getCallback() {\n    if (arguments.length && typeof arguments[arguments.length - 1] === 'function') {\n        return arguments[arguments.length - 1];\n    }\n}\n\n// Some code originally from async_storage.js in\n// [Gaia](https://github.com/mozilla-b2g/gaia).\n\nvar DETECT_BLOB_SUPPORT_STORE = 'local-forage-detect-blob-support';\nvar supportsBlobs = void 0;\nvar dbContexts = {};\nvar toString = Object.prototype.toString;\n\n// Transaction Modes\nvar READ_ONLY = 'readonly';\nvar READ_WRITE = 'readwrite';\n\n// Transform a binary string to an array buffer, because otherwise\n// weird stuff happens when you try to work with the binary string directly.\n// It is known.\n// From http://stackoverflow.com/questions/14967647/ (continues on next line)\n// encode-decode-image-with-base64-breaks-image (2013-04-21)\nfunction _binStringToArrayBuffer(bin) {\n    var length = bin.length;\n    var buf = new ArrayBuffer(length);\n    var arr = new Uint8Array(buf);\n    for (var i = 0; i < length; i++) {\n        arr[i] = bin.charCodeAt(i);\n    }\n    return buf;\n}\n\n//\n// Blobs are not supported in all versions of IndexedDB, notably\n// Chrome <37 and Android <5. In those versions, storing a blob will throw.\n//\n// Various other blob bugs exist in Chrome v37-42 (inclusive).\n// Detecting them is expensive and confusing to users, and Chrome 37-42\n// is at very low usage worldwide, so we do a hacky userAgent check instead.\n//\n// content-type bug: https://code.google.com/p/chromium/issues/detail?id=408120\n// 404 bug: https://code.google.com/p/chromium/issues/detail?id=447916\n// FileReader bug: https://code.google.com/p/chromium/issues/detail?id=447836\n//\n// Code borrowed from PouchDB. See:\n// https://github.com/pouchdb/pouchdb/blob/master/packages/node_modules/pouchdb-adapter-idb/src/blobSupport.js\n//\nfunction _checkBlobSupportWithoutCaching(idb) {\n    return new Promise$1(function (resolve) {\n        var txn = idb.transaction(DETECT_BLOB_SUPPORT_STORE, READ_WRITE);\n        var blob = createBlob(['']);\n        txn.objectStore(DETECT_BLOB_SUPPORT_STORE).put(blob, 'key');\n\n        txn.onabort = function (e) {\n            // If the transaction aborts now its due to not being able to\n            // write to the database, likely due to the disk being full\n            e.preventDefault();\n            e.stopPropagation();\n            resolve(false);\n        };\n\n        txn.oncomplete = function () {\n            var matchedChrome = navigator.userAgent.match(/Chrome\\/(\\d+)/);\n            var matchedEdge = navigator.userAgent.match(/Edge\\//);\n            // MS Edge pretends to be Chrome 42:\n            // https://msdn.microsoft.com/en-us/library/hh869301%28v=vs.85%29.aspx\n            resolve(matchedEdge || !matchedChrome || parseInt(matchedChrome[1], 10) >= 43);\n        };\n    })[\"catch\"](function () {\n        return false; // error, so assume unsupported\n    });\n}\n\nfunction _checkBlobSupport(idb) {\n    if (typeof supportsBlobs === 'boolean') {\n        return Promise$1.resolve(supportsBlobs);\n    }\n    return _checkBlobSupportWithoutCaching(idb).then(function (value) {\n        supportsBlobs = value;\n        return supportsBlobs;\n    });\n}\n\nfunction _deferReadiness(dbInfo) {\n    var dbContext = dbContexts[dbInfo.name];\n\n    // Create a deferred object representing the current database operation.\n    var deferredOperation = {};\n\n    deferredOperation.promise = new Promise$1(function (resolve, reject) {\n        deferredOperation.resolve = resolve;\n        deferredOperation.reject = reject;\n    });\n\n    // Enqueue the deferred operation.\n    dbContext.deferredOperations.push(deferredOperation);\n\n    // Chain its promise to the database readiness.\n    if (!dbContext.dbReady) {\n        dbContext.dbReady = deferredOperation.promise;\n    } else {\n        dbContext.dbReady = dbContext.dbReady.then(function () {\n            return deferredOperation.promise;\n        });\n    }\n}\n\nfunction _advanceReadiness(dbInfo) {\n    var dbContext = dbContexts[dbInfo.name];\n\n    // Dequeue a deferred operation.\n    var deferredOperation = dbContext.deferredOperations.pop();\n\n    // Resolve its promise (which is part of the database readiness\n    // chain of promises).\n    if (deferredOperation) {\n        deferredOperation.resolve();\n        return deferredOperation.promise;\n    }\n}\n\nfunction _rejectReadiness(dbInfo, err) {\n    var dbContext = dbContexts[dbInfo.name];\n\n    // Dequeue a deferred operation.\n    var deferredOperation = dbContext.deferredOperations.pop();\n\n    // Reject its promise (which is part of the database readiness\n    // chain of promises).\n    if (deferredOperation) {\n        deferredOperation.reject(err);\n        return deferredOperation.promise;\n    }\n}\n\nfunction _getConnection(dbInfo, upgradeNeeded) {\n    return new Promise$1(function (resolve, reject) {\n        dbContexts[dbInfo.name] = dbContexts[dbInfo.name] || createDbContext();\n\n        if (dbInfo.db) {\n            if (upgradeNeeded) {\n                _deferReadiness(dbInfo);\n                dbInfo.db.close();\n            } else {\n                return resolve(dbInfo.db);\n            }\n        }\n\n        var dbArgs = [dbInfo.name];\n\n        if (upgradeNeeded) {\n            dbArgs.push(dbInfo.version);\n        }\n\n        var openreq = idb.open.apply(idb, dbArgs);\n\n        if (upgradeNeeded) {\n            openreq.onupgradeneeded = function (e) {\n                var db = openreq.result;\n                try {\n                    db.createObjectStore(dbInfo.storeName);\n                    if (e.oldVersion <= 1) {\n                        // Added when support for blob shims was added\n                        db.createObjectStore(DETECT_BLOB_SUPPORT_STORE);\n                    }\n                } catch (ex) {\n                    if (ex.name === 'ConstraintError') {\n                        console.warn('The database \"' + dbInfo.name + '\"' + ' has been upgraded from version ' + e.oldVersion + ' to version ' + e.newVersion + ', but the storage \"' + dbInfo.storeName + '\" already exists.');\n                    } else {\n                        throw ex;\n                    }\n                }\n            };\n        }\n\n        openreq.onerror = function (e) {\n            e.preventDefault();\n            reject(openreq.error);\n        };\n\n        openreq.onsuccess = function () {\n            resolve(openreq.result);\n            _advanceReadiness(dbInfo);\n        };\n    });\n}\n\nfunction _getOriginalConnection(dbInfo) {\n    return _getConnection(dbInfo, false);\n}\n\nfunction _getUpgradedConnection(dbInfo) {\n    return _getConnection(dbInfo, true);\n}\n\nfunction _isUpgradeNeeded(dbInfo, defaultVersion) {\n    if (!dbInfo.db) {\n        return true;\n    }\n\n    var isNewStore = !dbInfo.db.objectStoreNames.contains(dbInfo.storeName);\n    var isDowngrade = dbInfo.version < dbInfo.db.version;\n    var isUpgrade = dbInfo.version > dbInfo.db.version;\n\n    if (isDowngrade) {\n        // If the version is not the default one\n        // then warn for impossible downgrade.\n        if (dbInfo.version !== defaultVersion) {\n            console.warn('The database \"' + dbInfo.name + '\"' + \" can't be downgraded from version \" + dbInfo.db.version + ' to version ' + dbInfo.version + '.');\n        }\n        // Align the versions to prevent errors.\n        dbInfo.version = dbInfo.db.version;\n    }\n\n    if (isUpgrade || isNewStore) {\n        // If the store is new then increment the version (if needed).\n        // This will trigger an \"upgradeneeded\" event which is required\n        // for creating a store.\n        if (isNewStore) {\n            var incVersion = dbInfo.db.version + 1;\n            if (incVersion > dbInfo.version) {\n                dbInfo.version = incVersion;\n            }\n        }\n\n        return true;\n    }\n\n    return false;\n}\n\n// encode a blob for indexeddb engines that don't support blobs\nfunction _encodeBlob(blob) {\n    return new Promise$1(function (resolve, reject) {\n        var reader = new FileReader();\n        reader.onerror = reject;\n        reader.onloadend = function (e) {\n            var base64 = btoa(e.target.result || '');\n            resolve({\n                __local_forage_encoded_blob: true,\n                data: base64,\n                type: blob.type\n            });\n        };\n        reader.readAsBinaryString(blob);\n    });\n}\n\n// decode an encoded blob\nfunction _decodeBlob(encodedBlob) {\n    var arrayBuff = _binStringToArrayBuffer(atob(encodedBlob.data));\n    return createBlob([arrayBuff], { type: encodedBlob.type });\n}\n\n// is this one of our fancy encoded blobs?\nfunction _isEncodedBlob(value) {\n    return value && value.__local_forage_encoded_blob;\n}\n\n// Specialize the default `ready()` function by making it dependent\n// on the current database operations. Thus, the driver will be actually\n// ready when it's been initialized (default) *and* there are no pending\n// operations on the database (initiated by some other instances).\nfunction _fullyReady(callback) {\n    var self = this;\n\n    var promise = self._initReady().then(function () {\n        var dbContext = dbContexts[self._dbInfo.name];\n\n        if (dbContext && dbContext.dbReady) {\n            return dbContext.dbReady;\n        }\n    });\n\n    executeTwoCallbacks(promise, callback, callback);\n    return promise;\n}\n\n// Try to establish a new db connection to replace the\n// current one which is broken (i.e. experiencing\n// InvalidStateError while creating a transaction).\nfunction _tryReconnect(dbInfo) {\n    _deferReadiness(dbInfo);\n\n    var dbContext = dbContexts[dbInfo.name];\n    var forages = dbContext.forages;\n\n    for (var i = 0; i < forages.length; i++) {\n        var forage = forages[i];\n        if (forage._dbInfo.db) {\n            forage._dbInfo.db.close();\n            forage._dbInfo.db = null;\n        }\n    }\n    dbInfo.db = null;\n\n    return _getOriginalConnection(dbInfo).then(function (db) {\n        dbInfo.db = db;\n        if (_isUpgradeNeeded(dbInfo)) {\n            // Reopen the database for upgrading.\n            return _getUpgradedConnection(dbInfo);\n        }\n        return db;\n    }).then(function (db) {\n        // store the latest db reference\n        // in case the db was upgraded\n        dbInfo.db = dbContext.db = db;\n        for (var i = 0; i < forages.length; i++) {\n            forages[i]._dbInfo.db = db;\n        }\n    })[\"catch\"](function (err) {\n        _rejectReadiness(dbInfo, err);\n        throw err;\n    });\n}\n\n// FF doesn't like Promises (micro-tasks) and IDDB store operations,\n// so we have to do it with callbacks\nfunction createTransaction(dbInfo, mode, callback, retries) {\n    if (retries === undefined) {\n        retries = 1;\n    }\n\n    try {\n        var tx = dbInfo.db.transaction(dbInfo.storeName, mode);\n        callback(null, tx);\n    } catch (err) {\n        if (retries > 0 && (!dbInfo.db || err.name === 'InvalidStateError' || err.name === 'NotFoundError')) {\n            return Promise$1.resolve().then(function () {\n                if (!dbInfo.db || err.name === 'NotFoundError' && !dbInfo.db.objectStoreNames.contains(dbInfo.storeName) && dbInfo.version <= dbInfo.db.version) {\n                    // increase the db version, to create the new ObjectStore\n                    if (dbInfo.db) {\n                        dbInfo.version = dbInfo.db.version + 1;\n                    }\n                    // Reopen the database for upgrading.\n                    return _getUpgradedConnection(dbInfo);\n                }\n            }).then(function () {\n                return _tryReconnect(dbInfo).then(function () {\n                    createTransaction(dbInfo, mode, callback, retries - 1);\n                });\n            })[\"catch\"](callback);\n        }\n\n        callback(err);\n    }\n}\n\nfunction createDbContext() {\n    return {\n        // Running localForages sharing a database.\n        forages: [],\n        // Shared database.\n        db: null,\n        // Database readiness (promise).\n        dbReady: null,\n        // Deferred operations on the database.\n        deferredOperations: []\n    };\n}\n\n// Open the IndexedDB database (automatically creates one if one didn't\n// previously exist), using any options set in the config.\nfunction _initStorage(options) {\n    var self = this;\n    var dbInfo = {\n        db: null\n    };\n\n    if (options) {\n        for (var i in options) {\n            dbInfo[i] = options[i];\n        }\n    }\n\n    // Get the current context of the database;\n    var dbContext = dbContexts[dbInfo.name];\n\n    // ...or create a new context.\n    if (!dbContext) {\n        dbContext = createDbContext();\n        // Register the new context in the global container.\n        dbContexts[dbInfo.name] = dbContext;\n    }\n\n    // Register itself as a running localForage in the current context.\n    dbContext.forages.push(self);\n\n    // Replace the default `ready()` function with the specialized one.\n    if (!self._initReady) {\n        self._initReady = self.ready;\n        self.ready = _fullyReady;\n    }\n\n    // Create an array of initialization states of the related localForages.\n    var initPromises = [];\n\n    function ignoreErrors() {\n        // Don't handle errors here,\n        // just makes sure related localForages aren't pending.\n        return Promise$1.resolve();\n    }\n\n    for (var j = 0; j < dbContext.forages.length; j++) {\n        var forage = dbContext.forages[j];\n        if (forage !== self) {\n            // Don't wait for itself...\n            initPromises.push(forage._initReady()[\"catch\"](ignoreErrors));\n        }\n    }\n\n    // Take a snapshot of the related localForages.\n    var forages = dbContext.forages.slice(0);\n\n    // Initialize the connection process only when\n    // all the related localForages aren't pending.\n    return Promise$1.all(initPromises).then(function () {\n        dbInfo.db = dbContext.db;\n        // Get the connection or open a new one without upgrade.\n        return _getOriginalConnection(dbInfo);\n    }).then(function (db) {\n        dbInfo.db = db;\n        if (_isUpgradeNeeded(dbInfo, self._defaultConfig.version)) {\n            // Reopen the database for upgrading.\n            return _getUpgradedConnection(dbInfo);\n        }\n        return db;\n    }).then(function (db) {\n        dbInfo.db = dbContext.db = db;\n        self._dbInfo = dbInfo;\n        // Share the final connection amongst related localForages.\n        for (var k = 0; k < forages.length; k++) {\n            var forage = forages[k];\n            if (forage !== self) {\n                // Self is already up-to-date.\n                forage._dbInfo.db = dbInfo.db;\n                forage._dbInfo.version = dbInfo.version;\n            }\n        }\n    });\n}\n\nfunction getItem(key, callback) {\n    var self = this;\n\n    key = normalizeKey(key);\n\n    var promise = new Promise$1(function (resolve, reject) {\n        self.ready().then(function () {\n            createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) {\n                if (err) {\n                    return reject(err);\n                }\n\n                try {\n                    var store = transaction.objectStore(self._dbInfo.storeName);\n                    var req = store.get(key);\n\n                    req.onsuccess = function () {\n                        var value = req.result;\n                        if (value === undefined) {\n                            value = null;\n                        }\n                        if (_isEncodedBlob(value)) {\n                            value = _decodeBlob(value);\n                        }\n                        resolve(value);\n                    };\n\n                    req.onerror = function () {\n                        reject(req.error);\n                    };\n                } catch (e) {\n                    reject(e);\n                }\n            });\n        })[\"catch\"](reject);\n    });\n\n    executeCallback(promise, callback);\n    return promise;\n}\n\n// Iterate over all items stored in database.\nfunction iterate(iterator, callback) {\n    var self = this;\n\n    var promise = new Promise$1(function (resolve, reject) {\n        self.ready().then(function () {\n            createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) {\n                if (err) {\n                    return reject(err);\n                }\n\n                try {\n                    var store = transaction.objectStore(self._dbInfo.storeName);\n                    var req = store.openCursor();\n                    var iterationNumber = 1;\n\n                    req.onsuccess = function () {\n                        var cursor = req.result;\n\n                        if (cursor) {\n                            var value = cursor.value;\n                            if (_isEncodedBlob(value)) {\n                                value = _decodeBlob(value);\n                            }\n                            var result = iterator(value, cursor.key, iterationNumber++);\n\n                            // when the iterator callback retuns any\n                            // (non-`undefined`) value, then we stop\n                            // the iteration immediately\n                            if (result !== void 0) {\n                                resolve(result);\n                            } else {\n                                cursor[\"continue\"]();\n                            }\n                        } else {\n                            resolve();\n                        }\n                    };\n\n                    req.onerror = function () {\n                        reject(req.error);\n                    };\n                } catch (e) {\n                    reject(e);\n                }\n            });\n        })[\"catch\"](reject);\n    });\n\n    executeCallback(promise, callback);\n\n    return promise;\n}\n\nfunction setItem(key, value, callback) {\n    var self = this;\n\n    key = normalizeKey(key);\n\n    var promise = new Promise$1(function (resolve, reject) {\n        var dbInfo;\n        self.ready().then(function () {\n            dbInfo = self._dbInfo;\n            if (toString.call(value) === '[object Blob]') {\n                return _checkBlobSupport(dbInfo.db).then(function (blobSupport) {\n                    if (blobSupport) {\n                        return value;\n                    }\n                    return _encodeBlob(value);\n                });\n            }\n            return value;\n        }).then(function (value) {\n            createTransaction(self._dbInfo, READ_WRITE, function (err, transaction) {\n                if (err) {\n                    return reject(err);\n                }\n\n                try {\n                    var store = transaction.objectStore(self._dbInfo.storeName);\n\n                    // The reason we don't _save_ null is because IE 10 does\n                    // not support saving the `null` type in IndexedDB. How\n                    // ironic, given the bug below!\n                    // See: https://github.com/mozilla/localForage/issues/161\n                    if (value === null) {\n                        value = undefined;\n                    }\n\n                    var req = store.put(value, key);\n\n                    transaction.oncomplete = function () {\n                        // Cast to undefined so the value passed to\n                        // callback/promise is the same as what one would get out\n                        // of `getItem()` later. This leads to some weirdness\n                        // (setItem('foo', undefined) will return `null`), but\n                        // it's not my fault localStorage is our baseline and that\n                        // it's weird.\n                        if (value === undefined) {\n                            value = null;\n                        }\n\n                        resolve(value);\n                    };\n                    transaction.onabort = transaction.onerror = function () {\n                        var err = req.error ? req.error : req.transaction.error;\n                        reject(err);\n                    };\n                } catch (e) {\n                    reject(e);\n                }\n            });\n        })[\"catch\"](reject);\n    });\n\n    executeCallback(promise, callback);\n    return promise;\n}\n\nfunction removeItem(key, callback) {\n    var self = this;\n\n    key = normalizeKey(key);\n\n    var promise = new Promise$1(function (resolve, reject) {\n        self.ready().then(function () {\n            createTransaction(self._dbInfo, READ_WRITE, function (err, transaction) {\n                if (err) {\n                    return reject(err);\n                }\n\n                try {\n                    var store = transaction.objectStore(self._dbInfo.storeName);\n                    // We use a Grunt task to make this safe for IE and some\n                    // versions of Android (including those used by Cordova).\n                    // Normally IE won't like `.delete()` and will insist on\n                    // using `['delete']()`, but we have a build step that\n                    // fixes this for us now.\n                    var req = store[\"delete\"](key);\n                    transaction.oncomplete = function () {\n                        resolve();\n                    };\n\n                    transaction.onerror = function () {\n                        reject(req.error);\n                    };\n\n                    // The request will be also be aborted if we've exceeded our storage\n                    // space.\n                    transaction.onabort = function () {\n                        var err = req.error ? req.error : req.transaction.error;\n                        reject(err);\n                    };\n                } catch (e) {\n                    reject(e);\n                }\n            });\n        })[\"catch\"](reject);\n    });\n\n    executeCallback(promise, callback);\n    return promise;\n}\n\nfunction clear(callback) {\n    var self = this;\n\n    var promise = new Promise$1(function (resolve, reject) {\n        self.ready().then(function () {\n            createTransaction(self._dbInfo, READ_WRITE, function (err, transaction) {\n                if (err) {\n                    return reject(err);\n                }\n\n                try {\n                    var store = transaction.objectStore(self._dbInfo.storeName);\n                    var req = store.clear();\n\n                    transaction.oncomplete = function () {\n                        resolve();\n                    };\n\n                    transaction.onabort = transaction.onerror = function () {\n                        var err = req.error ? req.error : req.transaction.error;\n                        reject(err);\n                    };\n                } catch (e) {\n                    reject(e);\n                }\n            });\n        })[\"catch\"](reject);\n    });\n\n    executeCallback(promise, callback);\n    return promise;\n}\n\nfunction length(callback) {\n    var self = this;\n\n    var promise = new Promise$1(function (resolve, reject) {\n        self.ready().then(function () {\n            createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) {\n                if (err) {\n                    return reject(err);\n                }\n\n                try {\n                    var store = transaction.objectStore(self._dbInfo.storeName);\n                    var req = store.count();\n\n                    req.onsuccess = function () {\n                        resolve(req.result);\n                    };\n\n                    req.onerror = function () {\n                        reject(req.error);\n                    };\n                } catch (e) {\n                    reject(e);\n                }\n            });\n        })[\"catch\"](reject);\n    });\n\n    executeCallback(promise, callback);\n    return promise;\n}\n\nfunction key(n, callback) {\n    var self = this;\n\n    var promise = new Promise$1(function (resolve, reject) {\n        if (n < 0) {\n            resolve(null);\n\n            return;\n        }\n\n        self.ready().then(function () {\n            createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) {\n                if (err) {\n                    return reject(err);\n                }\n\n                try {\n                    var store = transaction.objectStore(self._dbInfo.storeName);\n                    var advanced = false;\n                    var req = store.openCursor();\n\n                    req.onsuccess = function () {\n                        var cursor = req.result;\n                        if (!cursor) {\n                            // this means there weren't enough keys\n                            resolve(null);\n\n                            return;\n                        }\n\n                        if (n === 0) {\n                            // We have the first key, return it if that's what they\n                            // wanted.\n                            resolve(cursor.key);\n                        } else {\n                            if (!advanced) {\n                                // Otherwise, ask the cursor to skip ahead n\n                                // records.\n                                advanced = true;\n                                cursor.advance(n);\n                            } else {\n                                // When we get here, we've got the nth key.\n                                resolve(cursor.key);\n                            }\n                        }\n                    };\n\n                    req.onerror = function () {\n                        reject(req.error);\n                    };\n                } catch (e) {\n                    reject(e);\n                }\n            });\n        })[\"catch\"](reject);\n    });\n\n    executeCallback(promise, callback);\n    return promise;\n}\n\nfunction keys(callback) {\n    var self = this;\n\n    var promise = new Promise$1(function (resolve, reject) {\n        self.ready().then(function () {\n            createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) {\n                if (err) {\n                    return reject(err);\n                }\n\n                try {\n                    var store = transaction.objectStore(self._dbInfo.storeName);\n                    var req = store.openCursor();\n                    var keys = [];\n\n                    req.onsuccess = function () {\n                        var cursor = req.result;\n\n                        if (!cursor) {\n                            resolve(keys);\n                            return;\n                        }\n\n                        keys.push(cursor.key);\n                        cursor[\"continue\"]();\n                    };\n\n                    req.onerror = function () {\n                        reject(req.error);\n                    };\n                } catch (e) {\n                    reject(e);\n                }\n            });\n        })[\"catch\"](reject);\n    });\n\n    executeCallback(promise, callback);\n    return promise;\n}\n\nfunction dropInstance(options, callback) {\n    callback = getCallback.apply(this, arguments);\n\n    var currentConfig = this.config();\n    options = typeof options !== 'function' && options || {};\n    if (!options.name) {\n        options.name = options.name || currentConfig.name;\n        options.storeName = options.storeName || currentConfig.storeName;\n    }\n\n    var self = this;\n    var promise;\n    if (!options.name) {\n        promise = Promise$1.reject('Invalid arguments');\n    } else {\n        var isCurrentDb = options.name === currentConfig.name && self._dbInfo.db;\n\n        var dbPromise = isCurrentDb ? Promise$1.resolve(self._dbInfo.db) : _getOriginalConnection(options).then(function (db) {\n            var dbContext = dbContexts[options.name];\n            var forages = dbContext.forages;\n            dbContext.db = db;\n            for (var i = 0; i < forages.length; i++) {\n                forages[i]._dbInfo.db = db;\n            }\n            return db;\n        });\n\n        if (!options.storeName) {\n            promise = dbPromise.then(function (db) {\n                _deferReadiness(options);\n\n                var dbContext = dbContexts[options.name];\n                var forages = dbContext.forages;\n\n                db.close();\n                for (var i = 0; i < forages.length; i++) {\n                    var forage = forages[i];\n                    forage._dbInfo.db = null;\n                }\n\n                var dropDBPromise = new Promise$1(function (resolve, reject) {\n                    var req = idb.deleteDatabase(options.name);\n\n                    req.onerror = req.onblocked = function (err) {\n                        var db = req.result;\n                        if (db) {\n                            db.close();\n                        }\n                        reject(err);\n                    };\n\n                    req.onsuccess = function () {\n                        var db = req.result;\n                        if (db) {\n                            db.close();\n                        }\n                        resolve(db);\n                    };\n                });\n\n                return dropDBPromise.then(function (db) {\n                    dbContext.db = db;\n                    for (var i = 0; i < forages.length; i++) {\n                        var _forage = forages[i];\n                        _advanceReadiness(_forage._dbInfo);\n                    }\n                })[\"catch\"](function (err) {\n                    (_rejectReadiness(options, err) || Promise$1.resolve())[\"catch\"](function () {});\n                    throw err;\n                });\n            });\n        } else {\n            promise = dbPromise.then(function (db) {\n                if (!db.objectStoreNames.contains(options.storeName)) {\n                    return;\n                }\n\n                var newVersion = db.version + 1;\n\n                _deferReadiness(options);\n\n                var dbContext = dbContexts[options.name];\n                var forages = dbContext.forages;\n\n                db.close();\n                for (var i = 0; i < forages.length; i++) {\n                    var forage = forages[i];\n                    forage._dbInfo.db = null;\n                    forage._dbInfo.version = newVersion;\n                }\n\n                var dropObjectPromise = new Promise$1(function (resolve, reject) {\n                    var req = idb.open(options.name, newVersion);\n\n                    req.onerror = function (err) {\n                        var db = req.result;\n                        db.close();\n                        reject(err);\n                    };\n\n                    req.onupgradeneeded = function () {\n                        var db = req.result;\n                        db.deleteObjectStore(options.storeName);\n                    };\n\n                    req.onsuccess = function () {\n                        var db = req.result;\n                        db.close();\n                        resolve(db);\n                    };\n                });\n\n                return dropObjectPromise.then(function (db) {\n                    dbContext.db = db;\n                    for (var j = 0; j < forages.length; j++) {\n                        var _forage2 = forages[j];\n                        _forage2._dbInfo.db = db;\n                        _advanceReadiness(_forage2._dbInfo);\n                    }\n                })[\"catch\"](function (err) {\n                    (_rejectReadiness(options, err) || Promise$1.resolve())[\"catch\"](function () {});\n                    throw err;\n                });\n            });\n        }\n    }\n\n    executeCallback(promise, callback);\n    return promise;\n}\n\nvar asyncStorage = {\n    _driver: 'asyncStorage',\n    _initStorage: _initStorage,\n    _support: isIndexedDBValid(),\n    iterate: iterate,\n    getItem: getItem,\n    setItem: setItem,\n    removeItem: removeItem,\n    clear: clear,\n    length: length,\n    key: key,\n    keys: keys,\n    dropInstance: dropInstance\n};\n\nfunction isWebSQLValid() {\n    return typeof openDatabase === 'function';\n}\n\n// Sadly, the best way to save binary data in WebSQL/localStorage is serializing\n// it to Base64, so this is how we store it to prevent very strange errors with less\n// verbose ways of binary <-> string data storage.\nvar BASE_CHARS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\nvar BLOB_TYPE_PREFIX = '~~local_forage_type~';\nvar BLOB_TYPE_PREFIX_REGEX = /^~~local_forage_type~([^~]+)~/;\n\nvar SERIALIZED_MARKER = '__lfsc__:';\nvar SERIALIZED_MARKER_LENGTH = SERIALIZED_MARKER.length;\n\n// OMG the serializations!\nvar TYPE_ARRAYBUFFER = 'arbf';\nvar TYPE_BLOB = 'blob';\nvar TYPE_INT8ARRAY = 'si08';\nvar TYPE_UINT8ARRAY = 'ui08';\nvar TYPE_UINT8CLAMPEDARRAY = 'uic8';\nvar TYPE_INT16ARRAY = 'si16';\nvar TYPE_INT32ARRAY = 'si32';\nvar TYPE_UINT16ARRAY = 'ur16';\nvar TYPE_UINT32ARRAY = 'ui32';\nvar TYPE_FLOAT32ARRAY = 'fl32';\nvar TYPE_FLOAT64ARRAY = 'fl64';\nvar TYPE_SERIALIZED_MARKER_LENGTH = SERIALIZED_MARKER_LENGTH + TYPE_ARRAYBUFFER.length;\n\nvar toString$1 = Object.prototype.toString;\n\nfunction stringToBuffer(serializedString) {\n    // Fill the string into a ArrayBuffer.\n    var bufferLength = serializedString.length * 0.75;\n    var len = serializedString.length;\n    var i;\n    var p = 0;\n    var encoded1, encoded2, encoded3, encoded4;\n\n    if (serializedString[serializedString.length - 1] === '=') {\n        bufferLength--;\n        if (serializedString[serializedString.length - 2] === '=') {\n            bufferLength--;\n        }\n    }\n\n    var buffer = new ArrayBuffer(bufferLength);\n    var bytes = new Uint8Array(buffer);\n\n    for (i = 0; i < len; i += 4) {\n        encoded1 = BASE_CHARS.indexOf(serializedString[i]);\n        encoded2 = BASE_CHARS.indexOf(serializedString[i + 1]);\n        encoded3 = BASE_CHARS.indexOf(serializedString[i + 2]);\n        encoded4 = BASE_CHARS.indexOf(serializedString[i + 3]);\n\n        /*jslint bitwise: true */\n        bytes[p++] = encoded1 << 2 | encoded2 >> 4;\n        bytes[p++] = (encoded2 & 15) << 4 | encoded3 >> 2;\n        bytes[p++] = (encoded3 & 3) << 6 | encoded4 & 63;\n    }\n    return buffer;\n}\n\n// Converts a buffer to a string to store, serialized, in the backend\n// storage library.\nfunction bufferToString(buffer) {\n    // base64-arraybuffer\n    var bytes = new Uint8Array(buffer);\n    var base64String = '';\n    var i;\n\n    for (i = 0; i < bytes.length; i += 3) {\n        /*jslint bitwise: true */\n        base64String += BASE_CHARS[bytes[i] >> 2];\n        base64String += BASE_CHARS[(bytes[i] & 3) << 4 | bytes[i + 1] >> 4];\n        base64String += BASE_CHARS[(bytes[i + 1] & 15) << 2 | bytes[i + 2] >> 6];\n        base64String += BASE_CHARS[bytes[i + 2] & 63];\n    }\n\n    if (bytes.length % 3 === 2) {\n        base64String = base64String.substring(0, base64String.length - 1) + '=';\n    } else if (bytes.length % 3 === 1) {\n        base64String = base64String.substring(0, base64String.length - 2) + '==';\n    }\n\n    return base64String;\n}\n\n// Serialize a value, afterwards executing a callback (which usually\n// instructs the `setItem()` callback/promise to be executed). This is how\n// we store binary data with localStorage.\nfunction serialize(value, callback) {\n    var valueType = '';\n    if (value) {\n        valueType = toString$1.call(value);\n    }\n\n    // Cannot use `value instanceof ArrayBuffer` or such here, as these\n    // checks fail when running the tests using casper.js...\n    //\n    // TODO: See why those tests fail and use a better solution.\n    if (value && (valueType === '[object ArrayBuffer]' || value.buffer && toString$1.call(value.buffer) === '[object ArrayBuffer]')) {\n        // Convert binary arrays to a string and prefix the string with\n        // a special marker.\n        var buffer;\n        var marker = SERIALIZED_MARKER;\n\n        if (value instanceof ArrayBuffer) {\n            buffer = value;\n            marker += TYPE_ARRAYBUFFER;\n        } else {\n            buffer = value.buffer;\n\n            if (valueType === '[object Int8Array]') {\n                marker += TYPE_INT8ARRAY;\n            } else if (valueType === '[object Uint8Array]') {\n                marker += TYPE_UINT8ARRAY;\n            } else if (valueType === '[object Uint8ClampedArray]') {\n                marker += TYPE_UINT8CLAMPEDARRAY;\n            } else if (valueType === '[object Int16Array]') {\n                marker += TYPE_INT16ARRAY;\n            } else if (valueType === '[object Uint16Array]') {\n                marker += TYPE_UINT16ARRAY;\n            } else if (valueType === '[object Int32Array]') {\n                marker += TYPE_INT32ARRAY;\n            } else if (valueType === '[object Uint32Array]') {\n                marker += TYPE_UINT32ARRAY;\n            } else if (valueType === '[object Float32Array]') {\n                marker += TYPE_FLOAT32ARRAY;\n            } else if (valueType === '[object Float64Array]') {\n                marker += TYPE_FLOAT64ARRAY;\n            } else {\n                callback(new Error('Failed to get type for BinaryArray'));\n            }\n        }\n\n        callback(marker + bufferToString(buffer));\n    } else if (valueType === '[object Blob]') {\n        // Conver the blob to a binaryArray and then to a string.\n        var fileReader = new FileReader();\n\n        fileReader.onload = function () {\n            // Backwards-compatible prefix for the blob type.\n            var str = BLOB_TYPE_PREFIX + value.type + '~' + bufferToString(this.result);\n\n            callback(SERIALIZED_MARKER + TYPE_BLOB + str);\n        };\n\n        fileReader.readAsArrayBuffer(value);\n    } else {\n        try {\n            callback(JSON.stringify(value));\n        } catch (e) {\n            console.error(\"Couldn't convert value into a JSON string: \", value);\n\n            callback(null, e);\n        }\n    }\n}\n\n// Deserialize data we've inserted into a value column/field. We place\n// special markers into our strings to mark them as encoded; this isn't\n// as nice as a meta field, but it's the only sane thing we can do whilst\n// keeping localStorage support intact.\n//\n// Oftentimes this will just deserialize JSON content, but if we have a\n// special marker (SERIALIZED_MARKER, defined above), we will extract\n// some kind of arraybuffer/binary data/typed array out of the string.\nfunction deserialize(value) {\n    // If we haven't marked this string as being specially serialized (i.e.\n    // something other than serialized JSON), we can just return it and be\n    // done with it.\n    if (value.substring(0, SERIALIZED_MARKER_LENGTH) !== SERIALIZED_MARKER) {\n        return JSON.parse(value);\n    }\n\n    // The following code deals with deserializing some kind of Blob or\n    // TypedArray. First we separate out the type of data we're dealing\n    // with from the data itself.\n    var serializedString = value.substring(TYPE_SERIALIZED_MARKER_LENGTH);\n    var type = value.substring(SERIALIZED_MARKER_LENGTH, TYPE_SERIALIZED_MARKER_LENGTH);\n\n    var blobType;\n    // Backwards-compatible blob type serialization strategy.\n    // DBs created with older versions of localForage will simply not have the blob type.\n    if (type === TYPE_BLOB && BLOB_TYPE_PREFIX_REGEX.test(serializedString)) {\n        var matcher = serializedString.match(BLOB_TYPE_PREFIX_REGEX);\n        blobType = matcher[1];\n        serializedString = serializedString.substring(matcher[0].length);\n    }\n    var buffer = stringToBuffer(serializedString);\n\n    // Return the right type based on the code/type set during\n    // serialization.\n    switch (type) {\n        case TYPE_ARRAYBUFFER:\n            return buffer;\n        case TYPE_BLOB:\n            return createBlob([buffer], { type: blobType });\n        case TYPE_INT8ARRAY:\n            return new Int8Array(buffer);\n        case TYPE_UINT8ARRAY:\n            return new Uint8Array(buffer);\n        case TYPE_UINT8CLAMPEDARRAY:\n            return new Uint8ClampedArray(buffer);\n        case TYPE_INT16ARRAY:\n            return new Int16Array(buffer);\n        case TYPE_UINT16ARRAY:\n            return new Uint16Array(buffer);\n        case TYPE_INT32ARRAY:\n            return new Int32Array(buffer);\n        case TYPE_UINT32ARRAY:\n            return new Uint32Array(buffer);\n        case TYPE_FLOAT32ARRAY:\n            return new Float32Array(buffer);\n        case TYPE_FLOAT64ARRAY:\n            return new Float64Array(buffer);\n        default:\n            throw new Error('Unkown type: ' + type);\n    }\n}\n\nvar localforageSerializer = {\n    serialize: serialize,\n    deserialize: deserialize,\n    stringToBuffer: stringToBuffer,\n    bufferToString: bufferToString\n};\n\n/*\n * Includes code from:\n *\n * base64-arraybuffer\n * https://github.com/niklasvh/base64-arraybuffer\n *\n * Copyright (c) 2012 Niklas von Hertzen\n * Licensed under the MIT license.\n */\n\nfunction createDbTable(t, dbInfo, callback, errorCallback) {\n    t.executeSql('CREATE TABLE IF NOT EXISTS ' + dbInfo.storeName + ' ' + '(id INTEGER PRIMARY KEY, key unique, value)', [], callback, errorCallback);\n}\n\n// Open the WebSQL database (automatically creates one if one didn't\n// previously exist), using any options set in the config.\nfunction _initStorage$1(options) {\n    var self = this;\n    var dbInfo = {\n        db: null\n    };\n\n    if (options) {\n        for (var i in options) {\n            dbInfo[i] = typeof options[i] !== 'string' ? options[i].toString() : options[i];\n        }\n    }\n\n    var dbInfoPromise = new Promise$1(function (resolve, reject) {\n        // Open the database; the openDatabase API will automatically\n        // create it for us if it doesn't exist.\n        try {\n            dbInfo.db = openDatabase(dbInfo.name, String(dbInfo.version), dbInfo.description, dbInfo.size);\n        } catch (e) {\n            return reject(e);\n        }\n\n        // Create our key/value table if it doesn't exist.\n        dbInfo.db.transaction(function (t) {\n            createDbTable(t, dbInfo, function () {\n                self._dbInfo = dbInfo;\n                resolve();\n            }, function (t, error) {\n                reject(error);\n            });\n        }, reject);\n    });\n\n    dbInfo.serializer = localforageSerializer;\n    return dbInfoPromise;\n}\n\nfunction tryExecuteSql(t, dbInfo, sqlStatement, args, callback, errorCallback) {\n    t.executeSql(sqlStatement, args, callback, function (t, error) {\n        if (error.code === error.SYNTAX_ERR) {\n            t.executeSql('SELECT name FROM sqlite_master ' + \"WHERE type='table' AND name = ?\", [dbInfo.storeName], function (t, results) {\n                if (!results.rows.length) {\n                    // if the table is missing (was deleted)\n                    // re-create it table and retry\n                    createDbTable(t, dbInfo, function () {\n                        t.executeSql(sqlStatement, args, callback, errorCallback);\n                    }, errorCallback);\n                } else {\n                    errorCallback(t, error);\n                }\n            }, errorCallback);\n        } else {\n            errorCallback(t, error);\n        }\n    }, errorCallback);\n}\n\nfunction getItem$1(key, callback) {\n    var self = this;\n\n    key = normalizeKey(key);\n\n    var promise = new Promise$1(function (resolve, reject) {\n        self.ready().then(function () {\n            var dbInfo = self._dbInfo;\n            dbInfo.db.transaction(function (t) {\n                tryExecuteSql(t, dbInfo, 'SELECT * FROM ' + dbInfo.storeName + ' WHERE key = ? LIMIT 1', [key], function (t, results) {\n                    var result = results.rows.length ? results.rows.item(0).value : null;\n\n                    // Check to see if this is serialized content we need to\n                    // unpack.\n                    if (result) {\n                        result = dbInfo.serializer.deserialize(result);\n                    }\n\n                    resolve(result);\n                }, function (t, error) {\n                    reject(error);\n                });\n            });\n        })[\"catch\"](reject);\n    });\n\n    executeCallback(promise, callback);\n    return promise;\n}\n\nfunction iterate$1(iterator, callback) {\n    var self = this;\n\n    var promise = new Promise$1(function (resolve, reject) {\n        self.ready().then(function () {\n            var dbInfo = self._dbInfo;\n\n            dbInfo.db.transaction(function (t) {\n                tryExecuteSql(t, dbInfo, 'SELECT * FROM ' + dbInfo.storeName, [], function (t, results) {\n                    var rows = results.rows;\n                    var length = rows.length;\n\n                    for (var i = 0; i < length; i++) {\n                        var item = rows.item(i);\n                        var result = item.value;\n\n                        // Check to see if this is serialized content\n                        // we need to unpack.\n                        if (result) {\n                            result = dbInfo.serializer.deserialize(result);\n                        }\n\n                        result = iterator(result, item.key, i + 1);\n\n                        // void(0) prevents problems with redefinition\n                        // of `undefined`.\n                        if (result !== void 0) {\n                            resolve(result);\n                            return;\n                        }\n                    }\n\n                    resolve();\n                }, function (t, error) {\n                    reject(error);\n                });\n            });\n        })[\"catch\"](reject);\n    });\n\n    executeCallback(promise, callback);\n    return promise;\n}\n\nfunction _setItem(key, value, callback, retriesLeft) {\n    var self = this;\n\n    key = normalizeKey(key);\n\n    var promise = new Promise$1(function (resolve, reject) {\n        self.ready().then(function () {\n            // The localStorage API doesn't return undefined values in an\n            // \"expected\" way, so undefined is always cast to null in all\n            // drivers. See: https://github.com/mozilla/localForage/pull/42\n            if (value === undefined) {\n                value = null;\n            }\n\n            // Save the original value to pass to the callback.\n            var originalValue = value;\n\n            var dbInfo = self._dbInfo;\n            dbInfo.serializer.serialize(value, function (value, error) {\n                if (error) {\n                    reject(error);\n                } else {\n                    dbInfo.db.transaction(function (t) {\n                        tryExecuteSql(t, dbInfo, 'INSERT OR REPLACE INTO ' + dbInfo.storeName + ' ' + '(key, value) VALUES (?, ?)', [key, value], function () {\n                            resolve(originalValue);\n                        }, function (t, error) {\n                            reject(error);\n                        });\n                    }, function (sqlError) {\n                        // The transaction failed; check\n                        // to see if it's a quota error.\n                        if (sqlError.code === sqlError.QUOTA_ERR) {\n                            // We reject the callback outright for now, but\n                            // it's worth trying to re-run the transaction.\n                            // Even if the user accepts the prompt to use\n                            // more storage on Safari, this error will\n                            // be called.\n                            //\n                            // Try to re-run the transaction.\n                            if (retriesLeft > 0) {\n                                resolve(_setItem.apply(self, [key, originalValue, callback, retriesLeft - 1]));\n                                return;\n                            }\n                            reject(sqlError);\n                        }\n                    });\n                }\n            });\n        })[\"catch\"](reject);\n    });\n\n    executeCallback(promise, callback);\n    return promise;\n}\n\nfunction setItem$1(key, value, callback) {\n    return _setItem.apply(this, [key, value, callback, 1]);\n}\n\nfunction removeItem$1(key, callback) {\n    var self = this;\n\n    key = normalizeKey(key);\n\n    var promise = new Promise$1(function (resolve, reject) {\n        self.ready().then(function () {\n            var dbInfo = self._dbInfo;\n            dbInfo.db.transaction(function (t) {\n                tryExecuteSql(t, dbInfo, 'DELETE FROM ' + dbInfo.storeName + ' WHERE key = ?', [key], function () {\n                    resolve();\n                }, function (t, error) {\n                    reject(error);\n                });\n            });\n        })[\"catch\"](reject);\n    });\n\n    executeCallback(promise, callback);\n    return promise;\n}\n\n// Deletes every item in the table.\n// TODO: Find out if this resets the AUTO_INCREMENT number.\nfunction clear$1(callback) {\n    var self = this;\n\n    var promise = new Promise$1(function (resolve, reject) {\n        self.ready().then(function () {\n            var dbInfo = self._dbInfo;\n            dbInfo.db.transaction(function (t) {\n                tryExecuteSql(t, dbInfo, 'DELETE FROM ' + dbInfo.storeName, [], function () {\n                    resolve();\n                }, function (t, error) {\n                    reject(error);\n                });\n            });\n        })[\"catch\"](reject);\n    });\n\n    executeCallback(promise, callback);\n    return promise;\n}\n\n// Does a simple `COUNT(key)` to get the number of items stored in\n// localForage.\nfunction length$1(callback) {\n    var self = this;\n\n    var promise = new Promise$1(function (resolve, reject) {\n        self.ready().then(function () {\n            var dbInfo = self._dbInfo;\n            dbInfo.db.transaction(function (t) {\n                // Ahhh, SQL makes this one soooooo easy.\n                tryExecuteSql(t, dbInfo, 'SELECT COUNT(key) as c FROM ' + dbInfo.storeName, [], function (t, results) {\n                    var result = results.rows.item(0).c;\n                    resolve(result);\n                }, function (t, error) {\n                    reject(error);\n                });\n            });\n        })[\"catch\"](reject);\n    });\n\n    executeCallback(promise, callback);\n    return promise;\n}\n\n// Return the key located at key index X; essentially gets the key from a\n// `WHERE id = ?`. This is the most efficient way I can think to implement\n// this rarely-used (in my experience) part of the API, but it can seem\n// inconsistent, because we do `INSERT OR REPLACE INTO` on `setItem()`, so\n// the ID of each key will change every time it's updated. Perhaps a stored\n// procedure for the `setItem()` SQL would solve this problem?\n// TODO: Don't change ID on `setItem()`.\nfunction key$1(n, callback) {\n    var self = this;\n\n    var promise = new Promise$1(function (resolve, reject) {\n        self.ready().then(function () {\n            var dbInfo = self._dbInfo;\n            dbInfo.db.transaction(function (t) {\n                tryExecuteSql(t, dbInfo, 'SELECT key FROM ' + dbInfo.storeName + ' WHERE id = ? LIMIT 1', [n + 1], function (t, results) {\n                    var result = results.rows.length ? results.rows.item(0).key : null;\n                    resolve(result);\n                }, function (t, error) {\n                    reject(error);\n                });\n            });\n        })[\"catch\"](reject);\n    });\n\n    executeCallback(promise, callback);\n    return promise;\n}\n\nfunction keys$1(callback) {\n    var self = this;\n\n    var promise = new Promise$1(function (resolve, reject) {\n        self.ready().then(function () {\n            var dbInfo = self._dbInfo;\n            dbInfo.db.transaction(function (t) {\n                tryExecuteSql(t, dbInfo, 'SELECT key FROM ' + dbInfo.storeName, [], function (t, results) {\n                    var keys = [];\n\n                    for (var i = 0; i < results.rows.length; i++) {\n                        keys.push(results.rows.item(i).key);\n                    }\n\n                    resolve(keys);\n                }, function (t, error) {\n                    reject(error);\n                });\n            });\n        })[\"catch\"](reject);\n    });\n\n    executeCallback(promise, callback);\n    return promise;\n}\n\n// https://www.w3.org/TR/webdatabase/#databases\n// > There is no way to enumerate or delete the databases available for an origin from this API.\nfunction getAllStoreNames(db) {\n    return new Promise$1(function (resolve, reject) {\n        db.transaction(function (t) {\n            t.executeSql('SELECT name FROM sqlite_master ' + \"WHERE type='table' AND name <> '__WebKitDatabaseInfoTable__'\", [], function (t, results) {\n                var storeNames = [];\n\n                for (var i = 0; i < results.rows.length; i++) {\n                    storeNames.push(results.rows.item(i).name);\n                }\n\n                resolve({\n                    db: db,\n                    storeNames: storeNames\n                });\n            }, function (t, error) {\n                reject(error);\n            });\n        }, function (sqlError) {\n            reject(sqlError);\n        });\n    });\n}\n\nfunction dropInstance$1(options, callback) {\n    callback = getCallback.apply(this, arguments);\n\n    var currentConfig = this.config();\n    options = typeof options !== 'function' && options || {};\n    if (!options.name) {\n        options.name = options.name || currentConfig.name;\n        options.storeName = options.storeName || currentConfig.storeName;\n    }\n\n    var self = this;\n    var promise;\n    if (!options.name) {\n        promise = Promise$1.reject('Invalid arguments');\n    } else {\n        promise = new Promise$1(function (resolve) {\n            var db;\n            if (options.name === currentConfig.name) {\n                // use the db reference of the current instance\n                db = self._dbInfo.db;\n            } else {\n                db = openDatabase(options.name, '', '', 0);\n            }\n\n            if (!options.storeName) {\n                // drop all database tables\n                resolve(getAllStoreNames(db));\n            } else {\n                resolve({\n                    db: db,\n                    storeNames: [options.storeName]\n                });\n            }\n        }).then(function (operationInfo) {\n            return new Promise$1(function (resolve, reject) {\n                operationInfo.db.transaction(function (t) {\n                    function dropTable(storeName) {\n                        return new Promise$1(function (resolve, reject) {\n                            t.executeSql('DROP TABLE IF EXISTS ' + storeName, [], function () {\n                                resolve();\n                            }, function (t, error) {\n                                reject(error);\n                            });\n                        });\n                    }\n\n                    var operations = [];\n                    for (var i = 0, len = operationInfo.storeNames.length; i < len; i++) {\n                        operations.push(dropTable(operationInfo.storeNames[i]));\n                    }\n\n                    Promise$1.all(operations).then(function () {\n                        resolve();\n                    })[\"catch\"](function (e) {\n                        reject(e);\n                    });\n                }, function (sqlError) {\n                    reject(sqlError);\n                });\n            });\n        });\n    }\n\n    executeCallback(promise, callback);\n    return promise;\n}\n\nvar webSQLStorage = {\n    _driver: 'webSQLStorage',\n    _initStorage: _initStorage$1,\n    _support: isWebSQLValid(),\n    iterate: iterate$1,\n    getItem: getItem$1,\n    setItem: setItem$1,\n    removeItem: removeItem$1,\n    clear: clear$1,\n    length: length$1,\n    key: key$1,\n    keys: keys$1,\n    dropInstance: dropInstance$1\n};\n\nfunction isLocalStorageValid() {\n    try {\n        return typeof localStorage !== 'undefined' && 'setItem' in localStorage &&\n        // in IE8 typeof localStorage.setItem === 'object'\n        !!localStorage.setItem;\n    } catch (e) {\n        return false;\n    }\n}\n\nfunction _getKeyPrefix(options, defaultConfig) {\n    var keyPrefix = options.name + '/';\n\n    if (options.storeName !== defaultConfig.storeName) {\n        keyPrefix += options.storeName + '/';\n    }\n    return keyPrefix;\n}\n\n// Check if localStorage throws when saving an item\nfunction checkIfLocalStorageThrows() {\n    var localStorageTestKey = '_localforage_support_test';\n\n    try {\n        localStorage.setItem(localStorageTestKey, true);\n        localStorage.removeItem(localStorageTestKey);\n\n        return false;\n    } catch (e) {\n        return true;\n    }\n}\n\n// Check if localStorage is usable and allows to save an item\n// This method checks if localStorage is usable in Safari Private Browsing\n// mode, or in any other case where the available quota for localStorage\n// is 0 and there wasn't any saved items yet.\nfunction _isLocalStorageUsable() {\n    return !checkIfLocalStorageThrows() || localStorage.length > 0;\n}\n\n// Config the localStorage backend, using options set in the config.\nfunction _initStorage$2(options) {\n    var self = this;\n    var dbInfo = {};\n    if (options) {\n        for (var i in options) {\n            dbInfo[i] = options[i];\n        }\n    }\n\n    dbInfo.keyPrefix = _getKeyPrefix(options, self._defaultConfig);\n\n    if (!_isLocalStorageUsable()) {\n        return Promise$1.reject();\n    }\n\n    self._dbInfo = dbInfo;\n    dbInfo.serializer = localforageSerializer;\n\n    return Promise$1.resolve();\n}\n\n// Remove all keys from the datastore, effectively destroying all data in\n// the app's key/value store!\nfunction clear$2(callback) {\n    var self = this;\n    var promise = self.ready().then(function () {\n        var keyPrefix = self._dbInfo.keyPrefix;\n\n        for (var i = localStorage.length - 1; i >= 0; i--) {\n            var key = localStorage.key(i);\n\n            if (key.indexOf(keyPrefix) === 0) {\n                localStorage.removeItem(key);\n            }\n        }\n    });\n\n    executeCallback(promise, callback);\n    return promise;\n}\n\n// Retrieve an item from the store. Unlike the original async_storage\n// library in Gaia, we don't modify return values at all. If a key's value\n// is `undefined`, we pass that value to the callback function.\nfunction getItem$2(key, callback) {\n    var self = this;\n\n    key = normalizeKey(key);\n\n    var promise = self.ready().then(function () {\n        var dbInfo = self._dbInfo;\n        var result = localStorage.getItem(dbInfo.keyPrefix + key);\n\n        // If a result was found, parse it from the serialized\n        // string into a JS object. If result isn't truthy, the key\n        // is likely undefined and we'll pass it straight to the\n        // callback.\n        if (result) {\n            result = dbInfo.serializer.deserialize(result);\n        }\n\n        return result;\n    });\n\n    executeCallback(promise, callback);\n    return promise;\n}\n\n// Iterate over all items in the store.\nfunction iterate$2(iterator, callback) {\n    var self = this;\n\n    var promise = self.ready().then(function () {\n        var dbInfo = self._dbInfo;\n        var keyPrefix = dbInfo.keyPrefix;\n        var keyPrefixLength = keyPrefix.length;\n        var length = localStorage.length;\n\n        // We use a dedicated iterator instead of the `i` variable below\n        // so other keys we fetch in localStorage aren't counted in\n        // the `iterationNumber` argument passed to the `iterate()`\n        // callback.\n        //\n        // See: github.com/mozilla/localForage/pull/435#discussion_r38061530\n        var iterationNumber = 1;\n\n        for (var i = 0; i < length; i++) {\n            var key = localStorage.key(i);\n            if (key.indexOf(keyPrefix) !== 0) {\n                continue;\n            }\n            var value = localStorage.getItem(key);\n\n            // If a result was found, parse it from the serialized\n            // string into a JS object. If result isn't truthy, the\n            // key is likely undefined and we'll pass it straight\n            // to the iterator.\n            if (value) {\n                value = dbInfo.serializer.deserialize(value);\n            }\n\n            value = iterator(value, key.substring(keyPrefixLength), iterationNumber++);\n\n            if (value !== void 0) {\n                return value;\n            }\n        }\n    });\n\n    executeCallback(promise, callback);\n    return promise;\n}\n\n// Same as localStorage's key() method, except takes a callback.\nfunction key$2(n, callback) {\n    var self = this;\n    var promise = self.ready().then(function () {\n        var dbInfo = self._dbInfo;\n        var result;\n        try {\n            result = localStorage.key(n);\n        } catch (error) {\n            result = null;\n        }\n\n        // Remove the prefix from the key, if a key is found.\n        if (result) {\n            result = result.substring(dbInfo.keyPrefix.length);\n        }\n\n        return result;\n    });\n\n    executeCallback(promise, callback);\n    return promise;\n}\n\nfunction keys$2(callback) {\n    var self = this;\n    var promise = self.ready().then(function () {\n        var dbInfo = self._dbInfo;\n        var length = localStorage.length;\n        var keys = [];\n\n        for (var i = 0; i < length; i++) {\n            var itemKey = localStorage.key(i);\n            if (itemKey.indexOf(dbInfo.keyPrefix) === 0) {\n                keys.push(itemKey.substring(dbInfo.keyPrefix.length));\n            }\n        }\n\n        return keys;\n    });\n\n    executeCallback(promise, callback);\n    return promise;\n}\n\n// Supply the number of keys in the datastore to the callback function.\nfunction length$2(callback) {\n    var self = this;\n    var promise = self.keys().then(function (keys) {\n        return keys.length;\n    });\n\n    executeCallback(promise, callback);\n    return promise;\n}\n\n// Remove an item from the store, nice and simple.\nfunction removeItem$2(key, callback) {\n    var self = this;\n\n    key = normalizeKey(key);\n\n    var promise = self.ready().then(function () {\n        var dbInfo = self._dbInfo;\n        localStorage.removeItem(dbInfo.keyPrefix + key);\n    });\n\n    executeCallback(promise, callback);\n    return promise;\n}\n\n// Set a key's value and run an optional callback once the value is set.\n// Unlike Gaia's implementation, the callback function is passed the value,\n// in case you want to operate on that value only after you're sure it\n// saved, or something like that.\nfunction setItem$2(key, value, callback) {\n    var self = this;\n\n    key = normalizeKey(key);\n\n    var promise = self.ready().then(function () {\n        // Convert undefined values to null.\n        // https://github.com/mozilla/localForage/pull/42\n        if (value === undefined) {\n            value = null;\n        }\n\n        // Save the original value to pass to the callback.\n        var originalValue = value;\n\n        return new Promise$1(function (resolve, reject) {\n            var dbInfo = self._dbInfo;\n            dbInfo.serializer.serialize(value, function (value, error) {\n                if (error) {\n                    reject(error);\n                } else {\n                    try {\n                        localStorage.setItem(dbInfo.keyPrefix + key, value);\n                        resolve(originalValue);\n                    } catch (e) {\n                        // localStorage capacity exceeded.\n                        // TODO: Make this a specific error/event.\n                        if (e.name === 'QuotaExceededError' || e.name === 'NS_ERROR_DOM_QUOTA_REACHED') {\n                            reject(e);\n                        }\n                        reject(e);\n                    }\n                }\n            });\n        });\n    });\n\n    executeCallback(promise, callback);\n    return promise;\n}\n\nfunction dropInstance$2(options, callback) {\n    callback = getCallback.apply(this, arguments);\n\n    options = typeof options !== 'function' && options || {};\n    if (!options.name) {\n        var currentConfig = this.config();\n        options.name = options.name || currentConfig.name;\n        options.storeName = options.storeName || currentConfig.storeName;\n    }\n\n    var self = this;\n    var promise;\n    if (!options.name) {\n        promise = Promise$1.reject('Invalid arguments');\n    } else {\n        promise = new Promise$1(function (resolve) {\n            if (!options.storeName) {\n                resolve(options.name + '/');\n            } else {\n                resolve(_getKeyPrefix(options, self._defaultConfig));\n            }\n        }).then(function (keyPrefix) {\n            for (var i = localStorage.length - 1; i >= 0; i--) {\n                var key = localStorage.key(i);\n\n                if (key.indexOf(keyPrefix) === 0) {\n                    localStorage.removeItem(key);\n                }\n            }\n        });\n    }\n\n    executeCallback(promise, callback);\n    return promise;\n}\n\nvar localStorageWrapper = {\n    _driver: 'localStorageWrapper',\n    _initStorage: _initStorage$2,\n    _support: isLocalStorageValid(),\n    iterate: iterate$2,\n    getItem: getItem$2,\n    setItem: setItem$2,\n    removeItem: removeItem$2,\n    clear: clear$2,\n    length: length$2,\n    key: key$2,\n    keys: keys$2,\n    dropInstance: dropInstance$2\n};\n\nvar sameValue = function sameValue(x, y) {\n    return x === y || typeof x === 'number' && typeof y === 'number' && isNaN(x) && isNaN(y);\n};\n\nvar includes = function includes(array, searchElement) {\n    var len = array.length;\n    var i = 0;\n    while (i < len) {\n        if (sameValue(array[i], searchElement)) {\n            return true;\n        }\n        i++;\n    }\n\n    return false;\n};\n\nvar isArray = Array.isArray || function (arg) {\n    return Object.prototype.toString.call(arg) === '[object Array]';\n};\n\n// Drivers are stored here when `defineDriver()` is called.\n// They are shared across all instances of localForage.\nvar DefinedDrivers = {};\n\nvar DriverSupport = {};\n\nvar DefaultDrivers = {\n    INDEXEDDB: asyncStorage,\n    WEBSQL: webSQLStorage,\n    LOCALSTORAGE: localStorageWrapper\n};\n\nvar DefaultDriverOrder = [DefaultDrivers.INDEXEDDB._driver, DefaultDrivers.WEBSQL._driver, DefaultDrivers.LOCALSTORAGE._driver];\n\nvar OptionalDriverMethods = ['dropInstance'];\n\nvar LibraryMethods = ['clear', 'getItem', 'iterate', 'key', 'keys', 'length', 'removeItem', 'setItem'].concat(OptionalDriverMethods);\n\nvar DefaultConfig = {\n    description: '',\n    driver: DefaultDriverOrder.slice(),\n    name: 'localforage',\n    // Default DB size is _JUST UNDER_ 5MB, as it's the highest size\n    // we can use without a prompt.\n    size: 4980736,\n    storeName: 'keyvaluepairs',\n    version: 1.0\n};\n\nfunction callWhenReady(localForageInstance, libraryMethod) {\n    localForageInstance[libraryMethod] = function () {\n        var _args = arguments;\n        return localForageInstance.ready().then(function () {\n            return localForageInstance[libraryMethod].apply(localForageInstance, _args);\n        });\n    };\n}\n\nfunction extend() {\n    for (var i = 1; i < arguments.length; i++) {\n        var arg = arguments[i];\n\n        if (arg) {\n            for (var _key in arg) {\n                if (arg.hasOwnProperty(_key)) {\n                    if (isArray(arg[_key])) {\n                        arguments[0][_key] = arg[_key].slice();\n                    } else {\n                        arguments[0][_key] = arg[_key];\n                    }\n                }\n            }\n        }\n    }\n\n    return arguments[0];\n}\n\nvar LocalForage = function () {\n    function LocalForage(options) {\n        _classCallCheck(this, LocalForage);\n\n        for (var driverTypeKey in DefaultDrivers) {\n            if (DefaultDrivers.hasOwnProperty(driverTypeKey)) {\n                var driver = DefaultDrivers[driverTypeKey];\n                var driverName = driver._driver;\n                this[driverTypeKey] = driverName;\n\n                if (!DefinedDrivers[driverName]) {\n                    // we don't need to wait for the promise,\n                    // since the default drivers can be defined\n                    // in a blocking manner\n                    this.defineDriver(driver);\n                }\n            }\n        }\n\n        this._defaultConfig = extend({}, DefaultConfig);\n        this._config = extend({}, this._defaultConfig, options);\n        this._driverSet = null;\n        this._initDriver = null;\n        this._ready = false;\n        this._dbInfo = null;\n\n        this._wrapLibraryMethodsWithReady();\n        this.setDriver(this._config.driver)[\"catch\"](function () {});\n    }\n\n    // Set any config values for localForage; can be called anytime before\n    // the first API call (e.g. `getItem`, `setItem`).\n    // We loop through options so we don't overwrite existing config\n    // values.\n\n\n    LocalForage.prototype.config = function config(options) {\n        // If the options argument is an object, we use it to set values.\n        // Otherwise, we return either a specified config value or all\n        // config values.\n        if ((typeof options === 'undefined' ? 'undefined' : _typeof(options)) === 'object') {\n            // If localforage is ready and fully initialized, we can't set\n            // any new configuration values. Instead, we return an error.\n            if (this._ready) {\n                return new Error(\"Can't call config() after localforage \" + 'has been used.');\n            }\n\n            for (var i in options) {\n                if (i === 'storeName') {\n                    options[i] = options[i].replace(/\\W/g, '_');\n                }\n\n                if (i === 'version' && typeof options[i] !== 'number') {\n                    return new Error('Database version must be a number.');\n                }\n\n                this._config[i] = options[i];\n            }\n\n            // after all config options are set and\n            // the driver option is used, try setting it\n            if ('driver' in options && options.driver) {\n                return this.setDriver(this._config.driver);\n            }\n\n            return true;\n        } else if (typeof options === 'string') {\n            return this._config[options];\n        } else {\n            return this._config;\n        }\n    };\n\n    // Used to define a custom driver, shared across all instances of\n    // localForage.\n\n\n    LocalForage.prototype.defineDriver = function defineDriver(driverObject, callback, errorCallback) {\n        var promise = new Promise$1(function (resolve, reject) {\n            try {\n                var driverName = driverObject._driver;\n                var complianceError = new Error('Custom driver not compliant; see ' + 'https://mozilla.github.io/localForage/#definedriver');\n\n                // A driver name should be defined and not overlap with the\n                // library-defined, default drivers.\n                if (!driverObject._driver) {\n                    reject(complianceError);\n                    return;\n                }\n\n                var driverMethods = LibraryMethods.concat('_initStorage');\n                for (var i = 0, len = driverMethods.length; i < len; i++) {\n                    var driverMethodName = driverMethods[i];\n\n                    // when the property is there,\n                    // it should be a method even when optional\n                    var isRequired = !includes(OptionalDriverMethods, driverMethodName);\n                    if ((isRequired || driverObject[driverMethodName]) && typeof driverObject[driverMethodName] !== 'function') {\n                        reject(complianceError);\n                        return;\n                    }\n                }\n\n                var configureMissingMethods = function configureMissingMethods() {\n                    var methodNotImplementedFactory = function methodNotImplementedFactory(methodName) {\n                        return function () {\n                            var error = new Error('Method ' + methodName + ' is not implemented by the current driver');\n                            var promise = Promise$1.reject(error);\n                            executeCallback(promise, arguments[arguments.length - 1]);\n                            return promise;\n                        };\n                    };\n\n                    for (var _i = 0, _len = OptionalDriverMethods.length; _i < _len; _i++) {\n                        var optionalDriverMethod = OptionalDriverMethods[_i];\n                        if (!driverObject[optionalDriverMethod]) {\n                            driverObject[optionalDriverMethod] = methodNotImplementedFactory(optionalDriverMethod);\n                        }\n                    }\n                };\n\n                configureMissingMethods();\n\n                var setDriverSupport = function setDriverSupport(support) {\n                    if (DefinedDrivers[driverName]) {\n                        console.info('Redefining LocalForage driver: ' + driverName);\n                    }\n                    DefinedDrivers[driverName] = driverObject;\n                    DriverSupport[driverName] = support;\n                    // don't use a then, so that we can define\n                    // drivers that have simple _support methods\n                    // in a blocking manner\n                    resolve();\n                };\n\n                if ('_support' in driverObject) {\n                    if (driverObject._support && typeof driverObject._support === 'function') {\n                        driverObject._support().then(setDriverSupport, reject);\n                    } else {\n                        setDriverSupport(!!driverObject._support);\n                    }\n                } else {\n                    setDriverSupport(true);\n                }\n            } catch (e) {\n                reject(e);\n            }\n        });\n\n        executeTwoCallbacks(promise, callback, errorCallback);\n        return promise;\n    };\n\n    LocalForage.prototype.driver = function driver() {\n        return this._driver || null;\n    };\n\n    LocalForage.prototype.getDriver = function getDriver(driverName, callback, errorCallback) {\n        var getDriverPromise = DefinedDrivers[driverName] ? Promise$1.resolve(DefinedDrivers[driverName]) : Promise$1.reject(new Error('Driver not found.'));\n\n        executeTwoCallbacks(getDriverPromise, callback, errorCallback);\n        return getDriverPromise;\n    };\n\n    LocalForage.prototype.getSerializer = function getSerializer(callback) {\n        var serializerPromise = Promise$1.resolve(localforageSerializer);\n        executeTwoCallbacks(serializerPromise, callback);\n        return serializerPromise;\n    };\n\n    LocalForage.prototype.ready = function ready(callback) {\n        var self = this;\n\n        var promise = self._driverSet.then(function () {\n            if (self._ready === null) {\n                self._ready = self._initDriver();\n            }\n\n            return self._ready;\n        });\n\n        executeTwoCallbacks(promise, callback, callback);\n        return promise;\n    };\n\n    LocalForage.prototype.setDriver = function setDriver(drivers, callback, errorCallback) {\n        var self = this;\n\n        if (!isArray(drivers)) {\n            drivers = [drivers];\n        }\n\n        var supportedDrivers = this._getSupportedDrivers(drivers);\n\n        function setDriverToConfig() {\n            self._config.driver = self.driver();\n        }\n\n        function extendSelfWithDriver(driver) {\n            self._extend(driver);\n            setDriverToConfig();\n\n            self._ready = self._initStorage(self._config);\n            return self._ready;\n        }\n\n        function initDriver(supportedDrivers) {\n            return function () {\n                var currentDriverIndex = 0;\n\n                function driverPromiseLoop() {\n                    while (currentDriverIndex < supportedDrivers.length) {\n                        var driverName = supportedDrivers[currentDriverIndex];\n                        currentDriverIndex++;\n\n                        self._dbInfo = null;\n                        self._ready = null;\n\n                        return self.getDriver(driverName).then(extendSelfWithDriver)[\"catch\"](driverPromiseLoop);\n                    }\n\n                    setDriverToConfig();\n                    var error = new Error('No available storage method found.');\n                    self._driverSet = Promise$1.reject(error);\n                    return self._driverSet;\n                }\n\n                return driverPromiseLoop();\n            };\n        }\n\n        // There might be a driver initialization in progress\n        // so wait for it to finish in order to avoid a possible\n        // race condition to set _dbInfo\n        var oldDriverSetDone = this._driverSet !== null ? this._driverSet[\"catch\"](function () {\n            return Promise$1.resolve();\n        }) : Promise$1.resolve();\n\n        this._driverSet = oldDriverSetDone.then(function () {\n            var driverName = supportedDrivers[0];\n            self._dbInfo = null;\n            self._ready = null;\n\n            return self.getDriver(driverName).then(function (driver) {\n                self._driver = driver._driver;\n                setDriverToConfig();\n                self._wrapLibraryMethodsWithReady();\n                self._initDriver = initDriver(supportedDrivers);\n            });\n        })[\"catch\"](function () {\n            setDriverToConfig();\n            var error = new Error('No available storage method found.');\n            self._driverSet = Promise$1.reject(error);\n            return self._driverSet;\n        });\n\n        executeTwoCallbacks(this._driverSet, callback, errorCallback);\n        return this._driverSet;\n    };\n\n    LocalForage.prototype.supports = function supports(driverName) {\n        return !!DriverSupport[driverName];\n    };\n\n    LocalForage.prototype._extend = function _extend(libraryMethodsAndProperties) {\n        extend(this, libraryMethodsAndProperties);\n    };\n\n    LocalForage.prototype._getSupportedDrivers = function _getSupportedDrivers(drivers) {\n        var supportedDrivers = [];\n        for (var i = 0, len = drivers.length; i < len; i++) {\n            var driverName = drivers[i];\n            if (this.supports(driverName)) {\n                supportedDrivers.push(driverName);\n            }\n        }\n        return supportedDrivers;\n    };\n\n    LocalForage.prototype._wrapLibraryMethodsWithReady = function _wrapLibraryMethodsWithReady() {\n        // Add a stub for each driver API method that delays the call to the\n        // corresponding driver method until localForage is ready. These stubs\n        // will be replaced by the driver methods as soon as the driver is\n        // loaded, so there is no performance impact.\n        for (var i = 0, len = LibraryMethods.length; i < len; i++) {\n            callWhenReady(this, LibraryMethods[i]);\n        }\n    };\n\n    LocalForage.prototype.createInstance = function createInstance(options) {\n        return new LocalForage(options);\n    };\n\n    return LocalForage;\n}();\n\n// The actual localForage object that we expose as a module or via a\n// global. It's extended by pulling in one of our other libraries.\n\n\nvar localforage_js = new LocalForage();\n\nmodule.exports = localforage_js;\n\n},{\"3\":3}]},{},[4])(4)\n});\n","/* eslint-env serviceworker */\n\nimport localForage from 'localforage'\n\nfunction isEnabled () {\n  return localForage.getItem('vuex-lz')\n    .then(data => data.config.webPushNotifications)\n}\n\nfunction getWindowClients () {\n  return clients.matchAll({ includeUncontrolled: true })\n    .then((clientList) => clientList.filter(({ type }) => type === 'window'))\n}\n\nself.addEventListener('push', (event) => {\n  if (event.data) {\n    event.waitUntil(isEnabled().then((isEnabled) => {\n      return isEnabled && getWindowClients().then((list) => {\n        const data = event.data.json()\n\n        if (list.length === 0) return self.registration.showNotification(data.title, data)\n      })\n    }))\n  }\n})\n\nself.addEventListener('notificationclick', (event) => {\n  event.notification.close()\n\n  event.waitUntil(getWindowClients().then((list) => {\n    for (var i = 0; i < list.length; i++) {\n      var client = list[i]\n      if (client.url === '/' && 'focus' in client) { return client.focus() }\n    }\n\n    if (clients.openWindow) return clients.openWindow('/')\n  }))\n})\n"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/@babel/runtime/regenerator/index.js","webpack:///./node_modules/regenerator-runtime/runtime.js","webpack:///./src/lib/localforage_redux.js","webpack:///./src/sw.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","runtime","undefined","Op","hasOwn","$Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","wrap","innerFn","outerFn","self","tryLocsList","protoGenerator","Generator","generator","context","Context","_invoke","state","GenStateSuspendedStart","method","arg","GenStateExecuting","Error","GenStateCompleted","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","record","tryCatch","type","done","GenStateSuspendedYield","makeInvokeMethod","fn","obj","err","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","this","getProto","getPrototypeOf","NativeIteratorPrototype","values","Gp","defineIteratorMethods","forEach","AsyncIterator","previousPromise","callInvokeWithMethodAndArg","Promise","resolve","reject","invoke","result","__await","then","unwrapped","error","TypeError","info","resultName","next","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","iterable","iteratorMethod","isNaN","length","constructor","displayName","isGeneratorFunction","genFun","ctor","mark","setPrototypeOf","__proto__","awrap","async","iter","toString","keys","reverse","pop","skipTempReset","prev","charAt","slice","stop","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","catch","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","Function","request","onerror","event","onsuccess","target","getDb","database","version","window","indexedDB","open","onupgradeneeded","createObjectStore","storageBuilder","db","storage","_storage","_args5","arguments","regenerator_default","a","_context5","getItem","dataRequest","dataRequestPromise","_context","transaction","objectStore","setItem","_context2","put","t0","console","log","_context3","localStorage","concat","JSON","parse","json","_context4","stringify","getWindowClients","clients","matchAll","includeUncontrolled","clientList","filter","_ref","addEventListener","data","waitUntil","localForage","config","webPushNotifications","isEnabled","list","registration","showNotification","title","notification","close","client","url","focus","openWindow"],"mappings":"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","file":"sw-pleroma.js","sourcesContent":[" \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 \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\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.l = 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// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 2);\n","module.exports = require(\"regenerator-runtime\");\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n  \"use strict\";\n\n  var Op = Object.prototype;\n  var hasOwn = Op.hasOwnProperty;\n  var undefined; // More compressible than void 0.\n  var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n  var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n  var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n  var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n  function wrap(innerFn, outerFn, self, tryLocsList) {\n    // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n    var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n    var generator = Object.create(protoGenerator.prototype);\n    var context = new Context(tryLocsList || []);\n\n    // The ._invoke method unifies the implementations of the .next,\n    // .throw, and .return methods.\n    generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n    return generator;\n  }\n  exports.wrap = wrap;\n\n  // Try/catch helper to minimize deoptimizations. Returns a completion\n  // record like context.tryEntries[i].completion. This interface could\n  // have been (and was previously) designed to take a closure to be\n  // invoked without arguments, but in all the cases we care about we\n  // already have an existing method we want to call, so there's no need\n  // to create a new function object. We can even get away with assuming\n  // the method takes exactly one argument, since that happens to be true\n  // in every case, so we don't have to touch the arguments object. The\n  // only additional allocation required is the completion record, which\n  // has a stable shape and so hopefully should be cheap to allocate.\n  function tryCatch(fn, obj, arg) {\n    try {\n      return { type: \"normal\", arg: fn.call(obj, arg) };\n    } catch (err) {\n      return { type: \"throw\", arg: err };\n    }\n  }\n\n  var GenStateSuspendedStart = \"suspendedStart\";\n  var GenStateSuspendedYield = \"suspendedYield\";\n  var GenStateExecuting = \"executing\";\n  var GenStateCompleted = \"completed\";\n\n  // Returning this object from the innerFn has the same effect as\n  // breaking out of the dispatch switch statement.\n  var ContinueSentinel = {};\n\n  // Dummy constructor functions that we use as the .constructor and\n  // .constructor.prototype properties for functions that return Generator\n  // objects. For full spec compliance, you may wish to configure your\n  // minifier not to mangle the names of these two functions.\n  function Generator() {}\n  function GeneratorFunction() {}\n  function GeneratorFunctionPrototype() {}\n\n  // This is a polyfill for %IteratorPrototype% for environments that\n  // don't natively support it.\n  var IteratorPrototype = {};\n  IteratorPrototype[iteratorSymbol] = function () {\n    return this;\n  };\n\n  var getProto = Object.getPrototypeOf;\n  var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n  if (NativeIteratorPrototype &&\n      NativeIteratorPrototype !== Op &&\n      hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n    // This environment has a native %IteratorPrototype%; use it instead\n    // of the polyfill.\n    IteratorPrototype = NativeIteratorPrototype;\n  }\n\n  var Gp = GeneratorFunctionPrototype.prototype =\n    Generator.prototype = Object.create(IteratorPrototype);\n  GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n  GeneratorFunctionPrototype.constructor = GeneratorFunction;\n  GeneratorFunctionPrototype[toStringTagSymbol] =\n    GeneratorFunction.displayName = \"GeneratorFunction\";\n\n  // Helper for defining the .next, .throw, and .return methods of the\n  // Iterator interface in terms of a single ._invoke method.\n  function defineIteratorMethods(prototype) {\n    [\"next\", \"throw\", \"return\"].forEach(function(method) {\n      prototype[method] = function(arg) {\n        return this._invoke(method, arg);\n      };\n    });\n  }\n\n  exports.isGeneratorFunction = function(genFun) {\n    var ctor = typeof genFun === \"function\" && genFun.constructor;\n    return ctor\n      ? ctor === GeneratorFunction ||\n        // For the native GeneratorFunction constructor, the best we can\n        // do is to check its .name property.\n        (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n      : false;\n  };\n\n  exports.mark = function(genFun) {\n    if (Object.setPrototypeOf) {\n      Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n    } else {\n      genFun.__proto__ = GeneratorFunctionPrototype;\n      if (!(toStringTagSymbol in genFun)) {\n        genFun[toStringTagSymbol] = \"GeneratorFunction\";\n      }\n    }\n    genFun.prototype = Object.create(Gp);\n    return genFun;\n  };\n\n  // Within the body of any async function, `await x` is transformed to\n  // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n  // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n  // meant to be awaited.\n  exports.awrap = function(arg) {\n    return { __await: arg };\n  };\n\n  function AsyncIterator(generator) {\n    function invoke(method, arg, resolve, reject) {\n      var record = tryCatch(generator[method], generator, arg);\n      if (record.type === \"throw\") {\n        reject(record.arg);\n      } else {\n        var result = record.arg;\n        var value = result.value;\n        if (value &&\n            typeof value === \"object\" &&\n            hasOwn.call(value, \"__await\")) {\n          return Promise.resolve(value.__await).then(function(value) {\n            invoke(\"next\", value, resolve, reject);\n          }, function(err) {\n            invoke(\"throw\", err, resolve, reject);\n          });\n        }\n\n        return Promise.resolve(value).then(function(unwrapped) {\n          // When a yielded Promise is resolved, its final value becomes\n          // the .value of the Promise<{value,done}> result for the\n          // current iteration.\n          result.value = unwrapped;\n          resolve(result);\n        }, function(error) {\n          // If a rejected Promise was yielded, throw the rejection back\n          // into the async generator function so it can be handled there.\n          return invoke(\"throw\", error, resolve, reject);\n        });\n      }\n    }\n\n    var previousPromise;\n\n    function enqueue(method, arg) {\n      function callInvokeWithMethodAndArg() {\n        return new Promise(function(resolve, reject) {\n          invoke(method, arg, resolve, reject);\n        });\n      }\n\n      return previousPromise =\n        // If enqueue has been called before, then we want to wait until\n        // all previous Promises have been resolved before calling invoke,\n        // so that results are always delivered in the correct order. If\n        // enqueue has not been called before, then it is important to\n        // call invoke immediately, without waiting on a callback to fire,\n        // so that the async generator function has the opportunity to do\n        // any necessary setup in a predictable way. This predictability\n        // is why the Promise constructor synchronously invokes its\n        // executor callback, and why async functions synchronously\n        // execute code before the first await. Since we implement simple\n        // async functions in terms of async generators, it is especially\n        // important to get this right, even though it requires care.\n        previousPromise ? previousPromise.then(\n          callInvokeWithMethodAndArg,\n          // Avoid propagating failures to Promises returned by later\n          // invocations of the iterator.\n          callInvokeWithMethodAndArg\n        ) : callInvokeWithMethodAndArg();\n    }\n\n    // Define the unified helper method that is used to implement .next,\n    // .throw, and .return (see defineIteratorMethods).\n    this._invoke = enqueue;\n  }\n\n  defineIteratorMethods(AsyncIterator.prototype);\n  AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n    return this;\n  };\n  exports.AsyncIterator = AsyncIterator;\n\n  // Note that simple async functions are implemented on top of\n  // AsyncIterator objects; they just return a Promise for the value of\n  // the final result produced by the iterator.\n  exports.async = function(innerFn, outerFn, self, tryLocsList) {\n    var iter = new AsyncIterator(\n      wrap(innerFn, outerFn, self, tryLocsList)\n    );\n\n    return exports.isGeneratorFunction(outerFn)\n      ? iter // If outerFn is a generator, return the full iterator.\n      : iter.next().then(function(result) {\n          return result.done ? result.value : iter.next();\n        });\n  };\n\n  function makeInvokeMethod(innerFn, self, context) {\n    var state = GenStateSuspendedStart;\n\n    return function invoke(method, arg) {\n      if (state === GenStateExecuting) {\n        throw new Error(\"Generator is already running\");\n      }\n\n      if (state === GenStateCompleted) {\n        if (method === \"throw\") {\n          throw arg;\n        }\n\n        // Be forgiving, per 25.3.3.3.3 of the spec:\n        // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n        return doneResult();\n      }\n\n      context.method = method;\n      context.arg = arg;\n\n      while (true) {\n        var delegate = context.delegate;\n        if (delegate) {\n          var delegateResult = maybeInvokeDelegate(delegate, context);\n          if (delegateResult) {\n            if (delegateResult === ContinueSentinel) continue;\n            return delegateResult;\n          }\n        }\n\n        if (context.method === \"next\") {\n          // Setting context._sent for legacy support of Babel's\n          // function.sent implementation.\n          context.sent = context._sent = context.arg;\n\n        } else if (context.method === \"throw\") {\n          if (state === GenStateSuspendedStart) {\n            state = GenStateCompleted;\n            throw context.arg;\n          }\n\n          context.dispatchException(context.arg);\n\n        } else if (context.method === \"return\") {\n          context.abrupt(\"return\", context.arg);\n        }\n\n        state = GenStateExecuting;\n\n        var record = tryCatch(innerFn, self, context);\n        if (record.type === \"normal\") {\n          // If an exception is thrown from innerFn, we leave state ===\n          // GenStateExecuting and loop back for another invocation.\n          state = context.done\n            ? GenStateCompleted\n            : GenStateSuspendedYield;\n\n          if (record.arg === ContinueSentinel) {\n            continue;\n          }\n\n          return {\n            value: record.arg,\n            done: context.done\n          };\n\n        } else if (record.type === \"throw\") {\n          state = GenStateCompleted;\n          // Dispatch the exception by looping back around to the\n          // context.dispatchException(context.arg) call above.\n          context.method = \"throw\";\n          context.arg = record.arg;\n        }\n      }\n    };\n  }\n\n  // Call delegate.iterator[context.method](context.arg) and handle the\n  // result, either by returning a { value, done } result from the\n  // delegate iterator, or by modifying context.method and context.arg,\n  // setting context.delegate to null, and returning the ContinueSentinel.\n  function maybeInvokeDelegate(delegate, context) {\n    var method = delegate.iterator[context.method];\n    if (method === undefined) {\n      // A .throw or .return when the delegate iterator has no .throw\n      // method always terminates the yield* loop.\n      context.delegate = null;\n\n      if (context.method === \"throw\") {\n        // Note: [\"return\"] must be used for ES3 parsing compatibility.\n        if (delegate.iterator[\"return\"]) {\n          // If the delegate iterator has a return method, give it a\n          // chance to clean up.\n          context.method = \"return\";\n          context.arg = undefined;\n          maybeInvokeDelegate(delegate, context);\n\n          if (context.method === \"throw\") {\n            // If maybeInvokeDelegate(context) changed context.method from\n            // \"return\" to \"throw\", let that override the TypeError below.\n            return ContinueSentinel;\n          }\n        }\n\n        context.method = \"throw\";\n        context.arg = new TypeError(\n          \"The iterator does not provide a 'throw' method\");\n      }\n\n      return ContinueSentinel;\n    }\n\n    var record = tryCatch(method, delegate.iterator, context.arg);\n\n    if (record.type === \"throw\") {\n      context.method = \"throw\";\n      context.arg = record.arg;\n      context.delegate = null;\n      return ContinueSentinel;\n    }\n\n    var info = record.arg;\n\n    if (! info) {\n      context.method = \"throw\";\n      context.arg = new TypeError(\"iterator result is not an object\");\n      context.delegate = null;\n      return ContinueSentinel;\n    }\n\n    if (info.done) {\n      // Assign the result of the finished delegate to the temporary\n      // variable specified by delegate.resultName (see delegateYield).\n      context[delegate.resultName] = info.value;\n\n      // Resume execution at the desired location (see delegateYield).\n      context.next = delegate.nextLoc;\n\n      // If context.method was \"throw\" but the delegate handled the\n      // exception, let the outer generator proceed normally. If\n      // context.method was \"next\", forget context.arg since it has been\n      // \"consumed\" by the delegate iterator. If context.method was\n      // \"return\", allow the original .return call to continue in the\n      // outer generator.\n      if (context.method !== \"return\") {\n        context.method = \"next\";\n        context.arg = undefined;\n      }\n\n    } else {\n      // Re-yield the result returned by the delegate method.\n      return info;\n    }\n\n    // The delegate iterator is finished, so forget it and continue with\n    // the outer generator.\n    context.delegate = null;\n    return ContinueSentinel;\n  }\n\n  // Define Generator.prototype.{next,throw,return} in terms of the\n  // unified ._invoke helper method.\n  defineIteratorMethods(Gp);\n\n  Gp[toStringTagSymbol] = \"Generator\";\n\n  // A Generator should always return itself as the iterator object when the\n  // @@iterator function is called on it. Some browsers' implementations of the\n  // iterator prototype chain incorrectly implement this, causing the Generator\n  // object to not be returned from this call. This ensures that doesn't happen.\n  // See https://github.com/facebook/regenerator/issues/274 for more details.\n  Gp[iteratorSymbol] = function() {\n    return this;\n  };\n\n  Gp.toString = function() {\n    return \"[object Generator]\";\n  };\n\n  function pushTryEntry(locs) {\n    var entry = { tryLoc: locs[0] };\n\n    if (1 in locs) {\n      entry.catchLoc = locs[1];\n    }\n\n    if (2 in locs) {\n      entry.finallyLoc = locs[2];\n      entry.afterLoc = locs[3];\n    }\n\n    this.tryEntries.push(entry);\n  }\n\n  function resetTryEntry(entry) {\n    var record = entry.completion || {};\n    record.type = \"normal\";\n    delete record.arg;\n    entry.completion = record;\n  }\n\n  function Context(tryLocsList) {\n    // The root entry object (effectively a try statement without a catch\n    // or a finally block) gives us a place to store values thrown from\n    // locations where there is no enclosing try statement.\n    this.tryEntries = [{ tryLoc: \"root\" }];\n    tryLocsList.forEach(pushTryEntry, this);\n    this.reset(true);\n  }\n\n  exports.keys = function(object) {\n    var keys = [];\n    for (var key in object) {\n      keys.push(key);\n    }\n    keys.reverse();\n\n    // Rather than returning an object with a next method, we keep\n    // things simple and return the next function itself.\n    return function next() {\n      while (keys.length) {\n        var key = keys.pop();\n        if (key in object) {\n          next.value = key;\n          next.done = false;\n          return next;\n        }\n      }\n\n      // To avoid creating an additional object, we just hang the .value\n      // and .done properties off the next function object itself. This\n      // also ensures that the minifier will not anonymize the function.\n      next.done = true;\n      return next;\n    };\n  };\n\n  function values(iterable) {\n    if (iterable) {\n      var iteratorMethod = iterable[iteratorSymbol];\n      if (iteratorMethod) {\n        return iteratorMethod.call(iterable);\n      }\n\n      if (typeof iterable.next === \"function\") {\n        return iterable;\n      }\n\n      if (!isNaN(iterable.length)) {\n        var i = -1, next = function next() {\n          while (++i < iterable.length) {\n            if (hasOwn.call(iterable, i)) {\n              next.value = iterable[i];\n              next.done = false;\n              return next;\n            }\n          }\n\n          next.value = undefined;\n          next.done = true;\n\n          return next;\n        };\n\n        return next.next = next;\n      }\n    }\n\n    // Return an iterator with no values.\n    return { next: doneResult };\n  }\n  exports.values = values;\n\n  function doneResult() {\n    return { value: undefined, done: true };\n  }\n\n  Context.prototype = {\n    constructor: Context,\n\n    reset: function(skipTempReset) {\n      this.prev = 0;\n      this.next = 0;\n      // Resetting context._sent for legacy support of Babel's\n      // function.sent implementation.\n      this.sent = this._sent = undefined;\n      this.done = false;\n      this.delegate = null;\n\n      this.method = \"next\";\n      this.arg = undefined;\n\n      this.tryEntries.forEach(resetTryEntry);\n\n      if (!skipTempReset) {\n        for (var name in this) {\n          // Not sure about the optimal order of these conditions:\n          if (name.charAt(0) === \"t\" &&\n              hasOwn.call(this, name) &&\n              !isNaN(+name.slice(1))) {\n            this[name] = undefined;\n          }\n        }\n      }\n    },\n\n    stop: function() {\n      this.done = true;\n\n      var rootEntry = this.tryEntries[0];\n      var rootRecord = rootEntry.completion;\n      if (rootRecord.type === \"throw\") {\n        throw rootRecord.arg;\n      }\n\n      return this.rval;\n    },\n\n    dispatchException: function(exception) {\n      if (this.done) {\n        throw exception;\n      }\n\n      var context = this;\n      function handle(loc, caught) {\n        record.type = \"throw\";\n        record.arg = exception;\n        context.next = loc;\n\n        if (caught) {\n          // If the dispatched exception was caught by a catch block,\n          // then let that catch block handle the exception normally.\n          context.method = \"next\";\n          context.arg = undefined;\n        }\n\n        return !! caught;\n      }\n\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        var record = entry.completion;\n\n        if (entry.tryLoc === \"root\") {\n          // Exception thrown outside of any try block that could handle\n          // it, so set the completion value of the entire function to\n          // throw the exception.\n          return handle(\"end\");\n        }\n\n        if (entry.tryLoc <= this.prev) {\n          var hasCatch = hasOwn.call(entry, \"catchLoc\");\n          var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n          if (hasCatch && hasFinally) {\n            if (this.prev < entry.catchLoc) {\n              return handle(entry.catchLoc, true);\n            } else if (this.prev < entry.finallyLoc) {\n              return handle(entry.finallyLoc);\n            }\n\n          } else if (hasCatch) {\n            if (this.prev < entry.catchLoc) {\n              return handle(entry.catchLoc, true);\n            }\n\n          } else if (hasFinally) {\n            if (this.prev < entry.finallyLoc) {\n              return handle(entry.finallyLoc);\n            }\n\n          } else {\n            throw new Error(\"try statement without catch or finally\");\n          }\n        }\n      }\n    },\n\n    abrupt: function(type, arg) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.tryLoc <= this.prev &&\n            hasOwn.call(entry, \"finallyLoc\") &&\n            this.prev < entry.finallyLoc) {\n          var finallyEntry = entry;\n          break;\n        }\n      }\n\n      if (finallyEntry &&\n          (type === \"break\" ||\n           type === \"continue\") &&\n          finallyEntry.tryLoc <= arg &&\n          arg <= finallyEntry.finallyLoc) {\n        // Ignore the finally entry if control is not jumping to a\n        // location outside the try/catch block.\n        finallyEntry = null;\n      }\n\n      var record = finallyEntry ? finallyEntry.completion : {};\n      record.type = type;\n      record.arg = arg;\n\n      if (finallyEntry) {\n        this.method = \"next\";\n        this.next = finallyEntry.finallyLoc;\n        return ContinueSentinel;\n      }\n\n      return this.complete(record);\n    },\n\n    complete: function(record, afterLoc) {\n      if (record.type === \"throw\") {\n        throw record.arg;\n      }\n\n      if (record.type === \"break\" ||\n          record.type === \"continue\") {\n        this.next = record.arg;\n      } else if (record.type === \"return\") {\n        this.rval = this.arg = record.arg;\n        this.method = \"return\";\n        this.next = \"end\";\n      } else if (record.type === \"normal\" && afterLoc) {\n        this.next = afterLoc;\n      }\n\n      return ContinueSentinel;\n    },\n\n    finish: function(finallyLoc) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.finallyLoc === finallyLoc) {\n          this.complete(entry.completion, entry.afterLoc);\n          resetTryEntry(entry);\n          return ContinueSentinel;\n        }\n      }\n    },\n\n    \"catch\": function(tryLoc) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.tryLoc === tryLoc) {\n          var record = entry.completion;\n          if (record.type === \"throw\") {\n            var thrown = record.arg;\n            resetTryEntry(entry);\n          }\n          return thrown;\n        }\n      }\n\n      // The context.catch method must only be called with a location\n      // argument that corresponds to a known catch block.\n      throw new Error(\"illegal catch attempt\");\n    },\n\n    delegateYield: function(iterable, resultName, nextLoc) {\n      this.delegate = {\n        iterator: values(iterable),\n        resultName: resultName,\n        nextLoc: nextLoc\n      };\n\n      if (this.method === \"next\") {\n        // Deliberately forget the last sent value so that we don't\n        // accidentally pass it on to the delegate.\n        this.arg = undefined;\n      }\n\n      return ContinueSentinel;\n    }\n  };\n\n  // Regardless of whether this script is executing as a CommonJS module\n  // or not, return the runtime object so that we can declare the variable\n  // regeneratorRuntime in the outer scope, which allows this module to be\n  // injected easily by `bin/regenerator --include-runtime script.js`.\n  return exports;\n\n}(\n  // If this script is executing as a CommonJS module, use module.exports\n  // as the regeneratorRuntime namespace. Otherwise create a new empty\n  // object. Either way, the resulting object will be used to initialize\n  // the regeneratorRuntime variable at the top of this file.\n  typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n  regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n  // This module should not be running in strict mode, so the above\n  // assignment should always work unless something is misconfigured. Just\n  // in case runtime.js accidentally runs in strict mode, we can escape\n  // strict mode using a global Function call. This could conceivably fail\n  // if a Content Security Policy forbids using Function, but in that case\n  // the proper solution is to fix the accidental strict mode problem. If\n  // you've misconfigured your bundler to force strict mode and applied a\n  // CSP to forbid Function, and you're not willing to fix either of those\n  // problems, please detail your unique predicament in a GitHub issue.\n  Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n}\n","const wrap = (request) => {\n  return new Promise((resolve, reject) => {\n    request.onerror = (event) => reject(event)\n    request.onsuccess = (event) => resolve(event.target.result)\n  })\n}\n\nconst getDb = (database, version) => {\n  const request = window.indexedDB.open(database, version)\n  request.onupgradeneeded = (event) => {\n    const db = event.target.result\n    db.createObjectStore('keyvaluepairs')\n  }\n  return wrap(request)\n}\n\nconst storageBuilder = async (database = 'storage_2', version = 1) => {\n  try {\n    let db = await getDb(database, version)\n    const storage = {\n      getItem: async (key) => {\n        const dataRequest =\n          db\n            .transaction(['keyvaluepairs'])\n            .objectStore('keyvaluepairs')\n            .get(key)\n\n        const dataRequestPromise = wrap(dataRequest)\n\n        return dataRequestPromise\n      },\n      setItem: async (key, value) => {\n        const dataRequest =\n          db\n            .transaction(['keyvaluepairs'], 'readwrite')\n            .objectStore('keyvaluepairs')\n            .put(value, key)\n\n        return wrap(dataRequest)\n      }\n    }\n\n    return storage\n  } catch (e) {\n    console.log(\"Can't get indexeddb going, let's use localstorage\")\n\n    const storage = {\n      getItem: async (key) => {\n        const result = window.localStorage.getItem(`${database}/${key}`)\n        try {\n          return JSON.parse(result)\n        } catch (e) {\n          return undefined\n        }\n      },\n      setItem: async (key, value) => {\n        const json = JSON.stringify(value)\n        return window.localStorage.setItem(`${database}/${key}`, json)\n      }\n    }\n    return storage\n  }\n}\n\nexport default storageBuilder\n","/* eslint-env serviceworker */\n\nimport localForage from './lib/localforage_redux'\n\nasync function isEnabled () {\n  const storage = await localForage()\n  return storage.getItem('vuex-lz')\n    .then(data => data.config.webPushNotifications)\n}\n\nfunction getWindowClients () {\n  return clients.matchAll({ includeUncontrolled: true })\n    .then((clientList) => clientList.filter(({ type }) => type === 'window'))\n}\n\nself.addEventListener('push', (event) => {\n  if (event.data) {\n    event.waitUntil(isEnabled().then((isEnabled) => {\n      return isEnabled && getWindowClients().then((list) => {\n        const data = event.data.json()\n\n        if (list.length === 0) return self.registration.showNotification(data.title, data)\n      })\n    }))\n  }\n})\n\nself.addEventListener('notificationclick', (event) => {\n  event.notification.close()\n\n  event.waitUntil(getWindowClients().then((list) => {\n    for (var i = 0; i < list.length; i++) {\n      var client = list[i]\n      if (client.url === '/' && 'focus' in client) { return client.focus() }\n    }\n\n    if (clients.openWindow) return clients.openWindow('/')\n  }))\n})\n"],"sourceRoot":""}
\ No newline at end of file