{"version":3,"sources":["webpack:///./src/app/components/ui/dateutils.js","webpack:///./node_modules/dexie/dist/dexie.mjs","webpack:///./src/app/db.js","webpack:///./src/app/components/HomePageMeta.js","webpack:///./src/app/templates/Articles/HomePageHighlight.js","webpack:///./src/app/pages/LandingPages/HomePage.js","webpack:///./src/app/components/FollowConcept.js","webpack:///./src/app/components/AuthorBio.js","webpack:///./node_modules/semantic-ui-react/dist/es/lib/eventStack/index.js","webpack:///./src/app/static/icons/no-search-results-v2.svg","webpack:///./node_modules/semantic-ui-react/dist/es/elements/Loader/Loader.js","webpack:///./src/app/pages/PushNotificationManagementPage.js","webpack:///./src/app/pages/AuthorsSectionPage.js","webpack:///./src/app/components/AdFormats.js","webpack:///./src/app/images/brands/icons/notifications-ico.svg","webpack:///./node_modules/semantic-ui-react/dist/es/modules/Sticky/Sticky.js","webpack:///./src/app/components/SidebarArticleCard.js","webpack:///./src/app/components/MostReadArticles.js","webpack:///./src/app/components/NotificationsBell.js","webpack:///./src/app/components/Sidebar.js","webpack:///./node_modules/react-spinners/esm/helpers/unitConverter.js","webpack:///./node_modules/react-spinners/esm/helpers/animation.js","webpack:///./node_modules/react-spinners/esm/PulseLoader.js","webpack:///./src/app/pages/SearchPage.js","webpack:///./src/app/static/general/glam-notifications-page.jpg","webpack:///./src/app/pages/BookmarksPage.js","webpack:///./src/app/components/ui/articleutils.js","webpack:///./src/app/components/WingBanners.js","webpack:///./src/app/components/ArticleCard.js","webpack:///./src/app/components/StyledLink.js"],"names":["formatAgo","date","full","published","Date","seconds","Math","floor","interval","toLocaleDateString","year","month","day","__assign","Object","assign","t","s","i","n","arguments","length","p","prototype","hasOwnProperty","call","apply","this","__spreadArray","to","from","pack","ar","l","Array","slice","concat","_global","globalThis","self","window","global","keys","isArray","extend","obj","extension","forEach","key","Promise","getProto","getPrototypeOf","_hasOwn","hasOwn","prop","props","proto","Reflect","ownKeys","setProp","defineProperty","functionOrGetSet","options","get","set","configurable","value","writable","derive","Child","Parent","create","bind","getOwnPropertyDescriptor","getPropertyDescriptor","_slice","args","start","end","override","origFunc","overridedFactory","assert","b","Error","asap$1","fn","setImmediate","setTimeout","arrayToObject","array","extractor","reduce","result","item","nameAndValue","getByKeyPath","keyPath","rv","val","push","period","indexOf","innerObj","substr","undefined","setByKeyPath","isFrozen","currentKeyPath","remainingKeyPath","isNaN","parseInt","splice","shallowClone","m","flatten","a","intrinsicTypeNames","split","map","num","filter","intrinsicTypes","x","circularRefs","deepClone","any","WeakMap","innerDeepClone","constructor","toString","toStringTag","o","iteratorSymbol","Symbol","iterator","getIteratorOf","NO_CHAR_ARRAY","getArrayOf","arrayLike","it","next","done","isAsyncFunction","debug","location","test","href","setDebug","libraryFilter","NEEDS_THROW_FOR_STACK","stack","getErrorWithStack","e","prettyStack","exception","numIgnoredFrames","name","message","frame","join","idbDomErrorNames","errorList","defaultTexts","VersionChanged","DatabaseClosed","Abort","TransactionInactive","MissingAPI","DexieError","msg","_e","getMultiErrorMessage","failures","v","ModifyError","successCount","failedKeys","BulkError","pos","failuresByPos","_stack","errnames","BaseException","exceptions","fullName","msgOrInner","inner","Syntax","SyntaxError","Type","TypeError","Range","RangeError","exceptionMap","fullNameExceptions","nop","mirror","pureFunctionChain","f1","f2","callBoth","on1","on2","hookCreatingChain","res","onsuccess","onerror","res2","hookDeletingChain","hookUpdatingChain","modifications","reverseStoppableEventChain","promisableChain","then","thiz","INTERNAL","_a$1","globalP","resolve","crypto","subtle","nativeP","digest","Uint8Array","resolvedNativePromise","nativePromiseProto","resolvedGlobalPromise","nativePromiseThen","NativePromise","patchGlobalPromise","stack_being_generated","schedulePhysicalTick","physicalTick","MutationObserver","hiddenDiv","document","createElement","observe","attributes","setAttribute","asap","callback","microtickQueue","needsNewPhysicalTick","isOutsideMicroTick","unhandledErrors","rejectingErrors","currentFulfiller","rejectionMapper","globalPSD","id","ref","unhandleds","onunhandled","globalError","pgp","env","finalize","uh","PSD","numScheduledCalls","tickFinalizers","DexiePromise","_listeners","onuncatched","_lib","psd","_PSD","_stackHolder","_prev","_numPrev","_state","_value","handleRejection","executePromiseTask","thenProp","microTaskId","totalEchoes","onFulfilled","onRejected","_this","possibleAwait","cleanup","decrementExpectedAwaits","reject","propagateToListener","Listener","nativeAwaitCompatibleWrap","linkToPreviousPromise","zone","promise","shouldExecuteTick","beginMicroTickScope","_then","propagateAllListeners","endMicroTickScope","ex","reason","_promise","tryCatch","origProp","some","addPossiblyUnhandledError","listeners","len","finalizePhysicalTick","listener","cb","callListener","ret","markErrorAsHandled","prev","numPrev","wasRootExec","callbacks","unhandledErrs","finalizers","PromiseReject","wrap","errorCatcher","outerScope","switchToZone","catch","type","handler","err","finally","onFinally","getStack","stacks","limit","errorName","failure","timeout","ms","Infinity","handle","Timeout","clearTimeout","snapShot","all","values","onPossibleParallellAsync","remaining","race","newPSD","newScope","usePSD","scheduler","follow","zoneProps","finalizer","run_at_end_of_this_or_next_physical_tick","allSettled","possiblePromises","results","status","AggregateError","task","awaits","echoes","taskCounter","zoneStack","zoneEchoes","zone_id_counter","a1","a2","parent","globalEnv","PromiseProp","nthen","getPatchedPromiseThen","gthen","incrementExpectedAwaits","possiblePromise","rejection","zoneEnterEcho","targetZone","zoneLeaveEcho","pop","bEnteringZone","currentZone","enqueueNativeMicroTask","GlobalPromise_1","targetEnv","GlobalPromise","a3","job","outerZone","origThen","onResolved","event","eventData","createEvent","initEvent","CustomEvent","detail","dispatchEvent","PromiseRejectionEvent","onunhandledrejection","_","defaultPrevented","console","warn","maxString","String","fromCharCode","INVALID_KEY_ARGUMENT","connections","isIEOrEdge","navigator","userAgent","hasIEDeleteObjectStoreBug","hangsOnDeleteLargeKeyRange","dexieStackFrameFilter","combine","filter1","filter2","AnyRange","lower","lowerOpen","upper","upperOpen","workaroundForUndefinedPrimKey","Table","_trans","mode","writeLocked","trans","_tx","tableName","checkTableInTransaction","schema","NotFound","idbtrans","db","transless","tempTransaction","storeNames","idbdb","openComplete","letThrough","_vip","_createTransaction","_dbSchema","PR1398_maxLoop","InvalidState","isOpen","_close","open","_completion","dbOpenError","isBeingOpened","_options","autoOpen","dbReadyPromise","keyOrCrit","where","first","core","hook","reading","fire","indexOrCrit","WhereClause","keyPaths","equals","compoundIndex","indexes","primKey","ix","compound","every","_maxKey","kp","JSON","stringify","idxByName","idb","_deps","indexedDB","cmp","_a","prevIndex","prevFilterFn","index","multi","idx","filterFunction","toCollection","and","count","thenShortcut","offset","numRows","each","toArray","Collection","orderBy","reverse","mapToClass","mappedClass","readHook","unsubscribe","defineClass","content","add","auto","objToAdd","mutate","numFailures","lastResult","update","keyOrObject","modify","InvalidArgument","put","delete","clear","range","bulkGet","getMany","bulkAdd","objects","keysOrOptions","wantResults","allKeys","numObjects","objectsToAdd","bulkPut","objectsToPut","bulkDelete","numKeys","Events","ctx","evs","eventName","subscriber","subscribe","addEventType","chainFunction","defaultFunction","addConfiguredEvents","context","subscribers","cfg","makeClassConstructor","isPlainKeyRange","ignoreLimitFilter","algorithm","or","justLimit","replayFilter","addFilter","addReplayFilter","factory","isLimitFilter","curr","getIndexOrStore","coreSchema","isPrimKey","primaryKey","getIndexByKeyPath","Schema","openCursor","coreTable","keysOnly","dir","unique","query","iter","coreTrans","set_1","union","cursor","advance","stop","fail","_iterate","iterate","valueMapper","cursorPromise","wrappedFn","c","continue","advancer","ta","tb","NaN","al","bl","compareUint8Arrays","getUint8Array","compareArrays","ArrayBuffer","isView","tsTag","buffer","byteOffset","byteLength","_read","_ctx","error","table","_write","_addAlgorithm","clone","raw","min","sortBy","parts","lastPart","lastIndex","getval","order","sorter","aVal","bVal","sort","valueMapper_1","a_1","offsetLeft","rowsLeft","until","bIncludeStopEntry","last","isMatch","indexName","_ondirectionchange","desc","eachKey","eachUniqueKey","eachPrimaryKey","primaryKeys","uniqueKeys","firstKey","lastKey","distinct","strKey","found","changes","modifyer","anythingModified","outbound","extractKey","modifyChunkSize","totalFailures","applyMutateResult","expectedCount","_i","nextChunk","cache","addValues","putValues","putKeys","deleteKeys","origValue","ctx_1","criteria","deleteCallback","changeSpec","coreRange","simpleCompare","simpleCompareReverse","collectionOrWhereClause","T","collection","emptyCollection","whereClause","rangeEqual","nextCasing","lowerKey","upperNeedle","lowerNeedle","llp","lwrKeyChar","addIgnoreCaseAlgorithm","match","needles","suffix","compare","upperNeedles","lowerNeedles","direction","nextKeySuffix","needlesLen","initDirection","toUpperCase","toLowerCase","upperFactory","lowerFactory","needleBounds","needle","nb","createRange","firstPossibleNeedle","lowestPossibleCasing","casing","enumerable","between","includeLower","includeUpper","_cmp","above","aboveOrEqual","below","belowOrEqual","startsWith","str","startsWithIgnoreCase","equalsIgnoreCase","anyOfIgnoreCase","startsWithAnyOfIgnoreCase","anyOf","_ascending","_descending","notEqual","inAnyRange","includeLowers","includeUppers","noneOf","ranges","ascending","descending","_min","max","_max","sortDirection","rangeSorter","newRange","rangePos","keyIsBeyondCurrentEntry","keyIsBeforeCurrentEntry","checkKey","keyWithinCurrentRange","startsWithAnyOf","eventRejectHandler","preventDefault","target","stopPropagation","globalEvents","Transaction","_lock","_reculock","lockOwnerFor","_unlock","_blockedFuncs","_locked","fnAndPSD","shift","OpenFailed","active","transaction","durability","chromeTransactionDurability","ev","_reject","onabort","on","oncomplete","_resolve","storagemutated","bWriteLock","ReadOnly","_root","waitFor","promiseLike","root","_waitingFor","_waitingQueue","store","objectStore","spin","_spinCount","currentWaitPromise","abort","memoizedTables","_memoizedTables","tableSchema","transactionBoundTable","createIndexSpec","src","nameFromKeyPath","createTableSchema","getMaxKey","IdbKeyRange","only","getKeyExtractor","getSinglePathKeyExtractor","arrayify","_id_counter","getKeyPathAlias","createDBCore","tmpTrans","makeIDBKeyRange","upperBound","lowerBound","bound","tables","objectStoreNames","autoIncrement","indexByKeyPath","isPrimaryKey","indexNames","multiEntry","hasGetAll","extractSchema","isAddOrPut","req","reqs","errorHandler","args1","args2","keyCount","callbackCount","successHandler","_pos","request","nonInfinitLimit","source","idbKeyRange","getAll","getAllKeys","count_1","req_1","openKeyCursor","result_1","___id","_cursorContinue","_cursorContinuePrimaryKey","continuePrimaryKey","_cursorAdvance","doThrowCursorIsStopped","gotOne","iterationPromise","resolveIteration","rejectIteration","guardedCallback","createDbCoreTable","tableMap","MIN_KEY","MAX_KEY","createMiddlewareStacks","middlewares","IDBKeyRange","dbcore","stackImpl","down","createMiddlewareStack","generateMiddlewareStacks","_novip","_middlewares","tbl","setApiOnPlace","objs","tableNames","dbschema","propDesc","removeTablesApi","lowerVersionFirst","_cfg","version","runUpgraders","oldVersion","idbUpgradeTrans","globalSchema","_storeNames","rejectTransaction","createTable","populate","queue","versions","_versions","buildGlobalSchema","anyContentUpgraderHasRun","runQueue","oldSchema","newSchema","adjustToExistingIndexNames","diff","getSchemaDiff","tuple","change","recreate","Upgrade","store_1","addIndex","deleteIndex","del","idxName","contentUpgrade","upgradeSchema_1","returnValue_1","contentUpgradeIsAsync_1","promiseFollowed","decrementor","storeName","deleteObjectStore","deleteRemovedTables","contains","updateTablesAndIndexes","oldDef","newDef","def","oldIndexes","newIndexes","oldIdx","newIdx","createObjectStore","createIndex","j","idbindex","_hasGetAll","dexieName","indexSpec","WorkerGlobalScope","Version","_parseStoresSpec","stores","outSchema","indexNum","trim","replace","storesSource","storesSpec","_allTables","upgrade","upgradeFunction","getDbNamesTable","dbNamesDB","Dexie$1","addons","dbnames","hasDatabasesNative","databases","_onDatabaseDeleted","vip","idbReady","intervalId","userAgentData","tryIdb","setInterval","clearInterval","dexieOpen","state","openCanceller","throwIfCancelled","resolveDbReady","dbReadyResolve","upgradeTransaction","wasCreated","dbName","autoSchema","round","verno","onblocked","_fireOnBlocked","onupgradeneeded","allowEmptyDB","close","delreq","deleteDatabase","NoSuchDatabase","oldVer","pow","readGlobalSchema","ch","verifyInstalledSchema","onversionchange","vcFired","onclose","_onDatabaseCreated","onReadyBeingFired","ready","fireRemainders","remainders_1","awaitIterator","callNext","onSuccess","step","onError","throw","getNext","extractTransactionArgs","_tableArgs_","scopeFunc","enterTransactionScope","parentTransaction","returnValue","scopeFuncIsAsync","PrematureCommit","pad","virtualIndexMiddleware","level","indexLookup","allVirtualIndexes","addVirtualIndexes","keyTail","lowLevelIndex","keyPathAlias","indexList","keyLength","isVirtual","virtualIndex","translateRequest","createVirtualCursor","getObjectDiff","prfx","ap","bp","apTypeName","hooksMiddleware","downCore","downTable","dxTrans","deleting","creating","updating","addPutOrDelete","deleteNextChunk","deleteRange","getEffectiveKeys","effectiveKeys","getExistingValues","existingValues","contexts","existingValue","generatedPrimaryKey","objectDiff","additionalChanges_1","requestedValue_1","getFromTransactionCache","cacheExistingValuesMiddleware","cachedResult","isEmptyRange","node","RangeSet","fromOrTree","d","addRange","left","right","r","rebalance","rightWasCutOff","mergeRanges","newSet","_addRangeSet","getRangeSetIterator","keyProvided","up","_b","rootClone","oldRootRight","computeDepth","rangeSet","addKey","addKeys","observabilityMiddleware","FULL_RANGE","tableClone","mutatedParts","getRangeSet","part","pkRangeSet","delsRangeSet","newObjs","oldCache","oldObjs","addKeyOrKeys","oldKey","newKey","trackAffectedIndexes","getRange","_c","_d","readSubscribers","method","subscr","pkRangeSet_1","delsRangeSet_1","queriedIndex","queriedRanges","keysPromise_1","resultingKeys","pKeys","cursor_1","wantValues_1","pkey","domDeps","Dexie","deps","dependencies","cancelOpen","bSticky","db_1","keyRangeGenerator","keyRange","whereCtx","readingHook","createCollectionConstructor","createTableConstructor","complete","wasActive","createTransactionConstructor","versionNumber","createVersionConstructor","orCollection","_IDBKeyRange","createWhereClauseConstructor","newVersion","use","addon","versionInstance","_whenReady","unuse","mw","hasArguments","doDelete","backendDB","hasBeenClosed","hasFailed","dynamicallyOpened","_transaction","idbMode","onlyIfCompatible","SubTransaction","enterTransaction","InvalidTable","symbolObservable","observable","Observable","_subscribe","extendObservabilitySet","mozIndexedDB","webkitIndexedDB","msIndexedDB","webkitIDBKeyRange","propagateLocally","updateParts","wasMe","propagatingLocally","databaseName","exists","getDatabaseNames","infos","info","ignoreTransaction","async","generatorFn","spawn","currentTransaction","promiseOrFunction","optionalTimeout","liveQuery","querier","observer","closed","accumMuts","currentObs","subscription","mutationListener","querying","startedListening","shouldNotify","rangeSet1","rangeSet2","i1","nextResult1","i2","nextResult2","rangesOverlap","doQuery","exec","execute","delByKeyPath","minKey","semVer","maxKey","addEventListener","updatedParts","event_1","initCustomEvent","BroadcastChannel","bc_1","unref","changedParts","postMessage","onmessage","data","localStorage","setItem","trig","random","matchAll","includeUncontrolled","client","parse","newValue","swContainer","serviceWorker","domError","bm","messages","HomePageMeta","__jsx","Helmet","process","url","logo","description","sameAs","headline","potentialAction","Default","_ref","articles","noImage","section","isConnected","moreButton","hasMounted","useHasMounted","React","Fragment","article","contentKey","Desktop","Ad","_extends","path","targeting","leaderboard","className","FORMATS","leaderboard2","ArticleCard","MobileElse","slotId","collapseEmptyDiv","Mobile","MagazineCover","Number","isInteger","mpu","adNotice","HomePage","_Component","_inherits","_super","_createSuper","_classCallCheck","isEmpty","is600","_createClass","WingBanners","useSmall","onSlotRenderEndedLeft","onSlotRenderEndedRight","title","property","itemProp","setStickyRef","Articles","component","HomePageTemplate","pageSize","NoImage","withMore","SiteSidebar","sticky","Component","connect","DefaultTemplate","componentText","subscribeConcept","onClick","FollowConcept","_ref2","topic","followText","unFollowText","Template","template","_useState","useState","isSubscribed","setIsSubscribed","_useState2","helpPopupVisible","setHelpPopupVisible","_useState3","setSubscription","_useState4","registration","setRegistration","isSubscribedToConcept","uuid","log","qs","titleKey","endpoint","axios","post","headers","subscribed","useEffect","getRegistration","reg","pushManager","getSubscription","sub","_setSubscribed","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_context","sent","setSubscribed","canPush","Popup","visible","popupLogo","alt","color","display","justifycontent","Link","userVisibleOnly","applicationServerKey","urlB64ToUint8Array","AuthorBio","ImageOrNoImage","shape","width","image","imageUrl","slug","module","exports","Loader","children","disabled","indeterminate","inline","inverted","size","classes","rest","ElementType","isNil","handledProps","propTypes","NotifiedArticles","uuids","setArticles","fetchArticleAPI","fetchArticles","StyledLink","keyProp","getCanonical","gap","gridTemplateColumns","author","getImage","getImageSize","TopicItem","_ref3","toggleSubscribed","htmlFor","position","onChange","permissions","checked","PrivatePushNotificationsManagementPage","topicsDict","setTopicsDict","Map","pushedArticles","setPushedArticles","_useState5","_useState6","_useState7","generalTopic","setCookie","toISOString","days","toggleSliders","dict","previousTopic","currentTopic","firstType","handleUnfollowAll","_ref4","_callee3","topics","newSubscribed","_context3","_ref5","_callee2","_context2","_x3","abrupt","_x","_x2","NotificationImg","topicType","dispatch","bindActionCreators","isBrowser","AuthorsSectionPage","_React$Component","authors","hasFetched","fetchAuthors","setState","titleTemplate","getSectionLabel","keywords","element","Sidebar","DesktopTablet","SectionMeta","defaultProps","withRouter","desktop","tablet","mobile","leaderboardsmall","mpu4","wingbanner","interstitial","halfpage","Sticky","_len","_key","stickyRef","triggerRef","addListeners","scrollContext","scrollContextNode","current","eventStack","handleUpdate","removeListeners","unsub","pushing","ticking","assignRects","didReachStartingPoint","stickToContextTop","didTouchScreenBottom","stickToScreenBottom","stickToContextBottom","isOversized","contextRect","top","bottom","innerHeight","didTouchScreenTop","didReachContextBottom","stickToScreenTop","frameId","requestAnimationFrame","contextNode","body","triggerRect","getBoundingClientRect","stickyRect","height","bottomOffset","stick","unstick","_proto","componentDidMount","getDerivedStateFromProps","componentDidUpdate","prevProps","prevState","componentWillUnmount","cancelAnimationFrame","computeStyle","styleElement","_this$state","render","_this$props","_this$state2","getUnhandledProps","getElementType","containerClasses","elementClasses","triggerStyles","style","SidebarArticleCard","getCanonicalUri","getImageObject","getSectionId","getGrandSectionId","sponsoredIndicator","MostReadArticles","page0Limit","fetchMostReadArticles","notFound","noDiv","fetchMoreArticles","mostReadArticles","NotificationsBell","UnreadCount","setUnreadCount","NotificationsLastViewed","getCookie","timestamp","mr","bellIcon","_defineProperty","_assertThisInitialized","handleSubmit","handleChange","newState","updateForm","email","validateEmail","validateName","firstName","lastName","subscribeNewsletter","showForm","hasSubmitted","isSubmitting","submitting","showThankYou","rel","LinkedIn","Facebook","Instagram","Twitter","fill","Youtube","TikTok","Pinterest","action","placeholder","Search","onSubmit","required","Segment","Dimmer","reinitialize","cssUnit","cm","mm","in","px","pt","pc","em","rem","vw","vh","vmin","vmax","cssValue","lengthWithunit","unit","valueString","includes","parseFloat","parseLengthAndUnit","__rest","getOwnPropertySymbols","propertyIsEnumerable","pulse","loaderName","frames","animationName","styleEl","head","appendChild","styleSheet","sheet","keyFrames","insertRule","createAnimation","loading","speedMultiplier","cssOverride","_f","_g","margin","additionalprops","wrapper","backgroundColor","borderRadius","animation","animationFillMode","SearchPage","isHidden","page","handleViewMore","searchArticles","lastFetch","now","params","q","search","ignoreQueryPrefix","initialArticles","alreadyFetchedArticles","searchArticlesMore","hasError","NoResults","IonArticle","itemType","hasMore","PulseLoader","isLoadingMore","itemprop","pathname","BookmarkedArticles","sectionPageView","bookmarkedArticles","setBookmarkedArticles","entries","entry","BookmarkImg","urlify","Urlify","addEToUmlauts","szToSs","spaces","nonPrintable","toLower","ImageSizes","hero","featured","primary","slider","normal","images","videos","thumbnailURL","getTeaser","teaserHeadline","GqGlamDesktop","deviceWidth","defaultWidth","onSlotRenderEnded","sectionLabel","lazy","aria-label"],"mappings":"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","file":"static/js/pages-SearchPage.1b9ddced.chunk.js","sourcesContent":["\nexport function formatDate (date, short) {\n return new Date(date).toLocaleDateString('en-US', {\n year: 'numeric', month: short ? 'short' : 'long', day: 'numeric'\n })\n}\n\nexport function formatAgo (date, full) {\n const published = new Date(date)\n const seconds = Math.floor((new Date() - published) / 1000)\n let interval = Math.floor(seconds / 43200)\n if (interval > 1) {\n return published.toLocaleDateString('en-US', {\n year: 'numeric', month: 'short', day: 'numeric'\n })\n }\n interval = Math.floor(seconds / 3600)\n if (interval >= 1) {\n return interval + 'h' + (full ? ' ago' : '')\n }\n interval = Math.floor(seconds / 60)\n if (interval > 1) {\n return interval + 'm' + (full ? ' ago' : '')\n }\n return Math.floor(seconds) + 's' + (full ? ' ago' : '')\n}\n","/*\n * Dexie.js - a minimalistic wrapper for IndexedDB\n * ===============================================\n *\n * By David Fahlander, david.fahlander@gmail.com\n *\n * Version 3.2.3, Mon Jan 23 2023\n *\n * https://dexie.org\n *\n * Apache License Version 2.0, January 2004, http://www.apache.org/licenses/\n */\n \n/*! *****************************************************************************\nCopyright (c) Microsoft Corporation.\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\nvar __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nfunction __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nvar _global = typeof globalThis !== 'undefined' ? globalThis :\n typeof self !== 'undefined' ? self :\n typeof window !== 'undefined' ? window :\n global;\n\nvar keys = Object.keys;\nvar isArray = Array.isArray;\nif (typeof Promise !== 'undefined' && !_global.Promise) {\n _global.Promise = Promise;\n}\nfunction extend(obj, extension) {\n if (typeof extension !== 'object')\n return obj;\n keys(extension).forEach(function (key) {\n obj[key] = extension[key];\n });\n return obj;\n}\nvar getProto = Object.getPrototypeOf;\nvar _hasOwn = {}.hasOwnProperty;\nfunction hasOwn(obj, prop) {\n return _hasOwn.call(obj, prop);\n}\nfunction props(proto, extension) {\n if (typeof extension === 'function')\n extension = extension(getProto(proto));\n (typeof Reflect === \"undefined\" ? keys : Reflect.ownKeys)(extension).forEach(function (key) {\n setProp(proto, key, extension[key]);\n });\n}\nvar defineProperty = Object.defineProperty;\nfunction setProp(obj, prop, functionOrGetSet, options) {\n defineProperty(obj, prop, extend(functionOrGetSet && hasOwn(functionOrGetSet, \"get\") && typeof functionOrGetSet.get === 'function' ?\n { get: functionOrGetSet.get, set: functionOrGetSet.set, configurable: true } :\n { value: functionOrGetSet, configurable: true, writable: true }, options));\n}\nfunction derive(Child) {\n return {\n from: function (Parent) {\n Child.prototype = Object.create(Parent.prototype);\n setProp(Child.prototype, \"constructor\", Child);\n return {\n extend: props.bind(null, Child.prototype)\n };\n }\n };\n}\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nfunction getPropertyDescriptor(obj, prop) {\n var pd = getOwnPropertyDescriptor(obj, prop);\n var proto;\n return pd || (proto = getProto(obj)) && getPropertyDescriptor(proto, prop);\n}\nvar _slice = [].slice;\nfunction slice(args, start, end) {\n return _slice.call(args, start, end);\n}\nfunction override(origFunc, overridedFactory) {\n return overridedFactory(origFunc);\n}\nfunction assert(b) {\n if (!b)\n throw new Error(\"Assertion Failed\");\n}\nfunction asap$1(fn) {\n if (_global.setImmediate)\n setImmediate(fn);\n else\n setTimeout(fn, 0);\n}\nfunction arrayToObject(array, extractor) {\n return array.reduce(function (result, item, i) {\n var nameAndValue = extractor(item, i);\n if (nameAndValue)\n result[nameAndValue[0]] = nameAndValue[1];\n return result;\n }, {});\n}\nfunction tryCatch(fn, onerror, args) {\n try {\n fn.apply(null, args);\n }\n catch (ex) {\n onerror && onerror(ex);\n }\n}\nfunction getByKeyPath(obj, keyPath) {\n if (hasOwn(obj, keyPath))\n return obj[keyPath];\n if (!keyPath)\n return obj;\n if (typeof keyPath !== 'string') {\n var rv = [];\n for (var i = 0, l = keyPath.length; i < l; ++i) {\n var val = getByKeyPath(obj, keyPath[i]);\n rv.push(val);\n }\n return rv;\n }\n var period = keyPath.indexOf('.');\n if (period !== -1) {\n var innerObj = obj[keyPath.substr(0, period)];\n return innerObj === undefined ? undefined : getByKeyPath(innerObj, keyPath.substr(period + 1));\n }\n return undefined;\n}\nfunction setByKeyPath(obj, keyPath, value) {\n if (!obj || keyPath === undefined)\n return;\n if ('isFrozen' in Object && Object.isFrozen(obj))\n return;\n if (typeof keyPath !== 'string' && 'length' in keyPath) {\n assert(typeof value !== 'string' && 'length' in value);\n for (var i = 0, l = keyPath.length; i < l; ++i) {\n setByKeyPath(obj, keyPath[i], value[i]);\n }\n }\n else {\n var period = keyPath.indexOf('.');\n if (period !== -1) {\n var currentKeyPath = keyPath.substr(0, period);\n var remainingKeyPath = keyPath.substr(period + 1);\n if (remainingKeyPath === \"\")\n if (value === undefined) {\n if (isArray(obj) && !isNaN(parseInt(currentKeyPath)))\n obj.splice(currentKeyPath, 1);\n else\n delete obj[currentKeyPath];\n }\n else\n obj[currentKeyPath] = value;\n else {\n var innerObj = obj[currentKeyPath];\n if (!innerObj || !hasOwn(obj, currentKeyPath))\n innerObj = (obj[currentKeyPath] = {});\n setByKeyPath(innerObj, remainingKeyPath, value);\n }\n }\n else {\n if (value === undefined) {\n if (isArray(obj) && !isNaN(parseInt(keyPath)))\n obj.splice(keyPath, 1);\n else\n delete obj[keyPath];\n }\n else\n obj[keyPath] = value;\n }\n }\n}\nfunction delByKeyPath(obj, keyPath) {\n if (typeof keyPath === 'string')\n setByKeyPath(obj, keyPath, undefined);\n else if ('length' in keyPath)\n [].map.call(keyPath, function (kp) {\n setByKeyPath(obj, kp, undefined);\n });\n}\nfunction shallowClone(obj) {\n var rv = {};\n for (var m in obj) {\n if (hasOwn(obj, m))\n rv[m] = obj[m];\n }\n return rv;\n}\nvar concat = [].concat;\nfunction flatten(a) {\n return concat.apply([], a);\n}\nvar intrinsicTypeNames = \"Boolean,String,Date,RegExp,Blob,File,FileList,FileSystemFileHandle,ArrayBuffer,DataView,Uint8ClampedArray,ImageBitmap,ImageData,Map,Set,CryptoKey\"\n .split(',').concat(flatten([8, 16, 32, 64].map(function (num) { return [\"Int\", \"Uint\", \"Float\"].map(function (t) { return t + num + \"Array\"; }); }))).filter(function (t) { return _global[t]; });\nvar intrinsicTypes = intrinsicTypeNames.map(function (t) { return _global[t]; });\narrayToObject(intrinsicTypeNames, function (x) { return [x, true]; });\nvar circularRefs = null;\nfunction deepClone(any) {\n circularRefs = typeof WeakMap !== 'undefined' && new WeakMap();\n var rv = innerDeepClone(any);\n circularRefs = null;\n return rv;\n}\nfunction innerDeepClone(any) {\n if (!any || typeof any !== 'object')\n return any;\n var rv = circularRefs && circularRefs.get(any);\n if (rv)\n return rv;\n if (isArray(any)) {\n rv = [];\n circularRefs && circularRefs.set(any, rv);\n for (var i = 0, l = any.length; i < l; ++i) {\n rv.push(innerDeepClone(any[i]));\n }\n }\n else if (intrinsicTypes.indexOf(any.constructor) >= 0) {\n rv = any;\n }\n else {\n var proto = getProto(any);\n rv = proto === Object.prototype ? {} : Object.create(proto);\n circularRefs && circularRefs.set(any, rv);\n for (var prop in any) {\n if (hasOwn(any, prop)) {\n rv[prop] = innerDeepClone(any[prop]);\n }\n }\n }\n return rv;\n}\nvar toString = {}.toString;\nfunction toStringTag(o) {\n return toString.call(o).slice(8, -1);\n}\nvar iteratorSymbol = typeof Symbol !== 'undefined' ?\n Symbol.iterator :\n '@@iterator';\nvar getIteratorOf = typeof iteratorSymbol === \"symbol\" ? function (x) {\n var i;\n return x != null && (i = x[iteratorSymbol]) && i.apply(x);\n} : function () { return null; };\nvar NO_CHAR_ARRAY = {};\nfunction getArrayOf(arrayLike) {\n var i, a, x, it;\n if (arguments.length === 1) {\n if (isArray(arrayLike))\n return arrayLike.slice();\n if (this === NO_CHAR_ARRAY && typeof arrayLike === 'string')\n return [arrayLike];\n if ((it = getIteratorOf(arrayLike))) {\n a = [];\n while ((x = it.next()), !x.done)\n a.push(x.value);\n return a;\n }\n if (arrayLike == null)\n return [arrayLike];\n i = arrayLike.length;\n if (typeof i === 'number') {\n a = new Array(i);\n while (i--)\n a[i] = arrayLike[i];\n return a;\n }\n return [arrayLike];\n }\n i = arguments.length;\n a = new Array(i);\n while (i--)\n a[i] = arguments[i];\n return a;\n}\nvar isAsyncFunction = typeof Symbol !== 'undefined'\n ? function (fn) { return fn[Symbol.toStringTag] === 'AsyncFunction'; }\n : function () { return false; };\n\nvar debug = typeof location !== 'undefined' &&\n /^(http|https):\\/\\/(localhost|127\\.0\\.0\\.1)/.test(location.href);\nfunction setDebug(value, filter) {\n debug = value;\n libraryFilter = filter;\n}\nvar libraryFilter = function () { return true; };\nvar NEEDS_THROW_FOR_STACK = !new Error(\"\").stack;\nfunction getErrorWithStack() {\n if (NEEDS_THROW_FOR_STACK)\n try {\n getErrorWithStack.arguments;\n throw new Error();\n }\n catch (e) {\n return e;\n }\n return new Error();\n}\nfunction prettyStack(exception, numIgnoredFrames) {\n var stack = exception.stack;\n if (!stack)\n return \"\";\n numIgnoredFrames = (numIgnoredFrames || 0);\n if (stack.indexOf(exception.name) === 0)\n numIgnoredFrames += (exception.name + exception.message).split('\\n').length;\n return stack.split('\\n')\n .slice(numIgnoredFrames)\n .filter(libraryFilter)\n .map(function (frame) { return \"\\n\" + frame; })\n .join('');\n}\n\nvar dexieErrorNames = [\n 'Modify',\n 'Bulk',\n 'OpenFailed',\n 'VersionChange',\n 'Schema',\n 'Upgrade',\n 'InvalidTable',\n 'MissingAPI',\n 'NoSuchDatabase',\n 'InvalidArgument',\n 'SubTransaction',\n 'Unsupported',\n 'Internal',\n 'DatabaseClosed',\n 'PrematureCommit',\n 'ForeignAwait'\n];\nvar idbDomErrorNames = [\n 'Unknown',\n 'Constraint',\n 'Data',\n 'TransactionInactive',\n 'ReadOnly',\n 'Version',\n 'NotFound',\n 'InvalidState',\n 'InvalidAccess',\n 'Abort',\n 'Timeout',\n 'QuotaExceeded',\n 'Syntax',\n 'DataClone'\n];\nvar errorList = dexieErrorNames.concat(idbDomErrorNames);\nvar defaultTexts = {\n VersionChanged: \"Database version changed by other database connection\",\n DatabaseClosed: \"Database has been closed\",\n Abort: \"Transaction aborted\",\n TransactionInactive: \"Transaction has already completed or failed\",\n MissingAPI: \"IndexedDB API missing. Please visit https://tinyurl.com/y2uuvskb\"\n};\nfunction DexieError(name, msg) {\n this._e = getErrorWithStack();\n this.name = name;\n this.message = msg;\n}\nderive(DexieError).from(Error).extend({\n stack: {\n get: function () {\n return this._stack ||\n (this._stack = this.name + \": \" + this.message + prettyStack(this._e, 2));\n }\n },\n toString: function () { return this.name + \": \" + this.message; }\n});\nfunction getMultiErrorMessage(msg, failures) {\n return msg + \". Errors: \" + Object.keys(failures)\n .map(function (key) { return failures[key].toString(); })\n .filter(function (v, i, s) { return s.indexOf(v) === i; })\n .join('\\n');\n}\nfunction ModifyError(msg, failures, successCount, failedKeys) {\n this._e = getErrorWithStack();\n this.failures = failures;\n this.failedKeys = failedKeys;\n this.successCount = successCount;\n this.message = getMultiErrorMessage(msg, failures);\n}\nderive(ModifyError).from(DexieError);\nfunction BulkError(msg, failures) {\n this._e = getErrorWithStack();\n this.name = \"BulkError\";\n this.failures = Object.keys(failures).map(function (pos) { return failures[pos]; });\n this.failuresByPos = failures;\n this.message = getMultiErrorMessage(msg, failures);\n}\nderive(BulkError).from(DexieError);\nvar errnames = errorList.reduce(function (obj, name) { return (obj[name] = name + \"Error\", obj); }, {});\nvar BaseException = DexieError;\nvar exceptions = errorList.reduce(function (obj, name) {\n var fullName = name + \"Error\";\n function DexieError(msgOrInner, inner) {\n this._e = getErrorWithStack();\n this.name = fullName;\n if (!msgOrInner) {\n this.message = defaultTexts[name] || fullName;\n this.inner = null;\n }\n else if (typeof msgOrInner === 'string') {\n this.message = \"\" + msgOrInner + (!inner ? '' : '\\n ' + inner);\n this.inner = inner || null;\n }\n else if (typeof msgOrInner === 'object') {\n this.message = msgOrInner.name + \" \" + msgOrInner.message;\n this.inner = msgOrInner;\n }\n }\n derive(DexieError).from(BaseException);\n obj[name] = DexieError;\n return obj;\n}, {});\nexceptions.Syntax = SyntaxError;\nexceptions.Type = TypeError;\nexceptions.Range = RangeError;\nvar exceptionMap = idbDomErrorNames.reduce(function (obj, name) {\n obj[name + \"Error\"] = exceptions[name];\n return obj;\n}, {});\nfunction mapError(domError, message) {\n if (!domError || domError instanceof DexieError || domError instanceof TypeError || domError instanceof SyntaxError || !domError.name || !exceptionMap[domError.name])\n return domError;\n var rv = new exceptionMap[domError.name](message || domError.message, domError);\n if (\"stack\" in domError) {\n setProp(rv, \"stack\", { get: function () {\n return this.inner.stack;\n } });\n }\n return rv;\n}\nvar fullNameExceptions = errorList.reduce(function (obj, name) {\n if ([\"Syntax\", \"Type\", \"Range\"].indexOf(name) === -1)\n obj[name + \"Error\"] = exceptions[name];\n return obj;\n}, {});\nfullNameExceptions.ModifyError = ModifyError;\nfullNameExceptions.DexieError = DexieError;\nfullNameExceptions.BulkError = BulkError;\n\nfunction nop() { }\nfunction mirror(val) { return val; }\nfunction pureFunctionChain(f1, f2) {\n if (f1 == null || f1 === mirror)\n return f2;\n return function (val) {\n return f2(f1(val));\n };\n}\nfunction callBoth(on1, on2) {\n return function () {\n on1.apply(this, arguments);\n on2.apply(this, arguments);\n };\n}\nfunction hookCreatingChain(f1, f2) {\n if (f1 === nop)\n return f2;\n return function () {\n var res = f1.apply(this, arguments);\n if (res !== undefined)\n arguments[0] = res;\n var onsuccess = this.onsuccess,\n onerror = this.onerror;\n this.onsuccess = null;\n this.onerror = null;\n var res2 = f2.apply(this, arguments);\n if (onsuccess)\n this.onsuccess = this.onsuccess ? callBoth(onsuccess, this.onsuccess) : onsuccess;\n if (onerror)\n this.onerror = this.onerror ? callBoth(onerror, this.onerror) : onerror;\n return res2 !== undefined ? res2 : res;\n };\n}\nfunction hookDeletingChain(f1, f2) {\n if (f1 === nop)\n return f2;\n return function () {\n f1.apply(this, arguments);\n var onsuccess = this.onsuccess,\n onerror = this.onerror;\n this.onsuccess = this.onerror = null;\n f2.apply(this, arguments);\n if (onsuccess)\n this.onsuccess = this.onsuccess ? callBoth(onsuccess, this.onsuccess) : onsuccess;\n if (onerror)\n this.onerror = this.onerror ? callBoth(onerror, this.onerror) : onerror;\n };\n}\nfunction hookUpdatingChain(f1, f2) {\n if (f1 === nop)\n return f2;\n return function (modifications) {\n var res = f1.apply(this, arguments);\n extend(modifications, res);\n var onsuccess = this.onsuccess,\n onerror = this.onerror;\n this.onsuccess = null;\n this.onerror = null;\n var res2 = f2.apply(this, arguments);\n if (onsuccess)\n this.onsuccess = this.onsuccess ? callBoth(onsuccess, this.onsuccess) : onsuccess;\n if (onerror)\n this.onerror = this.onerror ? callBoth(onerror, this.onerror) : onerror;\n return res === undefined ?\n (res2 === undefined ? undefined : res2) :\n (extend(res, res2));\n };\n}\nfunction reverseStoppableEventChain(f1, f2) {\n if (f1 === nop)\n return f2;\n return function () {\n if (f2.apply(this, arguments) === false)\n return false;\n return f1.apply(this, arguments);\n };\n}\nfunction promisableChain(f1, f2) {\n if (f1 === nop)\n return f2;\n return function () {\n var res = f1.apply(this, arguments);\n if (res && typeof res.then === 'function') {\n var thiz = this, i = arguments.length, args = new Array(i);\n while (i--)\n args[i] = arguments[i];\n return res.then(function () {\n return f2.apply(thiz, args);\n });\n }\n return f2.apply(this, arguments);\n };\n}\n\nvar INTERNAL = {};\nvar LONG_STACKS_CLIP_LIMIT = 100,\nMAX_LONG_STACKS = 20, ZONE_ECHO_LIMIT = 100, _a$1 = typeof Promise === 'undefined' ?\n [] :\n (function () {\n var globalP = Promise.resolve();\n if (typeof crypto === 'undefined' || !crypto.subtle)\n return [globalP, getProto(globalP), globalP];\n var nativeP = crypto.subtle.digest(\"SHA-512\", new Uint8Array([0]));\n return [\n nativeP,\n getProto(nativeP),\n globalP\n ];\n })(), resolvedNativePromise = _a$1[0], nativePromiseProto = _a$1[1], resolvedGlobalPromise = _a$1[2], nativePromiseThen = nativePromiseProto && nativePromiseProto.then;\nvar NativePromise = resolvedNativePromise && resolvedNativePromise.constructor;\nvar patchGlobalPromise = !!resolvedGlobalPromise;\nvar stack_being_generated = false;\nvar schedulePhysicalTick = resolvedGlobalPromise ?\n function () { resolvedGlobalPromise.then(physicalTick); }\n :\n _global.setImmediate ?\n setImmediate.bind(null, physicalTick) :\n _global.MutationObserver ?\n function () {\n var hiddenDiv = document.createElement(\"div\");\n (new MutationObserver(function () {\n physicalTick();\n hiddenDiv = null;\n })).observe(hiddenDiv, { attributes: true });\n hiddenDiv.setAttribute('i', '1');\n } :\n function () { setTimeout(physicalTick, 0); };\nvar asap = function (callback, args) {\n microtickQueue.push([callback, args]);\n if (needsNewPhysicalTick) {\n schedulePhysicalTick();\n needsNewPhysicalTick = false;\n }\n};\nvar isOutsideMicroTick = true,\nneedsNewPhysicalTick = true,\nunhandledErrors = [],\nrejectingErrors = [],\ncurrentFulfiller = null, rejectionMapper = mirror;\nvar globalPSD = {\n id: 'global',\n global: true,\n ref: 0,\n unhandleds: [],\n onunhandled: globalError,\n pgp: false,\n env: {},\n finalize: function () {\n this.unhandleds.forEach(function (uh) {\n try {\n globalError(uh[0], uh[1]);\n }\n catch (e) { }\n });\n }\n};\nvar PSD = globalPSD;\nvar microtickQueue = [];\nvar numScheduledCalls = 0;\nvar tickFinalizers = [];\nfunction DexiePromise(fn) {\n if (typeof this !== 'object')\n throw new TypeError('Promises must be constructed via new');\n this._listeners = [];\n this.onuncatched = nop;\n this._lib = false;\n var psd = (this._PSD = PSD);\n if (debug) {\n this._stackHolder = getErrorWithStack();\n this._prev = null;\n this._numPrev = 0;\n }\n if (typeof fn !== 'function') {\n if (fn !== INTERNAL)\n throw new TypeError('Not a function');\n this._state = arguments[1];\n this._value = arguments[2];\n if (this._state === false)\n handleRejection(this, this._value);\n return;\n }\n this._state = null;\n this._value = null;\n ++psd.ref;\n executePromiseTask(this, fn);\n}\nvar thenProp = {\n get: function () {\n var psd = PSD, microTaskId = totalEchoes;\n function then(onFulfilled, onRejected) {\n var _this = this;\n var possibleAwait = !psd.global && (psd !== PSD || microTaskId !== totalEchoes);\n var cleanup = possibleAwait && !decrementExpectedAwaits();\n var rv = new DexiePromise(function (resolve, reject) {\n propagateToListener(_this, new Listener(nativeAwaitCompatibleWrap(onFulfilled, psd, possibleAwait, cleanup), nativeAwaitCompatibleWrap(onRejected, psd, possibleAwait, cleanup), resolve, reject, psd));\n });\n debug && linkToPreviousPromise(rv, this);\n return rv;\n }\n then.prototype = INTERNAL;\n return then;\n },\n set: function (value) {\n setProp(this, 'then', value && value.prototype === INTERNAL ?\n thenProp :\n {\n get: function () {\n return value;\n },\n set: thenProp.set\n });\n }\n};\nprops(DexiePromise.prototype, {\n then: thenProp,\n _then: function (onFulfilled, onRejected) {\n propagateToListener(this, new Listener(null, null, onFulfilled, onRejected, PSD));\n },\n catch: function (onRejected) {\n if (arguments.length === 1)\n return this.then(null, onRejected);\n var type = arguments[0], handler = arguments[1];\n return typeof type === 'function' ? this.then(null, function (err) {\n return err instanceof type ? handler(err) : PromiseReject(err);\n })\n : this.then(null, function (err) {\n return err && err.name === type ? handler(err) : PromiseReject(err);\n });\n },\n finally: function (onFinally) {\n return this.then(function (value) {\n onFinally();\n return value;\n }, function (err) {\n onFinally();\n return PromiseReject(err);\n });\n },\n stack: {\n get: function () {\n if (this._stack)\n return this._stack;\n try {\n stack_being_generated = true;\n var stacks = getStack(this, [], MAX_LONG_STACKS);\n var stack = stacks.join(\"\\nFrom previous: \");\n if (this._state !== null)\n this._stack = stack;\n return stack;\n }\n finally {\n stack_being_generated = false;\n }\n }\n },\n timeout: function (ms, msg) {\n var _this = this;\n return ms < Infinity ?\n new DexiePromise(function (resolve, reject) {\n var handle = setTimeout(function () { return reject(new exceptions.Timeout(msg)); }, ms);\n _this.then(resolve, reject).finally(clearTimeout.bind(null, handle));\n }) : this;\n }\n});\nif (typeof Symbol !== 'undefined' && Symbol.toStringTag)\n setProp(DexiePromise.prototype, Symbol.toStringTag, 'Dexie.Promise');\nglobalPSD.env = snapShot();\nfunction Listener(onFulfilled, onRejected, resolve, reject, zone) {\n this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;\n this.onRejected = typeof onRejected === 'function' ? onRejected : null;\n this.resolve = resolve;\n this.reject = reject;\n this.psd = zone;\n}\nprops(DexiePromise, {\n all: function () {\n var values = getArrayOf.apply(null, arguments)\n .map(onPossibleParallellAsync);\n return new DexiePromise(function (resolve, reject) {\n if (values.length === 0)\n resolve([]);\n var remaining = values.length;\n values.forEach(function (a, i) { return DexiePromise.resolve(a).then(function (x) {\n values[i] = x;\n if (!--remaining)\n resolve(values);\n }, reject); });\n });\n },\n resolve: function (value) {\n if (value instanceof DexiePromise)\n return value;\n if (value && typeof value.then === 'function')\n return new DexiePromise(function (resolve, reject) {\n value.then(resolve, reject);\n });\n var rv = new DexiePromise(INTERNAL, true, value);\n linkToPreviousPromise(rv, currentFulfiller);\n return rv;\n },\n reject: PromiseReject,\n race: function () {\n var values = getArrayOf.apply(null, arguments).map(onPossibleParallellAsync);\n return new DexiePromise(function (resolve, reject) {\n values.map(function (value) { return DexiePromise.resolve(value).then(resolve, reject); });\n });\n },\n PSD: {\n get: function () { return PSD; },\n set: function (value) { return PSD = value; }\n },\n totalEchoes: { get: function () { return totalEchoes; } },\n newPSD: newScope,\n usePSD: usePSD,\n scheduler: {\n get: function () { return asap; },\n set: function (value) { asap = value; }\n },\n rejectionMapper: {\n get: function () { return rejectionMapper; },\n set: function (value) { rejectionMapper = value; }\n },\n follow: function (fn, zoneProps) {\n return new DexiePromise(function (resolve, reject) {\n return newScope(function (resolve, reject) {\n var psd = PSD;\n psd.unhandleds = [];\n psd.onunhandled = reject;\n psd.finalize = callBoth(function () {\n var _this = this;\n run_at_end_of_this_or_next_physical_tick(function () {\n _this.unhandleds.length === 0 ? resolve() : reject(_this.unhandleds[0]);\n });\n }, psd.finalize);\n fn();\n }, zoneProps, resolve, reject);\n });\n }\n});\nif (NativePromise) {\n if (NativePromise.allSettled)\n setProp(DexiePromise, \"allSettled\", function () {\n var possiblePromises = getArrayOf.apply(null, arguments).map(onPossibleParallellAsync);\n return new DexiePromise(function (resolve) {\n if (possiblePromises.length === 0)\n resolve([]);\n var remaining = possiblePromises.length;\n var results = new Array(remaining);\n possiblePromises.forEach(function (p, i) { return DexiePromise.resolve(p).then(function (value) { return results[i] = { status: \"fulfilled\", value: value }; }, function (reason) { return results[i] = { status: \"rejected\", reason: reason }; })\n .then(function () { return --remaining || resolve(results); }); });\n });\n });\n if (NativePromise.any && typeof AggregateError !== 'undefined')\n setProp(DexiePromise, \"any\", function () {\n var possiblePromises = getArrayOf.apply(null, arguments).map(onPossibleParallellAsync);\n return new DexiePromise(function (resolve, reject) {\n if (possiblePromises.length === 0)\n reject(new AggregateError([]));\n var remaining = possiblePromises.length;\n var failures = new Array(remaining);\n possiblePromises.forEach(function (p, i) { return DexiePromise.resolve(p).then(function (value) { return resolve(value); }, function (failure) {\n failures[i] = failure;\n if (!--remaining)\n reject(new AggregateError(failures));\n }); });\n });\n });\n}\nfunction executePromiseTask(promise, fn) {\n try {\n fn(function (value) {\n if (promise._state !== null)\n return;\n if (value === promise)\n throw new TypeError('A promise cannot be resolved with itself.');\n var shouldExecuteTick = promise._lib && beginMicroTickScope();\n if (value && typeof value.then === 'function') {\n executePromiseTask(promise, function (resolve, reject) {\n value instanceof DexiePromise ?\n value._then(resolve, reject) :\n value.then(resolve, reject);\n });\n }\n else {\n promise._state = true;\n promise._value = value;\n propagateAllListeners(promise);\n }\n if (shouldExecuteTick)\n endMicroTickScope();\n }, handleRejection.bind(null, promise));\n }\n catch (ex) {\n handleRejection(promise, ex);\n }\n}\nfunction handleRejection(promise, reason) {\n rejectingErrors.push(reason);\n if (promise._state !== null)\n return;\n var shouldExecuteTick = promise._lib && beginMicroTickScope();\n reason = rejectionMapper(reason);\n promise._state = false;\n promise._value = reason;\n debug && reason !== null && typeof reason === 'object' && !reason._promise && tryCatch(function () {\n var origProp = getPropertyDescriptor(reason, \"stack\");\n reason._promise = promise;\n setProp(reason, \"stack\", {\n get: function () {\n return stack_being_generated ?\n origProp && (origProp.get ?\n origProp.get.apply(reason) :\n origProp.value) :\n promise.stack;\n }\n });\n });\n addPossiblyUnhandledError(promise);\n propagateAllListeners(promise);\n if (shouldExecuteTick)\n endMicroTickScope();\n}\nfunction propagateAllListeners(promise) {\n var listeners = promise._listeners;\n promise._listeners = [];\n for (var i = 0, len = listeners.length; i < len; ++i) {\n propagateToListener(promise, listeners[i]);\n }\n var psd = promise._PSD;\n --psd.ref || psd.finalize();\n if (numScheduledCalls === 0) {\n ++numScheduledCalls;\n asap(function () {\n if (--numScheduledCalls === 0)\n finalizePhysicalTick();\n }, []);\n }\n}\nfunction propagateToListener(promise, listener) {\n if (promise._state === null) {\n promise._listeners.push(listener);\n return;\n }\n var cb = promise._state ? listener.onFulfilled : listener.onRejected;\n if (cb === null) {\n return (promise._state ? listener.resolve : listener.reject)(promise._value);\n }\n ++listener.psd.ref;\n ++numScheduledCalls;\n asap(callListener, [cb, promise, listener]);\n}\nfunction callListener(cb, promise, listener) {\n try {\n currentFulfiller = promise;\n var ret, value = promise._value;\n if (promise._state) {\n ret = cb(value);\n }\n else {\n if (rejectingErrors.length)\n rejectingErrors = [];\n ret = cb(value);\n if (rejectingErrors.indexOf(value) === -1)\n markErrorAsHandled(promise);\n }\n listener.resolve(ret);\n }\n catch (e) {\n listener.reject(e);\n }\n finally {\n currentFulfiller = null;\n if (--numScheduledCalls === 0)\n finalizePhysicalTick();\n --listener.psd.ref || listener.psd.finalize();\n }\n}\nfunction getStack(promise, stacks, limit) {\n if (stacks.length === limit)\n return stacks;\n var stack = \"\";\n if (promise._state === false) {\n var failure = promise._value, errorName, message;\n if (failure != null) {\n errorName = failure.name || \"Error\";\n message = failure.message || failure;\n stack = prettyStack(failure, 0);\n }\n else {\n errorName = failure;\n message = \"\";\n }\n stacks.push(errorName + (message ? \": \" + message : \"\") + stack);\n }\n if (debug) {\n stack = prettyStack(promise._stackHolder, 2);\n if (stack && stacks.indexOf(stack) === -1)\n stacks.push(stack);\n if (promise._prev)\n getStack(promise._prev, stacks, limit);\n }\n return stacks;\n}\nfunction linkToPreviousPromise(promise, prev) {\n var numPrev = prev ? prev._numPrev + 1 : 0;\n if (numPrev < LONG_STACKS_CLIP_LIMIT) {\n promise._prev = prev;\n promise._numPrev = numPrev;\n }\n}\nfunction physicalTick() {\n beginMicroTickScope() && endMicroTickScope();\n}\nfunction beginMicroTickScope() {\n var wasRootExec = isOutsideMicroTick;\n isOutsideMicroTick = false;\n needsNewPhysicalTick = false;\n return wasRootExec;\n}\nfunction endMicroTickScope() {\n var callbacks, i, l;\n do {\n while (microtickQueue.length > 0) {\n callbacks = microtickQueue;\n microtickQueue = [];\n l = callbacks.length;\n for (i = 0; i < l; ++i) {\n var item = callbacks[i];\n item[0].apply(null, item[1]);\n }\n }\n } while (microtickQueue.length > 0);\n isOutsideMicroTick = true;\n needsNewPhysicalTick = true;\n}\nfunction finalizePhysicalTick() {\n var unhandledErrs = unhandledErrors;\n unhandledErrors = [];\n unhandledErrs.forEach(function (p) {\n p._PSD.onunhandled.call(null, p._value, p);\n });\n var finalizers = tickFinalizers.slice(0);\n var i = finalizers.length;\n while (i)\n finalizers[--i]();\n}\nfunction run_at_end_of_this_or_next_physical_tick(fn) {\n function finalizer() {\n fn();\n tickFinalizers.splice(tickFinalizers.indexOf(finalizer), 1);\n }\n tickFinalizers.push(finalizer);\n ++numScheduledCalls;\n asap(function () {\n if (--numScheduledCalls === 0)\n finalizePhysicalTick();\n }, []);\n}\nfunction addPossiblyUnhandledError(promise) {\n if (!unhandledErrors.some(function (p) { return p._value === promise._value; }))\n unhandledErrors.push(promise);\n}\nfunction markErrorAsHandled(promise) {\n var i = unhandledErrors.length;\n while (i)\n if (unhandledErrors[--i]._value === promise._value) {\n unhandledErrors.splice(i, 1);\n return;\n }\n}\nfunction PromiseReject(reason) {\n return new DexiePromise(INTERNAL, false, reason);\n}\nfunction wrap(fn, errorCatcher) {\n var psd = PSD;\n return function () {\n var wasRootExec = beginMicroTickScope(), outerScope = PSD;\n try {\n switchToZone(psd, true);\n return fn.apply(this, arguments);\n }\n catch (e) {\n errorCatcher && errorCatcher(e);\n }\n finally {\n switchToZone(outerScope, false);\n if (wasRootExec)\n endMicroTickScope();\n }\n };\n}\nvar task = { awaits: 0, echoes: 0, id: 0 };\nvar taskCounter = 0;\nvar zoneStack = [];\nvar zoneEchoes = 0;\nvar totalEchoes = 0;\nvar zone_id_counter = 0;\nfunction newScope(fn, props, a1, a2) {\n var parent = PSD, psd = Object.create(parent);\n psd.parent = parent;\n psd.ref = 0;\n psd.global = false;\n psd.id = ++zone_id_counter;\n var globalEnv = globalPSD.env;\n psd.env = patchGlobalPromise ? {\n Promise: DexiePromise,\n PromiseProp: { value: DexiePromise, configurable: true, writable: true },\n all: DexiePromise.all,\n race: DexiePromise.race,\n allSettled: DexiePromise.allSettled,\n any: DexiePromise.any,\n resolve: DexiePromise.resolve,\n reject: DexiePromise.reject,\n nthen: getPatchedPromiseThen(globalEnv.nthen, psd),\n gthen: getPatchedPromiseThen(globalEnv.gthen, psd)\n } : {};\n if (props)\n extend(psd, props);\n ++parent.ref;\n psd.finalize = function () {\n --this.parent.ref || this.parent.finalize();\n };\n var rv = usePSD(psd, fn, a1, a2);\n if (psd.ref === 0)\n psd.finalize();\n return rv;\n}\nfunction incrementExpectedAwaits() {\n if (!task.id)\n task.id = ++taskCounter;\n ++task.awaits;\n task.echoes += ZONE_ECHO_LIMIT;\n return task.id;\n}\nfunction decrementExpectedAwaits() {\n if (!task.awaits)\n return false;\n if (--task.awaits === 0)\n task.id = 0;\n task.echoes = task.awaits * ZONE_ECHO_LIMIT;\n return true;\n}\nif (('' + nativePromiseThen).indexOf('[native code]') === -1) {\n incrementExpectedAwaits = decrementExpectedAwaits = nop;\n}\nfunction onPossibleParallellAsync(possiblePromise) {\n if (task.echoes && possiblePromise && possiblePromise.constructor === NativePromise) {\n incrementExpectedAwaits();\n return possiblePromise.then(function (x) {\n decrementExpectedAwaits();\n return x;\n }, function (e) {\n decrementExpectedAwaits();\n return rejection(e);\n });\n }\n return possiblePromise;\n}\nfunction zoneEnterEcho(targetZone) {\n ++totalEchoes;\n if (!task.echoes || --task.echoes === 0) {\n task.echoes = task.id = 0;\n }\n zoneStack.push(PSD);\n switchToZone(targetZone, true);\n}\nfunction zoneLeaveEcho() {\n var zone = zoneStack[zoneStack.length - 1];\n zoneStack.pop();\n switchToZone(zone, false);\n}\nfunction switchToZone(targetZone, bEnteringZone) {\n var currentZone = PSD;\n if (bEnteringZone ? task.echoes && (!zoneEchoes++ || targetZone !== PSD) : zoneEchoes && (!--zoneEchoes || targetZone !== PSD)) {\n enqueueNativeMicroTask(bEnteringZone ? zoneEnterEcho.bind(null, targetZone) : zoneLeaveEcho);\n }\n if (targetZone === PSD)\n return;\n PSD = targetZone;\n if (currentZone === globalPSD)\n globalPSD.env = snapShot();\n if (patchGlobalPromise) {\n var GlobalPromise_1 = globalPSD.env.Promise;\n var targetEnv = targetZone.env;\n nativePromiseProto.then = targetEnv.nthen;\n GlobalPromise_1.prototype.then = targetEnv.gthen;\n if (currentZone.global || targetZone.global) {\n Object.defineProperty(_global, 'Promise', targetEnv.PromiseProp);\n GlobalPromise_1.all = targetEnv.all;\n GlobalPromise_1.race = targetEnv.race;\n GlobalPromise_1.resolve = targetEnv.resolve;\n GlobalPromise_1.reject = targetEnv.reject;\n if (targetEnv.allSettled)\n GlobalPromise_1.allSettled = targetEnv.allSettled;\n if (targetEnv.any)\n GlobalPromise_1.any = targetEnv.any;\n }\n }\n}\nfunction snapShot() {\n var GlobalPromise = _global.Promise;\n return patchGlobalPromise ? {\n Promise: GlobalPromise,\n PromiseProp: Object.getOwnPropertyDescriptor(_global, \"Promise\"),\n all: GlobalPromise.all,\n race: GlobalPromise.race,\n allSettled: GlobalPromise.allSettled,\n any: GlobalPromise.any,\n resolve: GlobalPromise.resolve,\n reject: GlobalPromise.reject,\n nthen: nativePromiseProto.then,\n gthen: GlobalPromise.prototype.then\n } : {};\n}\nfunction usePSD(psd, fn, a1, a2, a3) {\n var outerScope = PSD;\n try {\n switchToZone(psd, true);\n return fn(a1, a2, a3);\n }\n finally {\n switchToZone(outerScope, false);\n }\n}\nfunction enqueueNativeMicroTask(job) {\n nativePromiseThen.call(resolvedNativePromise, job);\n}\nfunction nativeAwaitCompatibleWrap(fn, zone, possibleAwait, cleanup) {\n return typeof fn !== 'function' ? fn : function () {\n var outerZone = PSD;\n if (possibleAwait)\n incrementExpectedAwaits();\n switchToZone(zone, true);\n try {\n return fn.apply(this, arguments);\n }\n finally {\n switchToZone(outerZone, false);\n if (cleanup)\n enqueueNativeMicroTask(decrementExpectedAwaits);\n }\n };\n}\nfunction getPatchedPromiseThen(origThen, zone) {\n return function (onResolved, onRejected) {\n return origThen.call(this, nativeAwaitCompatibleWrap(onResolved, zone), nativeAwaitCompatibleWrap(onRejected, zone));\n };\n}\nvar UNHANDLEDREJECTION = \"unhandledrejection\";\nfunction globalError(err, promise) {\n var rv;\n try {\n rv = promise.onuncatched(err);\n }\n catch (e) { }\n if (rv !== false)\n try {\n var event, eventData = { promise: promise, reason: err };\n if (_global.document && document.createEvent) {\n event = document.createEvent('Event');\n event.initEvent(UNHANDLEDREJECTION, true, true);\n extend(event, eventData);\n }\n else if (_global.CustomEvent) {\n event = new CustomEvent(UNHANDLEDREJECTION, { detail: eventData });\n extend(event, eventData);\n }\n if (event && _global.dispatchEvent) {\n dispatchEvent(event);\n if (!_global.PromiseRejectionEvent && _global.onunhandledrejection)\n try {\n _global.onunhandledrejection(event);\n }\n catch (_) { }\n }\n if (debug && event && !event.defaultPrevented) {\n console.warn(\"Unhandled rejection: \" + (err.stack || err));\n }\n }\n catch (e) { }\n}\nvar rejection = DexiePromise.reject;\n\nfunction tempTransaction(db, mode, storeNames, fn) {\n if (!db.idbdb || (!db._state.openComplete && (!PSD.letThrough && !db._vip))) {\n if (db._state.openComplete) {\n return rejection(new exceptions.DatabaseClosed(db._state.dbOpenError));\n }\n if (!db._state.isBeingOpened) {\n if (!db._options.autoOpen)\n return rejection(new exceptions.DatabaseClosed());\n db.open().catch(nop);\n }\n return db._state.dbReadyPromise.then(function () { return tempTransaction(db, mode, storeNames, fn); });\n }\n else {\n var trans = db._createTransaction(mode, storeNames, db._dbSchema);\n try {\n trans.create();\n db._state.PR1398_maxLoop = 3;\n }\n catch (ex) {\n if (ex.name === errnames.InvalidState && db.isOpen() && --db._state.PR1398_maxLoop > 0) {\n console.warn('Dexie: Need to reopen db');\n db._close();\n return db.open().then(function () { return tempTransaction(db, mode, storeNames, fn); });\n }\n return rejection(ex);\n }\n return trans._promise(mode, function (resolve, reject) {\n return newScope(function () {\n PSD.trans = trans;\n return fn(resolve, reject, trans);\n });\n }).then(function (result) {\n return trans._completion.then(function () { return result; });\n });\n }\n}\n\nvar DEXIE_VERSION = '3.2.3';\nvar maxString = String.fromCharCode(65535);\nvar minKey = -Infinity;\nvar INVALID_KEY_ARGUMENT = \"Invalid key provided. Keys must be of type string, number, Date or Array.\";\nvar STRING_EXPECTED = \"String expected.\";\nvar connections = [];\nvar isIEOrEdge = typeof navigator !== 'undefined' && /(MSIE|Trident|Edge)/.test(navigator.userAgent);\nvar hasIEDeleteObjectStoreBug = isIEOrEdge;\nvar hangsOnDeleteLargeKeyRange = isIEOrEdge;\nvar dexieStackFrameFilter = function (frame) { return !/(dexie\\.js|dexie\\.min\\.js)/.test(frame); };\nvar DBNAMES_DB = '__dbnames';\nvar READONLY = 'readonly';\nvar READWRITE = 'readwrite';\n\nfunction combine(filter1, filter2) {\n return filter1 ?\n filter2 ?\n function () { return filter1.apply(this, arguments) && filter2.apply(this, arguments); } :\n filter1 :\n filter2;\n}\n\nvar AnyRange = {\n type: 3 ,\n lower: -Infinity,\n lowerOpen: false,\n upper: [[]],\n upperOpen: false\n};\n\nfunction workaroundForUndefinedPrimKey(keyPath) {\n return typeof keyPath === \"string\" && !/\\./.test(keyPath)\n ? function (obj) {\n if (obj[keyPath] === undefined && (keyPath in obj)) {\n obj = deepClone(obj);\n delete obj[keyPath];\n }\n return obj;\n }\n : function (obj) { return obj; };\n}\n\nvar Table = (function () {\n function Table() {\n }\n Table.prototype._trans = function (mode, fn, writeLocked) {\n var trans = this._tx || PSD.trans;\n var tableName = this.name;\n function checkTableInTransaction(resolve, reject, trans) {\n if (!trans.schema[tableName])\n throw new exceptions.NotFound(\"Table \" + tableName + \" not part of transaction\");\n return fn(trans.idbtrans, trans);\n }\n var wasRootExec = beginMicroTickScope();\n try {\n return trans && trans.db === this.db ?\n trans === PSD.trans ?\n trans._promise(mode, checkTableInTransaction, writeLocked) :\n newScope(function () { return trans._promise(mode, checkTableInTransaction, writeLocked); }, { trans: trans, transless: PSD.transless || PSD }) :\n tempTransaction(this.db, mode, [this.name], checkTableInTransaction);\n }\n finally {\n if (wasRootExec)\n endMicroTickScope();\n }\n };\n Table.prototype.get = function (keyOrCrit, cb) {\n var _this = this;\n if (keyOrCrit && keyOrCrit.constructor === Object)\n return this.where(keyOrCrit).first(cb);\n return this._trans('readonly', function (trans) {\n return _this.core.get({ trans: trans, key: keyOrCrit })\n .then(function (res) { return _this.hook.reading.fire(res); });\n }).then(cb);\n };\n Table.prototype.where = function (indexOrCrit) {\n if (typeof indexOrCrit === 'string')\n return new this.db.WhereClause(this, indexOrCrit);\n if (isArray(indexOrCrit))\n return new this.db.WhereClause(this, \"[\" + indexOrCrit.join('+') + \"]\");\n var keyPaths = keys(indexOrCrit);\n if (keyPaths.length === 1)\n return this\n .where(keyPaths[0])\n .equals(indexOrCrit[keyPaths[0]]);\n var compoundIndex = this.schema.indexes.concat(this.schema.primKey).filter(function (ix) {\n return ix.compound &&\n keyPaths.every(function (keyPath) { return ix.keyPath.indexOf(keyPath) >= 0; }) &&\n ix.keyPath.every(function (keyPath) { return keyPaths.indexOf(keyPath) >= 0; });\n })[0];\n if (compoundIndex && this.db._maxKey !== maxString)\n return this\n .where(compoundIndex.name)\n .equals(compoundIndex.keyPath.map(function (kp) { return indexOrCrit[kp]; }));\n if (!compoundIndex && debug)\n console.warn(\"The query \" + JSON.stringify(indexOrCrit) + \" on \" + this.name + \" would benefit of a \" +\n (\"compound index [\" + keyPaths.join('+') + \"]\"));\n var idxByName = this.schema.idxByName;\n var idb = this.db._deps.indexedDB;\n function equals(a, b) {\n try {\n return idb.cmp(a, b) === 0;\n }\n catch (e) {\n return false;\n }\n }\n var _a = keyPaths.reduce(function (_a, keyPath) {\n var prevIndex = _a[0], prevFilterFn = _a[1];\n var index = idxByName[keyPath];\n var value = indexOrCrit[keyPath];\n return [\n prevIndex || index,\n prevIndex || !index ?\n combine(prevFilterFn, index && index.multi ?\n function (x) {\n var prop = getByKeyPath(x, keyPath);\n return isArray(prop) && prop.some(function (item) { return equals(value, item); });\n } : function (x) { return equals(value, getByKeyPath(x, keyPath)); })\n : prevFilterFn\n ];\n }, [null, null]), idx = _a[0], filterFunction = _a[1];\n return idx ?\n this.where(idx.name).equals(indexOrCrit[idx.keyPath])\n .filter(filterFunction) :\n compoundIndex ?\n this.filter(filterFunction) :\n this.where(keyPaths).equals('');\n };\n Table.prototype.filter = function (filterFunction) {\n return this.toCollection().and(filterFunction);\n };\n Table.prototype.count = function (thenShortcut) {\n return this.toCollection().count(thenShortcut);\n };\n Table.prototype.offset = function (offset) {\n return this.toCollection().offset(offset);\n };\n Table.prototype.limit = function (numRows) {\n return this.toCollection().limit(numRows);\n };\n Table.prototype.each = function (callback) {\n return this.toCollection().each(callback);\n };\n Table.prototype.toArray = function (thenShortcut) {\n return this.toCollection().toArray(thenShortcut);\n };\n Table.prototype.toCollection = function () {\n return new this.db.Collection(new this.db.WhereClause(this));\n };\n Table.prototype.orderBy = function (index) {\n return new this.db.Collection(new this.db.WhereClause(this, isArray(index) ?\n \"[\" + index.join('+') + \"]\" :\n index));\n };\n Table.prototype.reverse = function () {\n return this.toCollection().reverse();\n };\n Table.prototype.mapToClass = function (constructor) {\n this.schema.mappedClass = constructor;\n var readHook = function (obj) {\n if (!obj)\n return obj;\n var res = Object.create(constructor.prototype);\n for (var m in obj)\n if (hasOwn(obj, m))\n try {\n res[m] = obj[m];\n }\n catch (_) { }\n return res;\n };\n if (this.schema.readHook) {\n this.hook.reading.unsubscribe(this.schema.readHook);\n }\n this.schema.readHook = readHook;\n this.hook(\"reading\", readHook);\n return constructor;\n };\n Table.prototype.defineClass = function () {\n function Class(content) {\n extend(this, content);\n }\n return this.mapToClass(Class);\n };\n Table.prototype.add = function (obj, key) {\n var _this = this;\n var _a = this.schema.primKey, auto = _a.auto, keyPath = _a.keyPath;\n var objToAdd = obj;\n if (keyPath && auto) {\n objToAdd = workaroundForUndefinedPrimKey(keyPath)(obj);\n }\n return this._trans('readwrite', function (trans) {\n return _this.core.mutate({ trans: trans, type: 'add', keys: key != null ? [key] : null, values: [objToAdd] });\n }).then(function (res) { return res.numFailures ? DexiePromise.reject(res.failures[0]) : res.lastResult; })\n .then(function (lastResult) {\n if (keyPath) {\n try {\n setByKeyPath(obj, keyPath, lastResult);\n }\n catch (_) { }\n }\n return lastResult;\n });\n };\n Table.prototype.update = function (keyOrObject, modifications) {\n if (typeof keyOrObject === 'object' && !isArray(keyOrObject)) {\n var key = getByKeyPath(keyOrObject, this.schema.primKey.keyPath);\n if (key === undefined)\n return rejection(new exceptions.InvalidArgument(\"Given object does not contain its primary key\"));\n try {\n if (typeof modifications !== \"function\") {\n keys(modifications).forEach(function (keyPath) {\n setByKeyPath(keyOrObject, keyPath, modifications[keyPath]);\n });\n }\n else {\n modifications(keyOrObject, { value: keyOrObject, primKey: key });\n }\n }\n catch (_a) {\n }\n return this.where(\":id\").equals(key).modify(modifications);\n }\n else {\n return this.where(\":id\").equals(keyOrObject).modify(modifications);\n }\n };\n Table.prototype.put = function (obj, key) {\n var _this = this;\n var _a = this.schema.primKey, auto = _a.auto, keyPath = _a.keyPath;\n var objToAdd = obj;\n if (keyPath && auto) {\n objToAdd = workaroundForUndefinedPrimKey(keyPath)(obj);\n }\n return this._trans('readwrite', function (trans) { return _this.core.mutate({ trans: trans, type: 'put', values: [objToAdd], keys: key != null ? [key] : null }); })\n .then(function (res) { return res.numFailures ? DexiePromise.reject(res.failures[0]) : res.lastResult; })\n .then(function (lastResult) {\n if (keyPath) {\n try {\n setByKeyPath(obj, keyPath, lastResult);\n }\n catch (_) { }\n }\n return lastResult;\n });\n };\n Table.prototype.delete = function (key) {\n var _this = this;\n return this._trans('readwrite', function (trans) { return _this.core.mutate({ trans: trans, type: 'delete', keys: [key] }); })\n .then(function (res) { return res.numFailures ? DexiePromise.reject(res.failures[0]) : undefined; });\n };\n Table.prototype.clear = function () {\n var _this = this;\n return this._trans('readwrite', function (trans) { return _this.core.mutate({ trans: trans, type: 'deleteRange', range: AnyRange }); })\n .then(function (res) { return res.numFailures ? DexiePromise.reject(res.failures[0]) : undefined; });\n };\n Table.prototype.bulkGet = function (keys) {\n var _this = this;\n return this._trans('readonly', function (trans) {\n return _this.core.getMany({\n keys: keys,\n trans: trans\n }).then(function (result) { return result.map(function (res) { return _this.hook.reading.fire(res); }); });\n });\n };\n Table.prototype.bulkAdd = function (objects, keysOrOptions, options) {\n var _this = this;\n var keys = Array.isArray(keysOrOptions) ? keysOrOptions : undefined;\n options = options || (keys ? undefined : keysOrOptions);\n var wantResults = options ? options.allKeys : undefined;\n return this._trans('readwrite', function (trans) {\n var _a = _this.schema.primKey, auto = _a.auto, keyPath = _a.keyPath;\n if (keyPath && keys)\n throw new exceptions.InvalidArgument(\"bulkAdd(): keys argument invalid on tables with inbound keys\");\n if (keys && keys.length !== objects.length)\n throw new exceptions.InvalidArgument(\"Arguments objects and keys must have the same length\");\n var numObjects = objects.length;\n var objectsToAdd = keyPath && auto ?\n objects.map(workaroundForUndefinedPrimKey(keyPath)) :\n objects;\n return _this.core.mutate({ trans: trans, type: 'add', keys: keys, values: objectsToAdd, wantResults: wantResults })\n .then(function (_a) {\n var numFailures = _a.numFailures, results = _a.results, lastResult = _a.lastResult, failures = _a.failures;\n var result = wantResults ? results : lastResult;\n if (numFailures === 0)\n return result;\n throw new BulkError(_this.name + \".bulkAdd(): \" + numFailures + \" of \" + numObjects + \" operations failed\", failures);\n });\n });\n };\n Table.prototype.bulkPut = function (objects, keysOrOptions, options) {\n var _this = this;\n var keys = Array.isArray(keysOrOptions) ? keysOrOptions : undefined;\n options = options || (keys ? undefined : keysOrOptions);\n var wantResults = options ? options.allKeys : undefined;\n return this._trans('readwrite', function (trans) {\n var _a = _this.schema.primKey, auto = _a.auto, keyPath = _a.keyPath;\n if (keyPath && keys)\n throw new exceptions.InvalidArgument(\"bulkPut(): keys argument invalid on tables with inbound keys\");\n if (keys && keys.length !== objects.length)\n throw new exceptions.InvalidArgument(\"Arguments objects and keys must have the same length\");\n var numObjects = objects.length;\n var objectsToPut = keyPath && auto ?\n objects.map(workaroundForUndefinedPrimKey(keyPath)) :\n objects;\n return _this.core.mutate({ trans: trans, type: 'put', keys: keys, values: objectsToPut, wantResults: wantResults })\n .then(function (_a) {\n var numFailures = _a.numFailures, results = _a.results, lastResult = _a.lastResult, failures = _a.failures;\n var result = wantResults ? results : lastResult;\n if (numFailures === 0)\n return result;\n throw new BulkError(_this.name + \".bulkPut(): \" + numFailures + \" of \" + numObjects + \" operations failed\", failures);\n });\n });\n };\n Table.prototype.bulkDelete = function (keys) {\n var _this = this;\n var numKeys = keys.length;\n return this._trans('readwrite', function (trans) {\n return _this.core.mutate({ trans: trans, type: 'delete', keys: keys });\n }).then(function (_a) {\n var numFailures = _a.numFailures, lastResult = _a.lastResult, failures = _a.failures;\n if (numFailures === 0)\n return lastResult;\n throw new BulkError(_this.name + \".bulkDelete(): \" + numFailures + \" of \" + numKeys + \" operations failed\", failures);\n });\n };\n return Table;\n}());\n\nfunction Events(ctx) {\n var evs = {};\n var rv = function (eventName, subscriber) {\n if (subscriber) {\n var i = arguments.length, args = new Array(i - 1);\n while (--i)\n args[i - 1] = arguments[i];\n evs[eventName].subscribe.apply(null, args);\n return ctx;\n }\n else if (typeof (eventName) === 'string') {\n return evs[eventName];\n }\n };\n rv.addEventType = add;\n for (var i = 1, l = arguments.length; i < l; ++i) {\n add(arguments[i]);\n }\n return rv;\n function add(eventName, chainFunction, defaultFunction) {\n if (typeof eventName === 'object')\n return addConfiguredEvents(eventName);\n if (!chainFunction)\n chainFunction = reverseStoppableEventChain;\n if (!defaultFunction)\n defaultFunction = nop;\n var context = {\n subscribers: [],\n fire: defaultFunction,\n subscribe: function (cb) {\n if (context.subscribers.indexOf(cb) === -1) {\n context.subscribers.push(cb);\n context.fire = chainFunction(context.fire, cb);\n }\n },\n unsubscribe: function (cb) {\n context.subscribers = context.subscribers.filter(function (fn) { return fn !== cb; });\n context.fire = context.subscribers.reduce(chainFunction, defaultFunction);\n }\n };\n evs[eventName] = rv[eventName] = context;\n return context;\n }\n function addConfiguredEvents(cfg) {\n keys(cfg).forEach(function (eventName) {\n var args = cfg[eventName];\n if (isArray(args)) {\n add(eventName, cfg[eventName][0], cfg[eventName][1]);\n }\n else if (args === 'asap') {\n var context = add(eventName, mirror, function fire() {\n var i = arguments.length, args = new Array(i);\n while (i--)\n args[i] = arguments[i];\n context.subscribers.forEach(function (fn) {\n asap$1(function fireEvent() {\n fn.apply(null, args);\n });\n });\n });\n }\n else\n throw new exceptions.InvalidArgument(\"Invalid event config\");\n });\n }\n}\n\nfunction makeClassConstructor(prototype, constructor) {\n derive(constructor).from({ prototype: prototype });\n return constructor;\n}\n\nfunction createTableConstructor(db) {\n return makeClassConstructor(Table.prototype, function Table(name, tableSchema, trans) {\n this.db = db;\n this._tx = trans;\n this.name = name;\n this.schema = tableSchema;\n this.hook = db._allTables[name] ? db._allTables[name].hook : Events(null, {\n \"creating\": [hookCreatingChain, nop],\n \"reading\": [pureFunctionChain, mirror],\n \"updating\": [hookUpdatingChain, nop],\n \"deleting\": [hookDeletingChain, nop]\n });\n });\n}\n\nfunction isPlainKeyRange(ctx, ignoreLimitFilter) {\n return !(ctx.filter || ctx.algorithm || ctx.or) &&\n (ignoreLimitFilter ? ctx.justLimit : !ctx.replayFilter);\n}\nfunction addFilter(ctx, fn) {\n ctx.filter = combine(ctx.filter, fn);\n}\nfunction addReplayFilter(ctx, factory, isLimitFilter) {\n var curr = ctx.replayFilter;\n ctx.replayFilter = curr ? function () { return combine(curr(), factory()); } : factory;\n ctx.justLimit = isLimitFilter && !curr;\n}\nfunction addMatchFilter(ctx, fn) {\n ctx.isMatch = combine(ctx.isMatch, fn);\n}\nfunction getIndexOrStore(ctx, coreSchema) {\n if (ctx.isPrimKey)\n return coreSchema.primaryKey;\n var index = coreSchema.getIndexByKeyPath(ctx.index);\n if (!index)\n throw new exceptions.Schema(\"KeyPath \" + ctx.index + \" on object store \" + coreSchema.name + \" is not indexed\");\n return index;\n}\nfunction openCursor(ctx, coreTable, trans) {\n var index = getIndexOrStore(ctx, coreTable.schema);\n return coreTable.openCursor({\n trans: trans,\n values: !ctx.keysOnly,\n reverse: ctx.dir === 'prev',\n unique: !!ctx.unique,\n query: {\n index: index,\n range: ctx.range\n }\n });\n}\nfunction iter(ctx, fn, coreTrans, coreTable) {\n var filter = ctx.replayFilter ? combine(ctx.filter, ctx.replayFilter()) : ctx.filter;\n if (!ctx.or) {\n return iterate(openCursor(ctx, coreTable, coreTrans), combine(ctx.algorithm, filter), fn, !ctx.keysOnly && ctx.valueMapper);\n }\n else {\n var set_1 = {};\n var union = function (item, cursor, advance) {\n if (!filter || filter(cursor, advance, function (result) { return cursor.stop(result); }, function (err) { return cursor.fail(err); })) {\n var primaryKey = cursor.primaryKey;\n var key = '' + primaryKey;\n if (key === '[object ArrayBuffer]')\n key = '' + new Uint8Array(primaryKey);\n if (!hasOwn(set_1, key)) {\n set_1[key] = true;\n fn(item, cursor, advance);\n }\n }\n };\n return Promise.all([\n ctx.or._iterate(union, coreTrans),\n iterate(openCursor(ctx, coreTable, coreTrans), ctx.algorithm, union, !ctx.keysOnly && ctx.valueMapper)\n ]);\n }\n}\nfunction iterate(cursorPromise, filter, fn, valueMapper) {\n var mappedFn = valueMapper ? function (x, c, a) { return fn(valueMapper(x), c, a); } : fn;\n var wrappedFn = wrap(mappedFn);\n return cursorPromise.then(function (cursor) {\n if (cursor) {\n return cursor.start(function () {\n var c = function () { return cursor.continue(); };\n if (!filter || filter(cursor, function (advancer) { return c = advancer; }, function (val) { cursor.stop(val); c = nop; }, function (e) { cursor.fail(e); c = nop; }))\n wrappedFn(cursor.value, cursor, function (advancer) { return c = advancer; });\n c();\n });\n }\n });\n}\n\nfunction cmp(a, b) {\n try {\n var ta = type(a);\n var tb = type(b);\n if (ta !== tb) {\n if (ta === 'Array')\n return 1;\n if (tb === 'Array')\n return -1;\n if (ta === 'binary')\n return 1;\n if (tb === 'binary')\n return -1;\n if (ta === 'string')\n return 1;\n if (tb === 'string')\n return -1;\n if (ta === 'Date')\n return 1;\n if (tb !== 'Date')\n return NaN;\n return -1;\n }\n switch (ta) {\n case 'number':\n case 'Date':\n case 'string':\n return a > b ? 1 : a < b ? -1 : 0;\n case 'binary': {\n return compareUint8Arrays(getUint8Array(a), getUint8Array(b));\n }\n case 'Array':\n return compareArrays(a, b);\n }\n }\n catch (_a) { }\n return NaN;\n}\nfunction compareArrays(a, b) {\n var al = a.length;\n var bl = b.length;\n var l = al < bl ? al : bl;\n for (var i = 0; i < l; ++i) {\n var res = cmp(a[i], b[i]);\n if (res !== 0)\n return res;\n }\n return al === bl ? 0 : al < bl ? -1 : 1;\n}\nfunction compareUint8Arrays(a, b) {\n var al = a.length;\n var bl = b.length;\n var l = al < bl ? al : bl;\n for (var i = 0; i < l; ++i) {\n if (a[i] !== b[i])\n return a[i] < b[i] ? -1 : 1;\n }\n return al === bl ? 0 : al < bl ? -1 : 1;\n}\nfunction type(x) {\n var t = typeof x;\n if (t !== 'object')\n return t;\n if (ArrayBuffer.isView(x))\n return 'binary';\n var tsTag = toStringTag(x);\n return tsTag === 'ArrayBuffer' ? 'binary' : tsTag;\n}\nfunction getUint8Array(a) {\n if (a instanceof Uint8Array)\n return a;\n if (ArrayBuffer.isView(a))\n return new Uint8Array(a.buffer, a.byteOffset, a.byteLength);\n return new Uint8Array(a);\n}\n\nvar Collection = (function () {\n function Collection() {\n }\n Collection.prototype._read = function (fn, cb) {\n var ctx = this._ctx;\n return ctx.error ?\n ctx.table._trans(null, rejection.bind(null, ctx.error)) :\n ctx.table._trans('readonly', fn).then(cb);\n };\n Collection.prototype._write = function (fn) {\n var ctx = this._ctx;\n return ctx.error ?\n ctx.table._trans(null, rejection.bind(null, ctx.error)) :\n ctx.table._trans('readwrite', fn, \"locked\");\n };\n Collection.prototype._addAlgorithm = function (fn) {\n var ctx = this._ctx;\n ctx.algorithm = combine(ctx.algorithm, fn);\n };\n Collection.prototype._iterate = function (fn, coreTrans) {\n return iter(this._ctx, fn, coreTrans, this._ctx.table.core);\n };\n Collection.prototype.clone = function (props) {\n var rv = Object.create(this.constructor.prototype), ctx = Object.create(this._ctx);\n if (props)\n extend(ctx, props);\n rv._ctx = ctx;\n return rv;\n };\n Collection.prototype.raw = function () {\n this._ctx.valueMapper = null;\n return this;\n };\n Collection.prototype.each = function (fn) {\n var ctx = this._ctx;\n return this._read(function (trans) { return iter(ctx, fn, trans, ctx.table.core); });\n };\n Collection.prototype.count = function (cb) {\n var _this = this;\n return this._read(function (trans) {\n var ctx = _this._ctx;\n var coreTable = ctx.table.core;\n if (isPlainKeyRange(ctx, true)) {\n return coreTable.count({\n trans: trans,\n query: {\n index: getIndexOrStore(ctx, coreTable.schema),\n range: ctx.range\n }\n }).then(function (count) { return Math.min(count, ctx.limit); });\n }\n else {\n var count = 0;\n return iter(ctx, function () { ++count; return false; }, trans, coreTable)\n .then(function () { return count; });\n }\n }).then(cb);\n };\n Collection.prototype.sortBy = function (keyPath, cb) {\n var parts = keyPath.split('.').reverse(), lastPart = parts[0], lastIndex = parts.length - 1;\n function getval(obj, i) {\n if (i)\n return getval(obj[parts[i]], i - 1);\n return obj[lastPart];\n }\n var order = this._ctx.dir === \"next\" ? 1 : -1;\n function sorter(a, b) {\n var aVal = getval(a, lastIndex), bVal = getval(b, lastIndex);\n return aVal < bVal ? -order : aVal > bVal ? order : 0;\n }\n return this.toArray(function (a) {\n return a.sort(sorter);\n }).then(cb);\n };\n Collection.prototype.toArray = function (cb) {\n var _this = this;\n return this._read(function (trans) {\n var ctx = _this._ctx;\n if (ctx.dir === 'next' && isPlainKeyRange(ctx, true) && ctx.limit > 0) {\n var valueMapper_1 = ctx.valueMapper;\n var index = getIndexOrStore(ctx, ctx.table.core.schema);\n return ctx.table.core.query({\n trans: trans,\n limit: ctx.limit,\n values: true,\n query: {\n index: index,\n range: ctx.range\n }\n }).then(function (_a) {\n var result = _a.result;\n return valueMapper_1 ? result.map(valueMapper_1) : result;\n });\n }\n else {\n var a_1 = [];\n return iter(ctx, function (item) { return a_1.push(item); }, trans, ctx.table.core).then(function () { return a_1; });\n }\n }, cb);\n };\n Collection.prototype.offset = function (offset) {\n var ctx = this._ctx;\n if (offset <= 0)\n return this;\n ctx.offset += offset;\n if (isPlainKeyRange(ctx)) {\n addReplayFilter(ctx, function () {\n var offsetLeft = offset;\n return function (cursor, advance) {\n if (offsetLeft === 0)\n return true;\n if (offsetLeft === 1) {\n --offsetLeft;\n return false;\n }\n advance(function () {\n cursor.advance(offsetLeft);\n offsetLeft = 0;\n });\n return false;\n };\n });\n }\n else {\n addReplayFilter(ctx, function () {\n var offsetLeft = offset;\n return function () { return (--offsetLeft < 0); };\n });\n }\n return this;\n };\n Collection.prototype.limit = function (numRows) {\n this._ctx.limit = Math.min(this._ctx.limit, numRows);\n addReplayFilter(this._ctx, function () {\n var rowsLeft = numRows;\n return function (cursor, advance, resolve) {\n if (--rowsLeft <= 0)\n advance(resolve);\n return rowsLeft >= 0;\n };\n }, true);\n return this;\n };\n Collection.prototype.until = function (filterFunction, bIncludeStopEntry) {\n addFilter(this._ctx, function (cursor, advance, resolve) {\n if (filterFunction(cursor.value)) {\n advance(resolve);\n return bIncludeStopEntry;\n }\n else {\n return true;\n }\n });\n return this;\n };\n Collection.prototype.first = function (cb) {\n return this.limit(1).toArray(function (a) { return a[0]; }).then(cb);\n };\n Collection.prototype.last = function (cb) {\n return this.reverse().first(cb);\n };\n Collection.prototype.filter = function (filterFunction) {\n addFilter(this._ctx, function (cursor) {\n return filterFunction(cursor.value);\n });\n addMatchFilter(this._ctx, filterFunction);\n return this;\n };\n Collection.prototype.and = function (filter) {\n return this.filter(filter);\n };\n Collection.prototype.or = function (indexName) {\n return new this.db.WhereClause(this._ctx.table, indexName, this);\n };\n Collection.prototype.reverse = function () {\n this._ctx.dir = (this._ctx.dir === \"prev\" ? \"next\" : \"prev\");\n if (this._ondirectionchange)\n this._ondirectionchange(this._ctx.dir);\n return this;\n };\n Collection.prototype.desc = function () {\n return this.reverse();\n };\n Collection.prototype.eachKey = function (cb) {\n var ctx = this._ctx;\n ctx.keysOnly = !ctx.isMatch;\n return this.each(function (val, cursor) { cb(cursor.key, cursor); });\n };\n Collection.prototype.eachUniqueKey = function (cb) {\n this._ctx.unique = \"unique\";\n return this.eachKey(cb);\n };\n Collection.prototype.eachPrimaryKey = function (cb) {\n var ctx = this._ctx;\n ctx.keysOnly = !ctx.isMatch;\n return this.each(function (val, cursor) { cb(cursor.primaryKey, cursor); });\n };\n Collection.prototype.keys = function (cb) {\n var ctx = this._ctx;\n ctx.keysOnly = !ctx.isMatch;\n var a = [];\n return this.each(function (item, cursor) {\n a.push(cursor.key);\n }).then(function () {\n return a;\n }).then(cb);\n };\n Collection.prototype.primaryKeys = function (cb) {\n var ctx = this._ctx;\n if (ctx.dir === 'next' && isPlainKeyRange(ctx, true) && ctx.limit > 0) {\n return this._read(function (trans) {\n var index = getIndexOrStore(ctx, ctx.table.core.schema);\n return ctx.table.core.query({\n trans: trans,\n values: false,\n limit: ctx.limit,\n query: {\n index: index,\n range: ctx.range\n }\n });\n }).then(function (_a) {\n var result = _a.result;\n return result;\n }).then(cb);\n }\n ctx.keysOnly = !ctx.isMatch;\n var a = [];\n return this.each(function (item, cursor) {\n a.push(cursor.primaryKey);\n }).then(function () {\n return a;\n }).then(cb);\n };\n Collection.prototype.uniqueKeys = function (cb) {\n this._ctx.unique = \"unique\";\n return this.keys(cb);\n };\n Collection.prototype.firstKey = function (cb) {\n return this.limit(1).keys(function (a) { return a[0]; }).then(cb);\n };\n Collection.prototype.lastKey = function (cb) {\n return this.reverse().firstKey(cb);\n };\n Collection.prototype.distinct = function () {\n var ctx = this._ctx, idx = ctx.index && ctx.table.schema.idxByName[ctx.index];\n if (!idx || !idx.multi)\n return this;\n var set = {};\n addFilter(this._ctx, function (cursor) {\n var strKey = cursor.primaryKey.toString();\n var found = hasOwn(set, strKey);\n set[strKey] = true;\n return !found;\n });\n return this;\n };\n Collection.prototype.modify = function (changes) {\n var _this = this;\n var ctx = this._ctx;\n return this._write(function (trans) {\n var modifyer;\n if (typeof changes === 'function') {\n modifyer = changes;\n }\n else {\n var keyPaths = keys(changes);\n var numKeys = keyPaths.length;\n modifyer = function (item) {\n var anythingModified = false;\n for (var i = 0; i < numKeys; ++i) {\n var keyPath = keyPaths[i], val = changes[keyPath];\n if (getByKeyPath(item, keyPath) !== val) {\n setByKeyPath(item, keyPath, val);\n anythingModified = true;\n }\n }\n return anythingModified;\n };\n }\n var coreTable = ctx.table.core;\n var _a = coreTable.schema.primaryKey, outbound = _a.outbound, extractKey = _a.extractKey;\n var limit = _this.db._options.modifyChunkSize || 200;\n var totalFailures = [];\n var successCount = 0;\n var failedKeys = [];\n var applyMutateResult = function (expectedCount, res) {\n var failures = res.failures, numFailures = res.numFailures;\n successCount += expectedCount - numFailures;\n for (var _i = 0, _a = keys(failures); _i < _a.length; _i++) {\n var pos = _a[_i];\n totalFailures.push(failures[pos]);\n }\n };\n return _this.clone().primaryKeys().then(function (keys) {\n var nextChunk = function (offset) {\n var count = Math.min(limit, keys.length - offset);\n return coreTable.getMany({\n trans: trans,\n keys: keys.slice(offset, offset + count),\n cache: \"immutable\"\n }).then(function (values) {\n var addValues = [];\n var putValues = [];\n var putKeys = outbound ? [] : null;\n var deleteKeys = [];\n for (var i = 0; i < count; ++i) {\n var origValue = values[i];\n var ctx_1 = {\n value: deepClone(origValue),\n primKey: keys[offset + i]\n };\n if (modifyer.call(ctx_1, ctx_1.value, ctx_1) !== false) {\n if (ctx_1.value == null) {\n deleteKeys.push(keys[offset + i]);\n }\n else if (!outbound && cmp(extractKey(origValue), extractKey(ctx_1.value)) !== 0) {\n deleteKeys.push(keys[offset + i]);\n addValues.push(ctx_1.value);\n }\n else {\n putValues.push(ctx_1.value);\n if (outbound)\n putKeys.push(keys[offset + i]);\n }\n }\n }\n var criteria = isPlainKeyRange(ctx) &&\n ctx.limit === Infinity &&\n (typeof changes !== 'function' || changes === deleteCallback) && {\n index: ctx.index,\n range: ctx.range\n };\n return Promise.resolve(addValues.length > 0 &&\n coreTable.mutate({ trans: trans, type: 'add', values: addValues })\n .then(function (res) {\n for (var pos in res.failures) {\n deleteKeys.splice(parseInt(pos), 1);\n }\n applyMutateResult(addValues.length, res);\n })).then(function () { return (putValues.length > 0 || (criteria && typeof changes === 'object')) &&\n coreTable.mutate({\n trans: trans,\n type: 'put',\n keys: putKeys,\n values: putValues,\n criteria: criteria,\n changeSpec: typeof changes !== 'function'\n && changes\n }).then(function (res) { return applyMutateResult(putValues.length, res); }); }).then(function () { return (deleteKeys.length > 0 || (criteria && changes === deleteCallback)) &&\n coreTable.mutate({\n trans: trans,\n type: 'delete',\n keys: deleteKeys,\n criteria: criteria\n }).then(function (res) { return applyMutateResult(deleteKeys.length, res); }); }).then(function () {\n return keys.length > offset + count && nextChunk(offset + limit);\n });\n });\n };\n return nextChunk(0).then(function () {\n if (totalFailures.length > 0)\n throw new ModifyError(\"Error modifying one or more objects\", totalFailures, successCount, failedKeys);\n return keys.length;\n });\n });\n });\n };\n Collection.prototype.delete = function () {\n var ctx = this._ctx, range = ctx.range;\n if (isPlainKeyRange(ctx) &&\n ((ctx.isPrimKey && !hangsOnDeleteLargeKeyRange) || range.type === 3 ))\n {\n return this._write(function (trans) {\n var primaryKey = ctx.table.core.schema.primaryKey;\n var coreRange = range;\n return ctx.table.core.count({ trans: trans, query: { index: primaryKey, range: coreRange } }).then(function (count) {\n return ctx.table.core.mutate({ trans: trans, type: 'deleteRange', range: coreRange })\n .then(function (_a) {\n var failures = _a.failures; _a.lastResult; _a.results; var numFailures = _a.numFailures;\n if (numFailures)\n throw new ModifyError(\"Could not delete some values\", Object.keys(failures).map(function (pos) { return failures[pos]; }), count - numFailures);\n return count - numFailures;\n });\n });\n });\n }\n return this.modify(deleteCallback);\n };\n return Collection;\n}());\nvar deleteCallback = function (value, ctx) { return ctx.value = null; };\n\nfunction createCollectionConstructor(db) {\n return makeClassConstructor(Collection.prototype, function Collection(whereClause, keyRangeGenerator) {\n this.db = db;\n var keyRange = AnyRange, error = null;\n if (keyRangeGenerator)\n try {\n keyRange = keyRangeGenerator();\n }\n catch (ex) {\n error = ex;\n }\n var whereCtx = whereClause._ctx;\n var table = whereCtx.table;\n var readingHook = table.hook.reading.fire;\n this._ctx = {\n table: table,\n index: whereCtx.index,\n isPrimKey: (!whereCtx.index || (table.schema.primKey.keyPath && whereCtx.index === table.schema.primKey.name)),\n range: keyRange,\n keysOnly: false,\n dir: \"next\",\n unique: \"\",\n algorithm: null,\n filter: null,\n replayFilter: null,\n justLimit: true,\n isMatch: null,\n offset: 0,\n limit: Infinity,\n error: error,\n or: whereCtx.or,\n valueMapper: readingHook !== mirror ? readingHook : null\n };\n });\n}\n\nfunction simpleCompare(a, b) {\n return a < b ? -1 : a === b ? 0 : 1;\n}\nfunction simpleCompareReverse(a, b) {\n return a > b ? -1 : a === b ? 0 : 1;\n}\n\nfunction fail(collectionOrWhereClause, err, T) {\n var collection = collectionOrWhereClause instanceof WhereClause ?\n new collectionOrWhereClause.Collection(collectionOrWhereClause) :\n collectionOrWhereClause;\n collection._ctx.error = T ? new T(err) : new TypeError(err);\n return collection;\n}\nfunction emptyCollection(whereClause) {\n return new whereClause.Collection(whereClause, function () { return rangeEqual(\"\"); }).limit(0);\n}\nfunction upperFactory(dir) {\n return dir === \"next\" ?\n function (s) { return s.toUpperCase(); } :\n function (s) { return s.toLowerCase(); };\n}\nfunction lowerFactory(dir) {\n return dir === \"next\" ?\n function (s) { return s.toLowerCase(); } :\n function (s) { return s.toUpperCase(); };\n}\nfunction nextCasing(key, lowerKey, upperNeedle, lowerNeedle, cmp, dir) {\n var length = Math.min(key.length, lowerNeedle.length);\n var llp = -1;\n for (var i = 0; i < length; ++i) {\n var lwrKeyChar = lowerKey[i];\n if (lwrKeyChar !== lowerNeedle[i]) {\n if (cmp(key[i], upperNeedle[i]) < 0)\n return key.substr(0, i) + upperNeedle[i] + upperNeedle.substr(i + 1);\n if (cmp(key[i], lowerNeedle[i]) < 0)\n return key.substr(0, i) + lowerNeedle[i] + upperNeedle.substr(i + 1);\n if (llp >= 0)\n return key.substr(0, llp) + lowerKey[llp] + upperNeedle.substr(llp + 1);\n return null;\n }\n if (cmp(key[i], lwrKeyChar) < 0)\n llp = i;\n }\n if (length < lowerNeedle.length && dir === \"next\")\n return key + upperNeedle.substr(key.length);\n if (length < key.length && dir === \"prev\")\n return key.substr(0, upperNeedle.length);\n return (llp < 0 ? null : key.substr(0, llp) + lowerNeedle[llp] + upperNeedle.substr(llp + 1));\n}\nfunction addIgnoreCaseAlgorithm(whereClause, match, needles, suffix) {\n var upper, lower, compare, upperNeedles, lowerNeedles, direction, nextKeySuffix, needlesLen = needles.length;\n if (!needles.every(function (s) { return typeof s === 'string'; })) {\n return fail(whereClause, STRING_EXPECTED);\n }\n function initDirection(dir) {\n upper = upperFactory(dir);\n lower = lowerFactory(dir);\n compare = (dir === \"next\" ? simpleCompare : simpleCompareReverse);\n var needleBounds = needles.map(function (needle) {\n return { lower: lower(needle), upper: upper(needle) };\n }).sort(function (a, b) {\n return compare(a.lower, b.lower);\n });\n upperNeedles = needleBounds.map(function (nb) { return nb.upper; });\n lowerNeedles = needleBounds.map(function (nb) { return nb.lower; });\n direction = dir;\n nextKeySuffix = (dir === \"next\" ? \"\" : suffix);\n }\n initDirection(\"next\");\n var c = new whereClause.Collection(whereClause, function () { return createRange(upperNeedles[0], lowerNeedles[needlesLen - 1] + suffix); });\n c._ondirectionchange = function (direction) {\n initDirection(direction);\n };\n var firstPossibleNeedle = 0;\n c._addAlgorithm(function (cursor, advance, resolve) {\n var key = cursor.key;\n if (typeof key !== 'string')\n return false;\n var lowerKey = lower(key);\n if (match(lowerKey, lowerNeedles, firstPossibleNeedle)) {\n return true;\n }\n else {\n var lowestPossibleCasing = null;\n for (var i = firstPossibleNeedle; i < needlesLen; ++i) {\n var casing = nextCasing(key, lowerKey, upperNeedles[i], lowerNeedles[i], compare, direction);\n if (casing === null && lowestPossibleCasing === null)\n firstPossibleNeedle = i + 1;\n else if (lowestPossibleCasing === null || compare(lowestPossibleCasing, casing) > 0) {\n lowestPossibleCasing = casing;\n }\n }\n if (lowestPossibleCasing !== null) {\n advance(function () { cursor.continue(lowestPossibleCasing + nextKeySuffix); });\n }\n else {\n advance(resolve);\n }\n return false;\n }\n });\n return c;\n}\nfunction createRange(lower, upper, lowerOpen, upperOpen) {\n return {\n type: 2 ,\n lower: lower,\n upper: upper,\n lowerOpen: lowerOpen,\n upperOpen: upperOpen\n };\n}\nfunction rangeEqual(value) {\n return {\n type: 1 ,\n lower: value,\n upper: value\n };\n}\n\nvar WhereClause = (function () {\n function WhereClause() {\n }\n Object.defineProperty(WhereClause.prototype, \"Collection\", {\n get: function () {\n return this._ctx.table.db.Collection;\n },\n enumerable: false,\n configurable: true\n });\n WhereClause.prototype.between = function (lower, upper, includeLower, includeUpper) {\n includeLower = includeLower !== false;\n includeUpper = includeUpper === true;\n try {\n if ((this._cmp(lower, upper) > 0) ||\n (this._cmp(lower, upper) === 0 && (includeLower || includeUpper) && !(includeLower && includeUpper)))\n return emptyCollection(this);\n return new this.Collection(this, function () { return createRange(lower, upper, !includeLower, !includeUpper); });\n }\n catch (e) {\n return fail(this, INVALID_KEY_ARGUMENT);\n }\n };\n WhereClause.prototype.equals = function (value) {\n if (value == null)\n return fail(this, INVALID_KEY_ARGUMENT);\n return new this.Collection(this, function () { return rangeEqual(value); });\n };\n WhereClause.prototype.above = function (value) {\n if (value == null)\n return fail(this, INVALID_KEY_ARGUMENT);\n return new this.Collection(this, function () { return createRange(value, undefined, true); });\n };\n WhereClause.prototype.aboveOrEqual = function (value) {\n if (value == null)\n return fail(this, INVALID_KEY_ARGUMENT);\n return new this.Collection(this, function () { return createRange(value, undefined, false); });\n };\n WhereClause.prototype.below = function (value) {\n if (value == null)\n return fail(this, INVALID_KEY_ARGUMENT);\n return new this.Collection(this, function () { return createRange(undefined, value, false, true); });\n };\n WhereClause.prototype.belowOrEqual = function (value) {\n if (value == null)\n return fail(this, INVALID_KEY_ARGUMENT);\n return new this.Collection(this, function () { return createRange(undefined, value); });\n };\n WhereClause.prototype.startsWith = function (str) {\n if (typeof str !== 'string')\n return fail(this, STRING_EXPECTED);\n return this.between(str, str + maxString, true, true);\n };\n WhereClause.prototype.startsWithIgnoreCase = function (str) {\n if (str === \"\")\n return this.startsWith(str);\n return addIgnoreCaseAlgorithm(this, function (x, a) { return x.indexOf(a[0]) === 0; }, [str], maxString);\n };\n WhereClause.prototype.equalsIgnoreCase = function (str) {\n return addIgnoreCaseAlgorithm(this, function (x, a) { return x === a[0]; }, [str], \"\");\n };\n WhereClause.prototype.anyOfIgnoreCase = function () {\n var set = getArrayOf.apply(NO_CHAR_ARRAY, arguments);\n if (set.length === 0)\n return emptyCollection(this);\n return addIgnoreCaseAlgorithm(this, function (x, a) { return a.indexOf(x) !== -1; }, set, \"\");\n };\n WhereClause.prototype.startsWithAnyOfIgnoreCase = function () {\n var set = getArrayOf.apply(NO_CHAR_ARRAY, arguments);\n if (set.length === 0)\n return emptyCollection(this);\n return addIgnoreCaseAlgorithm(this, function (x, a) { return a.some(function (n) { return x.indexOf(n) === 0; }); }, set, maxString);\n };\n WhereClause.prototype.anyOf = function () {\n var _this = this;\n var set = getArrayOf.apply(NO_CHAR_ARRAY, arguments);\n var compare = this._cmp;\n try {\n set.sort(compare);\n }\n catch (e) {\n return fail(this, INVALID_KEY_ARGUMENT);\n }\n if (set.length === 0)\n return emptyCollection(this);\n var c = new this.Collection(this, function () { return createRange(set[0], set[set.length - 1]); });\n c._ondirectionchange = function (direction) {\n compare = (direction === \"next\" ?\n _this._ascending :\n _this._descending);\n set.sort(compare);\n };\n var i = 0;\n c._addAlgorithm(function (cursor, advance, resolve) {\n var key = cursor.key;\n while (compare(key, set[i]) > 0) {\n ++i;\n if (i === set.length) {\n advance(resolve);\n return false;\n }\n }\n if (compare(key, set[i]) === 0) {\n return true;\n }\n else {\n advance(function () { cursor.continue(set[i]); });\n return false;\n }\n });\n return c;\n };\n WhereClause.prototype.notEqual = function (value) {\n return this.inAnyRange([[minKey, value], [value, this.db._maxKey]], { includeLowers: false, includeUppers: false });\n };\n WhereClause.prototype.noneOf = function () {\n var set = getArrayOf.apply(NO_CHAR_ARRAY, arguments);\n if (set.length === 0)\n return new this.Collection(this);\n try {\n set.sort(this._ascending);\n }\n catch (e) {\n return fail(this, INVALID_KEY_ARGUMENT);\n }\n var ranges = set.reduce(function (res, val) { return res ?\n res.concat([[res[res.length - 1][1], val]]) :\n [[minKey, val]]; }, null);\n ranges.push([set[set.length - 1], this.db._maxKey]);\n return this.inAnyRange(ranges, { includeLowers: false, includeUppers: false });\n };\n WhereClause.prototype.inAnyRange = function (ranges, options) {\n var _this = this;\n var cmp = this._cmp, ascending = this._ascending, descending = this._descending, min = this._min, max = this._max;\n if (ranges.length === 0)\n return emptyCollection(this);\n if (!ranges.every(function (range) {\n return range[0] !== undefined &&\n range[1] !== undefined &&\n ascending(range[0], range[1]) <= 0;\n })) {\n return fail(this, \"First argument to inAnyRange() must be an Array of two-value Arrays [lower,upper] where upper must not be lower than lower\", exceptions.InvalidArgument);\n }\n var includeLowers = !options || options.includeLowers !== false;\n var includeUppers = options && options.includeUppers === true;\n function addRange(ranges, newRange) {\n var i = 0, l = ranges.length;\n for (; i < l; ++i) {\n var range = ranges[i];\n if (cmp(newRange[0], range[1]) < 0 && cmp(newRange[1], range[0]) > 0) {\n range[0] = min(range[0], newRange[0]);\n range[1] = max(range[1], newRange[1]);\n break;\n }\n }\n if (i === l)\n ranges.push(newRange);\n return ranges;\n }\n var sortDirection = ascending;\n function rangeSorter(a, b) { return sortDirection(a[0], b[0]); }\n var set;\n try {\n set = ranges.reduce(addRange, []);\n set.sort(rangeSorter);\n }\n catch (ex) {\n return fail(this, INVALID_KEY_ARGUMENT);\n }\n var rangePos = 0;\n var keyIsBeyondCurrentEntry = includeUppers ?\n function (key) { return ascending(key, set[rangePos][1]) > 0; } :\n function (key) { return ascending(key, set[rangePos][1]) >= 0; };\n var keyIsBeforeCurrentEntry = includeLowers ?\n function (key) { return descending(key, set[rangePos][0]) > 0; } :\n function (key) { return descending(key, set[rangePos][0]) >= 0; };\n function keyWithinCurrentRange(key) {\n return !keyIsBeyondCurrentEntry(key) && !keyIsBeforeCurrentEntry(key);\n }\n var checkKey = keyIsBeyondCurrentEntry;\n var c = new this.Collection(this, function () { return createRange(set[0][0], set[set.length - 1][1], !includeLowers, !includeUppers); });\n c._ondirectionchange = function (direction) {\n if (direction === \"next\") {\n checkKey = keyIsBeyondCurrentEntry;\n sortDirection = ascending;\n }\n else {\n checkKey = keyIsBeforeCurrentEntry;\n sortDirection = descending;\n }\n set.sort(rangeSorter);\n };\n c._addAlgorithm(function (cursor, advance, resolve) {\n var key = cursor.key;\n while (checkKey(key)) {\n ++rangePos;\n if (rangePos === set.length) {\n advance(resolve);\n return false;\n }\n }\n if (keyWithinCurrentRange(key)) {\n return true;\n }\n else if (_this._cmp(key, set[rangePos][1]) === 0 || _this._cmp(key, set[rangePos][0]) === 0) {\n return false;\n }\n else {\n advance(function () {\n if (sortDirection === ascending)\n cursor.continue(set[rangePos][0]);\n else\n cursor.continue(set[rangePos][1]);\n });\n return false;\n }\n });\n return c;\n };\n WhereClause.prototype.startsWithAnyOf = function () {\n var set = getArrayOf.apply(NO_CHAR_ARRAY, arguments);\n if (!set.every(function (s) { return typeof s === 'string'; })) {\n return fail(this, \"startsWithAnyOf() only works with strings\");\n }\n if (set.length === 0)\n return emptyCollection(this);\n return this.inAnyRange(set.map(function (str) { return [str, str + maxString]; }));\n };\n return WhereClause;\n}());\n\nfunction createWhereClauseConstructor(db) {\n return makeClassConstructor(WhereClause.prototype, function WhereClause(table, index, orCollection) {\n this.db = db;\n this._ctx = {\n table: table,\n index: index === \":id\" ? null : index,\n or: orCollection\n };\n var indexedDB = db._deps.indexedDB;\n if (!indexedDB)\n throw new exceptions.MissingAPI();\n this._cmp = this._ascending = indexedDB.cmp.bind(indexedDB);\n this._descending = function (a, b) { return indexedDB.cmp(b, a); };\n this._max = function (a, b) { return indexedDB.cmp(a, b) > 0 ? a : b; };\n this._min = function (a, b) { return indexedDB.cmp(a, b) < 0 ? a : b; };\n this._IDBKeyRange = db._deps.IDBKeyRange;\n });\n}\n\nfunction eventRejectHandler(reject) {\n return wrap(function (event) {\n preventDefault(event);\n reject(event.target.error);\n return false;\n });\n}\nfunction preventDefault(event) {\n if (event.stopPropagation)\n event.stopPropagation();\n if (event.preventDefault)\n event.preventDefault();\n}\n\nvar DEXIE_STORAGE_MUTATED_EVENT_NAME = 'storagemutated';\nvar STORAGE_MUTATED_DOM_EVENT_NAME = 'x-storagemutated-1';\nvar globalEvents = Events(null, DEXIE_STORAGE_MUTATED_EVENT_NAME);\n\nvar Transaction = (function () {\n function Transaction() {\n }\n Transaction.prototype._lock = function () {\n assert(!PSD.global);\n ++this._reculock;\n if (this._reculock === 1 && !PSD.global)\n PSD.lockOwnerFor = this;\n return this;\n };\n Transaction.prototype._unlock = function () {\n assert(!PSD.global);\n if (--this._reculock === 0) {\n if (!PSD.global)\n PSD.lockOwnerFor = null;\n while (this._blockedFuncs.length > 0 && !this._locked()) {\n var fnAndPSD = this._blockedFuncs.shift();\n try {\n usePSD(fnAndPSD[1], fnAndPSD[0]);\n }\n catch (e) { }\n }\n }\n return this;\n };\n Transaction.prototype._locked = function () {\n return this._reculock && PSD.lockOwnerFor !== this;\n };\n Transaction.prototype.create = function (idbtrans) {\n var _this = this;\n if (!this.mode)\n return this;\n var idbdb = this.db.idbdb;\n var dbOpenError = this.db._state.dbOpenError;\n assert(!this.idbtrans);\n if (!idbtrans && !idbdb) {\n switch (dbOpenError && dbOpenError.name) {\n case \"DatabaseClosedError\":\n throw new exceptions.DatabaseClosed(dbOpenError);\n case \"MissingAPIError\":\n throw new exceptions.MissingAPI(dbOpenError.message, dbOpenError);\n default:\n throw new exceptions.OpenFailed(dbOpenError);\n }\n }\n if (!this.active)\n throw new exceptions.TransactionInactive();\n assert(this._completion._state === null);\n idbtrans = this.idbtrans = idbtrans ||\n (this.db.core\n ? this.db.core.transaction(this.storeNames, this.mode, { durability: this.chromeTransactionDurability })\n : idbdb.transaction(this.storeNames, this.mode, { durability: this.chromeTransactionDurability }));\n idbtrans.onerror = wrap(function (ev) {\n preventDefault(ev);\n _this._reject(idbtrans.error);\n });\n idbtrans.onabort = wrap(function (ev) {\n preventDefault(ev);\n _this.active && _this._reject(new exceptions.Abort(idbtrans.error));\n _this.active = false;\n _this.on(\"abort\").fire(ev);\n });\n idbtrans.oncomplete = wrap(function () {\n _this.active = false;\n _this._resolve();\n if ('mutatedParts' in idbtrans) {\n globalEvents.storagemutated.fire(idbtrans[\"mutatedParts\"]);\n }\n });\n return this;\n };\n Transaction.prototype._promise = function (mode, fn, bWriteLock) {\n var _this = this;\n if (mode === 'readwrite' && this.mode !== 'readwrite')\n return rejection(new exceptions.ReadOnly(\"Transaction is readonly\"));\n if (!this.active)\n return rejection(new exceptions.TransactionInactive());\n if (this._locked()) {\n return new DexiePromise(function (resolve, reject) {\n _this._blockedFuncs.push([function () {\n _this._promise(mode, fn, bWriteLock).then(resolve, reject);\n }, PSD]);\n });\n }\n else if (bWriteLock) {\n return newScope(function () {\n var p = new DexiePromise(function (resolve, reject) {\n _this._lock();\n var rv = fn(resolve, reject, _this);\n if (rv && rv.then)\n rv.then(resolve, reject);\n });\n p.finally(function () { return _this._unlock(); });\n p._lib = true;\n return p;\n });\n }\n else {\n var p = new DexiePromise(function (resolve, reject) {\n var rv = fn(resolve, reject, _this);\n if (rv && rv.then)\n rv.then(resolve, reject);\n });\n p._lib = true;\n return p;\n }\n };\n Transaction.prototype._root = function () {\n return this.parent ? this.parent._root() : this;\n };\n Transaction.prototype.waitFor = function (promiseLike) {\n var root = this._root();\n var promise = DexiePromise.resolve(promiseLike);\n if (root._waitingFor) {\n root._waitingFor = root._waitingFor.then(function () { return promise; });\n }\n else {\n root._waitingFor = promise;\n root._waitingQueue = [];\n var store = root.idbtrans.objectStore(root.storeNames[0]);\n (function spin() {\n ++root._spinCount;\n while (root._waitingQueue.length)\n (root._waitingQueue.shift())();\n if (root._waitingFor)\n store.get(-Infinity).onsuccess = spin;\n }());\n }\n var currentWaitPromise = root._waitingFor;\n return new DexiePromise(function (resolve, reject) {\n promise.then(function (res) { return root._waitingQueue.push(wrap(resolve.bind(null, res))); }, function (err) { return root._waitingQueue.push(wrap(reject.bind(null, err))); }).finally(function () {\n if (root._waitingFor === currentWaitPromise) {\n root._waitingFor = null;\n }\n });\n });\n };\n Transaction.prototype.abort = function () {\n if (this.active) {\n this.active = false;\n if (this.idbtrans)\n this.idbtrans.abort();\n this._reject(new exceptions.Abort());\n }\n };\n Transaction.prototype.table = function (tableName) {\n var memoizedTables = (this._memoizedTables || (this._memoizedTables = {}));\n if (hasOwn(memoizedTables, tableName))\n return memoizedTables[tableName];\n var tableSchema = this.schema[tableName];\n if (!tableSchema) {\n throw new exceptions.NotFound(\"Table \" + tableName + \" not part of transaction\");\n }\n var transactionBoundTable = new this.db.Table(tableName, tableSchema, this);\n transactionBoundTable.core = this.db.core.table(tableName);\n memoizedTables[tableName] = transactionBoundTable;\n return transactionBoundTable;\n };\n return Transaction;\n}());\n\nfunction createTransactionConstructor(db) {\n return makeClassConstructor(Transaction.prototype, function Transaction(mode, storeNames, dbschema, chromeTransactionDurability, parent) {\n var _this = this;\n this.db = db;\n this.mode = mode;\n this.storeNames = storeNames;\n this.schema = dbschema;\n this.chromeTransactionDurability = chromeTransactionDurability;\n this.idbtrans = null;\n this.on = Events(this, \"complete\", \"error\", \"abort\");\n this.parent = parent || null;\n this.active = true;\n this._reculock = 0;\n this._blockedFuncs = [];\n this._resolve = null;\n this._reject = null;\n this._waitingFor = null;\n this._waitingQueue = null;\n this._spinCount = 0;\n this._completion = new DexiePromise(function (resolve, reject) {\n _this._resolve = resolve;\n _this._reject = reject;\n });\n this._completion.then(function () {\n _this.active = false;\n _this.on.complete.fire();\n }, function (e) {\n var wasActive = _this.active;\n _this.active = false;\n _this.on.error.fire(e);\n _this.parent ?\n _this.parent._reject(e) :\n wasActive && _this.idbtrans && _this.idbtrans.abort();\n return rejection(e);\n });\n });\n}\n\nfunction createIndexSpec(name, keyPath, unique, multi, auto, compound, isPrimKey) {\n return {\n name: name,\n keyPath: keyPath,\n unique: unique,\n multi: multi,\n auto: auto,\n compound: compound,\n src: (unique && !isPrimKey ? '&' : '') + (multi ? '*' : '') + (auto ? \"++\" : \"\") + nameFromKeyPath(keyPath)\n };\n}\nfunction nameFromKeyPath(keyPath) {\n return typeof keyPath === 'string' ?\n keyPath :\n keyPath ? ('[' + [].join.call(keyPath, '+') + ']') : \"\";\n}\n\nfunction createTableSchema(name, primKey, indexes) {\n return {\n name: name,\n primKey: primKey,\n indexes: indexes,\n mappedClass: null,\n idxByName: arrayToObject(indexes, function (index) { return [index.name, index]; })\n };\n}\n\nfunction safariMultiStoreFix(storeNames) {\n return storeNames.length === 1 ? storeNames[0] : storeNames;\n}\nvar getMaxKey = function (IdbKeyRange) {\n try {\n IdbKeyRange.only([[]]);\n getMaxKey = function () { return [[]]; };\n return [[]];\n }\n catch (e) {\n getMaxKey = function () { return maxString; };\n return maxString;\n }\n};\n\nfunction getKeyExtractor(keyPath) {\n if (keyPath == null) {\n return function () { return undefined; };\n }\n else if (typeof keyPath === 'string') {\n return getSinglePathKeyExtractor(keyPath);\n }\n else {\n return function (obj) { return getByKeyPath(obj, keyPath); };\n }\n}\nfunction getSinglePathKeyExtractor(keyPath) {\n var split = keyPath.split('.');\n if (split.length === 1) {\n return function (obj) { return obj[keyPath]; };\n }\n else {\n return function (obj) { return getByKeyPath(obj, keyPath); };\n }\n}\n\nfunction arrayify(arrayLike) {\n return [].slice.call(arrayLike);\n}\nvar _id_counter = 0;\nfunction getKeyPathAlias(keyPath) {\n return keyPath == null ?\n \":id\" :\n typeof keyPath === 'string' ?\n keyPath :\n \"[\" + keyPath.join('+') + \"]\";\n}\nfunction createDBCore(db, IdbKeyRange, tmpTrans) {\n function extractSchema(db, trans) {\n var tables = arrayify(db.objectStoreNames);\n return {\n schema: {\n name: db.name,\n tables: tables.map(function (table) { return trans.objectStore(table); }).map(function (store) {\n var keyPath = store.keyPath, autoIncrement = store.autoIncrement;\n var compound = isArray(keyPath);\n var outbound = keyPath == null;\n var indexByKeyPath = {};\n var result = {\n name: store.name,\n primaryKey: {\n name: null,\n isPrimaryKey: true,\n outbound: outbound,\n compound: compound,\n keyPath: keyPath,\n autoIncrement: autoIncrement,\n unique: true,\n extractKey: getKeyExtractor(keyPath)\n },\n indexes: arrayify(store.indexNames).map(function (indexName) { return store.index(indexName); })\n .map(function (index) {\n var name = index.name, unique = index.unique, multiEntry = index.multiEntry, keyPath = index.keyPath;\n var compound = isArray(keyPath);\n var result = {\n name: name,\n compound: compound,\n keyPath: keyPath,\n unique: unique,\n multiEntry: multiEntry,\n extractKey: getKeyExtractor(keyPath)\n };\n indexByKeyPath[getKeyPathAlias(keyPath)] = result;\n return result;\n }),\n getIndexByKeyPath: function (keyPath) { return indexByKeyPath[getKeyPathAlias(keyPath)]; }\n };\n indexByKeyPath[\":id\"] = result.primaryKey;\n if (keyPath != null) {\n indexByKeyPath[getKeyPathAlias(keyPath)] = result.primaryKey;\n }\n return result;\n })\n },\n hasGetAll: tables.length > 0 && ('getAll' in trans.objectStore(tables[0])) &&\n !(typeof navigator !== 'undefined' && /Safari/.test(navigator.userAgent) &&\n !/(Chrome\\/|Edge\\/)/.test(navigator.userAgent) &&\n [].concat(navigator.userAgent.match(/Safari\\/(\\d*)/))[1] < 604)\n };\n }\n function makeIDBKeyRange(range) {\n if (range.type === 3 )\n return null;\n if (range.type === 4 )\n throw new Error(\"Cannot convert never type to IDBKeyRange\");\n var lower = range.lower, upper = range.upper, lowerOpen = range.lowerOpen, upperOpen = range.upperOpen;\n var idbRange = lower === undefined ?\n upper === undefined ?\n null :\n IdbKeyRange.upperBound(upper, !!upperOpen) :\n upper === undefined ?\n IdbKeyRange.lowerBound(lower, !!lowerOpen) :\n IdbKeyRange.bound(lower, upper, !!lowerOpen, !!upperOpen);\n return idbRange;\n }\n function createDbCoreTable(tableSchema) {\n var tableName = tableSchema.name;\n function mutate(_a) {\n var trans = _a.trans, type = _a.type, keys = _a.keys, values = _a.values, range = _a.range;\n return new Promise(function (resolve, reject) {\n resolve = wrap(resolve);\n var store = trans.objectStore(tableName);\n var outbound = store.keyPath == null;\n var isAddOrPut = type === \"put\" || type === \"add\";\n if (!isAddOrPut && type !== 'delete' && type !== 'deleteRange')\n throw new Error(\"Invalid operation type: \" + type);\n var length = (keys || values || { length: 1 }).length;\n if (keys && values && keys.length !== values.length) {\n throw new Error(\"Given keys array must have same length as given values array.\");\n }\n if (length === 0)\n return resolve({ numFailures: 0, failures: {}, results: [], lastResult: undefined });\n var req;\n var reqs = [];\n var failures = [];\n var numFailures = 0;\n var errorHandler = function (event) {\n ++numFailures;\n preventDefault(event);\n };\n if (type === 'deleteRange') {\n if (range.type === 4 )\n return resolve({ numFailures: numFailures, failures: failures, results: [], lastResult: undefined });\n if (range.type === 3 )\n reqs.push(req = store.clear());\n else\n reqs.push(req = store.delete(makeIDBKeyRange(range)));\n }\n else {\n var _a = isAddOrPut ?\n outbound ?\n [values, keys] :\n [values, null] :\n [keys, null], args1 = _a[0], args2 = _a[1];\n if (isAddOrPut) {\n for (var i = 0; i < length; ++i) {\n reqs.push(req = (args2 && args2[i] !== undefined ?\n store[type](args1[i], args2[i]) :\n store[type](args1[i])));\n req.onerror = errorHandler;\n }\n }\n else {\n for (var i = 0; i < length; ++i) {\n reqs.push(req = store[type](args1[i]));\n req.onerror = errorHandler;\n }\n }\n }\n var done = function (event) {\n var lastResult = event.target.result;\n reqs.forEach(function (req, i) { return req.error != null && (failures[i] = req.error); });\n resolve({\n numFailures: numFailures,\n failures: failures,\n results: type === \"delete\" ? keys : reqs.map(function (req) { return req.result; }),\n lastResult: lastResult\n });\n };\n req.onerror = function (event) {\n errorHandler(event);\n done(event);\n };\n req.onsuccess = done;\n });\n }\n function openCursor(_a) {\n var trans = _a.trans, values = _a.values, query = _a.query, reverse = _a.reverse, unique = _a.unique;\n return new Promise(function (resolve, reject) {\n resolve = wrap(resolve);\n var index = query.index, range = query.range;\n var store = trans.objectStore(tableName);\n var source = index.isPrimaryKey ?\n store :\n store.index(index.name);\n var direction = reverse ?\n unique ?\n \"prevunique\" :\n \"prev\" :\n unique ?\n \"nextunique\" :\n \"next\";\n var req = values || !('openKeyCursor' in source) ?\n source.openCursor(makeIDBKeyRange(range), direction) :\n source.openKeyCursor(makeIDBKeyRange(range), direction);\n req.onerror = eventRejectHandler(reject);\n req.onsuccess = wrap(function (ev) {\n var cursor = req.result;\n if (!cursor) {\n resolve(null);\n return;\n }\n cursor.___id = ++_id_counter;\n cursor.done = false;\n var _cursorContinue = cursor.continue.bind(cursor);\n var _cursorContinuePrimaryKey = cursor.continuePrimaryKey;\n if (_cursorContinuePrimaryKey)\n _cursorContinuePrimaryKey = _cursorContinuePrimaryKey.bind(cursor);\n var _cursorAdvance = cursor.advance.bind(cursor);\n var doThrowCursorIsNotStarted = function () { throw new Error(\"Cursor not started\"); };\n var doThrowCursorIsStopped = function () { throw new Error(\"Cursor not stopped\"); };\n cursor.trans = trans;\n cursor.stop = cursor.continue = cursor.continuePrimaryKey = cursor.advance = doThrowCursorIsNotStarted;\n cursor.fail = wrap(reject);\n cursor.next = function () {\n var _this = this;\n var gotOne = 1;\n return this.start(function () { return gotOne-- ? _this.continue() : _this.stop(); }).then(function () { return _this; });\n };\n cursor.start = function (callback) {\n var iterationPromise = new Promise(function (resolveIteration, rejectIteration) {\n resolveIteration = wrap(resolveIteration);\n req.onerror = eventRejectHandler(rejectIteration);\n cursor.fail = rejectIteration;\n cursor.stop = function (value) {\n cursor.stop = cursor.continue = cursor.continuePrimaryKey = cursor.advance = doThrowCursorIsStopped;\n resolveIteration(value);\n };\n });\n var guardedCallback = function () {\n if (req.result) {\n try {\n callback();\n }\n catch (err) {\n cursor.fail(err);\n }\n }\n else {\n cursor.done = true;\n cursor.start = function () { throw new Error(\"Cursor behind last entry\"); };\n cursor.stop();\n }\n };\n req.onsuccess = wrap(function (ev) {\n req.onsuccess = guardedCallback;\n guardedCallback();\n });\n cursor.continue = _cursorContinue;\n cursor.continuePrimaryKey = _cursorContinuePrimaryKey;\n cursor.advance = _cursorAdvance;\n guardedCallback();\n return iterationPromise;\n };\n resolve(cursor);\n }, reject);\n });\n }\n function query(hasGetAll) {\n return function (request) {\n return new Promise(function (resolve, reject) {\n resolve = wrap(resolve);\n var trans = request.trans, values = request.values, limit = request.limit, query = request.query;\n var nonInfinitLimit = limit === Infinity ? undefined : limit;\n var index = query.index, range = query.range;\n var store = trans.objectStore(tableName);\n var source = index.isPrimaryKey ? store : store.index(index.name);\n var idbKeyRange = makeIDBKeyRange(range);\n if (limit === 0)\n return resolve({ result: [] });\n if (hasGetAll) {\n var req = values ?\n source.getAll(idbKeyRange, nonInfinitLimit) :\n source.getAllKeys(idbKeyRange, nonInfinitLimit);\n req.onsuccess = function (event) { return resolve({ result: event.target.result }); };\n req.onerror = eventRejectHandler(reject);\n }\n else {\n var count_1 = 0;\n var req_1 = values || !('openKeyCursor' in source) ?\n source.openCursor(idbKeyRange) :\n source.openKeyCursor(idbKeyRange);\n var result_1 = [];\n req_1.onsuccess = function (event) {\n var cursor = req_1.result;\n if (!cursor)\n return resolve({ result: result_1 });\n result_1.push(values ? cursor.value : cursor.primaryKey);\n if (++count_1 === limit)\n return resolve({ result: result_1 });\n cursor.continue();\n };\n req_1.onerror = eventRejectHandler(reject);\n }\n });\n };\n }\n return {\n name: tableName,\n schema: tableSchema,\n mutate: mutate,\n getMany: function (_a) {\n var trans = _a.trans, keys = _a.keys;\n return new Promise(function (resolve, reject) {\n resolve = wrap(resolve);\n var store = trans.objectStore(tableName);\n var length = keys.length;\n var result = new Array(length);\n var keyCount = 0;\n var callbackCount = 0;\n var req;\n var successHandler = function (event) {\n var req = event.target;\n if ((result[req._pos] = req.result) != null)\n ;\n if (++callbackCount === keyCount)\n resolve(result);\n };\n var errorHandler = eventRejectHandler(reject);\n for (var i = 0; i < length; ++i) {\n var key = keys[i];\n if (key != null) {\n req = store.get(keys[i]);\n req._pos = i;\n req.onsuccess = successHandler;\n req.onerror = errorHandler;\n ++keyCount;\n }\n }\n if (keyCount === 0)\n resolve(result);\n });\n },\n get: function (_a) {\n var trans = _a.trans, key = _a.key;\n return new Promise(function (resolve, reject) {\n resolve = wrap(resolve);\n var store = trans.objectStore(tableName);\n var req = store.get(key);\n req.onsuccess = function (event) { return resolve(event.target.result); };\n req.onerror = eventRejectHandler(reject);\n });\n },\n query: query(hasGetAll),\n openCursor: openCursor,\n count: function (_a) {\n var query = _a.query, trans = _a.trans;\n var index = query.index, range = query.range;\n return new Promise(function (resolve, reject) {\n var store = trans.objectStore(tableName);\n var source = index.isPrimaryKey ? store : store.index(index.name);\n var idbKeyRange = makeIDBKeyRange(range);\n var req = idbKeyRange ? source.count(idbKeyRange) : source.count();\n req.onsuccess = wrap(function (ev) { return resolve(ev.target.result); });\n req.onerror = eventRejectHandler(reject);\n });\n }\n };\n }\n var _a = extractSchema(db, tmpTrans), schema = _a.schema, hasGetAll = _a.hasGetAll;\n var tables = schema.tables.map(function (tableSchema) { return createDbCoreTable(tableSchema); });\n var tableMap = {};\n tables.forEach(function (table) { return tableMap[table.name] = table; });\n return {\n stack: \"dbcore\",\n transaction: db.transaction.bind(db),\n table: function (name) {\n var result = tableMap[name];\n if (!result)\n throw new Error(\"Table '\" + name + \"' not found\");\n return tableMap[name];\n },\n MIN_KEY: -Infinity,\n MAX_KEY: getMaxKey(IdbKeyRange),\n schema: schema\n };\n}\n\nfunction createMiddlewareStack(stackImpl, middlewares) {\n return middlewares.reduce(function (down, _a) {\n var create = _a.create;\n return (__assign(__assign({}, down), create(down)));\n }, stackImpl);\n}\nfunction createMiddlewareStacks(middlewares, idbdb, _a, tmpTrans) {\n var IDBKeyRange = _a.IDBKeyRange; _a.indexedDB;\n var dbcore = createMiddlewareStack(createDBCore(idbdb, IDBKeyRange, tmpTrans), middlewares.dbcore);\n return {\n dbcore: dbcore\n };\n}\nfunction generateMiddlewareStacks(_a, tmpTrans) {\n var db = _a._novip;\n var idbdb = tmpTrans.db;\n var stacks = createMiddlewareStacks(db._middlewares, idbdb, db._deps, tmpTrans);\n db.core = stacks.dbcore;\n db.tables.forEach(function (table) {\n var tableName = table.name;\n if (db.core.schema.tables.some(function (tbl) { return tbl.name === tableName; })) {\n table.core = db.core.table(tableName);\n if (db[tableName] instanceof db.Table) {\n db[tableName].core = table.core;\n }\n }\n });\n}\n\nfunction setApiOnPlace(_a, objs, tableNames, dbschema) {\n var db = _a._novip;\n tableNames.forEach(function (tableName) {\n var schema = dbschema[tableName];\n objs.forEach(function (obj) {\n var propDesc = getPropertyDescriptor(obj, tableName);\n if (!propDesc || (\"value\" in propDesc && propDesc.value === undefined)) {\n if (obj === db.Transaction.prototype || obj instanceof db.Transaction) {\n setProp(obj, tableName, {\n get: function () { return this.table(tableName); },\n set: function (value) {\n defineProperty(this, tableName, { value: value, writable: true, configurable: true, enumerable: true });\n }\n });\n }\n else {\n obj[tableName] = new db.Table(tableName, schema);\n }\n }\n });\n });\n}\nfunction removeTablesApi(_a, objs) {\n var db = _a._novip;\n objs.forEach(function (obj) {\n for (var key in obj) {\n if (obj[key] instanceof db.Table)\n delete obj[key];\n }\n });\n}\nfunction lowerVersionFirst(a, b) {\n return a._cfg.version - b._cfg.version;\n}\nfunction runUpgraders(db, oldVersion, idbUpgradeTrans, reject) {\n var globalSchema = db._dbSchema;\n var trans = db._createTransaction('readwrite', db._storeNames, globalSchema);\n trans.create(idbUpgradeTrans);\n trans._completion.catch(reject);\n var rejectTransaction = trans._reject.bind(trans);\n var transless = PSD.transless || PSD;\n newScope(function () {\n PSD.trans = trans;\n PSD.transless = transless;\n if (oldVersion === 0) {\n keys(globalSchema).forEach(function (tableName) {\n createTable(idbUpgradeTrans, tableName, globalSchema[tableName].primKey, globalSchema[tableName].indexes);\n });\n generateMiddlewareStacks(db, idbUpgradeTrans);\n DexiePromise.follow(function () { return db.on.populate.fire(trans); }).catch(rejectTransaction);\n }\n else\n updateTablesAndIndexes(db, oldVersion, trans, idbUpgradeTrans).catch(rejectTransaction);\n });\n}\nfunction updateTablesAndIndexes(_a, oldVersion, trans, idbUpgradeTrans) {\n var db = _a._novip;\n var queue = [];\n var versions = db._versions;\n var globalSchema = db._dbSchema = buildGlobalSchema(db, db.idbdb, idbUpgradeTrans);\n var anyContentUpgraderHasRun = false;\n var versToRun = versions.filter(function (v) { return v._cfg.version >= oldVersion; });\n versToRun.forEach(function (version) {\n queue.push(function () {\n var oldSchema = globalSchema;\n var newSchema = version._cfg.dbschema;\n adjustToExistingIndexNames(db, oldSchema, idbUpgradeTrans);\n adjustToExistingIndexNames(db, newSchema, idbUpgradeTrans);\n globalSchema = db._dbSchema = newSchema;\n var diff = getSchemaDiff(oldSchema, newSchema);\n diff.add.forEach(function (tuple) {\n createTable(idbUpgradeTrans, tuple[0], tuple[1].primKey, tuple[1].indexes);\n });\n diff.change.forEach(function (change) {\n if (change.recreate) {\n throw new exceptions.Upgrade(\"Not yet support for changing primary key\");\n }\n else {\n var store_1 = idbUpgradeTrans.objectStore(change.name);\n change.add.forEach(function (idx) { return addIndex(store_1, idx); });\n change.change.forEach(function (idx) {\n store_1.deleteIndex(idx.name);\n addIndex(store_1, idx);\n });\n change.del.forEach(function (idxName) { return store_1.deleteIndex(idxName); });\n }\n });\n var contentUpgrade = version._cfg.contentUpgrade;\n if (contentUpgrade && version._cfg.version > oldVersion) {\n generateMiddlewareStacks(db, idbUpgradeTrans);\n trans._memoizedTables = {};\n anyContentUpgraderHasRun = true;\n var upgradeSchema_1 = shallowClone(newSchema);\n diff.del.forEach(function (table) {\n upgradeSchema_1[table] = oldSchema[table];\n });\n removeTablesApi(db, [db.Transaction.prototype]);\n setApiOnPlace(db, [db.Transaction.prototype], keys(upgradeSchema_1), upgradeSchema_1);\n trans.schema = upgradeSchema_1;\n var contentUpgradeIsAsync_1 = isAsyncFunction(contentUpgrade);\n if (contentUpgradeIsAsync_1) {\n incrementExpectedAwaits();\n }\n var returnValue_1;\n var promiseFollowed = DexiePromise.follow(function () {\n returnValue_1 = contentUpgrade(trans);\n if (returnValue_1) {\n if (contentUpgradeIsAsync_1) {\n var decrementor = decrementExpectedAwaits.bind(null, null);\n returnValue_1.then(decrementor, decrementor);\n }\n }\n });\n return (returnValue_1 && typeof returnValue_1.then === 'function' ?\n DexiePromise.resolve(returnValue_1) : promiseFollowed.then(function () { return returnValue_1; }));\n }\n });\n queue.push(function (idbtrans) {\n if (!anyContentUpgraderHasRun || !hasIEDeleteObjectStoreBug) {\n var newSchema = version._cfg.dbschema;\n deleteRemovedTables(newSchema, idbtrans);\n }\n removeTablesApi(db, [db.Transaction.prototype]);\n setApiOnPlace(db, [db.Transaction.prototype], db._storeNames, db._dbSchema);\n trans.schema = db._dbSchema;\n });\n });\n function runQueue() {\n return queue.length ? DexiePromise.resolve(queue.shift()(trans.idbtrans)).then(runQueue) :\n DexiePromise.resolve();\n }\n return runQueue().then(function () {\n createMissingTables(globalSchema, idbUpgradeTrans);\n });\n}\nfunction getSchemaDiff(oldSchema, newSchema) {\n var diff = {\n del: [],\n add: [],\n change: []\n };\n var table;\n for (table in oldSchema) {\n if (!newSchema[table])\n diff.del.push(table);\n }\n for (table in newSchema) {\n var oldDef = oldSchema[table], newDef = newSchema[table];\n if (!oldDef) {\n diff.add.push([table, newDef]);\n }\n else {\n var change = {\n name: table,\n def: newDef,\n recreate: false,\n del: [],\n add: [],\n change: []\n };\n if ((\n '' + (oldDef.primKey.keyPath || '')) !== ('' + (newDef.primKey.keyPath || '')) ||\n (oldDef.primKey.auto !== newDef.primKey.auto && !isIEOrEdge))\n {\n change.recreate = true;\n diff.change.push(change);\n }\n else {\n var oldIndexes = oldDef.idxByName;\n var newIndexes = newDef.idxByName;\n var idxName = void 0;\n for (idxName in oldIndexes) {\n if (!newIndexes[idxName])\n change.del.push(idxName);\n }\n for (idxName in newIndexes) {\n var oldIdx = oldIndexes[idxName], newIdx = newIndexes[idxName];\n if (!oldIdx)\n change.add.push(newIdx);\n else if (oldIdx.src !== newIdx.src)\n change.change.push(newIdx);\n }\n if (change.del.length > 0 || change.add.length > 0 || change.change.length > 0) {\n diff.change.push(change);\n }\n }\n }\n }\n return diff;\n}\nfunction createTable(idbtrans, tableName, primKey, indexes) {\n var store = idbtrans.db.createObjectStore(tableName, primKey.keyPath ?\n { keyPath: primKey.keyPath, autoIncrement: primKey.auto } :\n { autoIncrement: primKey.auto });\n indexes.forEach(function (idx) { return addIndex(store, idx); });\n return store;\n}\nfunction createMissingTables(newSchema, idbtrans) {\n keys(newSchema).forEach(function (tableName) {\n if (!idbtrans.db.objectStoreNames.contains(tableName)) {\n createTable(idbtrans, tableName, newSchema[tableName].primKey, newSchema[tableName].indexes);\n }\n });\n}\nfunction deleteRemovedTables(newSchema, idbtrans) {\n [].slice.call(idbtrans.db.objectStoreNames).forEach(function (storeName) {\n return newSchema[storeName] == null && idbtrans.db.deleteObjectStore(storeName);\n });\n}\nfunction addIndex(store, idx) {\n store.createIndex(idx.name, idx.keyPath, { unique: idx.unique, multiEntry: idx.multi });\n}\nfunction buildGlobalSchema(db, idbdb, tmpTrans) {\n var globalSchema = {};\n var dbStoreNames = slice(idbdb.objectStoreNames, 0);\n dbStoreNames.forEach(function (storeName) {\n var store = tmpTrans.objectStore(storeName);\n var keyPath = store.keyPath;\n var primKey = createIndexSpec(nameFromKeyPath(keyPath), keyPath || \"\", false, false, !!store.autoIncrement, keyPath && typeof keyPath !== \"string\", true);\n var indexes = [];\n for (var j = 0; j < store.indexNames.length; ++j) {\n var idbindex = store.index(store.indexNames[j]);\n keyPath = idbindex.keyPath;\n var index = createIndexSpec(idbindex.name, keyPath, !!idbindex.unique, !!idbindex.multiEntry, false, keyPath && typeof keyPath !== \"string\", false);\n indexes.push(index);\n }\n globalSchema[storeName] = createTableSchema(storeName, primKey, indexes);\n });\n return globalSchema;\n}\nfunction readGlobalSchema(_a, idbdb, tmpTrans) {\n var db = _a._novip;\n db.verno = idbdb.version / 10;\n var globalSchema = db._dbSchema = buildGlobalSchema(db, idbdb, tmpTrans);\n db._storeNames = slice(idbdb.objectStoreNames, 0);\n setApiOnPlace(db, [db._allTables], keys(globalSchema), globalSchema);\n}\nfunction verifyInstalledSchema(db, tmpTrans) {\n var installedSchema = buildGlobalSchema(db, db.idbdb, tmpTrans);\n var diff = getSchemaDiff(installedSchema, db._dbSchema);\n return !(diff.add.length || diff.change.some(function (ch) { return ch.add.length || ch.change.length; }));\n}\nfunction adjustToExistingIndexNames(_a, schema, idbtrans) {\n var db = _a._novip;\n var storeNames = idbtrans.db.objectStoreNames;\n for (var i = 0; i < storeNames.length; ++i) {\n var storeName = storeNames[i];\n var store = idbtrans.objectStore(storeName);\n db._hasGetAll = 'getAll' in store;\n for (var j = 0; j < store.indexNames.length; ++j) {\n var indexName = store.indexNames[j];\n var keyPath = store.index(indexName).keyPath;\n var dexieName = typeof keyPath === 'string' ? keyPath : \"[\" + slice(keyPath).join('+') + \"]\";\n if (schema[storeName]) {\n var indexSpec = schema[storeName].idxByName[dexieName];\n if (indexSpec) {\n indexSpec.name = indexName;\n delete schema[storeName].idxByName[dexieName];\n schema[storeName].idxByName[indexName] = indexSpec;\n }\n }\n }\n }\n if (typeof navigator !== 'undefined' && /Safari/.test(navigator.userAgent) &&\n !/(Chrome\\/|Edge\\/)/.test(navigator.userAgent) &&\n _global.WorkerGlobalScope && _global instanceof _global.WorkerGlobalScope &&\n [].concat(navigator.userAgent.match(/Safari\\/(\\d*)/))[1] < 604) {\n db._hasGetAll = false;\n }\n}\nfunction parseIndexSyntax(primKeyAndIndexes) {\n return primKeyAndIndexes.split(',').map(function (index, indexNum) {\n index = index.trim();\n var name = index.replace(/([&*]|\\+\\+)/g, \"\");\n var keyPath = /^\\[/.test(name) ? name.match(/^\\[(.*)\\]$/)[1].split('+') : name;\n return createIndexSpec(name, keyPath || null, /\\&/.test(index), /\\*/.test(index), /\\+\\+/.test(index), isArray(keyPath), indexNum === 0);\n });\n}\n\nvar Version = (function () {\n function Version() {\n }\n Version.prototype._parseStoresSpec = function (stores, outSchema) {\n keys(stores).forEach(function (tableName) {\n if (stores[tableName] !== null) {\n var indexes = parseIndexSyntax(stores[tableName]);\n var primKey = indexes.shift();\n if (primKey.multi)\n throw new exceptions.Schema(\"Primary key cannot be multi-valued\");\n indexes.forEach(function (idx) {\n if (idx.auto)\n throw new exceptions.Schema(\"Only primary key can be marked as autoIncrement (++)\");\n if (!idx.keyPath)\n throw new exceptions.Schema(\"Index must have a name and cannot be an empty string\");\n });\n outSchema[tableName] = createTableSchema(tableName, primKey, indexes);\n }\n });\n };\n Version.prototype.stores = function (stores) {\n var db = this.db;\n this._cfg.storesSource = this._cfg.storesSource ?\n extend(this._cfg.storesSource, stores) :\n stores;\n var versions = db._versions;\n var storesSpec = {};\n var dbschema = {};\n versions.forEach(function (version) {\n extend(storesSpec, version._cfg.storesSource);\n dbschema = (version._cfg.dbschema = {});\n version._parseStoresSpec(storesSpec, dbschema);\n });\n db._dbSchema = dbschema;\n removeTablesApi(db, [db._allTables, db, db.Transaction.prototype]);\n setApiOnPlace(db, [db._allTables, db, db.Transaction.prototype, this._cfg.tables], keys(dbschema), dbschema);\n db._storeNames = keys(dbschema);\n return this;\n };\n Version.prototype.upgrade = function (upgradeFunction) {\n this._cfg.contentUpgrade = promisableChain(this._cfg.contentUpgrade || nop, upgradeFunction);\n return this;\n };\n return Version;\n}());\n\nfunction createVersionConstructor(db) {\n return makeClassConstructor(Version.prototype, function Version(versionNumber) {\n this.db = db;\n this._cfg = {\n version: versionNumber,\n storesSource: null,\n dbschema: {},\n tables: {},\n contentUpgrade: null\n };\n });\n}\n\nfunction getDbNamesTable(indexedDB, IDBKeyRange) {\n var dbNamesDB = indexedDB[\"_dbNamesDB\"];\n if (!dbNamesDB) {\n dbNamesDB = indexedDB[\"_dbNamesDB\"] = new Dexie$1(DBNAMES_DB, {\n addons: [],\n indexedDB: indexedDB,\n IDBKeyRange: IDBKeyRange,\n });\n dbNamesDB.version(1).stores({ dbnames: \"name\" });\n }\n return dbNamesDB.table(\"dbnames\");\n}\nfunction hasDatabasesNative(indexedDB) {\n return indexedDB && typeof indexedDB.databases === \"function\";\n}\nfunction getDatabaseNames(_a) {\n var indexedDB = _a.indexedDB, IDBKeyRange = _a.IDBKeyRange;\n return hasDatabasesNative(indexedDB)\n ? Promise.resolve(indexedDB.databases()).then(function (infos) {\n return infos\n .map(function (info) { return info.name; })\n .filter(function (name) { return name !== DBNAMES_DB; });\n })\n : getDbNamesTable(indexedDB, IDBKeyRange).toCollection().primaryKeys();\n}\nfunction _onDatabaseCreated(_a, name) {\n var indexedDB = _a.indexedDB, IDBKeyRange = _a.IDBKeyRange;\n !hasDatabasesNative(indexedDB) &&\n name !== DBNAMES_DB &&\n getDbNamesTable(indexedDB, IDBKeyRange).put({ name: name }).catch(nop);\n}\nfunction _onDatabaseDeleted(_a, name) {\n var indexedDB = _a.indexedDB, IDBKeyRange = _a.IDBKeyRange;\n !hasDatabasesNative(indexedDB) &&\n name !== DBNAMES_DB &&\n getDbNamesTable(indexedDB, IDBKeyRange).delete(name).catch(nop);\n}\n\nfunction vip(fn) {\n return newScope(function () {\n PSD.letThrough = true;\n return fn();\n });\n}\n\nfunction idbReady() {\n var isSafari = !navigator.userAgentData &&\n /Safari\\//.test(navigator.userAgent) &&\n !/Chrom(e|ium)\\//.test(navigator.userAgent);\n if (!isSafari || !indexedDB.databases)\n return Promise.resolve();\n var intervalId;\n return new Promise(function (resolve) {\n var tryIdb = function () { return indexedDB.databases().finally(resolve); };\n intervalId = setInterval(tryIdb, 100);\n tryIdb();\n }).finally(function () { return clearInterval(intervalId); });\n}\n\nfunction dexieOpen(db) {\n var state = db._state;\n var indexedDB = db._deps.indexedDB;\n if (state.isBeingOpened || db.idbdb)\n return state.dbReadyPromise.then(function () { return state.dbOpenError ?\n rejection(state.dbOpenError) :\n db; });\n debug && (state.openCanceller._stackHolder = getErrorWithStack());\n state.isBeingOpened = true;\n state.dbOpenError = null;\n state.openComplete = false;\n var openCanceller = state.openCanceller;\n function throwIfCancelled() {\n if (state.openCanceller !== openCanceller)\n throw new exceptions.DatabaseClosed('db.open() was cancelled');\n }\n var resolveDbReady = state.dbReadyResolve,\n upgradeTransaction = null, wasCreated = false;\n return DexiePromise.race([openCanceller, (typeof navigator === 'undefined' ? DexiePromise.resolve() : idbReady()).then(function () { return new DexiePromise(function (resolve, reject) {\n throwIfCancelled();\n if (!indexedDB)\n throw new exceptions.MissingAPI();\n var dbName = db.name;\n var req = state.autoSchema ?\n indexedDB.open(dbName) :\n indexedDB.open(dbName, Math.round(db.verno * 10));\n if (!req)\n throw new exceptions.MissingAPI();\n req.onerror = eventRejectHandler(reject);\n req.onblocked = wrap(db._fireOnBlocked);\n req.onupgradeneeded = wrap(function (e) {\n upgradeTransaction = req.transaction;\n if (state.autoSchema && !db._options.allowEmptyDB) {\n req.onerror = preventDefault;\n upgradeTransaction.abort();\n req.result.close();\n var delreq = indexedDB.deleteDatabase(dbName);\n delreq.onsuccess = delreq.onerror = wrap(function () {\n reject(new exceptions.NoSuchDatabase(\"Database \" + dbName + \" doesnt exist\"));\n });\n }\n else {\n upgradeTransaction.onerror = eventRejectHandler(reject);\n var oldVer = e.oldVersion > Math.pow(2, 62) ? 0 : e.oldVersion;\n wasCreated = oldVer < 1;\n db._novip.idbdb = req.result;\n runUpgraders(db, oldVer / 10, upgradeTransaction, reject);\n }\n }, reject);\n req.onsuccess = wrap(function () {\n upgradeTransaction = null;\n var idbdb = db._novip.idbdb = req.result;\n var objectStoreNames = slice(idbdb.objectStoreNames);\n if (objectStoreNames.length > 0)\n try {\n var tmpTrans = idbdb.transaction(safariMultiStoreFix(objectStoreNames), 'readonly');\n if (state.autoSchema)\n readGlobalSchema(db, idbdb, tmpTrans);\n else {\n adjustToExistingIndexNames(db, db._dbSchema, tmpTrans);\n if (!verifyInstalledSchema(db, tmpTrans)) {\n console.warn(\"Dexie SchemaDiff: Schema was extended without increasing the number passed to db.version(). Some queries may fail.\");\n }\n }\n generateMiddlewareStacks(db, tmpTrans);\n }\n catch (e) {\n }\n connections.push(db);\n idbdb.onversionchange = wrap(function (ev) {\n state.vcFired = true;\n db.on(\"versionchange\").fire(ev);\n });\n idbdb.onclose = wrap(function (ev) {\n db.on(\"close\").fire(ev);\n });\n if (wasCreated)\n _onDatabaseCreated(db._deps, dbName);\n resolve();\n }, reject);\n }); })]).then(function () {\n throwIfCancelled();\n state.onReadyBeingFired = [];\n return DexiePromise.resolve(vip(function () { return db.on.ready.fire(db.vip); })).then(function fireRemainders() {\n if (state.onReadyBeingFired.length > 0) {\n var remainders_1 = state.onReadyBeingFired.reduce(promisableChain, nop);\n state.onReadyBeingFired = [];\n return DexiePromise.resolve(vip(function () { return remainders_1(db.vip); })).then(fireRemainders);\n }\n });\n }).finally(function () {\n state.onReadyBeingFired = null;\n state.isBeingOpened = false;\n }).then(function () {\n return db;\n }).catch(function (err) {\n state.dbOpenError = err;\n try {\n upgradeTransaction && upgradeTransaction.abort();\n }\n catch (_a) { }\n if (openCanceller === state.openCanceller) {\n db._close();\n }\n return rejection(err);\n }).finally(function () {\n state.openComplete = true;\n resolveDbReady();\n });\n}\n\nfunction awaitIterator(iterator) {\n var callNext = function (result) { return iterator.next(result); }, doThrow = function (error) { return iterator.throw(error); }, onSuccess = step(callNext), onError = step(doThrow);\n function step(getNext) {\n return function (val) {\n var next = getNext(val), value = next.value;\n return next.done ? value :\n (!value || typeof value.then !== 'function' ?\n isArray(value) ? Promise.all(value).then(onSuccess, onError) : onSuccess(value) :\n value.then(onSuccess, onError));\n };\n }\n return step(callNext)();\n}\n\nfunction extractTransactionArgs(mode, _tableArgs_, scopeFunc) {\n var i = arguments.length;\n if (i < 2)\n throw new exceptions.InvalidArgument(\"Too few arguments\");\n var args = new Array(i - 1);\n while (--i)\n args[i - 1] = arguments[i];\n scopeFunc = args.pop();\n var tables = flatten(args);\n return [mode, tables, scopeFunc];\n}\nfunction enterTransactionScope(db, mode, storeNames, parentTransaction, scopeFunc) {\n return DexiePromise.resolve().then(function () {\n var transless = PSD.transless || PSD;\n var trans = db._createTransaction(mode, storeNames, db._dbSchema, parentTransaction);\n var zoneProps = {\n trans: trans,\n transless: transless\n };\n if (parentTransaction) {\n trans.idbtrans = parentTransaction.idbtrans;\n }\n else {\n try {\n trans.create();\n db._state.PR1398_maxLoop = 3;\n }\n catch (ex) {\n if (ex.name === errnames.InvalidState && db.isOpen() && --db._state.PR1398_maxLoop > 0) {\n console.warn('Dexie: Need to reopen db');\n db._close();\n return db.open().then(function () { return enterTransactionScope(db, mode, storeNames, null, scopeFunc); });\n }\n return rejection(ex);\n }\n }\n var scopeFuncIsAsync = isAsyncFunction(scopeFunc);\n if (scopeFuncIsAsync) {\n incrementExpectedAwaits();\n }\n var returnValue;\n var promiseFollowed = DexiePromise.follow(function () {\n returnValue = scopeFunc.call(trans, trans);\n if (returnValue) {\n if (scopeFuncIsAsync) {\n var decrementor = decrementExpectedAwaits.bind(null, null);\n returnValue.then(decrementor, decrementor);\n }\n else if (typeof returnValue.next === 'function' && typeof returnValue.throw === 'function') {\n returnValue = awaitIterator(returnValue);\n }\n }\n }, zoneProps);\n return (returnValue && typeof returnValue.then === 'function' ?\n DexiePromise.resolve(returnValue).then(function (x) { return trans.active ?\n x\n : rejection(new exceptions.PrematureCommit(\"Transaction committed too early. See http://bit.ly/2kdckMn\")); })\n : promiseFollowed.then(function () { return returnValue; })).then(function (x) {\n if (parentTransaction)\n trans._resolve();\n return trans._completion.then(function () { return x; });\n }).catch(function (e) {\n trans._reject(e);\n return rejection(e);\n });\n });\n}\n\nfunction pad(a, value, count) {\n var result = isArray(a) ? a.slice() : [a];\n for (var i = 0; i < count; ++i)\n result.push(value);\n return result;\n}\nfunction createVirtualIndexMiddleware(down) {\n return __assign(__assign({}, down), { table: function (tableName) {\n var table = down.table(tableName);\n var schema = table.schema;\n var indexLookup = {};\n var allVirtualIndexes = [];\n function addVirtualIndexes(keyPath, keyTail, lowLevelIndex) {\n var keyPathAlias = getKeyPathAlias(keyPath);\n var indexList = (indexLookup[keyPathAlias] = indexLookup[keyPathAlias] || []);\n var keyLength = keyPath == null ? 0 : typeof keyPath === 'string' ? 1 : keyPath.length;\n var isVirtual = keyTail > 0;\n var virtualIndex = __assign(__assign({}, lowLevelIndex), { isVirtual: isVirtual, keyTail: keyTail, keyLength: keyLength, extractKey: getKeyExtractor(keyPath), unique: !isVirtual && lowLevelIndex.unique });\n indexList.push(virtualIndex);\n if (!virtualIndex.isPrimaryKey) {\n allVirtualIndexes.push(virtualIndex);\n }\n if (keyLength > 1) {\n var virtualKeyPath = keyLength === 2 ?\n keyPath[0] :\n keyPath.slice(0, keyLength - 1);\n addVirtualIndexes(virtualKeyPath, keyTail + 1, lowLevelIndex);\n }\n indexList.sort(function (a, b) { return a.keyTail - b.keyTail; });\n return virtualIndex;\n }\n var primaryKey = addVirtualIndexes(schema.primaryKey.keyPath, 0, schema.primaryKey);\n indexLookup[\":id\"] = [primaryKey];\n for (var _i = 0, _a = schema.indexes; _i < _a.length; _i++) {\n var index = _a[_i];\n addVirtualIndexes(index.keyPath, 0, index);\n }\n function findBestIndex(keyPath) {\n var result = indexLookup[getKeyPathAlias(keyPath)];\n return result && result[0];\n }\n function translateRange(range, keyTail) {\n return {\n type: range.type === 1 ?\n 2 :\n range.type,\n lower: pad(range.lower, range.lowerOpen ? down.MAX_KEY : down.MIN_KEY, keyTail),\n lowerOpen: true,\n upper: pad(range.upper, range.upperOpen ? down.MIN_KEY : down.MAX_KEY, keyTail),\n upperOpen: true\n };\n }\n function translateRequest(req) {\n var index = req.query.index;\n return index.isVirtual ? __assign(__assign({}, req), { query: {\n index: index,\n range: translateRange(req.query.range, index.keyTail)\n } }) : req;\n }\n var result = __assign(__assign({}, table), { schema: __assign(__assign({}, schema), { primaryKey: primaryKey, indexes: allVirtualIndexes, getIndexByKeyPath: findBestIndex }), count: function (req) {\n return table.count(translateRequest(req));\n }, query: function (req) {\n return table.query(translateRequest(req));\n }, openCursor: function (req) {\n var _a = req.query.index, keyTail = _a.keyTail, isVirtual = _a.isVirtual, keyLength = _a.keyLength;\n if (!isVirtual)\n return table.openCursor(req);\n function createVirtualCursor(cursor) {\n function _continue(key) {\n key != null ?\n cursor.continue(pad(key, req.reverse ? down.MAX_KEY : down.MIN_KEY, keyTail)) :\n req.unique ?\n cursor.continue(cursor.key.slice(0, keyLength)\n .concat(req.reverse\n ? down.MIN_KEY\n : down.MAX_KEY, keyTail)) :\n cursor.continue();\n }\n var virtualCursor = Object.create(cursor, {\n continue: { value: _continue },\n continuePrimaryKey: {\n value: function (key, primaryKey) {\n cursor.continuePrimaryKey(pad(key, down.MAX_KEY, keyTail), primaryKey);\n }\n },\n primaryKey: {\n get: function () {\n return cursor.primaryKey;\n }\n },\n key: {\n get: function () {\n var key = cursor.key;\n return keyLength === 1 ?\n key[0] :\n key.slice(0, keyLength);\n }\n },\n value: {\n get: function () {\n return cursor.value;\n }\n }\n });\n return virtualCursor;\n }\n return table.openCursor(translateRequest(req))\n .then(function (cursor) { return cursor && createVirtualCursor(cursor); });\n } });\n return result;\n } });\n}\nvar virtualIndexMiddleware = {\n stack: \"dbcore\",\n name: \"VirtualIndexMiddleware\",\n level: 1,\n create: createVirtualIndexMiddleware\n};\n\nfunction getObjectDiff(a, b, rv, prfx) {\n rv = rv || {};\n prfx = prfx || '';\n keys(a).forEach(function (prop) {\n if (!hasOwn(b, prop)) {\n rv[prfx + prop] = undefined;\n }\n else {\n var ap = a[prop], bp = b[prop];\n if (typeof ap === 'object' && typeof bp === 'object' && ap && bp) {\n var apTypeName = toStringTag(ap);\n var bpTypeName = toStringTag(bp);\n if (apTypeName !== bpTypeName) {\n rv[prfx + prop] = b[prop];\n }\n else if (apTypeName === 'Object') {\n getObjectDiff(ap, bp, rv, prfx + prop + '.');\n }\n else if (ap !== bp) {\n rv[prfx + prop] = b[prop];\n }\n }\n else if (ap !== bp)\n rv[prfx + prop] = b[prop];\n }\n });\n keys(b).forEach(function (prop) {\n if (!hasOwn(a, prop)) {\n rv[prfx + prop] = b[prop];\n }\n });\n return rv;\n}\n\nfunction getEffectiveKeys(primaryKey, req) {\n if (req.type === 'delete')\n return req.keys;\n return req.keys || req.values.map(primaryKey.extractKey);\n}\n\nvar hooksMiddleware = {\n stack: \"dbcore\",\n name: \"HooksMiddleware\",\n level: 2,\n create: function (downCore) { return (__assign(__assign({}, downCore), { table: function (tableName) {\n var downTable = downCore.table(tableName);\n var primaryKey = downTable.schema.primaryKey;\n var tableMiddleware = __assign(__assign({}, downTable), { mutate: function (req) {\n var dxTrans = PSD.trans;\n var _a = dxTrans.table(tableName).hook, deleting = _a.deleting, creating = _a.creating, updating = _a.updating;\n switch (req.type) {\n case 'add':\n if (creating.fire === nop)\n break;\n return dxTrans._promise('readwrite', function () { return addPutOrDelete(req); }, true);\n case 'put':\n if (creating.fire === nop && updating.fire === nop)\n break;\n return dxTrans._promise('readwrite', function () { return addPutOrDelete(req); }, true);\n case 'delete':\n if (deleting.fire === nop)\n break;\n return dxTrans._promise('readwrite', function () { return addPutOrDelete(req); }, true);\n case 'deleteRange':\n if (deleting.fire === nop)\n break;\n return dxTrans._promise('readwrite', function () { return deleteRange(req); }, true);\n }\n return downTable.mutate(req);\n function addPutOrDelete(req) {\n var dxTrans = PSD.trans;\n var keys = req.keys || getEffectiveKeys(primaryKey, req);\n if (!keys)\n throw new Error(\"Keys missing\");\n req = req.type === 'add' || req.type === 'put' ? __assign(__assign({}, req), { keys: keys }) : __assign({}, req);\n if (req.type !== 'delete')\n req.values = __spreadArray([], req.values, true);\n if (req.keys)\n req.keys = __spreadArray([], req.keys, true);\n return getExistingValues(downTable, req, keys).then(function (existingValues) {\n var contexts = keys.map(function (key, i) {\n var existingValue = existingValues[i];\n var ctx = { onerror: null, onsuccess: null };\n if (req.type === 'delete') {\n deleting.fire.call(ctx, key, existingValue, dxTrans);\n }\n else if (req.type === 'add' || existingValue === undefined) {\n var generatedPrimaryKey = creating.fire.call(ctx, key, req.values[i], dxTrans);\n if (key == null && generatedPrimaryKey != null) {\n key = generatedPrimaryKey;\n req.keys[i] = key;\n if (!primaryKey.outbound) {\n setByKeyPath(req.values[i], primaryKey.keyPath, key);\n }\n }\n }\n else {\n var objectDiff = getObjectDiff(existingValue, req.values[i]);\n var additionalChanges_1 = updating.fire.call(ctx, objectDiff, key, existingValue, dxTrans);\n if (additionalChanges_1) {\n var requestedValue_1 = req.values[i];\n Object.keys(additionalChanges_1).forEach(function (keyPath) {\n if (hasOwn(requestedValue_1, keyPath)) {\n requestedValue_1[keyPath] = additionalChanges_1[keyPath];\n }\n else {\n setByKeyPath(requestedValue_1, keyPath, additionalChanges_1[keyPath]);\n }\n });\n }\n }\n return ctx;\n });\n return downTable.mutate(req).then(function (_a) {\n var failures = _a.failures, results = _a.results, numFailures = _a.numFailures, lastResult = _a.lastResult;\n for (var i = 0; i < keys.length; ++i) {\n var primKey = results ? results[i] : keys[i];\n var ctx = contexts[i];\n if (primKey == null) {\n ctx.onerror && ctx.onerror(failures[i]);\n }\n else {\n ctx.onsuccess && ctx.onsuccess(req.type === 'put' && existingValues[i] ?\n req.values[i] :\n primKey\n );\n }\n }\n return { failures: failures, results: results, numFailures: numFailures, lastResult: lastResult };\n }).catch(function (error) {\n contexts.forEach(function (ctx) { return ctx.onerror && ctx.onerror(error); });\n return Promise.reject(error);\n });\n });\n }\n function deleteRange(req) {\n return deleteNextChunk(req.trans, req.range, 10000);\n }\n function deleteNextChunk(trans, range, limit) {\n return downTable.query({ trans: trans, values: false, query: { index: primaryKey, range: range }, limit: limit })\n .then(function (_a) {\n var result = _a.result;\n return addPutOrDelete({ type: 'delete', keys: result, trans: trans }).then(function (res) {\n if (res.numFailures > 0)\n return Promise.reject(res.failures[0]);\n if (result.length < limit) {\n return { failures: [], numFailures: 0, lastResult: undefined };\n }\n else {\n return deleteNextChunk(trans, __assign(__assign({}, range), { lower: result[result.length - 1], lowerOpen: true }), limit);\n }\n });\n });\n }\n } });\n return tableMiddleware;\n } })); }\n};\nfunction getExistingValues(table, req, effectiveKeys) {\n return req.type === \"add\"\n ? Promise.resolve([])\n : table.getMany({ trans: req.trans, keys: effectiveKeys, cache: \"immutable\" });\n}\n\nfunction getFromTransactionCache(keys, cache, clone) {\n try {\n if (!cache)\n return null;\n if (cache.keys.length < keys.length)\n return null;\n var result = [];\n for (var i = 0, j = 0; i < cache.keys.length && j < keys.length; ++i) {\n if (cmp(cache.keys[i], keys[j]) !== 0)\n continue;\n result.push(clone ? deepClone(cache.values[i]) : cache.values[i]);\n ++j;\n }\n return result.length === keys.length ? result : null;\n }\n catch (_a) {\n return null;\n }\n}\nvar cacheExistingValuesMiddleware = {\n stack: \"dbcore\",\n level: -1,\n create: function (core) {\n return {\n table: function (tableName) {\n var table = core.table(tableName);\n return __assign(__assign({}, table), { getMany: function (req) {\n if (!req.cache) {\n return table.getMany(req);\n }\n var cachedResult = getFromTransactionCache(req.keys, req.trans[\"_cache\"], req.cache === \"clone\");\n if (cachedResult) {\n return DexiePromise.resolve(cachedResult);\n }\n return table.getMany(req).then(function (res) {\n req.trans[\"_cache\"] = {\n keys: req.keys,\n values: req.cache === \"clone\" ? deepClone(res) : res,\n };\n return res;\n });\n }, mutate: function (req) {\n if (req.type !== \"add\")\n req.trans[\"_cache\"] = null;\n return table.mutate(req);\n } });\n },\n };\n },\n};\n\nvar _a;\nfunction isEmptyRange(node) {\n return !(\"from\" in node);\n}\nvar RangeSet = function (fromOrTree, to) {\n if (this) {\n extend(this, arguments.length ? { d: 1, from: fromOrTree, to: arguments.length > 1 ? to : fromOrTree } : { d: 0 });\n }\n else {\n var rv = new RangeSet();\n if (fromOrTree && (\"d\" in fromOrTree)) {\n extend(rv, fromOrTree);\n }\n return rv;\n }\n};\nprops(RangeSet.prototype, (_a = {\n add: function (rangeSet) {\n mergeRanges(this, rangeSet);\n return this;\n },\n addKey: function (key) {\n addRange(this, key, key);\n return this;\n },\n addKeys: function (keys) {\n var _this = this;\n keys.forEach(function (key) { return addRange(_this, key, key); });\n return this;\n }\n },\n _a[iteratorSymbol] = function () {\n return getRangeSetIterator(this);\n },\n _a));\nfunction addRange(target, from, to) {\n var diff = cmp(from, to);\n if (isNaN(diff))\n return;\n if (diff > 0)\n throw RangeError();\n if (isEmptyRange(target))\n return extend(target, { from: from, to: to, d: 1 });\n var left = target.l;\n var right = target.r;\n if (cmp(to, target.from) < 0) {\n left\n ? addRange(left, from, to)\n : (target.l = { from: from, to: to, d: 1, l: null, r: null });\n return rebalance(target);\n }\n if (cmp(from, target.to) > 0) {\n right\n ? addRange(right, from, to)\n : (target.r = { from: from, to: to, d: 1, l: null, r: null });\n return rebalance(target);\n }\n if (cmp(from, target.from) < 0) {\n target.from = from;\n target.l = null;\n target.d = right ? right.d + 1 : 1;\n }\n if (cmp(to, target.to) > 0) {\n target.to = to;\n target.r = null;\n target.d = target.l ? target.l.d + 1 : 1;\n }\n var rightWasCutOff = !target.r;\n if (left && !target.l) {\n mergeRanges(target, left);\n }\n if (right && rightWasCutOff) {\n mergeRanges(target, right);\n }\n}\nfunction mergeRanges(target, newSet) {\n function _addRangeSet(target, _a) {\n var from = _a.from, to = _a.to, l = _a.l, r = _a.r;\n addRange(target, from, to);\n if (l)\n _addRangeSet(target, l);\n if (r)\n _addRangeSet(target, r);\n }\n if (!isEmptyRange(newSet))\n _addRangeSet(target, newSet);\n}\nfunction rangesOverlap(rangeSet1, rangeSet2) {\n var i1 = getRangeSetIterator(rangeSet2);\n var nextResult1 = i1.next();\n if (nextResult1.done)\n return false;\n var a = nextResult1.value;\n var i2 = getRangeSetIterator(rangeSet1);\n var nextResult2 = i2.next(a.from);\n var b = nextResult2.value;\n while (!nextResult1.done && !nextResult2.done) {\n if (cmp(b.from, a.to) <= 0 && cmp(b.to, a.from) >= 0)\n return true;\n cmp(a.from, b.from) < 0\n ? (a = (nextResult1 = i1.next(b.from)).value)\n : (b = (nextResult2 = i2.next(a.from)).value);\n }\n return false;\n}\nfunction getRangeSetIterator(node) {\n var state = isEmptyRange(node) ? null : { s: 0, n: node };\n return {\n next: function (key) {\n var keyProvided = arguments.length > 0;\n while (state) {\n switch (state.s) {\n case 0:\n state.s = 1;\n if (keyProvided) {\n while (state.n.l && cmp(key, state.n.from) < 0)\n state = { up: state, n: state.n.l, s: 1 };\n }\n else {\n while (state.n.l)\n state = { up: state, n: state.n.l, s: 1 };\n }\n case 1:\n state.s = 2;\n if (!keyProvided || cmp(key, state.n.to) <= 0)\n return { value: state.n, done: false };\n case 2:\n if (state.n.r) {\n state.s = 3;\n state = { up: state, n: state.n.r, s: 0 };\n continue;\n }\n case 3:\n state = state.up;\n }\n }\n return { done: true };\n },\n };\n}\nfunction rebalance(target) {\n var _a, _b;\n var diff = (((_a = target.r) === null || _a === void 0 ? void 0 : _a.d) || 0) - (((_b = target.l) === null || _b === void 0 ? void 0 : _b.d) || 0);\n var r = diff > 1 ? \"r\" : diff < -1 ? \"l\" : \"\";\n if (r) {\n var l = r === \"r\" ? \"l\" : \"r\";\n var rootClone = __assign({}, target);\n var oldRootRight = target[r];\n target.from = oldRootRight.from;\n target.to = oldRootRight.to;\n target[r] = oldRootRight[r];\n rootClone[r] = oldRootRight[l];\n target[l] = rootClone;\n rootClone.d = computeDepth(rootClone);\n }\n target.d = computeDepth(target);\n}\nfunction computeDepth(_a) {\n var r = _a.r, l = _a.l;\n return (r ? (l ? Math.max(r.d, l.d) : r.d) : l ? l.d : 0) + 1;\n}\n\nvar observabilityMiddleware = {\n stack: \"dbcore\",\n level: 0,\n create: function (core) {\n var dbName = core.schema.name;\n var FULL_RANGE = new RangeSet(core.MIN_KEY, core.MAX_KEY);\n return __assign(__assign({}, core), { table: function (tableName) {\n var table = core.table(tableName);\n var schema = table.schema;\n var primaryKey = schema.primaryKey;\n var extractKey = primaryKey.extractKey, outbound = primaryKey.outbound;\n var tableClone = __assign(__assign({}, table), { mutate: function (req) {\n var trans = req.trans;\n var mutatedParts = trans.mutatedParts || (trans.mutatedParts = {});\n var getRangeSet = function (indexName) {\n var part = \"idb://\" + dbName + \"/\" + tableName + \"/\" + indexName;\n return (mutatedParts[part] ||\n (mutatedParts[part] = new RangeSet()));\n };\n var pkRangeSet = getRangeSet(\"\");\n var delsRangeSet = getRangeSet(\":dels\");\n var type = req.type;\n var _a = req.type === \"deleteRange\"\n ? [req.range]\n : req.type === \"delete\"\n ? [req.keys]\n : req.values.length < 50\n ? [[], req.values]\n : [], keys = _a[0], newObjs = _a[1];\n var oldCache = req.trans[\"_cache\"];\n return table.mutate(req).then(function (res) {\n if (isArray(keys)) {\n if (type !== \"delete\")\n keys = res.results;\n pkRangeSet.addKeys(keys);\n var oldObjs = getFromTransactionCache(keys, oldCache);\n if (!oldObjs && type !== \"add\") {\n delsRangeSet.addKeys(keys);\n }\n if (oldObjs || newObjs) {\n trackAffectedIndexes(getRangeSet, schema, oldObjs, newObjs);\n }\n }\n else if (keys) {\n var range = { from: keys.lower, to: keys.upper };\n delsRangeSet.add(range);\n pkRangeSet.add(range);\n }\n else {\n pkRangeSet.add(FULL_RANGE);\n delsRangeSet.add(FULL_RANGE);\n schema.indexes.forEach(function (idx) { return getRangeSet(idx.name).add(FULL_RANGE); });\n }\n return res;\n });\n } });\n var getRange = function (_a) {\n var _b, _c;\n var _d = _a.query, index = _d.index, range = _d.range;\n return [\n index,\n new RangeSet((_b = range.lower) !== null && _b !== void 0 ? _b : core.MIN_KEY, (_c = range.upper) !== null && _c !== void 0 ? _c : core.MAX_KEY),\n ];\n };\n var readSubscribers = {\n get: function (req) { return [primaryKey, new RangeSet(req.key)]; },\n getMany: function (req) { return [primaryKey, new RangeSet().addKeys(req.keys)]; },\n count: getRange,\n query: getRange,\n openCursor: getRange,\n };\n keys(readSubscribers).forEach(function (method) {\n tableClone[method] = function (req) {\n var subscr = PSD.subscr;\n if (subscr) {\n var getRangeSet = function (indexName) {\n var part = \"idb://\" + dbName + \"/\" + tableName + \"/\" + indexName;\n return (subscr[part] ||\n (subscr[part] = new RangeSet()));\n };\n var pkRangeSet_1 = getRangeSet(\"\");\n var delsRangeSet_1 = getRangeSet(\":dels\");\n var _a = readSubscribers[method](req), queriedIndex = _a[0], queriedRanges = _a[1];\n getRangeSet(queriedIndex.name || \"\").add(queriedRanges);\n if (!queriedIndex.isPrimaryKey) {\n if (method === \"count\") {\n delsRangeSet_1.add(FULL_RANGE);\n }\n else {\n var keysPromise_1 = method === \"query\" &&\n outbound &&\n req.values &&\n table.query(__assign(__assign({}, req), { values: false }));\n return table[method].apply(this, arguments).then(function (res) {\n if (method === \"query\") {\n if (outbound && req.values) {\n return keysPromise_1.then(function (_a) {\n var resultingKeys = _a.result;\n pkRangeSet_1.addKeys(resultingKeys);\n return res;\n });\n }\n var pKeys = req.values\n ? res.result.map(extractKey)\n : res.result;\n if (req.values) {\n pkRangeSet_1.addKeys(pKeys);\n }\n else {\n delsRangeSet_1.addKeys(pKeys);\n }\n }\n else if (method === \"openCursor\") {\n var cursor_1 = res;\n var wantValues_1 = req.values;\n return (cursor_1 &&\n Object.create(cursor_1, {\n key: {\n get: function () {\n delsRangeSet_1.addKey(cursor_1.primaryKey);\n return cursor_1.key;\n },\n },\n primaryKey: {\n get: function () {\n var pkey = cursor_1.primaryKey;\n delsRangeSet_1.addKey(pkey);\n return pkey;\n },\n },\n value: {\n get: function () {\n wantValues_1 && pkRangeSet_1.addKey(cursor_1.primaryKey);\n return cursor_1.value;\n },\n },\n }));\n }\n return res;\n });\n }\n }\n }\n return table[method].apply(this, arguments);\n };\n });\n return tableClone;\n } });\n },\n};\nfunction trackAffectedIndexes(getRangeSet, schema, oldObjs, newObjs) {\n function addAffectedIndex(ix) {\n var rangeSet = getRangeSet(ix.name || \"\");\n function extractKey(obj) {\n return obj != null ? ix.extractKey(obj) : null;\n }\n var addKeyOrKeys = function (key) { return ix.multiEntry && isArray(key)\n ? key.forEach(function (key) { return rangeSet.addKey(key); })\n : rangeSet.addKey(key); };\n (oldObjs || newObjs).forEach(function (_, i) {\n var oldKey = oldObjs && extractKey(oldObjs[i]);\n var newKey = newObjs && extractKey(newObjs[i]);\n if (cmp(oldKey, newKey) !== 0) {\n if (oldKey != null)\n addKeyOrKeys(oldKey);\n if (newKey != null)\n addKeyOrKeys(newKey);\n }\n });\n }\n schema.indexes.forEach(addAffectedIndex);\n}\n\nvar Dexie$1 = (function () {\n function Dexie(name, options) {\n var _this = this;\n this._middlewares = {};\n this.verno = 0;\n var deps = Dexie.dependencies;\n this._options = options = __assign({\n addons: Dexie.addons, autoOpen: true,\n indexedDB: deps.indexedDB, IDBKeyRange: deps.IDBKeyRange }, options);\n this._deps = {\n indexedDB: options.indexedDB,\n IDBKeyRange: options.IDBKeyRange\n };\n var addons = options.addons;\n this._dbSchema = {};\n this._versions = [];\n this._storeNames = [];\n this._allTables = {};\n this.idbdb = null;\n this._novip = this;\n var state = {\n dbOpenError: null,\n isBeingOpened: false,\n onReadyBeingFired: null,\n openComplete: false,\n dbReadyResolve: nop,\n dbReadyPromise: null,\n cancelOpen: nop,\n openCanceller: null,\n autoSchema: true,\n PR1398_maxLoop: 3\n };\n state.dbReadyPromise = new DexiePromise(function (resolve) {\n state.dbReadyResolve = resolve;\n });\n state.openCanceller = new DexiePromise(function (_, reject) {\n state.cancelOpen = reject;\n });\n this._state = state;\n this.name = name;\n this.on = Events(this, \"populate\", \"blocked\", \"versionchange\", \"close\", { ready: [promisableChain, nop] });\n this.on.ready.subscribe = override(this.on.ready.subscribe, function (subscribe) {\n return function (subscriber, bSticky) {\n Dexie.vip(function () {\n var state = _this._state;\n if (state.openComplete) {\n if (!state.dbOpenError)\n DexiePromise.resolve().then(subscriber);\n if (bSticky)\n subscribe(subscriber);\n }\n else if (state.onReadyBeingFired) {\n state.onReadyBeingFired.push(subscriber);\n if (bSticky)\n subscribe(subscriber);\n }\n else {\n subscribe(subscriber);\n var db_1 = _this;\n if (!bSticky)\n subscribe(function unsubscribe() {\n db_1.on.ready.unsubscribe(subscriber);\n db_1.on.ready.unsubscribe(unsubscribe);\n });\n }\n });\n };\n });\n this.Collection = createCollectionConstructor(this);\n this.Table = createTableConstructor(this);\n this.Transaction = createTransactionConstructor(this);\n this.Version = createVersionConstructor(this);\n this.WhereClause = createWhereClauseConstructor(this);\n this.on(\"versionchange\", function (ev) {\n if (ev.newVersion > 0)\n console.warn(\"Another connection wants to upgrade database '\" + _this.name + \"'. Closing db now to resume the upgrade.\");\n else\n console.warn(\"Another connection wants to delete database '\" + _this.name + \"'. Closing db now to resume the delete request.\");\n _this.close();\n });\n this.on(\"blocked\", function (ev) {\n if (!ev.newVersion || ev.newVersion < ev.oldVersion)\n console.warn(\"Dexie.delete('\" + _this.name + \"') was blocked\");\n else\n console.warn(\"Upgrade '\" + _this.name + \"' blocked by other connection holding version \" + ev.oldVersion / 10);\n });\n this._maxKey = getMaxKey(options.IDBKeyRange);\n this._createTransaction = function (mode, storeNames, dbschema, parentTransaction) { return new _this.Transaction(mode, storeNames, dbschema, _this._options.chromeTransactionDurability, parentTransaction); };\n this._fireOnBlocked = function (ev) {\n _this.on(\"blocked\").fire(ev);\n connections\n .filter(function (c) { return c.name === _this.name && c !== _this && !c._state.vcFired; })\n .map(function (c) { return c.on(\"versionchange\").fire(ev); });\n };\n this.use(virtualIndexMiddleware);\n this.use(hooksMiddleware);\n this.use(observabilityMiddleware);\n this.use(cacheExistingValuesMiddleware);\n this.vip = Object.create(this, { _vip: { value: true } });\n addons.forEach(function (addon) { return addon(_this); });\n }\n Dexie.prototype.version = function (versionNumber) {\n if (isNaN(versionNumber) || versionNumber < 0.1)\n throw new exceptions.Type(\"Given version is not a positive number\");\n versionNumber = Math.round(versionNumber * 10) / 10;\n if (this.idbdb || this._state.isBeingOpened)\n throw new exceptions.Schema(\"Cannot add version when database is open\");\n this.verno = Math.max(this.verno, versionNumber);\n var versions = this._versions;\n var versionInstance = versions.filter(function (v) { return v._cfg.version === versionNumber; })[0];\n if (versionInstance)\n return versionInstance;\n versionInstance = new this.Version(versionNumber);\n versions.push(versionInstance);\n versions.sort(lowerVersionFirst);\n versionInstance.stores({});\n this._state.autoSchema = false;\n return versionInstance;\n };\n Dexie.prototype._whenReady = function (fn) {\n var _this = this;\n return (this.idbdb && (this._state.openComplete || PSD.letThrough || this._vip)) ? fn() : new DexiePromise(function (resolve, reject) {\n if (_this._state.openComplete) {\n return reject(new exceptions.DatabaseClosed(_this._state.dbOpenError));\n }\n if (!_this._state.isBeingOpened) {\n if (!_this._options.autoOpen) {\n reject(new exceptions.DatabaseClosed());\n return;\n }\n _this.open().catch(nop);\n }\n _this._state.dbReadyPromise.then(resolve, reject);\n }).then(fn);\n };\n Dexie.prototype.use = function (_a) {\n var stack = _a.stack, create = _a.create, level = _a.level, name = _a.name;\n if (name)\n this.unuse({ stack: stack, name: name });\n var middlewares = this._middlewares[stack] || (this._middlewares[stack] = []);\n middlewares.push({ stack: stack, create: create, level: level == null ? 10 : level, name: name });\n middlewares.sort(function (a, b) { return a.level - b.level; });\n return this;\n };\n Dexie.prototype.unuse = function (_a) {\n var stack = _a.stack, name = _a.name, create = _a.create;\n if (stack && this._middlewares[stack]) {\n this._middlewares[stack] = this._middlewares[stack].filter(function (mw) {\n return create ? mw.create !== create :\n name ? mw.name !== name :\n false;\n });\n }\n return this;\n };\n Dexie.prototype.open = function () {\n return dexieOpen(this);\n };\n Dexie.prototype._close = function () {\n var state = this._state;\n var idx = connections.indexOf(this);\n if (idx >= 0)\n connections.splice(idx, 1);\n if (this.idbdb) {\n try {\n this.idbdb.close();\n }\n catch (e) { }\n this._novip.idbdb = null;\n }\n state.dbReadyPromise = new DexiePromise(function (resolve) {\n state.dbReadyResolve = resolve;\n });\n state.openCanceller = new DexiePromise(function (_, reject) {\n state.cancelOpen = reject;\n });\n };\n Dexie.prototype.close = function () {\n this._close();\n var state = this._state;\n this._options.autoOpen = false;\n state.dbOpenError = new exceptions.DatabaseClosed();\n if (state.isBeingOpened)\n state.cancelOpen(state.dbOpenError);\n };\n Dexie.prototype.delete = function () {\n var _this = this;\n var hasArguments = arguments.length > 0;\n var state = this._state;\n return new DexiePromise(function (resolve, reject) {\n var doDelete = function () {\n _this.close();\n var req = _this._deps.indexedDB.deleteDatabase(_this.name);\n req.onsuccess = wrap(function () {\n _onDatabaseDeleted(_this._deps, _this.name);\n resolve();\n });\n req.onerror = eventRejectHandler(reject);\n req.onblocked = _this._fireOnBlocked;\n };\n if (hasArguments)\n throw new exceptions.InvalidArgument(\"Arguments not allowed in db.delete()\");\n if (state.isBeingOpened) {\n state.dbReadyPromise.then(doDelete);\n }\n else {\n doDelete();\n }\n });\n };\n Dexie.prototype.backendDB = function () {\n return this.idbdb;\n };\n Dexie.prototype.isOpen = function () {\n return this.idbdb !== null;\n };\n Dexie.prototype.hasBeenClosed = function () {\n var dbOpenError = this._state.dbOpenError;\n return dbOpenError && (dbOpenError.name === 'DatabaseClosed');\n };\n Dexie.prototype.hasFailed = function () {\n return this._state.dbOpenError !== null;\n };\n Dexie.prototype.dynamicallyOpened = function () {\n return this._state.autoSchema;\n };\n Object.defineProperty(Dexie.prototype, \"tables\", {\n get: function () {\n var _this = this;\n return keys(this._allTables).map(function (name) { return _this._allTables[name]; });\n },\n enumerable: false,\n configurable: true\n });\n Dexie.prototype.transaction = function () {\n var args = extractTransactionArgs.apply(this, arguments);\n return this._transaction.apply(this, args);\n };\n Dexie.prototype._transaction = function (mode, tables, scopeFunc) {\n var _this = this;\n var parentTransaction = PSD.trans;\n if (!parentTransaction || parentTransaction.db !== this || mode.indexOf('!') !== -1)\n parentTransaction = null;\n var onlyIfCompatible = mode.indexOf('?') !== -1;\n mode = mode.replace('!', '').replace('?', '');\n var idbMode, storeNames;\n try {\n storeNames = tables.map(function (table) {\n var storeName = table instanceof _this.Table ? table.name : table;\n if (typeof storeName !== 'string')\n throw new TypeError(\"Invalid table argument to Dexie.transaction(). Only Table or String are allowed\");\n return storeName;\n });\n if (mode == \"r\" || mode === READONLY)\n idbMode = READONLY;\n else if (mode == \"rw\" || mode == READWRITE)\n idbMode = READWRITE;\n else\n throw new exceptions.InvalidArgument(\"Invalid transaction mode: \" + mode);\n if (parentTransaction) {\n if (parentTransaction.mode === READONLY && idbMode === READWRITE) {\n if (onlyIfCompatible) {\n parentTransaction = null;\n }\n else\n throw new exceptions.SubTransaction(\"Cannot enter a sub-transaction with READWRITE mode when parent transaction is READONLY\");\n }\n if (parentTransaction) {\n storeNames.forEach(function (storeName) {\n if (parentTransaction && parentTransaction.storeNames.indexOf(storeName) === -1) {\n if (onlyIfCompatible) {\n parentTransaction = null;\n }\n else\n throw new exceptions.SubTransaction(\"Table \" + storeName +\n \" not included in parent transaction.\");\n }\n });\n }\n if (onlyIfCompatible && parentTransaction && !parentTransaction.active) {\n parentTransaction = null;\n }\n }\n }\n catch (e) {\n return parentTransaction ?\n parentTransaction._promise(null, function (_, reject) { reject(e); }) :\n rejection(e);\n }\n var enterTransaction = enterTransactionScope.bind(null, this, idbMode, storeNames, parentTransaction, scopeFunc);\n return (parentTransaction ?\n parentTransaction._promise(idbMode, enterTransaction, \"lock\") :\n PSD.trans ?\n usePSD(PSD.transless, function () { return _this._whenReady(enterTransaction); }) :\n this._whenReady(enterTransaction));\n };\n Dexie.prototype.table = function (tableName) {\n if (!hasOwn(this._allTables, tableName)) {\n throw new exceptions.InvalidTable(\"Table \" + tableName + \" does not exist\");\n }\n return this._allTables[tableName];\n };\n return Dexie;\n}());\n\nvar symbolObservable = typeof Symbol !== \"undefined\" && \"observable\" in Symbol\n ? Symbol.observable\n : \"@@observable\";\nvar Observable = (function () {\n function Observable(subscribe) {\n this._subscribe = subscribe;\n }\n Observable.prototype.subscribe = function (x, error, complete) {\n return this._subscribe(!x || typeof x === \"function\" ? { next: x, error: error, complete: complete } : x);\n };\n Observable.prototype[symbolObservable] = function () {\n return this;\n };\n return Observable;\n}());\n\nfunction extendObservabilitySet(target, newSet) {\n keys(newSet).forEach(function (part) {\n var rangeSet = target[part] || (target[part] = new RangeSet());\n mergeRanges(rangeSet, newSet[part]);\n });\n return target;\n}\n\nfunction liveQuery(querier) {\n return new Observable(function (observer) {\n var scopeFuncIsAsync = isAsyncFunction(querier);\n function execute(subscr) {\n if (scopeFuncIsAsync) {\n incrementExpectedAwaits();\n }\n var exec = function () { return newScope(querier, { subscr: subscr, trans: null }); };\n var rv = PSD.trans\n ?\n usePSD(PSD.transless, exec)\n : exec();\n if (scopeFuncIsAsync) {\n rv.then(decrementExpectedAwaits, decrementExpectedAwaits);\n }\n return rv;\n }\n var closed = false;\n var accumMuts = {};\n var currentObs = {};\n var subscription = {\n get closed() {\n return closed;\n },\n unsubscribe: function () {\n closed = true;\n globalEvents.storagemutated.unsubscribe(mutationListener);\n },\n };\n observer.start && observer.start(subscription);\n var querying = false, startedListening = false;\n function shouldNotify() {\n return keys(currentObs).some(function (key) {\n return accumMuts[key] && rangesOverlap(accumMuts[key], currentObs[key]);\n });\n }\n var mutationListener = function (parts) {\n extendObservabilitySet(accumMuts, parts);\n if (shouldNotify()) {\n doQuery();\n }\n };\n var doQuery = function () {\n if (querying || closed)\n return;\n accumMuts = {};\n var subscr = {};\n var ret = execute(subscr);\n if (!startedListening) {\n globalEvents(DEXIE_STORAGE_MUTATED_EVENT_NAME, mutationListener);\n startedListening = true;\n }\n querying = true;\n Promise.resolve(ret).then(function (result) {\n querying = false;\n if (closed)\n return;\n if (shouldNotify()) {\n doQuery();\n }\n else {\n accumMuts = {};\n currentObs = subscr;\n observer.next && observer.next(result);\n }\n }, function (err) {\n querying = false;\n observer.error && observer.error(err);\n subscription.unsubscribe();\n });\n };\n doQuery();\n return subscription;\n });\n}\n\nvar domDeps;\ntry {\n domDeps = {\n indexedDB: _global.indexedDB || _global.mozIndexedDB || _global.webkitIndexedDB || _global.msIndexedDB,\n IDBKeyRange: _global.IDBKeyRange || _global.webkitIDBKeyRange\n };\n}\ncatch (e) {\n domDeps = { indexedDB: null, IDBKeyRange: null };\n}\n\nvar Dexie = Dexie$1;\nprops(Dexie, __assign(__assign({}, fullNameExceptions), {\n delete: function (databaseName) {\n var db = new Dexie(databaseName, { addons: [] });\n return db.delete();\n },\n exists: function (name) {\n return new Dexie(name, { addons: [] }).open().then(function (db) {\n db.close();\n return true;\n }).catch('NoSuchDatabaseError', function () { return false; });\n },\n getDatabaseNames: function (cb) {\n try {\n return getDatabaseNames(Dexie.dependencies).then(cb);\n }\n catch (_a) {\n return rejection(new exceptions.MissingAPI());\n }\n },\n defineClass: function () {\n function Class(content) {\n extend(this, content);\n }\n return Class;\n }, ignoreTransaction: function (scopeFunc) {\n return PSD.trans ?\n usePSD(PSD.transless, scopeFunc) :\n scopeFunc();\n }, vip: vip, async: function (generatorFn) {\n return function () {\n try {\n var rv = awaitIterator(generatorFn.apply(this, arguments));\n if (!rv || typeof rv.then !== 'function')\n return DexiePromise.resolve(rv);\n return rv;\n }\n catch (e) {\n return rejection(e);\n }\n };\n }, spawn: function (generatorFn, args, thiz) {\n try {\n var rv = awaitIterator(generatorFn.apply(thiz, args || []));\n if (!rv || typeof rv.then !== 'function')\n return DexiePromise.resolve(rv);\n return rv;\n }\n catch (e) {\n return rejection(e);\n }\n },\n currentTransaction: {\n get: function () { return PSD.trans || null; }\n }, waitFor: function (promiseOrFunction, optionalTimeout) {\n var promise = DexiePromise.resolve(typeof promiseOrFunction === 'function' ?\n Dexie.ignoreTransaction(promiseOrFunction) :\n promiseOrFunction)\n .timeout(optionalTimeout || 60000);\n return PSD.trans ?\n PSD.trans.waitFor(promise) :\n promise;\n },\n Promise: DexiePromise,\n debug: {\n get: function () { return debug; },\n set: function (value) {\n setDebug(value, value === 'dexie' ? function () { return true; } : dexieStackFrameFilter);\n }\n },\n derive: derive, extend: extend, props: props, override: override,\n Events: Events, on: globalEvents, liveQuery: liveQuery, extendObservabilitySet: extendObservabilitySet,\n getByKeyPath: getByKeyPath, setByKeyPath: setByKeyPath, delByKeyPath: delByKeyPath, shallowClone: shallowClone, deepClone: deepClone, getObjectDiff: getObjectDiff, cmp: cmp, asap: asap$1,\n minKey: minKey,\n addons: [],\n connections: connections,\n errnames: errnames,\n dependencies: domDeps,\n semVer: DEXIE_VERSION, version: DEXIE_VERSION.split('.')\n .map(function (n) { return parseInt(n); })\n .reduce(function (p, c, i) { return p + (c / Math.pow(10, i * 2)); }) }));\nDexie.maxKey = getMaxKey(Dexie.dependencies.IDBKeyRange);\n\nif (typeof dispatchEvent !== 'undefined' && typeof addEventListener !== 'undefined') {\n globalEvents(DEXIE_STORAGE_MUTATED_EVENT_NAME, function (updatedParts) {\n if (!propagatingLocally) {\n var event_1;\n if (isIEOrEdge) {\n event_1 = document.createEvent('CustomEvent');\n event_1.initCustomEvent(STORAGE_MUTATED_DOM_EVENT_NAME, true, true, updatedParts);\n }\n else {\n event_1 = new CustomEvent(STORAGE_MUTATED_DOM_EVENT_NAME, {\n detail: updatedParts\n });\n }\n propagatingLocally = true;\n dispatchEvent(event_1);\n propagatingLocally = false;\n }\n });\n addEventListener(STORAGE_MUTATED_DOM_EVENT_NAME, function (_a) {\n var detail = _a.detail;\n if (!propagatingLocally) {\n propagateLocally(detail);\n }\n });\n}\nfunction propagateLocally(updateParts) {\n var wasMe = propagatingLocally;\n try {\n propagatingLocally = true;\n globalEvents.storagemutated.fire(updateParts);\n }\n finally {\n propagatingLocally = wasMe;\n }\n}\nvar propagatingLocally = false;\n\nif (typeof BroadcastChannel !== 'undefined') {\n var bc_1 = new BroadcastChannel(STORAGE_MUTATED_DOM_EVENT_NAME);\n if (typeof bc_1.unref === 'function') {\n bc_1.unref();\n }\n globalEvents(DEXIE_STORAGE_MUTATED_EVENT_NAME, function (changedParts) {\n if (!propagatingLocally) {\n bc_1.postMessage(changedParts);\n }\n });\n bc_1.onmessage = function (ev) {\n if (ev.data)\n propagateLocally(ev.data);\n };\n}\nelse if (typeof self !== 'undefined' && typeof navigator !== 'undefined') {\n globalEvents(DEXIE_STORAGE_MUTATED_EVENT_NAME, function (changedParts) {\n try {\n if (!propagatingLocally) {\n if (typeof localStorage !== 'undefined') {\n localStorage.setItem(STORAGE_MUTATED_DOM_EVENT_NAME, JSON.stringify({\n trig: Math.random(),\n changedParts: changedParts,\n }));\n }\n if (typeof self['clients'] === 'object') {\n __spreadArray([], self['clients'].matchAll({ includeUncontrolled: true }), true).forEach(function (client) {\n return client.postMessage({\n type: STORAGE_MUTATED_DOM_EVENT_NAME,\n changedParts: changedParts,\n });\n });\n }\n }\n }\n catch (_a) { }\n });\n if (typeof addEventListener !== 'undefined') {\n addEventListener('storage', function (ev) {\n if (ev.key === STORAGE_MUTATED_DOM_EVENT_NAME) {\n var data = JSON.parse(ev.newValue);\n if (data)\n propagateLocally(data.changedParts);\n }\n });\n }\n var swContainer = self.document && navigator.serviceWorker;\n if (swContainer) {\n swContainer.addEventListener('message', propagateMessageLocally);\n }\n}\nfunction propagateMessageLocally(_a) {\n var data = _a.data;\n if (data && data.type === STORAGE_MUTATED_DOM_EVENT_NAME) {\n propagateLocally(data.changedParts);\n }\n}\n\nDexiePromise.rejectionMapper = mapError;\nsetDebug(debug, dexieStackFrameFilter);\n\nexport { Dexie$1 as Dexie, RangeSet, Dexie$1 as default, liveQuery, mergeRanges, rangesOverlap };\n//# sourceMappingURL=dexie.mjs.map\n","import Dexie from 'dexie'\n\nexport const db = new Dexie('pushDatabase')\nexport const bm = new Dexie('bookmarksDatabase')\n\ndb.version(1).stores({\n messages: '++id, uuid'\n})\n\nbm.version(1).stores({\n messages: '++id, uuid, article'\n})\n","import React from 'react'\nimport Helmet from 'react-helmet'\n\nconst HomePageMeta = (props) => {\n const schema = {\n '@context': 'https://schema.org',\n '@graph': [{\n '@type': 'Organization',\n name: process.env.RAZZLE_SCHEMA_SITE_NAME,\n url: process.env.RAZZLE_SITE_URL,\n logo: process.env.RAZZLE_SITE_URL + '/logo.jpg',\n description: process.env.RAZZLE_SITE_DESCRIPTION,\n sameAs: [\n process.env.RAZZLE_SITE_FACEBOOK,\n process.env.RAZZLE_SITE_TWITTER,\n process.env.RAZZLE_SITE_INSTAGRAM,\n process.env.RAZZLE_SITE_YOUTUBE,\n process.env.RAZZLE_SITE_LINKEDIN\n ]\n }, {\n '@type': 'WebSite',\n name: process.env.RAZZLE_SCHEMA_SITE_NAME,\n url: process.env.RAZZLE_SITE_URL,\n headline: process.env.RAZZLE_SITE_TITLE,\n potentialAction: {\n '@type': 'SearchAction',\n target: process.env.RAZZLE_SITE_URL + '/search?q={search_term_string}',\n 'query-input': 'required name=search_term_string'\n }\n }]\n }\n return (\n \n {/* inline script elements */}\n \n \n )\n}\nexport default HomePageMeta\n","import React, { Fragment } from 'react'\nimport Ad from '../../components/Ad'\nimport FORMATS from '../../components/AdFormats'\nimport ArticleCard from '../../components/ArticleCard'\nimport { Desktop, Mobile, MobileElse } from 'ion-media'\nimport MagazineCover from '../../components/MagazineCover'\nimport useHasMounted from '../../components/useHasMounted'\n\nconst Default = ({ articles, section, noImage, isConnected, moreButton }) => {\n const hasMounted = useHasMounted()\n return (\n <>\n {articles.map((article, index) => (\n \n {hasMounted &&\n \n {((index === 15) || (((index - 15) % 14 === 0) && (index > 16))) && (\n \n )}\n }\n {index <= 3 && (\n \n )}\n {index > 3 && (\n \n )}\n {hasMounted &&\n \n {index === 4 && (\n \n )}\n }\n \n {(index === 2) && (\n \n )}\n \n {Number.isInteger((index + 5) / 4) && (\n \n
\n \n
\n
\n )}\n
\n ))}\n {moreButton}\n \n )\n}\n\nexport default Default\n","import React, { Component, Fragment } from 'react'\nimport { connect } from 'react-redux'\nimport Helmet from 'react-helmet'\nimport { Articles } from 'ion-article-cmp'\nimport HomePageMeta from '../../components/HomePageMeta'\nimport Ad from '../../components/Ad'\nimport WingBanners from '../../components/WingBanners'\nimport FORMATS from '../../components/AdFormats'\nimport { MobileElse } from 'ion-media'\nimport NoImage from '../../static/no-image.png'\nimport HomePageTemplate from '../../templates/Articles/HomePageHighlight'\nimport SiteSidebar from '../../components/Sidebar'\nimport logo from '../../static/general/glamour.svg'\nimport MagazineCover from '../../components/MagazineCover'\n\nexport class HomePage extends Component {\n constructor (props) {\n super(props)\n // Don't call this.setState() here!\n this.state = { isEmpty: true, is600: false }\n }\n\n render () {\n return (\n <>\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n \n \n \n \n \n
\n \n \n \n \n )\n }\n}\n\nconst mapStateToProps = (state) => ({ articles: state.articles })\n\nexport default connect(mapStateToProps)(HomePage)\n","import React, { useEffect, useState } from 'react'\nimport { Link } from 'react-router-dom'\nimport axios from 'axios'\nimport qs from 'qs'\nimport { urlB64ToUint8Array } from './ServiceWorker'\nimport Popup from 'ion-popup'\nimport popupLogo from '../static/general/glam-popup.svg'\n\nconst DefaultTemplate = ({ componentText, subscribeConcept }) => (\n \n)\n\nconst FollowConcept = ({ topic, followText, unFollowText, template }) => {\n const Template = template || DefaultTemplate\n const [isSubscribed, setIsSubscribed] = useState(false)\n const [helpPopupVisible, setHelpPopupVisible] = useState(false)\n const [subscription, setSubscription] = useState(false)\n const [registration, setRegistration] = useState(false)\n\n useEffect(() => {\n if (navigator.serviceWorker) {\n navigator.serviceWorker.getRegistration()\n .then(reg => {\n console.log('*** FollowConcept: registration', reg)\n setRegistration(reg)\n })\n }\n }, [])\n\n useEffect(() => {\n console.log('*** FollowConcept: registration', registration)\n if (registration && registration.pushManager) {\n registration.pushManager.getSubscription()\n .then(sub => {\n console.log('*** FollowConcept: subscription', sub)\n setSubscription(sub)\n })\n }\n }, [registration])\n\n useEffect(() => {\n console.log('FollowConcept setIsSubscribed', topic.name, subscription, topic.topic)\n async function setSubscribed () {\n const isSubscribed = await isSubscribedToConcept(topic.topic, subscription)\n setIsSubscribed(isSubscribed)\n }\n setSubscribed()\n }, [subscription, topic.topic])\n\n function isSubscribedToConcept (uuid, subscription) {\n if (!subscription) {\n console.log('*** isSubscribedToConcept: User is not subscribed to any push notifications')\n return Promise.resolve(false)\n }\n const data = qs.stringify({\n titleKey: process.env.RAZZLE_TITLE_KEY,\n endpoint: (subscription && subscription.endpoint) || ''\n })\n return axios.post(process.env.RAZZLE_PUSH_SERVICE + '/topics', data, {\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded'\n }\n })\n .then(res => {\n const subscribed = res.data.filter(topic => topic.topic === uuid)\n console.log('*** subscriptions response', res.status, res.data, 'subscribed:', (subscribed.length > 0))\n return (subscribed.length > 0)\n })\n .catch(error => {\n console.log('*** isSubscribedToConcept error:', error.message)\n return false\n })\n }\n\n function subscribeConcept (uuid, subscription) {\n const data = {\n topic: uuid,\n titleKey: process.env.RAZZLE_TITLE_KEY,\n subscription: JSON.stringify(subscription)\n }\n console.log('*** FollowConcept:', 'Subscribing', data)\n console.log('Calling', isSubscribed ? 'unsubscribe' : 'subscribe', topic.name)\n axios.post(process.env.RAZZLE_PUSH_SERVICE + (isSubscribed ? '/unsubscribe' : '/subscribe'), qs.stringify(data), {\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded'\n }\n })\n .then(res => setIsSubscribed(!isSubscribed))\n .catch(error => {\n console.log(isSubscribed ? 'Unsubscribe' : 'Subscribe', 'Error:', error.message)\n return false\n })\n }\n\n function registerAndSubscribeConcept (uuid) {\n console.log('*** FollowConcept:', 'Registering and subscribing')\n if (registration) {\n registration.pushManager.subscribe({\n userVisibleOnly: true,\n applicationServerKey: urlB64ToUint8Array(process.env.RAZZLE_SERVERKEY)\n })\n .then(function (subscription) {\n console.log('User IS now subscribed.')\n setSubscription(subscription)\n return subscribeConcept(uuid, subscription)\n })\n .catch(function (err) {\n console.log('Failed to subscribe the user: ', err)\n setHelpPopupVisible(true)\n setSubscription(false)\n })\n }\n }\n\n const canPush = !!(process.env.RAZZLE_ENABLE_PUSHNOTIFICATIONS && typeof window !== 'undefined' && typeof window.navigator !== 'undefined' && subscription)\n const isFollowing = canPush && isSubscribed\n\n if (canPush) {\n return