{"version":3,"sources":["../webpack/bootstrap","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/regenerator/index.js","../node_modules/workbox-core/_version.js","../node_modules/workbox-precaching/_version.js","../node_modules/workbox-routing/_version.js","../node_modules/workbox-strategies/_version.js","../node_modules/workbox-expiration/_version.js","../node_modules/babel-preset-react-app/node_modules/regenerator-runtime/runtime.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/workbox-core/_private/logger.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createSuper.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/construct.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/isNativeFunction.js","../node_modules/workbox-core/models/messages/messages.js","../node_modules/workbox-core/models/messages/messageGenerator.js","../node_modules/workbox-core/_private/WorkboxError.js","../node_modules/workbox-core/models/quotaErrorCallbacks.js","../node_modules/workbox-core/registerQuotaErrorCallback.js","../node_modules/workbox-core/_private/cacheNames.js","../node_modules/workbox-core/_private/canConstructResponseFromBodyStream.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","../node_modules/workbox-core/_private/cacheMatchIgnoreParams.js","../node_modules/workbox-core/_private/dontWaitFor.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/workbox-core/_private/DBWrapper.js","../node_modules/workbox-core/_private/Deferred.js","../node_modules/workbox-core/_private/deleteDatabase.js","../node_modules/workbox-core/_private/executeQuotaErrorCallbacks.js","../node_modules/workbox-core/_private/getFriendlyURL.js","../node_modules/workbox-core/_private/timeout.js","../node_modules/workbox-core/_private/waitUntil.js","../node_modules/workbox-core/copyResponse.js","../node_modules/workbox-expiration/models/CacheTimestampsModel.js","../node_modules/workbox-expiration/CacheExpiration.js","../node_modules/workbox-expiration/ExpirationPlugin.js","../node_modules/workbox-precaching/utils/createCacheKey.js","../node_modules/workbox-precaching/utils/PrecacheInstallReportPlugin.js","../node_modules/workbox-precaching/utils/PrecacheCacheKeyPlugin.js","../node_modules/workbox-strategies/StrategyHandler.js","../node_modules/workbox-strategies/Strategy.js","../node_modules/workbox-precaching/PrecacheStrategy.js","../node_modules/workbox-precaching/PrecacheController.js","../node_modules/workbox-precaching/utils/getOrCreatePrecacheController.js","../node_modules/workbox-routing/utils/getOrCreateDefaultRouter.js","../node_modules/workbox-routing/utils/constants.js","../node_modules/workbox-routing/utils/normalizeHandler.js","../node_modules/workbox-routing/Route.js","../node_modules/workbox-routing/RegExpRoute.js","../node_modules/workbox-routing/Router.js","../node_modules/workbox-routing/registerRoute.js","../node_modules/workbox-precaching/utils/removeIgnoredSearchParams.js","../node_modules/workbox-precaching/utils/generateURLVariations.js","../node_modules/workbox-precaching/PrecacheRoute.js","../node_modules/workbox-strategies/utils/messages.js","../node_modules/workbox-precaching/precacheAndRoute.js","../node_modules/workbox-strategies/plugins/cacheOkAndOpaquePlugin.js","../node_modules/workbox-strategies/StaleWhileRevalidate.js","../node_modules/workbox-core/clientsClaim.js","../node_modules/workbox-precaching/precache.js","service-worker.ts","../node_modules/workbox-precaching/addRoute.js","../node_modules/workbox-precaching/createHandlerBoundToURL.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","self","_","e","runtime","undefined","Op","hasOwn","$Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","define","obj","configurable","writable","err","wrap","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","context","Context","_invoke","state","GenStateSuspendedStart","method","arg","GenStateExecuting","Error","GenStateCompleted","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","record","tryCatch","type","done","GenStateSuspendedYield","makeInvokeMethod","fn","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","this","getProto","getPrototypeOf","NativeIteratorPrototype","values","Gp","defineIteratorMethods","forEach","AsyncIterator","PromiseImpl","invoke","resolve","reject","result","__await","then","unwrapped","error","previousPromise","callInvokeWithMethodAndArg","TypeError","info","resultName","next","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","iterable","iteratorMethod","isNaN","length","constructor","displayName","isGeneratorFunction","genFun","ctor","mark","setPrototypeOf","__proto__","awrap","async","Promise","iter","toString","keys","reverse","pop","skipTempReset","prev","charAt","slice","stop","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","Function","_arrayLikeToArray","arr","len","arr2","Array","_unsupportedIterableToArray","minLen","from","test","_toConsumableArray","isArray","logger","_createForOfIteratorHelper","allowArrayLike","it","F","_e","f","normalCompletion","didErr","step","_e2","_classCallCheck","instance","Constructor","_setPrototypeOf","_inherits","subClass","superClass","_getPrototypeOf","_isNativeReflectConstruct","Reflect","construct","sham","Proxy","Date","_typeof","_possibleConstructorReturn","ReferenceError","_createSuper","Derived","hasNativeReflectConstruct","Super","NewTarget","arguments","apply","Parent","args","Class","a","_cache","Map","indexOf","has","set","Wrapper","messageGenerator","code","msg","_len","_key","concat","JSON","stringify","_Error","WorkboxError","_super","errorCode","details","_this","message","quotaErrorCallbacks","Set","registerQuotaErrorCallback","callback","add","_cacheNameDetails","googleAnalytics","precache","prefix","suffix","registration","scope","_createCacheName","cacheName","filter","join","userCacheName","_defineProperty","ownKeys","enumerableOnly","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","_objectSpread2","target","source","getOwnPropertyDescriptors","defineProperties","asyncGeneratorStep","gen","_next","_throw","_asyncToGenerator","stripParams","fullURL","ignoreParams","_step","strippedURL","URL","_iterator","param","searchParams","delete","href","cacheMatchIgnoreParams","_x","_x2","_x3","_x4","_cacheMatchIgnoreParams","_callee","cache","request","matchOptions","strippedRequestURL","keysOptions","cacheKeys","_iterator2","_step2","cacheKey","strippedCacheKeyURL","_context","url","match","ignoreSearch","t0","canConstructResponseFromBodyStream","testResponse","Response","body","dontWaitFor","promise","_slicedToArray","_arr","_n","_d","_s","_i","_defineProperties","props","descriptor","_createClass","protoProps","staticProps","DBWrapper","version","_ref","onupgradeneeded","onversionchange","_db","_name","_version","_onupgradeneeded","_onversionchange","close","_open","_this2","openRequestTimedOut","setTimeout","OPEN_TIMEOUT","openRequest","indexedDB","open","onerror","evt","transaction","abort","onsuccess","db","_getKey","_callee2","storeName","query","_context2","getAllKeys","_getAll","_callee3","count","_context3","getAllMatching","_x5","_getAllKeys","_callee4","entries","_context4","includeKeys","map","_x6","_x7","_x8","_getAllMatching","_callee5","_ref2","index","_ref2$query","_ref2$direction","direction","_ref2$includeKeys","_args5","_context5","txn","store","objectStore","results","openCursor","cursor","continue","_x9","_transaction","_callee6","storeNames","_this3","_context6","onabort","oncomplete","_x10","_x11","_x12","_call2","_callee7","_args7","_context7","objStore","_x13","_x14","_x15","_Object$entries$_i","_Object$entries","_loop2","IDBObjectStore","_ref3","_callee8","_len2","_key2","_args8","_context8","_call","_x16","readonly","readwrite","Deferred","deleteDatabase","onblocked","executeQuotaErrorCallbacks","_executeQuotaErrorCallbacks","getFriendlyURL","String","location","replace","RegExp","origin","timeout","ms","waitUntil","event","asyncFn","returnPromise","copyResponse","_copyResponse","response","modifier","responseURL","clonedResponse","responseInit","modifiedResponseInit","clone","headers","Headers","status","statusText","blob","OBJECT_STORE_NAME","normalizeURL","unNormalizedUrl","hash","CacheTimestampsModel","_cacheName","_handleUpgrade","createObjectStore","keyPath","createIndex","unique","_setTimestamp","timestamp","id","_getId","put","_getTimestamp","_expireEntries","minTimestamp","maxCount","entriesToDelete","urlsDeleted","entriesNotDeletedCount","CacheExpiration","config","_isRunning","_rerunRequested","_maxEntries","maxEntries","_maxAgeSeconds","maxAgeSeconds","_matchOptions","_timestampModel","urlsExpired","now","expireEntries","caches","_updateTimestamp","setTimestamp","_isURLExpired","expireOlderThan","getTimestamp","_delete2","Infinity","ExpirationPlugin","cachedResponseWillBeUsed","cachedResponse","isFresh","cacheExpiration","updateTimestampDone","_isResponseDateFresh","_getCacheExpiration","updateTimestamp","cacheDidUpdate","_ref4","_config","_cacheExpirations","purgeOnQuotaError","deleteCacheAndMetadata","dateHeaderTimestamp","_getDateHeaderTimestamp","dateHeader","headerTime","getTime","_deleteCacheAndMetadata","_step$value","createCacheKey","urlObject","revision","_urlObject","cacheKeyURL","originalURL","PrecacheInstallReportPlugin","updatedURLs","notUpdatedURLs","handlerWillStart","originalRequest","PrecacheCacheKeyPlugin","precacheController","cacheKeyWillBeUsed","params","_precacheController","getCacheKeyForURL","Request","toRequest","input","StrategyHandler","strategy","options","_cacheKeys","assign","_strategy","_handlerDeferred","_extendLifetimePromises","_plugins","plugins","_pluginStateMap","plugin","_fetch","fetch","possiblePreloadResponse","cb","pluginFilteredRequest","fetchResponse","_iterator3","_step3","FetchEvent","preloadResponse","hasCallback","iterateCallbacks","t1","thrownError","fetchOptions","t2","t3","runCallbacks","_fetchAndCachePut","responseClone","cachePut","_cacheMatch","_this$_strategy","effectiveRequest","multiMatchOptions","_iterator4","_step4","getCacheKey","_cachePut","responseToCache","_this$_strategy2","hasCacheUpdateCallback","oldResponse","_iterator5","_step5","_ensureResponseSafeToCache","newResponse","_getCacheKey","_iterator6","_step6","_step7","_iterator7","_runCallbacks","_iterator8","_step8","_iterator9","_step9","_loop","statefulCallback","statefulParam","_doneWaiting","_context9","shift","_ensureResponseSafeToCache2","pluginsUsed","_iterator10","_step10","_context10","Strategy","handleAll","handler","responseDone","_getResponse","_awaitComplete","_getResponse2","_callback","_handle","_awaitComplete2","doneWaiting","destroy","_Strategy","PrecacheStrategy","_fallbackToNetwork","fallbackToNetwork","copyRedirectedCacheableResponsesPlugin","_handle2","cacheMatch","_handleInstall","_handleFetch","_handleFetch2","groupCollapsed","log","groupEnd","_handleInstall2","_useDefaultCacheabilityPluginIfNeeded","defaultPluginIndex","cacheWillUpdatePluginCount","defaultPrecacheCacheabilityPlugin","cacheWillUpdate","splice","redirected","PrecacheController","_ref$plugins","_ref$fallbackToNetwor","_urlsToCacheKeys","_urlsToCacheModes","_cacheKeysToIntegrities","install","activate","addToCacheList","_installAndActiveListenersAdded","addEventListener","urlsToWarnAbout","_createCacheKey","cacheMode","firstEntry","secondEntry","integrity","warningMessage","console","warn","installReportPlugin","_step2$value","credentials","all","currentlyCachedRequests","expectedCacheKeys","deletedURLs","_matchPrecache","defaultMethod","normalizeHandler","Route","catchHandler","_Route","RegExpRoute","regExp","exec","Router","_routes","_defaultHandlerMap","responsePromise","handleRequest","respondWith","data","payload","requestPromises","urlsToCache","ports","postMessage","protocol","startsWith","sameOrigin","_this$findMatchingRou","findMatchingRoute","route","_catchHandler","catch","matchResult","routeIndex","addFetchListener","addCacheListener","registerRoute","capture","captureUrl","moduleName","funcName","paramName","removeIgnoredSearchParams","ignoreURLParametersMatching","some","_marked","generateURLVariations","_ref$ignoreURLParamet","_ref$directoryIndex","directoryIndex","_ref$cleanURLs","cleanURLs","urlManipulation","urlWithoutIgnoredParams","directoryURL","cleanURL","additionalURLs","urlToAttempt","_args","pathname","endsWith","PrecacheRoute","urlsToCacheKeys","getURLsToCacheKeys","possibleURL","cacheOkAndOpaquePlugin","_cacheWillUpdate","StaleWhileRevalidate","unshift","fetchAndCachePromise","fetchAndCachePut","clients","claim","__WB_MANIFEST","addRoute","fileExtensionRegexp","process","createHandlerBoundToURL","skipWaiting"],"mappings":"aACE,IAAI,EAAmB,GAGvB,SAAS,EAAoB,GAG5B,GAAG,EAAiB,GACnB,OAAO,EAAiB,GAAU,QAGnC,IAAI,EAAS,EAAiB,GAAY,CACzC,EAAG,EACH,GAAG,EACH,QAAS,IAUV,OANA,EAAQ,GAAU,KAAK,EAAO,QAAS,EAAQ,EAAO,QAAS,GAG/D,EAAO,GAAI,EAGJ,EAAO,QAKf,EAAoB,EAAI,EAGxB,EAAoB,EAAI,EAGxB,EAAoB,EAAI,SAAS,EAAS,EAAM,GAC3C,EAAoB,EAAE,EAAS,IAClC,OAAO,eAAe,EAAS,EAAM,CAAE,YAAY,EAAM,IAAK,KAKhE,EAAoB,EAAI,SAAS,GACX,qBAAX,QAA0B,OAAO,aAC1C,OAAO,eAAe,EAAS,OAAO,YAAa,CAAE,MAAO,WAE7D,OAAO,eAAe,EAAS,aAAc,CAAE,OAAO,KAQvD,EAAoB,EAAI,SAAS,EAAO,GAEvC,GADU,EAAP,IAAU,EAAQ,EAAoB,IAC/B,EAAP,EAAU,OAAO,EACpB,GAAW,EAAP,GAA8B,kBAAV,GAAsB,GAAS,EAAM,WAAY,OAAO,EAChF,IAAI,EAAK,OAAO,OAAO,MAGvB,GAFA,EAAoB,EAAE,GACtB,OAAO,eAAe,EAAI,UAAW,CAAE,YAAY,EAAM,MAAO,IACtD,EAAP,GAA4B,iBAAT,EAAmB,IAAI,IAAI,KAAO,EAAO,EAAoB,EAAE,EAAI,EAAK,SAAS,GAAO,OAAO,EAAM,IAAQ,KAAK,KAAM,IAC9I,OAAO,GAIR,EAAoB,EAAI,SAAS,GAChC,IAAI,EAAS,GAAU,EAAO,WAC7B,WAAwB,OAAO,EAAgB,SAC/C,WAA8B,OAAO,GAEtC,OADA,EAAoB,EAAE,EAAQ,IAAK,GAC5B,GAIR,EAAoB,EAAI,SAAS,EAAQ,GAAY,OAAO,OAAO,UAAU,eAAe,KAAK,EAAQ,IAGzG,EAAoB,EAAI,0CAIjB,EAAoB,EAAoB,EAAI,qBClFrD,EAAO,QAAU,EAAQ,iCCEzB,IACE,KAAK,uBAAyB,IAC9B,MAAO,mCCFT,IACE,KAAK,6BAA+B,IACpC,MAAO,mCCFT,IACE,KAAK,0BAA4B,IACjC,MAAO,mCCFT,IACE,KAAK,6BAA+B,IACpC,MAAO,mCCFT,IACE,KAAK,6BAA+B,IACpC,MAAO,sBCET,IAAI,EAAU,SAAU,GACtB,aAEA,IAEI,EAFA,EAAK,OAAO,UACZ,EAAS,EAAG,eAGZ,EAA4B,oBAAX,OAAwB,OAAS,GAClD,EAAiB,EAAQ,UAAY,aACrC,EAAsB,EAAQ,eAAiB,kBAC/C,EAAoB,EAAQ,aAAe,gBAE/C,SAAS,EAAO,EAAK,EAAK,GAOxB,OANA,OAAO,eAAe,EAAK,EAAK,CAC9B,MAAO,EACP,YAAY,EACZ,cAAc,EACd,UAAU,IAEL,EAAI,GAGb,IAEE,EAAO,GAAI,IACX,MAAO,GACP,EAAS,SAAgB,EAAK,EAAK,GACjC,OAAO,EAAI,GAAO,GAItB,SAAS,EAAK,EAAS,EAAS,EAAM,GAEpC,IAAI,EAAiB,GAAW,EAAQ,qBAAqB,EAAY,EAAU,EAC/E,EAAY,OAAO,OAAO,EAAe,WACzC,EAAU,IAAI,EAAQ,GAAe,IAIzC,OADA,EAAU,QA4LZ,SAA0B,EAAS,EAAM,GACvC,IAAI,EAAQ,EACZ,OAAO,SAAgB,EAAQ,GAC7B,GAAI,IAAU,EACZ,MAAM,IAAI,MAAM,gCAGlB,GAAI,IAAU,EAAmB,CAC/B,GAAe,UAAX,EACF,MAAM,EAKR,OAAO,IAMT,IAHA,EAAQ,OAAS,EACjB,EAAQ,IAAM,IAED,CACX,IAAI,EAAW,EAAQ,SAEvB,GAAI,EAAU,CACZ,IAAI,EAAiB,EAAoB,EAAU,GAEnD,GAAI,EAAgB,CAClB,GAAI,IAAmB,EAAkB,SACzC,OAAO,GAIX,GAAuB,SAAnB,EAAQ,OAGV,EAAQ,KAAO,EAAQ,MAAQ,EAAQ,SAClC,GAAuB,UAAnB,EAAQ,OAAoB,CACrC,GAAI,IAAU,EAEZ,MADA,EAAQ,EACF,EAAQ,IAGhB,EAAQ,kBAAkB,EAAQ,SACN,WAAnB,EAAQ,QACjB,EAAQ,OAAO,SAAU,EAAQ,KAGnC,EAAQ,EACR,IAAI,EAAS,EAAS,EAAS,EAAM,GAErC,GAAoB,WAAhB,EAAO,KAAmB,CAK5B,GAFA,EAAQ,EAAQ,KAAO,EAAoB,EAEvC,EAAO,MAAQ,EACjB,SAGF,MAAO,CACL,MAAO,EAAO,IACd,KAAM,EAAQ,MAES,UAAhB,EAAO,OAChB,EAAQ,EAGR,EAAQ,OAAS,QACjB,EAAQ,IAAM,EAAO,OAhQP,CAAiB,EAAS,EAAM,GAC7C,EAcT,SAAS,EAAS,EAAI,EAAK,GACzB,IACE,MAAO,CACL,KAAM,SACN,IAAK,EAAG,KAAK,EAAK,IAEpB,MAAO,GACP,MAAO,CACL,KAAM,QACN,IAAK,IApBX,EAAQ,KAAO,EAyBf,IAAI,EAAyB,iBACzB,EAAyB,iBACzB,EAAoB,YACpB,EAAoB,YAGpB,EAAmB,GAKvB,SAAS,KAET,SAAS,KAET,SAAS,KAIT,IAAI,EAAoB,GAExB,EAAkB,GAAkB,WAClC,OAAO,MAGT,IAAI,EAAW,OAAO,eAClB,EAA0B,GAAY,EAAS,EAAS,EAAO,MAE/D,GAA2B,IAA4B,GAAM,EAAO,KAAK,EAAyB,KAGpG,EAAoB,GAGtB,IAAI,EAAK,EAA2B,UAAY,EAAU,UAAY,OAAO,OAAO,GAMpF,SAAS,EAAsB,GAC7B,CAAC,OAAQ,QAAS,UAAU,SAAQ,SAAU,GAC5C,EAAO,EAAW,GAAQ,SAAU,GAClC,OAAO,KAAK,QAAQ,EAAQ,SAkClC,SAAS,EAAc,EAAW,GAChC,SAAS,EAAO,EAAQ,EAAK,EAAS,GACpC,IAAI,EAAS,EAAS,EAAU,GAAS,EAAW,GAEpD,GAAoB,UAAhB,EAAO,KAEJ,CACL,IAAI,EAAS,EAAO,IAChB,EAAQ,EAAO,MAEnB,OAAI,GAA0B,kBAAV,GAAsB,EAAO,KAAK,EAAO,WACpD,EAAY,QAAQ,EAAM,SAAS,MAAK,SAAU,GACvD,EAAO,OAAQ,EAAO,EAAS,MAC9B,SAAU,GACX,EAAO,QAAS,EAAK,EAAS,MAI3B,EAAY,QAAQ,GAAO,MAAK,SAAU,GAI/C,EAAO,MAAQ,EACf,EAAQ,MACP,SAAU,GAGX,OAAO,EAAO,QAAS,EAAO,EAAS,MAtBzC,EAAO,EAAO,KA2BlB,IAAI,EA4BJ,KAAK,QA1BL,SAAiB,EAAQ,GACvB,SAAS,IACP,OAAO,IAAI,GAAY,SAAU,EAAS,GACxC,EAAO,EAAQ,EAAK,EAAS,MAIjC,OAAO,EAYP,EAAkB,EAAgB,KAAK,EAEvC,GAA8B,KAyGlC,SAAS,EAAoB,EAAU,GACrC,IAAI,EAAS,EAAS,SAAS,EAAQ,QAEvC,GAAI,IAAW,EAAW,CAKxB,GAFA,EAAQ,SAAW,KAEI,UAAnB,EAAQ,OAAoB,CAE9B,GAAI,EAAS,SAAiB,SAG5B,EAAQ,OAAS,SACjB,EAAQ,IAAM,EACd,EAAoB,EAAU,GAEP,UAAnB,EAAQ,QAGV,OAAO,EAIX,EAAQ,OAAS,QACjB,EAAQ,IAAM,IAAI,UAAU,kDAG9B,OAAO,EAGT,IAAI,EAAS,EAAS,EAAQ,EAAS,SAAU,EAAQ,KAEzD,GAAoB,UAAhB,EAAO,KAIT,OAHA,EAAQ,OAAS,QACjB,EAAQ,IAAM,EAAO,IACrB,EAAQ,SAAW,KACZ,EAGT,IAAI,EAAO,EAAO,IAElB,OAAK,EAOD,EAAK,MAGP,EAAQ,EAAS,YAAc,EAAK,MAEpC,EAAQ,KAAO,EAAS,QAOD,WAAnB,EAAQ,SACV,EAAQ,OAAS,OACjB,EAAQ,IAAM,GASlB,EAAQ,SAAW,KACZ,GANE,GAxBP,EAAQ,OAAS,QACjB,EAAQ,IAAM,IAAI,UAAU,oCAC5B,EAAQ,SAAW,KACZ,GA+CX,SAAS,EAAa,GACpB,IAAI,EAAQ,CACV,OAAQ,EAAK,IAGX,KAAK,IACP,EAAM,SAAW,EAAK,IAGpB,KAAK,IACP,EAAM,WAAa,EAAK,GACxB,EAAM,SAAW,EAAK,IAGxB,KAAK,WAAW,KAAK,GAGvB,SAAS,EAAc,GACrB,IAAI,EAAS,EAAM,YAAc,GACjC,EAAO,KAAO,gBACP,EAAO,IACd,EAAM,WAAa,EAGrB,SAAS,EAAQ,GAIf,KAAK,WAAa,CAAC,CACjB,OAAQ,SAEV,EAAY,QAAQ,EAAc,MAClC,KAAK,OAAM,GAgCb,SAAS,EAAO,GACd,GAAI,EAAU,CACZ,IAAI,EAAiB,EAAS,GAE9B,GAAI,EACF,OAAO,EAAe,KAAK,GAG7B,GAA6B,oBAAlB,EAAS,KAClB,OAAO,EAGT,IAAK,MAAM,EAAS,QAAS,CAC3B,IAAI,GAAK,EACL,EAAO,SAAS,IAClB,OAAS,EAAI,EAAS,QACpB,GAAI,EAAO,KAAK,EAAU,GAGxB,OAFA,EAAK,MAAQ,EAAS,GACtB,EAAK,MAAO,EACL,EAMX,OAFA,EAAK,MAAQ,EACb,EAAK,MAAO,EACL,GAGT,OAAO,EAAK,KAAO,GAKvB,MAAO,CACL,KAAM,GAMV,SAAS,IACP,MAAO,CACL,MAAO,EACP,MAAM,GA+LV,OAjlBA,EAAkB,UAAY,EAAG,YAAc,EAC/C,EAA2B,YAAc,EACzC,EAAkB,YAAc,EAAO,EAA4B,EAAmB,qBAWtF,EAAQ,oBAAsB,SAAU,GACtC,IAAI,EAAyB,oBAAX,GAAyB,EAAO,YAClD,QAAO,IAAO,IAAS,GAEa,uBAAnC,EAAK,aAAe,EAAK,QAG5B,EAAQ,KAAO,SAAU,GASvB,OARI,OAAO,eACT,OAAO,eAAe,EAAQ,IAE9B,EAAO,UAAY,EACnB,EAAO,EAAQ,EAAmB,sBAGpC,EAAO,UAAY,OAAO,OAAO,GAC1B,GAOT,EAAQ,MAAQ,SAAU,GACxB,MAAO,CACL,QAAS,IAmEb,EAAsB,EAAc,WAEpC,EAAc,UAAU,GAAuB,WAC7C,OAAO,MAGT,EAAQ,cAAgB,EAIxB,EAAQ,MAAQ,SAAU,EAAS,EAAS,EAAM,EAAa,QACzC,IAAhB,IAAwB,EAAc,SAC1C,IAAI,EAAO,IAAI,EAAc,EAAK,EAAS,EAAS,EAAM,GAAc,GACxE,OAAO,EAAQ,oBAAoB,GAAW,EAC5C,EAAK,OAAO,MAAK,SAAU,GAC3B,OAAO,EAAO,KAAO,EAAO,MAAQ,EAAK,WAgK7C,EAAsB,GACtB,EAAO,EAAI,EAAmB,aAM9B,EAAG,GAAkB,WACnB,OAAO,MAGT,EAAG,SAAW,WACZ,MAAO,sBAsCT,EAAQ,KAAO,SAAU,GACvB,IAAI,EAAO,GAEX,IAAK,IAAI,KAAO,EACd,EAAK,KAAK,GAMZ,OAHA,EAAK,UAGE,SAAS,IACd,KAAO,EAAK,QAAQ,CAClB,IAAI,EAAM,EAAK,MAEf,GAAI,KAAO,EAGT,OAFA,EAAK,MAAQ,EACb,EAAK,MAAO,EACL,EAQX,OADA,EAAK,MAAO,EACL,IA0CX,EAAQ,OAAS,EASjB,EAAQ,UAAY,CAClB,YAAa,EACb,MAAO,SAAe,GAYpB,GAXA,KAAK,KAAO,EACZ,KAAK,KAAO,EAGZ,KAAK,KAAO,KAAK,MAAQ,EACzB,KAAK,MAAO,EACZ,KAAK,SAAW,KAChB,KAAK,OAAS,OACd,KAAK,IAAM,EACX,KAAK,WAAW,QAAQ,IAEnB,EACH,IAAK,IAAI,KAAQ,KAEQ,MAAnB,EAAK,OAAO,IAAc,EAAO,KAAK,KAAM,KAAU,OAAO,EAAK,MAAM,MAC1E,KAAK,GAAQ,IAKrB,KAAM,WACJ,KAAK,MAAO,EACZ,IACI,EADY,KAAK,WAAW,GACL,WAE3B,GAAwB,UAApB,EAAW,KACb,MAAM,EAAW,IAGnB,OAAO,KAAK,MAEd,kBAAmB,SAA2B,GAC5C,GAAI,KAAK,KACP,MAAM,EAGR,IAAI,EAAU,KAEd,SAAS,EAAO,EAAK,GAYnB,OAXA,EAAO,KAAO,QACd,EAAO,IAAM,EACb,EAAQ,KAAO,EAEX,IAGF,EAAQ,OAAS,OACjB,EAAQ,IAAM,KAGP,EAGX,IAAK,IAAI,EAAI,KAAK,WAAW,OAAS,EAAG,GAAK,IAAK,EAAG,CACpD,IAAI,EAAQ,KAAK,WAAW,GACxB,EAAS,EAAM,WAEnB,GAAqB,SAAjB,EAAM,OAIR,OAAO,EAAO,OAGhB,GAAI,EAAM,QAAU,KAAK,KAAM,CAC7B,IAAI,EAAW,EAAO,KAAK,EAAO,YAC9B,EAAa,EAAO,KAAK,EAAO,cAEpC,GAAI,GAAY,EAAY,CAC1B,GAAI,KAAK,KAAO,EAAM,SACpB,OAAO,EAAO,EAAM,UAAU,GACzB,GAAI,KAAK,KAAO,EAAM,WAC3B,OAAO,EAAO,EAAM,iBAEjB,GAAI,GACT,GAAI,KAAK,KAAO,EAAM,SACpB,OAAO,EAAO,EAAM,UAAU,OAE3B,KAAI,EAKT,MAAM,IAAI,MAAM,0CAJhB,GAAI,KAAK,KAAO,EAAM,WACpB,OAAO,EAAO,EAAM,gBAQ9B,OAAQ,SAAgB,EAAM,GAC5B,IAAK,IAAI,EAAI,KAAK,WAAW,OAAS,EAAG,GAAK,IAAK,EAAG,CACpD,IAAI,EAAQ,KAAK,WAAW,GAE5B,GAAI,EAAM,QAAU,KAAK,MAAQ,EAAO,KAAK,EAAO,eAAiB,KAAK,KAAO,EAAM,WAAY,CACjG,IAAI,EAAe,EACnB,OAIA,IAA0B,UAAT,GAA6B,aAAT,IAAwB,EAAa,QAAU,GAAO,GAAO,EAAa,aAGjH,EAAe,MAGjB,IAAI,EAAS,EAAe,EAAa,WAAa,GAItD,OAHA,EAAO,KAAO,EACd,EAAO,IAAM,EAET,GACF,KAAK,OAAS,OACd,KAAK,KAAO,EAAa,WAClB,GAGF,KAAK,SAAS,IAEvB,SAAU,SAAkB,EAAQ,GAClC,GAAoB,UAAhB,EAAO,KACT,MAAM,EAAO,IAaf,MAVoB,UAAhB,EAAO,MAAoC,aAAhB,EAAO,KACpC,KAAK,KAAO,EAAO,IACM,WAAhB,EAAO,MAChB,KAAK,KAAO,KAAK,IAAM,EAAO,IAC9B,KAAK,OAAS,SACd,KAAK,KAAO,OACa,WAAhB,EAAO,MAAqB,IACrC,KAAK,KAAO,GAGP,GAET,OAAQ,SAAgB,GACtB,IAAK,IAAI,EAAI,KAAK,WAAW,OAAS,EAAG,GAAK,IAAK,EAAG,CACpD,IAAI,EAAQ,KAAK,WAAW,GAE5B,GAAI,EAAM,aAAe,EAGvB,OAFA,KAAK,SAAS,EAAM,WAAY,EAAM,UACtC,EAAc,GACP,IAIb,MAAS,SAAgB,GACvB,IAAK,IAAI,EAAI,KAAK,WAAW,OAAS,EAAG,GAAK,IAAK,EAAG,CACpD,IAAI,EAAQ,KAAK,WAAW,GAE5B,GAAI,EAAM,SAAW,EAAQ,CAC3B,IAAI,EAAS,EAAM,WAEnB,GAAoB,UAAhB,EAAO,KAAkB,CAC3B,IAAI,EAAS,EAAO,IACpB,EAAc,GAGhB,OAAO,GAMX,MAAM,IAAI,MAAM,0BAElB,cAAe,SAAuB,EAAU,EAAY,GAa1D,OAZA,KAAK,SAAW,CACd,SAAU,EAAO,GACjB,WAAY,EACZ,QAAS,GAGS,SAAhB,KAAK,SAGP,KAAK,IAAM,GAGN,IAOJ,EAvrBK,CA4rBe,EAAO,SAEpC,IACE,mBAAqB,EACrB,MAAO,GAUP,SAAS,IAAK,yBAAd,CAAwC,kCChtB3B,SAAS,EAAkB,EAAK,IAClC,MAAP,GAAe,EAAM,EAAI,UAAQ,EAAM,EAAI,QAE/C,IAAK,IAAI,EAAI,EAAG,EAAO,IAAI,MAAM,GAAM,EAAI,EAAK,IAC9C,EAAK,GAAK,EAAI,GAGhB,OAAO,ECNM,SAAS,EAA4B,EAAG,GACrD,GAAK,EAAL,CACA,GAAiB,kBAAN,EAAgB,OAAO,EAAiB,EAAG,GACtD,IAAI,EAAI,OAAO,UAAU,SAAS,KAAK,GAAG,MAAM,GAAI,GAEpD,MADU,WAAN,GAAkB,EAAE,cAAa,EAAI,EAAE,YAAY,MAC7C,QAAN,GAAqB,QAAN,EAAoB,MAAM,KAAK,GACxC,cAAN,GAAqB,2CAA2C,KAAK,GAAW,EAAiB,EAAG,QAAxG,GCHa,SAAS,EAAmB,GACzC,OCJa,SAA4B,GACzC,GAAI,MAAM,QAAQ,GAAM,OAAO,EAAiB,GDGzC,CAAkB,IELZ,SAA0B,GACvC,GAAsB,qBAAX,QAA0B,OAAO,YAAY,OAAO,GAAO,OAAO,MAAM,KAAK,GFIvD,CAAgB,IAAQ,EAA2B,IGLvE,WACb,MAAM,IAAI,UAAU,wIHIwE,mBII1F,EAAiD,KCRtC,SAAS,EAA2B,EAAG,GACpD,IAAI,EAEJ,GAAsB,qBAAX,QAAgD,MAAtB,EAAE,OAAO,UAAmB,CAC/D,GAAI,MAAM,QAAQ,KAAO,EAAK,EAA2B,KAAO,GAAkB,GAAyB,kBAAb,EAAE,OAAqB,CAC/G,IAAI,EAAI,GACZ,IAAI,EAAI,EAEJ,EAAI,aAER,MAAO,CACL,EAAG,EACH,EAAG,WACD,OAAI,GAAK,EAAE,OAAe,CACxB,MAAM,GAED,CACL,MAAM,EACN,MAAO,EAAE,OAGb,EAAG,SAAW,GACZ,MAAM,GAER,EAAG,GAIP,MAAM,IAAI,UAAU,yIAGtB,IAEI,EAFA,GAAmB,EACnB,GAAS,EAEb,MAAO,CACL,EAAG,WACD,EAAK,EAAE,OAAO,aAEhB,EAAG,WACD,IAAI,EAAO,EAAG,OAEd,OADA,EAAmB,EAAK,KACjB,GAET,EAAG,SAAW,GACZ,GAAS,EACT,EAAM,GAER,EAAG,WACD,IACO,GAAoC,MAAhB,EAAW,QAAW,EAAW,SAC1D,QACA,GAAI,EAAQ,MAAM,KCpDX,SAAS,EAAgB,EAAU,GAChD,KAAM,aAAoB,GACxB,MAAM,IAAI,UAAU,qCCFT,SAAS,EAAgB,EAAG,GAMzC,OALA,EAAkB,OAAO,gBAAkB,SAAyB,EAAG,GAErE,OADA,EAAE,UAAY,EACP,IAGc,EAAG,GCLb,SAAS,EAAU,EAAU,GAC1C,GAA0B,oBAAf,GAA4C,OAAf,EACtC,MAAM,IAAI,UAAU,sDAGtB,EAAS,UAAY,OAAO,OAAO,GAAc,EAAW,UAAW,CACrE,YAAa,CACX,MAAO,EACP,UAAU,EACV,cAAc,KAGd,GAAY,EAAe,EAAU,GCb5B,SAAS,EAAgB,GAItC,OAHA,EAAkB,OAAO,eAAiB,OAAO,eAAiB,SAAyB,GACzF,OAAO,EAAE,WAAa,OAAO,eAAe,KAEvB,GCJV,SAAS,IACtB,GAAuB,qBAAZ,UAA4B,QAAQ,UAAW,OAAO,EACjE,GAAI,QAAQ,UAAU,KAAM,OAAO,EACnC,GAAqB,oBAAV,MAAsB,OAAO,EAExC,IAEE,OADA,KAAK,UAAU,SAAS,KAAK,QAAQ,UAAU,KAAM,IAAI,iBAClD,EACP,MAAO,GACP,OAAO,GCTI,SAAS,EAAQ,GAa9B,OATE,EADoB,oBAAX,QAAoD,kBAApB,OAAO,SACtC,SAAiB,GACzB,cAAc,GAGN,SAAiB,GACzB,OAAO,GAAyB,oBAAX,QAAyB,EAAI,cAAgB,QAAU,IAAQ,OAAO,UAAY,gBAAkB,IAI9G,GCXF,SAAS,EAA2B,EAAM,GACvD,OAAI,GAA2B,WAAlB,EAAQ,IAAsC,oBAAT,ECHrC,SAAgC,GAC7C,QAAa,IAAT,EACF,MAAM,IAAI,eAAe,6DAG3B,OAAO,EDEA,CAAsB,GAHpB,EEDI,SAAS,EAAa,GACnC,IAAI,EAA4B,IAChC,OAAO,WACL,IACI,EADA,EAAQ,EAAe,GAG3B,GAAI,EAA2B,CAC7B,IAAI,EAAY,EAAe,MAAM,YACrC,EAAS,QAAQ,UAAU,EAAO,UAAW,QAE7C,EAAS,EAAM,MAAM,KAAM,WAG7B,OAAO,EAA0B,KAAM,ICd5B,SAAS,EAAW,EAAQ,EAAM,GAc/C,OAZE,EADE,IACW,QAAQ,UAER,SAAoB,EAAQ,EAAM,GAC7C,IAAI,EAAI,CAAC,MACT,EAAE,KAAK,MAAM,EAAG,GAChB,IACI,EAAW,IADG,SAAS,KAAK,MAAM,EAAQ,IAG9C,OADI,GAAO,EAAe,EAAU,EAAM,WACnC,IAIO,MAAM,KAAM,WCZjB,SAAS,EAAiB,GACvC,IAAI,EAAwB,oBAAR,IAAqB,IAAI,SAAQ,EA8BrD,OA5BA,EAAmB,SAA0B,GAC3C,GAAc,OAAV,ICRkC,EDQE,GCPsB,IAAzD,SAAS,SAAS,KAAK,GAAI,QAAQ,kBDOQ,OAAO,ECR5C,IAA2B,EDUtC,GAAqB,oBAAV,EACT,MAAM,IAAI,UAAU,sDAGtB,GAAsB,qBAAX,EAAwB,CACjC,GAAI,EAAO,IAAI,GAAQ,OAAO,EAAO,IAAI,GAEzC,EAAO,IAAI,EAAO,GAGpB,SAAS,IACP,OAAO,EAAU,EAAO,UAAW,EAAe,MAAM,aAW1D,OARA,EAAQ,UAAY,OAAO,OAAO,EAAM,UAAW,CACjD,YAAa,CACX,MAAO,EACP,YAAY,EACZ,UAAU,EACV,cAAc,KAGX,EAAe,EAAS,KAGT,GE3BnB,IC2BI,EAzBI,SAAkB,GAG/B,IAFA,IAAI,EAAM,EAED,EAAO,UAAU,OAAQ,EAAO,IAAI,MAAM,EAAO,EAAI,EAAO,EAAI,GAAI,EAAO,EAAG,EAAO,EAAM,IAClG,EAAK,EAAO,GAAK,UAAU,GAO7B,OAJI,EAAK,OAAS,IAChB,GAAO,OAAO,OAAO,KAAK,UAAU,KAG/B,GCGL,EAA4B,SAAU,GACxC,EAAU,EAAc,GAExB,IAAI,EAAS,EAAa,GAU1B,SAAS,EAAa,EAAW,GAC/B,IAAI,EAEJ,EAAgB,KAAM,GAEtB,IAAI,EAAU,EAAiB,EAAW,GAI1C,OAHA,EAAQ,EAAO,KAAK,KAAM,IACpB,KAAO,EACb,EAAM,QAAU,EACT,EAGT,OAAO,EAzBuB,CA0BhB,EAAiB,QCzC7B,EAAsB,IAAI,ICU9B,SAAS,EAA2B,GASlC,EAAoB,IAAI,GCpB1B,ICAI,EDAA,EAAoB,CACtB,gBAAiB,kBACjB,SAAU,cACV,OAAQ,UACR,QAAS,UACT,OAAgC,qBAAjB,aAA+B,aAAa,MAAQ,IAGjE,EAAmB,SAA0B,GAC/C,MAAO,CAAC,EAAkB,OAAQ,EAAW,EAAkB,QAAQ,QAAO,SAAU,GACtF,OAAO,GAAS,EAAM,OAAS,KAC9B,KAAK,MAUC,EAWQ,SAAyB,GACxC,OAAO,GAAiB,EAAiB,EAAkB,WAZpD,EAiBO,SAAwB,GACtC,OAAO,GAAiB,EAAiB,EAAkB,0BE/ChD,SAAS,EAAgB,EAAK,EAAK,GAYhD,OAXI,KAAO,EACT,OAAO,eAAe,EAAK,EAAK,CAC9B,MAAO,EACP,YAAY,EACZ,cAAc,EACd,UAAU,IAGZ,EAAI,GAAO,EAGN,ECVT,SAAS,EAAQ,EAAQ,GACvB,IAAI,EAAO,OAAO,KAAK,GAEvB,GAAI,OAAO,sBAAuB,CAChC,IAAI,EAAU,OAAO,sBAAsB,GACvC,IAAgB,EAAU,EAAQ,QAAO,SAAU,GACrD,OAAO,OAAO,yBAAyB,EAAQ,GAAK,eAEtD,EAAK,KAAK,MAAM,EAAM,GAGxB,OAAO,EAGM,SAAS,EAAe,GACrC,IAAK,IAAI,EAAI,EAAG,EAAI,UAAU,OAAQ,IAAK,CACzC,IAAI,EAAyB,MAAhB,UAAU,GAAa,UAAU,GAAK,GAE/C,EAAI,EACN,EAAQ,OAAO,IAAS,GAAM,SAAQ,SAAU,GAC9C,EAAe,EAAQ,EAAK,EAAO,OAE5B,OAAO,0BAChB,OAAO,iBAAiB,EAAQ,OAAO,0BAA0B,IAEjE,EAAQ,OAAO,IAAS,SAAQ,SAAU,GACxC,OAAO,eAAe,EAAQ,EAAK,OAAO,yBAAyB,EAAQ,OAKjF,OAAO,ECjCT,SAAS,EAAmB,EAAK,EAAS,EAAQ,EAAO,EAAQ,EAAK,GACpE,IACE,IAAI,EAAO,EAAI,GAAK,GAChB,EAAQ,EAAK,MACjB,MAAO,GAEP,YADA,EAAO,GAIL,EAAK,KACP,EAAQ,GAER,QAAQ,QAAQ,GAAO,KAAK,EAAO,GAIxB,SAAS,EAAkB,GACxC,OAAO,WACL,IAAI,EAAO,KACP,EAAO,UACX,OAAO,IAAI,SAAQ,SAAU,EAAS,GACpC,IAAI,EAAM,EAAG,MAAM,EAAM,GAEzB,SAAS,EAAM,GACb,EAAmB,EAAK,EAAS,EAAQ,EAAO,EAAQ,OAAQ,GAGlE,SAAS,EAAO,GACd,EAAmB,EAAK,EAAS,EAAQ,EAAO,EAAQ,QAAS,GAGnE,OAAM,OClBZ,SAAS,EAAY,EAAS,GAC5B,IAGI,EAHA,EAAc,IAAI,IAAI,GAEtB,EAAY,EAA2B,GAG3C,IACE,IAAK,EAAU,MAAO,EAAQ,EAAU,KAAK,MAAO,CAClD,IAAI,EAAQ,EAAM,MAClB,EAAY,aAAa,OAAO,IAElC,MAAO,GACP,EAAU,EAAE,GACZ,QACA,EAAU,IAGZ,OAAO,EAAY,KAgBrB,SAAS,EAAuB,EAAI,EAAK,EAAK,GAC5C,OAAO,EAAwB,MAAM,KAAM,WAG7C,SAAS,IA+EP,OA9EA,EAA0B,EAAgC,IAAoB,MAAK,SAAS,EAAQ,EAAO,EAAS,EAAc,GAChI,IAAI,EAAoB,EAAa,EAAW,EAAY,EAAQ,EAAU,EAE9E,OAAO,IAAoB,MAAK,SAAkB,GAChD,OACE,OAAQ,EAAS,KAAO,EAAS,MAC/B,KAAK,EAGH,GAFA,EAAqB,EAAY,EAAQ,IAAK,GAExC,EAAQ,MAAQ,EAAqB,CACzC,EAAS,KAAO,EAChB,MAGF,OAAO,EAAS,OAAO,SAAU,EAAM,MAAM,EAAS,IAExD,KAAK,EAMH,OAJA,EAAc,EAAc,EAAc,GAAI,GAAe,GAAI,CAC/D,cAAc,IAEhB,EAAS,KAAO,EACT,EAAM,KAAK,EAAS,GAE7B,KAAK,EACH,EAAY,EAAS,KACrB,EAAa,EAA2B,GACxC,EAAS,KAAO,EAEhB,EAAW,IAEb,KAAK,GACH,IAAK,EAAS,EAAW,KAAK,KAAM,CAClC,EAAS,KAAO,GAChB,MAMF,GAHA,EAAW,EAAO,MAClB,EAAsB,EAAY,EAAS,IAAK,GAE1C,IAAuB,EAAsB,CACjD,EAAS,KAAO,GAChB,MAGF,OAAO,EAAS,OAAO,SAAU,EAAM,MAAM,EAAU,IAEzD,KAAK,GACH,EAAS,KAAO,GAChB,MAEF,KAAK,GACH,EAAS,KAAO,GAChB,MAEF,KAAK,GACH,EAAS,KAAO,GAChB,EAAS,GAAK,EAAgB,MAAE,GAEhC,EAAW,EAAE,EAAS,IAExB,KAAK,GAKH,OAJA,EAAS,KAAO,GAEhB,EAAW,IAEJ,EAAS,OAAO,IAEzB,KAAK,GACH,OAAO,EAAS,OAAO,UAEzB,KAAK,GACL,IAAK,MACH,OAAO,EAAS,UAGrB,EAAS,KAAM,CAAC,CAAC,EAAG,GAAI,GAAI,WAEF,MAAM,KAAM,WJ9G7C,SAAS,IACP,QAAsB,IAAlB,EAA6B,CAC/B,IAAI,EAAe,IAAI,SAAS,IAEhC,GAAI,SAAU,EACZ,IACE,IAAI,SAAS,EAAa,MAC1B,GAAgB,EAChB,MAAO,GACP,GAAgB,EAIpB,GAAgB,EAGlB,OAAO,EKtBF,SAAS,EAAY,GAE1B,EAAQ,MAAK,eCXA,SAAS,EAAe,EAAK,GAC1C,OCLa,SAAyB,GACtC,GAAI,MAAM,QAAQ,GAAM,OAAO,EDIxB,CAAe,IELT,SAA+B,EAAK,GACjD,GAAsB,qBAAX,QAA4B,OAAO,YAAY,OAAO,GAAjE,CACA,IAAI,EAAO,GACP,GAAK,EACL,GAAK,EACL,OAAK,EAET,IACE,IAAK,IAAiC,EAA7B,EAAK,EAAI,OAAO,cAAmB,GAAM,EAAK,EAAG,QAAQ,QAChE,EAAK,KAAK,EAAG,QAET,GAAK,EAAK,SAAW,GAH8C,GAAK,IAK9E,MAAO,GACP,GAAK,EACL,EAAK,EACL,QACA,IACO,GAAsB,MAAhB,EAAW,QAAW,EAAW,SAC5C,QACA,GAAI,EAAI,MAAM,GAIlB,OAAO,GFnBuB,CAAqB,EAAK,IAAM,EAA2B,EAAK,IGLjF,WACb,MAAM,IAAI,UAAU,6IHIgF,GILtG,SAAS,EAAkB,EAAQ,GACjC,IAAK,IAAI,EAAI,EAAG,EAAI,EAAM,OAAQ,IAAK,CACrC,IAAI,EAAa,EAAM,GACvB,EAAW,WAAa,EAAW,aAAc,EACjD,EAAW,cAAe,EACtB,UAAW,IAAY,EAAW,UAAW,GACjD,OAAO,eAAe,EAAQ,EAAW,IAAK,IAInC,SAAS,EAAa,EAAa,EAAY,GAG5D,OAFI,GAAY,EAAkB,EAAY,UAAW,GACrD,GAAa,EAAkB,EAAa,GACzC,ECUF,IAAI,EAAyB,WAUlC,SAAS,EAAU,EAAM,GACvB,IAAI,EAAQ,KAER,EAAO,UAAU,OAAS,QAAsB,IAAjB,UAAU,GAAmB,UAAU,GAAK,GAC3E,EAAkB,EAAK,gBACvB,EAAkB,EAAK,gBAE3B,EAAgB,KAAM,GAEtB,KAAK,IAAM,KACX,KAAK,MAAQ,EACb,KAAK,SAAW,EAChB,KAAK,iBAAmB,EAExB,KAAK,iBAAmB,GAAmB,WACzC,OAAO,EAAM,SAwcjB,OA7bA,EAAa,EAAW,CAAC,CACvB,IAAK,OASL,MAAO,WACL,IAAI,EAAQ,EAAgC,IAAoB,MAAK,SAAS,IAC5E,IAAI,EAAS,KAEb,OAAO,IAAoB,MAAK,SAAkB,GAChD,OACE,OAAQ,EAAS,KAAO,EAAS,MAC/B,KAAK,EACH,IAAK,KAAK,IAAK,CACb,EAAS,KAAO,EAChB,MAGF,OAAO,EAAS,OAAO,UAEzB,KAAK,EAEH,OADA,EAAS,KAAO,EACT,IAAI,SAAQ,SAAU,EAAS,GAMpC,IAAI,GAAsB,EAC1B,YAAW,WACT,GAAsB,EACtB,EAAO,IAAI,MAAM,iDAChB,EAAO,cACV,IAAI,EAAc,UAAU,KAAK,EAAO,MAAO,EAAO,UAEtD,EAAY,QAAU,WACpB,OAAO,EAAO,EAAY,QAG5B,EAAY,gBAAkB,SAAU,GAClC,GACF,EAAY,YAAY,QACxB,EAAY,OAAO,SACyB,oBAA5B,EAAO,kBACvB,EAAO,iBAAiB,IAI5B,EAAY,UAAY,WACtB,IAAI,EAAK,EAAY,OAEjB,EACF,EAAG,SAEH,EAAG,gBAAkB,EAAO,iBAAiB,KAAK,GAClD,EAAQ,QAKhB,KAAK,EAEH,OADA,KAAK,IAAM,EAAS,KACb,EAAS,OAAO,SAAU,MAEnC,KAAK,EACL,IAAK,MACH,OAAO,EAAS,UAGrB,EAAS,UAOd,OAJA,WACE,OAAO,EAAM,MAAM,KAAM,YApEtB,IAmFN,CACD,IAAK,SACL,MAAO,WACL,IAAI,EAAU,EAAgC,IAAoB,MAAK,SAAS,EAAS,EAAW,GAClG,OAAO,IAAoB,MAAK,SAAmB,GACjD,OACE,OAAQ,EAAU,KAAO,EAAU,MACjC,KAAK,EAEH,OADA,EAAU,KAAO,EACV,KAAK,WAAW,EAAW,EAAO,GAE3C,KAAK,EACH,OAAO,EAAU,OAAO,SAAU,EAAU,KAAK,IAEnD,KAAK,EACL,IAAK,MACH,OAAO,EAAU,UAGtB,EAAU,UAOf,OAJA,SAAgB,EAAI,GAClB,OAAO,EAAQ,MAAM,KAAM,YArBxB,IAqCN,CACD,IAAK,SACL,MAAO,WACL,IAAI,EAAU,EAAgC,IAAoB,MAAK,SAAS,EAAS,EAAW,EAAO,GACzG,OAAO,IAAoB,MAAK,SAAmB,GACjD,OACE,OAAQ,EAAU,KAAO,EAAU,MACjC,KAAK,EAEH,OADA,EAAU,KAAO,EACV,KAAK,eAAe,EAAW,CACpC,MAAO,EACP,MAAO,IAGX,KAAK,EACH,OAAO,EAAU,OAAO,SAAU,EAAU,MAE9C,KAAK,EACL,IAAK,MACH,OAAO,EAAU,UAGtB,EAAU,UAOf,OAJA,SAAgB,EAAK,EAAK,GACxB,OAAO,EAAQ,MAAM,KAAM,YAxBxB,IAwCN,CACD,IAAK,aACL,MAAO,WACL,IAAI,EAAc,EAAgC,IAAoB,MAAK,SAAS,EAAS,EAAW,EAAO,GAC7G,IAAI,EACJ,OAAO,IAAoB,MAAK,SAAmB,GACjD,OACE,OAAQ,EAAU,KAAO,EAAU,MACjC,KAAK,EAEH,OADA,EAAU,KAAO,EACV,KAAK,eAAe,EAAW,CACpC,MAAO,EACP,MAAO,EACP,aAAa,IAGjB,KAAK,EAEH,OADA,EAAU,EAAU,KACb,EAAU,OAAO,SAAU,EAAQ,KAAI,SAAU,GACtD,OAAO,EAAM,QAGjB,KAAK,EACL,IAAK,MACH,OAAO,EAAU,UAGtB,EAAU,UAOf,OAJA,SAAoB,EAAK,EAAK,GAC5B,OAAO,EAAY,MAAM,KAAM,YA7B5B,IAoDN,CACD,IAAK,iBACL,MAAO,WACL,IAAI,EAAkB,EAAgC,IAAoB,MAAK,SAAS,EAAS,GAC/F,IAAI,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EAAS,UAEb,OAAO,IAAoB,MAAK,SAAmB,GACjD,OACE,OAAQ,EAAU,KAAO,EAAU,MACjC,KAAK,EAGH,OAFA,EAAQ,EAAO,OAAS,QAAmB,IAAd,EAAO,GAAmB,EAAO,GAAK,GAAI,EAAQ,EAAM,MAAO,EAAc,EAAM,MAAO,OAAwB,IAAhB,EAAyB,KAAO,EAAa,EAAkB,EAAM,UAAW,OAAgC,IAApB,EAA6B,OAAS,EAAiB,EAAQ,EAAM,MAAO,EAAoB,EAAM,YAAa,OAAoC,IAAtB,GAAuC,EACnY,EAAU,KAAO,EACV,KAAK,YAAY,CAAC,GAAY,YAAY,SAAU,EAAK,GAC9D,IAAI,EAAQ,EAAI,YAAY,GACxB,EAAS,EAAQ,EAAM,MAAM,GAAS,EACtC,EAAU,GACV,EAAU,EAAO,WAAW,EAAO,GAEvC,EAAQ,UAAY,WAClB,IAAI,EAAS,EAAQ,OAEjB,GACF,EAAQ,KAAK,EAAc,EAAS,EAAO,OAEvC,GAAS,EAAQ,QAAU,EAC7B,EAAK,GAEL,EAAO,YAGT,EAAK,OAKb,KAAK,EACH,OAAO,EAAU,OAAO,SAAU,EAAU,MAE9C,KAAK,EACL,IAAK,MACH,OAAO,EAAU,UAGtB,EAAU,UAOf,OAJA,SAAwB,GACtB,OAAO,EAAgB,MAAM,KAAM,YAtDhC,IA6EN,CACD,IAAK,cACL,MAAO,WACL,IAAI,EAAe,EAAgC,IAAoB,MAAK,SAAS,EAAS,EAAY,EAAM,GAC9G,IAAI,EAAS,KAEb,OAAO,IAAoB,MAAK,SAAmB,GACjD,OACE,OAAQ,EAAU,KAAO,EAAU,MACjC,KAAK,EAEH,OADA,EAAU,KAAO,EACV,KAAK,OAEd,KAAK,EAEH,OADA,EAAU,KAAO,EACV,IAAI,SAAQ,SAAU,EAAS,GACpC,IAAI,EAAM,EAAO,IAAI,YAAY,EAAY,GAE7C,EAAI,QAAU,WACZ,OAAO,EAAO,EAAI,QAGpB,EAAI,WAAa,WACf,OAAO,KAGT,EAAS,GAAK,SAAU,GACtB,OAAO,EAAQ,SAIrB,KAAK,EACH,OAAO,EAAU,OAAO,SAAU,EAAU,MAE9C,KAAK,EACL,IAAK,MACH,OAAO,EAAU,UAGtB,EAAU,UAOf,OAJA,SAAqB,EAAM,EAAM,GAC/B,OAAO,EAAa,MAAM,KAAM,YAzC7B,IAyDN,CACD,IAAK,QACL,MAAO,WACL,IAAI,EAAS,EAAgC,IAAoB,MAAK,SAAS,EAAS,EAAQ,EAAW,GACzG,IAAI,EACA,EACA,EACA,EACA,EAAS,UAEb,OAAO,IAAoB,MAAK,SAAmB,GACjD,OACE,OAAQ,EAAU,KAAO,EAAU,MACjC,KAAK,EACH,IAAK,EAAO,EAAO,OAAQ,EAAO,IAAI,MAAM,EAAO,EAAI,EAAO,EAAI,GAAI,EAAO,EAAG,EAAO,EAAM,IAC3F,EAAK,EAAO,GAAK,EAAO,GAe1B,OAZA,EAAW,SAAkB,EAAK,GAChC,IAAI,EAAW,EAAI,YAAY,GAG3B,EAAU,EAAS,GAAQ,MAAM,EAAU,GAE/C,EAAQ,UAAY,WAClB,OAAO,EAAK,EAAQ,UAIxB,EAAU,KAAO,EACV,KAAK,YAAY,CAAC,GAAY,EAAM,GAE7C,KAAK,EACH,OAAO,EAAU,OAAO,SAAU,EAAU,MAE9C,KAAK,EACL,IAAK,MACH,OAAO,EAAU,UAGtB,EAAU,UAOf,OAJA,SAAe,EAAM,EAAM,GACzB,OAAO,EAAO,MAAM,KAAM,YA1CvB,IA6DN,CACD,IAAK,QACL,MAAO,WACD,KAAK,MACP,KAAK,IAAI,QAET,KAAK,IAAM,QAGd,CACD,IAAK,KACL,IAAK,WACH,OAAO,KAAK,QAIT,EAje2B,GAqepC,EAAU,UAAU,aAAe,IAmEnC,IAjEA,IAKI,EAAQ,WACV,IAKI,EALA,EAAqB,EAAe,EAAgB,GAAK,GACzD,EAAO,EAAmB,GAG1B,EAAY,EAFF,EAAmB,IAKjC,IACE,IAAI,EAAS,WACX,IAAI,EAAS,EAAM,MAEf,KAAU,eAAe,YAE3B,EAAU,UAAU,GAAuB,WACzC,IAAI,EAAQ,EAAgC,IAAoB,MAAK,SAAS,EAAS,GACrF,IAAI,EACA,EACA,EACA,EAAS,UAEb,OAAO,IAAoB,MAAK,SAAmB,GACjD,OACE,OAAQ,EAAU,KAAO,EAAU,MACjC,KAAK,EACH,IAAK,EAAQ,EAAO,OAAQ,EAAO,IAAI,MAAM,EAAQ,EAAI,EAAQ,EAAI,GAAI,EAAQ,EAAG,EAAQ,EAAO,IACjG,EAAK,EAAQ,GAAK,EAAO,GAI3B,OADA,EAAU,KAAO,EACV,KAAK,MAAM,MAAM,KAAM,CAAC,EAAQ,EAAW,GAAM,OAAO,IAEjE,KAAK,EACH,OAAO,EAAU,OAAO,SAAU,EAAU,MAE9C,KAAK,EACL,IAAK,MACH,OAAO,EAAU,UAGtB,EAAU,UAGf,OAAO,SAAU,GACf,OAAO,EAAM,MAAM,KAAM,YA9Bc,KAoC/C,IAAK,EAAU,MAAO,EAAQ,EAAU,KAAK,MAC3C,IAEF,MAAO,GACP,EAAU,EAAE,GACZ,QACA,EAAU,MAIL,EAAK,EAAG,EAAkB,OAAO,QAjEtB,CAClB,SAAU,CAAC,MAAO,QAAS,SAAU,SAAU,cAC/C,UAAW,CAAC,MAAO,MAAO,QAAS,YA+D6B,EAAK,EAAgB,OAAQ,IAC7F,IC7iBF,IAAI,EAIJ,SAAS,IACP,IAAI,EAAQ,KAEZ,EAAgB,KAAM,GAEtB,KAAK,QAAU,IAAI,SAAQ,SAAU,EAAS,GAC5C,EAAM,QAAU,EAChB,EAAM,OAAS,MCTR,EAA8B,WACvC,IAAI,EAAO,EAAgC,IAAoB,MAAK,SAAS,EAAQ,GACnF,OAAO,IAAoB,MAAK,SAAkB,GAChD,OACE,OAAQ,EAAS,KAAO,EAAS,MAC/B,KAAK,EAEH,OADA,EAAS,KAAO,EACT,IAAI,SAAQ,SAAU,EAAS,GACpC,IAAI,EAAU,UAAU,eAAe,GAEvC,EAAQ,QAAU,WAChB,EAAO,EAAQ,QAGjB,EAAQ,UAAY,WAClB,EAAO,IAAI,MAAM,oBAGnB,EAAQ,UAAY,WAClB,QAIN,KAAK,EACL,IAAK,MACH,OAAO,EAAS,UAGrB,OAGL,OAAO,SAAwB,GAC7B,OAAO,EAAK,MAAM,KAAM,YAhCa,GCCzC,SAAS,IACP,OAAO,EAA4B,MAAM,KAAM,WAGjD,SAAS,IAiEP,OAhEA,EAA8B,EAAgC,IAAoB,MAAK,SAAS,IAC9F,IAAI,EAAW,EAAO,EAEtB,OAAO,IAAoB,MAAK,SAAkB,GAChD,OACE,OAAQ,EAAS,KAAO,EAAS,MAC/B,KAAK,EACC,EAIJ,EAAY,EAA2B,GACvC,EAAS,KAAO,EAEhB,EAAU,IAEZ,KAAK,EACH,IAAK,EAAQ,EAAU,KAAK,KAAM,CAChC,EAAS,KAAO,GAChB,MAKF,OAFA,EAAW,EAAM,MACjB,EAAS,KAAO,EACT,IAET,KAAK,EACC,EAIN,KAAK,EACH,EAAS,KAAO,EAChB,MAEF,KAAK,GACH,EAAS,KAAO,GAChB,MAEF,KAAK,GACH,EAAS,KAAO,GAChB,EAAS,GAAK,EAAgB,MAAE,GAEhC,EAAU,EAAE,EAAS,IAEvB,KAAK,GAKH,OAJA,EAAS,KAAO,GAEhB,EAAU,IAEH,EAAS,OAAO,IAEzB,KAAK,GACC,EAIN,KAAK,GACL,IAAK,MACH,OAAO,EAAS,UAGrB,EAAS,KAAM,CAAC,CAAC,EAAG,GAAI,GAAI,WAEE,MAAM,KAAM,WClFjD,IAAI,EAAiB,SAAwB,GAI3C,OAHa,IAAI,IAAI,OAAO,GAAM,SAAS,MAG7B,KAAK,QAAQ,IAAI,OAAO,IAAI,OAAO,SAAS,SAAU,KCG/D,SAAS,EAAQ,GACtB,OAAO,IAAI,SAAQ,SAAU,GAC3B,OAAO,WAAW,EAAS,MCD/B,SAAS,EAAU,EAAO,GACxB,IAAI,EAAgB,IAEpB,OADA,EAAM,UAAU,GACT,ECaT,SAAS,EAAa,EAAI,GACxB,OAAO,GAAc,MAAM,KAAM,WAGnC,SAAS,KA+DP,OA9DA,GAAgB,EAAgC,IAAoB,MAAK,SAAS,EAAQ,EAAU,GAClG,IAAI,EAAQ,EAAa,EAAgB,EAAc,EAAsB,EAC7E,OAAO,IAAoB,MAAK,SAAkB,GAChD,OACE,OAAQ,EAAS,KAAO,EAAS,MAC/B,KAAK,EAQH,GAPA,EAAS,KAEL,EAAS,MACX,EAAc,IAAI,IAAI,EAAS,KAC/B,EAAS,EAAY,QAGjB,IAAW,KAAK,SAAS,OAAS,CACtC,EAAS,KAAO,EAChB,MAGF,MAAM,IAAI,EAAa,6BAA8B,CACnD,OAAQ,IAGZ,KAAK,EAaH,GAZA,EAAiB,EAAS,QAE1B,EAAe,CACb,QAAS,IAAI,QAAQ,EAAe,SACpC,OAAQ,EAAe,OACvB,WAAY,EAAe,YAG7B,EAAuB,EAAW,EAAS,GAAgB,GAItD,IAAsC,CACzC,EAAS,KAAO,GAChB,MAGF,EAAS,GAAK,EAAe,KAC7B,EAAS,KAAO,GAChB,MAEF,KAAK,GAEH,OADA,EAAS,KAAO,GACT,EAAe,OAExB,KAAK,GACH,EAAS,GAAK,EAAS,KAEzB,KAAK,GAEH,OADA,EAAO,EAAS,GACT,EAAS,OAAO,SAAU,IAAI,SAAS,EAAM,IAEtD,KAAK,GACL,IAAK,MACH,OAAO,EAAS,UAGrB,QAEgB,MAAM,KAAM,oBCnF/B,GAAoB,gBAEpB,GAAe,SAAsB,GACvC,IAAI,EAAM,IAAI,IAAI,EAAiB,SAAS,MAE5C,OADA,EAAI,KAAO,GACJ,EAAI,MAST,GAAoC,WAOtC,SAAS,EAAqB,GAC5B,IAAI,EAAQ,KAEZ,EAAgB,KAAM,GAEtB,KAAK,WAAa,EAClB,KAAK,IAAM,IAAI,EA5BL,qBA4BwB,EAAG,CACnC,gBAAiB,SAAyB,GACxC,OAAO,EAAM,eAAe,MAwQlC,OA3PA,EAAa,EAAsB,CAAC,CAClC,IAAK,iBACL,MAAO,SAAwB,GAC7B,IAKI,EALK,EAAM,OAAO,OAKJ,kBAAkB,GAAmB,CACrD,QAAS,OAKX,EAAS,YAAY,YAAa,YAAa,CAC7C,QAAQ,IAEV,EAAS,YAAY,YAAa,YAAa,CAC7C,QAAQ,IAIV,EAAe,KAAK,cASrB,CACD,IAAK,eACL,MAAO,WACL,IAAI,EAAgB,EAAgC,IAAoB,MAAK,SAAS,EAAQ,EAAK,GACjG,IAAI,EACJ,OAAO,IAAoB,MAAK,SAAkB,GAChD,OACE,OAAQ,EAAS,KAAO,EAAS,MAC/B,KAAK,EAYH,OAXA,EAAM,GAAa,GACnB,EAAQ,CACN,IAAK,EACL,UAAW,EACX,UAAW,KAAK,WAIhB,GAAI,KAAK,OAAO,IAElB,EAAS,KAAO,EACT,KAAK,IAAI,IAAI,GAAmB,GAEzC,KAAK,EACL,IAAK,MACH,OAAO,EAAS,UAGrB,EAAS,UAOd,OAJA,SAAsB,EAAI,GACxB,OAAO,EAAc,MAAM,KAAM,YA7B9B,IA2CN,CACD,IAAK,eACL,MAAO,WACL,IAAI,EAAgB,EAAgC,IAAoB,MAAK,SAAS,EAAS,GAC7F,IAAI,EACJ,OAAO,IAAoB,MAAK,SAAmB,GACjD,OACE,OAAQ,EAAU,KAAO,EAAU,MACjC,KAAK,EAEH,OADA,EAAU,KAAO,EACV,KAAK,IAAI,IAAI,GAAmB,KAAK,OAAO,IAErD,KAAK,EAEH,OADA,EAAQ,EAAU,KACX,EAAU,OAAO,SAAU,EAAM,WAE1C,KAAK,EACL,IAAK,MACH,OAAO,EAAU,UAGtB,EAAU,UAOf,OAJA,SAAsB,GACpB,OAAO,EAAc,MAAM,KAAM,YAvB9B,IAwCN,CACD,IAAK,gBACL,MAAO,WACL,IAAI,EAAiB,EAAgC,IAAoB,MAAK,SAAS,EAAS,EAAc,GAC5G,IAEI,EAAiB,EAAa,EAAW,EAAO,EAFhD,EAAS,KAIb,OAAO,IAAoB,MAAK,SAAmB,GACjD,OACE,OAAQ,EAAU,KAAO,EAAU,MACjC,KAAK,EAEH,OADA,EAAU,KAAO,EACV,KAAK,IAAI,YAAY,GAAmB,aAAa,SAAU,EAAK,GACzE,IACI,EADQ,EAAI,YAAY,IACR,MAAM,aAAa,WAAW,KAAM,QACpD,EAAkB,GAClB,EAAyB,EAE7B,EAAQ,UAAY,WAClB,IAAI,EAAS,EAAQ,OAErB,GAAI,EAAQ,CACV,IAAI,EAAS,EAAO,MAGhB,EAAO,YAAc,EAAO,aAG1B,GAAgB,EAAO,UAAY,GAAgB,GAAY,GAA0B,EAS3F,EAAgB,KAAK,EAAO,OAE5B,KAIJ,EAAO,gBAEP,EAAK,OAKb,KAAK,EACH,EAAkB,EAAU,KAK5B,EAAc,GACd,EAAY,EAA2B,GACvC,EAAU,KAAO,EAEjB,EAAU,IAEZ,KAAK,EACH,IAAK,EAAQ,EAAU,KAAK,KAAM,CAChC,EAAU,KAAO,GACjB,MAKF,OAFA,EAAQ,EAAM,MACd,EAAU,KAAO,GACV,KAAK,IAAI,OAAO,GAAmB,EAAM,IAElD,KAAK,GACH,EAAY,KAAK,EAAM,KAEzB,KAAK,GACH,EAAU,KAAO,EACjB,MAEF,KAAK,GACH,EAAU,KAAO,GACjB,MAEF,KAAK,GACH,EAAU,KAAO,GACjB,EAAU,GAAK,EAAiB,MAAE,GAElC,EAAU,EAAE,EAAU,IAExB,KAAK,GAKH,OAJA,EAAU,KAAO,GAEjB,EAAU,IAEH,EAAU,OAAO,IAE1B,KAAK,GACH,OAAO,EAAU,OAAO,SAAU,GAEpC,KAAK,GACL,IAAK,MACH,OAAO,EAAU,UAGtB,EAAU,KAAM,CAAC,CAAC,EAAG,GAAI,GAAI,UAOlC,OAJA,SAAuB,EAAK,GAC1B,OAAO,EAAe,MAAM,KAAM,YA3G/B,IAyHN,CACD,IAAK,SACL,MAAO,SAAgB,GAIrB,OAAO,KAAK,WAAa,IAAM,GAAa,OAIzC,EAvR+B,GCJpC,GAA+B,WAcjC,SAAS,EAAgB,GACvB,IAAI,EAAS,UAAU,OAAS,QAAsB,IAAjB,UAAU,GAAmB,UAAU,GAAK,GAEjF,EAAgB,KAAM,GAEtB,KAAK,YAAa,EAClB,KAAK,iBAAkB,EAqCvB,KAAK,YAAc,EAAO,WAC1B,KAAK,eAAiB,EAAO,cAC7B,KAAK,cAAgB,EAAO,aAC5B,KAAK,WAAa,EAClB,KAAK,gBAAkB,IAAI,GAAqB,GAwPlD,OAjPA,EAAa,EAAiB,CAAC,CAC7B,IAAK,gBACL,MAAO,WACL,IAAI,EAAiB,EAAgC,IAAoB,MAAK,SAAS,IACrF,IAAI,EAAc,EAAa,EAAO,EAAW,EAAO,EAExD,OAAO,IAAoB,MAAK,SAAkB,GAChD,OACE,OAAQ,EAAS,KAAO,EAAS,MAC/B,KAAK,EACH,IAAK,KAAK,WAAY,CACpB,EAAS,KAAO,EAChB,MAIF,OADA,KAAK,iBAAkB,EAChB,EAAS,OAAO,UAEzB,KAAK,EAIH,OAHA,KAAK,YAAa,EAClB,EAAe,KAAK,eAAiB,KAAK,MAA8B,IAAtB,KAAK,eAAwB,EAC/E,EAAS,KAAO,EACT,KAAK,gBAAgB,cAAc,EAAc,KAAK,aAE/D,KAAK,EAGH,OAFA,EAAc,EAAS,KACvB,EAAS,KAAO,GACT,KAAK,OAAO,KAAK,KAAK,YAE/B,KAAK,GACH,EAAQ,EAAS,KACjB,EAAY,EAA2B,GACvC,EAAS,KAAO,GAEhB,EAAU,IAEZ,KAAK,GACH,IAAK,EAAQ,EAAU,KAAK,KAAM,CAChC,EAAS,KAAO,GAChB,MAKF,OAFA,EAAM,EAAM,MACZ,EAAS,KAAO,GACT,EAAM,OAAO,EAAK,KAAK,eAEhC,KAAK,GACH,EAAS,KAAO,GAChB,MAEF,KAAK,GACH,EAAS,KAAO,GAChB,MAEF,KAAK,GACH,EAAS,KAAO,GAChB,EAAS,GAAK,EAAgB,MAAE,IAEhC,EAAU,EAAE,EAAS,IAEvB,KAAK,GAKH,OAJA,EAAS,KAAO,GAEhB,EAAU,IAEH,EAAS,OAAO,IAEzB,KAAK,GACC,EAaJ,KAAK,YAAa,EAEd,KAAK,kBACP,KAAK,iBAAkB,EACvB,EAAY,KAAK,kBAGrB,KAAK,GACL,IAAK,MACH,OAAO,EAAS,UAGrB,EAAS,KAAM,CAAC,CAAC,GAAI,GAAI,GAAI,UAOlC,OAJA,WACE,OAAO,EAAe,MAAM,KAAM,YA/F/B,IA4GN,CACD,IAAK,kBACL,MAAO,WACL,IAAI,EAAmB,EAAgC,IAAoB,MAAK,SAAS,EAAS,GAChG,OAAO,IAAoB,MAAK,SAAmB,GACjD,OACE,OAAQ,EAAU,KAAO,EAAU,MACjC,KAAK,EAWH,OADA,EAAU,KAAO,EACV,KAAK,gBAAgB,aAAa,EAAK,KAAK,OAErD,KAAK,EACL,IAAK,MACH,OAAO,EAAU,UAGtB,EAAU,UAOf,OAJA,SAAyB,GACvB,OAAO,EAAiB,MAAM,KAAM,YA3BjC,IA4CN,CACD,IAAK,eACL,MAAO,WACL,IAAI,EAAgB,EAAgC,IAAoB,MAAK,SAAS,EAAS,GAC7F,IAAI,EAAW,EACf,OAAO,IAAoB,MAAK,SAAmB,GACjD,OACE,OAAQ,EAAU,KAAO,EAAU,MACjC,KAAK,EACH,GAAI,KAAK,eAAgB,CACvB,EAAU,KAAO,EACjB,MAIA,EAAU,KAAO,EACjB,MAQJ,KAAK,EACH,OAAO,EAAU,OAAO,UAAU,GAEpC,KAAK,EAEH,OADA,EAAU,KAAO,EACV,KAAK,gBAAgB,aAAa,GAE3C,KAAK,EAGH,OAFA,EAAY,EAAU,KACtB,EAAkB,KAAK,MAA8B,IAAtB,KAAK,eAC7B,EAAU,OAAO,SAAU,EAAY,GAEhD,KAAK,GACL,IAAK,MACH,OAAO,EAAU,UAGtB,EAAU,UAOf,OAJA,SAAsB,GACpB,OAAO,EAAc,MAAM,KAAM,YA3C9B,IAqDN,CACD,IAAK,SACL,MAAO,WACL,IAAI,EAAW,EAAgC,IAAoB,MAAK,SAAS,IAC/E,OAAO,IAAoB,MAAK,SAAmB,GACjD,OACE,OAAQ,EAAU,KAAO,EAAU,MACjC,KAAK,EAKH,OAFA,KAAK,iBAAkB,EACvB,EAAU,KAAO,EACV,KAAK,gBAAgB,cAAc,KAE5C,KAAK,EACL,IAAK,MACH,OAAO,EAAU,UAGtB,EAAU,UAOf,OAJA,WACE,OAAO,EAAS,MAAM,KAAM,YArBzB,MA4BF,EArT0B,GCoB/B,GAAgC,WAYlC,SAAS,IACP,IAAI,EAAQ,KAER,EAAS,UAAU,OAAS,QAAsB,IAAjB,UAAU,GAAmB,UAAU,GAAK,GAEjF,EAAgB,KAAM,GAmBtB,KAAK,yBAAwC,WAC3C,IAAI,EAAQ,EAAgC,IAAoB,MAAK,SAAS,EAAQ,GACpF,IAAI,EAAO,EAAS,EAAW,EAAgB,EAAS,EAAiB,EACzE,OAAO,IAAoB,MAAK,SAAkB,GAChD,OACE,OAAQ,EAAS,KAAO,EAAS,MAC/B,KAAK,EAGH,GAFA,EAAQ,EAAK,MAAO,EAAU,EAAK,QAAS,EAAY,EAAK,UAAW,EAAiB,EAAK,eAE1E,CAClB,EAAS,KAAO,EAChB,MAGF,OAAO,EAAS,OAAO,SAAU,MAEnC,KAAK,EAUH,GATA,EAAU,EAAM,qBAAqB,GAIrC,GADA,EAAkB,EAAM,oBAAoB,IAChB,iBAG5B,EAAsB,EAAgB,gBAAgB,EAAQ,KAE1D,EACF,IACE,EAAM,UAAU,GAChB,MAAO,GACH,EASR,OAAO,EAAS,OAAO,SAAU,EAAU,EAAiB,MAE9D,KAAK,EACL,IAAK,MACH,OAAO,EAAS,UAGrB,OAGL,OAAO,SAAU,GACf,OAAO,EAAM,MAAM,KAAM,YAlDgB,GAiE7C,KAAK,eAA8B,WACjC,IAAI,EAAQ,EAAgC,IAAoB,MAAK,SAAS,EAAS,GACrF,IAAI,EAAW,EAAS,EACxB,OAAO,IAAoB,MAAK,SAAmB,GACjD,OACE,OAAQ,EAAU,KAAO,EAAU,MACjC,KAAK,EAoBH,OAnBA,EAAY,EAAM,UAAW,EAAU,EAAM,QAiB7C,EAAkB,EAAM,oBAAoB,GAC5C,EAAU,KAAO,EACV,EAAgB,gBAAgB,EAAQ,KAEjD,KAAK,EAEH,OADA,EAAU,KAAO,EACV,EAAgB,gBAEzB,KAAK,EACL,IAAK,MACH,OAAO,EAAU,UAGtB,OAGL,OAAO,SAAU,GACf,OAAO,EAAM,MAAM,KAAM,YAzCM,GAyEnC,KAAK,QAAU,EACf,KAAK,eAAiB,EAAO,cAC7B,KAAK,kBAAoB,IAAI,IAEzB,EAAO,mBACT,GAA2B,WACzB,OAAO,EAAM,4BAmLnB,OApKA,EAAa,EAAkB,CAAC,CAC9B,IAAK,sBACL,MAAO,SAA6B,GAClC,GAAI,IAAc,IAChB,MAAM,IAAI,EAAa,6BAGzB,IAAI,EAAkB,KAAK,kBAAkB,IAAI,GAQjD,OANK,IACH,EAAkB,IAAI,GAAgB,EAAW,KAAK,SAEtD,KAAK,kBAAkB,IAAI,EAAW,IAGjC,IASR,CACD,IAAK,uBACL,MAAO,SAA8B,GACnC,IAAK,KAAK,eAER,OAAO,EAMT,IAAI,EAAsB,KAAK,wBAAwB,GAEvD,OAA4B,OAAxB,GAQG,GADG,KAAK,MAC2C,IAAtB,KAAK,iBAY1C,CACD,IAAK,0BACL,MAAO,SAAiC,GACtC,IAAK,EAAe,QAAQ,IAAI,QAC9B,OAAO,KAGT,IAAI,EAAa,EAAe,QAAQ,IAAI,QAExC,EADa,IAAI,KAAK,GACE,UAG5B,OAAI,MAAM,GACD,KAGF,IAmBR,CACD,IAAK,yBACL,MAAO,WACL,IAAI,EAA0B,EAAgC,IAAoB,MAAK,SAAS,IAC9F,IAAI,EAAW,EAAO,EAAa,EAAW,EAE9C,OAAO,IAAoB,MAAK,SAAmB,GACjD,OACE,OAAQ,EAAU,KAAO,EAAU,MACjC,KAAK,EAGH,EAAY,EAA2B,KAAK,mBAC5C,EAAU,KAAO,EAEjB,EAAU,IAEZ,KAAK,EACH,IAAK,EAAQ,EAAU,KAAK,KAAM,CAChC,EAAU,KAAO,GACjB,MAKF,OAFA,EAAc,EAAe,EAAM,MAAO,GAAI,EAAY,EAAY,GAAI,EAAkB,EAAY,GACxG,EAAU,KAAO,EACV,KAAK,OAAO,OAAO,GAE5B,KAAK,EAEH,OADA,EAAU,KAAO,EACV,EAAgB,SAEzB,KAAK,EACH,EAAU,KAAO,EACjB,MAEF,KAAK,GACH,EAAU,KAAO,GACjB,MAEF,KAAK,GACH,EAAU,KAAO,GACjB,EAAU,GAAK,EAAiB,MAAE,GAElC,EAAU,EAAE,EAAU,IAExB,KAAK,GAKH,OAJA,EAAU,KAAO,GAEjB,EAAU,IAEH,EAAU,OAAO,IAE1B,KAAK,GAEH,KAAK,kBAAoB,IAAI,IAE/B,KAAK,GACL,IAAK,MACH,OAAO,EAAU,UAGtB,EAAU,KAAM,CAAC,CAAC,EAAG,GAAI,GAAI,UAOlC,OAJA,WACE,OAAO,EAAwB,MAAM,KAAM,YA/DxC,MAsEF,EAvW2B,QC1B7B,SAAS,GAAe,GAC7B,IAAK,EACH,MAAM,IAAI,EAAa,oCAAqC,CAC1D,MAAO,IAMX,GAAqB,kBAAV,EAAoB,CAC7B,IAAI,EAAY,IAAI,IAAI,EAAO,SAAS,MACxC,MAAO,CACL,SAAU,EAAU,KACpB,IAAK,EAAU,MAInB,IAAI,EAAW,EAAM,SACjB,EAAM,EAAM,IAEhB,IAAK,EACH,MAAM,IAAI,EAAa,oCAAqC,CAC1D,MAAO,IAMX,IAAK,EAAU,CACb,IAAI,EAAa,IAAI,IAAI,EAAK,SAAS,MAEvC,MAAO,CACL,SAAU,EAAW,KACrB,IAAK,EAAW,MAMpB,IAAI,EAAc,IAAI,IAAI,EAAK,SAAS,MACpC,EAAc,IAAI,IAAI,EAAK,SAAS,MAExC,OADA,EAAY,aAAa,IApDC,kBAoD0B,GAC7C,CACL,SAAU,EAAY,KACtB,IAAK,EAAY,MC9CrB,IAAI,GAA8B,SAAS,IACzC,IAAI,EAAQ,KAEZ,EAAgB,KAAM,GAEtB,KAAK,YAAc,GACnB,KAAK,eAAiB,GAEtB,KAAK,iBAAgC,WACnC,IAAI,EAAQ,EAAgC,IAAoB,MAAK,SAAS,EAAQ,GACpF,IAAI,EAAS,EACb,OAAO,IAAoB,MAAK,SAAkB,GAChD,OACE,OAAQ,EAAS,KAAO,EAAS,MAC/B,KAAK,EACH,EAAU,EAAK,SAAS,EAAQ,EAAK,SAInC,EAAM,gBAAkB,GAG5B,KAAK,EACL,IAAK,MACH,OAAO,EAAS,UAGrB,OAGL,OAAO,SAAU,GACf,OAAO,EAAM,MAAM,KAAM,YAvBQ,GA2BrC,KAAK,yBAAwC,WAC3C,IAAI,EAAQ,EAAgC,IAAoB,MAAK,SAAS,EAAS,GACrF,IAAI,EAAO,EAAO,EAAgB,EAClC,OAAO,IAAoB,MAAK,SAAmB,GACjD,OACE,OAAQ,EAAU,KAAO,EAAU,MACjC,KAAK,EAcH,OAbA,EAAQ,EAAM,MAAO,EAAQ,EAAM,MAAO,EAAiB,EAAM,eAE9C,YAAf,EAAM,OAER,EAAM,EAAM,gBAAgB,IAExB,EACF,EAAM,eAAe,KAAK,GAE1B,EAAM,YAAY,KAAK,IAIpB,EAAU,OAAO,SAAU,GAEpC,KAAK,EACL,IAAK,MACH,OAAO,EAAU,UAGtB,OAGL,OAAO,SAAU,GACf,OAAO,EAAM,MAAM,KAAM,YA/BgB,ICnC3C,GAAyB,SAAS,EAAuB,GAC3D,IAAI,EAAQ,KAER,EAAqB,EAAK,mBAE9B,EAAgB,KAAM,GAEtB,KAAK,mBAAkC,WACrC,IAAI,EAAQ,EAAgC,IAAoB,MAAK,SAAS,EAAQ,GACpF,IAAI,EAAS,EAAQ,EACrB,OAAO,IAAoB,MAAK,SAAkB,GAChD,OACE,OAAQ,EAAS,KAAO,EAAS,MAC/B,KAAK,EAGH,OAFA,EAAU,EAAM,QAAS,EAAS,EAAM,OACxC,EAAW,GAAU,EAAO,UAAY,EAAM,oBAAoB,kBAAkB,EAAQ,KACrF,EAAS,OAAO,SAAU,EAAW,IAAI,QAAQ,GAAY,GAEtE,KAAK,EACL,IAAK,MACH,OAAO,EAAS,UAGrB,OAGL,OAAO,SAAU,GACf,OAAO,EAAM,MAAM,KAAM,YApBU,GAwBvC,KAAK,oBAAsB,QCzB7B,SAAS,GAAU,GACjB,MAAwB,kBAAV,EAAqB,IAAI,QAAQ,GAAS,EAa1D,IAAI,GAA+B,WAkBjC,SAAS,EAAgB,EAAU,GACjC,EAAgB,KAAM,GAEtB,KAAK,WAAa,GAmDlB,OAAO,OAAO,KAAM,GACpB,KAAK,MAAQ,EAAQ,MACrB,KAAK,UAAY,EACjB,KAAK,iBAAmB,IAAI,EAC5B,KAAK,wBAA0B,GAG/B,KAAK,SAAW,EAAmB,EAAS,SAC5C,KAAK,gBAAkB,IAAI,IAE3B,IACI,EADA,EAAY,EAA2B,KAAK,UAGhD,IACE,IAAK,EAAU,MAAO,EAAQ,EAAU,KAAK,MAAO,CAClD,IAAI,EAAS,EAAM,MAEnB,KAAK,gBAAgB,IAAI,EAAQ,KAEnC,MAAO,GACP,EAAU,EAAE,GACZ,QACA,EAAU,IAGZ,KAAK,MAAM,UAAU,KAAK,iBAAiB,SA2jC7C,OA1iCA,EAAa,EAAiB,CAAC,CAC7B,IAAK,QACL,MAAO,SAAU,GACf,SAAS,EAAM,GACb,OAAO,EAAO,MAAM,KAAM,WAO5B,OAJA,EAAM,SAAW,WACf,OAAO,EAAO,YAGT,EATF,CAUS,WACd,IAAI,EAAO,EAAgC,IAAoB,MAAK,SAAS,EAAQ,GACnF,IAAI,EAAO,EAAS,EAAyB,EAAiB,EAAY,EAAQ,EAAI,EAAuB,EAAe,EAAY,EAAQ,EAEhJ,OAAO,IAAoB,MAAK,SAAkB,GAChD,OACE,OAAQ,EAAS,KAAO,EAAS,MAC/B,KAAK,EAIH,GAHA,EAAQ,KAAK,QAGU,cAFvB,EAAU,GAAU,IAEN,MAAuB,aAAiB,YAAc,EAAM,iBAAkB,CAC1F,EAAS,KAAO,EAChB,MAIF,OADA,EAAS,KAAO,EACT,EAAM,gBAEf,KAAK,EAGH,KAFA,EAA0B,EAAS,MAEL,CAC5B,EAAS,KAAO,EAChB,MAOF,OAAO,EAAS,OAAO,SAAU,GAEnC,KAAK,EAIH,EAAkB,KAAK,YAAY,gBAAkB,EAAQ,QAAU,KACvE,EAAS,KAAO,GAChB,EAAa,EAA2B,KAAK,iBAAiB,qBAC9D,EAAS,KAAO,GAEhB,EAAW,IAEb,KAAK,GACH,IAAK,EAAS,EAAW,KAAK,KAAM,CAClC,EAAS,KAAO,GAChB,MAKF,OAFA,EAAK,EAAO,MACZ,EAAS,KAAO,GACT,EAAG,CACR,QAAS,EAAQ,QACjB,MAAO,IAGX,KAAK,GACH,EAAU,EAAS,KAErB,KAAK,GACH,EAAS,KAAO,GAChB,MAEF,KAAK,GACH,EAAS,KAAO,GAChB,MAEF,KAAK,GACH,EAAS,KAAO,GAChB,EAAS,GAAK,EAAgB,MAAE,IAEhC,EAAW,EAAE,EAAS,IAExB,KAAK,GAKH,OAJA,EAAS,KAAO,GAEhB,EAAW,IAEJ,EAAS,OAAO,IAEzB,KAAK,GACH,EAAS,KAAO,GAChB,MAEF,KAAK,GAGH,MAFA,EAAS,KAAO,GAChB,EAAS,GAAK,EAAgB,MAAE,IAC1B,IAAI,EAAa,kCAAmC,CACxD,YAAa,EAAS,KAG1B,KAAK,GAOH,OAHA,EAAwB,EAAQ,QAChC,EAAS,KAAO,GAChB,EAAS,KAAO,GACT,MAAM,EAA0B,aAAjB,EAAQ,UAAsB,EAAY,KAAK,UAAU,cAEjF,KAAK,GACH,EAAgB,EAAS,KAMzB,EAAa,EAA2B,KAAK,iBAAiB,oBAC9D,EAAS,KAAO,GAEhB,EAAW,IAEb,KAAK,GACH,IAAK,EAAS,EAAW,KAAK,KAAM,CAClC,EAAS,KAAO,GAChB,MAKF,OAFA,EAAW,EAAO,MAClB,EAAS,KAAO,GACT,EAAS,CACd,MAAO,EACP,QAAS,EACT,SAAU,IAGd,KAAK,GACH,EAAgB,EAAS,KAE3B,KAAK,GACH,EAAS,KAAO,GAChB,MAEF,KAAK,GACH,EAAS,KAAO,GAChB,MAEF,KAAK,GACH,EAAS,KAAO,GAChB,EAAS,GAAK,EAAgB,MAAE,IAEhC,EAAW,EAAE,EAAS,IAExB,KAAK,GAKH,OAJA,EAAS,KAAO,GAEhB,EAAW,IAEJ,EAAS,OAAO,IAEzB,KAAK,GACH,OAAO,EAAS,OAAO,SAAU,GAEnC,KAAK,GAUH,GATA,EAAS,KAAO,GAChB,EAAS,GAAK,EAAgB,MAAE,KAQ3B,EAAiB,CACpB,EAAS,KAAO,GAChB,MAIF,OADA,EAAS,KAAO,GACT,KAAK,aAAa,eAAgB,CACvC,MAAO,EAAS,GAChB,MAAO,EACP,gBAAiB,EAAgB,QACjC,QAAS,EAAsB,UAGnC,KAAK,GACH,MAAM,EAAS,GAEjB,KAAK,GACL,IAAK,MACH,OAAO,EAAS,UAGrB,EAAS,KAAM,CAAC,CAAC,GAAI,IAAK,CAAC,GAAI,GAAI,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,GAAI,GAAI,UAGxE,OAAO,SAAU,GACf,OAAO,EAAK,MAAM,KAAM,YA7LZ,KA2Mf,CACD,IAAK,mBACL,MAAO,WACL,IAAI,EAAoB,EAAgC,IAAoB,MAAK,SAAS,EAAS,GACjG,IAAI,EAAU,EACd,OAAO,IAAoB,MAAK,SAAmB,GACjD,OACE,OAAQ,EAAU,KAAO,EAAU,MACjC,KAAK,EAEH,OADA,EAAU,KAAO,EACV,KAAK,MAAM,GAEpB,KAAK,EAIH,OAHA,EAAW,EAAU,KACrB,EAAgB,EAAS,QACzB,KAAK,UAAU,KAAK,SAAS,EAAO,IAC7B,EAAU,OAAO,SAAU,GAEpC,KAAK,EACL,IAAK,MACH,OAAO,EAAU,UAGtB,EAAU,UAOf,OAJA,SAA0B,GACxB,OAAO,EAAkB,MAAM,KAAM,YAzBlC,IA2CN,CACD,IAAK,aACL,MAAO,WACL,IAAI,EAAc,EAAgC,IAAoB,MAAK,SAAS,EAAS,GAC3F,IAAI,EAAS,EAAgB,EAAiB,EAAW,EAAc,EAAkB,EAAmB,EAAY,EAAQ,EAEhI,OAAO,IAAoB,MAAK,SAAmB,GACjD,OACE,OAAQ,EAAU,KAAO,EAAU,MACjC,KAAK,EAIH,OAHA,EAAU,GAAU,GACpB,EAAkB,KAAK,UAAW,EAAY,EAAgB,UAAW,EAAe,EAAgB,aACxG,EAAU,KAAO,EACV,KAAK,YAAY,EAAS,QAEnC,KAAK,EAMH,OALA,EAAmB,EAAU,KAC7B,EAAoB,EAAc,EAAc,GAAI,GAAe,CACjE,UAAW,IAEb,EAAU,KAAO,EACV,OAAO,MAAM,EAAkB,GAExC,KAAK,EACH,EAAiB,EAAU,KAU3B,EAAa,EAA2B,KAAK,iBAAiB,6BAC9D,EAAU,KAAO,GAEjB,EAAW,IAEb,KAAK,GACH,IAAK,EAAS,EAAW,KAAK,KAAM,CAClC,EAAU,KAAO,GACjB,MAKF,OAFA,EAAW,EAAO,MAClB,EAAU,KAAO,GACV,EAAS,CACd,UAAW,EACX,aAAc,EACd,eAAgB,EAChB,QAAS,EACT,MAAO,KAAK,QAGhB,KAAK,GAGH,GAFA,EAAU,GAAK,EAAU,KAErB,EAAU,GAAI,CAChB,EAAU,KAAO,GACjB,MAGF,EAAU,QAAK,EAEjB,KAAK,GACH,EAAiB,EAAU,GAE7B,KAAK,GACH,EAAU,KAAO,GACjB,MAEF,KAAK,GACH,EAAU,KAAO,GACjB,MAEF,KAAK,GACH,EAAU,KAAO,GACjB,EAAU,GAAK,EAAiB,MAAE,IAElC,EAAW,EAAE,EAAU,IAEzB,KAAK,GAKH,OAJA,EAAU,KAAO,GAEjB,EAAW,IAEJ,EAAU,OAAO,IAE1B,KAAK,GACH,OAAO,EAAU,OAAO,SAAU,GAEpC,KAAK,GACL,IAAK,MACH,OAAO,EAAU,UAGtB,EAAU,KAAM,CAAC,CAAC,GAAI,GAAI,GAAI,UAOnC,OAJA,SAAoB,GAClB,OAAO,EAAY,MAAM,KAAM,YAnG5B,IAwHN,CACD,IAAK,WACL,MAAO,WACL,IAAI,EAAY,EAAgC,IAAoB,MAAK,SAAS,EAAS,EAAK,GAC9F,IAAI,EAAS,EAAkB,EAAiB,EAAkB,EAAW,EAAc,EAAO,EAAwB,EAAa,EAAY,EAAQ,EAE3J,OAAO,IAAoB,MAAK,SAAmB,GACjD,OACE,OAAQ,EAAU,KAAO,EAAU,MACjC,KAAK,EAKH,OAJA,EAAU,GAAU,GAGpB,EAAU,KAAO,EACV,EAAQ,GAEjB,KAAK,EAEH,OADA,EAAU,KAAO,EACV,KAAK,YAAY,EAAS,SAEnC,KAAK,EACH,EAAmB,EAAU,KAG3B,EAAU,KAAO,EACjB,MAaJ,KAAK,EACH,GAAI,EAAU,CACZ,EAAU,KAAO,GACjB,MAOF,MAAM,IAAI,EAAa,6BAA8B,CACnD,IAAK,EAAe,EAAiB,OAGzC,KAAK,GAEH,OADA,EAAU,KAAO,GACV,KAAK,2BAA2B,GAEzC,KAAK,GAGH,GAFA,EAAkB,EAAU,KAEP,CACnB,EAAU,KAAO,GACjB,MAOF,OAAO,EAAU,OAAO,UAAU,GAEpC,KAAK,GAGH,OAFA,EAAmB,KAAK,UAAW,EAAY,EAAiB,UAAW,EAAe,EAAiB,aAC3G,EAAU,KAAO,GACV,KAAK,OAAO,KAAK,GAE1B,KAAK,GAIH,GAHA,EAAQ,EAAU,OAClB,EAAyB,KAAK,YAAY,mBAEb,CAC3B,EAAU,KAAO,GACjB,MAIF,OADA,EAAU,KAAO,GACV,EAGP,EAAO,EAAiB,QAAS,CAAC,mBAAoB,GAExD,KAAK,GACH,EAAU,GAAK,EAAU,KACzB,EAAU,KAAO,GACjB,MAEF,KAAK,GACH,EAAU,GAAK,KAEjB,KAAK,GASH,OARA,EAAc,EAAU,GAMxB,EAAU,KAAO,GACjB,EAAU,KAAO,GACV,EAAM,IAAI,EAAkB,EAAyB,EAAgB,QAAU,GAExF,KAAK,GACH,EAAU,KAAO,GACjB,MAEF,KAAK,GAIH,GAHA,EAAU,KAAO,GACjB,EAAU,GAAK,EAAiB,MAAE,IAEN,uBAAtB,EAAU,GAAG,KAAgC,CACjD,EAAU,KAAO,GACjB,MAIF,OADA,EAAU,KAAO,GACV,IAET,KAAK,GACH,MAAM,EAAU,GAElB,KAAK,GACH,EAAa,EAA2B,KAAK,iBAAiB,mBAC9D,EAAU,KAAO,GAEjB,EAAW,IAEb,KAAK,GACH,IAAK,EAAS,EAAW,KAAK,KAAM,CAClC,EAAU,KAAO,GACjB,MAKF,OAFA,EAAW,EAAO,MAClB,EAAU,KAAO,GACV,EAAS,CACd,UAAW,EACX,YAAa,EACb,YAAa,EAAgB,QAC7B,QAAS,EACT,MAAO,KAAK,QAGhB,KAAK,GACH,EAAU,KAAO,GACjB,MAEF,KAAK,GACH,EAAU,KAAO,GACjB,MAEF,KAAK,GACH,EAAU,KAAO,GACjB,EAAU,GAAK,EAAiB,MAAE,IAElC,EAAW,EAAE,EAAU,IAEzB,KAAK,GAKH,OAJA,EAAU,KAAO,GAEjB,EAAW,IAEJ,EAAU,OAAO,IAE1B,KAAK,GACH,OAAO,EAAU,OAAO,UAAU,GAEpC,KAAK,GACL,IAAK,MACH,OAAO,EAAU,UAGtB,EAAU,KAAM,CAAC,CAAC,GAAI,IAAK,CAAC,GAAI,GAAI,GAAI,UAO7C,OAJA,SAAkB,EAAK,GACrB,OAAO,EAAU,MAAM,KAAM,YArL1B,IAsMN,CACD,IAAK,cACL,MAAO,WACL,IAAI,EAAe,EAAgC,IAAoB,MAAK,SAAS,EAAS,EAAS,GACrG,IAAI,EAAkB,EAAY,EAAQ,EAE1C,OAAO,IAAoB,MAAK,SAAmB,GACjD,OACE,OAAQ,EAAU,KAAO,EAAU,MACjC,KAAK,EACH,GAAI,KAAK,WAAW,GAAO,CACzB,EAAU,KAAO,GACjB,MAGF,EAAmB,EACnB,EAAa,EAA2B,KAAK,iBAAiB,uBAC9D,EAAU,KAAO,EAEjB,EAAW,IAEb,KAAK,EACH,IAAK,EAAS,EAAW,KAAK,KAAM,CAClC,EAAU,KAAO,GACjB,MAMF,OAHA,EAAW,EAAO,MAClB,EAAU,GAAK,GACf,EAAU,KAAO,GACV,EAAS,CACd,KAAM,EACN,QAAS,EACT,MAAO,KAAK,MACZ,OAAQ,KAAK,SAGjB,KAAK,GACH,EAAU,GAAK,EAAU,KACzB,GAAmB,EAAI,EAAU,IAAI,EAAU,IAEjD,KAAK,GACH,EAAU,KAAO,EACjB,MAEF,KAAK,GACH,EAAU,KAAO,GACjB,MAEF,KAAK,GACH,EAAU,KAAO,GACjB,EAAU,GAAK,EAAiB,MAAE,GAElC,EAAW,EAAE,EAAU,IAEzB,KAAK,GAKH,OAJA,EAAU,KAAO,GAEjB,EAAW,IAEJ,EAAU,OAAO,IAE1B,KAAK,GACH,KAAK,WAAW,GAAQ,EAE1B,KAAK,GACH,OAAO,EAAU,OAAO,SAAU,KAAK,WAAW,IAEpD,KAAK,GACL,IAAK,MACH,OAAO,EAAU,UAGtB,EAAU,KAAM,CAAC,CAAC,EAAG,GAAI,GAAI,UAOlC,OAJA,SAAqB,EAAK,GACxB,OAAO,EAAa,MAAM,KAAM,YA3E7B,IAwFN,CACD,IAAK,cACL,MAAO,SAAqB,GAC1B,IACI,EADA,EAAa,EAA2B,KAAK,UAAU,SAG3D,IACE,IAAK,EAAW,MAAO,EAAS,EAAW,KAAK,MAAO,CAGrD,GAAI,KAFS,EAAO,MAGlB,OAAO,GAGX,MAAO,GACP,EAAW,EAAE,GACb,QACA,EAAW,IAGb,OAAO,IAmBR,CACD,IAAK,eACL,MAAO,WACL,IAAI,EAAgB,EAAgC,IAAoB,MAAK,SAAS,EAAS,EAAM,GACnG,IAAI,EAAY,EAAQ,EAExB,OAAO,IAAoB,MAAK,SAAmB,GACjD,OACE,OAAQ,EAAU,KAAO,EAAU,MACjC,KAAK,EACH,EAAa,EAA2B,KAAK,iBAAiB,IAC9D,EAAU,KAAO,EAEjB,EAAW,IAEb,KAAK,EACH,IAAK,EAAS,EAAW,KAAK,KAAM,CAClC,EAAU,KAAO,EACjB,MAKF,OAFA,EAAW,EAAO,MAClB,EAAU,KAAO,EACV,EAAS,GAElB,KAAK,EACH,EAAU,KAAO,EACjB,MAEF,KAAK,EACH,EAAU,KAAO,GACjB,MAEF,KAAK,GACH,EAAU,KAAO,GACjB,EAAU,GAAK,EAAiB,MAAE,GAElC,EAAW,EAAE,EAAU,IAEzB,KAAK,GAKH,OAJA,EAAU,KAAO,GAEjB,EAAW,IAEJ,EAAU,OAAO,IAE1B,KAAK,GACL,IAAK,MACH,OAAO,EAAU,UAGtB,EAAU,KAAM,CAAC,CAAC,EAAG,GAAI,GAAI,UAOlC,OAJA,SAAsB,EAAK,GACzB,OAAO,EAAc,MAAM,KAAM,YArD9B,IAoEN,CACD,IAAK,mBACL,MAAoB,IAAoB,MAAK,SAAS,EAAiB,GACrE,IAEI,EAAY,EAAQ,EAFpB,EAAQ,KAIZ,OAAO,IAAoB,MAAK,SAA2B,GACzD,OACE,OAAQ,EAAU,KAAO,EAAU,MACjC,KAAK,EACH,EAAa,EAA2B,KAAK,UAAU,SACvD,EAAU,KAAO,EACjB,EAAqB,IAAoB,MAAK,SAAS,IACrD,IAAI,EAAQ,EAAO,EACnB,OAAO,IAAoB,MAAK,SAAgB,GAC9C,OACE,OAAQ,EAAU,KAAO,EAAU,MACjC,KAAK,EAGH,GAA8B,oBAF9B,EAAS,EAAO,OAEI,GAAuB,CACzC,EAAU,KAAO,EACjB,MAgBF,OAbA,EAAQ,EAAM,gBAAgB,IAAI,GAElC,EAAmB,SAA0B,GAC3C,IAAI,EAAgB,EAAc,EAAc,GAAI,GAAQ,GAAI,CAC9D,MAAO,IAKT,OAAO,EAAO,GAAM,IAGtB,EAAU,KAAO,EACV,EAET,KAAK,EACL,IAAK,MACH,OAAO,EAAU,UAGtB,MAGL,EAAW,IAEb,KAAK,EACH,IAAK,EAAS,EAAW,KAAK,KAAM,CAClC,EAAU,KAAO,EACjB,MAGF,OAAO,EAAU,cAAc,IAAS,KAAM,GAEhD,KAAK,EACH,EAAU,KAAO,EACjB,MAEF,KAAK,EACH,EAAU,KAAO,GACjB,MAEF,KAAK,GACH,EAAU,KAAO,GACjB,EAAU,GAAK,EAAiB,MAAE,GAElC,EAAW,EAAE,EAAU,IAEzB,KAAK,GAKH,OAJA,EAAU,KAAO,GAEjB,EAAW,IAEJ,EAAU,OAAO,IAE1B,KAAK,GACL,IAAK,MACH,OAAO,EAAU,UAGtB,EAAkB,KAAM,CAAC,CAAC,EAAG,GAAI,GAAI,UAgBzC,CACD,IAAK,YACL,MAAO,SAAmB,GAGxB,OAFA,KAAK,wBAAwB,KAAK,GAE3B,IAaR,CACD,IAAK,cACL,MAAO,WACL,IAAI,EAAe,EAAgC,IAAoB,MAAK,SAAS,IACnF,IAAI,EACJ,OAAO,IAAoB,MAAK,SAAmB,GACjD,OACE,OAAQ,EAAU,KAAO,EAAU,MACjC,KAAK,EACH,KAAM,EAAU,KAAK,wBAAwB,SAAU,CACrD,EAAU,KAAO,EACjB,MAIF,OADA,EAAU,KAAO,EACV,EAET,KAAK,EACH,EAAU,KAAO,EACjB,MAEF,KAAK,EACL,IAAK,MACH,OAAO,EAAU,UAGtB,EAAU,UAOf,OAJA,WACE,OAAO,EAAa,MAAM,KAAM,YA5B7B,IAsCN,CACD,IAAK,UACL,MAAO,WACL,KAAK,iBAAiB,YAavB,CACD,IAAK,6BACL,MAAO,WACL,IAAI,EAA8B,EAAgC,IAAoB,MAAK,SAAS,EAAS,GAC3G,IAAI,EAAiB,EAAa,EAAa,EAAS,EAExD,OAAO,IAAoB,MAAK,SAAmB,GACjD,OACE,OAAQ,EAAW,KAAO,EAAW,MACnC,KAAK,EACH,EAAkB,EAClB,GAAc,EACd,EAAc,EAA2B,KAAK,iBAAiB,oBAC/D,EAAW,KAAO,EAElB,EAAY,IAEd,KAAK,EACH,IAAK,EAAU,EAAY,KAAK,KAAM,CACpC,EAAW,KAAO,GAClB,MAKF,OAFA,EAAW,EAAQ,MACnB,EAAW,KAAO,EACX,EAAS,CACd,QAAS,KAAK,QACd,SAAU,EACV,MAAO,KAAK,QAGhB,KAAK,EAGH,GAFA,EAAW,GAAK,EAAW,KAEvB,EAAW,GAAI,CACjB,EAAW,KAAO,GAClB,MAGF,EAAW,QAAK,EAElB,KAAK,GAIH,GAHA,EAAkB,EAAW,GAC7B,GAAc,EAEV,EAAiB,CACnB,EAAW,KAAO,GAClB,MAGF,OAAO,EAAW,OAAO,QAAS,IAEpC,KAAK,GACH,EAAW,KAAO,EAClB,MAEF,KAAK,GACH,EAAW,KAAO,GAClB,MAEF,KAAK,GACH,EAAW,KAAO,GAClB,EAAW,GAAK,EAAkB,MAAE,GAEpC,EAAY,EAAE,EAAW,IAE3B,KAAK,GAKH,OAJA,EAAW,KAAO,GAElB,EAAY,IAEL,EAAW,OAAO,IAE3B,KAAK,GAmBH,OAlBK,GACC,GAA8C,MAA3B,EAAgB,SACrC,OAAkB,GAgBf,EAAW,OAAO,SAAU,GAErC,KAAK,GACL,IAAK,MACH,OAAO,EAAW,UAGvB,EAAU,KAAM,CAAC,CAAC,EAAG,GAAI,GAAI,UAOlC,OAJA,SAAoC,GAClC,OAAO,EAA4B,MAAM,KAAM,YArG5C,MA4GF,EA5pC0B,GCb/B,GAAwB,WAuB1B,SAAS,IACP,IAAI,EAAU,UAAU,OAAS,QAAsB,IAAjB,UAAU,GAAmB,UAAU,GAAK,GAElF,EAAgB,KAAM,GAStB,KAAK,UAAY,EAA0B,EAAQ,WASnD,KAAK,QAAU,EAAQ,SAAW,GASlC,KAAK,aAAe,EAAQ,aAS5B,KAAK,aAAe,EAAQ,aAsU9B,OA/SA,EAAa,EAAU,CAAC,CACtB,IAAK,SACL,MAAO,SAAgB,GAKrB,OAHuB,EADD,KAAK,UAAU,GACkB,GACnB,KA2BrC,CACD,IAAK,YACL,MAAO,SAAmB,GAEpB,aAAmB,aACrB,EAAU,CACR,MAAO,EACP,QAAS,EAAQ,UAIrB,IAAI,EAAQ,EAAQ,MAChB,EAAqC,kBAApB,EAAQ,QAAuB,IAAI,QAAQ,EAAQ,SAAW,EAAQ,QACvF,EAAS,WAAY,EAAU,EAAQ,YAAS,EAChD,EAAU,IAAI,GAAgB,KAAM,CACtC,MAAO,EACP,QAAS,EACT,OAAQ,IAGN,EAAe,KAAK,aAAa,EAAS,EAAS,GAKvD,MAAO,CAAC,EAHU,KAAK,eAAe,EAAc,EAAS,EAAS,MAKvE,CACD,IAAK,eACL,MAAO,WACL,IAAI,EAAgB,EAAgC,IAAoB,MAAK,SAAS,EAAQ,EAAS,EAAS,GAC9G,IAAI,EAAU,EAAW,EAAO,EAAU,EAAY,EAAQ,EAE9D,OAAO,IAAoB,MAAK,SAAkB,GAChD,OACE,OAAQ,EAAS,KAAO,EAAS,MAC/B,KAAK,EAEH,OADA,EAAS,KAAO,EACT,EAAQ,aAAa,mBAAoB,CAC9C,MAAO,EACP,QAAS,IAGb,KAAK,EAIH,OAHA,OAAW,EACX,EAAS,KAAO,EAChB,EAAS,KAAO,EACT,KAAK,QAAQ,EAAS,GAE/B,KAAK,EAGH,IAFA,EAAW,EAAS,OAEiB,UAAlB,EAAS,KAAmB,CAC7C,EAAS,KAAO,EAChB,MAGF,MAAM,IAAI,EAAa,cAAe,CACpC,IAAK,EAAQ,MAGjB,KAAK,EACH,EAAS,KAAO,GAChB,MAEF,KAAK,GACH,EAAS,KAAO,GAChB,EAAS,GAAK,EAAgB,MAAE,GAChC,EAAY,EAA2B,EAAQ,iBAAiB,oBAChE,EAAS,KAAO,GAEhB,EAAU,IAEZ,KAAK,GACH,IAAK,EAAQ,EAAU,KAAK,KAAM,CAChC,EAAS,KAAO,GAChB,MAKF,OAFA,EAAW,EAAM,MACjB,EAAS,KAAO,GACT,EAAS,CACd,MAAO,EAAS,GAChB,MAAO,EACP,QAAS,IAGb,KAAK,GAGH,KAFA,EAAW,EAAS,MAEL,CACb,EAAS,KAAO,GAChB,MAGF,OAAO,EAAS,OAAO,QAAS,IAElC,KAAK,GACH,EAAS,KAAO,GAChB,MAEF,KAAK,GACH,EAAS,KAAO,GAChB,MAEF,KAAK,GACH,EAAS,KAAO,GAChB,EAAS,GAAK,EAAgB,MAAE,IAEhC,EAAU,EAAE,EAAS,IAEvB,KAAK,GAKH,OAJA,EAAS,KAAO,GAEhB,EAAU,IAEH,EAAS,OAAO,IAEzB,KAAK,GACH,GAAI,EAAU,CACZ,EAAS,KAAO,GAChB,MAGF,MAAM,EAAS,GAEjB,KAAK,GACC,EAIN,KAAK,GACH,EAAa,EAA2B,EAAQ,iBAAiB,uBACjE,EAAS,KAAO,GAEhB,EAAW,IAEb,KAAK,GACH,IAAK,EAAS,EAAW,KAAK,KAAM,CAClC,EAAS,KAAO,GAChB,MAKF,OAFA,EAAY,EAAO,MACnB,EAAS,KAAO,GACT,EAAU,CACf,MAAO,EACP,QAAS,EACT,SAAU,IAGd,KAAK,GACH,EAAW,EAAS,KAEtB,KAAK,GACH,EAAS,KAAO,GAChB,MAEF,KAAK,GACH,EAAS,KAAO,GAChB,MAEF,KAAK,GACH,EAAS,KAAO,GAChB,EAAS,GAAK,EAAgB,MAAE,IAEhC,EAAW,EAAE,EAAS,IAExB,KAAK,GAKH,OAJA,EAAS,KAAO,GAEhB,EAAW,IAEJ,EAAS,OAAO,IAEzB,KAAK,GACH,OAAO,EAAS,OAAO,SAAU,GAEnC,KAAK,GACL,IAAK,MACH,OAAO,EAAS,UAGrB,EAAS,KAAM,CAAC,CAAC,EAAG,IAAK,CAAC,GAAI,GAAI,GAAI,IAAK,CAAC,GAAI,GAAI,GAAI,UAO7D,OAJA,SAAsB,EAAI,EAAK,GAC7B,OAAO,EAAc,MAAM,KAAM,YA9J9B,IAmKN,CACD,IAAK,iBACL,MAAO,WACL,IAAI,EAAkB,EAAgC,IAAoB,MAAK,SAAS,EAAS,EAAc,EAAS,EAAS,GAC/H,IAAI,EAAU,EACd,OAAO,IAAoB,MAAK,SAAmB,GACjD,OACE,OAAQ,EAAU,KAAO,EAAU,MACjC,KAAK,EAGH,OAFA,EAAU,KAAO,EACjB,EAAU,KAAO,EACV,EAET,KAAK,EACH,EAAW,EAAU,KACrB,EAAU,KAAO,EACjB,MAEF,KAAK,EACH,EAAU,KAAO,EACjB,EAAU,GAAK,EAAiB,MAAE,GAEpC,KAAK,EAGH,OAFA,EAAU,KAAO,EACjB,EAAU,KAAO,GACV,EAAQ,aAAa,oBAAqB,CAC/C,MAAO,EACP,QAAS,EACT,SAAU,IAGd,KAAK,GAEH,OADA,EAAU,KAAO,GACV,EAAQ,cAEjB,KAAK,GACH,EAAU,KAAO,GACjB,MAEF,KAAK,GACH,EAAU,KAAO,GACjB,EAAU,GAAK,EAAiB,MAAE,GAClC,EAAQ,EAAU,GAEpB,KAAK,GAEH,OADA,EAAU,KAAO,GACV,EAAQ,aAAa,qBAAsB,CAChD,MAAO,EACP,QAAS,EACT,SAAU,EACV,MAAO,IAGX,KAAK,GAGH,GAFA,EAAQ,WAEH,EAAO,CACV,EAAU,KAAO,GACjB,MAGF,MAAM,EAER,KAAK,GACL,IAAK,MACH,OAAO,EAAU,UAGtB,EAAU,KAAM,CAAC,CAAC,EAAG,GAAI,CAAC,EAAG,UAOlC,OAJA,SAAwB,EAAK,EAAK,EAAK,GACrC,OAAO,EAAgB,MAAM,KAAM,YAtEhC,MA6EF,EApYmB,GCUxB,GAAgC,SAAU,GAC5C,EAAU,EAAkB,GAE5B,IAAI,EAAS,EAAa,GAmB1B,SAAS,IACP,IAAI,EAEA,EAAU,UAAU,OAAS,QAAsB,IAAjB,UAAU,GAAmB,UAAU,GAAK,GAalF,OAXA,EAAgB,KAAM,GAEtB,EAAQ,UAAY,EAA2B,EAAQ,YACvD,EAAQ,EAAO,KAAK,KAAM,IACpB,oBAAmD,IAA9B,EAAQ,kBAKnC,EAAM,QAAQ,KAAK,EAAiB,wCAE7B,EA8QT,OAnQA,EAAa,EAAkB,CAAC,CAC9B,IAAK,UACL,MAAO,WACL,IAAI,EAAW,EAAgC,IAAoB,MAAK,SAAS,EAAQ,EAAS,GAChG,IAAI,EACJ,OAAO,IAAoB,MAAK,SAAkB,GAChD,OACE,OAAQ,EAAS,KAAO,EAAS,MAC/B,KAAK,EAEH,OADA,EAAS,KAAO,EACT,EAAQ,WAAW,GAE5B,KAAK,EAGH,GAFA,EAAW,EAAS,KAEN,CACZ,EAAS,KAAO,GAChB,MAGF,IAAM,EAAQ,OAAgC,YAAvB,EAAQ,MAAM,KAAqB,CACxD,EAAS,KAAO,EAChB,MAIF,OADA,EAAS,KAAO,EACT,KAAK,eAAe,EAAS,GAEtC,KAAK,EACH,OAAO,EAAS,OAAO,SAAU,EAAS,MAE5C,KAAK,EAEH,OADA,EAAS,KAAO,GACT,KAAK,aAAa,EAAS,GAEpC,KAAK,GACH,OAAO,EAAS,OAAO,SAAU,EAAS,MAE5C,KAAK,GACH,OAAO,EAAS,OAAO,SAAU,GAEnC,KAAK,GACL,IAAK,MACH,OAAO,EAAS,UAGrB,EAAS,UAOd,OAJA,SAAiB,EAAI,GACnB,OAAO,EAAS,MAAM,KAAM,YAhDzB,IAqDN,CACD,IAAK,eACL,MAAO,WACL,IAAI,EAAgB,EAAgC,IAAoB,MAAK,SAAS,EAAS,EAAS,GACtG,IAAI,EAAU,EACd,OAAO,IAAoB,MAAK,SAAmB,GACjD,OACE,OAAQ,EAAU,KAAO,EAAU,MACjC,KAAK,EACH,IAAK,KAAK,mBAAoB,CAC5B,EAAU,KAAO,EACjB,MAQF,OADA,EAAU,KAAO,EACV,EAAQ,MAAM,GAEvB,KAAK,EACH,EAAW,EAAU,KACrB,EAAU,KAAO,EACjB,MAEF,KAAK,EACH,MAAM,IAAI,EAAa,yBAA0B,CAC/C,UAAW,KAAK,UAChB,IAAK,EAAQ,MAGjB,KAAK,EAED,EAAU,KAAO,GACjB,MAaJ,KAAK,GACH,EAAU,GAAK,EAAU,KAE3B,KAAK,GACH,EAAW,EAAU,GAGrB,EAAO,eAAe,gCAAkC,EAAe,EAAQ,MAC/E,EAAO,IAAI,8BAA8B,OAAO,EAAe,EAAS,OACxE,EAAO,eAAe,8BACtB,EAAO,IAAI,GACX,EAAO,WACP,EAAO,eAAe,+BACtB,EAAO,IAAI,GACX,EAAO,WACP,EAAO,WAET,KAAK,GACH,OAAO,EAAU,OAAO,SAAU,GAEpC,KAAK,GACL,IAAK,MACH,OAAO,EAAU,UAGtB,EAAU,UAOf,OAJA,SAAsB,EAAK,GACzB,OAAO,EAAc,MAAM,KAAM,YA3E9B,IAgFN,CACD,IAAK,iBACL,MAAO,WACL,IAAI,EAAkB,EAAgC,IAAoB,MAAK,SAAS,EAAS,EAAS,GACxG,IAAI,EACJ,OAAO,IAAoB,MAAK,SAAmB,GACjD,OACE,OAAQ,EAAU,KAAO,EAAU,MACjC,KAAK,EAIH,OAHA,KAAK,wCAEL,EAAU,KAAO,EACV,EAAQ,MAAM,GAEvB,KAAK,EAGH,OAFA,EAAW,EAAU,KACrB,EAAU,KAAO,EACV,EAAQ,SAAS,EAAS,EAAS,SAE5C,KAAK,EAGH,GAFY,EAAU,KAEP,CACb,EAAU,KAAO,EACjB,MAGF,MAAM,IAAI,EAAa,0BAA2B,CAChD,IAAK,EAAQ,IACb,OAAQ,EAAS,SAGrB,KAAK,EACH,OAAO,EAAU,OAAO,SAAU,GAEpC,KAAK,GACL,IAAK,MACH,OAAO,EAAU,UAGtB,EAAU,UAOf,OAJA,SAAwB,EAAK,GAC3B,OAAO,EAAgB,MAAM,KAAM,YA1ChC,IA2EN,CACD,IAAK,wCACL,MAAO,WACL,IAII,EAJA,EAAqB,KACrB,EAA6B,EAE7B,EAAY,EAA2B,KAAK,QAAQ,WAGxD,IACE,IAAK,EAAU,MAAO,EAAQ,EAAU,KAAK,MAAO,CAClD,IAAI,EAAc,EAAe,EAAM,MAAO,GAC1C,EAAQ,EAAY,GACpB,EAAS,EAAY,GAGrB,IAAW,EAAiB,yCAK5B,IAAW,EAAiB,oCAC9B,EAAqB,GAGnB,EAAO,iBACT,MAGJ,MAAO,GACP,EAAU,EAAE,GACZ,QACA,EAAU,IAGuB,IAA/B,EACF,KAAK,QAAQ,KAAK,EAAiB,mCAC1B,EAA6B,GAA4B,OAAvB,GAE3C,KAAK,QAAQ,OAAO,EAAoB,OAMvC,EApT2B,CAqTlC,IAEF,GAAiB,kCAAoC,CACnD,gBAAiB,SAAyB,GACxC,OAAO,EAAgC,IAAoB,MAAK,SAAS,IACvE,IAAI,EACJ,OAAO,IAAoB,MAAK,SAAmB,GACjD,OACE,OAAQ,EAAU,KAAO,EAAU,MACjC,KAAK,EAGH,IAFA,EAAW,EAAK,aAEG,EAAS,QAAU,KAAM,CAC1C,EAAU,KAAO,EACjB,MAGF,OAAO,EAAU,OAAO,SAAU,MAEpC,KAAK,EACH,OAAO,EAAU,OAAO,SAAU,GAEpC,KAAK,EACL,IAAK,MACH,OAAO,EAAU,UAGtB,MAvBE,KA2BX,GAAiB,uCAAyC,CACxD,gBAAiB,SAAyB,GACxC,OAAO,EAAgC,IAAoB,MAAK,SAAS,IACvE,IAAI,EACJ,OAAO,IAAoB,MAAK,SAAmB,GACjD,OACE,OAAQ,EAAU,KAAO,EAAU,MACjC,KAAK,EAGH,KAFA,EAAW,EAAM,UAEH,WAAY,CACxB,EAAU,KAAO,EACjB,MAIF,OADA,EAAU,KAAO,EACV,EAAa,GAEtB,KAAK,EACH,EAAU,GAAK,EAAU,KACzB,EAAU,KAAO,EACjB,MAEF,KAAK,EACH,EAAU,GAAK,EAEjB,KAAK,EACH,OAAO,EAAU,OAAO,SAAU,EAAU,IAE9C,KAAK,EACL,IAAK,MACH,OAAO,EAAU,UAGtB,MAhCE,KCxVX,ICzBI,GDyBA,GAAkC,WAWpC,SAAS,IACP,IAAI,EAAO,UAAU,OAAS,QAAsB,IAAjB,UAAU,GAAmB,UAAU,GAAK,GAC3E,EAAY,EAAK,UACjB,EAAe,EAAK,QACpB,OAA2B,IAAjB,EAA0B,GAAK,EACzC,EAAwB,EAAK,kBAC7B,OAA8C,IAA1B,GAA0C,EAElE,EAAgB,KAAM,GAEtB,KAAK,iBAAmB,IAAI,IAC5B,KAAK,kBAAoB,IAAI,IAC7B,KAAK,wBAA0B,IAAI,IACnC,KAAK,UAAY,IAAI,GAAiB,CACpC,UAAW,EAA2B,GACtC,QAAS,GAAG,OAAO,EAAmB,GAAU,CAAC,IAAI,GAAuB,CAC1E,mBAAoB,SAEtB,kBAAmB,IAGrB,KAAK,QAAU,KAAK,QAAQ,KAAK,MACjC,KAAK,SAAW,KAAK,SAAS,KAAK,MA2brC,OAnbA,EAAa,EAAoB,CAAC,CAChC,IAAK,WAYL,MAAO,SAAkB,GACvB,KAAK,eAAe,GAEf,KAAK,kCACR,KAAK,iBAAiB,UAAW,KAAK,SACtC,KAAK,iBAAiB,WAAY,KAAK,UACvC,KAAK,iCAAkC,KAW1C,CACD,IAAK,iBACL,MAAO,SAAwB,GAU7B,IAGI,EAHA,EAAkB,GAElB,EAAY,EAA2B,GAG3C,IACE,IAAK,EAAU,MAAO,EAAQ,EAAU,KAAK,MAAO,CAClD,IAAI,EAAQ,EAAM,MAGG,kBAAV,EACT,EAAgB,KAAK,GACZ,QAA4B,IAAnB,EAAM,UACxB,EAAgB,KAAK,EAAM,KAG7B,IAAI,EAAkB,GAAe,GACjC,EAAW,EAAgB,SAC3B,EAAM,EAAgB,IAEtB,EAA6B,kBAAV,GAAsB,EAAM,SAAW,SAAW,UAEzE,GAAI,KAAK,iBAAiB,IAAI,IAAQ,KAAK,iBAAiB,IAAI,KAAS,EACvE,MAAM,IAAI,EAAa,wCAAyC,CAC9D,WAAY,KAAK,iBAAiB,IAAI,GACtC,YAAa,IAIjB,GAAqB,kBAAV,GAAsB,EAAM,UAAW,CAChD,GAAI,KAAK,wBAAwB,IAAI,IAAa,KAAK,wBAAwB,IAAI,KAAc,EAAM,UACrG,MAAM,IAAI,EAAa,4CAA6C,CAClE,IAAK,IAIT,KAAK,wBAAwB,IAAI,EAAU,EAAM,WAOnD,GAJA,KAAK,iBAAiB,IAAI,EAAK,GAE/B,KAAK,kBAAkB,IAAI,EAAK,GAE5B,EAAgB,OAAS,EAAG,CAC9B,IAAI,EAAiB,+CAAiD,SAAS,OAAO,EAAgB,KAAK,MAAO,kCAAoC,2CAKpJ,QAAQ,KAAK,KAMnB,MAAO,GACP,EAAU,EAAE,GACZ,QACA,EAAU,OAcb,CACD,IAAK,UACL,MAAO,SAAiB,GACtB,IAAI,EAAQ,KAEZ,OAAO,EAAU,EAAoB,EAAgC,IAAoB,MAAK,SAAS,IACrG,IAAI,EAAqB,EAAY,EAAQ,EAAc,EAAK,EAAU,EAAW,EAAW,EAAS,EAAa,EAEtH,OAAO,IAAoB,MAAK,SAAkB,GAChD,OACE,OAAQ,EAAS,KAAO,EAAS,MAC/B,KAAK,EACH,EAAsB,IAAI,GAE1B,EAAM,SAAS,QAAQ,KAAK,GAI5B,EAAa,EAA2B,EAAM,kBAC9C,EAAS,KAAO,EAEhB,EAAW,IAEb,KAAK,EACH,IAAK,EAAS,EAAW,KAAK,KAAM,CAClC,EAAS,KAAO,GAChB,MAYF,OATA,EAAe,EAAe,EAAO,MAAO,GAAI,EAAM,EAAa,GAAI,EAAW,EAAa,GAC/F,EAAY,EAAM,wBAAwB,IAAI,GAC9C,EAAY,EAAM,kBAAkB,IAAI,GACxC,EAAU,IAAI,QAAQ,EAAK,CACzB,UAAW,EACX,MAAO,EACP,YAAa,gBAEf,EAAS,KAAO,GACT,QAAQ,IAAI,EAAM,SAAS,UAAU,CAC1C,OAAQ,CACN,SAAU,GAEZ,QAAS,EACT,MAAO,KAGX,KAAK,GACH,EAAS,KAAO,EAChB,MAEF,KAAK,GACH,EAAS,KAAO,GAChB,MAEF,KAAK,GACH,EAAS,KAAO,GAChB,EAAS,GAAK,EAAgB,MAAE,GAEhC,EAAW,EAAE,EAAS,IAExB,KAAK,GAKH,OAJA,EAAS,KAAO,GAEhB,EAAW,IAEJ,EAAS,OAAO,IAEzB,KAAK,GAOH,OANA,EAAc,EAAoB,YAAa,EAAiB,EAAoB,eAM7E,EAAS,OAAO,SAAU,CAC/B,YAAa,EACb,eAAgB,IAGpB,KAAK,GACL,IAAK,MACH,OAAO,EAAS,UAGrB,EAAS,KAAM,CAAC,CAAC,EAAG,GAAI,GAAI,aAclC,CACD,IAAK,WACL,MAAO,SAAkB,GACvB,IAAI,EAAS,KAEb,OAAO,EAAU,EAAoB,EAAgC,IAAoB,MAAK,SAAS,IACrG,IAAI,EAAO,EAAyB,EAAmB,EAAa,EAAY,EAAQ,EAExF,OAAO,IAAoB,MAAK,SAAmB,GACjD,OACE,OAAQ,EAAU,KAAO,EAAU,MACjC,KAAK,EAEH,OADA,EAAU,KAAO,EACV,KAAK,OAAO,KAAK,EAAO,SAAS,WAE1C,KAAK,EAGH,OAFA,EAAQ,EAAU,KAClB,EAAU,KAAO,EACV,EAAM,OAEf,KAAK,EACH,EAA0B,EAAU,KACpC,EAAoB,IAAI,IAAI,EAAO,iBAAiB,UACpD,EAAc,GACd,EAAa,EAA2B,GACxC,EAAU,KAAO,EAEjB,EAAW,IAEb,KAAK,GACH,IAAK,EAAS,EAAW,KAAK,KAAM,CAClC,EAAU,KAAO,GACjB,MAKF,GAFA,EAAU,EAAO,MAEb,EAAkB,IAAI,EAAQ,KAAM,CACtC,EAAU,KAAO,GACjB,MAIF,OADA,EAAU,KAAO,GACV,EAAM,OAAO,GAEtB,KAAK,GACH,EAAY,KAAK,EAAQ,KAE3B,KAAK,GACH,EAAU,KAAO,GACjB,MAEF,KAAK,GACH,EAAU,KAAO,GACjB,MAEF,KAAK,GACH,EAAU,KAAO,GACjB,EAAU,GAAK,EAAiB,MAAE,GAElC,EAAW,EAAE,EAAU,IAEzB,KAAK,GAKH,OAJA,EAAU,KAAO,GAEjB,EAAW,IAEJ,EAAU,OAAO,IAE1B,KAAK,GAKH,OAAO,EAAU,OAAO,SAAU,CAChC,YAAa,IAGjB,KAAK,GACL,IAAK,MACH,OAAO,EAAU,UAGtB,EAAU,KAAM,CAAC,CAAC,EAAG,GAAI,GAAI,aAUnC,CACD,IAAK,qBACL,MAAO,WACL,OAAO,KAAK,mBASb,CACD,IAAK,gBACL,MAAO,WACL,OAAO,EAAmB,KAAK,iBAAiB,UAYjD,CACD,IAAK,oBACL,MAAO,SAA2B,GAChC,IAAI,EAAY,IAAI,IAAI,EAAK,SAAS,MACtC,OAAO,KAAK,iBAAiB,IAAI,EAAU,QAqB5C,CACD,IAAK,gBACL,MAAO,WACL,IAAI,EAAiB,EAAgC,IAAoB,MAAK,SAAS,EAAS,GAC9F,IAAI,EAAK,EAAU,EACnB,OAAO,IAAoB,MAAK,SAAmB,GACjD,OACE,OAAQ,EAAU,KAAO,EAAU,MACjC,KAAK,EAIH,GAHA,EAAM,aAAmB,QAAU,EAAQ,IAAM,IACjD,EAAW,KAAK,kBAAkB,IAEnB,CACb,EAAU,KAAO,EACjB,MAIF,OADA,EAAU,KAAO,EACV,KAAK,OAAO,KAAK,KAAK,SAAS,WAExC,KAAK,EAEH,OADA,EAAQ,EAAU,KACX,EAAU,OAAO,SAAU,EAAM,MAAM,IAEhD,KAAK,EACH,OAAO,EAAU,OAAO,cAAU,GAEpC,KAAK,EACL,IAAK,MACH,OAAO,EAAU,UAGtB,EAAU,UAOf,OAJA,SAAuB,GACrB,OAAO,EAAe,MAAM,KAAM,YAlC/B,IAgDN,CACD,IAAK,0BACL,MAAO,SAAiC,GACtC,IAAI,EAAS,KAET,EAAW,KAAK,kBAAkB,GAEtC,IAAK,EACH,MAAM,IAAI,EAAa,oBAAqB,CAC1C,IAAK,IAIT,OAAO,SAAU,GAKf,OAJA,EAAQ,QAAU,IAAI,QAAQ,GAC9B,EAAQ,OAAS,EAAc,CAC7B,SAAU,GACT,EAAQ,QACJ,EAAO,SAAS,OAAO,MAGjC,CACD,IAAK,WACL,IAAK,WACH,OAAO,KAAK,cAIT,EA5d6B,GCnB3B,GAAgC,WAKzC,OAJK,KACH,GAAqB,IAAI,IAGpB,aCXL,GCQO,GAAgB,MCAhB,GAAmB,SAA0B,GACtD,OAAI,GAA8B,kBAAZ,EAUb,EAWA,CACL,OAAQ,IChBV,GAAqB,WAYvB,SAAS,EAAM,EAAO,GACpB,IAAI,EAAS,UAAU,OAAS,QAAsB,IAAjB,UAAU,GAAmB,UAAU,GAAK,GAEjF,EAAgB,KAAM,GAmBtB,KAAK,QAAU,GAAiB,GAChC,KAAK,MAAQ,EACb,KAAK,OAAS,EAgBhB,OAPA,EAAa,EAAO,CAAC,CACnB,IAAK,kBACL,MAAO,SAAyB,GAC9B,KAAK,aAAe,GAAiB,OAIlC,EApDgB,GCKrB,GAA2B,SAAU,GACvC,EAAU,EAAa,GAEvB,IAAI,EAAS,EAAa,GAe1B,SAAS,EAAY,EAAQ,EAAS,GACpC,EAAgB,KAAM,GAsCtB,OAAO,EAAO,KAAK,MA3BP,SAAe,GACzB,IAAI,EAAM,EAAK,IACX,EAAS,EAAO,KAAK,EAAI,MAE7B,GAAK,IAQD,EAAI,SAAW,SAAS,QAA2B,IAAjB,EAAO,OAY7C,OAAO,EAAO,MAAM,KAGU,EAAS,GAG3C,OAAO,EA5DsB,CA6D7B,IClDE,GAAsB,WAIxB,SAAS,IACP,EAAgB,KAAM,GAEtB,KAAK,QAAU,IAAI,IACnB,KAAK,mBAAqB,IAAI,IAsehC,OA7dA,EAAa,EAAQ,CAAC,CACpB,IAAK,mBAML,MAAO,WACL,IAAI,EAAQ,KAGZ,KAAK,iBAAiB,SAAS,SAAU,GACvC,IAAI,EAAU,EAAM,QAEhB,EAAkB,EAAM,cAAc,CACxC,QAAS,EACT,MAAO,IAGL,GACF,EAAM,YAAY,QA2BvB,CACD,IAAK,mBACL,MAAO,WACL,IAAI,EAAS,KAGb,KAAK,iBAAiB,WAAW,SAAU,GACzC,GAAI,EAAM,MAA4B,eAApB,EAAM,KAAK,KAAuB,CAClD,IAAI,EAAU,EAAM,KAAK,QAErB,EAIJ,IAAI,EAAkB,QAAQ,IAAI,EAAQ,YAAY,KAAI,SAAU,GAC7C,kBAAV,IACT,EAAQ,CAAC,IAGX,IAAI,EAAU,EAAW,QAAS,EAAmB,IAErD,OAAO,EAAO,cAAc,CAC1B,QAAS,EACT,MAAO,QAMX,EAAM,UAAU,GAEZ,EAAM,OAAS,EAAM,MAAM,IAC7B,EAAgB,MAAK,WACnB,OAAO,EAAM,MAAM,GAAG,aAAY,YAmB3C,CACD,IAAK,gBACL,MAAO,SAAuB,GAC5B,IAAI,EAAS,KAET,EAAU,EAAK,QACf,EAAQ,EAAK,MAWjB,IAAI,EAAM,IAAI,IAAI,EAAQ,IAAK,SAAS,MAExC,GAAK,EAAI,SAAS,WAAW,QAA7B,CAQA,IAAI,EAAa,EAAI,SAAW,SAAS,OAErC,EAAwB,KAAK,kBAAkB,CACjD,MAAO,EACP,QAAS,EACT,WAAY,EACZ,IAAK,IAEH,EAAS,EAAsB,OAC/B,EAAQ,EAAsB,MAE9B,EAAU,GAAS,EAAM,QAGzB,EAYJ,IAAI,EAAS,EAAQ,OAUrB,IARK,GAAW,KAAK,mBAAmB,IAAI,KAK1C,EAAU,KAAK,mBAAmB,IAAI,IAGnC,EAAL,CA0BA,IAAI,EAhBA,EAkBJ,IACE,EAAkB,EAAQ,OAAO,CAC/B,IAAK,EACL,QAAS,EACT,MAAO,EACP,OAAQ,IAEV,MAAO,GACP,EAAkB,QAAQ,OAAO,GAInC,IAAI,EAAe,GAAS,EAAM,aA8ElC,OA5EI,aAA2B,UAAY,KAAK,eAAiB,KAC/D,EAAkB,EAAgB,MAAoB,WACpD,IAAI,EAAQ,EAAgC,IAAoB,MAAK,SAAS,EAAQ,GACpF,OAAO,IAAoB,MAAK,SAAkB,GAChD,OACE,OAAQ,EAAS,KAAO,EAAS,MAC/B,KAAK,EACH,IAAK,EAAc,CACjB,EAAS,KAAO,GAChB,MAcF,OAFA,EAAS,KAAO,EAChB,EAAS,KAAO,EACT,EAAa,OAAO,CACzB,IAAK,EACL,QAAS,EACT,MAAO,EACP,OAAQ,IAGZ,KAAK,EACH,OAAO,EAAS,OAAO,SAAU,EAAS,MAE5C,KAAK,EACH,EAAS,KAAO,EAChB,EAAS,GAAK,EAAgB,MAAE,GAChC,EAAM,EAAS,GAEjB,KAAK,GACH,IAAK,EAAO,cAAe,CACzB,EAAS,KAAO,GAChB,MAYF,OAAO,EAAS,OAAO,SAAU,EAAO,cAAc,OAAO,CAC3D,IAAK,EACL,QAAS,EACT,MAAO,KAGX,KAAK,GACH,MAAM,EAER,KAAK,GACL,IAAK,MACH,OAAO,EAAS,UAGrB,EAAS,KAAM,CAAC,CAAC,EAAG,SAGzB,OAAO,SAAU,GACf,OAAO,EAAM,MAAM,KAAM,YAtEyB,KA2EjD,MAkBR,CACD,IAAK,oBACL,MAAO,SAA2B,GAChC,IAOI,EAPA,EAAM,EAAM,IACZ,EAAa,EAAM,WACnB,EAAU,EAAM,QAChB,EAAQ,EAAM,MAGd,EAAY,EAFH,KAAK,QAAQ,IAAI,EAAQ,SAAW,IAKjD,IACE,IAAK,EAAU,MAAO,EAAQ,EAAU,KAAK,MAAO,CAClD,IAAI,EAAQ,EAAM,MACd,OAAS,EACT,EAAc,EAAM,MAAM,CAC5B,IAAK,EACL,WAAY,EACZ,QAAS,EACT,MAAO,IAGT,GAAI,EA0BF,OAhBA,EAAS,GAEL,MAAM,QAAQ,IAAuC,IAAvB,EAAY,QAGnC,EAAY,cAAgB,QAA8C,IAApC,OAAO,KAAK,GAAa,QAGxC,mBAAhB,KAJhB,OAAS,GAYJ,CACL,MAAO,EACP,OAAQ,IAKd,MAAO,GACP,EAAU,EAAE,GACZ,QACA,EAAU,IAGZ,MAAO,KAiBR,CACD,IAAK,oBACL,MAAO,SAA2B,GAChC,IAAI,EAAS,UAAU,OAAS,QAAsB,IAAjB,UAAU,GAAmB,UAAU,GAAK,GAEjF,KAAK,mBAAmB,IAAI,EAAQ,GAAiB,MAUtD,CACD,IAAK,kBACL,MAAO,SAAyB,GAC9B,KAAK,cAAgB,GAAiB,KAQvC,CACD,IAAK,gBACL,MAAO,SAAuB,GAkCvB,KAAK,QAAQ,IAAI,EAAM,SAC1B,KAAK,QAAQ,IAAI,EAAM,OAAQ,IAKjC,KAAK,QAAQ,IAAI,EAAM,QAAQ,KAAK,KAQrC,CACD,IAAK,kBACL,MAAO,SAAyB,GAC9B,IAAK,KAAK,QAAQ,IAAI,EAAM,QAC1B,MAAM,IAAI,EAAa,6CAA8C,CACnE,OAAQ,EAAM,SAIlB,IAAI,EAAa,KAAK,QAAQ,IAAI,EAAM,QAAQ,QAAQ,GAExD,KAAI,GAAc,GAGhB,MAAM,IAAI,EAAa,yCAFvB,KAAK,QAAQ,IAAI,EAAM,QAAQ,OAAO,EAAY,KAKrD,CACD,IAAK,SACL,IAAK,WACH,OAAO,KAAK,YAIT,EA9eiB,GLtBf,GAA2B,WAQpC,OAPK,MACH,GAAgB,IAAI,IAEN,mBACd,GAAc,oBAGT,IMOT,SAAS,GAAc,EAAS,EAAS,GACvC,IAAI,EAEJ,GAAuB,kBAAZ,EAAsB,CAC/B,IAAI,EAAa,IAAI,IAAI,EAAS,SAAS,MAmC3C,EAAQ,IAAI,IAbQ,SAAuB,GASzC,OARU,EAAK,IAQJ,OAAS,EAAW,OAIA,EAAS,QACrC,GAAI,aAAmB,OAE5B,EAAQ,IAAI,GAAY,EAAS,EAAS,QACrC,GAAuB,oBAAZ,EAEhB,EAAQ,IAAI,GAAM,EAAS,EAAS,OAC/B,MAAI,aAAmB,IAG5B,MAAM,IAAI,EAAa,yBAA0B,CAC/C,WAAY,kBACZ,SAAU,gBACV,UAAW,YALb,EAAQ,EAWV,OAFoB,KACN,cAAc,GACrB,ECpEF,SAAS,GAA0B,GAexC,IAdA,IAAI,EAA8B,UAAU,OAAS,QAAsB,IAAjB,UAAU,GAAmB,UAAU,GAAK,GAElG,EAAQ,WACV,IAAI,EAAY,EAAK,GAEjB,EAA4B,MAAK,SAAU,GAC7C,OAAO,EAAO,KAAK,OAEnB,EAAU,aAAa,OAAO,IAMzB,EAAK,EAAG,EAAO,EAAmB,EAAU,aAAa,QAAS,EAAK,EAAK,OAAQ,IAC3F,IAGF,OAAO,ECvCT,IAAI,GAAuB,IAAoB,KAAK,IAsB7C,SAAS,GAAsB,GACpC,IAAI,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EAAQ,UAEZ,OAAO,IAAoB,MAAK,SAAgC,GAC9D,OACE,OAAQ,EAAS,KAAO,EAAS,MAC/B,KAAK,EAKH,OAJA,EAAO,EAAM,OAAS,QAAkB,IAAb,EAAM,GAAmB,EAAM,GAAK,GAAI,EAAwB,EAAK,4BAA6B,OAAwD,IAA1B,EAAmC,CAAC,QAAS,YAAc,EAAuB,EAAsB,EAAK,eAAgB,OAAyC,IAAxB,EAAiC,aAAe,EAAqB,EAAiB,EAAK,UAAW,OAA+B,IAAnB,GAAmC,EAAgB,EAAkB,EAAK,iBACre,EAAY,IAAI,IAAI,EAAK,SAAS,OACxB,KAAO,GACjB,EAAS,KAAO,EACT,EAAU,KAEnB,KAAK,EAGH,OAFA,EAA0B,GAA0B,EAAW,GAC/D,EAAS,KAAO,EACT,EAAwB,KAEjC,KAAK,EACH,IAAM,IAAkB,EAAwB,SAAS,SAAS,KAAO,CACvE,EAAS,KAAO,GAChB,MAMF,OAHA,EAAe,IAAI,IAAI,EAAwB,OAClC,UAAY,EACzB,EAAS,KAAO,GACT,EAAa,KAEtB,KAAK,GACH,IAAK,EAAW,CACd,EAAS,KAAO,GAChB,MAMF,OAHA,EAAW,IAAI,IAAI,EAAwB,OAClC,UAAY,QACrB,EAAS,KAAO,GACT,EAAS,KAElB,KAAK,GACH,IAAK,EAAiB,CACpB,EAAS,KAAO,GAChB,MAGF,EAAiB,EAAgB,CAC/B,IAAK,IAEP,EAAY,EAA2B,GACvC,EAAS,KAAO,GAEhB,EAAU,IAEZ,KAAK,GACH,IAAK,EAAQ,EAAU,KAAK,KAAM,CAChC,EAAS,KAAO,GAChB,MAKF,OAFA,EAAe,EAAM,MACrB,EAAS,KAAO,GACT,EAAa,KAEtB,KAAK,GACH,EAAS,KAAO,GAChB,MAEF,KAAK,GACH,EAAS,KAAO,GAChB,MAEF,KAAK,GACH,EAAS,KAAO,GAChB,EAAS,GAAK,EAAgB,MAAE,IAEhC,EAAU,EAAE,EAAS,IAEvB,KAAK,GAKH,OAJA,EAAS,KAAO,GAEhB,EAAU,IAEH,EAAS,OAAO,IAEzB,KAAK,GACL,IAAK,MACH,OAAO,EAAS,UAGrB,GAAS,KAAM,CAAC,CAAC,GAAI,GAAI,GAAI,MCxGlC,IAAI,GAA6B,SAAU,GACzC,EAAU,EAAe,GAEzB,IAAI,EAAS,EAAa,GAkB1B,SAAS,EAAc,EAAoB,GACzC,EAAgB,KAAM,GAiCtB,OAAO,EAAO,KAAK,MA/BP,SAAe,GACzB,IAII,EAJA,EAAU,EAAK,QACf,EAAkB,EAAmB,qBAErC,EAAY,EAA2B,GAAsB,EAAQ,IAAK,IAG9E,IACE,IAAK,EAAU,MAAO,EAAQ,EAAU,KAAK,MAAO,CAClD,IAAI,EAAc,EAAM,MACpB,EAAW,EAAgB,IAAI,GAEnC,GAAI,EACF,MAAO,CACL,SAAU,IAIhB,MAAO,GACP,EAAU,EAAE,GACZ,QACA,EAAU,OAUkB,EAAmB,UAGrD,OAAO,EA1DwB,CA2D/B,IC5EK,ICe4B,GCdxB,GAAyB,CAWlC,gBAAiB,WACf,IAAI,EAAmB,EAAgC,IAAoB,MAAK,SAAS,EAAQ,GAC/F,IAAI,EACJ,OAAO,IAAoB,MAAK,SAAkB,GAChD,OACE,OAAQ,EAAS,KAAO,EAAS,MAC/B,KAAK,EAGH,GAA0B,OAF1B,EAAW,EAAK,UAED,QAAsC,IAApB,EAAS,OAAe,CACvD,EAAS,KAAO,EAChB,MAGF,OAAO,EAAS,OAAO,SAAU,GAEnC,KAAK,EACH,OAAO,EAAS,OAAO,SAAU,MAEnC,KAAK,EACL,IAAK,MACH,OAAO,EAAS,UAGrB,OAOL,OAJA,SAAyB,GACvB,OAAO,EAAiB,MAAM,KAAM,YA5BvB,ICsBf,GAAoC,SAAU,GAChD,EAAU,EAAsB,GAEhC,IAAI,EAAS,EAAa,GAe1B,SAAS,EAAqB,GAC5B,IAAI,EAaJ,OAXA,EAAgB,KAAM,IAEtB,EAAQ,EAAO,KAAK,KAAM,IAGf,QAAQ,MAAK,SAAU,GAChC,MAAO,oBAAqB,MAE5B,EAAM,QAAQ,QAAQ,IAGjB,EAyHT,OA9GA,EAAa,EAAsB,CAAC,CAClC,IAAK,UACL,MAAO,WACL,IAAI,EAAW,EAAgC,IAAoB,MAAK,SAAS,EAAQ,EAAS,GAChG,IAAU,EAAsB,EAAU,EAE1C,OAAO,IAAoB,MAAK,SAAkB,GAChD,OACE,OAAQ,EAAS,KAAO,EAAS,MAC/B,KAAK,EAgBH,MAfO,GAWP,EAAuB,EAAQ,iBAAiB,GAAS,OAAM,eAG/D,EAAS,KAAO,EACT,EAAQ,WAAW,GAE5B,KAAK,EAGH,KAFA,EAAW,EAAS,MAEL,CACb,EAAS,KAAO,GAChB,MAGE,EAIJ,EAAS,KAAO,GAChB,MAEF,KAAK,GAOH,OAFA,EAAS,KAAO,GAChB,EAAS,KAAO,GACT,EAET,KAAK,GACH,EAAW,EAAS,KACpB,EAAS,KAAO,GAChB,MAEF,KAAK,GACH,EAAS,KAAO,GAChB,EAAS,GAAK,EAAgB,MAAE,IAChC,EAAQ,EAAS,GAEnB,KAAK,GAoBH,GAAI,EAAU,CACZ,EAAS,KAAO,GAChB,MAGF,MAAM,IAAI,EAAa,cAAe,CACpC,IAAK,EAAQ,IACb,MAAO,IAGX,KAAK,GACH,OAAO,EAAS,OAAO,SAAU,GAEnC,KAAK,GACL,IAAK,MACH,OAAO,EAAS,UAGrB,EAAS,KAAM,CAAC,CAAC,GAAI,UAO1B,OAJA,SAAiB,EAAI,GACnB,OAAO,EAAS,MAAM,KAAM,YArGzB,MA4GF,EAzJ+B,CA0JtC,ICtLA,KAAK,iBAAiB,YAAY,WAChC,OAAO,KAAK,QAAQ,WCYxB,SAAkB,GACS,KACN,SAAS,GJL5B,CKFe,wkBAAK,eCEtB,SAAkB,GAChB,IAAI,EAAqB,KAEzB,GADoB,IAAI,GAAc,EAAoB,IND1D,CAAS,IKEX,IEFiC,GFE3B,GAAsB,IAAI,OAAO,oBACvC,IAEE,YAAuD,IAApD,EAAmD,EAAnD,QAAS,EAA0C,EAA1C,IAEV,MAAqB,aAAjB,EAAQ,QAKR,EAAI,SAAS,WAAW,QAMxB,EAAI,SAAS,MAAM,QElBM,GFyBP,oDExBC,KACC,wBAAwB,MF4BpD,IAEE,gBAAG,EAAH,EAAG,IAAH,OAAa,EAAI,SAAW,KAAK,SAAS,QAAU,EAAI,SAAS,SAAS,UAE1E,IAAI,GAAqB,CACvB,UAAW,SACX,QAAS,CAGP,IAAI,GAAiB,CAAE,WAAY,SAOzC,KAAK,iBAAiB,WAAW,SAAC,GAC5B,EAAM,MAA4B,iBAApB,EAAM,KAAK,MAC3B,KAAK","file":"service-worker.js","sourceRoot":"","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/shlink-web-client/feature-recover-pwa/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 7);\n","module.exports = require(\"regenerator-runtime\");\n","\"use strict\"; // @ts-ignore\n\ntry {\n  self['workbox:core:6.1.5'] && _();\n} catch (e) {}","\"use strict\"; // @ts-ignore\n\ntry {\n  self['workbox:precaching:6.1.5'] && _();\n} catch (e) {}","\"use strict\"; // @ts-ignore\n\ntry {\n  self['workbox:routing:6.1.5'] && _();\n} catch (e) {}","\"use strict\"; // @ts-ignore\n\ntry {\n  self['workbox:strategies:6.1.5'] && _();\n} catch (e) {}","\"use strict\"; // @ts-ignore\n\ntry {\n  self['workbox:expiration:6.1.5'] && _();\n} catch (e) {}","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nvar runtime = function (exports) {\n  \"use strict\";\n\n  var Op = Object.prototype;\n  var hasOwn = Op.hasOwnProperty;\n  var undefined; // More compressible than void 0.\n\n  var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n  var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n  var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n  var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n  function define(obj, key, value) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n    return obj[key];\n  }\n\n  try {\n    // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n    define({}, \"\");\n  } catch (err) {\n    define = function define(obj, key, value) {\n      return obj[key] = value;\n    };\n  }\n\n  function wrap(innerFn, outerFn, self, tryLocsList) {\n    // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n    var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n    var generator = Object.create(protoGenerator.prototype);\n    var context = new Context(tryLocsList || []); // The ._invoke method unifies the implementations of the .next,\n    // .throw, and .return methods.\n\n    generator._invoke = makeInvokeMethod(innerFn, self, context);\n    return generator;\n  }\n\n  exports.wrap = wrap; // Try/catch helper to minimize deoptimizations. Returns a completion\n  // record like context.tryEntries[i].completion. This interface could\n  // have been (and was previously) designed to take a closure to be\n  // invoked without arguments, but in all the cases we care about we\n  // already have an existing method we want to call, so there's no need\n  // to create a new function object. We can even get away with assuming\n  // the method takes exactly one argument, since that happens to be true\n  // in every case, so we don't have to touch the arguments object. The\n  // only additional allocation required is the completion record, which\n  // has a stable shape and so hopefully should be cheap to allocate.\n\n  function tryCatch(fn, obj, arg) {\n    try {\n      return {\n        type: \"normal\",\n        arg: fn.call(obj, arg)\n      };\n    } catch (err) {\n      return {\n        type: \"throw\",\n        arg: err\n      };\n    }\n  }\n\n  var GenStateSuspendedStart = \"suspendedStart\";\n  var GenStateSuspendedYield = \"suspendedYield\";\n  var GenStateExecuting = \"executing\";\n  var GenStateCompleted = \"completed\"; // Returning this object from the innerFn has the same effect as\n  // breaking out of the dispatch switch statement.\n\n  var ContinueSentinel = {}; // Dummy constructor functions that we use as the .constructor and\n  // .constructor.prototype properties for functions that return Generator\n  // objects. For full spec compliance, you may wish to configure your\n  // minifier not to mangle the names of these two functions.\n\n  function Generator() {}\n\n  function GeneratorFunction() {}\n\n  function GeneratorFunctionPrototype() {} // This is a polyfill for %IteratorPrototype% for environments that\n  // don't natively support it.\n\n\n  var IteratorPrototype = {};\n\n  IteratorPrototype[iteratorSymbol] = function () {\n    return this;\n  };\n\n  var getProto = Object.getPrototypeOf;\n  var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n\n  if (NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n    // This environment has a native %IteratorPrototype%; use it instead\n    // of the polyfill.\n    IteratorPrototype = NativeIteratorPrototype;\n  }\n\n  var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);\n  GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n  GeneratorFunctionPrototype.constructor = GeneratorFunction;\n  GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\"); // Helper for defining the .next, .throw, and .return methods of the\n  // Iterator interface in terms of a single ._invoke method.\n\n  function defineIteratorMethods(prototype) {\n    [\"next\", \"throw\", \"return\"].forEach(function (method) {\n      define(prototype, method, function (arg) {\n        return this._invoke(method, arg);\n      });\n    });\n  }\n\n  exports.isGeneratorFunction = function (genFun) {\n    var ctor = typeof genFun === \"function\" && genFun.constructor;\n    return ctor ? ctor === GeneratorFunction || // For the native GeneratorFunction constructor, the best we can\n    // do is to check its .name property.\n    (ctor.displayName || ctor.name) === \"GeneratorFunction\" : false;\n  };\n\n  exports.mark = function (genFun) {\n    if (Object.setPrototypeOf) {\n      Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n    } else {\n      genFun.__proto__ = GeneratorFunctionPrototype;\n      define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n    }\n\n    genFun.prototype = Object.create(Gp);\n    return genFun;\n  }; // Within the body of any async function, `await x` is transformed to\n  // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n  // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n  // meant to be awaited.\n\n\n  exports.awrap = function (arg) {\n    return {\n      __await: arg\n    };\n  };\n\n  function AsyncIterator(generator, PromiseImpl) {\n    function invoke(method, arg, resolve, reject) {\n      var record = tryCatch(generator[method], generator, arg);\n\n      if (record.type === \"throw\") {\n        reject(record.arg);\n      } else {\n        var result = record.arg;\n        var value = result.value;\n\n        if (value && typeof value === \"object\" && hasOwn.call(value, \"__await\")) {\n          return PromiseImpl.resolve(value.__await).then(function (value) {\n            invoke(\"next\", value, resolve, reject);\n          }, function (err) {\n            invoke(\"throw\", err, resolve, reject);\n          });\n        }\n\n        return PromiseImpl.resolve(value).then(function (unwrapped) {\n          // When a yielded Promise is resolved, its final value becomes\n          // the .value of the Promise<{value,done}> result for the\n          // current iteration.\n          result.value = unwrapped;\n          resolve(result);\n        }, function (error) {\n          // If a rejected Promise was yielded, throw the rejection back\n          // into the async generator function so it can be handled there.\n          return invoke(\"throw\", error, resolve, reject);\n        });\n      }\n    }\n\n    var previousPromise;\n\n    function enqueue(method, arg) {\n      function callInvokeWithMethodAndArg() {\n        return new PromiseImpl(function (resolve, reject) {\n          invoke(method, arg, resolve, reject);\n        });\n      }\n\n      return previousPromise = // If enqueue has been called before, then we want to wait until\n      // all previous Promises have been resolved before calling invoke,\n      // so that results are always delivered in the correct order. If\n      // enqueue has not been called before, then it is important to\n      // call invoke immediately, without waiting on a callback to fire,\n      // so that the async generator function has the opportunity to do\n      // any necessary setup in a predictable way. This predictability\n      // is why the Promise constructor synchronously invokes its\n      // executor callback, and why async functions synchronously\n      // execute code before the first await. Since we implement simple\n      // async functions in terms of async generators, it is especially\n      // important to get this right, even though it requires care.\n      previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, // Avoid propagating failures to Promises returned by later\n      // invocations of the iterator.\n      callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n    } // Define the unified helper method that is used to implement .next,\n    // .throw, and .return (see defineIteratorMethods).\n\n\n    this._invoke = enqueue;\n  }\n\n  defineIteratorMethods(AsyncIterator.prototype);\n\n  AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n    return this;\n  };\n\n  exports.AsyncIterator = AsyncIterator; // Note that simple async functions are implemented on top of\n  // AsyncIterator objects; they just return a Promise for the value of\n  // the final result produced by the iterator.\n\n  exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n    if (PromiseImpl === void 0) PromiseImpl = Promise;\n    var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);\n    return exports.isGeneratorFunction(outerFn) ? iter // If outerFn is a generator, return the full iterator.\n    : iter.next().then(function (result) {\n      return result.done ? result.value : iter.next();\n    });\n  };\n\n  function makeInvokeMethod(innerFn, self, context) {\n    var state = GenStateSuspendedStart;\n    return function invoke(method, arg) {\n      if (state === GenStateExecuting) {\n        throw new Error(\"Generator is already running\");\n      }\n\n      if (state === GenStateCompleted) {\n        if (method === \"throw\") {\n          throw arg;\n        } // Be forgiving, per 25.3.3.3.3 of the spec:\n        // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n\n\n        return doneResult();\n      }\n\n      context.method = method;\n      context.arg = arg;\n\n      while (true) {\n        var delegate = context.delegate;\n\n        if (delegate) {\n          var delegateResult = maybeInvokeDelegate(delegate, context);\n\n          if (delegateResult) {\n            if (delegateResult === ContinueSentinel) continue;\n            return delegateResult;\n          }\n        }\n\n        if (context.method === \"next\") {\n          // Setting context._sent for legacy support of Babel's\n          // function.sent implementation.\n          context.sent = context._sent = context.arg;\n        } else if (context.method === \"throw\") {\n          if (state === GenStateSuspendedStart) {\n            state = GenStateCompleted;\n            throw context.arg;\n          }\n\n          context.dispatchException(context.arg);\n        } else if (context.method === \"return\") {\n          context.abrupt(\"return\", context.arg);\n        }\n\n        state = GenStateExecuting;\n        var record = tryCatch(innerFn, self, context);\n\n        if (record.type === \"normal\") {\n          // If an exception is thrown from innerFn, we leave state ===\n          // GenStateExecuting and loop back for another invocation.\n          state = context.done ? GenStateCompleted : GenStateSuspendedYield;\n\n          if (record.arg === ContinueSentinel) {\n            continue;\n          }\n\n          return {\n            value: record.arg,\n            done: context.done\n          };\n        } else if (record.type === \"throw\") {\n          state = GenStateCompleted; // Dispatch the exception by looping back around to the\n          // context.dispatchException(context.arg) call above.\n\n          context.method = \"throw\";\n          context.arg = record.arg;\n        }\n      }\n    };\n  } // Call delegate.iterator[context.method](context.arg) and handle the\n  // result, either by returning a { value, done } result from the\n  // delegate iterator, or by modifying context.method and context.arg,\n  // setting context.delegate to null, and returning the ContinueSentinel.\n\n\n  function maybeInvokeDelegate(delegate, context) {\n    var method = delegate.iterator[context.method];\n\n    if (method === undefined) {\n      // A .throw or .return when the delegate iterator has no .throw\n      // method always terminates the yield* loop.\n      context.delegate = null;\n\n      if (context.method === \"throw\") {\n        // Note: [\"return\"] must be used for ES3 parsing compatibility.\n        if (delegate.iterator[\"return\"]) {\n          // If the delegate iterator has a return method, give it a\n          // chance to clean up.\n          context.method = \"return\";\n          context.arg = undefined;\n          maybeInvokeDelegate(delegate, context);\n\n          if (context.method === \"throw\") {\n            // If maybeInvokeDelegate(context) changed context.method from\n            // \"return\" to \"throw\", let that override the TypeError below.\n            return ContinueSentinel;\n          }\n        }\n\n        context.method = \"throw\";\n        context.arg = new TypeError(\"The iterator does not provide a 'throw' method\");\n      }\n\n      return ContinueSentinel;\n    }\n\n    var record = tryCatch(method, delegate.iterator, context.arg);\n\n    if (record.type === \"throw\") {\n      context.method = \"throw\";\n      context.arg = record.arg;\n      context.delegate = null;\n      return ContinueSentinel;\n    }\n\n    var info = record.arg;\n\n    if (!info) {\n      context.method = \"throw\";\n      context.arg = new TypeError(\"iterator result is not an object\");\n      context.delegate = null;\n      return ContinueSentinel;\n    }\n\n    if (info.done) {\n      // Assign the result of the finished delegate to the temporary\n      // variable specified by delegate.resultName (see delegateYield).\n      context[delegate.resultName] = info.value; // Resume execution at the desired location (see delegateYield).\n\n      context.next = delegate.nextLoc; // If context.method was \"throw\" but the delegate handled the\n      // exception, let the outer generator proceed normally. If\n      // context.method was \"next\", forget context.arg since it has been\n      // \"consumed\" by the delegate iterator. If context.method was\n      // \"return\", allow the original .return call to continue in the\n      // outer generator.\n\n      if (context.method !== \"return\") {\n        context.method = \"next\";\n        context.arg = undefined;\n      }\n    } else {\n      // Re-yield the result returned by the delegate method.\n      return info;\n    } // The delegate iterator is finished, so forget it and continue with\n    // the outer generator.\n\n\n    context.delegate = null;\n    return ContinueSentinel;\n  } // Define Generator.prototype.{next,throw,return} in terms of the\n  // unified ._invoke helper method.\n\n\n  defineIteratorMethods(Gp);\n  define(Gp, toStringTagSymbol, \"Generator\"); // A Generator should always return itself as the iterator object when the\n  // @@iterator function is called on it. Some browsers' implementations of the\n  // iterator prototype chain incorrectly implement this, causing the Generator\n  // object to not be returned from this call. This ensures that doesn't happen.\n  // See https://github.com/facebook/regenerator/issues/274 for more details.\n\n  Gp[iteratorSymbol] = function () {\n    return this;\n  };\n\n  Gp.toString = function () {\n    return \"[object Generator]\";\n  };\n\n  function pushTryEntry(locs) {\n    var entry = {\n      tryLoc: locs[0]\n    };\n\n    if (1 in locs) {\n      entry.catchLoc = locs[1];\n    }\n\n    if (2 in locs) {\n      entry.finallyLoc = locs[2];\n      entry.afterLoc = locs[3];\n    }\n\n    this.tryEntries.push(entry);\n  }\n\n  function resetTryEntry(entry) {\n    var record = entry.completion || {};\n    record.type = \"normal\";\n    delete record.arg;\n    entry.completion = record;\n  }\n\n  function Context(tryLocsList) {\n    // The root entry object (effectively a try statement without a catch\n    // or a finally block) gives us a place to store values thrown from\n    // locations where there is no enclosing try statement.\n    this.tryEntries = [{\n      tryLoc: \"root\"\n    }];\n    tryLocsList.forEach(pushTryEntry, this);\n    this.reset(true);\n  }\n\n  exports.keys = function (object) {\n    var keys = [];\n\n    for (var key in object) {\n      keys.push(key);\n    }\n\n    keys.reverse(); // Rather than returning an object with a next method, we keep\n    // things simple and return the next function itself.\n\n    return function next() {\n      while (keys.length) {\n        var key = keys.pop();\n\n        if (key in object) {\n          next.value = key;\n          next.done = false;\n          return next;\n        }\n      } // To avoid creating an additional object, we just hang the .value\n      // and .done properties off the next function object itself. This\n      // also ensures that the minifier will not anonymize the function.\n\n\n      next.done = true;\n      return next;\n    };\n  };\n\n  function values(iterable) {\n    if (iterable) {\n      var iteratorMethod = iterable[iteratorSymbol];\n\n      if (iteratorMethod) {\n        return iteratorMethod.call(iterable);\n      }\n\n      if (typeof iterable.next === \"function\") {\n        return iterable;\n      }\n\n      if (!isNaN(iterable.length)) {\n        var i = -1,\n            next = function next() {\n          while (++i < iterable.length) {\n            if (hasOwn.call(iterable, i)) {\n              next.value = iterable[i];\n              next.done = false;\n              return next;\n            }\n          }\n\n          next.value = undefined;\n          next.done = true;\n          return next;\n        };\n\n        return next.next = next;\n      }\n    } // Return an iterator with no values.\n\n\n    return {\n      next: doneResult\n    };\n  }\n\n  exports.values = values;\n\n  function doneResult() {\n    return {\n      value: undefined,\n      done: true\n    };\n  }\n\n  Context.prototype = {\n    constructor: Context,\n    reset: function reset(skipTempReset) {\n      this.prev = 0;\n      this.next = 0; // Resetting context._sent for legacy support of Babel's\n      // function.sent implementation.\n\n      this.sent = this._sent = undefined;\n      this.done = false;\n      this.delegate = null;\n      this.method = \"next\";\n      this.arg = undefined;\n      this.tryEntries.forEach(resetTryEntry);\n\n      if (!skipTempReset) {\n        for (var name in this) {\n          // Not sure about the optimal order of these conditions:\n          if (name.charAt(0) === \"t\" && hasOwn.call(this, name) && !isNaN(+name.slice(1))) {\n            this[name] = undefined;\n          }\n        }\n      }\n    },\n    stop: function stop() {\n      this.done = true;\n      var rootEntry = this.tryEntries[0];\n      var rootRecord = rootEntry.completion;\n\n      if (rootRecord.type === \"throw\") {\n        throw rootRecord.arg;\n      }\n\n      return this.rval;\n    },\n    dispatchException: function dispatchException(exception) {\n      if (this.done) {\n        throw exception;\n      }\n\n      var context = this;\n\n      function handle(loc, caught) {\n        record.type = \"throw\";\n        record.arg = exception;\n        context.next = loc;\n\n        if (caught) {\n          // If the dispatched exception was caught by a catch block,\n          // then let that catch block handle the exception normally.\n          context.method = \"next\";\n          context.arg = undefined;\n        }\n\n        return !!caught;\n      }\n\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        var record = entry.completion;\n\n        if (entry.tryLoc === \"root\") {\n          // Exception thrown outside of any try block that could handle\n          // it, so set the completion value of the entire function to\n          // throw the exception.\n          return handle(\"end\");\n        }\n\n        if (entry.tryLoc <= this.prev) {\n          var hasCatch = hasOwn.call(entry, \"catchLoc\");\n          var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n          if (hasCatch && hasFinally) {\n            if (this.prev < entry.catchLoc) {\n              return handle(entry.catchLoc, true);\n            } else if (this.prev < entry.finallyLoc) {\n              return handle(entry.finallyLoc);\n            }\n          } else if (hasCatch) {\n            if (this.prev < entry.catchLoc) {\n              return handle(entry.catchLoc, true);\n            }\n          } else if (hasFinally) {\n            if (this.prev < entry.finallyLoc) {\n              return handle(entry.finallyLoc);\n            }\n          } else {\n            throw new Error(\"try statement without catch or finally\");\n          }\n        }\n      }\n    },\n    abrupt: function abrupt(type, arg) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n\n        if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n          var finallyEntry = entry;\n          break;\n        }\n      }\n\n      if (finallyEntry && (type === \"break\" || type === \"continue\") && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc) {\n        // Ignore the finally entry if control is not jumping to a\n        // location outside the try/catch block.\n        finallyEntry = null;\n      }\n\n      var record = finallyEntry ? finallyEntry.completion : {};\n      record.type = type;\n      record.arg = arg;\n\n      if (finallyEntry) {\n        this.method = \"next\";\n        this.next = finallyEntry.finallyLoc;\n        return ContinueSentinel;\n      }\n\n      return this.complete(record);\n    },\n    complete: function complete(record, afterLoc) {\n      if (record.type === \"throw\") {\n        throw record.arg;\n      }\n\n      if (record.type === \"break\" || record.type === \"continue\") {\n        this.next = record.arg;\n      } else if (record.type === \"return\") {\n        this.rval = this.arg = record.arg;\n        this.method = \"return\";\n        this.next = \"end\";\n      } else if (record.type === \"normal\" && afterLoc) {\n        this.next = afterLoc;\n      }\n\n      return ContinueSentinel;\n    },\n    finish: function finish(finallyLoc) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n\n        if (entry.finallyLoc === finallyLoc) {\n          this.complete(entry.completion, entry.afterLoc);\n          resetTryEntry(entry);\n          return ContinueSentinel;\n        }\n      }\n    },\n    \"catch\": function _catch(tryLoc) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n\n        if (entry.tryLoc === tryLoc) {\n          var record = entry.completion;\n\n          if (record.type === \"throw\") {\n            var thrown = record.arg;\n            resetTryEntry(entry);\n          }\n\n          return thrown;\n        }\n      } // The context.catch method must only be called with a location\n      // argument that corresponds to a known catch block.\n\n\n      throw new Error(\"illegal catch attempt\");\n    },\n    delegateYield: function delegateYield(iterable, resultName, nextLoc) {\n      this.delegate = {\n        iterator: values(iterable),\n        resultName: resultName,\n        nextLoc: nextLoc\n      };\n\n      if (this.method === \"next\") {\n        // Deliberately forget the last sent value so that we don't\n        // accidentally pass it on to the delegate.\n        this.arg = undefined;\n      }\n\n      return ContinueSentinel;\n    }\n  }; // Regardless of whether this script is executing as a CommonJS module\n  // or not, return the runtime object so that we can declare the variable\n  // regeneratorRuntime in the outer scope, which allows this module to be\n  // injected easily by `bin/regenerator --include-runtime script.js`.\n\n  return exports;\n}( // If this script is executing as a CommonJS module, use module.exports\n// as the regeneratorRuntime namespace. Otherwise create a new empty\n// object. Either way, the resulting object will be used to initialize\n// the regeneratorRuntime variable at the top of this file.\ntypeof module === \"object\" ? module.exports : {});\n\ntry {\n  regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n  // This module should not be running in strict mode, so the above\n  // assignment should always work unless something is misconfigured. Just\n  // in case runtime.js accidentally runs in strict mode, we can escape\n  // strict mode using a global Function call. This could conceivably fail\n  // if a Content Security Policy forbids using Function, but in that case\n  // the proper solution is to fix the accidental strict mode problem. If\n  // you've misconfigured your bundler to force strict mode and applied a\n  // CSP to forbid Function, and you're not willing to fix either of those\n  // problems, please detail your unique predicament in a GitHub issue.\n  Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n}","export default function _arrayLikeToArray(arr, len) {\n  if (len == null || len > arr.length) len = arr.length;\n\n  for (var i = 0, arr2 = new Array(len); i < len; i++) {\n    arr2[i] = arr[i];\n  }\n\n  return arr2;\n}","import arrayLikeToArray from \"@babel/runtime/helpers/esm/arrayLikeToArray\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n  if (!o) return;\n  if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n  var n = Object.prototype.toString.call(o).slice(8, -1);\n  if (n === \"Object\" && o.constructor) n = o.constructor.name;\n  if (n === \"Map\" || n === \"Set\") return Array.from(o);\n  if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","import arrayWithoutHoles from \"@babel/runtime/helpers/esm/arrayWithoutHoles\";\nimport iterableToArray from \"@babel/runtime/helpers/esm/iterableToArray\";\nimport unsupportedIterableToArray from \"@babel/runtime/helpers/esm/unsupportedIterableToArray\";\nimport nonIterableSpread from \"@babel/runtime/helpers/esm/nonIterableSpread\";\nexport default function _toConsumableArray(arr) {\n  return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"@babel/runtime/helpers/esm/arrayLikeToArray\";\nexport default function _arrayWithoutHoles(arr) {\n  if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n  if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}","export default function _nonIterableSpread() {\n  throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import _toConsumableArray from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/toConsumableArray\";\n\n/*\n  Copyright 2019 Google LLC\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\nvar logger = process.env.NODE_ENV === 'production' ? null : function () {\n  // Don't overwrite this value if it's already set.\n  // See https://github.com/GoogleChrome/workbox/pull/2284#issuecomment-560470923\n  if (!('__WB_DISABLE_DEV_LOGS' in self)) {\n    self.__WB_DISABLE_DEV_LOGS = false;\n  }\n\n  var inGroup = false;\n  var methodToColorMap = {\n    debug: \"#7f8c8d\",\n    log: \"#2ecc71\",\n    warn: \"#f39c12\",\n    error: \"#c0392b\",\n    groupCollapsed: \"#3498db\",\n    groupEnd: null\n  };\n\n  var print = function print(method, args) {\n    var _console2;\n\n    if (self.__WB_DISABLE_DEV_LOGS) {\n      return;\n    }\n\n    if (method === 'groupCollapsed') {\n      // Safari doesn't print all console.groupCollapsed() arguments:\n      // https://bugs.webkit.org/show_bug.cgi?id=182754\n      if (/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) {\n        var _console;\n\n        (_console = console)[method].apply(_console, _toConsumableArray(args));\n\n        return;\n      }\n    }\n\n    var styles = [\"background: \".concat(methodToColorMap[method]), \"border-radius: 0.5em\", \"color: white\", \"font-weight: bold\", \"padding: 2px 0.5em\"]; // When in a group, the workbox prefix is not displayed.\n\n    var logPrefix = inGroup ? [] : ['%cworkbox', styles.join(';')];\n\n    (_console2 = console)[method].apply(_console2, logPrefix.concat(_toConsumableArray(args)));\n\n    if (method === 'groupCollapsed') {\n      inGroup = true;\n    }\n\n    if (method === 'groupEnd') {\n      inGroup = false;\n    }\n  };\n\n  var api = {};\n  var loggerMethods = Object.keys(methodToColorMap);\n\n  var _loop = function _loop() {\n    var key = _loggerMethods[_i];\n    var method = key;\n\n    api[method] = function () {\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n\n      print(method, args);\n    };\n  };\n\n  for (var _i = 0, _loggerMethods = loggerMethods; _i < _loggerMethods.length; _i++) {\n    _loop();\n  }\n\n  return api;\n}();\nexport { logger };","import unsupportedIterableToArray from \"@babel/runtime/helpers/esm/unsupportedIterableToArray\";\nexport default function _createForOfIteratorHelper(o, allowArrayLike) {\n  var it;\n\n  if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) {\n    if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n      if (it) o = it;\n      var i = 0;\n\n      var F = function F() {};\n\n      return {\n        s: F,\n        n: function n() {\n          if (i >= o.length) return {\n            done: true\n          };\n          return {\n            done: false,\n            value: o[i++]\n          };\n        },\n        e: function e(_e) {\n          throw _e;\n        },\n        f: F\n      };\n    }\n\n    throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n  }\n\n  var normalCompletion = true,\n      didErr = false,\n      err;\n  return {\n    s: function s() {\n      it = o[Symbol.iterator]();\n    },\n    n: function n() {\n      var step = it.next();\n      normalCompletion = step.done;\n      return step;\n    },\n    e: function e(_e2) {\n      didErr = true;\n      err = _e2;\n    },\n    f: function f() {\n      try {\n        if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n      } finally {\n        if (didErr) throw err;\n      }\n    }\n  };\n}","export default function _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}","export default function _setPrototypeOf(o, p) {\n  _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n\n  return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"@babel/runtime/helpers/esm/setPrototypeOf\";\nexport default function _inherits(subClass, superClass) {\n  if (typeof superClass !== \"function\" && superClass !== null) {\n    throw new TypeError(\"Super expression must either be null or a function\");\n  }\n\n  subClass.prototype = Object.create(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      writable: true,\n      configurable: true\n    }\n  });\n  if (superClass) setPrototypeOf(subClass, superClass);\n}","export default function _getPrototypeOf(o) {\n  _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n    return o.__proto__ || Object.getPrototypeOf(o);\n  };\n  return _getPrototypeOf(o);\n}","export default function _isNativeReflectConstruct() {\n  if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n  if (Reflect.construct.sham) return false;\n  if (typeof Proxy === \"function\") return true;\n\n  try {\n    Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n    return true;\n  } catch (e) {\n    return false;\n  }\n}","export default function _typeof(obj) {\n  \"@babel/helpers - typeof\";\n\n  if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n    _typeof = function _typeof(obj) {\n      return typeof obj;\n    };\n  } else {\n    _typeof = function _typeof(obj) {\n      return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n    };\n  }\n\n  return _typeof(obj);\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nexport default function _possibleConstructorReturn(self, call) {\n  if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n    return call;\n  }\n\n  return assertThisInitialized(self);\n}","export default function _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return self;\n}","import getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nimport isNativeReflectConstruct from \"@babel/runtime/helpers/esm/isNativeReflectConstruct\";\nimport possibleConstructorReturn from \"@babel/runtime/helpers/esm/possibleConstructorReturn\";\nexport default function _createSuper(Derived) {\n  var hasNativeReflectConstruct = isNativeReflectConstruct();\n  return function _createSuperInternal() {\n    var Super = getPrototypeOf(Derived),\n        result;\n\n    if (hasNativeReflectConstruct) {\n      var NewTarget = getPrototypeOf(this).constructor;\n      result = Reflect.construct(Super, arguments, NewTarget);\n    } else {\n      result = Super.apply(this, arguments);\n    }\n\n    return possibleConstructorReturn(this, result);\n  };\n}","import setPrototypeOf from \"@babel/runtime/helpers/esm/setPrototypeOf\";\nimport isNativeReflectConstruct from \"@babel/runtime/helpers/esm/isNativeReflectConstruct\";\nexport default function _construct(Parent, args, Class) {\n  if (isNativeReflectConstruct()) {\n    _construct = Reflect.construct;\n  } else {\n    _construct = function _construct(Parent, args, Class) {\n      var a = [null];\n      a.push.apply(a, args);\n      var Constructor = Function.bind.apply(Parent, a);\n      var instance = new Constructor();\n      if (Class) setPrototypeOf(instance, Class.prototype);\n      return instance;\n    };\n  }\n\n  return _construct.apply(null, arguments);\n}","import getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nimport setPrototypeOf from \"@babel/runtime/helpers/esm/setPrototypeOf\";\nimport isNativeFunction from \"@babel/runtime/helpers/esm/isNativeFunction\";\nimport construct from \"@babel/runtime/helpers/esm/construct\";\nexport default function _wrapNativeSuper(Class) {\n  var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n  _wrapNativeSuper = function _wrapNativeSuper(Class) {\n    if (Class === null || !isNativeFunction(Class)) return Class;\n\n    if (typeof Class !== \"function\") {\n      throw new TypeError(\"Super expression must either be null or a function\");\n    }\n\n    if (typeof _cache !== \"undefined\") {\n      if (_cache.has(Class)) return _cache.get(Class);\n\n      _cache.set(Class, Wrapper);\n    }\n\n    function Wrapper() {\n      return construct(Class, arguments, getPrototypeOf(this).constructor);\n    }\n\n    Wrapper.prototype = Object.create(Class.prototype, {\n      constructor: {\n        value: Wrapper,\n        enumerable: false,\n        writable: true,\n        configurable: true\n      }\n    });\n    return setPrototypeOf(Wrapper, Class);\n  };\n\n  return _wrapNativeSuper(Class);\n}","export default function _isNativeFunction(fn) {\n  return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}","/*\n  Copyright 2018 Google LLC\n\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport '../../_version.js';\nexport var messages = {\n  'invalid-value': function invalidValue(_ref) {\n    var paramName = _ref.paramName,\n        validValueDescription = _ref.validValueDescription,\n        value = _ref.value;\n\n    if (!paramName || !validValueDescription) {\n      throw new Error(\"Unexpected input to 'invalid-value' error.\");\n    }\n\n    return \"The '\".concat(paramName, \"' parameter was given a value with an \") + \"unexpected value. \".concat(validValueDescription, \" Received a value of \") + \"\".concat(JSON.stringify(value), \".\");\n  },\n  'not-an-array': function notAnArray(_ref2) {\n    var moduleName = _ref2.moduleName,\n        className = _ref2.className,\n        funcName = _ref2.funcName,\n        paramName = _ref2.paramName;\n\n    if (!moduleName || !className || !funcName || !paramName) {\n      throw new Error(\"Unexpected input to 'not-an-array' error.\");\n    }\n\n    return \"The parameter '\".concat(paramName, \"' passed into \") + \"'\".concat(moduleName, \".\").concat(className, \".\").concat(funcName, \"()' must be an array.\");\n  },\n  'incorrect-type': function incorrectType(_ref3) {\n    var expectedType = _ref3.expectedType,\n        paramName = _ref3.paramName,\n        moduleName = _ref3.moduleName,\n        className = _ref3.className,\n        funcName = _ref3.funcName;\n\n    if (!expectedType || !paramName || !moduleName || !funcName) {\n      throw new Error(\"Unexpected input to 'incorrect-type' error.\");\n    }\n\n    return \"The parameter '\".concat(paramName, \"' passed into \") + \"'\".concat(moduleName, \".\").concat(className ? className + '.' : '') + \"\".concat(funcName, \"()' must be of type \").concat(expectedType, \".\");\n  },\n  'incorrect-class': function incorrectClass(_ref4) {\n    var expectedClass = _ref4.expectedClass,\n        paramName = _ref4.paramName,\n        moduleName = _ref4.moduleName,\n        className = _ref4.className,\n        funcName = _ref4.funcName,\n        isReturnValueProblem = _ref4.isReturnValueProblem;\n\n    if (!expectedClass || !moduleName || !funcName) {\n      throw new Error(\"Unexpected input to 'incorrect-class' error.\");\n    }\n\n    if (isReturnValueProblem) {\n      return \"The return value from \" + \"'\".concat(moduleName, \".\").concat(className ? className + '.' : '').concat(funcName, \"()' \") + \"must be an instance of class \".concat(expectedClass.name, \".\");\n    }\n\n    return \"The parameter '\".concat(paramName, \"' passed into \") + \"'\".concat(moduleName, \".\").concat(className ? className + '.' : '').concat(funcName, \"()' \") + \"must be an instance of class \".concat(expectedClass.name, \".\");\n  },\n  'missing-a-method': function missingAMethod(_ref5) {\n    var expectedMethod = _ref5.expectedMethod,\n        paramName = _ref5.paramName,\n        moduleName = _ref5.moduleName,\n        className = _ref5.className,\n        funcName = _ref5.funcName;\n\n    if (!expectedMethod || !paramName || !moduleName || !className || !funcName) {\n      throw new Error(\"Unexpected input to 'missing-a-method' error.\");\n    }\n\n    return \"\".concat(moduleName, \".\").concat(className, \".\").concat(funcName, \"() expected the \") + \"'\".concat(paramName, \"' parameter to expose a '\").concat(expectedMethod, \"' method.\");\n  },\n  'add-to-cache-list-unexpected-type': function addToCacheListUnexpectedType(_ref6) {\n    var entry = _ref6.entry;\n    return \"An unexpected entry was passed to \" + \"'workbox-precaching.PrecacheController.addToCacheList()' The entry \" + \"'\".concat(JSON.stringify(entry), \"' isn't supported. You must supply an array of \") + \"strings with one or more characters, objects with a url property or \" + \"Request objects.\";\n  },\n  'add-to-cache-list-conflicting-entries': function addToCacheListConflictingEntries(_ref7) {\n    var firstEntry = _ref7.firstEntry,\n        secondEntry = _ref7.secondEntry;\n\n    if (!firstEntry || !secondEntry) {\n      throw new Error(\"Unexpected input to \" + \"'add-to-cache-list-duplicate-entries' error.\");\n    }\n\n    return \"Two of the entries passed to \" + \"'workbox-precaching.PrecacheController.addToCacheList()' had the URL \" + \"\".concat(firstEntry._entryId, \" but different revision details. Workbox is \") + \"unable to cache and version the asset correctly. Please remove one \" + \"of the entries.\";\n  },\n  'plugin-error-request-will-fetch': function pluginErrorRequestWillFetch(_ref8) {\n    var thrownError = _ref8.thrownError;\n\n    if (!thrownError) {\n      throw new Error(\"Unexpected input to \" + \"'plugin-error-request-will-fetch', error.\");\n    }\n\n    return \"An error was thrown by a plugins 'requestWillFetch()' method. \" + \"The thrown error message was: '\".concat(thrownError.message, \"'.\");\n  },\n  'invalid-cache-name': function invalidCacheName(_ref9) {\n    var cacheNameId = _ref9.cacheNameId,\n        value = _ref9.value;\n\n    if (!cacheNameId) {\n      throw new Error(\"Expected a 'cacheNameId' for error 'invalid-cache-name'\");\n    }\n\n    return \"You must provide a name containing at least one character for \" + \"setCacheDetails({\".concat(cacheNameId, \": '...'}). Received a value of \") + \"'\".concat(JSON.stringify(value), \"'\");\n  },\n  'unregister-route-but-not-found-with-method': function unregisterRouteButNotFoundWithMethod(_ref10) {\n    var method = _ref10.method;\n\n    if (!method) {\n      throw new Error(\"Unexpected input to \" + \"'unregister-route-but-not-found-with-method' error.\");\n    }\n\n    return \"The route you're trying to unregister was not  previously \" + \"registered for the method type '\".concat(method, \"'.\");\n  },\n  'unregister-route-route-not-registered': function unregisterRouteRouteNotRegistered() {\n    return \"The route you're trying to unregister was not previously \" + \"registered.\";\n  },\n  'queue-replay-failed': function queueReplayFailed(_ref11) {\n    var name = _ref11.name;\n    return \"Replaying the background sync queue '\".concat(name, \"' failed.\");\n  },\n  'duplicate-queue-name': function duplicateQueueName(_ref12) {\n    var name = _ref12.name;\n    return \"The Queue name '\".concat(name, \"' is already being used. \") + \"All instances of backgroundSync.Queue must be given unique names.\";\n  },\n  'expired-test-without-max-age': function expiredTestWithoutMaxAge(_ref13) {\n    var methodName = _ref13.methodName,\n        paramName = _ref13.paramName;\n    return \"The '\".concat(methodName, \"()' method can only be used when the \") + \"'\".concat(paramName, \"' is used in the constructor.\");\n  },\n  'unsupported-route-type': function unsupportedRouteType(_ref14) {\n    var moduleName = _ref14.moduleName,\n        className = _ref14.className,\n        funcName = _ref14.funcName,\n        paramName = _ref14.paramName;\n    return \"The supplied '\".concat(paramName, \"' parameter was an unsupported type. \") + \"Please check the docs for \".concat(moduleName, \".\").concat(className, \".\").concat(funcName, \" for \") + \"valid input types.\";\n  },\n  'not-array-of-class': function notArrayOfClass(_ref15) {\n    var value = _ref15.value,\n        expectedClass = _ref15.expectedClass,\n        moduleName = _ref15.moduleName,\n        className = _ref15.className,\n        funcName = _ref15.funcName,\n        paramName = _ref15.paramName;\n    return \"The supplied '\".concat(paramName, \"' parameter must be an array of \") + \"'\".concat(expectedClass, \"' objects. Received '\").concat(JSON.stringify(value), \",'. \") + \"Please check the call to \".concat(moduleName, \".\").concat(className, \".\").concat(funcName, \"() \") + \"to fix the issue.\";\n  },\n  'max-entries-or-age-required': function maxEntriesOrAgeRequired(_ref16) {\n    var moduleName = _ref16.moduleName,\n        className = _ref16.className,\n        funcName = _ref16.funcName;\n    return \"You must define either config.maxEntries or config.maxAgeSeconds\" + \"in \".concat(moduleName, \".\").concat(className, \".\").concat(funcName);\n  },\n  'statuses-or-headers-required': function statusesOrHeadersRequired(_ref17) {\n    var moduleName = _ref17.moduleName,\n        className = _ref17.className,\n        funcName = _ref17.funcName;\n    return \"You must define either config.statuses or config.headers\" + \"in \".concat(moduleName, \".\").concat(className, \".\").concat(funcName);\n  },\n  'invalid-string': function invalidString(_ref18) {\n    var moduleName = _ref18.moduleName,\n        funcName = _ref18.funcName,\n        paramName = _ref18.paramName;\n\n    if (!paramName || !moduleName || !funcName) {\n      throw new Error(\"Unexpected input to 'invalid-string' error.\");\n    }\n\n    return \"When using strings, the '\".concat(paramName, \"' parameter must start with \") + \"'http' (for cross-origin matches) or '/' (for same-origin matches). \" + \"Please see the docs for \".concat(moduleName, \".\").concat(funcName, \"() for \") + \"more info.\";\n  },\n  'channel-name-required': function channelNameRequired() {\n    return \"You must provide a channelName to construct a \" + \"BroadcastCacheUpdate instance.\";\n  },\n  'invalid-responses-are-same-args': function invalidResponsesAreSameArgs() {\n    return \"The arguments passed into responsesAreSame() appear to be \" + \"invalid. Please ensure valid Responses are used.\";\n  },\n  'expire-custom-caches-only': function expireCustomCachesOnly() {\n    return \"You must provide a 'cacheName' property when using the \" + \"expiration plugin with a runtime caching strategy.\";\n  },\n  'unit-must-be-bytes': function unitMustBeBytes(_ref19) {\n    var normalizedRangeHeader = _ref19.normalizedRangeHeader;\n\n    if (!normalizedRangeHeader) {\n      throw new Error(\"Unexpected input to 'unit-must-be-bytes' error.\");\n    }\n\n    return \"The 'unit' portion of the Range header must be set to 'bytes'. \" + \"The Range header provided was \\\"\".concat(normalizedRangeHeader, \"\\\"\");\n  },\n  'single-range-only': function singleRangeOnly(_ref20) {\n    var normalizedRangeHeader = _ref20.normalizedRangeHeader;\n\n    if (!normalizedRangeHeader) {\n      throw new Error(\"Unexpected input to 'single-range-only' error.\");\n    }\n\n    return \"Multiple ranges are not supported. Please use a  single start \" + \"value, and optional end value. The Range header provided was \" + \"\\\"\".concat(normalizedRangeHeader, \"\\\"\");\n  },\n  'invalid-range-values': function invalidRangeValues(_ref21) {\n    var normalizedRangeHeader = _ref21.normalizedRangeHeader;\n\n    if (!normalizedRangeHeader) {\n      throw new Error(\"Unexpected input to 'invalid-range-values' error.\");\n    }\n\n    return \"The Range header is missing both start and end values. At least \" + \"one of those values is needed. The Range header provided was \" + \"\\\"\".concat(normalizedRangeHeader, \"\\\"\");\n  },\n  'no-range-header': function noRangeHeader() {\n    return \"No Range header was found in the Request provided.\";\n  },\n  'range-not-satisfiable': function rangeNotSatisfiable(_ref22) {\n    var size = _ref22.size,\n        start = _ref22.start,\n        end = _ref22.end;\n    return \"The start (\".concat(start, \") and end (\").concat(end, \") values in the Range are \") + \"not satisfiable by the cached response, which is \".concat(size, \" bytes.\");\n  },\n  'attempt-to-cache-non-get-request': function attemptToCacheNonGetRequest(_ref23) {\n    var url = _ref23.url,\n        method = _ref23.method;\n    return \"Unable to cache '\".concat(url, \"' because it is a '\").concat(method, \"' request and \") + \"only 'GET' requests can be cached.\";\n  },\n  'cache-put-with-no-response': function cachePutWithNoResponse(_ref24) {\n    var url = _ref24.url;\n    return \"There was an attempt to cache '\".concat(url, \"' but the response was not \") + \"defined.\";\n  },\n  'no-response': function noResponse(_ref25) {\n    var url = _ref25.url,\n        error = _ref25.error;\n    var message = \"The strategy could not generate a response for '\".concat(url, \"'.\");\n\n    if (error) {\n      message += \" The underlying error is \".concat(error, \".\");\n    }\n\n    return message;\n  },\n  'bad-precaching-response': function badPrecachingResponse(_ref26) {\n    var url = _ref26.url,\n        status = _ref26.status;\n    return \"The precaching request for '\".concat(url, \"' failed\") + (status ? \" with an HTTP status of \".concat(status, \".\") : \".\");\n  },\n  'non-precached-url': function nonPrecachedUrl(_ref27) {\n    var url = _ref27.url;\n    return \"createHandlerBoundToURL('\".concat(url, \"') was called, but that URL is \") + \"not precached. Please pass in a URL that is precached instead.\";\n  },\n  'add-to-cache-list-conflicting-integrities': function addToCacheListConflictingIntegrities(_ref28) {\n    var url = _ref28.url;\n    return \"Two of the entries passed to \" + \"'workbox-precaching.PrecacheController.addToCacheList()' had the URL \" + \"\".concat(url, \" with different integrity values. Please remove one of them.\");\n  },\n  'missing-precache-entry': function missingPrecacheEntry(_ref29) {\n    var cacheName = _ref29.cacheName,\n        url = _ref29.url;\n    return \"Unable to find a precached response in \".concat(cacheName, \" for \").concat(url, \".\");\n  },\n  'cross-origin-copy-response': function crossOriginCopyResponse(_ref30) {\n    var origin = _ref30.origin;\n    return \"workbox-core.copyResponse() can only be used with same-origin \" + \"responses. It was passed a response with origin \".concat(origin, \".\");\n  }\n};","/*\n  Copyright 2018 Google LLC\n\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport { messages } from './messages.js';\nimport '../../_version.js';\n\nvar fallback = function fallback(code) {\n  var msg = code;\n\n  for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n    args[_key - 1] = arguments[_key];\n  }\n\n  if (args.length > 0) {\n    msg += \" :: \".concat(JSON.stringify(args));\n  }\n\n  return msg;\n};\n\nvar generatorFunction = function generatorFunction(code) {\n  var details = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  var message = messages[code];\n\n  if (!message) {\n    throw new Error(\"Unable to find message for code '\".concat(code, \"'.\"));\n  }\n\n  return message(details);\n};\n\nexport var messageGenerator = process.env.NODE_ENV === 'production' ? fallback : generatorFunction;","import _classCallCheck from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck\";\nimport _inherits from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createSuper\";\nimport _wrapNativeSuper from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/wrapNativeSuper\";\n\n/*\n  Copyright 2018 Google LLC\n\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport { messageGenerator } from '../models/messages/messageGenerator.js';\nimport '../_version.js';\n/**\n * Workbox errors should be thrown with this class.\n * This allows use to ensure the type easily in tests,\n * helps developers identify errors from workbox\n * easily and allows use to optimise error\n * messages correctly.\n *\n * @private\n */\n\nvar WorkboxError = /*#__PURE__*/function (_Error) {\n  _inherits(WorkboxError, _Error);\n\n  var _super = _createSuper(WorkboxError);\n\n  /**\n   *\n   * @param {string} errorCode The error code that\n   * identifies this particular error.\n   * @param {Object=} details Any relevant arguments\n   * that will help developers identify issues should\n   * be added as a key on the context object.\n   */\n  function WorkboxError(errorCode, details) {\n    var _this;\n\n    _classCallCheck(this, WorkboxError);\n\n    var message = messageGenerator(errorCode, details);\n    _this = _super.call(this, message);\n    _this.name = errorCode;\n    _this.details = details;\n    return _this;\n  }\n\n  return WorkboxError;\n}( /*#__PURE__*/_wrapNativeSuper(Error));\n\nexport { WorkboxError };","/*\n  Copyright 2018 Google LLC\n\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js'; // Callbacks to be executed whenever there's a quota error.\n\nvar quotaErrorCallbacks = new Set();\nexport { quotaErrorCallbacks };","/*\n  Copyright 2019 Google LLC\n\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport { logger } from './_private/logger.js';\nimport { assert } from './_private/assert.js';\nimport { quotaErrorCallbacks } from './models/quotaErrorCallbacks.js';\nimport './_version.js';\n/**\n * Adds a function to the set of quotaErrorCallbacks that will be executed if\n * there's a quota error.\n *\n * @param {Function} callback\n * @memberof module:workbox-core\n */\n\nfunction registerQuotaErrorCallback(callback) {\n  if (process.env.NODE_ENV !== 'production') {\n    assert.isType(callback, 'function', {\n      moduleName: 'workbox-core',\n      funcName: 'register',\n      paramName: 'callback'\n    });\n  }\n\n  quotaErrorCallbacks.add(callback);\n\n  if (process.env.NODE_ENV !== 'production') {\n    logger.log('Registered a callback to respond to quota errors.', callback);\n  }\n}\n\nexport { registerQuotaErrorCallback };","/*\n  Copyright 2018 Google LLC\n\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\nvar _cacheNameDetails = {\n  googleAnalytics: 'googleAnalytics',\n  precache: 'precache-v2',\n  prefix: 'workbox',\n  runtime: 'runtime',\n  suffix: typeof registration !== 'undefined' ? registration.scope : ''\n};\n\nvar _createCacheName = function _createCacheName(cacheName) {\n  return [_cacheNameDetails.prefix, cacheName, _cacheNameDetails.suffix].filter(function (value) {\n    return value && value.length > 0;\n  }).join('-');\n};\n\nvar eachCacheNameDetail = function eachCacheNameDetail(fn) {\n  for (var _i = 0, _Object$keys = Object.keys(_cacheNameDetails); _i < _Object$keys.length; _i++) {\n    var key = _Object$keys[_i];\n    fn(key);\n  }\n};\n\nexport var cacheNames = {\n  updateDetails: function updateDetails(details) {\n    eachCacheNameDetail(function (key) {\n      if (typeof details[key] === 'string') {\n        _cacheNameDetails[key] = details[key];\n      }\n    });\n  },\n  getGoogleAnalyticsName: function getGoogleAnalyticsName(userCacheName) {\n    return userCacheName || _createCacheName(_cacheNameDetails.googleAnalytics);\n  },\n  getPrecacheName: function getPrecacheName(userCacheName) {\n    return userCacheName || _createCacheName(_cacheNameDetails.precache);\n  },\n  getPrefix: function getPrefix() {\n    return _cacheNameDetails.prefix;\n  },\n  getRuntimeName: function getRuntimeName(userCacheName) {\n    return userCacheName || _createCacheName(_cacheNameDetails.runtime);\n  },\n  getSuffix: function getSuffix() {\n    return _cacheNameDetails.suffix;\n  }\n};","/*\n  Copyright 2019 Google LLC\n\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\nvar supportStatus;\n/**\n * A utility function that determines whether the current browser supports\n * constructing a new `Response` from a `response.body` stream.\n *\n * @return {boolean} `true`, if the current browser can successfully\n *     construct a `Response` from a `response.body` stream, `false` otherwise.\n *\n * @private\n */\n\nfunction canConstructResponseFromBodyStream() {\n  if (supportStatus === undefined) {\n    var testResponse = new Response('');\n\n    if ('body' in testResponse) {\n      try {\n        new Response(testResponse.body);\n        supportStatus = true;\n      } catch (error) {\n        supportStatus = false;\n      }\n    }\n\n    supportStatus = false;\n  }\n\n  return supportStatus;\n}\n\nexport { canConstructResponseFromBodyStream };","export default function _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}","import defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) {\n  var keys = Object.keys(object);\n\n  if (Object.getOwnPropertySymbols) {\n    var symbols = Object.getOwnPropertySymbols(object);\n    if (enumerableOnly) symbols = symbols.filter(function (sym) {\n      return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n    });\n    keys.push.apply(keys, symbols);\n  }\n\n  return keys;\n}\n\nexport default function _objectSpread2(target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i] != null ? arguments[i] : {};\n\n    if (i % 2) {\n      ownKeys(Object(source), true).forEach(function (key) {\n        defineProperty(target, key, source[key]);\n      });\n    } else if (Object.getOwnPropertyDescriptors) {\n      Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n      ownKeys(Object(source)).forEach(function (key) {\n        Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n      });\n    }\n  }\n\n  return target;\n}","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n  try {\n    var info = gen[key](arg);\n    var value = info.value;\n  } catch (error) {\n    reject(error);\n    return;\n  }\n\n  if (info.done) {\n    resolve(value);\n  } else {\n    Promise.resolve(value).then(_next, _throw);\n  }\n}\n\nexport default function _asyncToGenerator(fn) {\n  return function () {\n    var self = this,\n        args = arguments;\n    return new Promise(function (resolve, reject) {\n      var gen = fn.apply(self, args);\n\n      function _next(value) {\n        asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n      }\n\n      function _throw(err) {\n        asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n      }\n\n      _next(undefined);\n    });\n  };\n}","import _regeneratorRuntime from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/regenerator\";\nimport _objectSpread from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread2\";\nimport _asyncToGenerator from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/asyncToGenerator\";\nimport _createForOfIteratorHelper from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper\";\n\n/*\n  Copyright 2020 Google LLC\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n\nfunction stripParams(fullURL, ignoreParams) {\n  var strippedURL = new URL(fullURL);\n\n  var _iterator = _createForOfIteratorHelper(ignoreParams),\n      _step;\n\n  try {\n    for (_iterator.s(); !(_step = _iterator.n()).done;) {\n      var param = _step.value;\n      strippedURL.searchParams.delete(param);\n    }\n  } catch (err) {\n    _iterator.e(err);\n  } finally {\n    _iterator.f();\n  }\n\n  return strippedURL.href;\n}\n/**\n * Matches an item in the cache, ignoring specific URL params. This is similar\n * to the `ignoreSearch` option, but it allows you to ignore just specific\n * params (while continuing to match on the others).\n *\n * @private\n * @param {Cache} cache\n * @param {Request} request\n * @param {Object} matchOptions\n * @param {Array<string>} ignoreParams\n * @return {Promise<Response|undefined>}\n */\n\n\nfunction cacheMatchIgnoreParams(_x, _x2, _x3, _x4) {\n  return _cacheMatchIgnoreParams.apply(this, arguments);\n}\n\nfunction _cacheMatchIgnoreParams() {\n  _cacheMatchIgnoreParams = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(cache, request, ignoreParams, matchOptions) {\n    var strippedRequestURL, keysOptions, cacheKeys, _iterator2, _step2, cacheKey, strippedCacheKeyURL;\n\n    return _regeneratorRuntime.wrap(function _callee$(_context) {\n      while (1) {\n        switch (_context.prev = _context.next) {\n          case 0:\n            strippedRequestURL = stripParams(request.url, ignoreParams); // If the request doesn't include any ignored params, match as normal.\n\n            if (!(request.url === strippedRequestURL)) {\n              _context.next = 3;\n              break;\n            }\n\n            return _context.abrupt(\"return\", cache.match(request, matchOptions));\n\n          case 3:\n            // Otherwise, match by comparing keys\n            keysOptions = _objectSpread(_objectSpread({}, matchOptions), {}, {\n              ignoreSearch: true\n            });\n            _context.next = 6;\n            return cache.keys(request, keysOptions);\n\n          case 6:\n            cacheKeys = _context.sent;\n            _iterator2 = _createForOfIteratorHelper(cacheKeys);\n            _context.prev = 8;\n\n            _iterator2.s();\n\n          case 10:\n            if ((_step2 = _iterator2.n()).done) {\n              _context.next = 17;\n              break;\n            }\n\n            cacheKey = _step2.value;\n            strippedCacheKeyURL = stripParams(cacheKey.url, ignoreParams);\n\n            if (!(strippedRequestURL === strippedCacheKeyURL)) {\n              _context.next = 15;\n              break;\n            }\n\n            return _context.abrupt(\"return\", cache.match(cacheKey, matchOptions));\n\n          case 15:\n            _context.next = 10;\n            break;\n\n          case 17:\n            _context.next = 22;\n            break;\n\n          case 19:\n            _context.prev = 19;\n            _context.t0 = _context[\"catch\"](8);\n\n            _iterator2.e(_context.t0);\n\n          case 22:\n            _context.prev = 22;\n\n            _iterator2.f();\n\n            return _context.finish(22);\n\n          case 25:\n            return _context.abrupt(\"return\");\n\n          case 26:\n          case \"end\":\n            return _context.stop();\n        }\n      }\n    }, _callee, null, [[8, 19, 22, 25]]);\n  }));\n  return _cacheMatchIgnoreParams.apply(this, arguments);\n}\n\nexport { cacheMatchIgnoreParams };","/*\n  Copyright 2019 Google LLC\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n/**\n * A helper function that prevents a promise from being flagged as unused.\n *\n * @private\n **/\n\nexport function dontWaitFor(promise) {\n  // Effective no-op.\n  promise.then(function () {});\n}","import arrayWithHoles from \"@babel/runtime/helpers/esm/arrayWithHoles\";\nimport iterableToArrayLimit from \"@babel/runtime/helpers/esm/iterableToArrayLimit\";\nimport unsupportedIterableToArray from \"@babel/runtime/helpers/esm/unsupportedIterableToArray\";\nimport nonIterableRest from \"@babel/runtime/helpers/esm/nonIterableRest\";\nexport default function _slicedToArray(arr, i) {\n  return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n  if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(arr, i) {\n  if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n  var _arr = [];\n  var _n = true;\n  var _d = false;\n  var _e = undefined;\n\n  try {\n    for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n      _arr.push(_s.value);\n\n      if (i && _arr.length === i) break;\n    }\n  } catch (err) {\n    _d = true;\n    _e = err;\n  } finally {\n    try {\n      if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n    } finally {\n      if (_d) throw _e;\n    }\n  }\n\n  return _arr;\n}","export default function _nonIterableRest() {\n  throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","function _defineProperties(target, props) {\n  for (var i = 0; i < props.length; i++) {\n    var descriptor = props[i];\n    descriptor.enumerable = descriptor.enumerable || false;\n    descriptor.configurable = true;\n    if (\"value\" in descriptor) descriptor.writable = true;\n    Object.defineProperty(target, descriptor.key, descriptor);\n  }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n  if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n  if (staticProps) _defineProperties(Constructor, staticProps);\n  return Constructor;\n}","import _createForOfIteratorHelper from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper\";\nimport _slicedToArray from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray\";\nimport _regeneratorRuntime from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/regenerator\";\nimport _asyncToGenerator from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/asyncToGenerator\";\nimport _classCallCheck from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass\";\n\n/*\n  Copyright 2018 Google LLC\n\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n/**\n * A class that wraps common IndexedDB functionality in a promise-based API.\n * It exposes all the underlying power and functionality of IndexedDB, but\n * wraps the most commonly used features in a way that's much simpler to use.\n *\n * @private\n */\n\nexport var DBWrapper = /*#__PURE__*/function () {\n  /**\n   * @param {string} name\n   * @param {number} version\n   * @param {Object=} [callback]\n   * @param {!Function} [callbacks.onupgradeneeded]\n   * @param {!Function} [callbacks.onversionchange] Defaults to\n   *     DBWrapper.prototype._onversionchange when not specified.\n   * @private\n   */\n  function DBWrapper(name, version) {\n    var _this = this;\n\n    var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n        onupgradeneeded = _ref.onupgradeneeded,\n        onversionchange = _ref.onversionchange;\n\n    _classCallCheck(this, DBWrapper);\n\n    this._db = null;\n    this._name = name;\n    this._version = version;\n    this._onupgradeneeded = onupgradeneeded;\n\n    this._onversionchange = onversionchange || function () {\n      return _this.close();\n    };\n  }\n  /**\n   * Returns the IDBDatabase instance (not normally needed).\n   * @return {IDBDatabase|undefined}\n   *\n   * @private\n   */\n\n\n  _createClass(DBWrapper, [{\n    key: \"open\",\n\n    /**\n     * Opens a connected to an IDBDatabase, invokes any onupgradedneeded\n     * callback, and added an onversionchange callback to the database.\n     *\n     * @return {IDBDatabase}\n     * @private\n     */\n    value: function () {\n      var _open = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {\n        var _this2 = this;\n\n        return _regeneratorRuntime.wrap(function _callee$(_context) {\n          while (1) {\n            switch (_context.prev = _context.next) {\n              case 0:\n                if (!this._db) {\n                  _context.next = 2;\n                  break;\n                }\n\n                return _context.abrupt(\"return\");\n\n              case 2:\n                _context.next = 4;\n                return new Promise(function (resolve, reject) {\n                  // This flag is flipped to true if the timeout callback runs prior\n                  // to the request failing or succeeding. Note: we use a timeout instead\n                  // of an onblocked handler since there are cases where onblocked will\n                  // never never run. A timeout better handles all possible scenarios:\n                  // https://github.com/w3c/IndexedDB/issues/223\n                  var openRequestTimedOut = false;\n                  setTimeout(function () {\n                    openRequestTimedOut = true;\n                    reject(new Error('The open request was blocked and timed out'));\n                  }, _this2.OPEN_TIMEOUT);\n                  var openRequest = indexedDB.open(_this2._name, _this2._version);\n\n                  openRequest.onerror = function () {\n                    return reject(openRequest.error);\n                  };\n\n                  openRequest.onupgradeneeded = function (evt) {\n                    if (openRequestTimedOut) {\n                      openRequest.transaction.abort();\n                      openRequest.result.close();\n                    } else if (typeof _this2._onupgradeneeded === 'function') {\n                      _this2._onupgradeneeded(evt);\n                    }\n                  };\n\n                  openRequest.onsuccess = function () {\n                    var db = openRequest.result;\n\n                    if (openRequestTimedOut) {\n                      db.close();\n                    } else {\n                      db.onversionchange = _this2._onversionchange.bind(_this2);\n                      resolve(db);\n                    }\n                  };\n                });\n\n              case 4:\n                this._db = _context.sent;\n                return _context.abrupt(\"return\", this);\n\n              case 6:\n              case \"end\":\n                return _context.stop();\n            }\n          }\n        }, _callee, this);\n      }));\n\n      function open() {\n        return _open.apply(this, arguments);\n      }\n\n      return open;\n    }()\n    /**\n     * Polyfills the native `getKey()` method. Note, this is overridden at\n     * runtime if the browser supports the native method.\n     *\n     * @param {string} storeName\n     * @param {*} query\n     * @return {Array}\n     * @private\n     */\n\n  }, {\n    key: \"getKey\",\n    value: function () {\n      var _getKey = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(storeName, query) {\n        return _regeneratorRuntime.wrap(function _callee2$(_context2) {\n          while (1) {\n            switch (_context2.prev = _context2.next) {\n              case 0:\n                _context2.next = 2;\n                return this.getAllKeys(storeName, query, 1);\n\n              case 2:\n                return _context2.abrupt(\"return\", _context2.sent[0]);\n\n              case 3:\n              case \"end\":\n                return _context2.stop();\n            }\n          }\n        }, _callee2, this);\n      }));\n\n      function getKey(_x, _x2) {\n        return _getKey.apply(this, arguments);\n      }\n\n      return getKey;\n    }()\n    /**\n     * Polyfills the native `getAll()` method. Note, this is overridden at\n     * runtime if the browser supports the native method.\n     *\n     * @param {string} storeName\n     * @param {*} query\n     * @param {number} count\n     * @return {Array}\n     * @private\n     */\n\n  }, {\n    key: \"getAll\",\n    value: function () {\n      var _getAll = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3(storeName, query, count) {\n        return _regeneratorRuntime.wrap(function _callee3$(_context3) {\n          while (1) {\n            switch (_context3.prev = _context3.next) {\n              case 0:\n                _context3.next = 2;\n                return this.getAllMatching(storeName, {\n                  query: query,\n                  count: count\n                });\n\n              case 2:\n                return _context3.abrupt(\"return\", _context3.sent);\n\n              case 3:\n              case \"end\":\n                return _context3.stop();\n            }\n          }\n        }, _callee3, this);\n      }));\n\n      function getAll(_x3, _x4, _x5) {\n        return _getAll.apply(this, arguments);\n      }\n\n      return getAll;\n    }()\n    /**\n     * Polyfills the native `getAllKeys()` method. Note, this is overridden at\n     * runtime if the browser supports the native method.\n     *\n     * @param {string} storeName\n     * @param {*} query\n     * @param {number} count\n     * @return {Array}\n     * @private\n     */\n\n  }, {\n    key: \"getAllKeys\",\n    value: function () {\n      var _getAllKeys = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee4(storeName, query, count) {\n        var entries;\n        return _regeneratorRuntime.wrap(function _callee4$(_context4) {\n          while (1) {\n            switch (_context4.prev = _context4.next) {\n              case 0:\n                _context4.next = 2;\n                return this.getAllMatching(storeName, {\n                  query: query,\n                  count: count,\n                  includeKeys: true\n                });\n\n              case 2:\n                entries = _context4.sent;\n                return _context4.abrupt(\"return\", entries.map(function (entry) {\n                  return entry.key;\n                }));\n\n              case 4:\n              case \"end\":\n                return _context4.stop();\n            }\n          }\n        }, _callee4, this);\n      }));\n\n      function getAllKeys(_x6, _x7, _x8) {\n        return _getAllKeys.apply(this, arguments);\n      }\n\n      return getAllKeys;\n    }()\n    /**\n     * Supports flexible lookup in an object store by specifying an index,\n     * query, direction, and count. This method returns an array of objects\n     * with the signature .\n     *\n     * @param {string} storeName\n     * @param {Object} [opts]\n     * @param {string} [opts.index] The index to use (if specified).\n     * @param {*} [opts.query]\n     * @param {IDBCursorDirection} [opts.direction]\n     * @param {number} [opts.count] The max number of results to return.\n     * @param {boolean} [opts.includeKeys] When true, the structure of the\n     *     returned objects is changed from an array of values to an array of\n     *     objects in the form {key, primaryKey, value}.\n     * @return {Array}\n     * @private\n     */\n\n  }, {\n    key: \"getAllMatching\",\n    value: function () {\n      var _getAllMatching = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee5(storeName) {\n        var _ref2,\n            index,\n            _ref2$query,\n            query,\n            _ref2$direction,\n            direction,\n            count,\n            _ref2$includeKeys,\n            includeKeys,\n            _args5 = arguments;\n\n        return _regeneratorRuntime.wrap(function _callee5$(_context5) {\n          while (1) {\n            switch (_context5.prev = _context5.next) {\n              case 0:\n                _ref2 = _args5.length > 1 && _args5[1] !== undefined ? _args5[1] : {}, index = _ref2.index, _ref2$query = _ref2.query, query = _ref2$query === void 0 ? null : _ref2$query, _ref2$direction = _ref2.direction, direction = _ref2$direction === void 0 ? 'next' : _ref2$direction, count = _ref2.count, _ref2$includeKeys = _ref2.includeKeys, includeKeys = _ref2$includeKeys === void 0 ? false : _ref2$includeKeys;\n                _context5.next = 3;\n                return this.transaction([storeName], 'readonly', function (txn, done) {\n                  var store = txn.objectStore(storeName);\n                  var target = index ? store.index(index) : store;\n                  var results = [];\n                  var request = target.openCursor(query, direction);\n\n                  request.onsuccess = function () {\n                    var cursor = request.result;\n\n                    if (cursor) {\n                      results.push(includeKeys ? cursor : cursor.value);\n\n                      if (count && results.length >= count) {\n                        done(results);\n                      } else {\n                        cursor.continue();\n                      }\n                    } else {\n                      done(results);\n                    }\n                  };\n                });\n\n              case 3:\n                return _context5.abrupt(\"return\", _context5.sent);\n\n              case 4:\n              case \"end\":\n                return _context5.stop();\n            }\n          }\n        }, _callee5, this);\n      }));\n\n      function getAllMatching(_x9) {\n        return _getAllMatching.apply(this, arguments);\n      }\n\n      return getAllMatching;\n    }()\n    /**\n     * Accepts a list of stores, a transaction type, and a callback and\n     * performs a transaction. A promise is returned that resolves to whatever\n     * value the callback chooses. The callback holds all the transaction logic\n     * and is invoked with two arguments:\n     *   1. The IDBTransaction object\n     *   2. A `done` function, that's used to resolve the promise when\n     *      when the transaction is done, if passed a value, the promise is\n     *      resolved to that value.\n     *\n     * @param {Array<string>} storeNames An array of object store names\n     *     involved in the transaction.\n     * @param {string} type Can be `readonly` or `readwrite`.\n     * @param {!Function} callback\n     * @return {*} The result of the transaction ran by the callback.\n     * @private\n     */\n\n  }, {\n    key: \"transaction\",\n    value: function () {\n      var _transaction = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee6(storeNames, type, callback) {\n        var _this3 = this;\n\n        return _regeneratorRuntime.wrap(function _callee6$(_context6) {\n          while (1) {\n            switch (_context6.prev = _context6.next) {\n              case 0:\n                _context6.next = 2;\n                return this.open();\n\n              case 2:\n                _context6.next = 4;\n                return new Promise(function (resolve, reject) {\n                  var txn = _this3._db.transaction(storeNames, type);\n\n                  txn.onabort = function () {\n                    return reject(txn.error);\n                  };\n\n                  txn.oncomplete = function () {\n                    return resolve();\n                  };\n\n                  callback(txn, function (value) {\n                    return resolve(value);\n                  });\n                });\n\n              case 4:\n                return _context6.abrupt(\"return\", _context6.sent);\n\n              case 5:\n              case \"end\":\n                return _context6.stop();\n            }\n          }\n        }, _callee6, this);\n      }));\n\n      function transaction(_x10, _x11, _x12) {\n        return _transaction.apply(this, arguments);\n      }\n\n      return transaction;\n    }()\n    /**\n     * Delegates async to a native IDBObjectStore method.\n     *\n     * @param {string} method The method name.\n     * @param {string} storeName The object store name.\n     * @param {string} type Can be `readonly` or `readwrite`.\n     * @param {...*} args The list of args to pass to the native method.\n     * @return {*} The result of the transaction.\n     * @private\n     */\n\n  }, {\n    key: \"_call\",\n    value: function () {\n      var _call2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee7(method, storeName, type) {\n        var _len,\n            args,\n            _key,\n            callback,\n            _args7 = arguments;\n\n        return _regeneratorRuntime.wrap(function _callee7$(_context7) {\n          while (1) {\n            switch (_context7.prev = _context7.next) {\n              case 0:\n                for (_len = _args7.length, args = new Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) {\n                  args[_key - 3] = _args7[_key];\n                }\n\n                callback = function callback(txn, done) {\n                  var objStore = txn.objectStore(storeName); // TODO(philipwalton): Fix this underlying TS2684 error.\n                  // @ts-ignore\n\n                  var request = objStore[method].apply(objStore, args);\n\n                  request.onsuccess = function () {\n                    return done(request.result);\n                  };\n                };\n\n                _context7.next = 4;\n                return this.transaction([storeName], type, callback);\n\n              case 4:\n                return _context7.abrupt(\"return\", _context7.sent);\n\n              case 5:\n              case \"end\":\n                return _context7.stop();\n            }\n          }\n        }, _callee7, this);\n      }));\n\n      function _call(_x13, _x14, _x15) {\n        return _call2.apply(this, arguments);\n      }\n\n      return _call;\n    }()\n    /**\n     * Closes the connection opened by `DBWrapper.open()`. Generally this method\n     * doesn't need to be called since:\n     *   1. It's usually better to keep a connection open since opening\n     *      a new connection is somewhat slow.\n     *   2. Connections are automatically closed when the reference is\n     *      garbage collected.\n     * The primary use case for needing to close a connection is when another\n     * reference (typically in another tab) needs to upgrade it and would be\n     * blocked by the current, open connection.\n     *\n     * @private\n     */\n\n  }, {\n    key: \"close\",\n    value: function close() {\n      if (this._db) {\n        this._db.close();\n\n        this._db = null;\n      }\n    }\n  }, {\n    key: \"db\",\n    get: function get() {\n      return this._db;\n    }\n  }]);\n\n  return DBWrapper;\n}(); // Exposed on the prototype to let users modify the default timeout on a\n// per-instance or global basis.\n\nDBWrapper.prototype.OPEN_TIMEOUT = 2000; // Wrap native IDBObjectStore methods according to their mode.\n\nvar methodsToWrap = {\n  readonly: ['get', 'count', 'getKey', 'getAll', 'getAllKeys'],\n  readwrite: ['add', 'put', 'clear', 'delete']\n};\n\nvar _loop = function _loop() {\n  var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2),\n      mode = _Object$entries$_i[0],\n      methods = _Object$entries$_i[1];\n\n  var _iterator = _createForOfIteratorHelper(methods),\n      _step;\n\n  try {\n    var _loop2 = function _loop2() {\n      var method = _step.value;\n\n      if (method in IDBObjectStore.prototype) {\n        // Don't use arrow functions here since we're outside of the class.\n        DBWrapper.prototype[method] = /*#__PURE__*/function () {\n          var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee8(storeName) {\n            var _len2,\n                args,\n                _key2,\n                _args8 = arguments;\n\n            return _regeneratorRuntime.wrap(function _callee8$(_context8) {\n              while (1) {\n                switch (_context8.prev = _context8.next) {\n                  case 0:\n                    for (_len2 = _args8.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n                      args[_key2 - 1] = _args8[_key2];\n                    }\n\n                    _context8.next = 3;\n                    return this._call.apply(this, [method, storeName, mode].concat(args));\n\n                  case 3:\n                    return _context8.abrupt(\"return\", _context8.sent);\n\n                  case 4:\n                  case \"end\":\n                    return _context8.stop();\n                }\n              }\n            }, _callee8, this);\n          }));\n\n          return function (_x16) {\n            return _ref3.apply(this, arguments);\n          };\n        }();\n      }\n    };\n\n    for (_iterator.s(); !(_step = _iterator.n()).done;) {\n      _loop2();\n    }\n  } catch (err) {\n    _iterator.e(err);\n  } finally {\n    _iterator.f();\n  }\n};\n\nfor (var _i = 0, _Object$entries = Object.entries(methodsToWrap); _i < _Object$entries.length; _i++) {\n  _loop();\n}","import _classCallCheck from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck\";\n\n/*\n  Copyright 2018 Google LLC\n\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n/**\n * The Deferred class composes Promises in a way that allows for them to be\n * resolved or rejected from outside the constructor. In most cases promises\n * should be used directly, but Deferreds can be necessary when the logic to\n * resolve a promise must be separate.\n *\n * @private\n */\n\nvar Deferred =\n/**\n * Creates a promise and exposes its resolve and reject functions as methods.\n */\nfunction Deferred() {\n  var _this = this;\n\n  _classCallCheck(this, Deferred);\n\n  this.promise = new Promise(function (resolve, reject) {\n    _this.resolve = resolve;\n    _this.reject = reject;\n  });\n};\n\nexport { Deferred };","import _regeneratorRuntime from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/regenerator\";\nimport _asyncToGenerator from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/asyncToGenerator\";\n\n/*\n  Copyright 2018 Google LLC\n\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n/**\n * Deletes the database.\n * Note: this is exported separately from the DBWrapper module because most\n * usages of IndexedDB in workbox dont need deleting, and this way it can be\n * reused in tests to delete databases without creating DBWrapper instances.\n *\n * @param {string} name The database name.\n * @private\n */\n\nexport var deleteDatabase = /*#__PURE__*/function () {\n  var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(name) {\n    return _regeneratorRuntime.wrap(function _callee$(_context) {\n      while (1) {\n        switch (_context.prev = _context.next) {\n          case 0:\n            _context.next = 2;\n            return new Promise(function (resolve, reject) {\n              var request = indexedDB.deleteDatabase(name);\n\n              request.onerror = function () {\n                reject(request.error);\n              };\n\n              request.onblocked = function () {\n                reject(new Error('Delete blocked'));\n              };\n\n              request.onsuccess = function () {\n                resolve();\n              };\n            });\n\n          case 2:\n          case \"end\":\n            return _context.stop();\n        }\n      }\n    }, _callee);\n  }));\n\n  return function deleteDatabase(_x) {\n    return _ref.apply(this, arguments);\n  };\n}();","import _regeneratorRuntime from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/regenerator\";\nimport _createForOfIteratorHelper from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper\";\nimport _asyncToGenerator from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/asyncToGenerator\";\n\n/*\n  Copyright 2018 Google LLC\n\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport { logger } from '../_private/logger.js';\nimport { quotaErrorCallbacks } from '../models/quotaErrorCallbacks.js';\nimport '../_version.js';\n/**\n * Runs all of the callback functions, one at a time sequentially, in the order\n * in which they were registered.\n *\n * @memberof module:workbox-core\n * @private\n */\n\nfunction executeQuotaErrorCallbacks() {\n  return _executeQuotaErrorCallbacks.apply(this, arguments);\n}\n\nfunction _executeQuotaErrorCallbacks() {\n  _executeQuotaErrorCallbacks = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {\n    var _iterator, _step, callback;\n\n    return _regeneratorRuntime.wrap(function _callee$(_context) {\n      while (1) {\n        switch (_context.prev = _context.next) {\n          case 0:\n            if (process.env.NODE_ENV !== 'production') {\n              logger.log(\"About to run \".concat(quotaErrorCallbacks.size, \" \") + \"callbacks to clean up caches.\");\n            }\n\n            _iterator = _createForOfIteratorHelper(quotaErrorCallbacks);\n            _context.prev = 2;\n\n            _iterator.s();\n\n          case 4:\n            if ((_step = _iterator.n()).done) {\n              _context.next = 11;\n              break;\n            }\n\n            callback = _step.value;\n            _context.next = 8;\n            return callback();\n\n          case 8:\n            if (process.env.NODE_ENV !== 'production') {\n              logger.log(callback, 'is complete.');\n            }\n\n          case 9:\n            _context.next = 4;\n            break;\n\n          case 11:\n            _context.next = 16;\n            break;\n\n          case 13:\n            _context.prev = 13;\n            _context.t0 = _context[\"catch\"](2);\n\n            _iterator.e(_context.t0);\n\n          case 16:\n            _context.prev = 16;\n\n            _iterator.f();\n\n            return _context.finish(16);\n\n          case 19:\n            if (process.env.NODE_ENV !== 'production') {\n              logger.log('Finished running callbacks.');\n            }\n\n          case 20:\n          case \"end\":\n            return _context.stop();\n        }\n      }\n    }, _callee, null, [[2, 13, 16, 19]]);\n  }));\n  return _executeQuotaErrorCallbacks.apply(this, arguments);\n}\n\nexport { executeQuotaErrorCallbacks };","/*\n  Copyright 2018 Google LLC\n\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n\nvar getFriendlyURL = function getFriendlyURL(url) {\n  var urlObj = new URL(String(url), location.href); // See https://github.com/GoogleChrome/workbox/issues/2323\n  // We want to include everything, except for the origin if it's same-origin.\n\n  return urlObj.href.replace(new RegExp(\"^\".concat(location.origin)), '');\n};\n\nexport { getFriendlyURL };","/*\n  Copyright 2019 Google LLC\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n/**\n * Returns a promise that resolves and the passed number of milliseconds.\n * This utility is an async/await-friendly version of `setTimeout`.\n *\n * @param {number} ms\n * @return {Promise}\n * @private\n */\n\nexport function timeout(ms) {\n  return new Promise(function (resolve) {\n    return setTimeout(resolve, ms);\n  });\n}","/*\n  Copyright 2020 Google LLC\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n/**\n * A utility method that makes it easier to use `event.waitUntil` with\n * async functions and return the result.\n *\n * @param {ExtendableEvent} event\n * @param {Function} asyncFn\n * @return {Function}\n * @private\n */\n\nfunction waitUntil(event, asyncFn) {\n  var returnPromise = asyncFn();\n  event.waitUntil(returnPromise);\n  return returnPromise;\n}\n\nexport { waitUntil };","import _regeneratorRuntime from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/regenerator\";\nimport _asyncToGenerator from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/asyncToGenerator\";\n\n/*\n  Copyright 2019 Google LLC\n\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport { canConstructResponseFromBodyStream } from './_private/canConstructResponseFromBodyStream.js';\nimport { WorkboxError } from './_private/WorkboxError.js';\nimport './_version.js';\n/**\n * Allows developers to copy a response and modify its `headers`, `status`,\n * or `statusText` values (the values settable via a\n * [`ResponseInit`]{@link https://developer.mozilla.org/en-US/docs/Web/API/Response/Response#Syntax}\n * object in the constructor).\n * To modify these values, pass a function as the second argument. That\n * function will be invoked with a single object with the response properties\n * `{headers, status, statusText}`. The return value of this function will\n * be used as the `ResponseInit` for the new `Response`. To change the values\n * either modify the passed parameter(s) and return it, or return a totally\n * new object.\n *\n * This method is intentionally limited to same-origin responses, regardless of\n * whether CORS was used or not.\n *\n * @param {Response} response\n * @param {Function} modifier\n * @memberof module:workbox-core\n */\n\nfunction copyResponse(_x, _x2) {\n  return _copyResponse.apply(this, arguments);\n}\n\nfunction _copyResponse() {\n  _copyResponse = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(response, modifier) {\n    var origin, responseURL, clonedResponse, responseInit, modifiedResponseInit, body;\n    return _regeneratorRuntime.wrap(function _callee$(_context) {\n      while (1) {\n        switch (_context.prev = _context.next) {\n          case 0:\n            origin = null; // If response.url isn't set, assume it's cross-origin and keep origin null.\n\n            if (response.url) {\n              responseURL = new URL(response.url);\n              origin = responseURL.origin;\n            }\n\n            if (!(origin !== self.location.origin)) {\n              _context.next = 4;\n              break;\n            }\n\n            throw new WorkboxError('cross-origin-copy-response', {\n              origin: origin\n            });\n\n          case 4:\n            clonedResponse = response.clone(); // Create a fresh `ResponseInit` object by cloning the headers.\n\n            responseInit = {\n              headers: new Headers(clonedResponse.headers),\n              status: clonedResponse.status,\n              statusText: clonedResponse.statusText\n            }; // Apply any user modifications.\n\n            modifiedResponseInit = modifier ? modifier(responseInit) : responseInit; // Create the new response from the body stream and `ResponseInit`\n            // modifications. Note: not all browsers support the Response.body stream,\n            // so fall back to reading the entire body into memory as a blob.\n\n            if (!canConstructResponseFromBodyStream()) {\n              _context.next = 11;\n              break;\n            }\n\n            _context.t0 = clonedResponse.body;\n            _context.next = 14;\n            break;\n\n          case 11:\n            _context.next = 13;\n            return clonedResponse.blob();\n\n          case 13:\n            _context.t0 = _context.sent;\n\n          case 14:\n            body = _context.t0;\n            return _context.abrupt(\"return\", new Response(body, modifiedResponseInit));\n\n          case 16:\n          case \"end\":\n            return _context.stop();\n        }\n      }\n    }, _callee);\n  }));\n  return _copyResponse.apply(this, arguments);\n}\n\nexport { copyResponse };","import _createForOfIteratorHelper from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper\";\nimport _regeneratorRuntime from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/regenerator\";\nimport _asyncToGenerator from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/asyncToGenerator\";\nimport _classCallCheck from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass\";\n\n/*\n  Copyright 2018 Google LLC\n\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport { DBWrapper } from 'workbox-core/_private/DBWrapper.js';\nimport { deleteDatabase } from 'workbox-core/_private/deleteDatabase.js';\nimport '../_version.js';\nvar DB_NAME = 'workbox-expiration';\nvar OBJECT_STORE_NAME = 'cache-entries';\n\nvar normalizeURL = function normalizeURL(unNormalizedUrl) {\n  var url = new URL(unNormalizedUrl, location.href);\n  url.hash = '';\n  return url.href;\n};\n/**\n * Returns the timestamp model.\n *\n * @private\n */\n\n\nvar CacheTimestampsModel = /*#__PURE__*/function () {\n  /**\n   *\n   * @param {string} cacheName\n   *\n   * @private\n   */\n  function CacheTimestampsModel(cacheName) {\n    var _this = this;\n\n    _classCallCheck(this, CacheTimestampsModel);\n\n    this._cacheName = cacheName;\n    this._db = new DBWrapper(DB_NAME, 1, {\n      onupgradeneeded: function onupgradeneeded(event) {\n        return _this._handleUpgrade(event);\n      }\n    });\n  }\n  /**\n   * Should perform an upgrade of indexedDB.\n   *\n   * @param {Event} event\n   *\n   * @private\n   */\n\n\n  _createClass(CacheTimestampsModel, [{\n    key: \"_handleUpgrade\",\n    value: function _handleUpgrade(event) {\n      var db = event.target.result; // TODO(philipwalton): EdgeHTML doesn't support arrays as a keyPath, so we\n      // have to use the `id` keyPath here and create our own values (a\n      // concatenation of `url + cacheName`) instead of simply using\n      // `keyPath: ['url', 'cacheName']`, which is supported in other browsers.\n\n      var objStore = db.createObjectStore(OBJECT_STORE_NAME, {\n        keyPath: 'id'\n      }); // TODO(philipwalton): once we don't have to support EdgeHTML, we can\n      // create a single index with the keyPath `['cacheName', 'timestamp']`\n      // instead of doing both these indexes.\n\n      objStore.createIndex('cacheName', 'cacheName', {\n        unique: false\n      });\n      objStore.createIndex('timestamp', 'timestamp', {\n        unique: false\n      }); // Previous versions of `workbox-expiration` used `this._cacheName`\n      // as the IDBDatabase name.\n\n      deleteDatabase(this._cacheName);\n    }\n    /**\n     * @param {string} url\n     * @param {number} timestamp\n     *\n     * @private\n     */\n\n  }, {\n    key: \"setTimestamp\",\n    value: function () {\n      var _setTimestamp = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(url, timestamp) {\n        var entry;\n        return _regeneratorRuntime.wrap(function _callee$(_context) {\n          while (1) {\n            switch (_context.prev = _context.next) {\n              case 0:\n                url = normalizeURL(url);\n                entry = {\n                  url: url,\n                  timestamp: timestamp,\n                  cacheName: this._cacheName,\n                  // Creating an ID from the URL and cache name won't be necessary once\n                  // Edge switches to Chromium and all browsers we support work with\n                  // array keyPaths.\n                  id: this._getId(url)\n                };\n                _context.next = 4;\n                return this._db.put(OBJECT_STORE_NAME, entry);\n\n              case 4:\n              case \"end\":\n                return _context.stop();\n            }\n          }\n        }, _callee, this);\n      }));\n\n      function setTimestamp(_x, _x2) {\n        return _setTimestamp.apply(this, arguments);\n      }\n\n      return setTimestamp;\n    }()\n    /**\n     * Returns the timestamp stored for a given URL.\n     *\n     * @param {string} url\n     * @return {number}\n     *\n     * @private\n     */\n\n  }, {\n    key: \"getTimestamp\",\n    value: function () {\n      var _getTimestamp = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(url) {\n        var entry;\n        return _regeneratorRuntime.wrap(function _callee2$(_context2) {\n          while (1) {\n            switch (_context2.prev = _context2.next) {\n              case 0:\n                _context2.next = 2;\n                return this._db.get(OBJECT_STORE_NAME, this._getId(url));\n\n              case 2:\n                entry = _context2.sent;\n                return _context2.abrupt(\"return\", entry.timestamp);\n\n              case 4:\n              case \"end\":\n                return _context2.stop();\n            }\n          }\n        }, _callee2, this);\n      }));\n\n      function getTimestamp(_x3) {\n        return _getTimestamp.apply(this, arguments);\n      }\n\n      return getTimestamp;\n    }()\n    /**\n     * Iterates through all the entries in the object store (from newest to\n     * oldest) and removes entries once either `maxCount` is reached or the\n     * entry's timestamp is less than `minTimestamp`.\n     *\n     * @param {number} minTimestamp\n     * @param {number} maxCount\n     * @return {Array<string>}\n     *\n     * @private\n     */\n\n  }, {\n    key: \"expireEntries\",\n    value: function () {\n      var _expireEntries = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3(minTimestamp, maxCount) {\n        var _this2 = this;\n\n        var entriesToDelete, urlsDeleted, _iterator, _step, entry;\n\n        return _regeneratorRuntime.wrap(function _callee3$(_context3) {\n          while (1) {\n            switch (_context3.prev = _context3.next) {\n              case 0:\n                _context3.next = 2;\n                return this._db.transaction(OBJECT_STORE_NAME, 'readwrite', function (txn, done) {\n                  var store = txn.objectStore(OBJECT_STORE_NAME);\n                  var request = store.index('timestamp').openCursor(null, 'prev');\n                  var entriesToDelete = [];\n                  var entriesNotDeletedCount = 0;\n\n                  request.onsuccess = function () {\n                    var cursor = request.result;\n\n                    if (cursor) {\n                      var result = cursor.value; // TODO(philipwalton): once we can use a multi-key index, we\n                      // won't have to check `cacheName` here.\n\n                      if (result.cacheName === _this2._cacheName) {\n                        // Delete an entry if it's older than the max age or\n                        // if we already have the max number allowed.\n                        if (minTimestamp && result.timestamp < minTimestamp || maxCount && entriesNotDeletedCount >= maxCount) {\n                          // TODO(philipwalton): we should be able to delete the\n                          // entry right here, but doing so causes an iteration\n                          // bug in Safari stable (fixed in TP). Instead we can\n                          // store the keys of the entries to delete, and then\n                          // delete the separate transactions.\n                          // https://github.com/GoogleChrome/workbox/issues/1978\n                          // cursor.delete();\n                          // We only need to return the URL, not the whole entry.\n                          entriesToDelete.push(cursor.value);\n                        } else {\n                          entriesNotDeletedCount++;\n                        }\n                      }\n\n                      cursor.continue();\n                    } else {\n                      done(entriesToDelete);\n                    }\n                  };\n                });\n\n              case 2:\n                entriesToDelete = _context3.sent;\n                // TODO(philipwalton): once the Safari bug in the following issue is fixed,\n                // we should be able to remove this loop and do the entry deletion in the\n                // cursor loop above:\n                // https://github.com/GoogleChrome/workbox/issues/1978\n                urlsDeleted = [];\n                _iterator = _createForOfIteratorHelper(entriesToDelete);\n                _context3.prev = 5;\n\n                _iterator.s();\n\n              case 7:\n                if ((_step = _iterator.n()).done) {\n                  _context3.next = 14;\n                  break;\n                }\n\n                entry = _step.value;\n                _context3.next = 11;\n                return this._db.delete(OBJECT_STORE_NAME, entry.id);\n\n              case 11:\n                urlsDeleted.push(entry.url);\n\n              case 12:\n                _context3.next = 7;\n                break;\n\n              case 14:\n                _context3.next = 19;\n                break;\n\n              case 16:\n                _context3.prev = 16;\n                _context3.t0 = _context3[\"catch\"](5);\n\n                _iterator.e(_context3.t0);\n\n              case 19:\n                _context3.prev = 19;\n\n                _iterator.f();\n\n                return _context3.finish(19);\n\n              case 22:\n                return _context3.abrupt(\"return\", urlsDeleted);\n\n              case 23:\n              case \"end\":\n                return _context3.stop();\n            }\n          }\n        }, _callee3, this, [[5, 16, 19, 22]]);\n      }));\n\n      function expireEntries(_x4, _x5) {\n        return _expireEntries.apply(this, arguments);\n      }\n\n      return expireEntries;\n    }()\n    /**\n     * Takes a URL and returns an ID that will be unique in the object store.\n     *\n     * @param {string} url\n     * @return {string}\n     *\n     * @private\n     */\n\n  }, {\n    key: \"_getId\",\n    value: function _getId(url) {\n      // Creating an ID from the URL and cache name won't be necessary once\n      // Edge switches to Chromium and all browsers we support work with\n      // array keyPaths.\n      return this._cacheName + '|' + normalizeURL(url);\n    }\n  }]);\n\n  return CacheTimestampsModel;\n}();\n\nexport { CacheTimestampsModel };","import _regeneratorRuntime from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/regenerator\";\nimport _createForOfIteratorHelper from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper\";\nimport _asyncToGenerator from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/asyncToGenerator\";\nimport _classCallCheck from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass\";\n\n/*\n  Copyright 2018 Google LLC\n\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport { dontWaitFor } from 'workbox-core/_private/dontWaitFor.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport { CacheTimestampsModel } from './models/CacheTimestampsModel.js';\nimport './_version.js';\n/**\n * The `CacheExpiration` class allows you define an expiration and / or\n * limit on the number of responses stored in a\n * [`Cache`](https://developer.mozilla.org/en-US/docs/Web/API/Cache).\n *\n * @memberof module:workbox-expiration\n */\n\nvar CacheExpiration = /*#__PURE__*/function () {\n  /**\n   * To construct a new CacheExpiration instance you must provide at least\n   * one of the `config` properties.\n   *\n   * @param {string} cacheName Name of the cache to apply restrictions to.\n   * @param {Object} config\n   * @param {number} [config.maxEntries] The maximum number of entries to cache.\n   * Entries used the least will be removed as the maximum is reached.\n   * @param {number} [config.maxAgeSeconds] The maximum age of an entry before\n   * it's treated as stale and removed.\n   * @param {Object} [config.matchOptions] The [`CacheQueryOptions`](https://developer.mozilla.org/en-US/docs/Web/API/Cache/delete#Parameters)\n   * that will be used when calling `delete()` on the cache.\n   */\n  function CacheExpiration(cacheName) {\n    var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n    _classCallCheck(this, CacheExpiration);\n\n    this._isRunning = false;\n    this._rerunRequested = false;\n\n    if (process.env.NODE_ENV !== 'production') {\n      assert.isType(cacheName, 'string', {\n        moduleName: 'workbox-expiration',\n        className: 'CacheExpiration',\n        funcName: 'constructor',\n        paramName: 'cacheName'\n      });\n\n      if (!(config.maxEntries || config.maxAgeSeconds)) {\n        throw new WorkboxError('max-entries-or-age-required', {\n          moduleName: 'workbox-expiration',\n          className: 'CacheExpiration',\n          funcName: 'constructor'\n        });\n      }\n\n      if (config.maxEntries) {\n        assert.isType(config.maxEntries, 'number', {\n          moduleName: 'workbox-expiration',\n          className: 'CacheExpiration',\n          funcName: 'constructor',\n          paramName: 'config.maxEntries'\n        });\n      }\n\n      if (config.maxAgeSeconds) {\n        assert.isType(config.maxAgeSeconds, 'number', {\n          moduleName: 'workbox-expiration',\n          className: 'CacheExpiration',\n          funcName: 'constructor',\n          paramName: 'config.maxAgeSeconds'\n        });\n      }\n    }\n\n    this._maxEntries = config.maxEntries;\n    this._maxAgeSeconds = config.maxAgeSeconds;\n    this._matchOptions = config.matchOptions;\n    this._cacheName = cacheName;\n    this._timestampModel = new CacheTimestampsModel(cacheName);\n  }\n  /**\n   * Expires entries for the given cache and given criteria.\n   */\n\n\n  _createClass(CacheExpiration, [{\n    key: \"expireEntries\",\n    value: function () {\n      var _expireEntries = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {\n        var minTimestamp, urlsExpired, cache, _iterator, _step, url;\n\n        return _regeneratorRuntime.wrap(function _callee$(_context) {\n          while (1) {\n            switch (_context.prev = _context.next) {\n              case 0:\n                if (!this._isRunning) {\n                  _context.next = 3;\n                  break;\n                }\n\n                this._rerunRequested = true;\n                return _context.abrupt(\"return\");\n\n              case 3:\n                this._isRunning = true;\n                minTimestamp = this._maxAgeSeconds ? Date.now() - this._maxAgeSeconds * 1000 : 0;\n                _context.next = 7;\n                return this._timestampModel.expireEntries(minTimestamp, this._maxEntries);\n\n              case 7:\n                urlsExpired = _context.sent;\n                _context.next = 10;\n                return self.caches.open(this._cacheName);\n\n              case 10:\n                cache = _context.sent;\n                _iterator = _createForOfIteratorHelper(urlsExpired);\n                _context.prev = 12;\n\n                _iterator.s();\n\n              case 14:\n                if ((_step = _iterator.n()).done) {\n                  _context.next = 20;\n                  break;\n                }\n\n                url = _step.value;\n                _context.next = 18;\n                return cache.delete(url, this._matchOptions);\n\n              case 18:\n                _context.next = 14;\n                break;\n\n              case 20:\n                _context.next = 25;\n                break;\n\n              case 22:\n                _context.prev = 22;\n                _context.t0 = _context[\"catch\"](12);\n\n                _iterator.e(_context.t0);\n\n              case 25:\n                _context.prev = 25;\n\n                _iterator.f();\n\n                return _context.finish(25);\n\n              case 28:\n                if (process.env.NODE_ENV !== 'production') {\n                  if (urlsExpired.length > 0) {\n                    logger.groupCollapsed(\"Expired \".concat(urlsExpired.length, \" \") + \"\".concat(urlsExpired.length === 1 ? 'entry' : 'entries', \" and removed \") + \"\".concat(urlsExpired.length === 1 ? 'it' : 'them', \" from the \") + \"'\".concat(this._cacheName, \"' cache.\"));\n                    logger.log(\"Expired the following \".concat(urlsExpired.length === 1 ? 'URL' : 'URLs', \":\"));\n                    urlsExpired.forEach(function (url) {\n                      return logger.log(\"    \".concat(url));\n                    });\n                    logger.groupEnd();\n                  } else {\n                    logger.debug(\"Cache expiration ran and found no entries to remove.\");\n                  }\n                }\n\n                this._isRunning = false;\n\n                if (this._rerunRequested) {\n                  this._rerunRequested = false;\n                  dontWaitFor(this.expireEntries());\n                }\n\n              case 31:\n              case \"end\":\n                return _context.stop();\n            }\n          }\n        }, _callee, this, [[12, 22, 25, 28]]);\n      }));\n\n      function expireEntries() {\n        return _expireEntries.apply(this, arguments);\n      }\n\n      return expireEntries;\n    }()\n    /**\n     * Update the timestamp for the given URL. This ensures the when\n     * removing entries based on maximum entries, most recently used\n     * is accurate or when expiring, the timestamp is up-to-date.\n     *\n     * @param {string} url\n     */\n\n  }, {\n    key: \"updateTimestamp\",\n    value: function () {\n      var _updateTimestamp = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(url) {\n        return _regeneratorRuntime.wrap(function _callee2$(_context2) {\n          while (1) {\n            switch (_context2.prev = _context2.next) {\n              case 0:\n                if (process.env.NODE_ENV !== 'production') {\n                  assert.isType(url, 'string', {\n                    moduleName: 'workbox-expiration',\n                    className: 'CacheExpiration',\n                    funcName: 'updateTimestamp',\n                    paramName: 'url'\n                  });\n                }\n\n                _context2.next = 3;\n                return this._timestampModel.setTimestamp(url, Date.now());\n\n              case 3:\n              case \"end\":\n                return _context2.stop();\n            }\n          }\n        }, _callee2, this);\n      }));\n\n      function updateTimestamp(_x) {\n        return _updateTimestamp.apply(this, arguments);\n      }\n\n      return updateTimestamp;\n    }()\n    /**\n     * Can be used to check if a URL has expired or not before it's used.\n     *\n     * This requires a look up from IndexedDB, so can be slow.\n     *\n     * Note: This method will not remove the cached entry, call\n     * `expireEntries()` to remove indexedDB and Cache entries.\n     *\n     * @param {string} url\n     * @return {boolean}\n     */\n\n  }, {\n    key: \"isURLExpired\",\n    value: function () {\n      var _isURLExpired = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3(url) {\n        var timestamp, expireOlderThan;\n        return _regeneratorRuntime.wrap(function _callee3$(_context3) {\n          while (1) {\n            switch (_context3.prev = _context3.next) {\n              case 0:\n                if (this._maxAgeSeconds) {\n                  _context3.next = 6;\n                  break;\n                }\n\n                if (!(process.env.NODE_ENV !== 'production')) {\n                  _context3.next = 3;\n                  break;\n                }\n\n                throw new WorkboxError(\"expired-test-without-max-age\", {\n                  methodName: 'isURLExpired',\n                  paramName: 'maxAgeSeconds'\n                });\n\n              case 3:\n                return _context3.abrupt(\"return\", false);\n\n              case 6:\n                _context3.next = 8;\n                return this._timestampModel.getTimestamp(url);\n\n              case 8:\n                timestamp = _context3.sent;\n                expireOlderThan = Date.now() - this._maxAgeSeconds * 1000;\n                return _context3.abrupt(\"return\", timestamp < expireOlderThan);\n\n              case 11:\n              case \"end\":\n                return _context3.stop();\n            }\n          }\n        }, _callee3, this);\n      }));\n\n      function isURLExpired(_x2) {\n        return _isURLExpired.apply(this, arguments);\n      }\n\n      return isURLExpired;\n    }()\n    /**\n     * Removes the IndexedDB object store used to keep track of cache expiration\n     * metadata.\n     */\n\n  }, {\n    key: \"delete\",\n    value: function () {\n      var _delete2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee4() {\n        return _regeneratorRuntime.wrap(function _callee4$(_context4) {\n          while (1) {\n            switch (_context4.prev = _context4.next) {\n              case 0:\n                // Make sure we don't attempt another rerun if we're called in the middle of\n                // a cache expiration.\n                this._rerunRequested = false;\n                _context4.next = 3;\n                return this._timestampModel.expireEntries(Infinity);\n\n              case 3:\n              case \"end\":\n                return _context4.stop();\n            }\n          }\n        }, _callee4, this);\n      }));\n\n      function _delete() {\n        return _delete2.apply(this, arguments);\n      }\n\n      return _delete;\n    }()\n  }]);\n\n  return CacheExpiration;\n}();\n\nexport { CacheExpiration };","import _slicedToArray from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray\";\nimport _createForOfIteratorHelper from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper\";\nimport _regeneratorRuntime from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/regenerator\";\nimport _asyncToGenerator from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/asyncToGenerator\";\nimport _classCallCheck from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass\";\n\n/*\n  Copyright 2018 Google LLC\n\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport { cacheNames } from 'workbox-core/_private/cacheNames.js';\nimport { dontWaitFor } from 'workbox-core/_private/dontWaitFor.js';\nimport { getFriendlyURL } from 'workbox-core/_private/getFriendlyURL.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { registerQuotaErrorCallback } from 'workbox-core/registerQuotaErrorCallback.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport { CacheExpiration } from './CacheExpiration.js';\nimport './_version.js';\n/**\n * This plugin can be used in a `workbox-strategy` to regularly enforce a\n * limit on the age and / or the number of cached requests.\n *\n * It can only be used with `workbox-strategy` instances that have a\n * [custom `cacheName` property set](/web/tools/workbox/guides/configure-workbox#custom_cache_names_in_strategies).\n * In other words, it can't be used to expire entries in strategy that uses the\n * default runtime cache name.\n *\n * Whenever a cached request is used or updated, this plugin will look\n * at the associated cache and remove any old or extra requests.\n *\n * When using `maxAgeSeconds`, requests may be used *once* after expiring\n * because the expiration clean up will not have occurred until *after* the\n * cached request has been used. If the request has a \"Date\" header, then\n * a light weight expiration check is performed and the request will not be\n * used immediately.\n *\n * When using `maxEntries`, the entry least-recently requested will be removed\n * from the cache first.\n *\n * @memberof module:workbox-expiration\n */\n\nvar ExpirationPlugin = /*#__PURE__*/function () {\n  /**\n   * @param {Object} config\n   * @param {number} [config.maxEntries] The maximum number of entries to cache.\n   * Entries used the least will be removed as the maximum is reached.\n   * @param {number} [config.maxAgeSeconds] The maximum age of an entry before\n   * it's treated as stale and removed.\n   * @param {Object} [config.matchOptions] The [`CacheQueryOptions`](https://developer.mozilla.org/en-US/docs/Web/API/Cache/delete#Parameters)\n   * that will be used when calling `delete()` on the cache.\n   * @param {boolean} [config.purgeOnQuotaError] Whether to opt this cache in to\n   * automatic deletion if the available storage quota has been exceeded.\n   */\n  function ExpirationPlugin() {\n    var _this = this;\n\n    var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n    _classCallCheck(this, ExpirationPlugin);\n\n    /**\n     * A \"lifecycle\" callback that will be triggered automatically by the\n     * `workbox-strategies` handlers when a `Response` is about to be returned\n     * from a [Cache](https://developer.mozilla.org/en-US/docs/Web/API/Cache) to\n     * the handler. It allows the `Response` to be inspected for freshness and\n     * prevents it from being used if the `Response`'s `Date` header value is\n     * older than the configured `maxAgeSeconds`.\n     *\n     * @param {Object} options\n     * @param {string} options.cacheName Name of the cache the response is in.\n     * @param {Response} options.cachedResponse The `Response` object that's been\n     *     read from a cache and whose freshness should be checked.\n     * @return {Response} Either the `cachedResponse`, if it's\n     *     fresh, or `null` if the `Response` is older than `maxAgeSeconds`.\n     *\n     * @private\n     */\n    this.cachedResponseWillBeUsed = /*#__PURE__*/function () {\n      var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(_ref) {\n        var event, request, cacheName, cachedResponse, isFresh, cacheExpiration, updateTimestampDone;\n        return _regeneratorRuntime.wrap(function _callee$(_context) {\n          while (1) {\n            switch (_context.prev = _context.next) {\n              case 0:\n                event = _ref.event, request = _ref.request, cacheName = _ref.cacheName, cachedResponse = _ref.cachedResponse;\n\n                if (cachedResponse) {\n                  _context.next = 3;\n                  break;\n                }\n\n                return _context.abrupt(\"return\", null);\n\n              case 3:\n                isFresh = _this._isResponseDateFresh(cachedResponse); // Expire entries to ensure that even if the expiration date has\n                // expired, it'll only be used once.\n\n                cacheExpiration = _this._getCacheExpiration(cacheName);\n                dontWaitFor(cacheExpiration.expireEntries()); // Update the metadata for the request URL to the current timestamp,\n                // but don't `await` it as we don't want to block the response.\n\n                updateTimestampDone = cacheExpiration.updateTimestamp(request.url);\n\n                if (event) {\n                  try {\n                    event.waitUntil(updateTimestampDone);\n                  } catch (error) {\n                    if (process.env.NODE_ENV !== 'production') {\n                      // The event may not be a fetch event; only log the URL if it is.\n                      if ('request' in event) {\n                        logger.warn(\"Unable to ensure service worker stays alive when \" + \"updating cache entry for \" + \"'\".concat(getFriendlyURL(event.request.url), \"'.\"));\n                      }\n                    }\n                  }\n                }\n\n                return _context.abrupt(\"return\", isFresh ? cachedResponse : null);\n\n              case 9:\n              case \"end\":\n                return _context.stop();\n            }\n          }\n        }, _callee);\n      }));\n\n      return function (_x) {\n        return _ref2.apply(this, arguments);\n      };\n    }();\n    /**\n     * A \"lifecycle\" callback that will be triggered automatically by the\n     * `workbox-strategies` handlers when an entry is added to a cache.\n     *\n     * @param {Object} options\n     * @param {string} options.cacheName Name of the cache that was updated.\n     * @param {string} options.request The Request for the cached entry.\n     *\n     * @private\n     */\n\n\n    this.cacheDidUpdate = /*#__PURE__*/function () {\n      var _ref4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(_ref3) {\n        var cacheName, request, cacheExpiration;\n        return _regeneratorRuntime.wrap(function _callee2$(_context2) {\n          while (1) {\n            switch (_context2.prev = _context2.next) {\n              case 0:\n                cacheName = _ref3.cacheName, request = _ref3.request;\n\n                if (process.env.NODE_ENV !== 'production') {\n                  assert.isType(cacheName, 'string', {\n                    moduleName: 'workbox-expiration',\n                    className: 'Plugin',\n                    funcName: 'cacheDidUpdate',\n                    paramName: 'cacheName'\n                  });\n                  assert.isInstance(request, Request, {\n                    moduleName: 'workbox-expiration',\n                    className: 'Plugin',\n                    funcName: 'cacheDidUpdate',\n                    paramName: 'request'\n                  });\n                }\n\n                cacheExpiration = _this._getCacheExpiration(cacheName);\n                _context2.next = 5;\n                return cacheExpiration.updateTimestamp(request.url);\n\n              case 5:\n                _context2.next = 7;\n                return cacheExpiration.expireEntries();\n\n              case 7:\n              case \"end\":\n                return _context2.stop();\n            }\n          }\n        }, _callee2);\n      }));\n\n      return function (_x2) {\n        return _ref4.apply(this, arguments);\n      };\n    }();\n\n    if (process.env.NODE_ENV !== 'production') {\n      if (!(config.maxEntries || config.maxAgeSeconds)) {\n        throw new WorkboxError('max-entries-or-age-required', {\n          moduleName: 'workbox-expiration',\n          className: 'Plugin',\n          funcName: 'constructor'\n        });\n      }\n\n      if (config.maxEntries) {\n        assert.isType(config.maxEntries, 'number', {\n          moduleName: 'workbox-expiration',\n          className: 'Plugin',\n          funcName: 'constructor',\n          paramName: 'config.maxEntries'\n        });\n      }\n\n      if (config.maxAgeSeconds) {\n        assert.isType(config.maxAgeSeconds, 'number', {\n          moduleName: 'workbox-expiration',\n          className: 'Plugin',\n          funcName: 'constructor',\n          paramName: 'config.maxAgeSeconds'\n        });\n      }\n    }\n\n    this._config = config;\n    this._maxAgeSeconds = config.maxAgeSeconds;\n    this._cacheExpirations = new Map();\n\n    if (config.purgeOnQuotaError) {\n      registerQuotaErrorCallback(function () {\n        return _this.deleteCacheAndMetadata();\n      });\n    }\n  }\n  /**\n   * A simple helper method to return a CacheExpiration instance for a given\n   * cache name.\n   *\n   * @param {string} cacheName\n   * @return {CacheExpiration}\n   *\n   * @private\n   */\n\n\n  _createClass(ExpirationPlugin, [{\n    key: \"_getCacheExpiration\",\n    value: function _getCacheExpiration(cacheName) {\n      if (cacheName === cacheNames.getRuntimeName()) {\n        throw new WorkboxError('expire-custom-caches-only');\n      }\n\n      var cacheExpiration = this._cacheExpirations.get(cacheName);\n\n      if (!cacheExpiration) {\n        cacheExpiration = new CacheExpiration(cacheName, this._config);\n\n        this._cacheExpirations.set(cacheName, cacheExpiration);\n      }\n\n      return cacheExpiration;\n    }\n    /**\n     * @param {Response} cachedResponse\n     * @return {boolean}\n     *\n     * @private\n     */\n\n  }, {\n    key: \"_isResponseDateFresh\",\n    value: function _isResponseDateFresh(cachedResponse) {\n      if (!this._maxAgeSeconds) {\n        // We aren't expiring by age, so return true, it's fresh\n        return true;\n      } // Check if the 'date' header will suffice a quick expiration check.\n      // See https://github.com/GoogleChromeLabs/sw-toolbox/issues/164 for\n      // discussion.\n\n\n      var dateHeaderTimestamp = this._getDateHeaderTimestamp(cachedResponse);\n\n      if (dateHeaderTimestamp === null) {\n        // Unable to parse date, so assume it's fresh.\n        return true;\n      } // If we have a valid headerTime, then our response is fresh iff the\n      // headerTime plus maxAgeSeconds is greater than the current time.\n\n\n      var now = Date.now();\n      return dateHeaderTimestamp >= now - this._maxAgeSeconds * 1000;\n    }\n    /**\n     * This method will extract the data header and parse it into a useful\n     * value.\n     *\n     * @param {Response} cachedResponse\n     * @return {number|null}\n     *\n     * @private\n     */\n\n  }, {\n    key: \"_getDateHeaderTimestamp\",\n    value: function _getDateHeaderTimestamp(cachedResponse) {\n      if (!cachedResponse.headers.has('date')) {\n        return null;\n      }\n\n      var dateHeader = cachedResponse.headers.get('date');\n      var parsedDate = new Date(dateHeader);\n      var headerTime = parsedDate.getTime(); // If the Date header was invalid for some reason, parsedDate.getTime()\n      // will return NaN.\n\n      if (isNaN(headerTime)) {\n        return null;\n      }\n\n      return headerTime;\n    }\n    /**\n     * This is a helper method that performs two operations:\n     *\n     * - Deletes *all* the underlying Cache instances associated with this plugin\n     * instance, by calling caches.delete() on your behalf.\n     * - Deletes the metadata from IndexedDB used to keep track of expiration\n     * details for each Cache instance.\n     *\n     * When using cache expiration, calling this method is preferable to calling\n     * `caches.delete()` directly, since this will ensure that the IndexedDB\n     * metadata is also cleanly removed and open IndexedDB instances are deleted.\n     *\n     * Note that if you're *not* using cache expiration for a given cache, calling\n     * `caches.delete()` and passing in the cache's name should be sufficient.\n     * There is no Workbox-specific method needed for cleanup in that case.\n     */\n\n  }, {\n    key: \"deleteCacheAndMetadata\",\n    value: function () {\n      var _deleteCacheAndMetadata = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3() {\n        var _iterator, _step, _step$value, cacheName, cacheExpiration;\n\n        return _regeneratorRuntime.wrap(function _callee3$(_context3) {\n          while (1) {\n            switch (_context3.prev = _context3.next) {\n              case 0:\n                // Do this one at a time instead of all at once via `Promise.all()` to\n                // reduce the chance of inconsistency if a promise rejects.\n                _iterator = _createForOfIteratorHelper(this._cacheExpirations);\n                _context3.prev = 1;\n\n                _iterator.s();\n\n              case 3:\n                if ((_step = _iterator.n()).done) {\n                  _context3.next = 11;\n                  break;\n                }\n\n                _step$value = _slicedToArray(_step.value, 2), cacheName = _step$value[0], cacheExpiration = _step$value[1];\n                _context3.next = 7;\n                return self.caches.delete(cacheName);\n\n              case 7:\n                _context3.next = 9;\n                return cacheExpiration.delete();\n\n              case 9:\n                _context3.next = 3;\n                break;\n\n              case 11:\n                _context3.next = 16;\n                break;\n\n              case 13:\n                _context3.prev = 13;\n                _context3.t0 = _context3[\"catch\"](1);\n\n                _iterator.e(_context3.t0);\n\n              case 16:\n                _context3.prev = 16;\n\n                _iterator.f();\n\n                return _context3.finish(16);\n\n              case 19:\n                // Reset this._cacheExpirations to its initial state.\n                this._cacheExpirations = new Map();\n\n              case 20:\n              case \"end\":\n                return _context3.stop();\n            }\n          }\n        }, _callee3, this, [[1, 13, 16, 19]]);\n      }));\n\n      function deleteCacheAndMetadata() {\n        return _deleteCacheAndMetadata.apply(this, arguments);\n      }\n\n      return deleteCacheAndMetadata;\n    }()\n  }]);\n\n  return ExpirationPlugin;\n}();\n\nexport { ExpirationPlugin };","/*\n  Copyright 2018 Google LLC\n\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport '../_version.js'; // Name of the search parameter used to store revision info.\n\nvar REVISION_SEARCH_PARAM = '__WB_REVISION__';\n/**\n * Converts a manifest entry into a versioned URL suitable for precaching.\n *\n * @param {Object|string} entry\n * @return {string} A URL with versioning info.\n *\n * @private\n * @memberof module:workbox-precaching\n */\n\nexport function createCacheKey(entry) {\n  if (!entry) {\n    throw new WorkboxError('add-to-cache-list-unexpected-type', {\n      entry: entry\n    });\n  } // If a precache manifest entry is a string, it's assumed to be a versioned\n  // URL, like '/app.abcd1234.js'. Return as-is.\n\n\n  if (typeof entry === 'string') {\n    var urlObject = new URL(entry, location.href);\n    return {\n      cacheKey: urlObject.href,\n      url: urlObject.href\n    };\n  }\n\n  var revision = entry.revision,\n      url = entry.url;\n\n  if (!url) {\n    throw new WorkboxError('add-to-cache-list-unexpected-type', {\n      entry: entry\n    });\n  } // If there's just a URL and no revision, then it's also assumed to be a\n  // versioned URL.\n\n\n  if (!revision) {\n    var _urlObject = new URL(url, location.href);\n\n    return {\n      cacheKey: _urlObject.href,\n      url: _urlObject.href\n    };\n  } // Otherwise, construct a properly versioned URL using the custom Workbox\n  // search parameter along with the revision info.\n\n\n  var cacheKeyURL = new URL(url, location.href);\n  var originalURL = new URL(url, location.href);\n  cacheKeyURL.searchParams.set(REVISION_SEARCH_PARAM, revision);\n  return {\n    cacheKey: cacheKeyURL.href,\n    url: originalURL.href\n  };\n}","import _regeneratorRuntime from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/regenerator\";\nimport _asyncToGenerator from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/asyncToGenerator\";\nimport _classCallCheck from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck\";\n\n/*\n  Copyright 2020 Google LLC\n\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n/**\n * A plugin, designed to be used with PrecacheController, to determine the\n * of assets that were updated (or not updated) during the install event.\n *\n * @private\n */\n\nvar PrecacheInstallReportPlugin = function PrecacheInstallReportPlugin() {\n  var _this = this;\n\n  _classCallCheck(this, PrecacheInstallReportPlugin);\n\n  this.updatedURLs = [];\n  this.notUpdatedURLs = [];\n\n  this.handlerWillStart = /*#__PURE__*/function () {\n    var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(_ref) {\n      var request, state;\n      return _regeneratorRuntime.wrap(function _callee$(_context) {\n        while (1) {\n          switch (_context.prev = _context.next) {\n            case 0:\n              request = _ref.request, state = _ref.state;\n\n              // TODO: `state` should never be undefined...\n              if (state) {\n                state.originalRequest = request;\n              }\n\n            case 2:\n            case \"end\":\n              return _context.stop();\n          }\n        }\n      }, _callee);\n    }));\n\n    return function (_x) {\n      return _ref2.apply(this, arguments);\n    };\n  }();\n\n  this.cachedResponseWillBeUsed = /*#__PURE__*/function () {\n    var _ref4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(_ref3) {\n      var event, state, cachedResponse, url;\n      return _regeneratorRuntime.wrap(function _callee2$(_context2) {\n        while (1) {\n          switch (_context2.prev = _context2.next) {\n            case 0:\n              event = _ref3.event, state = _ref3.state, cachedResponse = _ref3.cachedResponse;\n\n              if (event.type === 'install') {\n                // TODO: `state` should never be undefined...\n                url = state.originalRequest.url;\n\n                if (cachedResponse) {\n                  _this.notUpdatedURLs.push(url);\n                } else {\n                  _this.updatedURLs.push(url);\n                }\n              }\n\n              return _context2.abrupt(\"return\", cachedResponse);\n\n            case 3:\n            case \"end\":\n              return _context2.stop();\n          }\n        }\n      }, _callee2);\n    }));\n\n    return function (_x2) {\n      return _ref4.apply(this, arguments);\n    };\n  }();\n};\n\nexport { PrecacheInstallReportPlugin };","import _regeneratorRuntime from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/regenerator\";\nimport _asyncToGenerator from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/asyncToGenerator\";\nimport _classCallCheck from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck\";\n\n/*\n  Copyright 2020 Google LLC\n\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n/**\n * A plugin, designed to be used with PrecacheController, to translate URLs into\n * the corresponding cache key, based on the current revision info.\n *\n * @private\n */\n\nvar PrecacheCacheKeyPlugin = function PrecacheCacheKeyPlugin(_ref) {\n  var _this = this;\n\n  var precacheController = _ref.precacheController;\n\n  _classCallCheck(this, PrecacheCacheKeyPlugin);\n\n  this.cacheKeyWillBeUsed = /*#__PURE__*/function () {\n    var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(_ref2) {\n      var request, params, cacheKey;\n      return _regeneratorRuntime.wrap(function _callee$(_context) {\n        while (1) {\n          switch (_context.prev = _context.next) {\n            case 0:\n              request = _ref2.request, params = _ref2.params;\n              cacheKey = params && params.cacheKey || _this._precacheController.getCacheKeyForURL(request.url);\n              return _context.abrupt(\"return\", cacheKey ? new Request(cacheKey) : request);\n\n            case 3:\n            case \"end\":\n              return _context.stop();\n          }\n        }\n      }, _callee);\n    }));\n\n    return function (_x) {\n      return _ref3.apply(this, arguments);\n    };\n  }();\n\n  this._precacheController = precacheController;\n};\n\nexport { PrecacheCacheKeyPlugin };","import _objectSpread from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread2\";\nimport _regeneratorRuntime from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/regenerator\";\nimport _asyncToGenerator from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/asyncToGenerator\";\nimport _createForOfIteratorHelper from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper\";\nimport _toConsumableArray from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/toConsumableArray\";\nimport _classCallCheck from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass\";\n\n/*\n  Copyright 2020 Google LLC\n\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport { cacheMatchIgnoreParams } from 'workbox-core/_private/cacheMatchIgnoreParams.js';\nimport { Deferred } from 'workbox-core/_private/Deferred.js';\nimport { executeQuotaErrorCallbacks } from 'workbox-core/_private/executeQuotaErrorCallbacks.js';\nimport { getFriendlyURL } from 'workbox-core/_private/getFriendlyURL.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { timeout } from 'workbox-core/_private/timeout.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport './_version.js';\n\nfunction toRequest(input) {\n  return typeof input === 'string' ? new Request(input) : input;\n}\n/**\n * A class created every time a Strategy instance instance calls\n * [handle()]{@link module:workbox-strategies.Strategy~handle} or\n * [handleAll()]{@link module:workbox-strategies.Strategy~handleAll} that wraps all fetch and\n * cache actions around plugin callbacks and keeps track of when the strategy\n * is \"done\" (i.e. all added `event.waitUntil()` promises have resolved).\n *\n * @memberof module:workbox-strategies\n */\n\n\nvar StrategyHandler = /*#__PURE__*/function () {\n  /**\n   * Creates a new instance associated with the passed strategy and event\n   * that's handling the request.\n   *\n   * The constructor also initializes the state that will be passed to each of\n   * the plugins handling this request.\n   *\n   * @param {module:workbox-strategies.Strategy} strategy\n   * @param {Object} options\n   * @param {Request|string} options.request A request to run this strategy for.\n   * @param {ExtendableEvent} options.event The event associated with the\n   *     request.\n   * @param {URL} [options.url]\n   * @param {*} [options.params]\n   *     [match callback]{@link module:workbox-routing~matchCallback},\n   *     (if applicable).\n   */\n  function StrategyHandler(strategy, options) {\n    _classCallCheck(this, StrategyHandler);\n\n    this._cacheKeys = {};\n    /**\n     * The request the strategy is performing (passed to the strategy's\n     * `handle()` or `handleAll()` method).\n     * @name request\n     * @instance\n     * @type {Request}\n     * @memberof module:workbox-strategies.StrategyHandler\n     */\n\n    /**\n     * The event associated with this request.\n     * @name event\n     * @instance\n     * @type {ExtendableEvent}\n     * @memberof module:workbox-strategies.StrategyHandler\n     */\n\n    /**\n     * A `URL` instance of `request.url` (if passed to the strategy's\n     * `handle()` or `handleAll()` method).\n     * Note: the `url` param will be present if the strategy was invoked\n     * from a workbox `Route` object.\n     * @name url\n     * @instance\n     * @type {URL|undefined}\n     * @memberof module:workbox-strategies.StrategyHandler\n     */\n\n    /**\n     * A `param` value (if passed to the strategy's\n     * `handle()` or `handleAll()` method).\n     * Note: the `param` param will be present if the strategy was invoked\n     * from a workbox `Route` object and the\n     * [match callback]{@link module:workbox-routing~matchCallback} returned\n     * a truthy value (it will be that value).\n     * @name params\n     * @instance\n     * @type {*|undefined}\n     * @memberof module:workbox-strategies.StrategyHandler\n     */\n\n    if (process.env.NODE_ENV !== 'production') {\n      assert.isInstance(options.event, ExtendableEvent, {\n        moduleName: 'workbox-strategies',\n        className: 'StrategyHandler',\n        funcName: 'constructor',\n        paramName: 'options.event'\n      });\n    }\n\n    Object.assign(this, options);\n    this.event = options.event;\n    this._strategy = strategy;\n    this._handlerDeferred = new Deferred();\n    this._extendLifetimePromises = []; // Copy the plugins list (since it's mutable on the strategy),\n    // so any mutations don't affect this handler instance.\n\n    this._plugins = _toConsumableArray(strategy.plugins);\n    this._pluginStateMap = new Map();\n\n    var _iterator = _createForOfIteratorHelper(this._plugins),\n        _step;\n\n    try {\n      for (_iterator.s(); !(_step = _iterator.n()).done;) {\n        var plugin = _step.value;\n\n        this._pluginStateMap.set(plugin, {});\n      }\n    } catch (err) {\n      _iterator.e(err);\n    } finally {\n      _iterator.f();\n    }\n\n    this.event.waitUntil(this._handlerDeferred.promise);\n  }\n  /**\n   * Fetches a given request (and invokes any applicable plugin callback\n   * methods) using the `fetchOptions` (for non-navigation requests) and\n   * `plugins` defined on the `Strategy` object.\n   *\n   * The following plugin lifecycle methods are invoked when using this method:\n   * - `requestWillFetch()`\n   * - `fetchDidSucceed()`\n   * - `fetchDidFail()`\n   *\n   * @param {Request|string} input The URL or request to fetch.\n   * @return {Promise<Response>}\n   */\n\n\n  _createClass(StrategyHandler, [{\n    key: \"fetch\",\n    value: function (_fetch) {\n      function fetch(_x) {\n        return _fetch.apply(this, arguments);\n      }\n\n      fetch.toString = function () {\n        return _fetch.toString();\n      };\n\n      return fetch;\n    }( /*#__PURE__*/function () {\n      var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(input) {\n        var event, request, possiblePreloadResponse, originalRequest, _iterator2, _step2, cb, pluginFilteredRequest, fetchResponse, _iterator3, _step3, callback;\n\n        return _regeneratorRuntime.wrap(function _callee$(_context) {\n          while (1) {\n            switch (_context.prev = _context.next) {\n              case 0:\n                event = this.event;\n                request = toRequest(input);\n\n                if (!(request.mode === 'navigate' && event instanceof FetchEvent && event.preloadResponse)) {\n                  _context.next = 9;\n                  break;\n                }\n\n                _context.next = 5;\n                return event.preloadResponse;\n\n              case 5:\n                possiblePreloadResponse = _context.sent;\n\n                if (!possiblePreloadResponse) {\n                  _context.next = 9;\n                  break;\n                }\n\n                if (process.env.NODE_ENV !== 'production') {\n                  logger.log(\"Using a preloaded navigation response for \" + \"'\".concat(getFriendlyURL(request.url), \"'\"));\n                }\n\n                return _context.abrupt(\"return\", possiblePreloadResponse);\n\n              case 9:\n                // If there is a fetchDidFail plugin, we need to save a clone of the\n                // original request before it's either modified by a requestWillFetch\n                // plugin or before the original request's body is consumed via fetch().\n                originalRequest = this.hasCallback('fetchDidFail') ? request.clone() : null;\n                _context.prev = 10;\n                _iterator2 = _createForOfIteratorHelper(this.iterateCallbacks('requestWillFetch'));\n                _context.prev = 12;\n\n                _iterator2.s();\n\n              case 14:\n                if ((_step2 = _iterator2.n()).done) {\n                  _context.next = 21;\n                  break;\n                }\n\n                cb = _step2.value;\n                _context.next = 18;\n                return cb({\n                  request: request.clone(),\n                  event: event\n                });\n\n              case 18:\n                request = _context.sent;\n\n              case 19:\n                _context.next = 14;\n                break;\n\n              case 21:\n                _context.next = 26;\n                break;\n\n              case 23:\n                _context.prev = 23;\n                _context.t0 = _context[\"catch\"](12);\n\n                _iterator2.e(_context.t0);\n\n              case 26:\n                _context.prev = 26;\n\n                _iterator2.f();\n\n                return _context.finish(26);\n\n              case 29:\n                _context.next = 34;\n                break;\n\n              case 31:\n                _context.prev = 31;\n                _context.t1 = _context[\"catch\"](10);\n                throw new WorkboxError('plugin-error-request-will-fetch', {\n                  thrownError: _context.t1\n                });\n\n              case 34:\n                // The request can be altered by plugins with `requestWillFetch` making\n                // the original request (most likely from a `fetch` event) different\n                // from the Request we make. Pass both to `fetchDidFail` to aid debugging.\n                pluginFilteredRequest = request.clone();\n                _context.prev = 35;\n                _context.next = 38;\n                return fetch(request, request.mode === 'navigate' ? undefined : this._strategy.fetchOptions);\n\n              case 38:\n                fetchResponse = _context.sent;\n\n                if (process.env.NODE_ENV !== 'production') {\n                  logger.debug(\"Network request for \" + \"'\".concat(getFriendlyURL(request.url), \"' returned a response with \") + \"status '\".concat(fetchResponse.status, \"'.\"));\n                }\n\n                _iterator3 = _createForOfIteratorHelper(this.iterateCallbacks('fetchDidSucceed'));\n                _context.prev = 41;\n\n                _iterator3.s();\n\n              case 43:\n                if ((_step3 = _iterator3.n()).done) {\n                  _context.next = 50;\n                  break;\n                }\n\n                callback = _step3.value;\n                _context.next = 47;\n                return callback({\n                  event: event,\n                  request: pluginFilteredRequest,\n                  response: fetchResponse\n                });\n\n              case 47:\n                fetchResponse = _context.sent;\n\n              case 48:\n                _context.next = 43;\n                break;\n\n              case 50:\n                _context.next = 55;\n                break;\n\n              case 52:\n                _context.prev = 52;\n                _context.t2 = _context[\"catch\"](41);\n\n                _iterator3.e(_context.t2);\n\n              case 55:\n                _context.prev = 55;\n\n                _iterator3.f();\n\n                return _context.finish(55);\n\n              case 58:\n                return _context.abrupt(\"return\", fetchResponse);\n\n              case 61:\n                _context.prev = 61;\n                _context.t3 = _context[\"catch\"](35);\n\n                if (process.env.NODE_ENV !== 'production') {\n                  logger.log(\"Network request for \" + \"'\".concat(getFriendlyURL(request.url), \"' threw an error.\"), _context.t3);\n                } // `originalRequest` will only exist if a `fetchDidFail` callback\n                // is being used (see above).\n\n\n                if (!originalRequest) {\n                  _context.next = 67;\n                  break;\n                }\n\n                _context.next = 67;\n                return this.runCallbacks('fetchDidFail', {\n                  error: _context.t3,\n                  event: event,\n                  originalRequest: originalRequest.clone(),\n                  request: pluginFilteredRequest.clone()\n                });\n\n              case 67:\n                throw _context.t3;\n\n              case 68:\n              case \"end\":\n                return _context.stop();\n            }\n          }\n        }, _callee, this, [[10, 31], [12, 23, 26, 29], [35, 61], [41, 52, 55, 58]]);\n      }));\n\n      return function (_x2) {\n        return _ref.apply(this, arguments);\n      };\n    }())\n    /**\n     * Calls `this.fetch()` and (in the background) runs `this.cachePut()` on\n     * the response generated by `this.fetch()`.\n     *\n     * The call to `this.cachePut()` automatically invokes `this.waitUntil()`,\n     * so you do not have to manually call `waitUntil()` on the event.\n     *\n     * @param {Request|string} input The request or URL to fetch and cache.\n     * @return {Promise<Response>}\n     */\n\n  }, {\n    key: \"fetchAndCachePut\",\n    value: function () {\n      var _fetchAndCachePut = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(input) {\n        var response, responseClone;\n        return _regeneratorRuntime.wrap(function _callee2$(_context2) {\n          while (1) {\n            switch (_context2.prev = _context2.next) {\n              case 0:\n                _context2.next = 2;\n                return this.fetch(input);\n\n              case 2:\n                response = _context2.sent;\n                responseClone = response.clone();\n                this.waitUntil(this.cachePut(input, responseClone));\n                return _context2.abrupt(\"return\", response);\n\n              case 6:\n              case \"end\":\n                return _context2.stop();\n            }\n          }\n        }, _callee2, this);\n      }));\n\n      function fetchAndCachePut(_x3) {\n        return _fetchAndCachePut.apply(this, arguments);\n      }\n\n      return fetchAndCachePut;\n    }()\n    /**\n     * Matches a request from the cache (and invokes any applicable plugin\n     * callback methods) using the `cacheName`, `matchOptions`, and `plugins`\n     * defined on the strategy object.\n     *\n     * The following plugin lifecycle methods are invoked when using this method:\n     * - cacheKeyWillByUsed()\n     * - cachedResponseWillByUsed()\n     *\n     * @param {Request|string} key The Request or URL to use as the cache key.\n     * @return {Promise<Response|undefined>} A matching response, if found.\n     */\n\n  }, {\n    key: \"cacheMatch\",\n    value: function () {\n      var _cacheMatch = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3(key) {\n        var request, cachedResponse, _this$_strategy, cacheName, matchOptions, effectiveRequest, multiMatchOptions, _iterator4, _step4, callback;\n\n        return _regeneratorRuntime.wrap(function _callee3$(_context3) {\n          while (1) {\n            switch (_context3.prev = _context3.next) {\n              case 0:\n                request = toRequest(key);\n                _this$_strategy = this._strategy, cacheName = _this$_strategy.cacheName, matchOptions = _this$_strategy.matchOptions;\n                _context3.next = 4;\n                return this.getCacheKey(request, 'read');\n\n              case 4:\n                effectiveRequest = _context3.sent;\n                multiMatchOptions = _objectSpread(_objectSpread({}, matchOptions), {\n                  cacheName: cacheName\n                });\n                _context3.next = 8;\n                return caches.match(effectiveRequest, multiMatchOptions);\n\n              case 8:\n                cachedResponse = _context3.sent;\n\n                if (process.env.NODE_ENV !== 'production') {\n                  if (cachedResponse) {\n                    logger.debug(\"Found a cached response in '\".concat(cacheName, \"'.\"));\n                  } else {\n                    logger.debug(\"No cached response found in '\".concat(cacheName, \"'.\"));\n                  }\n                }\n\n                _iterator4 = _createForOfIteratorHelper(this.iterateCallbacks('cachedResponseWillBeUsed'));\n                _context3.prev = 11;\n\n                _iterator4.s();\n\n              case 13:\n                if ((_step4 = _iterator4.n()).done) {\n                  _context3.next = 23;\n                  break;\n                }\n\n                callback = _step4.value;\n                _context3.next = 17;\n                return callback({\n                  cacheName: cacheName,\n                  matchOptions: matchOptions,\n                  cachedResponse: cachedResponse,\n                  request: effectiveRequest,\n                  event: this.event\n                });\n\n              case 17:\n                _context3.t0 = _context3.sent;\n\n                if (_context3.t0) {\n                  _context3.next = 20;\n                  break;\n                }\n\n                _context3.t0 = undefined;\n\n              case 20:\n                cachedResponse = _context3.t0;\n\n              case 21:\n                _context3.next = 13;\n                break;\n\n              case 23:\n                _context3.next = 28;\n                break;\n\n              case 25:\n                _context3.prev = 25;\n                _context3.t1 = _context3[\"catch\"](11);\n\n                _iterator4.e(_context3.t1);\n\n              case 28:\n                _context3.prev = 28;\n\n                _iterator4.f();\n\n                return _context3.finish(28);\n\n              case 31:\n                return _context3.abrupt(\"return\", cachedResponse);\n\n              case 32:\n              case \"end\":\n                return _context3.stop();\n            }\n          }\n        }, _callee3, this, [[11, 25, 28, 31]]);\n      }));\n\n      function cacheMatch(_x4) {\n        return _cacheMatch.apply(this, arguments);\n      }\n\n      return cacheMatch;\n    }()\n    /**\n     * Puts a request/response pair in the cache (and invokes any applicable\n     * plugin callback methods) using the `cacheName` and `plugins` defined on\n     * the strategy object.\n     *\n     * The following plugin lifecycle methods are invoked when using this method:\n     * - cacheKeyWillByUsed()\n     * - cacheWillUpdate()\n     * - cacheDidUpdate()\n     *\n     * @param {Request|string} key The request or URL to use as the cache key.\n     * @param {Response} response The response to cache.\n     * @return {Promise<boolean>} `false` if a cacheWillUpdate caused the response\n     * not be cached, and `true` otherwise.\n     */\n\n  }, {\n    key: \"cachePut\",\n    value: function () {\n      var _cachePut = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee4(key, response) {\n        var request, effectiveRequest, responseToCache, _this$_strategy2, cacheName, matchOptions, cache, hasCacheUpdateCallback, oldResponse, _iterator5, _step5, callback;\n\n        return _regeneratorRuntime.wrap(function _callee4$(_context4) {\n          while (1) {\n            switch (_context4.prev = _context4.next) {\n              case 0:\n                request = toRequest(key); // Run in the next task to avoid blocking other cache reads.\n                // https://github.com/w3c/ServiceWorker/issues/1397\n\n                _context4.next = 3;\n                return timeout(0);\n\n              case 3:\n                _context4.next = 5;\n                return this.getCacheKey(request, 'write');\n\n              case 5:\n                effectiveRequest = _context4.sent;\n\n                if (!(process.env.NODE_ENV !== 'production')) {\n                  _context4.next = 9;\n                  break;\n                }\n\n                if (!(effectiveRequest.method && effectiveRequest.method !== 'GET')) {\n                  _context4.next = 9;\n                  break;\n                }\n\n                throw new WorkboxError('attempt-to-cache-non-get-request', {\n                  url: getFriendlyURL(effectiveRequest.url),\n                  method: effectiveRequest.method\n                });\n\n              case 9:\n                if (response) {\n                  _context4.next = 12;\n                  break;\n                }\n\n                if (process.env.NODE_ENV !== 'production') {\n                  logger.error(\"Cannot cache non-existent response for \" + \"'\".concat(getFriendlyURL(effectiveRequest.url), \"'.\"));\n                }\n\n                throw new WorkboxError('cache-put-with-no-response', {\n                  url: getFriendlyURL(effectiveRequest.url)\n                });\n\n              case 12:\n                _context4.next = 14;\n                return this._ensureResponseSafeToCache(response);\n\n              case 14:\n                responseToCache = _context4.sent;\n\n                if (responseToCache) {\n                  _context4.next = 18;\n                  break;\n                }\n\n                if (process.env.NODE_ENV !== 'production') {\n                  logger.debug(\"Response '\".concat(getFriendlyURL(effectiveRequest.url), \"' \") + \"will not be cached.\", responseToCache);\n                }\n\n                return _context4.abrupt(\"return\", false);\n\n              case 18:\n                _this$_strategy2 = this._strategy, cacheName = _this$_strategy2.cacheName, matchOptions = _this$_strategy2.matchOptions;\n                _context4.next = 21;\n                return self.caches.open(cacheName);\n\n              case 21:\n                cache = _context4.sent;\n                hasCacheUpdateCallback = this.hasCallback('cacheDidUpdate');\n\n                if (!hasCacheUpdateCallback) {\n                  _context4.next = 29;\n                  break;\n                }\n\n                _context4.next = 26;\n                return cacheMatchIgnoreParams( // TODO(philipwalton): the `__WB_REVISION__` param is a precaching\n                // feature. Consider into ways to only add this behavior if using\n                // precaching.\n                cache, effectiveRequest.clone(), ['__WB_REVISION__'], matchOptions);\n\n              case 26:\n                _context4.t0 = _context4.sent;\n                _context4.next = 30;\n                break;\n\n              case 29:\n                _context4.t0 = null;\n\n              case 30:\n                oldResponse = _context4.t0;\n\n                if (process.env.NODE_ENV !== 'production') {\n                  logger.debug(\"Updating the '\".concat(cacheName, \"' cache with a new Response \") + \"for \".concat(getFriendlyURL(effectiveRequest.url), \".\"));\n                }\n\n                _context4.prev = 32;\n                _context4.next = 35;\n                return cache.put(effectiveRequest, hasCacheUpdateCallback ? responseToCache.clone() : responseToCache);\n\n              case 35:\n                _context4.next = 43;\n                break;\n\n              case 37:\n                _context4.prev = 37;\n                _context4.t1 = _context4[\"catch\"](32);\n\n                if (!(_context4.t1.name === 'QuotaExceededError')) {\n                  _context4.next = 42;\n                  break;\n                }\n\n                _context4.next = 42;\n                return executeQuotaErrorCallbacks();\n\n              case 42:\n                throw _context4.t1;\n\n              case 43:\n                _iterator5 = _createForOfIteratorHelper(this.iterateCallbacks('cacheDidUpdate'));\n                _context4.prev = 44;\n\n                _iterator5.s();\n\n              case 46:\n                if ((_step5 = _iterator5.n()).done) {\n                  _context4.next = 52;\n                  break;\n                }\n\n                callback = _step5.value;\n                _context4.next = 50;\n                return callback({\n                  cacheName: cacheName,\n                  oldResponse: oldResponse,\n                  newResponse: responseToCache.clone(),\n                  request: effectiveRequest,\n                  event: this.event\n                });\n\n              case 50:\n                _context4.next = 46;\n                break;\n\n              case 52:\n                _context4.next = 57;\n                break;\n\n              case 54:\n                _context4.prev = 54;\n                _context4.t2 = _context4[\"catch\"](44);\n\n                _iterator5.e(_context4.t2);\n\n              case 57:\n                _context4.prev = 57;\n\n                _iterator5.f();\n\n                return _context4.finish(57);\n\n              case 60:\n                return _context4.abrupt(\"return\", true);\n\n              case 61:\n              case \"end\":\n                return _context4.stop();\n            }\n          }\n        }, _callee4, this, [[32, 37], [44, 54, 57, 60]]);\n      }));\n\n      function cachePut(_x5, _x6) {\n        return _cachePut.apply(this, arguments);\n      }\n\n      return cachePut;\n    }()\n    /**\n     * Checks the list of plugins for the `cacheKeyWillBeUsed` callback, and\n     * executes any of those callbacks found in sequence. The final `Request`\n     * object returned by the last plugin is treated as the cache key for cache\n     * reads and/or writes. If no `cacheKeyWillBeUsed` plugin callbacks have\n     * been registered, the passed request is returned unmodified\n     *\n     * @param {Request} request\n     * @param {string} mode\n     * @return {Promise<Request>}\n     */\n\n  }, {\n    key: \"getCacheKey\",\n    value: function () {\n      var _getCacheKey = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee5(request, mode) {\n        var effectiveRequest, _iterator6, _step6, callback;\n\n        return _regeneratorRuntime.wrap(function _callee5$(_context5) {\n          while (1) {\n            switch (_context5.prev = _context5.next) {\n              case 0:\n                if (this._cacheKeys[mode]) {\n                  _context5.next = 23;\n                  break;\n                }\n\n                effectiveRequest = request;\n                _iterator6 = _createForOfIteratorHelper(this.iterateCallbacks('cacheKeyWillBeUsed'));\n                _context5.prev = 3;\n\n                _iterator6.s();\n\n              case 5:\n                if ((_step6 = _iterator6.n()).done) {\n                  _context5.next = 14;\n                  break;\n                }\n\n                callback = _step6.value;\n                _context5.t0 = toRequest;\n                _context5.next = 10;\n                return callback({\n                  mode: mode,\n                  request: effectiveRequest,\n                  event: this.event,\n                  params: this.params\n                });\n\n              case 10:\n                _context5.t1 = _context5.sent;\n                effectiveRequest = (0, _context5.t0)(_context5.t1);\n\n              case 12:\n                _context5.next = 5;\n                break;\n\n              case 14:\n                _context5.next = 19;\n                break;\n\n              case 16:\n                _context5.prev = 16;\n                _context5.t2 = _context5[\"catch\"](3);\n\n                _iterator6.e(_context5.t2);\n\n              case 19:\n                _context5.prev = 19;\n\n                _iterator6.f();\n\n                return _context5.finish(19);\n\n              case 22:\n                this._cacheKeys[mode] = effectiveRequest;\n\n              case 23:\n                return _context5.abrupt(\"return\", this._cacheKeys[mode]);\n\n              case 24:\n              case \"end\":\n                return _context5.stop();\n            }\n          }\n        }, _callee5, this, [[3, 16, 19, 22]]);\n      }));\n\n      function getCacheKey(_x7, _x8) {\n        return _getCacheKey.apply(this, arguments);\n      }\n\n      return getCacheKey;\n    }()\n    /**\n     * Returns true if the strategy has at least one plugin with the given\n     * callback.\n     *\n     * @param {string} name The name of the callback to check for.\n     * @return {boolean}\n     */\n\n  }, {\n    key: \"hasCallback\",\n    value: function hasCallback(name) {\n      var _iterator7 = _createForOfIteratorHelper(this._strategy.plugins),\n          _step7;\n\n      try {\n        for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {\n          var plugin = _step7.value;\n\n          if (name in plugin) {\n            return true;\n          }\n        }\n      } catch (err) {\n        _iterator7.e(err);\n      } finally {\n        _iterator7.f();\n      }\n\n      return false;\n    }\n    /**\n     * Runs all plugin callbacks matching the given name, in order, passing the\n     * given param object (merged ith the current plugin state) as the only\n     * argument.\n     *\n     * Note: since this method runs all plugins, it's not suitable for cases\n     * where the return value of a callback needs to be applied prior to calling\n     * the next callback. See\n     * [`iterateCallbacks()`]{@link module:workbox-strategies.StrategyHandler#iterateCallbacks}\n     * below for how to handle that case.\n     *\n     * @param {string} name The name of the callback to run within each plugin.\n     * @param {Object} param The object to pass as the first (and only) param\n     *     when executing each callback. This object will be merged with the\n     *     current plugin state prior to callback execution.\n     */\n\n  }, {\n    key: \"runCallbacks\",\n    value: function () {\n      var _runCallbacks = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee6(name, param) {\n        var _iterator8, _step8, callback;\n\n        return _regeneratorRuntime.wrap(function _callee6$(_context6) {\n          while (1) {\n            switch (_context6.prev = _context6.next) {\n              case 0:\n                _iterator8 = _createForOfIteratorHelper(this.iterateCallbacks(name));\n                _context6.prev = 1;\n\n                _iterator8.s();\n\n              case 3:\n                if ((_step8 = _iterator8.n()).done) {\n                  _context6.next = 9;\n                  break;\n                }\n\n                callback = _step8.value;\n                _context6.next = 7;\n                return callback(param);\n\n              case 7:\n                _context6.next = 3;\n                break;\n\n              case 9:\n                _context6.next = 14;\n                break;\n\n              case 11:\n                _context6.prev = 11;\n                _context6.t0 = _context6[\"catch\"](1);\n\n                _iterator8.e(_context6.t0);\n\n              case 14:\n                _context6.prev = 14;\n\n                _iterator8.f();\n\n                return _context6.finish(14);\n\n              case 17:\n              case \"end\":\n                return _context6.stop();\n            }\n          }\n        }, _callee6, this, [[1, 11, 14, 17]]);\n      }));\n\n      function runCallbacks(_x9, _x10) {\n        return _runCallbacks.apply(this, arguments);\n      }\n\n      return runCallbacks;\n    }()\n    /**\n     * Accepts a callback and returns an iterable of matching plugin callbacks,\n     * where each callback is wrapped with the current handler state (i.e. when\n     * you call each callback, whatever object parameter you pass it will\n     * be merged with the plugin's current state).\n     *\n     * @param {string} name The name fo the callback to run\n     * @return {Array<Function>}\n     */\n\n  }, {\n    key: \"iterateCallbacks\",\n    value: /*#__PURE__*/_regeneratorRuntime.mark(function iterateCallbacks(name) {\n      var _this = this;\n\n      var _iterator9, _step9, _loop;\n\n      return _regeneratorRuntime.wrap(function iterateCallbacks$(_context8) {\n        while (1) {\n          switch (_context8.prev = _context8.next) {\n            case 0:\n              _iterator9 = _createForOfIteratorHelper(this._strategy.plugins);\n              _context8.prev = 1;\n              _loop = /*#__PURE__*/_regeneratorRuntime.mark(function _loop() {\n                var plugin, state, statefulCallback;\n                return _regeneratorRuntime.wrap(function _loop$(_context7) {\n                  while (1) {\n                    switch (_context7.prev = _context7.next) {\n                      case 0:\n                        plugin = _step9.value;\n\n                        if (!(typeof plugin[name] === 'function')) {\n                          _context7.next = 6;\n                          break;\n                        }\n\n                        state = _this._pluginStateMap.get(plugin);\n\n                        statefulCallback = function statefulCallback(param) {\n                          var statefulParam = _objectSpread(_objectSpread({}, param), {}, {\n                            state: state\n                          }); // TODO(philipwalton): not sure why `any` is needed. It seems like\n                          // this should work with `as WorkboxPluginCallbackParam[C]`.\n\n\n                          return plugin[name](statefulParam);\n                        };\n\n                        _context7.next = 6;\n                        return statefulCallback;\n\n                      case 6:\n                      case \"end\":\n                        return _context7.stop();\n                    }\n                  }\n                }, _loop);\n              });\n\n              _iterator9.s();\n\n            case 4:\n              if ((_step9 = _iterator9.n()).done) {\n                _context8.next = 8;\n                break;\n              }\n\n              return _context8.delegateYield(_loop(), \"t0\", 6);\n\n            case 6:\n              _context8.next = 4;\n              break;\n\n            case 8:\n              _context8.next = 13;\n              break;\n\n            case 10:\n              _context8.prev = 10;\n              _context8.t1 = _context8[\"catch\"](1);\n\n              _iterator9.e(_context8.t1);\n\n            case 13:\n              _context8.prev = 13;\n\n              _iterator9.f();\n\n              return _context8.finish(13);\n\n            case 16:\n            case \"end\":\n              return _context8.stop();\n          }\n        }\n      }, iterateCallbacks, this, [[1, 10, 13, 16]]);\n    })\n    /**\n     * Adds a promise to the\n     * [extend lifetime promises]{@link https://w3c.github.io/ServiceWorker/#extendableevent-extend-lifetime-promises}\n     * of the event event associated with the request being handled (usually a\n     * `FetchEvent`).\n     *\n     * Note: you can await\n     * [`doneWaiting()`]{@link module:workbox-strategies.StrategyHandler~doneWaiting}\n     * to know when all added promises have settled.\n     *\n     * @param {Promise} promise A promise to add to the extend lifetime promises\n     *     of the event that triggered the request.\n     */\n\n  }, {\n    key: \"waitUntil\",\n    value: function waitUntil(promise) {\n      this._extendLifetimePromises.push(promise);\n\n      return promise;\n    }\n    /**\n     * Returns a promise that resolves once all promises passed to\n     * [`waitUntil()`]{@link module:workbox-strategies.StrategyHandler~waitUntil}\n     * have settled.\n     *\n     * Note: any work done after `doneWaiting()` settles should be manually\n     * passed to an event's `waitUntil()` method (not this handler's\n     * `waitUntil()` method), otherwise the service worker thread my be killed\n     * prior to your work completing.\n     */\n\n  }, {\n    key: \"doneWaiting\",\n    value: function () {\n      var _doneWaiting = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee7() {\n        var promise;\n        return _regeneratorRuntime.wrap(function _callee7$(_context9) {\n          while (1) {\n            switch (_context9.prev = _context9.next) {\n              case 0:\n                if (!(promise = this._extendLifetimePromises.shift())) {\n                  _context9.next = 5;\n                  break;\n                }\n\n                _context9.next = 3;\n                return promise;\n\n              case 3:\n                _context9.next = 0;\n                break;\n\n              case 5:\n              case \"end\":\n                return _context9.stop();\n            }\n          }\n        }, _callee7, this);\n      }));\n\n      function doneWaiting() {\n        return _doneWaiting.apply(this, arguments);\n      }\n\n      return doneWaiting;\n    }()\n    /**\n     * Stops running the strategy and immediately resolves any pending\n     * `waitUntil()` promises.\n     */\n\n  }, {\n    key: \"destroy\",\n    value: function destroy() {\n      this._handlerDeferred.resolve();\n    }\n    /**\n     * This method will call cacheWillUpdate on the available plugins (or use\n     * status === 200) to determine if the Response is safe and valid to cache.\n     *\n     * @param {Request} options.request\n     * @param {Response} options.response\n     * @return {Promise<Response|undefined>}\n     *\n     * @private\n     */\n\n  }, {\n    key: \"_ensureResponseSafeToCache\",\n    value: function () {\n      var _ensureResponseSafeToCache2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee8(response) {\n        var responseToCache, pluginsUsed, _iterator10, _step10, callback;\n\n        return _regeneratorRuntime.wrap(function _callee8$(_context10) {\n          while (1) {\n            switch (_context10.prev = _context10.next) {\n              case 0:\n                responseToCache = response;\n                pluginsUsed = false;\n                _iterator10 = _createForOfIteratorHelper(this.iterateCallbacks('cacheWillUpdate'));\n                _context10.prev = 3;\n\n                _iterator10.s();\n\n              case 5:\n                if ((_step10 = _iterator10.n()).done) {\n                  _context10.next = 18;\n                  break;\n                }\n\n                callback = _step10.value;\n                _context10.next = 9;\n                return callback({\n                  request: this.request,\n                  response: responseToCache,\n                  event: this.event\n                });\n\n              case 9:\n                _context10.t0 = _context10.sent;\n\n                if (_context10.t0) {\n                  _context10.next = 12;\n                  break;\n                }\n\n                _context10.t0 = undefined;\n\n              case 12:\n                responseToCache = _context10.t0;\n                pluginsUsed = true;\n\n                if (responseToCache) {\n                  _context10.next = 16;\n                  break;\n                }\n\n                return _context10.abrupt(\"break\", 18);\n\n              case 16:\n                _context10.next = 5;\n                break;\n\n              case 18:\n                _context10.next = 23;\n                break;\n\n              case 20:\n                _context10.prev = 20;\n                _context10.t1 = _context10[\"catch\"](3);\n\n                _iterator10.e(_context10.t1);\n\n              case 23:\n                _context10.prev = 23;\n\n                _iterator10.f();\n\n                return _context10.finish(23);\n\n              case 26:\n                if (!pluginsUsed) {\n                  if (responseToCache && responseToCache.status !== 200) {\n                    responseToCache = undefined;\n                  }\n\n                  if (process.env.NODE_ENV !== 'production') {\n                    if (responseToCache) {\n                      if (responseToCache.status !== 200) {\n                        if (responseToCache.status === 0) {\n                          logger.warn(\"The response for '\".concat(this.request.url, \"' \") + \"is an opaque response. The caching strategy that you're \" + \"using will not cache opaque responses by default.\");\n                        } else {\n                          logger.debug(\"The response for '\".concat(this.request.url, \"' \") + \"returned a status code of '\".concat(response.status, \"' and won't \") + \"be cached as a result.\");\n                        }\n                      }\n                    }\n                  }\n                }\n\n                return _context10.abrupt(\"return\", responseToCache);\n\n              case 28:\n              case \"end\":\n                return _context10.stop();\n            }\n          }\n        }, _callee8, this, [[3, 20, 23, 26]]);\n      }));\n\n      function _ensureResponseSafeToCache(_x11) {\n        return _ensureResponseSafeToCache2.apply(this, arguments);\n      }\n\n      return _ensureResponseSafeToCache;\n    }()\n  }]);\n\n  return StrategyHandler;\n}();\n\nexport { StrategyHandler };","import _regeneratorRuntime from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/regenerator\";\nimport _createForOfIteratorHelper from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper\";\nimport _asyncToGenerator from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/asyncToGenerator\";\nimport _slicedToArray from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray\";\nimport _classCallCheck from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass\";\n\n/*\n  Copyright 2020 Google LLC\n\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport { cacheNames } from 'workbox-core/_private/cacheNames.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { getFriendlyURL } from 'workbox-core/_private/getFriendlyURL.js';\nimport { StrategyHandler } from './StrategyHandler.js';\nimport './_version.js';\n/**\n * An abstract base class that all other strategy classes must extend from:\n *\n * @memberof module:workbox-strategies\n */\n\nvar Strategy = /*#__PURE__*/function () {\n  /**\n   * Creates a new instance of the strategy and sets all documented option\n   * properties as public instance properties.\n   *\n   * Note: if a custom strategy class extends the base Strategy class and does\n   * not need more than these properties, it does not need to define its own\n   * constructor.\n   *\n   * @param {Object} [options]\n   * @param {string} [options.cacheName] Cache name to store and retrieve\n   * requests. Defaults to the cache names provided by\n   * [workbox-core]{@link module:workbox-core.cacheNames}.\n   * @param {Array<Object>} [options.plugins] [Plugins]{@link https://developers.google.com/web/tools/workbox/guides/using-plugins}\n   * to use in conjunction with this caching strategy.\n   * @param {Object} [options.fetchOptions] Values passed along to the\n   * [`init`](https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch#Parameters)\n   * of [non-navigation](https://github.com/GoogleChrome/workbox/issues/1796)\n   * `fetch()` requests made by this strategy.\n   * @param {Object} [options.matchOptions] The\n   * [`CacheQueryOptions`]{@link https://w3c.github.io/ServiceWorker/#dictdef-cachequeryoptions}\n   * for any `cache.match()` or `cache.put()` calls made by this strategy.\n   */\n  function Strategy() {\n    var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n    _classCallCheck(this, Strategy);\n\n    /**\n     * Cache name to store and retrieve\n     * requests. Defaults to the cache names provided by\n     * [workbox-core]{@link module:workbox-core.cacheNames}.\n     *\n     * @type {string}\n     */\n    this.cacheName = cacheNames.getRuntimeName(options.cacheName);\n    /**\n     * The list\n     * [Plugins]{@link https://developers.google.com/web/tools/workbox/guides/using-plugins}\n     * used by this strategy.\n     *\n     * @type {Array<Object>}\n     */\n\n    this.plugins = options.plugins || [];\n    /**\n     * Values passed along to the\n     * [`init`]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch#Parameters}\n     * of all fetch() requests made by this strategy.\n     *\n     * @type {Object}\n     */\n\n    this.fetchOptions = options.fetchOptions;\n    /**\n     * The\n     * [`CacheQueryOptions`]{@link https://w3c.github.io/ServiceWorker/#dictdef-cachequeryoptions}\n     * for any `cache.match()` or `cache.put()` calls made by this strategy.\n     *\n     * @type {Object}\n     */\n\n    this.matchOptions = options.matchOptions;\n  }\n  /**\n   * Perform a request strategy and returns a `Promise` that will resolve with\n   * a `Response`, invoking all relevant plugin callbacks.\n   *\n   * When a strategy instance is registered with a Workbox\n   * [route]{@link module:workbox-routing.Route}, this method is automatically\n   * called when the route matches.\n   *\n   * Alternatively, this method can be used in a standalone `FetchEvent`\n   * listener by passing it to `event.respondWith()`.\n   *\n   * @param {FetchEvent|Object} options A `FetchEvent` or an object with the\n   *     properties listed below.\n   * @param {Request|string} options.request A request to run this strategy for.\n   * @param {ExtendableEvent} options.event The event associated with the\n   *     request.\n   * @param {URL} [options.url]\n   * @param {*} [options.params]\n   */\n\n\n  _createClass(Strategy, [{\n    key: \"handle\",\n    value: function handle(options) {\n      var _this$handleAll = this.handleAll(options),\n          _this$handleAll2 = _slicedToArray(_this$handleAll, 1),\n          responseDone = _this$handleAll2[0];\n\n      return responseDone;\n    }\n    /**\n     * Similar to [`handle()`]{@link module:workbox-strategies.Strategy~handle}, but\n     * instead of just returning a `Promise` that resolves to a `Response` it\n     * it will return an tuple of [response, done] promises, where the former\n     * (`response`) is equivalent to what `handle()` returns, and the latter is a\n     * Promise that will resolve once any promises that were added to\n     * `event.waitUntil()` as part of performing the strategy have completed.\n     *\n     * You can await the `done` promise to ensure any extra work performed by\n     * the strategy (usually caching responses) completes successfully.\n     *\n     * @param {FetchEvent|Object} options A `FetchEvent` or an object with the\n     *     properties listed below.\n     * @param {Request|string} options.request A request to run this strategy for.\n     * @param {ExtendableEvent} options.event The event associated with the\n     *     request.\n     * @param {URL} [options.url]\n     * @param {*} [options.params]\n     * @return {Array<Promise>} A tuple of [response, done]\n     *     promises that can be used to determine when the response resolves as\n     *     well as when the handler has completed all its work.\n     */\n\n  }, {\n    key: \"handleAll\",\n    value: function handleAll(options) {\n      // Allow for flexible options to be passed.\n      if (options instanceof FetchEvent) {\n        options = {\n          event: options,\n          request: options.request\n        };\n      }\n\n      var event = options.event;\n      var request = typeof options.request === 'string' ? new Request(options.request) : options.request;\n      var params = 'params' in options ? options.params : undefined;\n      var handler = new StrategyHandler(this, {\n        event: event,\n        request: request,\n        params: params\n      });\n\n      var responseDone = this._getResponse(handler, request, event);\n\n      var handlerDone = this._awaitComplete(responseDone, handler, request, event); // Return an array of promises, suitable for use with Promise.all().\n\n\n      return [responseDone, handlerDone];\n    }\n  }, {\n    key: \"_getResponse\",\n    value: function () {\n      var _getResponse2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(handler, request, event) {\n        var response, _iterator, _step, callback, _iterator2, _step2, _callback;\n\n        return _regeneratorRuntime.wrap(function _callee$(_context) {\n          while (1) {\n            switch (_context.prev = _context.next) {\n              case 0:\n                _context.next = 2;\n                return handler.runCallbacks('handlerWillStart', {\n                  event: event,\n                  request: request\n                });\n\n              case 2:\n                response = undefined;\n                _context.prev = 3;\n                _context.next = 6;\n                return this._handle(request, handler);\n\n              case 6:\n                response = _context.sent;\n\n                if (!(!response || response.type === 'error')) {\n                  _context.next = 9;\n                  break;\n                }\n\n                throw new WorkboxError('no-response', {\n                  url: request.url\n                });\n\n              case 9:\n                _context.next = 38;\n                break;\n\n              case 11:\n                _context.prev = 11;\n                _context.t0 = _context[\"catch\"](3);\n                _iterator = _createForOfIteratorHelper(handler.iterateCallbacks('handlerDidError'));\n                _context.prev = 14;\n\n                _iterator.s();\n\n              case 16:\n                if ((_step = _iterator.n()).done) {\n                  _context.next = 25;\n                  break;\n                }\n\n                callback = _step.value;\n                _context.next = 20;\n                return callback({\n                  error: _context.t0,\n                  event: event,\n                  request: request\n                });\n\n              case 20:\n                response = _context.sent;\n\n                if (!response) {\n                  _context.next = 23;\n                  break;\n                }\n\n                return _context.abrupt(\"break\", 25);\n\n              case 23:\n                _context.next = 16;\n                break;\n\n              case 25:\n                _context.next = 30;\n                break;\n\n              case 27:\n                _context.prev = 27;\n                _context.t1 = _context[\"catch\"](14);\n\n                _iterator.e(_context.t1);\n\n              case 30:\n                _context.prev = 30;\n\n                _iterator.f();\n\n                return _context.finish(30);\n\n              case 33:\n                if (response) {\n                  _context.next = 37;\n                  break;\n                }\n\n                throw _context.t0;\n\n              case 37:\n                if (process.env.NODE_ENV !== 'production') {\n                  logger.log(\"While responding to '\".concat(getFriendlyURL(request.url), \"', \") + \"an \".concat(_context.t0, \" error occurred. Using a fallback response provided by \") + \"a handlerDidError plugin.\");\n                }\n\n              case 38:\n                _iterator2 = _createForOfIteratorHelper(handler.iterateCallbacks('handlerWillRespond'));\n                _context.prev = 39;\n\n                _iterator2.s();\n\n              case 41:\n                if ((_step2 = _iterator2.n()).done) {\n                  _context.next = 48;\n                  break;\n                }\n\n                _callback = _step2.value;\n                _context.next = 45;\n                return _callback({\n                  event: event,\n                  request: request,\n                  response: response\n                });\n\n              case 45:\n                response = _context.sent;\n\n              case 46:\n                _context.next = 41;\n                break;\n\n              case 48:\n                _context.next = 53;\n                break;\n\n              case 50:\n                _context.prev = 50;\n                _context.t2 = _context[\"catch\"](39);\n\n                _iterator2.e(_context.t2);\n\n              case 53:\n                _context.prev = 53;\n\n                _iterator2.f();\n\n                return _context.finish(53);\n\n              case 56:\n                return _context.abrupt(\"return\", response);\n\n              case 57:\n              case \"end\":\n                return _context.stop();\n            }\n          }\n        }, _callee, this, [[3, 11], [14, 27, 30, 33], [39, 50, 53, 56]]);\n      }));\n\n      function _getResponse(_x, _x2, _x3) {\n        return _getResponse2.apply(this, arguments);\n      }\n\n      return _getResponse;\n    }()\n  }, {\n    key: \"_awaitComplete\",\n    value: function () {\n      var _awaitComplete2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(responseDone, handler, request, event) {\n        var response, error;\n        return _regeneratorRuntime.wrap(function _callee2$(_context2) {\n          while (1) {\n            switch (_context2.prev = _context2.next) {\n              case 0:\n                _context2.prev = 0;\n                _context2.next = 3;\n                return responseDone;\n\n              case 3:\n                response = _context2.sent;\n                _context2.next = 8;\n                break;\n\n              case 6:\n                _context2.prev = 6;\n                _context2.t0 = _context2[\"catch\"](0);\n\n              case 8:\n                _context2.prev = 8;\n                _context2.next = 11;\n                return handler.runCallbacks('handlerDidRespond', {\n                  event: event,\n                  request: request,\n                  response: response\n                });\n\n              case 11:\n                _context2.next = 13;\n                return handler.doneWaiting();\n\n              case 13:\n                _context2.next = 18;\n                break;\n\n              case 15:\n                _context2.prev = 15;\n                _context2.t1 = _context2[\"catch\"](8);\n                error = _context2.t1;\n\n              case 18:\n                _context2.next = 20;\n                return handler.runCallbacks('handlerDidComplete', {\n                  event: event,\n                  request: request,\n                  response: response,\n                  error: error\n                });\n\n              case 20:\n                handler.destroy();\n\n                if (!error) {\n                  _context2.next = 23;\n                  break;\n                }\n\n                throw error;\n\n              case 23:\n              case \"end\":\n                return _context2.stop();\n            }\n          }\n        }, _callee2, null, [[0, 6], [8, 15]]);\n      }));\n\n      function _awaitComplete(_x4, _x5, _x6, _x7) {\n        return _awaitComplete2.apply(this, arguments);\n      }\n\n      return _awaitComplete;\n    }()\n  }]);\n\n  return Strategy;\n}();\n\nexport { Strategy };\n/**\n * Classes extending the `Strategy` based class should implement this method,\n * and leverage the [`handler`]{@link module:workbox-strategies.StrategyHandler}\n * arg to perform all fetching and cache logic, which will ensure all relevant\n * cache, cache options, fetch options and plugins are used (per the current\n * strategy instance).\n *\n * @name _handle\n * @instance\n * @abstract\n * @function\n * @param {Request} request\n * @param {module:workbox-strategies.StrategyHandler} handler\n * @return {Promise<Response>}\n *\n * @memberof module:workbox-strategies.Strategy\n */","import _slicedToArray from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray\";\nimport _createForOfIteratorHelper from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper\";\nimport _regeneratorRuntime from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/regenerator\";\nimport _asyncToGenerator from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/asyncToGenerator\";\nimport _classCallCheck from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createSuper\";\n\n/*\n  Copyright 2020 Google LLC\n\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport { copyResponse } from 'workbox-core/copyResponse.js';\nimport { cacheNames } from 'workbox-core/_private/cacheNames.js';\nimport { getFriendlyURL } from 'workbox-core/_private/getFriendlyURL.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport { Strategy } from 'workbox-strategies/Strategy.js';\nimport './_version.js';\n/**\n * A [Strategy]{@link module:workbox-strategies.Strategy} implementation\n * specifically designed to work with\n * [PrecacheController]{@link module:workbox-precaching.PrecacheController}\n * to both cache and fetch precached assets.\n *\n * Note: an instance of this class is created automatically when creating a\n * `PrecacheController`; it's generally not necessary to create this yourself.\n *\n * @extends module:workbox-strategies.Strategy\n * @memberof module:workbox-precaching\n */\n\nvar PrecacheStrategy = /*#__PURE__*/function (_Strategy) {\n  _inherits(PrecacheStrategy, _Strategy);\n\n  var _super = _createSuper(PrecacheStrategy);\n\n  /**\n   *\n   * @param {Object} [options]\n   * @param {string} [options.cacheName] Cache name to store and retrieve\n   * requests. Defaults to the cache names provided by\n   * [workbox-core]{@link module:workbox-core.cacheNames}.\n   * @param {Array<Object>} [options.plugins] [Plugins]{@link https://developers.google.com/web/tools/workbox/guides/using-plugins}\n   * to use in conjunction with this caching strategy.\n   * @param {Object} [options.fetchOptions] Values passed along to the\n   * [`init`]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch#Parameters}\n   * of all fetch() requests made by this strategy.\n   * @param {Object} [options.matchOptions] The\n   * [`CacheQueryOptions`]{@link https://w3c.github.io/ServiceWorker/#dictdef-cachequeryoptions}\n   * for any `cache.match()` or `cache.put()` calls made by this strategy.\n   * @param {boolean} [options.fallbackToNetwork=true] Whether to attempt to\n   * get the response from the network if there's a precache miss.\n   */\n  function PrecacheStrategy() {\n    var _this;\n\n    var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n    _classCallCheck(this, PrecacheStrategy);\n\n    options.cacheName = cacheNames.getPrecacheName(options.cacheName);\n    _this = _super.call(this, options);\n    _this._fallbackToNetwork = options.fallbackToNetwork === false ? false : true; // Redirected responses cannot be used to satisfy a navigation request, so\n    // any redirected response must be \"copied\" rather than cloned, so the new\n    // response doesn't contain the `redirected` flag. See:\n    // https://bugs.chromium.org/p/chromium/issues/detail?id=669363&desc=2#c1\n\n    _this.plugins.push(PrecacheStrategy.copyRedirectedCacheableResponsesPlugin);\n\n    return _this;\n  }\n  /**\n   * @private\n   * @param {Request|string} request A request to run this strategy for.\n   * @param {module:workbox-strategies.StrategyHandler} handler The event that\n   *     triggered the request.\n   * @return {Promise<Response>}\n   */\n\n\n  _createClass(PrecacheStrategy, [{\n    key: \"_handle\",\n    value: function () {\n      var _handle2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(request, handler) {\n        var response;\n        return _regeneratorRuntime.wrap(function _callee$(_context) {\n          while (1) {\n            switch (_context.prev = _context.next) {\n              case 0:\n                _context.next = 2;\n                return handler.cacheMatch(request);\n\n              case 2:\n                response = _context.sent;\n\n                if (response) {\n                  _context.next = 11;\n                  break;\n                }\n\n                if (!(handler.event && handler.event.type === 'install')) {\n                  _context.next = 8;\n                  break;\n                }\n\n                _context.next = 7;\n                return this._handleInstall(request, handler);\n\n              case 7:\n                return _context.abrupt(\"return\", _context.sent);\n\n              case 8:\n                _context.next = 10;\n                return this._handleFetch(request, handler);\n\n              case 10:\n                return _context.abrupt(\"return\", _context.sent);\n\n              case 11:\n                return _context.abrupt(\"return\", response);\n\n              case 12:\n              case \"end\":\n                return _context.stop();\n            }\n          }\n        }, _callee, this);\n      }));\n\n      function _handle(_x, _x2) {\n        return _handle2.apply(this, arguments);\n      }\n\n      return _handle;\n    }()\n  }, {\n    key: \"_handleFetch\",\n    value: function () {\n      var _handleFetch2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(request, handler) {\n        var response, cacheKey;\n        return _regeneratorRuntime.wrap(function _callee2$(_context2) {\n          while (1) {\n            switch (_context2.prev = _context2.next) {\n              case 0:\n                if (!this._fallbackToNetwork) {\n                  _context2.next = 7;\n                  break;\n                }\n\n                if (process.env.NODE_ENV !== 'production') {\n                  logger.warn(\"The precached response for \" + \"\".concat(getFriendlyURL(request.url), \" in \").concat(this.cacheName, \" was not \") + \"found. Falling back to the network instead.\");\n                }\n\n                _context2.next = 4;\n                return handler.fetch(request);\n\n              case 4:\n                response = _context2.sent;\n                _context2.next = 8;\n                break;\n\n              case 7:\n                throw new WorkboxError('missing-precache-entry', {\n                  cacheName: this.cacheName,\n                  url: request.url\n                });\n\n              case 8:\n                if (!(process.env.NODE_ENV !== 'production')) {\n                  _context2.next = 24;\n                  break;\n                }\n\n                _context2.t0 = handler.params && handler.params.cacheKey;\n\n                if (_context2.t0) {\n                  _context2.next = 14;\n                  break;\n                }\n\n                _context2.next = 13;\n                return handler.getCacheKey(request, 'read');\n\n              case 13:\n                _context2.t0 = _context2.sent;\n\n              case 14:\n                cacheKey = _context2.t0;\n                // Workbox is going to handle the route.\n                // print the routing details to the console.\n                logger.groupCollapsed(\"Precaching is responding to: \" + getFriendlyURL(request.url));\n                logger.log(\"Serving the precached url: \".concat(getFriendlyURL(cacheKey.url)));\n                logger.groupCollapsed(\"View request details here.\");\n                logger.log(request);\n                logger.groupEnd();\n                logger.groupCollapsed(\"View response details here.\");\n                logger.log(response);\n                logger.groupEnd();\n                logger.groupEnd();\n\n              case 24:\n                return _context2.abrupt(\"return\", response);\n\n              case 25:\n              case \"end\":\n                return _context2.stop();\n            }\n          }\n        }, _callee2, this);\n      }));\n\n      function _handleFetch(_x3, _x4) {\n        return _handleFetch2.apply(this, arguments);\n      }\n\n      return _handleFetch;\n    }()\n  }, {\n    key: \"_handleInstall\",\n    value: function () {\n      var _handleInstall2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3(request, handler) {\n        var response, wasCached;\n        return _regeneratorRuntime.wrap(function _callee3$(_context3) {\n          while (1) {\n            switch (_context3.prev = _context3.next) {\n              case 0:\n                this._useDefaultCacheabilityPluginIfNeeded();\n\n                _context3.next = 3;\n                return handler.fetch(request);\n\n              case 3:\n                response = _context3.sent;\n                _context3.next = 6;\n                return handler.cachePut(request, response.clone());\n\n              case 6:\n                wasCached = _context3.sent;\n\n                if (wasCached) {\n                  _context3.next = 9;\n                  break;\n                }\n\n                throw new WorkboxError('bad-precaching-response', {\n                  url: request.url,\n                  status: response.status\n                });\n\n              case 9:\n                return _context3.abrupt(\"return\", response);\n\n              case 10:\n              case \"end\":\n                return _context3.stop();\n            }\n          }\n        }, _callee3, this);\n      }));\n\n      function _handleInstall(_x5, _x6) {\n        return _handleInstall2.apply(this, arguments);\n      }\n\n      return _handleInstall;\n    }()\n    /**\n     * This method is complex, as there a number of things to account for:\n     *\n     * The `plugins` array can be set at construction, and/or it might be added to\n     * to at any time before the strategy is used.\n     *\n     * At the time the strategy is used (i.e. during an `install` event), there\n     * needs to be at least one plugin that implements `cacheWillUpdate` in the\n     * array, other than `copyRedirectedCacheableResponsesPlugin`.\n     *\n     * - If this method is called and there are no suitable `cacheWillUpdate`\n     * plugins, we need to add `defaultPrecacheCacheabilityPlugin`.\n     *\n     * - If this method is called and there is exactly one `cacheWillUpdate`, then\n     * we don't have to do anything (this might be a previously added\n     * `defaultPrecacheCacheabilityPlugin`, or it might be a custom plugin).\n     *\n     * - If this method is called and there is more than one `cacheWillUpdate`,\n     * then we need to check if one is `defaultPrecacheCacheabilityPlugin`. If so,\n     * we need to remove it. (This situation is unlikely, but it could happen if\n     * the strategy is used multiple times, the first without a `cacheWillUpdate`,\n     * and then later on after manually adding a custom `cacheWillUpdate`.)\n     *\n     * See https://github.com/GoogleChrome/workbox/issues/2737 for more context.\n     *\n     * @private\n     */\n\n  }, {\n    key: \"_useDefaultCacheabilityPluginIfNeeded\",\n    value: function _useDefaultCacheabilityPluginIfNeeded() {\n      var defaultPluginIndex = null;\n      var cacheWillUpdatePluginCount = 0;\n\n      var _iterator = _createForOfIteratorHelper(this.plugins.entries()),\n          _step;\n\n      try {\n        for (_iterator.s(); !(_step = _iterator.n()).done;) {\n          var _step$value = _slicedToArray(_step.value, 2),\n              index = _step$value[0],\n              plugin = _step$value[1];\n\n          // Ignore the copy redirected plugin when determining what to do.\n          if (plugin === PrecacheStrategy.copyRedirectedCacheableResponsesPlugin) {\n            continue;\n          } // Save the default plugin's index, in case it needs to be removed.\n\n\n          if (plugin === PrecacheStrategy.defaultPrecacheCacheabilityPlugin) {\n            defaultPluginIndex = index;\n          }\n\n          if (plugin.cacheWillUpdate) {\n            cacheWillUpdatePluginCount++;\n          }\n        }\n      } catch (err) {\n        _iterator.e(err);\n      } finally {\n        _iterator.f();\n      }\n\n      if (cacheWillUpdatePluginCount === 0) {\n        this.plugins.push(PrecacheStrategy.defaultPrecacheCacheabilityPlugin);\n      } else if (cacheWillUpdatePluginCount > 1 && defaultPluginIndex !== null) {\n        // Only remove the default plugin; multiple custom plugins are allowed.\n        this.plugins.splice(defaultPluginIndex, 1);\n      } // Nothing needs to be done if cacheWillUpdatePluginCount is 1\n\n    }\n  }]);\n\n  return PrecacheStrategy;\n}(Strategy);\n\nPrecacheStrategy.defaultPrecacheCacheabilityPlugin = {\n  cacheWillUpdate: function cacheWillUpdate(_ref) {\n    return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee4() {\n      var response;\n      return _regeneratorRuntime.wrap(function _callee4$(_context4) {\n        while (1) {\n          switch (_context4.prev = _context4.next) {\n            case 0:\n              response = _ref.response;\n\n              if (!(!response || response.status >= 400)) {\n                _context4.next = 3;\n                break;\n              }\n\n              return _context4.abrupt(\"return\", null);\n\n            case 3:\n              return _context4.abrupt(\"return\", response);\n\n            case 4:\n            case \"end\":\n              return _context4.stop();\n          }\n        }\n      }, _callee4);\n    }))();\n  }\n};\nPrecacheStrategy.copyRedirectedCacheableResponsesPlugin = {\n  cacheWillUpdate: function cacheWillUpdate(_ref2) {\n    return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee5() {\n      var response;\n      return _regeneratorRuntime.wrap(function _callee5$(_context5) {\n        while (1) {\n          switch (_context5.prev = _context5.next) {\n            case 0:\n              response = _ref2.response;\n\n              if (!response.redirected) {\n                _context5.next = 7;\n                break;\n              }\n\n              _context5.next = 4;\n              return copyResponse(response);\n\n            case 4:\n              _context5.t0 = _context5.sent;\n              _context5.next = 8;\n              break;\n\n            case 7:\n              _context5.t0 = response;\n\n            case 8:\n              return _context5.abrupt(\"return\", _context5.t0);\n\n            case 9:\n            case \"end\":\n              return _context5.stop();\n          }\n        }\n      }, _callee5);\n    }))();\n  }\n};\nexport { PrecacheStrategy };","import _objectSpread from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread2\";\nimport _regeneratorRuntime from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/regenerator\";\nimport _slicedToArray from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray\";\nimport _asyncToGenerator from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/asyncToGenerator\";\nimport _createForOfIteratorHelper from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper\";\nimport _toConsumableArray from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/toConsumableArray\";\nimport _classCallCheck from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass\";\n\n/*\n  Copyright 2019 Google LLC\n\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport { cacheNames } from 'workbox-core/_private/cacheNames.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport { waitUntil } from 'workbox-core/_private/waitUntil.js';\nimport { createCacheKey } from './utils/createCacheKey.js';\nimport { PrecacheInstallReportPlugin } from './utils/PrecacheInstallReportPlugin.js';\nimport { PrecacheCacheKeyPlugin } from './utils/PrecacheCacheKeyPlugin.js';\nimport { printCleanupDetails } from './utils/printCleanupDetails.js';\nimport { printInstallDetails } from './utils/printInstallDetails.js';\nimport { PrecacheStrategy } from './PrecacheStrategy.js';\nimport './_version.js';\n/**\n * Performs efficient precaching of assets.\n *\n * @memberof module:workbox-precaching\n */\n\nvar PrecacheController = /*#__PURE__*/function () {\n  /**\n   * Create a new PrecacheController.\n   *\n   * @param {Object} [options]\n   * @param {string} [options.cacheName] The cache to use for precaching.\n   * @param {string} [options.plugins] Plugins to use when precaching as well\n   * as responding to fetch events for precached assets.\n   * @param {boolean} [options.fallbackToNetwork=true] Whether to attempt to\n   * get the response from the network if there's a precache miss.\n   */\n  function PrecacheController() {\n    var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n        cacheName = _ref.cacheName,\n        _ref$plugins = _ref.plugins,\n        plugins = _ref$plugins === void 0 ? [] : _ref$plugins,\n        _ref$fallbackToNetwor = _ref.fallbackToNetwork,\n        fallbackToNetwork = _ref$fallbackToNetwor === void 0 ? true : _ref$fallbackToNetwor;\n\n    _classCallCheck(this, PrecacheController);\n\n    this._urlsToCacheKeys = new Map();\n    this._urlsToCacheModes = new Map();\n    this._cacheKeysToIntegrities = new Map();\n    this._strategy = new PrecacheStrategy({\n      cacheName: cacheNames.getPrecacheName(cacheName),\n      plugins: [].concat(_toConsumableArray(plugins), [new PrecacheCacheKeyPlugin({\n        precacheController: this\n      })]),\n      fallbackToNetwork: fallbackToNetwork\n    }); // Bind the install and activate methods to the instance.\n\n    this.install = this.install.bind(this);\n    this.activate = this.activate.bind(this);\n  }\n  /**\n   * @type {module:workbox-precaching.PrecacheStrategy} The strategy created by this controller and\n   * used to cache assets and respond to fetch events.\n   */\n\n\n  _createClass(PrecacheController, [{\n    key: \"precache\",\n\n    /**\n     * Adds items to the precache list, removing any duplicates and\n     * stores the files in the\n     * [\"precache cache\"]{@link module:workbox-core.cacheNames} when the service\n     * worker installs.\n     *\n     * This method can be called multiple times.\n     *\n     * @param {Array<Object|string>} [entries=[]] Array of entries to precache.\n     */\n    value: function precache(entries) {\n      this.addToCacheList(entries);\n\n      if (!this._installAndActiveListenersAdded) {\n        self.addEventListener('install', this.install);\n        self.addEventListener('activate', this.activate);\n        this._installAndActiveListenersAdded = true;\n      }\n    }\n    /**\n     * This method will add items to the precache list, removing duplicates\n     * and ensuring the information is valid.\n     *\n     * @param {Array<module:workbox-precaching.PrecacheController.PrecacheEntry|string>} entries\n     *     Array of entries to precache.\n     */\n\n  }, {\n    key: \"addToCacheList\",\n    value: function addToCacheList(entries) {\n      if (process.env.NODE_ENV !== 'production') {\n        assert.isArray(entries, {\n          moduleName: 'workbox-precaching',\n          className: 'PrecacheController',\n          funcName: 'addToCacheList',\n          paramName: 'entries'\n        });\n      }\n\n      var urlsToWarnAbout = [];\n\n      var _iterator = _createForOfIteratorHelper(entries),\n          _step;\n\n      try {\n        for (_iterator.s(); !(_step = _iterator.n()).done;) {\n          var entry = _step.value;\n\n          // See https://github.com/GoogleChrome/workbox/issues/2259\n          if (typeof entry === 'string') {\n            urlsToWarnAbout.push(entry);\n          } else if (entry && entry.revision === undefined) {\n            urlsToWarnAbout.push(entry.url);\n          }\n\n          var _createCacheKey = createCacheKey(entry),\n              cacheKey = _createCacheKey.cacheKey,\n              url = _createCacheKey.url;\n\n          var cacheMode = typeof entry !== 'string' && entry.revision ? 'reload' : 'default';\n\n          if (this._urlsToCacheKeys.has(url) && this._urlsToCacheKeys.get(url) !== cacheKey) {\n            throw new WorkboxError('add-to-cache-list-conflicting-entries', {\n              firstEntry: this._urlsToCacheKeys.get(url),\n              secondEntry: cacheKey\n            });\n          }\n\n          if (typeof entry !== 'string' && entry.integrity) {\n            if (this._cacheKeysToIntegrities.has(cacheKey) && this._cacheKeysToIntegrities.get(cacheKey) !== entry.integrity) {\n              throw new WorkboxError('add-to-cache-list-conflicting-integrities', {\n                url: url\n              });\n            }\n\n            this._cacheKeysToIntegrities.set(cacheKey, entry.integrity);\n          }\n\n          this._urlsToCacheKeys.set(url, cacheKey);\n\n          this._urlsToCacheModes.set(url, cacheMode);\n\n          if (urlsToWarnAbout.length > 0) {\n            var warningMessage = \"Workbox is precaching URLs without revision \" + \"info: \".concat(urlsToWarnAbout.join(', '), \"\\nThis is generally NOT safe. \") + \"Learn more at https://bit.ly/wb-precache\";\n\n            if (process.env.NODE_ENV === 'production') {\n              // Use console directly to display this warning without bloating\n              // bundle sizes by pulling in all of the logger codebase in prod.\n              console.warn(warningMessage);\n            } else {\n              logger.warn(warningMessage);\n            }\n          }\n        }\n      } catch (err) {\n        _iterator.e(err);\n      } finally {\n        _iterator.f();\n      }\n    }\n    /**\n     * Precaches new and updated assets. Call this method from the service worker\n     * install event.\n     *\n     * Note: this method calls `event.waitUntil()` for you, so you do not need\n     * to call it yourself in your event handlers.\n     *\n     * @param {ExtendableEvent} event\n     * @return {Promise<module:workbox-precaching.InstallResult>}\n     */\n\n  }, {\n    key: \"install\",\n    value: function install(event) {\n      var _this = this;\n\n      return waitUntil(event, /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {\n        var installReportPlugin, _iterator2, _step2, _step2$value, url, cacheKey, integrity, cacheMode, request, updatedURLs, notUpdatedURLs;\n\n        return _regeneratorRuntime.wrap(function _callee$(_context) {\n          while (1) {\n            switch (_context.prev = _context.next) {\n              case 0:\n                installReportPlugin = new PrecacheInstallReportPlugin();\n\n                _this.strategy.plugins.push(installReportPlugin); // Cache entries one at a time.\n                // See https://github.com/GoogleChrome/workbox/issues/2528\n\n\n                _iterator2 = _createForOfIteratorHelper(_this._urlsToCacheKeys);\n                _context.prev = 3;\n\n                _iterator2.s();\n\n              case 5:\n                if ((_step2 = _iterator2.n()).done) {\n                  _context.next = 14;\n                  break;\n                }\n\n                _step2$value = _slicedToArray(_step2.value, 2), url = _step2$value[0], cacheKey = _step2$value[1];\n                integrity = _this._cacheKeysToIntegrities.get(cacheKey);\n                cacheMode = _this._urlsToCacheModes.get(url);\n                request = new Request(url, {\n                  integrity: integrity,\n                  cache: cacheMode,\n                  credentials: 'same-origin'\n                });\n                _context.next = 12;\n                return Promise.all(_this.strategy.handleAll({\n                  params: {\n                    cacheKey: cacheKey\n                  },\n                  request: request,\n                  event: event\n                }));\n\n              case 12:\n                _context.next = 5;\n                break;\n\n              case 14:\n                _context.next = 19;\n                break;\n\n              case 16:\n                _context.prev = 16;\n                _context.t0 = _context[\"catch\"](3);\n\n                _iterator2.e(_context.t0);\n\n              case 19:\n                _context.prev = 19;\n\n                _iterator2.f();\n\n                return _context.finish(19);\n\n              case 22:\n                updatedURLs = installReportPlugin.updatedURLs, notUpdatedURLs = installReportPlugin.notUpdatedURLs;\n\n                if (process.env.NODE_ENV !== 'production') {\n                  printInstallDetails(updatedURLs, notUpdatedURLs);\n                }\n\n                return _context.abrupt(\"return\", {\n                  updatedURLs: updatedURLs,\n                  notUpdatedURLs: notUpdatedURLs\n                });\n\n              case 25:\n              case \"end\":\n                return _context.stop();\n            }\n          }\n        }, _callee, null, [[3, 16, 19, 22]]);\n      })));\n    }\n    /**\n     * Deletes assets that are no longer present in the current precache manifest.\n     * Call this method from the service worker activate event.\n     *\n     * Note: this method calls `event.waitUntil()` for you, so you do not need\n     * to call it yourself in your event handlers.\n     *\n     * @param {ExtendableEvent} event\n     * @return {Promise<module:workbox-precaching.CleanupResult>}\n     */\n\n  }, {\n    key: \"activate\",\n    value: function activate(event) {\n      var _this2 = this;\n\n      return waitUntil(event, /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {\n        var cache, currentlyCachedRequests, expectedCacheKeys, deletedURLs, _iterator3, _step3, request;\n\n        return _regeneratorRuntime.wrap(function _callee2$(_context2) {\n          while (1) {\n            switch (_context2.prev = _context2.next) {\n              case 0:\n                _context2.next = 2;\n                return self.caches.open(_this2.strategy.cacheName);\n\n              case 2:\n                cache = _context2.sent;\n                _context2.next = 5;\n                return cache.keys();\n\n              case 5:\n                currentlyCachedRequests = _context2.sent;\n                expectedCacheKeys = new Set(_this2._urlsToCacheKeys.values());\n                deletedURLs = [];\n                _iterator3 = _createForOfIteratorHelper(currentlyCachedRequests);\n                _context2.prev = 9;\n\n                _iterator3.s();\n\n              case 11:\n                if ((_step3 = _iterator3.n()).done) {\n                  _context2.next = 19;\n                  break;\n                }\n\n                request = _step3.value;\n\n                if (expectedCacheKeys.has(request.url)) {\n                  _context2.next = 17;\n                  break;\n                }\n\n                _context2.next = 16;\n                return cache.delete(request);\n\n              case 16:\n                deletedURLs.push(request.url);\n\n              case 17:\n                _context2.next = 11;\n                break;\n\n              case 19:\n                _context2.next = 24;\n                break;\n\n              case 21:\n                _context2.prev = 21;\n                _context2.t0 = _context2[\"catch\"](9);\n\n                _iterator3.e(_context2.t0);\n\n              case 24:\n                _context2.prev = 24;\n\n                _iterator3.f();\n\n                return _context2.finish(24);\n\n              case 27:\n                if (process.env.NODE_ENV !== 'production') {\n                  printCleanupDetails(deletedURLs);\n                }\n\n                return _context2.abrupt(\"return\", {\n                  deletedURLs: deletedURLs\n                });\n\n              case 29:\n              case \"end\":\n                return _context2.stop();\n            }\n          }\n        }, _callee2, null, [[9, 21, 24, 27]]);\n      })));\n    }\n    /**\n     * Returns a mapping of a precached URL to the corresponding cache key, taking\n     * into account the revision information for the URL.\n     *\n     * @return {Map<string, string>} A URL to cache key mapping.\n     */\n\n  }, {\n    key: \"getURLsToCacheKeys\",\n    value: function getURLsToCacheKeys() {\n      return this._urlsToCacheKeys;\n    }\n    /**\n     * Returns a list of all the URLs that have been precached by the current\n     * service worker.\n     *\n     * @return {Array<string>} The precached URLs.\n     */\n\n  }, {\n    key: \"getCachedURLs\",\n    value: function getCachedURLs() {\n      return _toConsumableArray(this._urlsToCacheKeys.keys());\n    }\n    /**\n     * Returns the cache key used for storing a given URL. If that URL is\n     * unversioned, like `/index.html', then the cache key will be the original\n     * URL with a search parameter appended to it.\n     *\n     * @param {string} url A URL whose cache key you want to look up.\n     * @return {string} The versioned URL that corresponds to a cache key\n     * for the original URL, or undefined if that URL isn't precached.\n     */\n\n  }, {\n    key: \"getCacheKeyForURL\",\n    value: function getCacheKeyForURL(url) {\n      var urlObject = new URL(url, location.href);\n      return this._urlsToCacheKeys.get(urlObject.href);\n    }\n    /**\n     * This acts as a drop-in replacement for\n     * [`cache.match()`](https://developer.mozilla.org/en-US/docs/Web/API/Cache/match)\n     * with the following differences:\n     *\n     * - It knows what the name of the precache is, and only checks in that cache.\n     * - It allows you to pass in an \"original\" URL without versioning parameters,\n     * and it will automatically look up the correct cache key for the currently\n     * active revision of that URL.\n     *\n     * E.g., `matchPrecache('index.html')` will find the correct precached\n     * response for the currently active service worker, even if the actual cache\n     * key is `'/index.html?__WB_REVISION__=1234abcd'`.\n     *\n     * @param {string|Request} request The key (without revisioning parameters)\n     * to look up in the precache.\n     * @return {Promise<Response|undefined>}\n     */\n\n  }, {\n    key: \"matchPrecache\",\n    value: function () {\n      var _matchPrecache = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3(request) {\n        var url, cacheKey, cache;\n        return _regeneratorRuntime.wrap(function _callee3$(_context3) {\n          while (1) {\n            switch (_context3.prev = _context3.next) {\n              case 0:\n                url = request instanceof Request ? request.url : request;\n                cacheKey = this.getCacheKeyForURL(url);\n\n                if (!cacheKey) {\n                  _context3.next = 7;\n                  break;\n                }\n\n                _context3.next = 5;\n                return self.caches.open(this.strategy.cacheName);\n\n              case 5:\n                cache = _context3.sent;\n                return _context3.abrupt(\"return\", cache.match(cacheKey));\n\n              case 7:\n                return _context3.abrupt(\"return\", undefined);\n\n              case 8:\n              case \"end\":\n                return _context3.stop();\n            }\n          }\n        }, _callee3, this);\n      }));\n\n      function matchPrecache(_x) {\n        return _matchPrecache.apply(this, arguments);\n      }\n\n      return matchPrecache;\n    }()\n    /**\n     * Returns a function that looks up `url` in the precache (taking into\n     * account revision information), and returns the corresponding `Response`.\n     *\n     * @param {string} url The precached URL which will be used to lookup the\n     * `Response`.\n     * @return {module:workbox-routing~handlerCallback}\n     */\n\n  }, {\n    key: \"createHandlerBoundToURL\",\n    value: function createHandlerBoundToURL(url) {\n      var _this3 = this;\n\n      var cacheKey = this.getCacheKeyForURL(url);\n\n      if (!cacheKey) {\n        throw new WorkboxError('non-precached-url', {\n          url: url\n        });\n      }\n\n      return function (options) {\n        options.request = new Request(url);\n        options.params = _objectSpread({\n          cacheKey: cacheKey\n        }, options.params);\n        return _this3.strategy.handle(options);\n      };\n    }\n  }, {\n    key: \"strategy\",\n    get: function get() {\n      return this._strategy;\n    }\n  }]);\n\n  return PrecacheController;\n}();\n\nexport { PrecacheController };","/*\n  Copyright 2019 Google LLC\n\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport { PrecacheController } from '../PrecacheController.js';\nimport '../_version.js';\nvar precacheController;\n/**\n * @return {PrecacheController}\n * @private\n */\n\nexport var getOrCreatePrecacheController = function getOrCreatePrecacheController() {\n  if (!precacheController) {\n    precacheController = new PrecacheController();\n  }\n\n  return precacheController;\n};","/*\n  Copyright 2019 Google LLC\n\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport { Router } from '../Router.js';\nimport '../_version.js';\nvar defaultRouter;\n/**\n * Creates a new, singleton Router instance if one does not exist. If one\n * does already exist, that instance is returned.\n *\n * @private\n * @return {Router}\n */\n\nexport var getOrCreateDefaultRouter = function getOrCreateDefaultRouter() {\n  if (!defaultRouter) {\n    defaultRouter = new Router(); // The helpers that use the default Router assume these listeners exist.\n\n    defaultRouter.addFetchListener();\n    defaultRouter.addCacheListener();\n  }\n\n  return defaultRouter;\n};","/*\n  Copyright 2018 Google LLC\n\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n/**\n * The default HTTP method, 'GET', used when there's no specific method\n * configured for a route.\n *\n * @type {string}\n *\n * @private\n */\n\nexport var defaultMethod = 'GET';\n/**\n * The list of valid HTTP methods associated with requests that could be routed.\n *\n * @type {Array<string>}\n *\n * @private\n */\n\nexport var validMethods = ['DELETE', 'GET', 'HEAD', 'PATCH', 'POST', 'PUT'];","/*\n  Copyright 2018 Google LLC\n\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport '../_version.js';\n/**\n * @param {function()|Object} handler Either a function, or an object with a\n * 'handle' method.\n * @return {Object} An object with a handle method.\n *\n * @private\n */\n\nexport var normalizeHandler = function normalizeHandler(handler) {\n  if (handler && typeof handler === 'object') {\n    if (process.env.NODE_ENV !== 'production') {\n      assert.hasMethod(handler, 'handle', {\n        moduleName: 'workbox-routing',\n        className: 'Route',\n        funcName: 'constructor',\n        paramName: 'handler'\n      });\n    }\n\n    return handler;\n  } else {\n    if (process.env.NODE_ENV !== 'production') {\n      assert.isType(handler, 'function', {\n        moduleName: 'workbox-routing',\n        className: 'Route',\n        funcName: 'constructor',\n        paramName: 'handler'\n      });\n    }\n\n    return {\n      handle: handler\n    };\n  }\n};","import _classCallCheck from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass\";\n\n/*\n  Copyright 2018 Google LLC\n\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport { defaultMethod, validMethods } from './utils/constants.js';\nimport { normalizeHandler } from './utils/normalizeHandler.js';\nimport './_version.js';\n/**\n * A `Route` consists of a pair of callback functions, \"match\" and \"handler\".\n * The \"match\" callback determine if a route should be used to \"handle\" a\n * request by returning a non-falsy value if it can. The \"handler\" callback\n * is called when there is a match and should return a Promise that resolves\n * to a `Response`.\n *\n * @memberof module:workbox-routing\n */\n\nvar Route = /*#__PURE__*/function () {\n  /**\n   * Constructor for Route class.\n   *\n   * @param {module:workbox-routing~matchCallback} match\n   * A callback function that determines whether the route matches a given\n   * `fetch` event by returning a non-falsy value.\n   * @param {module:workbox-routing~handlerCallback} handler A callback\n   * function that returns a Promise resolving to a Response.\n   * @param {string} [method='GET'] The HTTP method to match the Route\n   * against.\n   */\n  function Route(match, handler) {\n    var method = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : defaultMethod;\n\n    _classCallCheck(this, Route);\n\n    if (process.env.NODE_ENV !== 'production') {\n      assert.isType(match, 'function', {\n        moduleName: 'workbox-routing',\n        className: 'Route',\n        funcName: 'constructor',\n        paramName: 'match'\n      });\n\n      if (method) {\n        assert.isOneOf(method, validMethods, {\n          paramName: 'method'\n        });\n      }\n    } // These values are referenced directly by Router so cannot be\n    // altered by minificaton.\n\n\n    this.handler = normalizeHandler(handler);\n    this.match = match;\n    this.method = method;\n  }\n  /**\n   *\n   * @param {module:workbox-routing-handlerCallback} handler A callback\n   * function that returns a Promise resolving to a Response\n   */\n\n\n  _createClass(Route, [{\n    key: \"setCatchHandler\",\n    value: function setCatchHandler(handler) {\n      this.catchHandler = normalizeHandler(handler);\n    }\n  }]);\n\n  return Route;\n}();\n\nexport { Route };","import _classCallCheck from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck\";\nimport _inherits from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createSuper\";\n\n/*\n  Copyright 2018 Google LLC\n\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { Route } from './Route.js';\nimport './_version.js';\n/**\n * RegExpRoute makes it easy to create a regular expression based\n * [Route]{@link module:workbox-routing.Route}.\n *\n * For same-origin requests the RegExp only needs to match part of the URL. For\n * requests against third-party servers, you must define a RegExp that matches\n * the start of the URL.\n *\n * [See the module docs for info.]{@link https://developers.google.com/web/tools/workbox/modules/workbox-routing}\n *\n * @memberof module:workbox-routing\n * @extends module:workbox-routing.Route\n */\n\nvar RegExpRoute = /*#__PURE__*/function (_Route) {\n  _inherits(RegExpRoute, _Route);\n\n  var _super = _createSuper(RegExpRoute);\n\n  /**\n   * If the regular expression contains\n   * [capture groups]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp#grouping-back-references},\n   * the captured values will be passed to the\n   * [handler's]{@link module:workbox-routing~handlerCallback} `params`\n   * argument.\n   *\n   * @param {RegExp} regExp The regular expression to match against URLs.\n   * @param {module:workbox-routing~handlerCallback} handler A callback\n   * function that returns a Promise resulting in a Response.\n   * @param {string} [method='GET'] The HTTP method to match the Route\n   * against.\n   */\n  function RegExpRoute(regExp, handler, method) {\n    _classCallCheck(this, RegExpRoute);\n\n    if (process.env.NODE_ENV !== 'production') {\n      assert.isInstance(regExp, RegExp, {\n        moduleName: 'workbox-routing',\n        className: 'RegExpRoute',\n        funcName: 'constructor',\n        paramName: 'pattern'\n      });\n    }\n\n    var match = function match(_ref) {\n      var url = _ref.url;\n      var result = regExp.exec(url.href); // Return immediately if there's no match.\n\n      if (!result) {\n        return;\n      } // Require that the match start at the first character in the URL string\n      // if it's a cross-origin request.\n      // See https://github.com/GoogleChrome/workbox/issues/281 for the context\n      // behind this behavior.\n\n\n      if (url.origin !== location.origin && result.index !== 0) {\n        if (process.env.NODE_ENV !== 'production') {\n          logger.debug(\"The regular expression '\".concat(regExp, \"' only partially matched \") + \"against the cross-origin URL '\".concat(url, \"'. RegExpRoute's will only \") + \"handle cross-origin requests if they match the entire URL.\");\n        }\n\n        return;\n      } // If the route matches, but there aren't any capture groups defined, then\n      // this will return [], which is truthy and therefore sufficient to\n      // indicate a match.\n      // If there are capture groups, then it will return their values.\n\n\n      return result.slice(1);\n    };\n\n    return _super.call(this, match, handler, method);\n  }\n\n  return RegExpRoute;\n}(Route);\n\nexport { RegExpRoute };","import _createForOfIteratorHelper from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper\";\nimport _regeneratorRuntime from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/regenerator\";\nimport _asyncToGenerator from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/asyncToGenerator\";\nimport _construct from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/construct\";\nimport _toConsumableArray from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/toConsumableArray\";\nimport _classCallCheck from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass\";\n\n/*\n  Copyright 2018 Google LLC\n\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport { getFriendlyURL } from 'workbox-core/_private/getFriendlyURL.js';\nimport { defaultMethod } from './utils/constants.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { normalizeHandler } from './utils/normalizeHandler.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport './_version.js';\n/**\n * The Router can be used to process a FetchEvent through one or more\n * [Routes]{@link module:workbox-routing.Route} responding  with a Request if\n * a matching route exists.\n *\n * If no route matches a given a request, the Router will use a \"default\"\n * handler if one is defined.\n *\n * Should the matching Route throw an error, the Router will use a \"catch\"\n * handler if one is defined to gracefully deal with issues and respond with a\n * Request.\n *\n * If a request matches multiple routes, the **earliest** registered route will\n * be used to respond to the request.\n *\n * @memberof module:workbox-routing\n */\n\nvar Router = /*#__PURE__*/function () {\n  /**\n   * Initializes a new Router.\n   */\n  function Router() {\n    _classCallCheck(this, Router);\n\n    this._routes = new Map();\n    this._defaultHandlerMap = new Map();\n  }\n  /**\n   * @return {Map<string, Array<module:workbox-routing.Route>>} routes A `Map` of HTTP\n   * method name ('GET', etc.) to an array of all the corresponding `Route`\n   * instances that are registered.\n   */\n\n\n  _createClass(Router, [{\n    key: \"addFetchListener\",\n\n    /**\n     * Adds a fetch event listener to respond to events when a route matches\n     * the event's request.\n     */\n    value: function addFetchListener() {\n      var _this = this;\n\n      // See https://github.com/Microsoft/TypeScript/issues/28357#issuecomment-436484705\n      self.addEventListener('fetch', function (event) {\n        var request = event.request;\n\n        var responsePromise = _this.handleRequest({\n          request: request,\n          event: event\n        });\n\n        if (responsePromise) {\n          event.respondWith(responsePromise);\n        }\n      });\n    }\n    /**\n     * Adds a message event listener for URLs to cache from the window.\n     * This is useful to cache resources loaded on the page prior to when the\n     * service worker started controlling it.\n     *\n     * The format of the message data sent from the window should be as follows.\n     * Where the `urlsToCache` array may consist of URL strings or an array of\n     * URL string + `requestInit` object (the same as you'd pass to `fetch()`).\n     *\n     * ```\n     * {\n     *   type: 'CACHE_URLS',\n     *   payload: {\n     *     urlsToCache: [\n     *       './script1.js',\n     *       './script2.js',\n     *       ['./script3.js', {mode: 'no-cors'}],\n     *     ],\n     *   },\n     * }\n     * ```\n     */\n\n  }, {\n    key: \"addCacheListener\",\n    value: function addCacheListener() {\n      var _this2 = this;\n\n      // See https://github.com/Microsoft/TypeScript/issues/28357#issuecomment-436484705\n      self.addEventListener('message', function (event) {\n        if (event.data && event.data.type === 'CACHE_URLS') {\n          var payload = event.data.payload;\n\n          if (process.env.NODE_ENV !== 'production') {\n            logger.debug(\"Caching URLs from the window\", payload.urlsToCache);\n          }\n\n          var requestPromises = Promise.all(payload.urlsToCache.map(function (entry) {\n            if (typeof entry === 'string') {\n              entry = [entry];\n            }\n\n            var request = _construct(Request, _toConsumableArray(entry));\n\n            return _this2.handleRequest({\n              request: request,\n              event: event\n            }); // TODO(philipwalton): TypeScript errors without this typecast for\n            // some reason (probably a bug). The real type here should work but\n            // doesn't: `Array<Promise<Response> | undefined>`.\n          })); // TypeScript\n\n          event.waitUntil(requestPromises); // If a MessageChannel was used, reply to the message on success.\n\n          if (event.ports && event.ports[0]) {\n            requestPromises.then(function () {\n              return event.ports[0].postMessage(true);\n            });\n          }\n        }\n      });\n    }\n    /**\n     * Apply the routing rules to a FetchEvent object to get a Response from an\n     * appropriate Route's handler.\n     *\n     * @param {Object} options\n     * @param {Request} options.request The request to handle.\n     * @param {ExtendableEvent} options.event The event that triggered the\n     *     request.\n     * @return {Promise<Response>|undefined} A promise is returned if a\n     *     registered route can handle the request. If there is no matching\n     *     route and there's no `defaultHandler`, `undefined` is returned.\n     */\n\n  }, {\n    key: \"handleRequest\",\n    value: function handleRequest(_ref) {\n      var _this3 = this;\n\n      var request = _ref.request,\n          event = _ref.event;\n\n      if (process.env.NODE_ENV !== 'production') {\n        assert.isInstance(request, Request, {\n          moduleName: 'workbox-routing',\n          className: 'Router',\n          funcName: 'handleRequest',\n          paramName: 'options.request'\n        });\n      }\n\n      var url = new URL(request.url, location.href);\n\n      if (!url.protocol.startsWith('http')) {\n        if (process.env.NODE_ENV !== 'production') {\n          logger.debug(\"Workbox Router only supports URLs that start with 'http'.\");\n        }\n\n        return;\n      }\n\n      var sameOrigin = url.origin === location.origin;\n\n      var _this$findMatchingRou = this.findMatchingRoute({\n        event: event,\n        request: request,\n        sameOrigin: sameOrigin,\n        url: url\n      }),\n          params = _this$findMatchingRou.params,\n          route = _this$findMatchingRou.route;\n\n      var handler = route && route.handler;\n      var debugMessages = [];\n\n      if (process.env.NODE_ENV !== 'production') {\n        if (handler) {\n          debugMessages.push([\"Found a route to handle this request:\", route]);\n\n          if (params) {\n            debugMessages.push([\"Passing the following params to the route's handler:\", params]);\n          }\n        }\n      } // If we don't have a handler because there was no matching route, then\n      // fall back to defaultHandler if that's defined.\n\n\n      var method = request.method;\n\n      if (!handler && this._defaultHandlerMap.has(method)) {\n        if (process.env.NODE_ENV !== 'production') {\n          debugMessages.push(\"Failed to find a matching route. Falling \" + \"back to the default handler for \".concat(method, \".\"));\n        }\n\n        handler = this._defaultHandlerMap.get(method);\n      }\n\n      if (!handler) {\n        if (process.env.NODE_ENV !== 'production') {\n          // No handler so Workbox will do nothing. If logs is set of debug\n          // i.e. verbose, we should print out this information.\n          logger.debug(\"No route found for: \".concat(getFriendlyURL(url)));\n        }\n\n        return;\n      }\n\n      if (process.env.NODE_ENV !== 'production') {\n        // We have a handler, meaning Workbox is going to handle the route.\n        // print the routing details to the console.\n        logger.groupCollapsed(\"Router is responding to: \".concat(getFriendlyURL(url)));\n        debugMessages.forEach(function (msg) {\n          if (Array.isArray(msg)) {\n            logger.log.apply(logger, _toConsumableArray(msg));\n          } else {\n            logger.log(msg);\n          }\n        });\n        logger.groupEnd();\n      } // Wrap in try and catch in case the handle method throws a synchronous\n      // error. It should still callback to the catch handler.\n\n\n      var responsePromise;\n\n      try {\n        responsePromise = handler.handle({\n          url: url,\n          request: request,\n          event: event,\n          params: params\n        });\n      } catch (err) {\n        responsePromise = Promise.reject(err);\n      } // Get route's catch handler, if it exists\n\n\n      var catchHandler = route && route.catchHandler;\n\n      if (responsePromise instanceof Promise && (this._catchHandler || catchHandler)) {\n        responsePromise = responsePromise.catch( /*#__PURE__*/function () {\n          var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(err) {\n            return _regeneratorRuntime.wrap(function _callee$(_context) {\n              while (1) {\n                switch (_context.prev = _context.next) {\n                  case 0:\n                    if (!catchHandler) {\n                      _context.next = 11;\n                      break;\n                    }\n\n                    if (process.env.NODE_ENV !== 'production') {\n                      // Still include URL here as it will be async from the console group\n                      // and may not make sense without the URL\n                      logger.groupCollapsed(\"Error thrown when responding to: \" + \" \".concat(getFriendlyURL(url), \". Falling back to route's Catch Handler.\"));\n                      logger.error(\"Error thrown by:\", route);\n                      logger.error(err);\n                      logger.groupEnd();\n                    }\n\n                    _context.prev = 2;\n                    _context.next = 5;\n                    return catchHandler.handle({\n                      url: url,\n                      request: request,\n                      event: event,\n                      params: params\n                    });\n\n                  case 5:\n                    return _context.abrupt(\"return\", _context.sent);\n\n                  case 8:\n                    _context.prev = 8;\n                    _context.t0 = _context[\"catch\"](2);\n                    err = _context.t0;\n\n                  case 11:\n                    if (!_this3._catchHandler) {\n                      _context.next = 14;\n                      break;\n                    }\n\n                    if (process.env.NODE_ENV !== 'production') {\n                      // Still include URL here as it will be async from the console group\n                      // and may not make sense without the URL\n                      logger.groupCollapsed(\"Error thrown when responding to: \" + \" \".concat(getFriendlyURL(url), \". Falling back to global Catch Handler.\"));\n                      logger.error(\"Error thrown by:\", route);\n                      logger.error(err);\n                      logger.groupEnd();\n                    }\n\n                    return _context.abrupt(\"return\", _this3._catchHandler.handle({\n                      url: url,\n                      request: request,\n                      event: event\n                    }));\n\n                  case 14:\n                    throw err;\n\n                  case 15:\n                  case \"end\":\n                    return _context.stop();\n                }\n              }\n            }, _callee, null, [[2, 8]]);\n          }));\n\n          return function (_x) {\n            return _ref2.apply(this, arguments);\n          };\n        }());\n      }\n\n      return responsePromise;\n    }\n    /**\n     * Checks a request and URL (and optionally an event) against the list of\n     * registered routes, and if there's a match, returns the corresponding\n     * route along with any params generated by the match.\n     *\n     * @param {Object} options\n     * @param {URL} options.url\n     * @param {boolean} options.sameOrigin The result of comparing `url.origin`\n     *     against the current origin.\n     * @param {Request} options.request The request to match.\n     * @param {Event} options.event The corresponding event.\n     * @return {Object} An object with `route` and `params` properties.\n     *     They are populated if a matching route was found or `undefined`\n     *     otherwise.\n     */\n\n  }, {\n    key: \"findMatchingRoute\",\n    value: function findMatchingRoute(_ref3) {\n      var url = _ref3.url,\n          sameOrigin = _ref3.sameOrigin,\n          request = _ref3.request,\n          event = _ref3.event;\n      var routes = this._routes.get(request.method) || [];\n\n      var _iterator = _createForOfIteratorHelper(routes),\n          _step;\n\n      try {\n        for (_iterator.s(); !(_step = _iterator.n()).done;) {\n          var route = _step.value;\n          var params = void 0;\n          var matchResult = route.match({\n            url: url,\n            sameOrigin: sameOrigin,\n            request: request,\n            event: event\n          });\n\n          if (matchResult) {\n            if (process.env.NODE_ENV !== 'production') {\n              // Warn developers that using an async matchCallback is almost always\n              // not the right thing to do. \n              if (matchResult instanceof Promise) {\n                logger.warn(\"While routing \".concat(getFriendlyURL(url), \", an async \") + \"matchCallback function was used. Please convert the \" + \"following route to use a synchronous matchCallback function:\", route);\n              }\n            } // See https://github.com/GoogleChrome/workbox/issues/2079\n\n\n            params = matchResult;\n\n            if (Array.isArray(matchResult) && matchResult.length === 0) {\n              // Instead of passing an empty array in as params, use undefined.\n              params = undefined;\n            } else if (matchResult.constructor === Object && Object.keys(matchResult).length === 0) {\n              // Instead of passing an empty object in as params, use undefined.\n              params = undefined;\n            } else if (typeof matchResult === 'boolean') {\n              // For the boolean value true (rather than just something truth-y),\n              // don't set params.\n              // See https://github.com/GoogleChrome/workbox/pull/2134#issuecomment-513924353\n              params = undefined;\n            } // Return early if have a match.\n\n\n            return {\n              route: route,\n              params: params\n            };\n          }\n        } // If no match was found above, return and empty object.\n\n      } catch (err) {\n        _iterator.e(err);\n      } finally {\n        _iterator.f();\n      }\n\n      return {};\n    }\n    /**\n     * Define a default `handler` that's called when no routes explicitly\n     * match the incoming request.\n     *\n     * Each HTTP method ('GET', 'POST', etc.) gets its own default handler.\n     *\n     * Without a default handler, unmatched requests will go against the\n     * network as if there were no service worker present.\n     *\n     * @param {module:workbox-routing~handlerCallback} handler A callback\n     * function that returns a Promise resulting in a Response.\n     * @param {string} [method='GET'] The HTTP method to associate with this\n     * default handler. Each method has its own default.\n     */\n\n  }, {\n    key: \"setDefaultHandler\",\n    value: function setDefaultHandler(handler) {\n      var method = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultMethod;\n\n      this._defaultHandlerMap.set(method, normalizeHandler(handler));\n    }\n    /**\n     * If a Route throws an error while handling a request, this `handler`\n     * will be called and given a chance to provide a response.\n     *\n     * @param {module:workbox-routing~handlerCallback} handler A callback\n     * function that returns a Promise resulting in a Response.\n     */\n\n  }, {\n    key: \"setCatchHandler\",\n    value: function setCatchHandler(handler) {\n      this._catchHandler = normalizeHandler(handler);\n    }\n    /**\n     * Registers a route with the router.\n     *\n     * @param {module:workbox-routing.Route} route The route to register.\n     */\n\n  }, {\n    key: \"registerRoute\",\n    value: function registerRoute(route) {\n      if (process.env.NODE_ENV !== 'production') {\n        assert.isType(route, 'object', {\n          moduleName: 'workbox-routing',\n          className: 'Router',\n          funcName: 'registerRoute',\n          paramName: 'route'\n        });\n        assert.hasMethod(route, 'match', {\n          moduleName: 'workbox-routing',\n          className: 'Router',\n          funcName: 'registerRoute',\n          paramName: 'route'\n        });\n        assert.isType(route.handler, 'object', {\n          moduleName: 'workbox-routing',\n          className: 'Router',\n          funcName: 'registerRoute',\n          paramName: 'route'\n        });\n        assert.hasMethod(route.handler, 'handle', {\n          moduleName: 'workbox-routing',\n          className: 'Router',\n          funcName: 'registerRoute',\n          paramName: 'route.handler'\n        });\n        assert.isType(route.method, 'string', {\n          moduleName: 'workbox-routing',\n          className: 'Router',\n          funcName: 'registerRoute',\n          paramName: 'route.method'\n        });\n      }\n\n      if (!this._routes.has(route.method)) {\n        this._routes.set(route.method, []);\n      } // Give precedence to all of the earlier routes by adding this additional\n      // route to the end of the array.\n\n\n      this._routes.get(route.method).push(route);\n    }\n    /**\n     * Unregisters a route with the router.\n     *\n     * @param {module:workbox-routing.Route} route The route to unregister.\n     */\n\n  }, {\n    key: \"unregisterRoute\",\n    value: function unregisterRoute(route) {\n      if (!this._routes.has(route.method)) {\n        throw new WorkboxError('unregister-route-but-not-found-with-method', {\n          method: route.method\n        });\n      }\n\n      var routeIndex = this._routes.get(route.method).indexOf(route);\n\n      if (routeIndex > -1) {\n        this._routes.get(route.method).splice(routeIndex, 1);\n      } else {\n        throw new WorkboxError('unregister-route-route-not-registered');\n      }\n    }\n  }, {\n    key: \"routes\",\n    get: function get() {\n      return this._routes;\n    }\n  }]);\n\n  return Router;\n}();\n\nexport { Router };","/*\n  Copyright 2019 Google LLC\n\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport { Route } from './Route.js';\nimport { RegExpRoute } from './RegExpRoute.js';\nimport { getOrCreateDefaultRouter } from './utils/getOrCreateDefaultRouter.js';\nimport './_version.js';\n/**\n * Easily register a RegExp, string, or function with a caching\n * strategy to a singleton Router instance.\n *\n * This method will generate a Route for you if needed and\n * call [registerRoute()]{@link module:workbox-routing.Router#registerRoute}.\n *\n * @param {RegExp|string|module:workbox-routing.Route~matchCallback|module:workbox-routing.Route} capture\n * If the capture param is a `Route`, all other arguments will be ignored.\n * @param {module:workbox-routing~handlerCallback} [handler] A callback\n * function that returns a Promise resulting in a Response. This parameter\n * is required if `capture` is not a `Route` object.\n * @param {string} [method='GET'] The HTTP method to match the Route\n * against.\n * @return {module:workbox-routing.Route} The generated `Route`(Useful for\n * unregistering).\n *\n * @memberof module:workbox-routing\n */\n\nfunction registerRoute(capture, handler, method) {\n  var route;\n\n  if (typeof capture === 'string') {\n    var captureUrl = new URL(capture, location.href);\n\n    if (process.env.NODE_ENV !== 'production') {\n      if (!(capture.startsWith('/') || capture.startsWith('http'))) {\n        throw new WorkboxError('invalid-string', {\n          moduleName: 'workbox-routing',\n          funcName: 'registerRoute',\n          paramName: 'capture'\n        });\n      } // We want to check if Express-style wildcards are in the pathname only.\n      // TODO: Remove this log message in v4.\n\n\n      var valueToCheck = capture.startsWith('http') ? captureUrl.pathname : capture; // See https://github.com/pillarjs/path-to-regexp#parameters\n\n      var wildcards = '[*:?+]';\n\n      if (new RegExp(\"\".concat(wildcards)).exec(valueToCheck)) {\n        logger.debug(\"The '$capture' parameter contains an Express-style wildcard \" + \"character (\".concat(wildcards, \"). Strings are now always interpreted as \") + \"exact matches; use a RegExp for partial or wildcard matches.\");\n      }\n    }\n\n    var matchCallback = function matchCallback(_ref) {\n      var url = _ref.url;\n\n      if (process.env.NODE_ENV !== 'production') {\n        if (url.pathname === captureUrl.pathname && url.origin !== captureUrl.origin) {\n          logger.debug(\"\".concat(capture, \" only partially matches the cross-origin URL \") + \"\".concat(url, \". This route will only handle cross-origin requests \") + \"if they match the entire URL.\");\n        }\n      }\n\n      return url.href === captureUrl.href;\n    }; // If `capture` is a string then `handler` and `method` must be present.\n\n\n    route = new Route(matchCallback, handler, method);\n  } else if (capture instanceof RegExp) {\n    // If `capture` is a `RegExp` then `handler` and `method` must be present.\n    route = new RegExpRoute(capture, handler, method);\n  } else if (typeof capture === 'function') {\n    // If `capture` is a function then `handler` and `method` must be present.\n    route = new Route(capture, handler, method);\n  } else if (capture instanceof Route) {\n    route = capture;\n  } else {\n    throw new WorkboxError('unsupported-route-type', {\n      moduleName: 'workbox-routing',\n      funcName: 'registerRoute',\n      paramName: 'capture'\n    });\n  }\n\n  var defaultRouter = getOrCreateDefaultRouter();\n  defaultRouter.registerRoute(route);\n  return route;\n}\n\nexport { registerRoute };","import _toConsumableArray from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/toConsumableArray\";\n\n/*\n  Copyright 2018 Google LLC\n\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n/**\n * Removes any URL search parameters that should be ignored.\n *\n * @param {URL} urlObject The original URL.\n * @param {Array<RegExp>} ignoreURLParametersMatching RegExps to test against\n * each search parameter name. Matches mean that the search parameter should be\n * ignored.\n * @return {URL} The URL with any ignored search parameters removed.\n *\n * @private\n * @memberof module:workbox-precaching\n */\n\nexport function removeIgnoredSearchParams(urlObject) {\n  var ignoreURLParametersMatching = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n\n  var _loop = function _loop() {\n    var paramName = _arr[_i];\n\n    if (ignoreURLParametersMatching.some(function (regExp) {\n      return regExp.test(paramName);\n    })) {\n      urlObject.searchParams.delete(paramName);\n    }\n  };\n\n  // Convert the iterable into an array at the start of the loop to make sure\n  // deletion doesn't mess up iteration.\n  for (var _i = 0, _arr = _toConsumableArray(urlObject.searchParams.keys()); _i < _arr.length; _i++) {\n    _loop();\n  }\n\n  return urlObject;\n}","import _regeneratorRuntime from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/regenerator\";\nimport _createForOfIteratorHelper from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper\";\n\nvar _marked = /*#__PURE__*/_regeneratorRuntime.mark(generateURLVariations);\n\n/*\n  Copyright 2019 Google LLC\n\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport { removeIgnoredSearchParams } from './removeIgnoredSearchParams.js';\nimport '../_version.js';\n/**\n * Generator function that yields possible variations on the original URL to\n * check, one at a time.\n *\n * @param {string} url\n * @param {Object} options\n *\n * @private\n * @memberof module:workbox-precaching\n */\n\nexport function generateURLVariations(url) {\n  var _ref,\n      _ref$ignoreURLParamet,\n      ignoreURLParametersMatching,\n      _ref$directoryIndex,\n      directoryIndex,\n      _ref$cleanURLs,\n      cleanURLs,\n      urlManipulation,\n      urlObject,\n      urlWithoutIgnoredParams,\n      directoryURL,\n      cleanURL,\n      additionalURLs,\n      _iterator,\n      _step,\n      urlToAttempt,\n      _args = arguments;\n\n  return _regeneratorRuntime.wrap(function generateURLVariations$(_context) {\n    while (1) {\n      switch (_context.prev = _context.next) {\n        case 0:\n          _ref = _args.length > 1 && _args[1] !== undefined ? _args[1] : {}, _ref$ignoreURLParamet = _ref.ignoreURLParametersMatching, ignoreURLParametersMatching = _ref$ignoreURLParamet === void 0 ? [/^utm_/, /^fbclid$/] : _ref$ignoreURLParamet, _ref$directoryIndex = _ref.directoryIndex, directoryIndex = _ref$directoryIndex === void 0 ? 'index.html' : _ref$directoryIndex, _ref$cleanURLs = _ref.cleanURLs, cleanURLs = _ref$cleanURLs === void 0 ? true : _ref$cleanURLs, urlManipulation = _ref.urlManipulation;\n          urlObject = new URL(url, location.href);\n          urlObject.hash = '';\n          _context.next = 5;\n          return urlObject.href;\n\n        case 5:\n          urlWithoutIgnoredParams = removeIgnoredSearchParams(urlObject, ignoreURLParametersMatching);\n          _context.next = 8;\n          return urlWithoutIgnoredParams.href;\n\n        case 8:\n          if (!(directoryIndex && urlWithoutIgnoredParams.pathname.endsWith('/'))) {\n            _context.next = 13;\n            break;\n          }\n\n          directoryURL = new URL(urlWithoutIgnoredParams.href);\n          directoryURL.pathname += directoryIndex;\n          _context.next = 13;\n          return directoryURL.href;\n\n        case 13:\n          if (!cleanURLs) {\n            _context.next = 18;\n            break;\n          }\n\n          cleanURL = new URL(urlWithoutIgnoredParams.href);\n          cleanURL.pathname += '.html';\n          _context.next = 18;\n          return cleanURL.href;\n\n        case 18:\n          if (!urlManipulation) {\n            _context.next = 37;\n            break;\n          }\n\n          additionalURLs = urlManipulation({\n            url: urlObject\n          });\n          _iterator = _createForOfIteratorHelper(additionalURLs);\n          _context.prev = 21;\n\n          _iterator.s();\n\n        case 23:\n          if ((_step = _iterator.n()).done) {\n            _context.next = 29;\n            break;\n          }\n\n          urlToAttempt = _step.value;\n          _context.next = 27;\n          return urlToAttempt.href;\n\n        case 27:\n          _context.next = 23;\n          break;\n\n        case 29:\n          _context.next = 34;\n          break;\n\n        case 31:\n          _context.prev = 31;\n          _context.t0 = _context[\"catch\"](21);\n\n          _iterator.e(_context.t0);\n\n        case 34:\n          _context.prev = 34;\n\n          _iterator.f();\n\n          return _context.finish(34);\n\n        case 37:\n        case \"end\":\n          return _context.stop();\n      }\n    }\n  }, _marked, null, [[21, 31, 34, 37]]);\n}","import _createForOfIteratorHelper from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper\";\nimport _classCallCheck from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck\";\nimport _inherits from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createSuper\";\n\n/*\n  Copyright 2020 Google LLC\n\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { getFriendlyURL } from 'workbox-core/_private/getFriendlyURL.js';\nimport { Route } from 'workbox-routing/Route.js';\nimport { generateURLVariations } from './utils/generateURLVariations.js';\nimport './_version.js';\n/**\n * A subclass of [Route]{@link module:workbox-routing.Route} that takes a\n * [PrecacheController]{@link module:workbox-precaching.PrecacheController}\n * instance and uses it to match incoming requests and handle fetching\n * responses from the precache.\n *\n * @memberof module:workbox-precaching\n * @extends module:workbox-routing.Route\n */\n\nvar PrecacheRoute = /*#__PURE__*/function (_Route) {\n  _inherits(PrecacheRoute, _Route);\n\n  var _super = _createSuper(PrecacheRoute);\n\n  /**\n   * @param {PrecacheController} precacheController A `PrecacheController`\n   * instance used to both match requests and respond to fetch events.\n   * @param {Object} [options] Options to control how requests are matched\n   * against the list of precached URLs.\n   * @param {string} [options.directoryIndex=index.html] The `directoryIndex` will\n   * check cache entries for a URLs ending with '/' to see if there is a hit when\n   * appending the `directoryIndex` value.\n   * @param {Array<RegExp>} [options.ignoreURLParametersMatching=[/^utm_/, /^fbclid$/]] An\n   * array of regex's to remove search params when looking for a cache match.\n   * @param {boolean} [options.cleanURLs=true] The `cleanURLs` option will\n   * check the cache for the URL with a `.html` added to the end of the end.\n   * @param {module:workbox-precaching~urlManipulation} [options.urlManipulation]\n   * This is a function that should take a URL and return an array of\n   * alternative URLs that should be checked for precache matches.\n   */\n  function PrecacheRoute(precacheController, options) {\n    _classCallCheck(this, PrecacheRoute);\n\n    var match = function match(_ref) {\n      var request = _ref.request;\n      var urlsToCacheKeys = precacheController.getURLsToCacheKeys();\n\n      var _iterator = _createForOfIteratorHelper(generateURLVariations(request.url, options)),\n          _step;\n\n      try {\n        for (_iterator.s(); !(_step = _iterator.n()).done;) {\n          var possibleURL = _step.value;\n          var cacheKey = urlsToCacheKeys.get(possibleURL);\n\n          if (cacheKey) {\n            return {\n              cacheKey: cacheKey\n            };\n          }\n        }\n      } catch (err) {\n        _iterator.e(err);\n      } finally {\n        _iterator.f();\n      }\n\n      if (process.env.NODE_ENV !== 'production') {\n        logger.debug(\"Precaching did not find a match for \" + getFriendlyURL(request.url));\n      }\n\n      return;\n    };\n\n    return _super.call(this, match, precacheController.strategy);\n  }\n\n  return PrecacheRoute;\n}(Route);\n\nexport { PrecacheRoute };","/*\n  Copyright 2018 Google LLC\n\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { getFriendlyURL } from 'workbox-core/_private/getFriendlyURL.js';\nimport '../_version.js';\nexport var messages = {\n  strategyStart: function strategyStart(strategyName, request) {\n    return \"Using \".concat(strategyName, \" to respond to '\").concat(getFriendlyURL(request.url), \"'\");\n  },\n  printFinalResponse: function printFinalResponse(response) {\n    if (response) {\n      logger.groupCollapsed(\"View the final response here.\");\n      logger.log(response || '[No response returned]');\n      logger.groupEnd();\n    }\n  }\n};","/*\n  Copyright 2019 Google LLC\n\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport { addRoute } from './addRoute.js';\nimport { precache } from './precache.js';\nimport './_version.js';\n/**\n * This method will add entries to the precache list and add a route to\n * respond to fetch events.\n *\n * This is a convenience method that will call\n * [precache()]{@link module:workbox-precaching.precache} and\n * [addRoute()]{@link module:workbox-precaching.addRoute} in a single call.\n *\n * @param {Array<Object|string>} entries Array of entries to precache.\n * @param {Object} [options] See\n * [PrecacheRoute options]{@link module:workbox-precaching.PrecacheRoute}.\n *\n * @memberof module:workbox-precaching\n */\n\nfunction precacheAndRoute(entries, options) {\n  precache(entries);\n  addRoute(options);\n}\n\nexport { precacheAndRoute };","import _regeneratorRuntime from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/regenerator\";\nimport _asyncToGenerator from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/asyncToGenerator\";\n\n/*\n  Copyright 2018 Google LLC\n\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\nexport var cacheOkAndOpaquePlugin = {\n  /**\n   * Returns a valid response (to allow caching) if the status is 200 (OK) or\n   * 0 (opaque).\n   *\n   * @param {Object} options\n   * @param {Response} options.response\n   * @return {Response|null}\n   *\n   * @private\n   */\n  cacheWillUpdate: function () {\n    var _cacheWillUpdate = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(_ref) {\n      var response;\n      return _regeneratorRuntime.wrap(function _callee$(_context) {\n        while (1) {\n          switch (_context.prev = _context.next) {\n            case 0:\n              response = _ref.response;\n\n              if (!(response.status === 200 || response.status === 0)) {\n                _context.next = 3;\n                break;\n              }\n\n              return _context.abrupt(\"return\", response);\n\n            case 3:\n              return _context.abrupt(\"return\", null);\n\n            case 4:\n            case \"end\":\n              return _context.stop();\n          }\n        }\n      }, _callee);\n    }));\n\n    function cacheWillUpdate(_x) {\n      return _cacheWillUpdate.apply(this, arguments);\n    }\n\n    return cacheWillUpdate;\n  }()\n};","import _regeneratorRuntime from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/regenerator\";\nimport _createForOfIteratorHelper from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper\";\nimport _asyncToGenerator from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/asyncToGenerator\";\nimport _classCallCheck from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"/home/runner/work/shlink-web-client/shlink-web-client/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createSuper\";\n\n/*\n  Copyright 2018 Google LLC\n\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport { cacheOkAndOpaquePlugin } from './plugins/cacheOkAndOpaquePlugin.js';\nimport { Strategy } from './Strategy.js';\nimport { messages } from './utils/messages.js';\nimport './_version.js';\n/**\n * An implementation of a\n * [stale-while-revalidate]{@link https://developers.google.com/web/fundamentals/instant-and-offline/offline-cookbook/#stale-while-revalidate}\n * request strategy.\n *\n * Resources are requested from both the cache and the network in parallel.\n * The strategy will respond with the cached version if available, otherwise\n * wait for the network response. The cache is updated with the network response\n * with each successful request.\n *\n * By default, this strategy will cache responses with a 200 status code as\n * well as [opaque responses]{@link https://developers.google.com/web/tools/workbox/guides/handle-third-party-requests}.\n * Opaque responses are cross-origin requests where the response doesn't\n * support [CORS]{@link https://enable-cors.org/}.\n *\n * If the network request fails, and there is no cache match, this will throw\n * a `WorkboxError` exception.\n *\n * @extends module:workbox-strategies.Strategy\n * @memberof module:workbox-strategies\n */\n\nvar StaleWhileRevalidate = /*#__PURE__*/function (_Strategy) {\n  _inherits(StaleWhileRevalidate, _Strategy);\n\n  var _super = _createSuper(StaleWhileRevalidate);\n\n  /**\n   * @param {Object} [options]\n   * @param {string} [options.cacheName] Cache name to store and retrieve\n   * requests. Defaults to cache names provided by\n   * [workbox-core]{@link module:workbox-core.cacheNames}.\n   * @param {Array<Object>} [options.plugins] [Plugins]{@link https://developers.google.com/web/tools/workbox/guides/using-plugins}\n   * to use in conjunction with this caching strategy.\n   * @param {Object} [options.fetchOptions] Values passed along to the\n   * [`init`](https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch#Parameters)\n   * of [non-navigation](https://github.com/GoogleChrome/workbox/issues/1796)\n   * `fetch()` requests made by this strategy.\n   * @param {Object} [options.matchOptions] [`CacheQueryOptions`](https://w3c.github.io/ServiceWorker/#dictdef-cachequeryoptions)\n   */\n  function StaleWhileRevalidate(options) {\n    var _this;\n\n    _classCallCheck(this, StaleWhileRevalidate);\n\n    _this = _super.call(this, options); // If this instance contains no plugins with a 'cacheWillUpdate' callback,\n    // prepend the `cacheOkAndOpaquePlugin` plugin to the plugins list.\n\n    if (!_this.plugins.some(function (p) {\n      return 'cacheWillUpdate' in p;\n    })) {\n      _this.plugins.unshift(cacheOkAndOpaquePlugin);\n    }\n\n    return _this;\n  }\n  /**\n   * @private\n   * @param {Request|string} request A request to run this strategy for.\n   * @param {module:workbox-strategies.StrategyHandler} handler The event that\n   *     triggered the request.\n   * @return {Promise<Response>}\n   */\n\n\n  _createClass(StaleWhileRevalidate, [{\n    key: \"_handle\",\n    value: function () {\n      var _handle2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(request, handler) {\n        var logs, fetchAndCachePromise, response, error, _iterator, _step, log;\n\n        return _regeneratorRuntime.wrap(function _callee$(_context) {\n          while (1) {\n            switch (_context.prev = _context.next) {\n              case 0:\n                logs = [];\n\n                if (process.env.NODE_ENV !== 'production') {\n                  assert.isInstance(request, Request, {\n                    moduleName: 'workbox-strategies',\n                    className: this.constructor.name,\n                    funcName: 'handle',\n                    paramName: 'request'\n                  });\n                }\n\n                fetchAndCachePromise = handler.fetchAndCachePut(request).catch(function () {// Swallow this error because a 'no-response' error will be thrown in\n                  // main handler return flow. This will be in the `waitUntil()` flow.\n                });\n                _context.next = 5;\n                return handler.cacheMatch(request);\n\n              case 5:\n                response = _context.sent;\n\n                if (!response) {\n                  _context.next = 10;\n                  break;\n                }\n\n                if (process.env.NODE_ENV !== 'production') {\n                  logs.push(\"Found a cached response in the '\".concat(this.cacheName, \"'\") + \" cache. Will update with the network response in the background.\");\n                }\n\n                _context.next = 20;\n                break;\n\n              case 10:\n                if (process.env.NODE_ENV !== 'production') {\n                  logs.push(\"No response found in the '\".concat(this.cacheName, \"' cache. \") + \"Will wait for the network response.\");\n                }\n\n                _context.prev = 11;\n                _context.next = 14;\n                return fetchAndCachePromise;\n\n              case 14:\n                response = _context.sent;\n                _context.next = 20;\n                break;\n\n              case 17:\n                _context.prev = 17;\n                _context.t0 = _context[\"catch\"](11);\n                error = _context.t0;\n\n              case 20:\n                if (process.env.NODE_ENV !== 'production') {\n                  logger.groupCollapsed(messages.strategyStart(this.constructor.name, request));\n                  _iterator = _createForOfIteratorHelper(logs);\n\n                  try {\n                    for (_iterator.s(); !(_step = _iterator.n()).done;) {\n                      log = _step.value;\n                      logger.log(log);\n                    }\n                  } catch (err) {\n                    _iterator.e(err);\n                  } finally {\n                    _iterator.f();\n                  }\n\n                  messages.printFinalResponse(response);\n                  logger.groupEnd();\n                }\n\n                if (response) {\n                  _context.next = 23;\n                  break;\n                }\n\n                throw new WorkboxError('no-response', {\n                  url: request.url,\n                  error: error\n                });\n\n              case 23:\n                return _context.abrupt(\"return\", response);\n\n              case 24:\n              case \"end\":\n                return _context.stop();\n            }\n          }\n        }, _callee, this, [[11, 17]]);\n      }));\n\n      function _handle(_x, _x2) {\n        return _handle2.apply(this, arguments);\n      }\n\n      return _handle;\n    }()\n  }]);\n\n  return StaleWhileRevalidate;\n}(Strategy);\n\nexport { StaleWhileRevalidate };","/*\n  Copyright 2019 Google LLC\n\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport './_version.js';\n/**\n * Claim any currently available clients once the service worker\n * becomes active. This is normally used in conjunction with `skipWaiting()`.\n *\n * @memberof module:workbox-core\n */\n\nfunction clientsClaim() {\n  self.addEventListener('activate', function () {\n    return self.clients.claim();\n  });\n}\n\nexport { clientsClaim };","/*\n  Copyright 2019 Google LLC\n\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport { getOrCreatePrecacheController } from './utils/getOrCreatePrecacheController.js';\nimport './_version.js';\n/**\n * Adds items to the precache list, removing any duplicates and\n * stores the files in the\n * [\"precache cache\"]{@link module:workbox-core.cacheNames} when the service\n * worker installs.\n *\n * This method can be called multiple times.\n *\n * Please note: This method **will not** serve any of the cached files for you.\n * It only precaches files. To respond to a network request you call\n * [addRoute()]{@link module:workbox-precaching.addRoute}.\n *\n * If you have a single array of files to precache, you can just call\n * [precacheAndRoute()]{@link module:workbox-precaching.precacheAndRoute}.\n *\n * @param {Array<Object|string>} [entries=[]] Array of entries to precache.\n *\n * @memberof module:workbox-precaching\n */\n\nfunction precache(entries) {\n  var precacheController = getOrCreatePrecacheController();\n  precacheController.precache(entries);\n}\n\nexport { precache };","/// <reference lib=\"webworker\" />\n/* eslint-disable no-restricted-globals */\n\n// This service worker can be customized!\n// See https://developers.google.com/web/tools/workbox/modules\n// for the list of available Workbox modules, or add any other\n// code you'd like.\n// You can also remove this file if you'd prefer not to use a\n// service worker, and the Workbox build step will be skipped.\n\nimport { clientsClaim } from 'workbox-core';\nimport { ExpirationPlugin } from 'workbox-expiration';\nimport { precacheAndRoute, createHandlerBoundToURL } from 'workbox-precaching';\nimport { registerRoute } from 'workbox-routing';\nimport { StaleWhileRevalidate } from 'workbox-strategies';\n\ndeclare const self: ServiceWorkerGlobalScope;\n\nclientsClaim();\n\n// Precache all of the assets generated by your build process.\n// Their URLs are injected into the manifest variable below.\n// This variable must be present somewhere in your service worker file,\n// even if you decide not to use precaching. See https://cra.link/PWA\nprecacheAndRoute(self.__WB_MANIFEST);\n\n// Set up App Shell-style routing, so that all navigation requests\n// are fulfilled with your index.html shell. Learn more at\n// https://developers.google.com/web/fundamentals/architecture/app-shell\nconst fileExtensionRegexp = new RegExp('/[^/?]+\\\\.[^/]+$');\nregisterRoute(\n  // Return false to exempt requests from being fulfilled by index.html.\n  ({ request, url }: { request: Request; url: URL }) => {\n    // If this isn't a navigation, skip.\n    if (request.mode !== 'navigate') {\n      return false;\n    }\n\n    // If this is a URL that starts with /_, skip.\n    if (url.pathname.startsWith('/_')) {\n      return false;\n    }\n\n    // If this looks like a URL for a resource, because it contains\n    // a file extension, skip.\n    if (url.pathname.match(fileExtensionRegexp)) {\n      return false;\n    }\n\n    // Return true to signal that we want to use the handler.\n    return true;\n  },\n  createHandlerBoundToURL(process.env.PUBLIC_URL + '/index.html')\n);\n\n// An example runtime caching route for requests that aren't handled by the\n// precache, in this case same-origin .png requests like those from in public/\nregisterRoute(\n  // Add in any other file extensions or routing criteria as needed.\n  ({ url }) => url.origin === self.location.origin && url.pathname.endsWith('.png'),\n  // Customize this strategy as needed, e.g., by changing to CacheFirst.\n  new StaleWhileRevalidate({\n    cacheName: 'images',\n    plugins: [\n      // Ensure that once this runtime cache reaches a maximum size the\n      // least-recently used images are removed.\n      new ExpirationPlugin({ maxEntries: 50 }),\n    ],\n  })\n);\n\n// This allows the web app to trigger skipWaiting via\n// registration.waiting.postMessage({type: 'SKIP_WAITING'})\nself.addEventListener('message', (event) => {\n  if (event.data && event.data.type === 'SKIP_WAITING') {\n    self.skipWaiting();\n  }\n});\n\n// Any other custom service worker logic can go here.\n","/*\n  Copyright 2019 Google LLC\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport { registerRoute } from 'workbox-routing/registerRoute.js';\nimport { getOrCreatePrecacheController } from './utils/getOrCreatePrecacheController.js';\nimport { PrecacheRoute } from './PrecacheRoute.js';\nimport './_version.js';\n/**\n * Add a `fetch` listener to the service worker that will\n * respond to\n * [network requests]{@link https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API/Using_Service_Workers#Custom_responses_to_requests}\n * with precached assets.\n *\n * Requests for assets that aren't precached, the `FetchEvent` will not be\n * responded to, allowing the event to fall through to other `fetch` event\n * listeners.\n *\n * @param {Object} [options] See\n * [PrecacheRoute options]{@link module:workbox-precaching.PrecacheRoute}.\n *\n * @memberof module:workbox-precaching\n */\n\nfunction addRoute(options) {\n  var precacheController = getOrCreatePrecacheController();\n  var precacheRoute = new PrecacheRoute(precacheController, options);\n  registerRoute(precacheRoute);\n}\n\nexport { addRoute };","/*\n  Copyright 2019 Google LLC\n\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport { getOrCreatePrecacheController } from './utils/getOrCreatePrecacheController.js';\nimport './_version.js';\n/**\n * Helper function that calls\n * {@link PrecacheController#createHandlerBoundToURL} on the default\n * {@link PrecacheController} instance.\n *\n * If you are creating your own {@link PrecacheController}, then call the\n * {@link PrecacheController#createHandlerBoundToURL} on that instance,\n * instead of using this function.\n *\n * @param {string} url The precached URL which will be used to lookup the\n * `Response`.\n * @param {boolean} [fallbackToNetwork=true] Whether to attempt to get the\n * response from the network if there's a precache miss.\n * @return {module:workbox-routing~handlerCallback}\n *\n * @memberof module:workbox-precaching\n */\n\nfunction createHandlerBoundToURL(url) {\n  var precacheController = getOrCreatePrecacheController();\n  return precacheController.createHandlerBoundToURL(url);\n}\n\nexport { createHandlerBoundToURL };"]}