From ef4caa0f07d2d152814ef79527316288da84cbb8 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 1 Nov 2021 16:19:47 +0000 Subject: [PATCH] Updates --- asset-manifest.json | 262 +++++++++--------- index.html | 2 +- service-worker.js | 2 +- service-worker.js.map | 2 +- static/js/4.5490d087.chunk.js | 3 - static/js/4.cd4d259e.chunk.js | 3 + ...SE.txt => 4.cd4d259e.chunk.js.LICENSE.txt} | 0 ...7.chunk.js.map => 4.cd4d259e.chunk.js.map} | 2 +- ...a1b7ba.chunk.js => main.cfd27d45.chunk.js} | 2 +- ...hunk.js.map => main.cfd27d45.chunk.js.map} | 2 +- ...n.5848ee21.js => runtime-main.27c245ed.js} | 4 +- static/js/runtime-main.27c245ed.js.map | 1 + static/js/runtime-main.5848ee21.js.map | 1 - 13 files changed, 143 insertions(+), 143 deletions(-) delete mode 100644 static/js/4.5490d087.chunk.js create mode 100644 static/js/4.cd4d259e.chunk.js rename static/js/{4.5490d087.chunk.js.LICENSE.txt => 4.cd4d259e.chunk.js.LICENSE.txt} (100%) rename static/js/{4.5490d087.chunk.js.map => 4.cd4d259e.chunk.js.map} (99%) rename static/js/{main.7ea1b7ba.chunk.js => main.cfd27d45.chunk.js} (99%) rename static/js/{main.7ea1b7ba.chunk.js.map => main.cfd27d45.chunk.js.map} (99%) rename static/js/{runtime-main.5848ee21.js => runtime-main.27c245ed.js} (89%) create mode 100644 static/js/runtime-main.27c245ed.js.map delete mode 100644 static/js/runtime-main.5848ee21.js.map diff --git a/asset-manifest.json b/asset-manifest.json index 5e9490a..69945c0 100644 --- a/asset-manifest.json +++ b/asset-manifest.json @@ -1,139 +1,139 @@ { "files": { - "static/js/0.bc66b1f6.chunk.js": "./static/js/0.bc66b1f6.chunk.js", - "static/js/0.bc66b1f6.chunk.js.map": "./static/js/0.bc66b1f6.chunk.js.map", - "main.css": "./static/css/main.8a382b2d.chunk.css", - "main.js": "./static/js/main.7ea1b7ba.chunk.js", - "main.js.map": "./static/js/main.7ea1b7ba.chunk.js.map", - "polyfills-dom.js": "./static/js/polyfills-dom.e443d203.chunk.js", - "polyfills-dom.js.map": "./static/js/polyfills-dom.e443d203.chunk.js.map", - "runtime-main.js": "./static/js/runtime-main.5848ee21.js", - "runtime-main.js.map": "./static/js/runtime-main.5848ee21.js.map", - "static/css/4.532f36fa.chunk.css": "./static/css/4.532f36fa.chunk.css", - "static/js/4.5490d087.chunk.js": "./static/js/4.5490d087.chunk.js", - "static/js/4.5490d087.chunk.js.map": "./static/js/4.5490d087.chunk.js.map", - "static/js/5.5d0b3ffd.chunk.js": "./static/js/5.5d0b3ffd.chunk.js", - "static/js/5.5d0b3ffd.chunk.js.map": "./static/js/5.5d0b3ffd.chunk.js.map", - "static/js/6.28ab63c9.chunk.js": "./static/js/6.28ab63c9.chunk.js", - "static/js/6.28ab63c9.chunk.js.map": "./static/js/6.28ab63c9.chunk.js.map", - "static/js/7.326dd770.chunk.js": "./static/js/7.326dd770.chunk.js", - "static/js/7.326dd770.chunk.js.map": "./static/js/7.326dd770.chunk.js.map", - "static/js/8.20357bb9.chunk.js": "./static/js/8.20357bb9.chunk.js", - "static/js/8.20357bb9.chunk.js.map": "./static/js/8.20357bb9.chunk.js.map", - "static/js/9.e2679d39.chunk.js": "./static/js/9.e2679d39.chunk.js", - "static/js/9.e2679d39.chunk.js.map": "./static/js/9.e2679d39.chunk.js.map", - "static/js/10.8936305f.chunk.js": "./static/js/10.8936305f.chunk.js", - "static/js/10.8936305f.chunk.js.map": "./static/js/10.8936305f.chunk.js.map", - "static/js/11.07ef5b48.chunk.js": "./static/js/11.07ef5b48.chunk.js", - "static/js/11.07ef5b48.chunk.js.map": "./static/js/11.07ef5b48.chunk.js.map", - "static/js/12.647bd439.chunk.js": "./static/js/12.647bd439.chunk.js", - "static/js/12.647bd439.chunk.js.map": "./static/js/12.647bd439.chunk.js.map", - "static/js/13.522eb31c.chunk.js": "./static/js/13.522eb31c.chunk.js", - "static/js/13.522eb31c.chunk.js.map": "./static/js/13.522eb31c.chunk.js.map", - "static/js/14.ffa59895.chunk.js": "./static/js/14.ffa59895.chunk.js", - "static/js/14.ffa59895.chunk.js.map": "./static/js/14.ffa59895.chunk.js.map", - "static/js/15.c32169b6.chunk.js": "./static/js/15.c32169b6.chunk.js", - "static/js/15.c32169b6.chunk.js.map": "./static/js/15.c32169b6.chunk.js.map", - "static/js/16.10b6793a.chunk.js": "./static/js/16.10b6793a.chunk.js", - "static/js/16.10b6793a.chunk.js.map": "./static/js/16.10b6793a.chunk.js.map", - "static/js/17.d4a7cc73.chunk.js": "./static/js/17.d4a7cc73.chunk.js", - "static/js/17.d4a7cc73.chunk.js.map": "./static/js/17.d4a7cc73.chunk.js.map", - "static/js/18.ec64f004.chunk.js": "./static/js/18.ec64f004.chunk.js", - "static/js/18.ec64f004.chunk.js.map": "./static/js/18.ec64f004.chunk.js.map", - "static/js/19.7a517f14.chunk.js": "./static/js/19.7a517f14.chunk.js", - "static/js/19.7a517f14.chunk.js.map": "./static/js/19.7a517f14.chunk.js.map", - "static/js/20.06acf2b1.chunk.js": "./static/js/20.06acf2b1.chunk.js", - "static/js/20.06acf2b1.chunk.js.map": "./static/js/20.06acf2b1.chunk.js.map", - "static/js/21.a3fd3b52.chunk.js": "./static/js/21.a3fd3b52.chunk.js", - "static/js/21.a3fd3b52.chunk.js.map": "./static/js/21.a3fd3b52.chunk.js.map", - "static/js/22.e6a8141d.chunk.js": "./static/js/22.e6a8141d.chunk.js", - "static/js/22.e6a8141d.chunk.js.map": "./static/js/22.e6a8141d.chunk.js.map", - "static/js/23.89313ed0.chunk.js": "./static/js/23.89313ed0.chunk.js", - "static/js/23.89313ed0.chunk.js.map": "./static/js/23.89313ed0.chunk.js.map", - "static/js/24.397e3f98.chunk.js": "./static/js/24.397e3f98.chunk.js", - "static/js/24.397e3f98.chunk.js.map": "./static/js/24.397e3f98.chunk.js.map", - "static/js/25.4f69e673.chunk.js": "./static/js/25.4f69e673.chunk.js", - "static/js/25.4f69e673.chunk.js.map": "./static/js/25.4f69e673.chunk.js.map", - "static/js/26.58344dc2.chunk.js": "./static/js/26.58344dc2.chunk.js", - "static/js/26.58344dc2.chunk.js.map": "./static/js/26.58344dc2.chunk.js.map", - "static/js/27.e52dc807.chunk.js": "./static/js/27.e52dc807.chunk.js", - "static/js/27.e52dc807.chunk.js.map": "./static/js/27.e52dc807.chunk.js.map", - "static/js/28.b4f5266c.chunk.js": "./static/js/28.b4f5266c.chunk.js", - "static/js/28.b4f5266c.chunk.js.map": "./static/js/28.b4f5266c.chunk.js.map", - "static/js/29.c116fe5f.chunk.js": "./static/js/29.c116fe5f.chunk.js", - "static/js/29.c116fe5f.chunk.js.map": "./static/js/29.c116fe5f.chunk.js.map", - "static/js/30.7d6e613f.chunk.js": "./static/js/30.7d6e613f.chunk.js", - "static/js/30.7d6e613f.chunk.js.map": "./static/js/30.7d6e613f.chunk.js.map", - "static/js/31.0420a66b.chunk.js": "./static/js/31.0420a66b.chunk.js", - "static/js/31.0420a66b.chunk.js.map": "./static/js/31.0420a66b.chunk.js.map", - "static/js/32.abce75f3.chunk.js": "./static/js/32.abce75f3.chunk.js", - "static/js/32.abce75f3.chunk.js.map": "./static/js/32.abce75f3.chunk.js.map", - "static/js/33.0087ef02.chunk.js": "./static/js/33.0087ef02.chunk.js", - "static/js/33.0087ef02.chunk.js.map": "./static/js/33.0087ef02.chunk.js.map", - "static/js/34.8eaf8627.chunk.js": "./static/js/34.8eaf8627.chunk.js", - "static/js/34.8eaf8627.chunk.js.map": "./static/js/34.8eaf8627.chunk.js.map", - "static/js/35.9d42a8e7.chunk.js": "./static/js/35.9d42a8e7.chunk.js", - "static/js/35.9d42a8e7.chunk.js.map": "./static/js/35.9d42a8e7.chunk.js.map", - "static/js/36.e5c6cdeb.chunk.js": "./static/js/36.e5c6cdeb.chunk.js", - "static/js/36.e5c6cdeb.chunk.js.map": "./static/js/36.e5c6cdeb.chunk.js.map", - "static/js/37.caa53901.chunk.js": "./static/js/37.caa53901.chunk.js", - "static/js/37.caa53901.chunk.js.map": "./static/js/37.caa53901.chunk.js.map", - "static/js/38.52d1e430.chunk.js": "./static/js/38.52d1e430.chunk.js", - "static/js/38.52d1e430.chunk.js.map": "./static/js/38.52d1e430.chunk.js.map", - "static/js/39.cb82ca85.chunk.js": "./static/js/39.cb82ca85.chunk.js", - "static/js/39.cb82ca85.chunk.js.map": "./static/js/39.cb82ca85.chunk.js.map", - "static/js/40.4feaf891.chunk.js": "./static/js/40.4feaf891.chunk.js", - "static/js/40.4feaf891.chunk.js.map": "./static/js/40.4feaf891.chunk.js.map", - "static/js/41.1e939549.chunk.js": "./static/js/41.1e939549.chunk.js", - "static/js/41.1e939549.chunk.js.map": "./static/js/41.1e939549.chunk.js.map", - "static/js/42.02afdca6.chunk.js": "./static/js/42.02afdca6.chunk.js", - "static/js/42.02afdca6.chunk.js.map": "./static/js/42.02afdca6.chunk.js.map", - "static/js/43.a81a7d14.chunk.js": "./static/js/43.a81a7d14.chunk.js", - "static/js/43.a81a7d14.chunk.js.map": "./static/js/43.a81a7d14.chunk.js.map", - "static/js/44.f150b641.chunk.js": "./static/js/44.f150b641.chunk.js", - "static/js/44.f150b641.chunk.js.map": "./static/js/44.f150b641.chunk.js.map", - "static/js/45.e968d947.chunk.js": "./static/js/45.e968d947.chunk.js", - "static/js/45.e968d947.chunk.js.map": "./static/js/45.e968d947.chunk.js.map", - "static/js/46.a5297a0e.chunk.js": "./static/js/46.a5297a0e.chunk.js", - "static/js/46.a5297a0e.chunk.js.map": "./static/js/46.a5297a0e.chunk.js.map", - "static/js/47.99397c05.chunk.js": "./static/js/47.99397c05.chunk.js", - "static/js/47.99397c05.chunk.js.map": "./static/js/47.99397c05.chunk.js.map", - "static/js/48.a174ebe6.chunk.js": "./static/js/48.a174ebe6.chunk.js", - "static/js/48.a174ebe6.chunk.js.map": "./static/js/48.a174ebe6.chunk.js.map", - "static/js/49.af8698fc.chunk.js": "./static/js/49.af8698fc.chunk.js", - "static/js/49.af8698fc.chunk.js.map": "./static/js/49.af8698fc.chunk.js.map", - "static/js/50.f3dccebf.chunk.js": "./static/js/50.f3dccebf.chunk.js", - "static/js/50.f3dccebf.chunk.js.map": "./static/js/50.f3dccebf.chunk.js.map", - "static/js/51.46f4e0ea.chunk.js": "./static/js/51.46f4e0ea.chunk.js", - "static/js/51.46f4e0ea.chunk.js.map": "./static/js/51.46f4e0ea.chunk.js.map", - "static/js/52.1a3ff828.chunk.js": "./static/js/52.1a3ff828.chunk.js", - "static/js/52.1a3ff828.chunk.js.map": "./static/js/52.1a3ff828.chunk.js.map", - "static/js/53.6f9ad754.chunk.js": "./static/js/53.6f9ad754.chunk.js", - "static/js/53.6f9ad754.chunk.js.map": "./static/js/53.6f9ad754.chunk.js.map", - "static/js/54.1623e743.chunk.js": "./static/js/54.1623e743.chunk.js", - "static/js/54.1623e743.chunk.js.map": "./static/js/54.1623e743.chunk.js.map", - "static/js/55.96954b22.chunk.js": "./static/js/55.96954b22.chunk.js", - "static/js/55.96954b22.chunk.js.map": "./static/js/55.96954b22.chunk.js.map", - "static/js/56.f2ce7728.chunk.js": "./static/js/56.f2ce7728.chunk.js", - "static/js/56.f2ce7728.chunk.js.map": "./static/js/56.f2ce7728.chunk.js.map", - "static/js/57.62be6ec8.chunk.js": "./static/js/57.62be6ec8.chunk.js", - "static/js/57.62be6ec8.chunk.js.map": "./static/js/57.62be6ec8.chunk.js.map", - "static/js/58.6e1e4f04.chunk.js": "./static/js/58.6e1e4f04.chunk.js", - "static/js/58.6e1e4f04.chunk.js.map": "./static/js/58.6e1e4f04.chunk.js.map", - "index.html": "./index.html", - "service-worker.js": "./service-worker.js", - "service-worker.js.map": "./service-worker.js.map", - "static/css/4.532f36fa.chunk.css.map": "./static/css/4.532f36fa.chunk.css.map", - "static/css/main.8a382b2d.chunk.css.map": "./static/css/main.8a382b2d.chunk.css.map", - "static/js/4.5490d087.chunk.js.LICENSE.txt": "./static/js/4.5490d087.chunk.js.LICENSE.txt", - "static/js/52.1a3ff828.chunk.js.LICENSE.txt": "./static/js/52.1a3ff828.chunk.js.LICENSE.txt", - "static/js/polyfills-dom.e443d203.chunk.js.LICENSE.txt": "./static/js/polyfills-dom.e443d203.chunk.js.LICENSE.txt" + "static/js/0.bc66b1f6.chunk.js": "/unict-telegram-channels-groups/static/js/0.bc66b1f6.chunk.js", + "static/js/0.bc66b1f6.chunk.js.map": "/unict-telegram-channels-groups/static/js/0.bc66b1f6.chunk.js.map", + "main.css": "/unict-telegram-channels-groups/static/css/main.8a382b2d.chunk.css", + "main.js": "/unict-telegram-channels-groups/static/js/main.cfd27d45.chunk.js", + "main.js.map": "/unict-telegram-channels-groups/static/js/main.cfd27d45.chunk.js.map", + "polyfills-dom.js": "/unict-telegram-channels-groups/static/js/polyfills-dom.e443d203.chunk.js", + "polyfills-dom.js.map": "/unict-telegram-channels-groups/static/js/polyfills-dom.e443d203.chunk.js.map", + "runtime-main.js": "/unict-telegram-channels-groups/static/js/runtime-main.27c245ed.js", + "runtime-main.js.map": "/unict-telegram-channels-groups/static/js/runtime-main.27c245ed.js.map", + "static/css/4.532f36fa.chunk.css": "/unict-telegram-channels-groups/static/css/4.532f36fa.chunk.css", + "static/js/4.cd4d259e.chunk.js": "/unict-telegram-channels-groups/static/js/4.cd4d259e.chunk.js", + "static/js/4.cd4d259e.chunk.js.map": "/unict-telegram-channels-groups/static/js/4.cd4d259e.chunk.js.map", + "static/js/5.5d0b3ffd.chunk.js": "/unict-telegram-channels-groups/static/js/5.5d0b3ffd.chunk.js", + "static/js/5.5d0b3ffd.chunk.js.map": "/unict-telegram-channels-groups/static/js/5.5d0b3ffd.chunk.js.map", + "static/js/6.28ab63c9.chunk.js": "/unict-telegram-channels-groups/static/js/6.28ab63c9.chunk.js", + "static/js/6.28ab63c9.chunk.js.map": "/unict-telegram-channels-groups/static/js/6.28ab63c9.chunk.js.map", + "static/js/7.326dd770.chunk.js": "/unict-telegram-channels-groups/static/js/7.326dd770.chunk.js", + "static/js/7.326dd770.chunk.js.map": "/unict-telegram-channels-groups/static/js/7.326dd770.chunk.js.map", + "static/js/8.20357bb9.chunk.js": "/unict-telegram-channels-groups/static/js/8.20357bb9.chunk.js", + "static/js/8.20357bb9.chunk.js.map": "/unict-telegram-channels-groups/static/js/8.20357bb9.chunk.js.map", + "static/js/9.e2679d39.chunk.js": "/unict-telegram-channels-groups/static/js/9.e2679d39.chunk.js", + "static/js/9.e2679d39.chunk.js.map": "/unict-telegram-channels-groups/static/js/9.e2679d39.chunk.js.map", + "static/js/10.8936305f.chunk.js": "/unict-telegram-channels-groups/static/js/10.8936305f.chunk.js", + "static/js/10.8936305f.chunk.js.map": "/unict-telegram-channels-groups/static/js/10.8936305f.chunk.js.map", + "static/js/11.07ef5b48.chunk.js": "/unict-telegram-channels-groups/static/js/11.07ef5b48.chunk.js", + "static/js/11.07ef5b48.chunk.js.map": "/unict-telegram-channels-groups/static/js/11.07ef5b48.chunk.js.map", + "static/js/12.647bd439.chunk.js": "/unict-telegram-channels-groups/static/js/12.647bd439.chunk.js", + "static/js/12.647bd439.chunk.js.map": "/unict-telegram-channels-groups/static/js/12.647bd439.chunk.js.map", + "static/js/13.522eb31c.chunk.js": "/unict-telegram-channels-groups/static/js/13.522eb31c.chunk.js", + "static/js/13.522eb31c.chunk.js.map": "/unict-telegram-channels-groups/static/js/13.522eb31c.chunk.js.map", + "static/js/14.ffa59895.chunk.js": "/unict-telegram-channels-groups/static/js/14.ffa59895.chunk.js", + "static/js/14.ffa59895.chunk.js.map": "/unict-telegram-channels-groups/static/js/14.ffa59895.chunk.js.map", + "static/js/15.c32169b6.chunk.js": "/unict-telegram-channels-groups/static/js/15.c32169b6.chunk.js", + "static/js/15.c32169b6.chunk.js.map": "/unict-telegram-channels-groups/static/js/15.c32169b6.chunk.js.map", + "static/js/16.10b6793a.chunk.js": "/unict-telegram-channels-groups/static/js/16.10b6793a.chunk.js", + "static/js/16.10b6793a.chunk.js.map": "/unict-telegram-channels-groups/static/js/16.10b6793a.chunk.js.map", + "static/js/17.d4a7cc73.chunk.js": "/unict-telegram-channels-groups/static/js/17.d4a7cc73.chunk.js", + "static/js/17.d4a7cc73.chunk.js.map": "/unict-telegram-channels-groups/static/js/17.d4a7cc73.chunk.js.map", + "static/js/18.ec64f004.chunk.js": "/unict-telegram-channels-groups/static/js/18.ec64f004.chunk.js", + "static/js/18.ec64f004.chunk.js.map": "/unict-telegram-channels-groups/static/js/18.ec64f004.chunk.js.map", + "static/js/19.7a517f14.chunk.js": "/unict-telegram-channels-groups/static/js/19.7a517f14.chunk.js", + "static/js/19.7a517f14.chunk.js.map": "/unict-telegram-channels-groups/static/js/19.7a517f14.chunk.js.map", + "static/js/20.06acf2b1.chunk.js": "/unict-telegram-channels-groups/static/js/20.06acf2b1.chunk.js", + "static/js/20.06acf2b1.chunk.js.map": "/unict-telegram-channels-groups/static/js/20.06acf2b1.chunk.js.map", + "static/js/21.a3fd3b52.chunk.js": "/unict-telegram-channels-groups/static/js/21.a3fd3b52.chunk.js", + "static/js/21.a3fd3b52.chunk.js.map": "/unict-telegram-channels-groups/static/js/21.a3fd3b52.chunk.js.map", + "static/js/22.e6a8141d.chunk.js": "/unict-telegram-channels-groups/static/js/22.e6a8141d.chunk.js", + "static/js/22.e6a8141d.chunk.js.map": "/unict-telegram-channels-groups/static/js/22.e6a8141d.chunk.js.map", + "static/js/23.89313ed0.chunk.js": "/unict-telegram-channels-groups/static/js/23.89313ed0.chunk.js", + "static/js/23.89313ed0.chunk.js.map": "/unict-telegram-channels-groups/static/js/23.89313ed0.chunk.js.map", + "static/js/24.397e3f98.chunk.js": "/unict-telegram-channels-groups/static/js/24.397e3f98.chunk.js", + "static/js/24.397e3f98.chunk.js.map": "/unict-telegram-channels-groups/static/js/24.397e3f98.chunk.js.map", + "static/js/25.4f69e673.chunk.js": "/unict-telegram-channels-groups/static/js/25.4f69e673.chunk.js", + "static/js/25.4f69e673.chunk.js.map": "/unict-telegram-channels-groups/static/js/25.4f69e673.chunk.js.map", + "static/js/26.58344dc2.chunk.js": "/unict-telegram-channels-groups/static/js/26.58344dc2.chunk.js", + "static/js/26.58344dc2.chunk.js.map": "/unict-telegram-channels-groups/static/js/26.58344dc2.chunk.js.map", + "static/js/27.e52dc807.chunk.js": "/unict-telegram-channels-groups/static/js/27.e52dc807.chunk.js", + "static/js/27.e52dc807.chunk.js.map": "/unict-telegram-channels-groups/static/js/27.e52dc807.chunk.js.map", + "static/js/28.b4f5266c.chunk.js": "/unict-telegram-channels-groups/static/js/28.b4f5266c.chunk.js", + "static/js/28.b4f5266c.chunk.js.map": "/unict-telegram-channels-groups/static/js/28.b4f5266c.chunk.js.map", + "static/js/29.c116fe5f.chunk.js": "/unict-telegram-channels-groups/static/js/29.c116fe5f.chunk.js", + "static/js/29.c116fe5f.chunk.js.map": "/unict-telegram-channels-groups/static/js/29.c116fe5f.chunk.js.map", + "static/js/30.7d6e613f.chunk.js": "/unict-telegram-channels-groups/static/js/30.7d6e613f.chunk.js", + "static/js/30.7d6e613f.chunk.js.map": "/unict-telegram-channels-groups/static/js/30.7d6e613f.chunk.js.map", + "static/js/31.0420a66b.chunk.js": "/unict-telegram-channels-groups/static/js/31.0420a66b.chunk.js", + "static/js/31.0420a66b.chunk.js.map": "/unict-telegram-channels-groups/static/js/31.0420a66b.chunk.js.map", + "static/js/32.abce75f3.chunk.js": "/unict-telegram-channels-groups/static/js/32.abce75f3.chunk.js", + "static/js/32.abce75f3.chunk.js.map": "/unict-telegram-channels-groups/static/js/32.abce75f3.chunk.js.map", + "static/js/33.0087ef02.chunk.js": "/unict-telegram-channels-groups/static/js/33.0087ef02.chunk.js", + "static/js/33.0087ef02.chunk.js.map": "/unict-telegram-channels-groups/static/js/33.0087ef02.chunk.js.map", + "static/js/34.8eaf8627.chunk.js": "/unict-telegram-channels-groups/static/js/34.8eaf8627.chunk.js", + "static/js/34.8eaf8627.chunk.js.map": "/unict-telegram-channels-groups/static/js/34.8eaf8627.chunk.js.map", + "static/js/35.9d42a8e7.chunk.js": "/unict-telegram-channels-groups/static/js/35.9d42a8e7.chunk.js", + "static/js/35.9d42a8e7.chunk.js.map": "/unict-telegram-channels-groups/static/js/35.9d42a8e7.chunk.js.map", + "static/js/36.e5c6cdeb.chunk.js": "/unict-telegram-channels-groups/static/js/36.e5c6cdeb.chunk.js", + "static/js/36.e5c6cdeb.chunk.js.map": "/unict-telegram-channels-groups/static/js/36.e5c6cdeb.chunk.js.map", + "static/js/37.caa53901.chunk.js": "/unict-telegram-channels-groups/static/js/37.caa53901.chunk.js", + "static/js/37.caa53901.chunk.js.map": "/unict-telegram-channels-groups/static/js/37.caa53901.chunk.js.map", + "static/js/38.52d1e430.chunk.js": "/unict-telegram-channels-groups/static/js/38.52d1e430.chunk.js", + "static/js/38.52d1e430.chunk.js.map": "/unict-telegram-channels-groups/static/js/38.52d1e430.chunk.js.map", + "static/js/39.cb82ca85.chunk.js": "/unict-telegram-channels-groups/static/js/39.cb82ca85.chunk.js", + "static/js/39.cb82ca85.chunk.js.map": "/unict-telegram-channels-groups/static/js/39.cb82ca85.chunk.js.map", + "static/js/40.4feaf891.chunk.js": "/unict-telegram-channels-groups/static/js/40.4feaf891.chunk.js", + "static/js/40.4feaf891.chunk.js.map": "/unict-telegram-channels-groups/static/js/40.4feaf891.chunk.js.map", + "static/js/41.1e939549.chunk.js": "/unict-telegram-channels-groups/static/js/41.1e939549.chunk.js", + "static/js/41.1e939549.chunk.js.map": "/unict-telegram-channels-groups/static/js/41.1e939549.chunk.js.map", + "static/js/42.02afdca6.chunk.js": "/unict-telegram-channels-groups/static/js/42.02afdca6.chunk.js", + "static/js/42.02afdca6.chunk.js.map": "/unict-telegram-channels-groups/static/js/42.02afdca6.chunk.js.map", + "static/js/43.a81a7d14.chunk.js": "/unict-telegram-channels-groups/static/js/43.a81a7d14.chunk.js", + "static/js/43.a81a7d14.chunk.js.map": "/unict-telegram-channels-groups/static/js/43.a81a7d14.chunk.js.map", + "static/js/44.f150b641.chunk.js": "/unict-telegram-channels-groups/static/js/44.f150b641.chunk.js", + "static/js/44.f150b641.chunk.js.map": "/unict-telegram-channels-groups/static/js/44.f150b641.chunk.js.map", + "static/js/45.e968d947.chunk.js": "/unict-telegram-channels-groups/static/js/45.e968d947.chunk.js", + "static/js/45.e968d947.chunk.js.map": "/unict-telegram-channels-groups/static/js/45.e968d947.chunk.js.map", + "static/js/46.a5297a0e.chunk.js": "/unict-telegram-channels-groups/static/js/46.a5297a0e.chunk.js", + "static/js/46.a5297a0e.chunk.js.map": "/unict-telegram-channels-groups/static/js/46.a5297a0e.chunk.js.map", + "static/js/47.99397c05.chunk.js": "/unict-telegram-channels-groups/static/js/47.99397c05.chunk.js", + "static/js/47.99397c05.chunk.js.map": "/unict-telegram-channels-groups/static/js/47.99397c05.chunk.js.map", + "static/js/48.a174ebe6.chunk.js": "/unict-telegram-channels-groups/static/js/48.a174ebe6.chunk.js", + "static/js/48.a174ebe6.chunk.js.map": "/unict-telegram-channels-groups/static/js/48.a174ebe6.chunk.js.map", + "static/js/49.af8698fc.chunk.js": "/unict-telegram-channels-groups/static/js/49.af8698fc.chunk.js", + "static/js/49.af8698fc.chunk.js.map": "/unict-telegram-channels-groups/static/js/49.af8698fc.chunk.js.map", + "static/js/50.f3dccebf.chunk.js": "/unict-telegram-channels-groups/static/js/50.f3dccebf.chunk.js", + "static/js/50.f3dccebf.chunk.js.map": "/unict-telegram-channels-groups/static/js/50.f3dccebf.chunk.js.map", + "static/js/51.46f4e0ea.chunk.js": "/unict-telegram-channels-groups/static/js/51.46f4e0ea.chunk.js", + "static/js/51.46f4e0ea.chunk.js.map": "/unict-telegram-channels-groups/static/js/51.46f4e0ea.chunk.js.map", + "static/js/52.1a3ff828.chunk.js": "/unict-telegram-channels-groups/static/js/52.1a3ff828.chunk.js", + "static/js/52.1a3ff828.chunk.js.map": "/unict-telegram-channels-groups/static/js/52.1a3ff828.chunk.js.map", + "static/js/53.6f9ad754.chunk.js": "/unict-telegram-channels-groups/static/js/53.6f9ad754.chunk.js", + "static/js/53.6f9ad754.chunk.js.map": "/unict-telegram-channels-groups/static/js/53.6f9ad754.chunk.js.map", + "static/js/54.1623e743.chunk.js": "/unict-telegram-channels-groups/static/js/54.1623e743.chunk.js", + "static/js/54.1623e743.chunk.js.map": "/unict-telegram-channels-groups/static/js/54.1623e743.chunk.js.map", + "static/js/55.96954b22.chunk.js": "/unict-telegram-channels-groups/static/js/55.96954b22.chunk.js", + "static/js/55.96954b22.chunk.js.map": "/unict-telegram-channels-groups/static/js/55.96954b22.chunk.js.map", + "static/js/56.f2ce7728.chunk.js": "/unict-telegram-channels-groups/static/js/56.f2ce7728.chunk.js", + "static/js/56.f2ce7728.chunk.js.map": "/unict-telegram-channels-groups/static/js/56.f2ce7728.chunk.js.map", + "static/js/57.62be6ec8.chunk.js": "/unict-telegram-channels-groups/static/js/57.62be6ec8.chunk.js", + "static/js/57.62be6ec8.chunk.js.map": "/unict-telegram-channels-groups/static/js/57.62be6ec8.chunk.js.map", + "static/js/58.6e1e4f04.chunk.js": "/unict-telegram-channels-groups/static/js/58.6e1e4f04.chunk.js", + "static/js/58.6e1e4f04.chunk.js.map": "/unict-telegram-channels-groups/static/js/58.6e1e4f04.chunk.js.map", + "index.html": "/unict-telegram-channels-groups/index.html", + "service-worker.js": "/unict-telegram-channels-groups/service-worker.js", + "service-worker.js.map": "/unict-telegram-channels-groups/service-worker.js.map", + "static/css/4.532f36fa.chunk.css.map": "/unict-telegram-channels-groups/static/css/4.532f36fa.chunk.css.map", + "static/css/main.8a382b2d.chunk.css.map": "/unict-telegram-channels-groups/static/css/main.8a382b2d.chunk.css.map", + "static/js/4.cd4d259e.chunk.js.LICENSE.txt": "/unict-telegram-channels-groups/static/js/4.cd4d259e.chunk.js.LICENSE.txt", + "static/js/52.1a3ff828.chunk.js.LICENSE.txt": "/unict-telegram-channels-groups/static/js/52.1a3ff828.chunk.js.LICENSE.txt", + "static/js/polyfills-dom.e443d203.chunk.js.LICENSE.txt": "/unict-telegram-channels-groups/static/js/polyfills-dom.e443d203.chunk.js.LICENSE.txt" }, "entrypoints": [ - "static/js/runtime-main.5848ee21.js", + "static/js/runtime-main.27c245ed.js", "static/css/4.532f36fa.chunk.css", - "static/js/4.5490d087.chunk.js", + "static/js/4.cd4d259e.chunk.js", "static/css/main.8a382b2d.chunk.css", - "static/js/main.7ea1b7ba.chunk.js" + "static/js/main.cfd27d45.chunk.js" ] } \ No newline at end of file diff --git a/index.html b/index.html index e5ab7a1..5fa3a02 100644 --- a/index.html +++ b/index.html @@ -1 +1 @@ -UNICT-Telegram-Channels-Groups
\ No newline at end of file +UNICT-Telegram-Channels-Groups
\ No newline at end of file diff --git a/service-worker.js b/service-worker.js index e85f421..9755aca 100644 --- a/service-worker.js +++ b/service-worker.js @@ -1,2 +1,2 @@ -!function(e){var t={};function n(r){if(t[r])return t[r].exports;var a=t[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,n),a.l=!0,a.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var a in e)n.d(r,a,function(t){return e[t]}.bind(null,a));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="./",n(n.s=7)}([function(e,t,n){e.exports=n(6)},function(e,t,n){"use strict";try{self["workbox:core:5.1.4"]&&_()}catch(r){}},function(e,t,n){"use strict";try{self["workbox:precaching:5.1.4"]&&_()}catch(r){}},function(e,t,n){"use strict";try{self["workbox:routing:5.1.4"]&&_()}catch(r){}},function(e,t,n){"use strict";try{self["workbox:strategies:5.1.4"]&&_()}catch(r){}},function(e,t,n){"use strict";try{self["workbox:expiration:5.1.4"]&&_()}catch(r){}},function(e,t,n){var r=function(e){"use strict";var t,n=Object.prototype,r=n.hasOwnProperty,a="function"===typeof Symbol?Symbol:{},i=a.iterator||"@@iterator",c=a.asyncIterator||"@@asyncIterator",o=a.toStringTag||"@@toStringTag";function u(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{u({},"")}catch(U){u=function(e,t,n){return e[t]=n}}function s(e,t,n,r){var a=t&&t.prototype instanceof y?t:y,i=Object.create(a.prototype),c=new T(r||[]);return i._invoke=function(e,t,n){var r=h;return function(a,i){if(r===p)throw new Error("Generator is already running");if(r===v){if("throw"===a)throw i;return S()}for(n.method=a,n.arg=i;;){var c=n.delegate;if(c){var o=E(c,n);if(o){if(o===d)continue;return o}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(r===h)throw r=v,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r=p;var u=f(e,t,n);if("normal"===u.type){if(r=n.done?v:l,u.arg===d)continue;return{value:u.arg,done:n.done}}"throw"===u.type&&(r=v,n.method="throw",n.arg=u.arg)}}}(e,n,c),i}function f(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(U){return{type:"throw",arg:U}}}e.wrap=s;var h="suspendedStart",l="suspendedYield",p="executing",v="completed",d={};function y(){}function m(){}function g(){}var x={};u(x,i,(function(){return this}));var b=Object.getPrototypeOf,w=b&&b(b(O([])));w&&w!==n&&r.call(w,i)&&(x=w);var k=g.prototype=y.prototype=Object.create(x);function _(e){["next","throw","return"].forEach((function(t){u(e,t,(function(e){return this._invoke(t,e)}))}))}function R(e,t){function n(a,i,c,o){var u=f(e[a],e,i);if("throw"!==u.type){var s=u.arg,h=s.value;return h&&"object"===typeof h&&r.call(h,"__await")?t.resolve(h.__await).then((function(e){n("next",e,c,o)}),(function(e){n("throw",e,c,o)})):t.resolve(h).then((function(e){s.value=e,c(s)}),(function(e){return n("throw",e,c,o)}))}o(u.arg)}var a;this._invoke=function(e,r){function i(){return new t((function(t,a){n(e,r,t,a)}))}return a=a?a.then(i,i):i()}}function E(e,n){var r=e.iterator[n.method];if(r===t){if(n.delegate=null,"throw"===n.method){if(e.iterator.return&&(n.method="return",n.arg=t,E(e,n),"throw"===n.method))return d;n.method="throw",n.arg=new TypeError("The iterator does not provide a 'throw' method")}return d}var a=f(r,e.iterator,n.arg);if("throw"===a.type)return n.method="throw",n.arg=a.arg,n.delegate=null,d;var i=a.arg;return i?i.done?(n[e.resultName]=i.value,n.next=e.nextLoc,"return"!==n.method&&(n.method="next",n.arg=t),n.delegate=null,d):i:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,d)}function L(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function q(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function T(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(L,this),this.reset(!0)}function O(e){if(e){var n=e[i];if(n)return n.call(e);if("function"===typeof e.next)return e;if(!isNaN(e.length)){var a=-1,c=function n(){for(;++a=0;--i){var c=this.tryEntries[i],o=c.completion;if("root"===c.tryLoc)return a("end");if(c.tryLoc<=this.prev){var u=r.call(c,"catchLoc"),s=r.call(c,"finallyLoc");if(u&&s){if(this.prev=0;--n){var a=this.tryEntries[n];if(a.tryLoc<=this.prev&&r.call(a,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),q(n),d}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var a=r.arg;q(n)}return a}}throw new Error("illegal catch attempt")},delegateYield:function(e,n,r){return this.delegate={iterator:O(e),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=t),d}},e}(e.exports);try{regeneratorRuntime=r}catch(a){"object"===typeof globalThis?globalThis.regeneratorRuntime=r:Function("r","regeneratorRuntime = r")(r)}},function(e,t,n){"use strict";function r(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var c,o=!0,u=!1;return{s:function(){n=e[Symbol.iterator]()},n:function(){var e=n.next();return o=e.done,e},e:function(e){u=!0,c=e},f:function(){try{o||null==n.return||n.return()}finally{if(u)throw c}}}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function u(e,t){return u=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},u(e,t)}function s(e,t){if("function"!==typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&u(e,t)}function f(e){return f=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},f(e)}function h(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}function l(e){return l="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"===typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},l(e)}function p(e,t){return!t||"object"!==l(t)&&"function"!==typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function v(e){var t=h();return function(){var n,r=f(e);if(t){var a=f(this).constructor;n=Reflect.construct(r,arguments,a)}else n=r.apply(this,arguments);return p(this,n)}}function d(e,t,n){return d=h()?Reflect.construct:function(e,t,n){var r=[null];r.push.apply(r,t);var a=new(Function.bind.apply(e,r));return n&&u(a,n.prototype),a},d.apply(null,arguments)}function y(e){var t="function"===typeof Map?new Map:void 0;return y=function(e){if(null===e||(n=e,-1===Function.toString.call(n).indexOf("[native code]")))return e;var n;if("function"!==typeof e)throw new TypeError("Super expression must either be null or a function");if("undefined"!==typeof t){if(t.has(e))return t.get(e);t.set(e,r)}function r(){return d(e,arguments,f(this).constructor)}return r.prototype=Object.create(e.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),u(r,e)},y(e)}var m=function(e){for(var t=e,n=arguments.length,r=new Array(n>1?n-1:0),a=1;a0&&(t+=" :: ".concat(JSON.stringify(r))),t},g=function(e){s(n,e);var t=v(n);function n(e,r){var a;o(this,n);var i=m(e,r);return(a=t.call(this,i)).name=e,a.details=r,a}return n}(y(Error)),x=new Set;function b(e){x.add(e)}var w={googleAnalytics:"googleAnalytics",precache:"precache-v2",prefix:"workbox",runtime:"runtime",suffix:"undefined"!==typeof registration?registration.scope:""},k=function(e){return[w.prefix,e,w.suffix].filter((function(e){return e&&e.length>0})).join("-")},_=function(e){return e||k(w.precache)},R=function(e){return e||k(w.runtime)},E=n(0),L=n.n(E);function q(e,t,n,r,a,i,c){try{var o=e[i](c),u=o.value}catch(s){return void n(s)}o.done?t(u):Promise.resolve(u).then(r,a)}function T(e){return function(){var t=this,n=arguments;return new Promise((function(r,a){var i=e.apply(t,n);function c(e){q(i,r,a,c,o,"next",e)}function o(e){q(i,r,a,c,o,"throw",e)}c(void 0)}))}}function O(){return S.apply(this,arguments)}function S(){return(S=T(L.a.mark((function e(){var t,n,r;return L.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:0,t=c(x),e.prev=2,t.s();case 4:if((n=t.n()).done){e.next=11;break}return r=n.value,e.next=8,r();case 8:0;case 9:e.next=4;break;case 11:e.next=16;break;case 13:e.prev=13,e.t0=e.catch(2),t.e(e.t0);case 16:return e.prev=16,t.f(),e.finish(16);case 19:0;case 20:case"end":return e.stop()}}),e,null,[[2,13,16,19]])})))).apply(this,arguments)}var U,N=function(e){return new URL(String(e),location.href).href.replace(new RegExp("^".concat(location.origin)),"")},j=function(e,t){return e.filter((function(e){return t in e}))},A=function(){var e=T(L.a.mark((function e(t){var n,r,a,i,o,u,s,f;return L.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=t.request,r=t.mode,a=t.plugins,i=j(void 0===a?[]:a,"cacheKeyWillBeUsed"),o=n,u=c(i),e.prev=4,u.s();case 6:if((s=u.n()).done){e.next=15;break}return f=s.value,e.next=10,f.cacheKeyWillBeUsed.call(f,{mode:r,request:o});case 10:"string"===typeof(o=e.sent)&&(o=new Request(o));case 13:e.next=6;break;case 15:e.next=20;break;case 17:e.prev=17,e.t0=e.catch(4),u.e(e.t0);case 20:return e.prev=20,u.f(),e.finish(20);case 23:return e.abrupt("return",o);case 24:case"end":return e.stop()}}),e,null,[[4,17,20,23]])})));return function(t){return e.apply(this,arguments)}}(),M=function(){var e=T(L.a.mark((function e(t){var n,r,a,i,o,u,s,f,h,l;return L.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=t.request,r=t.response,a=t.event,i=t.plugins,o=r,u=!1,s=c(void 0===i?[]:i),e.prev=4,s.s();case 6:if((f=s.n()).done){e.next=19;break}if(!("cacheWillUpdate"in(h=f.value))){e.next=17;break}return u=!0,l=h.cacheWillUpdate,e.next=13,l.call(h,{request:n,response:o,event:a});case 13:if(o=e.sent){e.next=17;break}return e.abrupt("break",19);case 17:e.next=6;break;case 19:e.next=24;break;case 21:e.prev=21,e.t0=e.catch(4),s.e(e.t0);case 24:return e.prev=24,s.f(),e.finish(24);case 27:return u||(o=o&&200===o.status?o:void 0),e.abrupt("return",o||null);case 29:case"end":return e.stop()}}),e,null,[[4,21,24,27]])})));return function(t){return e.apply(this,arguments)}}(),C=function(){var e=T(L.a.mark((function e(t){var n,r,a,i,o,u,s,f,h,l,p,v,d;return L.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.cacheName,r=t.request,a=t.event,i=t.matchOptions,o=t.plugins,u=void 0===o?[]:o,e.next=3,self.caches.open(n);case 3:return s=e.sent,e.next=6,A({plugins:u,request:r,mode:"read"});case 6:return f=e.sent,e.next=9,s.match(f,i);case 9:h=e.sent,l=c(u),e.prev=12,l.s();case 14:if((p=l.n()).done){e.next=24;break}if(!("cachedResponseWillBeUsed"in(v=p.value))){e.next=22;break}return d=v.cachedResponseWillBeUsed,e.next=20,d.call(v,{cacheName:n,event:a,matchOptions:i,cachedResponse:h,request:f});case 20:h=e.sent;case 22:e.next=14;break;case 24:e.next=29;break;case 26:e.prev=26,e.t0=e.catch(12),l.e(e.t0);case 29:return e.prev=29,l.f(),e.finish(29);case 32:return e.abrupt("return",h);case 33:case"end":return e.stop()}}),e,null,[[12,26,29,32]])})));return function(t){return e.apply(this,arguments)}}(),K=function(){var e=T(L.a.mark((function e(t){var n,r,a,i,o,u,s,f,h,l,p,v,d,y,m;return L.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=t.cacheName,r=t.request,a=t.response,i=t.event,o=t.plugins,u=void 0===o?[]:o,s=t.matchOptions,e.next=4;break;case 4:return e.next=6,A({plugins:u,request:r,mode:"write"});case 6:if(f=e.sent,a){e.next=10;break}throw new g("cache-put-with-no-response",{url:N(f.url)});case 10:return e.next=12,M({event:i,plugins:u,response:a,request:f});case 12:if(h=e.sent){e.next=16;break}return e.abrupt("return");case 16:return e.next=18,self.caches.open(n);case 18:if(l=e.sent,!((p=j(u,"cacheDidUpdate")).length>0)){e.next=26;break}return e.next=23,C({cacheName:n,matchOptions:s,request:f});case 23:e.t0=e.sent,e.next=27;break;case 26:e.t0=null;case 27:return v=e.t0,e.prev=29,e.next=32,l.put(f,h);case 32:e.next=40;break;case 34:if(e.prev=34,e.t1=e.catch(29),"QuotaExceededError"!==e.t1.name){e.next=39;break}return e.next=39,O();case 39:throw e.t1;case 40:d=c(p),e.prev=41,d.s();case 43:if((y=d.n()).done){e.next=49;break}return m=y.value,e.next=47,m.cacheDidUpdate.call(m,{cacheName:n,event:i,oldResponse:v,newResponse:h,request:f});case 47:e.next=43;break;case 49:e.next=54;break;case 51:e.prev=51,e.t2=e.catch(41),d.e(e.t2);case 54:return e.prev=54,d.f(),e.finish(54);case 57:case"end":return e.stop()}}),e,null,[[29,34],[41,51,54,57]])})));return function(t){return e.apply(this,arguments)}}(),P={put:K,match:C};function I(){if(void 0===U){var e=new Response("");if("body"in e)try{new Response(e.body),U=!0}catch(t){U=!1}U=!1}return U}function D(e){e.then((function(){}))}function W(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if("undefined"!==typeof Symbol&&Symbol.iterator in Object(e)){var n=[],r=!0,a=!1,i=void 0;try{for(var c,o=e[Symbol.iterator]();!(r=(c=o.next()).done)&&(n.push(c.value),!t||n.length!==t);r=!0);}catch(u){a=!0,i=u}finally{try{r||null==o.return||o.return()}finally{if(a)throw i}}return n}}(e,t)||a(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function F(e,t){for(var n=0;n2&&void 0!==arguments[2]?arguments[2]:{},i=a.onupgradeneeded,c=a.onversionchange;o(this,e),this._db=null,this._name=t,this._version=n,this._onupgradeneeded=i,this._onversionchange=c||function(){return r.close()}}return H(e,[{key:"db",get:function(){return this._db}},{key:"open",value:function(){var e=T(L.a.mark((function e(){var t=this;return L.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!this._db){e.next=2;break}return e.abrupt("return");case 2:return e.next=4,new Promise((function(e,n){var r=!1;setTimeout((function(){r=!0,n(new Error("The open request was blocked and timed out"))}),t.OPEN_TIMEOUT);var a=indexedDB.open(t._name,t._version);a.onerror=function(){return n(a.error)},a.onupgradeneeded=function(e){r?(a.transaction.abort(),a.result.close()):"function"===typeof t._onupgradeneeded&&t._onupgradeneeded(e)},a.onsuccess=function(){var n=a.result;r?n.close():(n.onversionchange=t._onversionchange.bind(t),e(n))}}));case 4:return this._db=e.sent,e.abrupt("return",this);case 6:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}()},{key:"getKey",value:function(){var e=T(L.a.mark((function e(t,n){return L.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.getAllKeys(t,n,1);case 2:return e.abrupt("return",e.sent[0]);case 3:case"end":return e.stop()}}),e,this)})));return function(t,n){return e.apply(this,arguments)}}()},{key:"getAll",value:function(){var e=T(L.a.mark((function e(t,n,r){return L.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.getAllMatching(t,{query:n,count:r});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e,this)})));return function(t,n,r){return e.apply(this,arguments)}}()},{key:"getAllKeys",value:function(){var e=T(L.a.mark((function e(t,n,r){var a;return L.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.getAllMatching(t,{query:n,count:r,includeKeys:!0});case 2:return a=e.sent,e.abrupt("return",a.map((function(e){return e.key})));case 4:case"end":return e.stop()}}),e,this)})));return function(t,n,r){return e.apply(this,arguments)}}()},{key:"getAllMatching",value:function(){var e=T(L.a.mark((function e(t){var n,r,a,i,c,o,u,s,f,h=arguments;return L.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=h.length>1&&void 0!==h[1]?h[1]:{},r=n.index,a=n.query,i=void 0===a?null:a,c=n.direction,o=void 0===c?"next":c,u=n.count,s=n.includeKeys,f=void 0!==s&&s,e.next=3,this.transaction([t],"readonly",(function(e,n){var a=e.objectStore(t),c=r?a.index(r):a,s=[],h=c.openCursor(i,o);h.onsuccess=function(){var e=h.result;e?(s.push(f?e:e.value),u&&s.length>=u?n(s):e.continue()):n(s)}}));case 3:return e.abrupt("return",e.sent);case 4:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}()},{key:"transaction",value:function(){var e=T(L.a.mark((function e(t,n,r){var a=this;return L.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.open();case 2:return e.next=4,new Promise((function(e,i){var c=a._db.transaction(t,n);c.onabort=function(){return i(c.error)},c.oncomplete=function(){return e()},r(c,(function(t){return e(t)}))}));case 4:return e.abrupt("return",e.sent);case 5:case"end":return e.stop()}}),e,this)})));return function(t,n,r){return e.apply(this,arguments)}}()},{key:"_call",value:function(){var e=T(L.a.mark((function e(t,n,r){var a,i,c,o,u=arguments;return L.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:for(a=u.length,i=new Array(a>3?a-3:0),c=3;c1?a-1:0),c=1;c0?n.clone():null,e.prev=12,h=c(o),e.prev=14,h.s();case 16:if((l=h.n()).done){e.next=27;break}if(!("requestWillFetch"in(p=l.value))){e.next=25;break}return v=p.requestWillFetch,d=n.clone(),e.next=23,v.call(p,{request:d,event:a});case 23:n=e.sent;case 25:e.next=16;break;case 27:e.next=32;break;case 29:e.prev=29,e.t0=e.catch(14),h.e(e.t0);case 32:return e.prev=32,h.f(),e.finish(32);case 35:e.next=40;break;case 37:throw e.prev=37,e.t1=e.catch(12),new g("plugin-error-request-will-fetch",{thrownError:e.t1});case 40:if(y=n.clone(),e.prev=41,"navigate"!==n.mode){e.next=48;break}return e.next=45,fetch(n);case 45:m=e.sent,e.next=51;break;case 48:return e.next=50,fetch(n,r);case 50:m=e.sent;case 51:0,x=c(o),e.prev=53,x.s();case 55:if((b=x.n()).done){e.next=64;break}if(!("fetchDidSucceed"in(w=b.value))){e.next=62;break}return e.next=60,w.fetchDidSucceed.call(w,{event:a,request:y,response:m});case 60:m=e.sent;case 62:e.next=55;break;case 64:e.next=69;break;case 66:e.prev=66,e.t2=e.catch(53),x.e(e.t2);case 69:return e.prev=69,x.f(),e.finish(69);case 72:return e.abrupt("return",m);case 75:e.prev=75,e.t3=e.catch(41),k=c(s),e.prev=79,k.s();case 81:if((_=k.n()).done){e.next=87;break}return R=_.value,e.next=85,R.fetchDidFail.call(R,{error:e.t3,event:a,originalRequest:f.clone(),request:y.clone()});case 85:e.next=81;break;case 87:e.next=92;break;case 89:e.prev=89,e.t4=e.catch(79),k.e(e.t4);case 92:return e.prev=92,k.f(),e.finish(92);case 95:throw e.t3;case 96:case"end":return e.stop()}}),e,null,[[12,37],[14,29,32,35],[41,75],[53,66,69,72],[79,89,92,95]])})));return function(t){return e.apply(this,arguments)}}(),V={fetch:J};function z(e,t){return X.apply(this,arguments)}function X(){return(X=T(L.a.mark((function e(t,n){var r,a,i,c;return L.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=t.clone(),a={headers:new Headers(r.headers),status:r.status,statusText:r.statusText},i=n?n(a):a,!I()){e.next=7;break}e.t0=r.body,e.next=10;break;case 7:return e.next=9,r.blob();case 9:e.t0=e.sent;case 10:return c=e.t0,e.abrupt("return",new Response(c,i));case 12:case"end":return e.stop()}}),e)})))).apply(this,arguments)}n(5);var Z="cache-entries",ee=function(e){var t=new URL(e,location.href);return t.hash="",t.href},te=function(){function e(t){var n=this;o(this,e),this._cacheName=t,this._db=new B("workbox-expiration",1,{onupgradeneeded:function(e){return n._handleUpgrade(e)}})}return H(e,[{key:"_handleUpgrade",value:function(e){var t=e.target.result.createObjectStore(Z,{keyPath:"id"});t.createIndex("cacheName","cacheName",{unique:!1}),t.createIndex("timestamp","timestamp",{unique:!1}),$(this._cacheName)}},{key:"setTimestamp",value:function(){var e=T(L.a.mark((function e(t,n){var r;return L.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=ee(t),r={url:t,timestamp:n,cacheName:this._cacheName,id:this._getId(t)},e.next=4,this._db.put(Z,r);case 4:case"end":return e.stop()}}),e,this)})));return function(t,n){return e.apply(this,arguments)}}()},{key:"getTimestamp",value:function(){var e=T(L.a.mark((function e(t){var n;return L.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._db.get(Z,this._getId(t));case 2:return n=e.sent,e.abrupt("return",n.timestamp);case 4:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}()},{key:"expireEntries",value:function(){var e=T(L.a.mark((function e(t,n){var r,a,i,o,u,s=this;return L.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._db.transaction(Z,"readwrite",(function(e,r){var a=e.objectStore(Z).index("timestamp").openCursor(null,"prev"),i=[],c=0;a.onsuccess=function(){var e=a.result;if(e){var o=e.value;o.cacheName===s._cacheName&&(t&&o.timestamp=n?i.push(e.value):c++),e.continue()}else r(i)}}));case 2:r=e.sent,a=[],i=c(r),e.prev=5,i.s();case 7:if((o=i.n()).done){e.next=14;break}return u=o.value,e.next=11,this._db.delete(Z,u.id);case 11:a.push(u.url);case 12:e.next=7;break;case 14:e.next=19;break;case 16:e.prev=16,e.t0=e.catch(5),i.e(e.t0);case 19:return e.prev=19,i.f(),e.finish(19);case 22:return e.abrupt("return",a);case 23:case"end":return e.stop()}}),e,this,[[5,16,19,22]])})));return function(t,n){return e.apply(this,arguments)}}()},{key:"_getId",value:function(e){return this._cacheName+"|"+ee(e)}}]),e}(),ne=function(){function e(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};o(this,e),this._isRunning=!1,this._rerunRequested=!1,this._maxEntries=n.maxEntries,this._maxAgeSeconds=n.maxAgeSeconds,this._cacheName=t,this._timestampModel=new te(t)}return H(e,[{key:"expireEntries",value:function(){var e=T(L.a.mark((function e(){var t,n,r,a,i,o;return L.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!this._isRunning){e.next=3;break}return this._rerunRequested=!0,e.abrupt("return");case 3:return this._isRunning=!0,t=this._maxAgeSeconds?Date.now()-1e3*this._maxAgeSeconds:0,e.next=7,this._timestampModel.expireEntries(t,this._maxEntries);case 7:return n=e.sent,e.next=10,self.caches.open(this._cacheName);case 10:r=e.sent,a=c(n),e.prev=12,a.s();case 14:if((i=a.n()).done){e.next=20;break}return o=i.value,e.next=18,r.delete(o);case 18:e.next=14;break;case 20:e.next=25;break;case 22:e.prev=22,e.t0=e.catch(12),a.e(e.t0);case 25:return e.prev=25,a.f(),e.finish(25);case 28:0,this._isRunning=!1,this._rerunRequested&&(this._rerunRequested=!1,D(this.expireEntries()));case 31:case"end":return e.stop()}}),e,this,[[12,22,25,28]])})));return function(){return e.apply(this,arguments)}}()},{key:"updateTimestamp",value:function(){var e=T(L.a.mark((function e(t){return L.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=3,this._timestampModel.setTimestamp(t,Date.now());case 3:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}()},{key:"isURLExpired",value:function(){var e=T(L.a.mark((function e(t){var n,r;return L.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this._maxAgeSeconds){e.next=6;break}e.next=3;break;case 3:return e.abrupt("return",!1);case 6:return e.next=8,this._timestampModel.getTimestamp(t);case 8:return n=e.sent,r=Date.now()-1e3*this._maxAgeSeconds,e.abrupt("return",n0&&void 0!==arguments[0]?arguments[0]:{};o(this,e),this.cachedResponseWillBeUsed=function(){var e=T(L.a.mark((function e(n){var r,a,i,c,o,u,s;return L.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=n.event,a=n.request,i=n.cacheName,c=n.cachedResponse){e.next=3;break}return e.abrupt("return",null);case 3:if(o=t._isResponseDateFresh(c),D((u=t._getCacheExpiration(i)).expireEntries()),s=u.updateTimestamp(a.url),r)try{r.waitUntil(s)}catch(f){0}return e.abrupt("return",o?c:null);case 9:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),this.cacheDidUpdate=function(){var e=T(L.a.mark((function e(n){var r,a,i;return L.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=n.cacheName,a=n.request,i=t._getCacheExpiration(r),e.next=5,i.updateTimestamp(a.url);case 5:return e.next=7,i.expireEntries();case 7:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),this._config=n,this._maxAgeSeconds=n.maxAgeSeconds,this._cacheExpirations=new Map,n.purgeOnQuotaError&&b((function(){return t.deleteCacheAndMetadata()}))}return H(e,[{key:"_getCacheExpiration",value:function(e){if(e===R())throw new g("expire-custom-caches-only");var t=this._cacheExpirations.get(e);return t||(t=new ne(e,this._config),this._cacheExpirations.set(e,t)),t}},{key:"_isResponseDateFresh",value:function(e){if(!this._maxAgeSeconds)return!0;var t=this._getDateHeaderTimestamp(e);return null===t||t>=Date.now()-1e3*this._maxAgeSeconds}},{key:"_getDateHeaderTimestamp",value:function(e){if(!e.headers.has("date"))return null;var t=e.headers.get("date"),n=new Date(t).getTime();return isNaN(n)?null:n}},{key:"deleteCacheAndMetadata",value:function(){var e=T(L.a.mark((function e(){var t,n,r,a,i;return L.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:t=c(this._cacheExpirations),e.prev=1,t.s();case 3:if((n=t.n()).done){e.next=11;break}return r=W(n.value,2),a=r[0],i=r[1],e.next=7,self.caches.delete(a);case 7:return e.next=9,i.delete();case 9:e.next=3;break;case 11:e.next=16;break;case 13:e.prev=13,e.t0=e.catch(1),t.e(e.t0);case 16:return e.prev=16,t.f(),e.finish(16);case 19:this._cacheExpirations=new Map;case 20:case"end":return e.stop()}}),e,this,[[1,13,16,19]])})));return function(){return e.apply(this,arguments)}}()}]),e}(),ae=(n(2),[]),ie=function(){return ae};function ce(e){if(!e)throw new g("add-to-cache-list-unexpected-type",{entry:e});if("string"===typeof e){var t=new URL(e,location.href);return{cacheKey:t.href,url:t.href}}var n=e.revision,r=e.url;if(!r)throw new g("add-to-cache-list-unexpected-type",{entry:e});if(!n){var a=new URL(r,location.href);return{cacheKey:a.href,url:a.href}}var i=new URL(r,location.href),c=new URL(r,location.href);return i.searchParams.set("__WB_REVISION__",n),{cacheKey:i.href,url:c.href}}var oe,ue=function(){function e(t){o(this,e),this._cacheName=_(t),this._urlsToCacheKeys=new Map,this._urlsToCacheModes=new Map,this._cacheKeysToIntegrities=new Map}return H(e,[{key:"addToCacheList",value:function(e){var t,n=[],r=c(e);try{for(r.s();!(t=r.n()).done;){var a=t.value;"string"===typeof a?n.push(a):a&&void 0===a.revision&&n.push(a.url);var i=ce(a),o=i.cacheKey,u=i.url,s="string"!==typeof a&&a.revision?"reload":"default";if(this._urlsToCacheKeys.has(u)&&this._urlsToCacheKeys.get(u)!==o)throw new g("add-to-cache-list-conflicting-entries",{firstEntry:this._urlsToCacheKeys.get(u),secondEntry:o});if("string"!==typeof a&&a.integrity){if(this._cacheKeysToIntegrities.has(o)&&this._cacheKeysToIntegrities.get(o)!==a.integrity)throw new g("add-to-cache-list-conflicting-integrities",{url:u});this._cacheKeysToIntegrities.set(o,a.integrity)}if(this._urlsToCacheKeys.set(u,o),this._urlsToCacheModes.set(u,s),n.length>0){var f="Workbox is precaching URLs without revision "+"info: ".concat(n.join(", "),"\nThis is generally NOT safe. ")+"Learn more at https://bit.ly/wb-precache";console.warn(f)}}}catch(h){r.e(h)}finally{r.f()}}},{key:"install",value:function(){var e=T(L.a.mark((function e(){var t,n,r,a,i,o,u,s,f,h,l,p,v,d,y,m=this,g=arguments;return L.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=g.length>0&&void 0!==g[0]?g[0]:{},n=t.event,r=t.plugins,a=[],i=[],e.next=6,self.caches.open(this._cacheName);case 6:return o=e.sent,e.next=9,o.keys();case 9:u=e.sent,s=new Set(u.map((function(e){return e.url}))),f=c(this._urlsToCacheKeys);try{for(f.s();!(h=f.n()).done;)l=W(h.value,2),p=l[0],v=l[1],s.has(v)?i.push(p):a.push({cacheKey:v,url:p})}catch(x){f.e(x)}finally{f.f()}return d=a.map((function(e){var t=e.cacheKey,a=e.url,i=m._cacheKeysToIntegrities.get(t),c=m._urlsToCacheModes.get(a);return m._addURLToCache({cacheKey:t,cacheMode:c,event:n,integrity:i,plugins:r,url:a})})),e.next=16,Promise.all(d);case 16:return y=a.map((function(e){return e.url})),e.abrupt("return",{updatedURLs:y,notUpdatedURLs:i});case 19:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}()},{key:"activate",value:function(){var e=T(L.a.mark((function e(){var t,n,r,a,i,o,u;return L.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,self.caches.open(this._cacheName);case 2:return t=e.sent,e.next=5,t.keys();case 5:n=e.sent,r=new Set(this._urlsToCacheKeys.values()),a=[],i=c(n),e.prev=9,i.s();case 11:if((o=i.n()).done){e.next=19;break}if(u=o.value,r.has(u.url)){e.next=17;break}return e.next=16,t.delete(u);case 16:a.push(u.url);case 17:e.next=11;break;case 19:e.next=24;break;case 21:e.prev=21,e.t0=e.catch(9),i.e(e.t0);case 24:return e.prev=24,i.f(),e.finish(24);case 27:return e.abrupt("return",{deletedURLs:a});case 29:case"end":return e.stop()}}),e,this,[[9,21,24,27]])})));return function(){return e.apply(this,arguments)}}()},{key:"_addURLToCache",value:function(){var e=T(L.a.mark((function e(t){var n,r,a,i,o,u,s,f,h,l,p,v;return L.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.cacheKey,r=t.url,a=t.cacheMode,i=t.event,o=t.plugins,u=t.integrity,s=new Request(r,{integrity:u,cache:a,credentials:"same-origin"}),e.next=4,V.fetch({event:i,plugins:o,request:s});case 4:f=e.sent,l=c(o||[]);try{for(l.s();!(p=l.n()).done;)"cacheWillUpdate"in(v=p.value)&&(h=v)}catch(d){l.e(d)}finally{l.f()}if(!h){e.next=13;break}return e.next=10,h.cacheWillUpdate({event:i,request:s,response:f});case 10:e.t0=e.sent,e.next=14;break;case 13:e.t0=f.status<400;case 14:if(e.t0){e.next=17;break}throw new g("bad-precaching-response",{url:r,status:f.status});case 17:if(!f.redirected){e.next=21;break}return e.next=20,z(f);case 20:f=e.sent;case 21:return e.next=23,P.put({event:i,plugins:o,response:f,request:n===r?s:new Request(n),cacheName:this._cacheName,matchOptions:{ignoreSearch:!0}});case 23:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}()},{key:"getURLsToCacheKeys",value:function(){return this._urlsToCacheKeys}},{key:"getCachedURLs",value:function(){return i(this._urlsToCacheKeys.keys())}},{key:"getCacheKeyForURL",value:function(e){var t=new URL(e,location.href);return this._urlsToCacheKeys.get(t.href)}},{key:"matchPrecache",value:function(){var e=T(L.a.mark((function e(t){var n,r,a;return L.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=t instanceof Request?t.url:t,!(r=this.getCacheKeyForURL(n))){e.next=7;break}return e.next=5,self.caches.open(this._cacheName);case 5:return a=e.sent,e.abrupt("return",a.match(r));case 7:return e.abrupt("return",void 0);case 8:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}()},{key:"createHandler",value:function(){var e=this,t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return function(){var n=T(L.a.mark((function n(r){var a,i;return L.a.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return a=r.request,n.prev=1,n.next=4,e.matchPrecache(a);case 4:if(!(i=n.sent)){n.next=7;break}return n.abrupt("return",i);case 7:throw new g("missing-precache-entry",{cacheName:e._cacheName,url:a instanceof Request?a.url:a});case 10:if(n.prev=10,n.t0=n.catch(1),!t){n.next=15;break}return n.abrupt("return",fetch(a));case 15:throw n.t0;case 16:case"end":return n.stop()}}),n,null,[[1,10]])})));return function(e){return n.apply(this,arguments)}}()}},{key:"createHandlerBoundToURL",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=this.getCacheKeyForURL(e);if(!n)throw new g("non-precached-url",{url:e});var r=this.createHandler(t),a=new Request(e);return function(){return r({request:a})}}}]),e}(),se=function(){return oe||(oe=new ue),oe};function fe(e){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=function(){var n=a[r];t.some((function(e){return e.test(n)}))&&e.searchParams.delete(n)},r=0,a=i(e.searchParams.keys());r1&&void 0!==d[1]?d[1]:{},n=t.ignoreURLParametersMatching,r=t.directoryIndex,a=t.cleanURLs,i=t.urlManipulation,(o=new URL(e,location.href)).hash="",y.next=5,o.href;case 5:return u=fe(o,n),y.next=8,u.href;case 8:if(!r||!u.pathname.endsWith("/")){y.next=13;break}return(s=new URL(u.href)).pathname+=r,y.next=13,s.href;case 13:if(!a){y.next=18;break}return(f=new URL(u.href)).pathname+=".html",y.next=18,f.href;case 18:if(!i){y.next=37;break}h=i({url:o}),l=c(h),y.prev=21,l.s();case 23:if((p=l.n()).done){y.next=29;break}return v=p.value,y.next=27,v.href;case 27:y.next=23;break;case 29:y.next=34;break;case 31:y.prev=31,y.t0=y.catch(21),l.e(y.t0);case 34:return y.prev=34,l.f(),y.finish(34);case 37:case"end":return y.stop()}}),he,null,[[21,31,34,37]])}var pe=function(e,t){var n,r=se().getURLsToCacheKeys(),a=c(le(e,t));try{for(a.s();!(n=a.n()).done;){var i=n.value,o=r.get(i);if(o)return o}}catch(u){a.e(u)}finally{a.f()}},ve=!1;function de(e){ve||(!function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.ignoreURLParametersMatching,n=void 0===t?[/^utm_/]:t,r=e.directoryIndex,a=void 0===r?"index.html":r,i=e.cleanURLs,c=void 0===i||i,o=e.urlManipulation,u=_();self.addEventListener("fetch",(function(e){var t=pe(e.request.url,{cleanURLs:c,directoryIndex:a,ignoreURLParametersMatching:n,urlManipulation:o});if(t){var r=self.caches.open(u).then((function(e){return e.match(t)})).then((function(e){return e||fetch(t)}));e.respondWith(r)}}))}(e),ve=!0)}var ye=function(e){var t=se(),n=ie();e.waitUntil(t.install({event:e,plugins:n}).catch((function(e){throw e})))},me=function(e){var t=se();e.waitUntil(t.activate())};n(3);var ge,xe=function(e){return e&&"object"===typeof e?e:{handle:e}},be=function e(t,n){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"GET";o(this,e),this.handler=xe(n),this.match=t,this.method=r},we=function(e){s(n,e);var t=v(n);function n(e,r,a){o(this,n);return t.call(this,(function(t){var n=t.url,r=e.exec(n.href);if(r&&(n.origin===location.origin||0===r.index))return r.slice(1)}),r,a)}return n}(be),ke=function(){function e(){o(this,e),this._routes=new Map}return H(e,[{key:"routes",get:function(){return this._routes}},{key:"addFetchListener",value:function(){var e=this;self.addEventListener("fetch",(function(t){var n=t.request,r=e.handleRequest({request:n,event:t});r&&t.respondWith(r)}))}},{key:"addCacheListener",value:function(){var e=this;self.addEventListener("message",(function(t){if(t.data&&"CACHE_URLS"===t.data.type){var n=t.data.payload;0;var r=Promise.all(n.urlsToCache.map((function(t){"string"===typeof t&&(t=[t]);var n=d(Request,i(t));return e.handleRequest({request:n})})));t.waitUntil(r),t.ports&&t.ports[0]&&r.then((function(){return t.ports[0].postMessage(!0)}))}}))}},{key:"handleRequest",value:function(e){var t=this,n=e.request,r=e.event;var a=new URL(n.url,location.href);if(a.protocol.startsWith("http")){var i=this.findMatchingRoute({url:a,request:n,event:r}),c=i.params,o=i.route,u=o&&o.handler;if(!u&&this._defaultHandler&&(u=this._defaultHandler),u){var s;0;try{s=u.handle({url:a,request:n,event:r,params:c})}catch(f){s=Promise.reject(f)}return s instanceof Promise&&this._catchHandler&&(s=s.catch((function(e){return t._catchHandler.handle({url:a,request:n,event:r})}))),s}}}},{key:"findMatchingRoute",value:function(e){var t=e.url,n=e.request,r=e.event;var a,i=c(this._routes.get(n.method)||[]);try{for(i.s();!(a=i.n()).done;){var o=a.value,u=void 0,s=o.match({url:t,request:n,event:r});if(s)return u=s,(Array.isArray(s)&&0===s.length||s.constructor===Object&&0===Object.keys(s).length||"boolean"===typeof s)&&(u=void 0),{route:o,params:u}}}catch(f){i.e(f)}finally{i.f()}return{}}},{key:"setDefaultHandler",value:function(e){this._defaultHandler=xe(e)}},{key:"setCatchHandler",value:function(e){this._catchHandler=xe(e)}},{key:"registerRoute",value:function(e){this._routes.has(e.method)||this._routes.set(e.method,[]),this._routes.get(e.method).push(e)}},{key:"unregisterRoute",value:function(e){if(!this._routes.has(e.method))throw new g("unregister-route-but-not-found-with-method",{method:e.method});var t=this._routes.get(e.method).indexOf(e);if(!(t>-1))throw new g("unregister-route-route-not-registered");this._routes.get(e.method).splice(t,1)}}]),e}(),_e=function(){return ge||((ge=new ke).addFetchListener(),ge.addCacheListener()),ge};function Re(e,t,n){var r;if("string"===typeof e){var a=new URL(e,location.href);r=new be((function(e){return e.url.href===a.href}),t,n)}else if(e instanceof RegExp)r=new we(e,t,n);else if("function"===typeof e)r=new be(e,t,n);else{if(!(e instanceof be))throw new g("unsupported-route-type",{moduleName:"workbox-routing",funcName:"registerRoute",paramName:"capture"});r=e}return _e().registerRoute(r),r}n(4);var Ee,Le={cacheWillUpdate:function(){var e=T(L.a.mark((function e(t){var n;return L.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(200!==(n=t.response).status&&0!==n.status){e.next=3;break}return e.abrupt("return",n);case 3:return e.abrupt("return",null);case 4:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()},qe=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(o(this,e),this._cacheName=R(t.cacheName),this._plugins=t.plugins||[],t.plugins){var n=t.plugins.some((function(e){return!!e.cacheWillUpdate}));this._plugins=n?t.plugins:[Le].concat(i(t.plugins))}else this._plugins=[Le];this._fetchOptions=t.fetchOptions,this._matchOptions=t.matchOptions}return H(e,[{key:"handle",value:function(){var e=T(L.a.mark((function e(t){var n,r,a,i,c;return L.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.event,r=t.request,[],"string"===typeof r&&(r=new Request(r)),a=this._getFromNetwork({request:r,event:n}),e.next=7,P.match({cacheName:this._cacheName,request:r,event:n,matchOptions:this._matchOptions,plugins:this._plugins});case 7:if(!(i=e.sent)){e.next=13;break}if(n)try{n.waitUntil(a)}catch(c){0}e.next=23;break;case 13:return e.prev=14,e.next=17,a;case 17:i=e.sent,e.next=23;break;case 20:e.prev=20,e.t0=e.catch(14),c=e.t0;case 23:if(i){e.next=26;break}throw new g("no-response",{url:r.url,error:c});case 26:return e.abrupt("return",i);case 27:case"end":return e.stop()}}),e,this,[[14,20]])})));return function(t){return e.apply(this,arguments)}}()},{key:"_getFromNetwork",value:function(){var e=T(L.a.mark((function e(t){var n,r,a,i;return L.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.request,r=t.event,e.next=3,V.fetch({request:n,event:r,fetchOptions:this._fetchOptions,plugins:this._plugins});case 3:if(a=e.sent,i=P.put({cacheName:this._cacheName,request:n,response:a.clone(),event:r,plugins:this._plugins}),r)try{r.waitUntil(i)}catch(c){0}return e.abrupt("return",a);case 7:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}()}]),e}();self.addEventListener("activate",(function(){return self.clients.claim()})),function(e){se().addToCacheList(e),e.length>0&&(self.addEventListener("install",ye),self.addEventListener("activate",me))}([{'revision':'56f57e0384b262803a90ed322a718cc1','url':'./index.html'},{'revision':null,'url':'./static/css/4.532f36fa.chunk.css'},{'revision':null,'url':'./static/css/main.8a382b2d.chunk.css'},{'revision':null,'url':'./static/js/0.bc66b1f6.chunk.js'},{'revision':null,'url':'./static/js/10.8936305f.chunk.js'},{'revision':null,'url':'./static/js/11.07ef5b48.chunk.js'},{'revision':null,'url':'./static/js/12.647bd439.chunk.js'},{'revision':null,'url':'./static/js/13.522eb31c.chunk.js'},{'revision':null,'url':'./static/js/14.ffa59895.chunk.js'},{'revision':null,'url':'./static/js/15.c32169b6.chunk.js'},{'revision':null,'url':'./static/js/16.10b6793a.chunk.js'},{'revision':null,'url':'./static/js/17.d4a7cc73.chunk.js'},{'revision':null,'url':'./static/js/18.ec64f004.chunk.js'},{'revision':null,'url':'./static/js/19.7a517f14.chunk.js'},{'revision':null,'url':'./static/js/20.06acf2b1.chunk.js'},{'revision':null,'url':'./static/js/21.a3fd3b52.chunk.js'},{'revision':null,'url':'./static/js/22.e6a8141d.chunk.js'},{'revision':null,'url':'./static/js/23.89313ed0.chunk.js'},{'revision':null,'url':'./static/js/24.397e3f98.chunk.js'},{'revision':null,'url':'./static/js/25.4f69e673.chunk.js'},{'revision':null,'url':'./static/js/26.58344dc2.chunk.js'},{'revision':null,'url':'./static/js/27.e52dc807.chunk.js'},{'revision':null,'url':'./static/js/28.b4f5266c.chunk.js'},{'revision':null,'url':'./static/js/29.c116fe5f.chunk.js'},{'revision':null,'url':'./static/js/30.7d6e613f.chunk.js'},{'revision':null,'url':'./static/js/31.0420a66b.chunk.js'},{'revision':null,'url':'./static/js/32.abce75f3.chunk.js'},{'revision':null,'url':'./static/js/33.0087ef02.chunk.js'},{'revision':null,'url':'./static/js/34.8eaf8627.chunk.js'},{'revision':null,'url':'./static/js/35.9d42a8e7.chunk.js'},{'revision':null,'url':'./static/js/36.e5c6cdeb.chunk.js'},{'revision':null,'url':'./static/js/37.caa53901.chunk.js'},{'revision':null,'url':'./static/js/38.52d1e430.chunk.js'},{'revision':null,'url':'./static/js/39.cb82ca85.chunk.js'},{'revision':null,'url':'./static/js/4.5490d087.chunk.js'},{'revision':null,'url':'./static/js/40.4feaf891.chunk.js'},{'revision':null,'url':'./static/js/41.1e939549.chunk.js'},{'revision':null,'url':'./static/js/42.02afdca6.chunk.js'},{'revision':null,'url':'./static/js/43.a81a7d14.chunk.js'},{'revision':null,'url':'./static/js/44.f150b641.chunk.js'},{'revision':null,'url':'./static/js/45.e968d947.chunk.js'},{'revision':null,'url':'./static/js/46.a5297a0e.chunk.js'},{'revision':null,'url':'./static/js/47.99397c05.chunk.js'},{'revision':null,'url':'./static/js/48.a174ebe6.chunk.js'},{'revision':null,'url':'./static/js/49.af8698fc.chunk.js'},{'revision':null,'url':'./static/js/5.5d0b3ffd.chunk.js'},{'revision':null,'url':'./static/js/50.f3dccebf.chunk.js'},{'revision':null,'url':'./static/js/51.46f4e0ea.chunk.js'},{'revision':null,'url':'./static/js/52.1a3ff828.chunk.js'},{'revision':null,'url':'./static/js/53.6f9ad754.chunk.js'},{'revision':null,'url':'./static/js/54.1623e743.chunk.js'},{'revision':null,'url':'./static/js/55.96954b22.chunk.js'},{'revision':null,'url':'./static/js/56.f2ce7728.chunk.js'},{'revision':null,'url':'./static/js/57.62be6ec8.chunk.js'},{'revision':null,'url':'./static/js/58.6e1e4f04.chunk.js'},{'revision':null,'url':'./static/js/6.28ab63c9.chunk.js'},{'revision':null,'url':'./static/js/7.326dd770.chunk.js'},{'revision':null,'url':'./static/js/8.20357bb9.chunk.js'},{'revision':null,'url':'./static/js/9.e2679d39.chunk.js'},{'revision':null,'url':'./static/js/main.7ea1b7ba.chunk.js'},{'revision':null,'url':'./static/js/polyfills-dom.e443d203.chunk.js'},{'revision':null,'url':'./static/js/runtime-main.5848ee21.js'}]),de(Ee);var Te,Oe=new RegExp("/[^/?]+\\.[^/]+$");Re((function(e){var t=e.request,n=e.url;return"navigate"===t.mode&&(!n.pathname.startsWith("/_")&&!n.pathname.match(Oe))}),(Te="./index.html",se().createHandlerBoundToURL(Te))),Re((function(e){var t=e.url;return t.origin===self.location.origin&&t.pathname.endsWith(".png")}),new qe({cacheName:"images",plugins:[new re({maxEntries:50})]})),self.addEventListener("message",(function(e){e.data&&"SKIP_WAITING"===e.data.type&&self.skipWaiting()}))}]); +!function(e){var t={};function n(r){if(t[r])return t[r].exports;var a=t[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,n),a.l=!0,a.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var a in e)n.d(r,a,function(t){return e[t]}.bind(null,a));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/unict-telegram-channels-groups/",n(n.s=7)}([function(e,t,n){e.exports=n(6)},function(e,t,n){"use strict";try{self["workbox:core:5.1.4"]&&_()}catch(r){}},function(e,t,n){"use strict";try{self["workbox:precaching:5.1.4"]&&_()}catch(r){}},function(e,t,n){"use strict";try{self["workbox:routing:5.1.4"]&&_()}catch(r){}},function(e,t,n){"use strict";try{self["workbox:strategies:5.1.4"]&&_()}catch(r){}},function(e,t,n){"use strict";try{self["workbox:expiration:5.1.4"]&&_()}catch(r){}},function(e,t,n){var r=function(e){"use strict";var t,n=Object.prototype,r=n.hasOwnProperty,a="function"===typeof Symbol?Symbol:{},i=a.iterator||"@@iterator",c=a.asyncIterator||"@@asyncIterator",o=a.toStringTag||"@@toStringTag";function u(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{u({},"")}catch(U){u=function(e,t,n){return e[t]=n}}function s(e,t,n,r){var a=t&&t.prototype instanceof y?t:y,i=Object.create(a.prototype),c=new T(r||[]);return i._invoke=function(e,t,n){var r=h;return function(a,i){if(r===p)throw new Error("Generator is already running");if(r===v){if("throw"===a)throw i;return S()}for(n.method=a,n.arg=i;;){var c=n.delegate;if(c){var o=E(c,n);if(o){if(o===d)continue;return o}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(r===h)throw r=v,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r=p;var u=f(e,t,n);if("normal"===u.type){if(r=n.done?v:l,u.arg===d)continue;return{value:u.arg,done:n.done}}"throw"===u.type&&(r=v,n.method="throw",n.arg=u.arg)}}}(e,n,c),i}function f(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(U){return{type:"throw",arg:U}}}e.wrap=s;var h="suspendedStart",l="suspendedYield",p="executing",v="completed",d={};function y(){}function m(){}function g(){}var x={};u(x,i,(function(){return this}));var b=Object.getPrototypeOf,w=b&&b(b(O([])));w&&w!==n&&r.call(w,i)&&(x=w);var k=g.prototype=y.prototype=Object.create(x);function _(e){["next","throw","return"].forEach((function(t){u(e,t,(function(e){return this._invoke(t,e)}))}))}function R(e,t){function n(a,i,c,o){var u=f(e[a],e,i);if("throw"!==u.type){var s=u.arg,h=s.value;return h&&"object"===typeof h&&r.call(h,"__await")?t.resolve(h.__await).then((function(e){n("next",e,c,o)}),(function(e){n("throw",e,c,o)})):t.resolve(h).then((function(e){s.value=e,c(s)}),(function(e){return n("throw",e,c,o)}))}o(u.arg)}var a;this._invoke=function(e,r){function i(){return new t((function(t,a){n(e,r,t,a)}))}return a=a?a.then(i,i):i()}}function E(e,n){var r=e.iterator[n.method];if(r===t){if(n.delegate=null,"throw"===n.method){if(e.iterator.return&&(n.method="return",n.arg=t,E(e,n),"throw"===n.method))return d;n.method="throw",n.arg=new TypeError("The iterator does not provide a 'throw' method")}return d}var a=f(r,e.iterator,n.arg);if("throw"===a.type)return n.method="throw",n.arg=a.arg,n.delegate=null,d;var i=a.arg;return i?i.done?(n[e.resultName]=i.value,n.next=e.nextLoc,"return"!==n.method&&(n.method="next",n.arg=t),n.delegate=null,d):i:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,d)}function L(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function q(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function T(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(L,this),this.reset(!0)}function O(e){if(e){var n=e[i];if(n)return n.call(e);if("function"===typeof e.next)return e;if(!isNaN(e.length)){var a=-1,c=function n(){for(;++a=0;--i){var c=this.tryEntries[i],o=c.completion;if("root"===c.tryLoc)return a("end");if(c.tryLoc<=this.prev){var u=r.call(c,"catchLoc"),s=r.call(c,"finallyLoc");if(u&&s){if(this.prev=0;--n){var a=this.tryEntries[n];if(a.tryLoc<=this.prev&&r.call(a,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),q(n),d}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var a=r.arg;q(n)}return a}}throw new Error("illegal catch attempt")},delegateYield:function(e,n,r){return this.delegate={iterator:O(e),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=t),d}},e}(e.exports);try{regeneratorRuntime=r}catch(a){"object"===typeof globalThis?globalThis.regeneratorRuntime=r:Function("r","regeneratorRuntime = r")(r)}},function(e,t,n){"use strict";function r(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var c,o=!0,u=!1;return{s:function(){n=e[Symbol.iterator]()},n:function(){var e=n.next();return o=e.done,e},e:function(e){u=!0,c=e},f:function(){try{o||null==n.return||n.return()}finally{if(u)throw c}}}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function u(e,t){return u=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},u(e,t)}function s(e,t){if("function"!==typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&u(e,t)}function f(e){return f=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},f(e)}function h(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}function l(e){return l="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"===typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},l(e)}function p(e,t){return!t||"object"!==l(t)&&"function"!==typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function v(e){var t=h();return function(){var n,r=f(e);if(t){var a=f(this).constructor;n=Reflect.construct(r,arguments,a)}else n=r.apply(this,arguments);return p(this,n)}}function d(e,t,n){return d=h()?Reflect.construct:function(e,t,n){var r=[null];r.push.apply(r,t);var a=new(Function.bind.apply(e,r));return n&&u(a,n.prototype),a},d.apply(null,arguments)}function y(e){var t="function"===typeof Map?new Map:void 0;return y=function(e){if(null===e||(n=e,-1===Function.toString.call(n).indexOf("[native code]")))return e;var n;if("function"!==typeof e)throw new TypeError("Super expression must either be null or a function");if("undefined"!==typeof t){if(t.has(e))return t.get(e);t.set(e,r)}function r(){return d(e,arguments,f(this).constructor)}return r.prototype=Object.create(e.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),u(r,e)},y(e)}var m=function(e){for(var t=e,n=arguments.length,r=new Array(n>1?n-1:0),a=1;a0&&(t+=" :: ".concat(JSON.stringify(r))),t},g=function(e){s(n,e);var t=v(n);function n(e,r){var a;o(this,n);var i=m(e,r);return(a=t.call(this,i)).name=e,a.details=r,a}return n}(y(Error)),x=new Set;function b(e){x.add(e)}var w={googleAnalytics:"googleAnalytics",precache:"precache-v2",prefix:"workbox",runtime:"runtime",suffix:"undefined"!==typeof registration?registration.scope:""},k=function(e){return[w.prefix,e,w.suffix].filter((function(e){return e&&e.length>0})).join("-")},_=function(e){return e||k(w.precache)},R=function(e){return e||k(w.runtime)},E=n(0),L=n.n(E);function q(e,t,n,r,a,i,c){try{var o=e[i](c),u=o.value}catch(s){return void n(s)}o.done?t(u):Promise.resolve(u).then(r,a)}function T(e){return function(){var t=this,n=arguments;return new Promise((function(r,a){var i=e.apply(t,n);function c(e){q(i,r,a,c,o,"next",e)}function o(e){q(i,r,a,c,o,"throw",e)}c(void 0)}))}}function O(){return S.apply(this,arguments)}function S(){return(S=T(L.a.mark((function e(){var t,n,r;return L.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:0,t=c(x),e.prev=2,t.s();case 4:if((n=t.n()).done){e.next=11;break}return r=n.value,e.next=8,r();case 8:0;case 9:e.next=4;break;case 11:e.next=16;break;case 13:e.prev=13,e.t0=e.catch(2),t.e(e.t0);case 16:return e.prev=16,t.f(),e.finish(16);case 19:0;case 20:case"end":return e.stop()}}),e,null,[[2,13,16,19]])})))).apply(this,arguments)}var U,N=function(e){return new URL(String(e),location.href).href.replace(new RegExp("^".concat(location.origin)),"")},j=function(e,t){return e.filter((function(e){return t in e}))},A=function(){var e=T(L.a.mark((function e(t){var n,r,a,i,o,u,s,f;return L.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=t.request,r=t.mode,a=t.plugins,i=j(void 0===a?[]:a,"cacheKeyWillBeUsed"),o=n,u=c(i),e.prev=4,u.s();case 6:if((s=u.n()).done){e.next=15;break}return f=s.value,e.next=10,f.cacheKeyWillBeUsed.call(f,{mode:r,request:o});case 10:"string"===typeof(o=e.sent)&&(o=new Request(o));case 13:e.next=6;break;case 15:e.next=20;break;case 17:e.prev=17,e.t0=e.catch(4),u.e(e.t0);case 20:return e.prev=20,u.f(),e.finish(20);case 23:return e.abrupt("return",o);case 24:case"end":return e.stop()}}),e,null,[[4,17,20,23]])})));return function(t){return e.apply(this,arguments)}}(),M=function(){var e=T(L.a.mark((function e(t){var n,r,a,i,o,u,s,f,h,l;return L.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=t.request,r=t.response,a=t.event,i=t.plugins,o=r,u=!1,s=c(void 0===i?[]:i),e.prev=4,s.s();case 6:if((f=s.n()).done){e.next=19;break}if(!("cacheWillUpdate"in(h=f.value))){e.next=17;break}return u=!0,l=h.cacheWillUpdate,e.next=13,l.call(h,{request:n,response:o,event:a});case 13:if(o=e.sent){e.next=17;break}return e.abrupt("break",19);case 17:e.next=6;break;case 19:e.next=24;break;case 21:e.prev=21,e.t0=e.catch(4),s.e(e.t0);case 24:return e.prev=24,s.f(),e.finish(24);case 27:return u||(o=o&&200===o.status?o:void 0),e.abrupt("return",o||null);case 29:case"end":return e.stop()}}),e,null,[[4,21,24,27]])})));return function(t){return e.apply(this,arguments)}}(),C=function(){var e=T(L.a.mark((function e(t){var n,r,a,i,o,u,s,f,h,l,p,v,d;return L.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.cacheName,r=t.request,a=t.event,i=t.matchOptions,o=t.plugins,u=void 0===o?[]:o,e.next=3,self.caches.open(n);case 3:return s=e.sent,e.next=6,A({plugins:u,request:r,mode:"read"});case 6:return f=e.sent,e.next=9,s.match(f,i);case 9:h=e.sent,l=c(u),e.prev=12,l.s();case 14:if((p=l.n()).done){e.next=24;break}if(!("cachedResponseWillBeUsed"in(v=p.value))){e.next=22;break}return d=v.cachedResponseWillBeUsed,e.next=20,d.call(v,{cacheName:n,event:a,matchOptions:i,cachedResponse:h,request:f});case 20:h=e.sent;case 22:e.next=14;break;case 24:e.next=29;break;case 26:e.prev=26,e.t0=e.catch(12),l.e(e.t0);case 29:return e.prev=29,l.f(),e.finish(29);case 32:return e.abrupt("return",h);case 33:case"end":return e.stop()}}),e,null,[[12,26,29,32]])})));return function(t){return e.apply(this,arguments)}}(),K=function(){var e=T(L.a.mark((function e(t){var n,r,a,i,o,u,s,f,h,l,p,v,d,y,m;return L.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=t.cacheName,r=t.request,a=t.response,i=t.event,o=t.plugins,u=void 0===o?[]:o,s=t.matchOptions,e.next=4;break;case 4:return e.next=6,A({plugins:u,request:r,mode:"write"});case 6:if(f=e.sent,a){e.next=10;break}throw new g("cache-put-with-no-response",{url:N(f.url)});case 10:return e.next=12,M({event:i,plugins:u,response:a,request:f});case 12:if(h=e.sent){e.next=16;break}return e.abrupt("return");case 16:return e.next=18,self.caches.open(n);case 18:if(l=e.sent,!((p=j(u,"cacheDidUpdate")).length>0)){e.next=26;break}return e.next=23,C({cacheName:n,matchOptions:s,request:f});case 23:e.t0=e.sent,e.next=27;break;case 26:e.t0=null;case 27:return v=e.t0,e.prev=29,e.next=32,l.put(f,h);case 32:e.next=40;break;case 34:if(e.prev=34,e.t1=e.catch(29),"QuotaExceededError"!==e.t1.name){e.next=39;break}return e.next=39,O();case 39:throw e.t1;case 40:d=c(p),e.prev=41,d.s();case 43:if((y=d.n()).done){e.next=49;break}return m=y.value,e.next=47,m.cacheDidUpdate.call(m,{cacheName:n,event:i,oldResponse:v,newResponse:h,request:f});case 47:e.next=43;break;case 49:e.next=54;break;case 51:e.prev=51,e.t2=e.catch(41),d.e(e.t2);case 54:return e.prev=54,d.f(),e.finish(54);case 57:case"end":return e.stop()}}),e,null,[[29,34],[41,51,54,57]])})));return function(t){return e.apply(this,arguments)}}(),P={put:K,match:C};function I(){if(void 0===U){var e=new Response("");if("body"in e)try{new Response(e.body),U=!0}catch(t){U=!1}U=!1}return U}function D(e){e.then((function(){}))}function W(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if("undefined"!==typeof Symbol&&Symbol.iterator in Object(e)){var n=[],r=!0,a=!1,i=void 0;try{for(var c,o=e[Symbol.iterator]();!(r=(c=o.next()).done)&&(n.push(c.value),!t||n.length!==t);r=!0);}catch(u){a=!0,i=u}finally{try{r||null==o.return||o.return()}finally{if(a)throw i}}return n}}(e,t)||a(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function F(e,t){for(var n=0;n2&&void 0!==arguments[2]?arguments[2]:{},i=a.onupgradeneeded,c=a.onversionchange;o(this,e),this._db=null,this._name=t,this._version=n,this._onupgradeneeded=i,this._onversionchange=c||function(){return r.close()}}return H(e,[{key:"db",get:function(){return this._db}},{key:"open",value:function(){var e=T(L.a.mark((function e(){var t=this;return L.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!this._db){e.next=2;break}return e.abrupt("return");case 2:return e.next=4,new Promise((function(e,n){var r=!1;setTimeout((function(){r=!0,n(new Error("The open request was blocked and timed out"))}),t.OPEN_TIMEOUT);var a=indexedDB.open(t._name,t._version);a.onerror=function(){return n(a.error)},a.onupgradeneeded=function(e){r?(a.transaction.abort(),a.result.close()):"function"===typeof t._onupgradeneeded&&t._onupgradeneeded(e)},a.onsuccess=function(){var n=a.result;r?n.close():(n.onversionchange=t._onversionchange.bind(t),e(n))}}));case 4:return this._db=e.sent,e.abrupt("return",this);case 6:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}()},{key:"getKey",value:function(){var e=T(L.a.mark((function e(t,n){return L.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.getAllKeys(t,n,1);case 2:return e.abrupt("return",e.sent[0]);case 3:case"end":return e.stop()}}),e,this)})));return function(t,n){return e.apply(this,arguments)}}()},{key:"getAll",value:function(){var e=T(L.a.mark((function e(t,n,r){return L.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.getAllMatching(t,{query:n,count:r});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e,this)})));return function(t,n,r){return e.apply(this,arguments)}}()},{key:"getAllKeys",value:function(){var e=T(L.a.mark((function e(t,n,r){var a;return L.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.getAllMatching(t,{query:n,count:r,includeKeys:!0});case 2:return a=e.sent,e.abrupt("return",a.map((function(e){return e.key})));case 4:case"end":return e.stop()}}),e,this)})));return function(t,n,r){return e.apply(this,arguments)}}()},{key:"getAllMatching",value:function(){var e=T(L.a.mark((function e(t){var n,r,a,i,c,o,u,s,f,h=arguments;return L.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=h.length>1&&void 0!==h[1]?h[1]:{},r=n.index,a=n.query,i=void 0===a?null:a,c=n.direction,o=void 0===c?"next":c,u=n.count,s=n.includeKeys,f=void 0!==s&&s,e.next=3,this.transaction([t],"readonly",(function(e,n){var a=e.objectStore(t),c=r?a.index(r):a,s=[],h=c.openCursor(i,o);h.onsuccess=function(){var e=h.result;e?(s.push(f?e:e.value),u&&s.length>=u?n(s):e.continue()):n(s)}}));case 3:return e.abrupt("return",e.sent);case 4:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}()},{key:"transaction",value:function(){var e=T(L.a.mark((function e(t,n,r){var a=this;return L.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.open();case 2:return e.next=4,new Promise((function(e,i){var c=a._db.transaction(t,n);c.onabort=function(){return i(c.error)},c.oncomplete=function(){return e()},r(c,(function(t){return e(t)}))}));case 4:return e.abrupt("return",e.sent);case 5:case"end":return e.stop()}}),e,this)})));return function(t,n,r){return e.apply(this,arguments)}}()},{key:"_call",value:function(){var e=T(L.a.mark((function e(t,n,r){var a,i,c,o,u=arguments;return L.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:for(a=u.length,i=new Array(a>3?a-3:0),c=3;c1?a-1:0),c=1;c0?n.clone():null,e.prev=12,h=c(o),e.prev=14,h.s();case 16:if((l=h.n()).done){e.next=27;break}if(!("requestWillFetch"in(p=l.value))){e.next=25;break}return v=p.requestWillFetch,d=n.clone(),e.next=23,v.call(p,{request:d,event:a});case 23:n=e.sent;case 25:e.next=16;break;case 27:e.next=32;break;case 29:e.prev=29,e.t0=e.catch(14),h.e(e.t0);case 32:return e.prev=32,h.f(),e.finish(32);case 35:e.next=40;break;case 37:throw e.prev=37,e.t1=e.catch(12),new g("plugin-error-request-will-fetch",{thrownError:e.t1});case 40:if(y=n.clone(),e.prev=41,"navigate"!==n.mode){e.next=48;break}return e.next=45,fetch(n);case 45:m=e.sent,e.next=51;break;case 48:return e.next=50,fetch(n,r);case 50:m=e.sent;case 51:0,x=c(o),e.prev=53,x.s();case 55:if((b=x.n()).done){e.next=64;break}if(!("fetchDidSucceed"in(w=b.value))){e.next=62;break}return e.next=60,w.fetchDidSucceed.call(w,{event:a,request:y,response:m});case 60:m=e.sent;case 62:e.next=55;break;case 64:e.next=69;break;case 66:e.prev=66,e.t2=e.catch(53),x.e(e.t2);case 69:return e.prev=69,x.f(),e.finish(69);case 72:return e.abrupt("return",m);case 75:e.prev=75,e.t3=e.catch(41),k=c(s),e.prev=79,k.s();case 81:if((_=k.n()).done){e.next=87;break}return R=_.value,e.next=85,R.fetchDidFail.call(R,{error:e.t3,event:a,originalRequest:f.clone(),request:y.clone()});case 85:e.next=81;break;case 87:e.next=92;break;case 89:e.prev=89,e.t4=e.catch(79),k.e(e.t4);case 92:return e.prev=92,k.f(),e.finish(92);case 95:throw e.t3;case 96:case"end":return e.stop()}}),e,null,[[12,37],[14,29,32,35],[41,75],[53,66,69,72],[79,89,92,95]])})));return function(t){return e.apply(this,arguments)}}(),V={fetch:J};function z(e,t){return X.apply(this,arguments)}function X(){return(X=T(L.a.mark((function e(t,n){var r,a,i,c;return L.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=t.clone(),a={headers:new Headers(r.headers),status:r.status,statusText:r.statusText},i=n?n(a):a,!I()){e.next=7;break}e.t0=r.body,e.next=10;break;case 7:return e.next=9,r.blob();case 9:e.t0=e.sent;case 10:return c=e.t0,e.abrupt("return",new Response(c,i));case 12:case"end":return e.stop()}}),e)})))).apply(this,arguments)}n(5);var Z="cache-entries",ee=function(e){var t=new URL(e,location.href);return t.hash="",t.href},te=function(){function e(t){var n=this;o(this,e),this._cacheName=t,this._db=new B("workbox-expiration",1,{onupgradeneeded:function(e){return n._handleUpgrade(e)}})}return H(e,[{key:"_handleUpgrade",value:function(e){var t=e.target.result.createObjectStore(Z,{keyPath:"id"});t.createIndex("cacheName","cacheName",{unique:!1}),t.createIndex("timestamp","timestamp",{unique:!1}),$(this._cacheName)}},{key:"setTimestamp",value:function(){var e=T(L.a.mark((function e(t,n){var r;return L.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=ee(t),r={url:t,timestamp:n,cacheName:this._cacheName,id:this._getId(t)},e.next=4,this._db.put(Z,r);case 4:case"end":return e.stop()}}),e,this)})));return function(t,n){return e.apply(this,arguments)}}()},{key:"getTimestamp",value:function(){var e=T(L.a.mark((function e(t){var n;return L.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._db.get(Z,this._getId(t));case 2:return n=e.sent,e.abrupt("return",n.timestamp);case 4:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}()},{key:"expireEntries",value:function(){var e=T(L.a.mark((function e(t,n){var r,a,i,o,u,s=this;return L.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._db.transaction(Z,"readwrite",(function(e,r){var a=e.objectStore(Z).index("timestamp").openCursor(null,"prev"),i=[],c=0;a.onsuccess=function(){var e=a.result;if(e){var o=e.value;o.cacheName===s._cacheName&&(t&&o.timestamp=n?i.push(e.value):c++),e.continue()}else r(i)}}));case 2:r=e.sent,a=[],i=c(r),e.prev=5,i.s();case 7:if((o=i.n()).done){e.next=14;break}return u=o.value,e.next=11,this._db.delete(Z,u.id);case 11:a.push(u.url);case 12:e.next=7;break;case 14:e.next=19;break;case 16:e.prev=16,e.t0=e.catch(5),i.e(e.t0);case 19:return e.prev=19,i.f(),e.finish(19);case 22:return e.abrupt("return",a);case 23:case"end":return e.stop()}}),e,this,[[5,16,19,22]])})));return function(t,n){return e.apply(this,arguments)}}()},{key:"_getId",value:function(e){return this._cacheName+"|"+ee(e)}}]),e}(),ne=function(){function e(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};o(this,e),this._isRunning=!1,this._rerunRequested=!1,this._maxEntries=n.maxEntries,this._maxAgeSeconds=n.maxAgeSeconds,this._cacheName=t,this._timestampModel=new te(t)}return H(e,[{key:"expireEntries",value:function(){var e=T(L.a.mark((function e(){var t,n,r,a,i,o;return L.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!this._isRunning){e.next=3;break}return this._rerunRequested=!0,e.abrupt("return");case 3:return this._isRunning=!0,t=this._maxAgeSeconds?Date.now()-1e3*this._maxAgeSeconds:0,e.next=7,this._timestampModel.expireEntries(t,this._maxEntries);case 7:return n=e.sent,e.next=10,self.caches.open(this._cacheName);case 10:r=e.sent,a=c(n),e.prev=12,a.s();case 14:if((i=a.n()).done){e.next=20;break}return o=i.value,e.next=18,r.delete(o);case 18:e.next=14;break;case 20:e.next=25;break;case 22:e.prev=22,e.t0=e.catch(12),a.e(e.t0);case 25:return e.prev=25,a.f(),e.finish(25);case 28:0,this._isRunning=!1,this._rerunRequested&&(this._rerunRequested=!1,D(this.expireEntries()));case 31:case"end":return e.stop()}}),e,this,[[12,22,25,28]])})));return function(){return e.apply(this,arguments)}}()},{key:"updateTimestamp",value:function(){var e=T(L.a.mark((function e(t){return L.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=3,this._timestampModel.setTimestamp(t,Date.now());case 3:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}()},{key:"isURLExpired",value:function(){var e=T(L.a.mark((function e(t){var n,r;return L.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this._maxAgeSeconds){e.next=6;break}e.next=3;break;case 3:return e.abrupt("return",!1);case 6:return e.next=8,this._timestampModel.getTimestamp(t);case 8:return n=e.sent,r=Date.now()-1e3*this._maxAgeSeconds,e.abrupt("return",n0&&void 0!==arguments[0]?arguments[0]:{};o(this,e),this.cachedResponseWillBeUsed=function(){var e=T(L.a.mark((function e(n){var r,a,i,c,o,u,s;return L.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=n.event,a=n.request,i=n.cacheName,c=n.cachedResponse){e.next=3;break}return e.abrupt("return",null);case 3:if(o=t._isResponseDateFresh(c),D((u=t._getCacheExpiration(i)).expireEntries()),s=u.updateTimestamp(a.url),r)try{r.waitUntil(s)}catch(f){0}return e.abrupt("return",o?c:null);case 9:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),this.cacheDidUpdate=function(){var e=T(L.a.mark((function e(n){var r,a,i;return L.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=n.cacheName,a=n.request,i=t._getCacheExpiration(r),e.next=5,i.updateTimestamp(a.url);case 5:return e.next=7,i.expireEntries();case 7:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),this._config=n,this._maxAgeSeconds=n.maxAgeSeconds,this._cacheExpirations=new Map,n.purgeOnQuotaError&&b((function(){return t.deleteCacheAndMetadata()}))}return H(e,[{key:"_getCacheExpiration",value:function(e){if(e===R())throw new g("expire-custom-caches-only");var t=this._cacheExpirations.get(e);return t||(t=new ne(e,this._config),this._cacheExpirations.set(e,t)),t}},{key:"_isResponseDateFresh",value:function(e){if(!this._maxAgeSeconds)return!0;var t=this._getDateHeaderTimestamp(e);return null===t||t>=Date.now()-1e3*this._maxAgeSeconds}},{key:"_getDateHeaderTimestamp",value:function(e){if(!e.headers.has("date"))return null;var t=e.headers.get("date"),n=new Date(t).getTime();return isNaN(n)?null:n}},{key:"deleteCacheAndMetadata",value:function(){var e=T(L.a.mark((function e(){var t,n,r,a,i;return L.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:t=c(this._cacheExpirations),e.prev=1,t.s();case 3:if((n=t.n()).done){e.next=11;break}return r=W(n.value,2),a=r[0],i=r[1],e.next=7,self.caches.delete(a);case 7:return e.next=9,i.delete();case 9:e.next=3;break;case 11:e.next=16;break;case 13:e.prev=13,e.t0=e.catch(1),t.e(e.t0);case 16:return e.prev=16,t.f(),e.finish(16);case 19:this._cacheExpirations=new Map;case 20:case"end":return e.stop()}}),e,this,[[1,13,16,19]])})));return function(){return e.apply(this,arguments)}}()}]),e}(),ae=(n(2),[]),ie=function(){return ae};function ce(e){if(!e)throw new g("add-to-cache-list-unexpected-type",{entry:e});if("string"===typeof e){var t=new URL(e,location.href);return{cacheKey:t.href,url:t.href}}var n=e.revision,r=e.url;if(!r)throw new g("add-to-cache-list-unexpected-type",{entry:e});if(!n){var a=new URL(r,location.href);return{cacheKey:a.href,url:a.href}}var i=new URL(r,location.href),c=new URL(r,location.href);return i.searchParams.set("__WB_REVISION__",n),{cacheKey:i.href,url:c.href}}var oe,ue=function(){function e(t){o(this,e),this._cacheName=_(t),this._urlsToCacheKeys=new Map,this._urlsToCacheModes=new Map,this._cacheKeysToIntegrities=new Map}return H(e,[{key:"addToCacheList",value:function(e){var t,n=[],r=c(e);try{for(r.s();!(t=r.n()).done;){var a=t.value;"string"===typeof a?n.push(a):a&&void 0===a.revision&&n.push(a.url);var i=ce(a),o=i.cacheKey,u=i.url,s="string"!==typeof a&&a.revision?"reload":"default";if(this._urlsToCacheKeys.has(u)&&this._urlsToCacheKeys.get(u)!==o)throw new g("add-to-cache-list-conflicting-entries",{firstEntry:this._urlsToCacheKeys.get(u),secondEntry:o});if("string"!==typeof a&&a.integrity){if(this._cacheKeysToIntegrities.has(o)&&this._cacheKeysToIntegrities.get(o)!==a.integrity)throw new g("add-to-cache-list-conflicting-integrities",{url:u});this._cacheKeysToIntegrities.set(o,a.integrity)}if(this._urlsToCacheKeys.set(u,o),this._urlsToCacheModes.set(u,s),n.length>0){var f="Workbox is precaching URLs without revision "+"info: ".concat(n.join(", "),"\nThis is generally NOT safe. ")+"Learn more at https://bit.ly/wb-precache";console.warn(f)}}}catch(h){r.e(h)}finally{r.f()}}},{key:"install",value:function(){var e=T(L.a.mark((function e(){var t,n,r,a,i,o,u,s,f,h,l,p,v,d,y,m=this,g=arguments;return L.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=g.length>0&&void 0!==g[0]?g[0]:{},n=t.event,r=t.plugins,a=[],i=[],e.next=6,self.caches.open(this._cacheName);case 6:return o=e.sent,e.next=9,o.keys();case 9:u=e.sent,s=new Set(u.map((function(e){return e.url}))),f=c(this._urlsToCacheKeys);try{for(f.s();!(h=f.n()).done;)l=W(h.value,2),p=l[0],v=l[1],s.has(v)?i.push(p):a.push({cacheKey:v,url:p})}catch(x){f.e(x)}finally{f.f()}return d=a.map((function(e){var t=e.cacheKey,a=e.url,i=m._cacheKeysToIntegrities.get(t),c=m._urlsToCacheModes.get(a);return m._addURLToCache({cacheKey:t,cacheMode:c,event:n,integrity:i,plugins:r,url:a})})),e.next=16,Promise.all(d);case 16:return y=a.map((function(e){return e.url})),e.abrupt("return",{updatedURLs:y,notUpdatedURLs:i});case 19:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}()},{key:"activate",value:function(){var e=T(L.a.mark((function e(){var t,n,r,a,i,o,u;return L.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,self.caches.open(this._cacheName);case 2:return t=e.sent,e.next=5,t.keys();case 5:n=e.sent,r=new Set(this._urlsToCacheKeys.values()),a=[],i=c(n),e.prev=9,i.s();case 11:if((o=i.n()).done){e.next=19;break}if(u=o.value,r.has(u.url)){e.next=17;break}return e.next=16,t.delete(u);case 16:a.push(u.url);case 17:e.next=11;break;case 19:e.next=24;break;case 21:e.prev=21,e.t0=e.catch(9),i.e(e.t0);case 24:return e.prev=24,i.f(),e.finish(24);case 27:return e.abrupt("return",{deletedURLs:a});case 29:case"end":return e.stop()}}),e,this,[[9,21,24,27]])})));return function(){return e.apply(this,arguments)}}()},{key:"_addURLToCache",value:function(){var e=T(L.a.mark((function e(t){var n,r,a,i,o,u,s,f,h,l,p,v;return L.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.cacheKey,r=t.url,a=t.cacheMode,i=t.event,o=t.plugins,u=t.integrity,s=new Request(r,{integrity:u,cache:a,credentials:"same-origin"}),e.next=4,V.fetch({event:i,plugins:o,request:s});case 4:f=e.sent,l=c(o||[]);try{for(l.s();!(p=l.n()).done;)"cacheWillUpdate"in(v=p.value)&&(h=v)}catch(d){l.e(d)}finally{l.f()}if(!h){e.next=13;break}return e.next=10,h.cacheWillUpdate({event:i,request:s,response:f});case 10:e.t0=e.sent,e.next=14;break;case 13:e.t0=f.status<400;case 14:if(e.t0){e.next=17;break}throw new g("bad-precaching-response",{url:r,status:f.status});case 17:if(!f.redirected){e.next=21;break}return e.next=20,z(f);case 20:f=e.sent;case 21:return e.next=23,P.put({event:i,plugins:o,response:f,request:n===r?s:new Request(n),cacheName:this._cacheName,matchOptions:{ignoreSearch:!0}});case 23:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}()},{key:"getURLsToCacheKeys",value:function(){return this._urlsToCacheKeys}},{key:"getCachedURLs",value:function(){return i(this._urlsToCacheKeys.keys())}},{key:"getCacheKeyForURL",value:function(e){var t=new URL(e,location.href);return this._urlsToCacheKeys.get(t.href)}},{key:"matchPrecache",value:function(){var e=T(L.a.mark((function e(t){var n,r,a;return L.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=t instanceof Request?t.url:t,!(r=this.getCacheKeyForURL(n))){e.next=7;break}return e.next=5,self.caches.open(this._cacheName);case 5:return a=e.sent,e.abrupt("return",a.match(r));case 7:return e.abrupt("return",void 0);case 8:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}()},{key:"createHandler",value:function(){var e=this,t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return function(){var n=T(L.a.mark((function n(r){var a,i;return L.a.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return a=r.request,n.prev=1,n.next=4,e.matchPrecache(a);case 4:if(!(i=n.sent)){n.next=7;break}return n.abrupt("return",i);case 7:throw new g("missing-precache-entry",{cacheName:e._cacheName,url:a instanceof Request?a.url:a});case 10:if(n.prev=10,n.t0=n.catch(1),!t){n.next=15;break}return n.abrupt("return",fetch(a));case 15:throw n.t0;case 16:case"end":return n.stop()}}),n,null,[[1,10]])})));return function(e){return n.apply(this,arguments)}}()}},{key:"createHandlerBoundToURL",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=this.getCacheKeyForURL(e);if(!n)throw new g("non-precached-url",{url:e});var r=this.createHandler(t),a=new Request(e);return function(){return r({request:a})}}}]),e}(),se=function(){return oe||(oe=new ue),oe};function fe(e){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=function(){var n=a[r];t.some((function(e){return e.test(n)}))&&e.searchParams.delete(n)},r=0,a=i(e.searchParams.keys());r1&&void 0!==d[1]?d[1]:{},n=t.ignoreURLParametersMatching,r=t.directoryIndex,a=t.cleanURLs,i=t.urlManipulation,(o=new URL(e,location.href)).hash="",y.next=5,o.href;case 5:return u=fe(o,n),y.next=8,u.href;case 8:if(!r||!u.pathname.endsWith("/")){y.next=13;break}return(s=new URL(u.href)).pathname+=r,y.next=13,s.href;case 13:if(!a){y.next=18;break}return(f=new URL(u.href)).pathname+=".html",y.next=18,f.href;case 18:if(!i){y.next=37;break}h=i({url:o}),l=c(h),y.prev=21,l.s();case 23:if((p=l.n()).done){y.next=29;break}return v=p.value,y.next=27,v.href;case 27:y.next=23;break;case 29:y.next=34;break;case 31:y.prev=31,y.t0=y.catch(21),l.e(y.t0);case 34:return y.prev=34,l.f(),y.finish(34);case 37:case"end":return y.stop()}}),he,null,[[21,31,34,37]])}var pe=function(e,t){var n,r=se().getURLsToCacheKeys(),a=c(le(e,t));try{for(a.s();!(n=a.n()).done;){var i=n.value,o=r.get(i);if(o)return o}}catch(u){a.e(u)}finally{a.f()}},ve=!1;function de(e){ve||(!function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.ignoreURLParametersMatching,n=void 0===t?[/^utm_/]:t,r=e.directoryIndex,a=void 0===r?"index.html":r,i=e.cleanURLs,c=void 0===i||i,o=e.urlManipulation,u=_();self.addEventListener("fetch",(function(e){var t=pe(e.request.url,{cleanURLs:c,directoryIndex:a,ignoreURLParametersMatching:n,urlManipulation:o});if(t){var r=self.caches.open(u).then((function(e){return e.match(t)})).then((function(e){return e||fetch(t)}));e.respondWith(r)}}))}(e),ve=!0)}var ye=function(e){var t=se(),n=ie();e.waitUntil(t.install({event:e,plugins:n}).catch((function(e){throw e})))},me=function(e){var t=se();e.waitUntil(t.activate())};n(3);var ge,xe=function(e){return e&&"object"===typeof e?e:{handle:e}},be=function e(t,n){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"GET";o(this,e),this.handler=xe(n),this.match=t,this.method=r},we=function(e){s(n,e);var t=v(n);function n(e,r,a){o(this,n);return t.call(this,(function(t){var n=t.url,r=e.exec(n.href);if(r&&(n.origin===location.origin||0===r.index))return r.slice(1)}),r,a)}return n}(be),ke=function(){function e(){o(this,e),this._routes=new Map}return H(e,[{key:"routes",get:function(){return this._routes}},{key:"addFetchListener",value:function(){var e=this;self.addEventListener("fetch",(function(t){var n=t.request,r=e.handleRequest({request:n,event:t});r&&t.respondWith(r)}))}},{key:"addCacheListener",value:function(){var e=this;self.addEventListener("message",(function(t){if(t.data&&"CACHE_URLS"===t.data.type){var n=t.data.payload;0;var r=Promise.all(n.urlsToCache.map((function(t){"string"===typeof t&&(t=[t]);var n=d(Request,i(t));return e.handleRequest({request:n})})));t.waitUntil(r),t.ports&&t.ports[0]&&r.then((function(){return t.ports[0].postMessage(!0)}))}}))}},{key:"handleRequest",value:function(e){var t=this,n=e.request,r=e.event;var a=new URL(n.url,location.href);if(a.protocol.startsWith("http")){var i=this.findMatchingRoute({url:a,request:n,event:r}),c=i.params,o=i.route,u=o&&o.handler;if(!u&&this._defaultHandler&&(u=this._defaultHandler),u){var s;0;try{s=u.handle({url:a,request:n,event:r,params:c})}catch(f){s=Promise.reject(f)}return s instanceof Promise&&this._catchHandler&&(s=s.catch((function(e){return t._catchHandler.handle({url:a,request:n,event:r})}))),s}}}},{key:"findMatchingRoute",value:function(e){var t=e.url,n=e.request,r=e.event;var a,i=c(this._routes.get(n.method)||[]);try{for(i.s();!(a=i.n()).done;){var o=a.value,u=void 0,s=o.match({url:t,request:n,event:r});if(s)return u=s,(Array.isArray(s)&&0===s.length||s.constructor===Object&&0===Object.keys(s).length||"boolean"===typeof s)&&(u=void 0),{route:o,params:u}}}catch(f){i.e(f)}finally{i.f()}return{}}},{key:"setDefaultHandler",value:function(e){this._defaultHandler=xe(e)}},{key:"setCatchHandler",value:function(e){this._catchHandler=xe(e)}},{key:"registerRoute",value:function(e){this._routes.has(e.method)||this._routes.set(e.method,[]),this._routes.get(e.method).push(e)}},{key:"unregisterRoute",value:function(e){if(!this._routes.has(e.method))throw new g("unregister-route-but-not-found-with-method",{method:e.method});var t=this._routes.get(e.method).indexOf(e);if(!(t>-1))throw new g("unregister-route-route-not-registered");this._routes.get(e.method).splice(t,1)}}]),e}(),_e=function(){return ge||((ge=new ke).addFetchListener(),ge.addCacheListener()),ge};function Re(e,t,n){var r;if("string"===typeof e){var a=new URL(e,location.href);r=new be((function(e){return e.url.href===a.href}),t,n)}else if(e instanceof RegExp)r=new we(e,t,n);else if("function"===typeof e)r=new be(e,t,n);else{if(!(e instanceof be))throw new g("unsupported-route-type",{moduleName:"workbox-routing",funcName:"registerRoute",paramName:"capture"});r=e}return _e().registerRoute(r),r}n(4);var Ee,Le={cacheWillUpdate:function(){var e=T(L.a.mark((function e(t){var n;return L.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(200!==(n=t.response).status&&0!==n.status){e.next=3;break}return e.abrupt("return",n);case 3:return e.abrupt("return",null);case 4:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()},qe=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(o(this,e),this._cacheName=R(t.cacheName),this._plugins=t.plugins||[],t.plugins){var n=t.plugins.some((function(e){return!!e.cacheWillUpdate}));this._plugins=n?t.plugins:[Le].concat(i(t.plugins))}else this._plugins=[Le];this._fetchOptions=t.fetchOptions,this._matchOptions=t.matchOptions}return H(e,[{key:"handle",value:function(){var e=T(L.a.mark((function e(t){var n,r,a,i,c;return L.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.event,r=t.request,[],"string"===typeof r&&(r=new Request(r)),a=this._getFromNetwork({request:r,event:n}),e.next=7,P.match({cacheName:this._cacheName,request:r,event:n,matchOptions:this._matchOptions,plugins:this._plugins});case 7:if(!(i=e.sent)){e.next=13;break}if(n)try{n.waitUntil(a)}catch(c){0}e.next=23;break;case 13:return e.prev=14,e.next=17,a;case 17:i=e.sent,e.next=23;break;case 20:e.prev=20,e.t0=e.catch(14),c=e.t0;case 23:if(i){e.next=26;break}throw new g("no-response",{url:r.url,error:c});case 26:return e.abrupt("return",i);case 27:case"end":return e.stop()}}),e,this,[[14,20]])})));return function(t){return e.apply(this,arguments)}}()},{key:"_getFromNetwork",value:function(){var e=T(L.a.mark((function e(t){var n,r,a,i;return L.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.request,r=t.event,e.next=3,V.fetch({request:n,event:r,fetchOptions:this._fetchOptions,plugins:this._plugins});case 3:if(a=e.sent,i=P.put({cacheName:this._cacheName,request:n,response:a.clone(),event:r,plugins:this._plugins}),r)try{r.waitUntil(i)}catch(c){0}return e.abrupt("return",a);case 7:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}()}]),e}();self.addEventListener("activate",(function(){return self.clients.claim()})),function(e){se().addToCacheList(e),e.length>0&&(self.addEventListener("install",ye),self.addEventListener("activate",me))}([{'revision':'bb3cc20e768c489c696e422932560941','url':'/unict-telegram-channels-groups/index.html'},{'revision':null,'url':'/unict-telegram-channels-groups/static/css/4.532f36fa.chunk.css'},{'revision':null,'url':'/unict-telegram-channels-groups/static/css/main.8a382b2d.chunk.css'},{'revision':null,'url':'/unict-telegram-channels-groups/static/js/0.bc66b1f6.chunk.js'},{'revision':null,'url':'/unict-telegram-channels-groups/static/js/10.8936305f.chunk.js'},{'revision':null,'url':'/unict-telegram-channels-groups/static/js/11.07ef5b48.chunk.js'},{'revision':null,'url':'/unict-telegram-channels-groups/static/js/12.647bd439.chunk.js'},{'revision':null,'url':'/unict-telegram-channels-groups/static/js/13.522eb31c.chunk.js'},{'revision':null,'url':'/unict-telegram-channels-groups/static/js/14.ffa59895.chunk.js'},{'revision':null,'url':'/unict-telegram-channels-groups/static/js/15.c32169b6.chunk.js'},{'revision':null,'url':'/unict-telegram-channels-groups/static/js/16.10b6793a.chunk.js'},{'revision':null,'url':'/unict-telegram-channels-groups/static/js/17.d4a7cc73.chunk.js'},{'revision':null,'url':'/unict-telegram-channels-groups/static/js/18.ec64f004.chunk.js'},{'revision':null,'url':'/unict-telegram-channels-groups/static/js/19.7a517f14.chunk.js'},{'revision':null,'url':'/unict-telegram-channels-groups/static/js/20.06acf2b1.chunk.js'},{'revision':null,'url':'/unict-telegram-channels-groups/static/js/21.a3fd3b52.chunk.js'},{'revision':null,'url':'/unict-telegram-channels-groups/static/js/22.e6a8141d.chunk.js'},{'revision':null,'url':'/unict-telegram-channels-groups/static/js/23.89313ed0.chunk.js'},{'revision':null,'url':'/unict-telegram-channels-groups/static/js/24.397e3f98.chunk.js'},{'revision':null,'url':'/unict-telegram-channels-groups/static/js/25.4f69e673.chunk.js'},{'revision':null,'url':'/unict-telegram-channels-groups/static/js/26.58344dc2.chunk.js'},{'revision':null,'url':'/unict-telegram-channels-groups/static/js/27.e52dc807.chunk.js'},{'revision':null,'url':'/unict-telegram-channels-groups/static/js/28.b4f5266c.chunk.js'},{'revision':null,'url':'/unict-telegram-channels-groups/static/js/29.c116fe5f.chunk.js'},{'revision':null,'url':'/unict-telegram-channels-groups/static/js/30.7d6e613f.chunk.js'},{'revision':null,'url':'/unict-telegram-channels-groups/static/js/31.0420a66b.chunk.js'},{'revision':null,'url':'/unict-telegram-channels-groups/static/js/32.abce75f3.chunk.js'},{'revision':null,'url':'/unict-telegram-channels-groups/static/js/33.0087ef02.chunk.js'},{'revision':null,'url':'/unict-telegram-channels-groups/static/js/34.8eaf8627.chunk.js'},{'revision':null,'url':'/unict-telegram-channels-groups/static/js/35.9d42a8e7.chunk.js'},{'revision':null,'url':'/unict-telegram-channels-groups/static/js/36.e5c6cdeb.chunk.js'},{'revision':null,'url':'/unict-telegram-channels-groups/static/js/37.caa53901.chunk.js'},{'revision':null,'url':'/unict-telegram-channels-groups/static/js/38.52d1e430.chunk.js'},{'revision':null,'url':'/unict-telegram-channels-groups/static/js/39.cb82ca85.chunk.js'},{'revision':null,'url':'/unict-telegram-channels-groups/static/js/4.cd4d259e.chunk.js'},{'revision':null,'url':'/unict-telegram-channels-groups/static/js/40.4feaf891.chunk.js'},{'revision':null,'url':'/unict-telegram-channels-groups/static/js/41.1e939549.chunk.js'},{'revision':null,'url':'/unict-telegram-channels-groups/static/js/42.02afdca6.chunk.js'},{'revision':null,'url':'/unict-telegram-channels-groups/static/js/43.a81a7d14.chunk.js'},{'revision':null,'url':'/unict-telegram-channels-groups/static/js/44.f150b641.chunk.js'},{'revision':null,'url':'/unict-telegram-channels-groups/static/js/45.e968d947.chunk.js'},{'revision':null,'url':'/unict-telegram-channels-groups/static/js/46.a5297a0e.chunk.js'},{'revision':null,'url':'/unict-telegram-channels-groups/static/js/47.99397c05.chunk.js'},{'revision':null,'url':'/unict-telegram-channels-groups/static/js/48.a174ebe6.chunk.js'},{'revision':null,'url':'/unict-telegram-channels-groups/static/js/49.af8698fc.chunk.js'},{'revision':null,'url':'/unict-telegram-channels-groups/static/js/5.5d0b3ffd.chunk.js'},{'revision':null,'url':'/unict-telegram-channels-groups/static/js/50.f3dccebf.chunk.js'},{'revision':null,'url':'/unict-telegram-channels-groups/static/js/51.46f4e0ea.chunk.js'},{'revision':null,'url':'/unict-telegram-channels-groups/static/js/52.1a3ff828.chunk.js'},{'revision':null,'url':'/unict-telegram-channels-groups/static/js/53.6f9ad754.chunk.js'},{'revision':null,'url':'/unict-telegram-channels-groups/static/js/54.1623e743.chunk.js'},{'revision':null,'url':'/unict-telegram-channels-groups/static/js/55.96954b22.chunk.js'},{'revision':null,'url':'/unict-telegram-channels-groups/static/js/56.f2ce7728.chunk.js'},{'revision':null,'url':'/unict-telegram-channels-groups/static/js/57.62be6ec8.chunk.js'},{'revision':null,'url':'/unict-telegram-channels-groups/static/js/58.6e1e4f04.chunk.js'},{'revision':null,'url':'/unict-telegram-channels-groups/static/js/6.28ab63c9.chunk.js'},{'revision':null,'url':'/unict-telegram-channels-groups/static/js/7.326dd770.chunk.js'},{'revision':null,'url':'/unict-telegram-channels-groups/static/js/8.20357bb9.chunk.js'},{'revision':null,'url':'/unict-telegram-channels-groups/static/js/9.e2679d39.chunk.js'},{'revision':null,'url':'/unict-telegram-channels-groups/static/js/main.cfd27d45.chunk.js'},{'revision':null,'url':'/unict-telegram-channels-groups/static/js/polyfills-dom.e443d203.chunk.js'},{'revision':null,'url':'/unict-telegram-channels-groups/static/js/runtime-main.27c245ed.js'}]),de(Ee);var Te,Oe=new RegExp("/[^/?]+\\.[^/]+$");Re((function(e){var t=e.request,n=e.url;return"navigate"===t.mode&&(!n.pathname.startsWith("/_")&&!n.pathname.match(Oe))}),(Te="/unict-telegram-channels-groups/index.html",se().createHandlerBoundToURL(Te))),Re((function(e){var t=e.url;return t.origin===self.location.origin&&t.pathname.endsWith(".png")}),new qe({cacheName:"images",plugins:[new re({maxEntries:50})]})),self.addEventListener("message",(function(e){e.data&&"SKIP_WAITING"===e.data.type&&self.skipWaiting()}))}]); //# sourceMappingURL=service-worker.js.map \ No newline at end of file diff --git a/service-worker.js.map b/service-worker.js.map index 250d39a..7fda39e 100644 --- a/service-worker.js.map +++ b/service-worker.js.map @@ -1 +1 @@ -{"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/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/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/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","../node_modules/workbox-core/_private/executeQuotaErrorCallbacks.js","../node_modules/workbox-core/_private/getFriendlyURL.js","../node_modules/workbox-core/_private/canConstructResponseFromBodyStream.js","../node_modules/workbox-core/utils/pluginUtils.js","../node_modules/workbox-core/_private/cacheWrapper.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/deleteDatabase.js","../node_modules/workbox-core/_private/fetchWrapper.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/precachePlugins.js","../node_modules/workbox-precaching/utils/createCacheKey.js","../node_modules/workbox-precaching/utils/getOrCreatePrecacheController.js","../node_modules/workbox-precaching/PrecacheController.js","../node_modules/workbox-precaching/utils/removeIgnoredSearchParams.js","../node_modules/workbox-precaching/utils/generateURLVariations.js","../node_modules/workbox-precaching/utils/getCacheKeyForURL.js","../node_modules/workbox-precaching/addRoute.js","../node_modules/workbox-precaching/utils/addFetchListener.js","../node_modules/workbox-precaching/precache.js","../node_modules/workbox-routing/utils/getOrCreateDefaultRouter.js","../node_modules/workbox-routing/utils/normalizeHandler.js","../node_modules/workbox-routing/Route.js","../node_modules/workbox-routing/utils/constants.js","../node_modules/workbox-routing/RegExpRoute.js","../node_modules/workbox-routing/Router.js","../node_modules/workbox-routing/registerRoute.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","service-worker.ts","../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","displayName","isGeneratorFunction","genFun","ctor","constructor","mark","setPrototypeOf","__proto__","awrap","async","Promise","iter","keys","reverse","pop","skipTempReset","prev","charAt","slice","stop","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","globalThis","Function","_arrayLikeToArray","arr","len","arr2","Array","_unsupportedIterableToArray","minLen","toString","from","test","_toConsumableArray","isArray","_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","JSON","stringify","WorkboxError","errorCode","details","message","quotaErrorCallbacks","Set","registerQuotaErrorCallback","callback","add","_cacheNameDetails","googleAnalytics","precache","prefix","suffix","registration","scope","_createCacheName","cacheName","filter","join","cacheNames","userCacheName","asyncGeneratorStep","gen","_next","_throw","_asyncToGenerator","executeQuotaErrorCallbacks","process","supportStatus","getFriendlyURL","url","URL","String","location","href","replace","RegExp","origin","pluginUtils","plugins","callbackName","plugin","_getEffectiveRequest","request","cacheKeyWillBeUsedPlugins","effectiveRequest","Request","_isResponseSafeToCache","response","event","responseToCache","pluginsUsed","pluginMethod","status","matchWrapper","matchOptions","caches","open","cache","match","cachedResponse","putWrapper","updatePlugins","oldResponse","put","newResponse","cacheWrapper","canConstructResponseFromBodyStream","testResponse","Response","body","dontWaitFor","promise","_slicedToArray","_arr","_n","_d","_s","_i","_defineProperties","target","props","descriptor","_createClass","protoProps","staticProps","DBWrapper","version","onupgradeneeded","onversionchange","_db","_name","_version","_onupgradeneeded","_onversionchange","close","openRequestTimedOut","setTimeout","OPEN_TIMEOUT","openRequest","indexedDB","onerror","evt","transaction","abort","onsuccess","db","storeName","query","getAllKeys","count","getAllMatching","includeKeys","entries","map","index","direction","txn","store","objectStore","results","openCursor","cursor","continue","storeNames","onabort","oncomplete","objStore","IDBObjectStore","_call","readonly","readwrite","deleteDatabase","onblocked","wrappedFetch","fetchOptions","FetchEvent","preloadResponse","possiblePreloadResponse","failedFetchPlugins","originalRequest","clone","requestClone","thrownError","pluginFilteredRequest","fetch","fetchResponse","fetchWrapper","copyResponse","modifier","clonedResponse","responseInit","headers","Headers","statusText","modifiedResponseInit","blob","OBJECT_STORE_NAME","normalizeURL","unNormalizedUrl","hash","CacheTimestampsModel","_cacheName","_handleUpgrade","createObjectStore","keyPath","createIndex","unique","timestamp","id","_getId","minTimestamp","maxCount","entriesToDelete","entriesNotDeletedCount","urlsDeleted","delete","CacheExpiration","config","_isRunning","_rerunRequested","_maxEntries","maxEntries","_maxAgeSeconds","maxAgeSeconds","_timestampModel","now","expireEntries","urlsExpired","setTimestamp","getTimestamp","expireOlderThan","Infinity","ExpirationPlugin","cachedResponseWillBeUsed","isFresh","_isResponseDateFresh","cacheExpiration","_getCacheExpiration","updateTimestampDone","updateTimestamp","waitUntil","cacheDidUpdate","_config","_cacheExpirations","purgeOnQuotaError","deleteCacheAndMetadata","dateHeaderTimestamp","_getDateHeaderTimestamp","dateHeader","headerTime","getTime","precachePlugins","createCacheKey","urlObject","cacheKey","revision","cacheKeyURL","originalURL","searchParams","precacheController","PrecacheController","_urlsToCacheKeys","_urlsToCacheModes","_cacheKeysToIntegrities","urlsToWarnAbout","cacheMode","firstEntry","secondEntry","integrity","warningMessage","console","warn","toBePrecached","alreadyPrecached","alreadyCachedRequests","existingCacheKeys","precacheRequests","_addURLToCache","all","updatedURLs","item","notUpdatedURLs","currentlyCachedRequests","expectedCacheKeys","deletedURLs","credentials","cacheWillUpdatePlugin","cacheWillUpdate","redirected","ignoreSearch","getCacheKeyForURL","fallbackToNetwork","matchPrecache","handler","createHandler","getOrCreatePrecacheController","removeIgnoredSearchParams","ignoreURLParametersMatching","paramName","some","regExp","generateURLVariations","directoryIndex","cleanURLs","urlManipulation","urlWithoutIgnoredParams","pathname","endsWith","directoryURL","cleanURL","additionalURLs","urlToAttempt","options","urlsToCacheKeys","getURLsToCacheKeys","possibleURL","possibleCacheKey","listenerAdded","addRoute","addEventListener","precachedURL","responsePromise","respondWith","addFetchListener","installListener","install","catch","activateListener","activate","defaultRouter","normalizeHandler","Route","RegExpRoute","exec","Router","_routes","handleRequest","data","payload","requestPromises","urlsToCache","ports","postMessage","protocol","startsWith","findMatchingRoute","params","route","_defaultHandler","_catchHandler","matchResult","routeIndex","splice","getOrCreateDefaultRouter","addCacheListener","registerRoute","capture","captureUrl","moduleName","funcName","cacheOkAndOpaquePlugin","StaleWhileRevalidate","_plugins","isUsingCacheWillUpdate","_fetchOptions","_matchOptions","fetchAndCachePromise","_getFromNetwork","cachePutPromise","clients","claim","addToCacheList","__WB_MANIFEST","fileExtensionRegexp","createHandlerBoundToURL","skipWaiting"],"mappings":"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","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 = \"./\";\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\";\n// @ts-ignore\ntry {\n self['workbox:core:5.1.4'] && _();\n}\ncatch (e) { }\n","\"use strict\";\n// @ts-ignore\ntry {\n self['workbox:precaching:5.1.4'] && _();\n}\ncatch (e) { }\n","\"use strict\";\n// @ts-ignore\ntry {\n self['workbox:routing:5.1.4'] && _();\n}\ncatch (e) { }\n","\"use strict\";\n// @ts-ignore\ntry {\n self['workbox:strategies:5.1.4'] && _();\n}\ncatch (e) { }\n","\"use strict\";\n// @ts-ignore\ntry {\n self['workbox:expiration:5.1.4'] && _();\n}\ncatch (e) { }\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function 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 try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(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 || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = GeneratorFunctionPrototype;\n define(Gp, \"constructor\", GeneratorFunctionPrototype);\n define(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction);\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n 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\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return 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 =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n });\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n define(Gp, iteratorSymbol, function() {\n return this;\n });\n\n define(Gp, \"toString\", function() {\n return \"[object Generator]\";\n });\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, in modern engines\n // we can explicitly access globalThis. In older engines 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 if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\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 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 const messages = {\n 'invalid-value': ({ paramName, validValueDescription, value }) => {\n if (!paramName || !validValueDescription) {\n throw new Error(`Unexpected input to 'invalid-value' error.`);\n }\n return `The '${paramName}' parameter was given a value with an ` +\n `unexpected value. ${validValueDescription} Received a value of ` +\n `${JSON.stringify(value)}.`;\n },\n 'not-an-array': ({ moduleName, className, funcName, paramName }) => {\n if (!moduleName || !className || !funcName || !paramName) {\n throw new Error(`Unexpected input to 'not-an-array' error.`);\n }\n return `The parameter '${paramName}' passed into ` +\n `'${moduleName}.${className}.${funcName}()' must be an array.`;\n },\n 'incorrect-type': ({ expectedType, paramName, moduleName, className, funcName }) => {\n if (!expectedType || !paramName || !moduleName || !funcName) {\n throw new Error(`Unexpected input to 'incorrect-type' error.`);\n }\n return `The parameter '${paramName}' passed into ` +\n `'${moduleName}.${className ? (className + '.') : ''}` +\n `${funcName}()' must be of type ${expectedType}.`;\n },\n 'incorrect-class': ({ expectedClass, paramName, moduleName, className, funcName, isReturnValueProblem }) => {\n if (!expectedClass || !moduleName || !funcName) {\n throw new Error(`Unexpected input to 'incorrect-class' error.`);\n }\n if (isReturnValueProblem) {\n return `The return value from ` +\n `'${moduleName}.${className ? (className + '.') : ''}${funcName}()' ` +\n `must be an instance of class ${expectedClass.name}.`;\n }\n return `The parameter '${paramName}' passed into ` +\n `'${moduleName}.${className ? (className + '.') : ''}${funcName}()' ` +\n `must be an instance of class ${expectedClass.name}.`;\n },\n 'missing-a-method': ({ expectedMethod, paramName, moduleName, className, funcName }) => {\n if (!expectedMethod || !paramName || !moduleName || !className\n || !funcName) {\n throw new Error(`Unexpected input to 'missing-a-method' error.`);\n }\n return `${moduleName}.${className}.${funcName}() expected the ` +\n `'${paramName}' parameter to expose a '${expectedMethod}' method.`;\n },\n 'add-to-cache-list-unexpected-type': ({ entry }) => {\n return `An unexpected entry was passed to ` +\n `'workbox-precaching.PrecacheController.addToCacheList()' The entry ` +\n `'${JSON.stringify(entry)}' isn't supported. You must supply an array of ` +\n `strings with one or more characters, objects with a url property or ` +\n `Request objects.`;\n },\n 'add-to-cache-list-conflicting-entries': ({ firstEntry, secondEntry }) => {\n if (!firstEntry || !secondEntry) {\n throw new Error(`Unexpected input to ` +\n `'add-to-cache-list-duplicate-entries' error.`);\n }\n return `Two of the entries passed to ` +\n `'workbox-precaching.PrecacheController.addToCacheList()' had the URL ` +\n `${firstEntry._entryId} but different revision details. Workbox is ` +\n `unable to cache and version the asset correctly. Please remove one ` +\n `of the entries.`;\n },\n 'plugin-error-request-will-fetch': ({ thrownError }) => {\n if (!thrownError) {\n throw new Error(`Unexpected input to ` +\n `'plugin-error-request-will-fetch', error.`);\n }\n return `An error was thrown by a plugins 'requestWillFetch()' method. ` +\n `The thrown error message was: '${thrownError.message}'.`;\n },\n 'invalid-cache-name': ({ cacheNameId, value }) => {\n if (!cacheNameId) {\n throw new Error(`Expected a 'cacheNameId' for error 'invalid-cache-name'`);\n }\n return `You must provide a name containing at least one character for ` +\n `setCacheDetails({${cacheNameId}: '...'}). Received a value of ` +\n `'${JSON.stringify(value)}'`;\n },\n 'unregister-route-but-not-found-with-method': ({ method }) => {\n if (!method) {\n throw new Error(`Unexpected input to ` +\n `'unregister-route-but-not-found-with-method' error.`);\n }\n return `The route you're trying to unregister was not previously ` +\n `registered for the method type '${method}'.`;\n },\n 'unregister-route-route-not-registered': () => {\n return `The route you're trying to unregister was not previously ` +\n `registered.`;\n },\n 'queue-replay-failed': ({ name }) => {\n return `Replaying the background sync queue '${name}' failed.`;\n },\n 'duplicate-queue-name': ({ name }) => {\n return `The Queue name '${name}' is already being used. ` +\n `All instances of backgroundSync.Queue must be given unique names.`;\n },\n 'expired-test-without-max-age': ({ methodName, paramName }) => {\n return `The '${methodName}()' method can only be used when the ` +\n `'${paramName}' is used in the constructor.`;\n },\n 'unsupported-route-type': ({ moduleName, className, funcName, paramName }) => {\n return `The supplied '${paramName}' parameter was an unsupported type. ` +\n `Please check the docs for ${moduleName}.${className}.${funcName} for ` +\n `valid input types.`;\n },\n 'not-array-of-class': ({ value, expectedClass, moduleName, className, funcName, paramName }) => {\n return `The supplied '${paramName}' parameter must be an array of ` +\n `'${expectedClass}' objects. Received '${JSON.stringify(value)},'. ` +\n `Please check the call to ${moduleName}.${className}.${funcName}() ` +\n `to fix the issue.`;\n },\n 'max-entries-or-age-required': ({ moduleName, className, funcName }) => {\n return `You must define either config.maxEntries or config.maxAgeSeconds` +\n `in ${moduleName}.${className}.${funcName}`;\n },\n 'statuses-or-headers-required': ({ moduleName, className, funcName }) => {\n return `You must define either config.statuses or config.headers` +\n `in ${moduleName}.${className}.${funcName}`;\n },\n 'invalid-string': ({ moduleName, funcName, paramName }) => {\n if (!paramName || !moduleName || !funcName) {\n throw new Error(`Unexpected input to 'invalid-string' error.`);\n }\n return `When using strings, the '${paramName}' parameter must start with ` +\n `'http' (for cross-origin matches) or '/' (for same-origin matches). ` +\n `Please see the docs for ${moduleName}.${funcName}() for ` +\n `more info.`;\n },\n 'channel-name-required': () => {\n return `You must provide a channelName to construct a ` +\n `BroadcastCacheUpdate instance.`;\n },\n 'invalid-responses-are-same-args': () => {\n return `The arguments passed into responsesAreSame() appear to be ` +\n `invalid. Please ensure valid Responses are used.`;\n },\n 'expire-custom-caches-only': () => {\n return `You must provide a 'cacheName' property when using the ` +\n `expiration plugin with a runtime caching strategy.`;\n },\n 'unit-must-be-bytes': ({ normalizedRangeHeader }) => {\n if (!normalizedRangeHeader) {\n throw new Error(`Unexpected input to 'unit-must-be-bytes' error.`);\n }\n return `The 'unit' portion of the Range header must be set to 'bytes'. ` +\n `The Range header provided was \"${normalizedRangeHeader}\"`;\n },\n 'single-range-only': ({ normalizedRangeHeader }) => {\n if (!normalizedRangeHeader) {\n throw new Error(`Unexpected input to 'single-range-only' error.`);\n }\n return `Multiple ranges are not supported. Please use a single start ` +\n `value, and optional end value. The Range header provided was ` +\n `\"${normalizedRangeHeader}\"`;\n },\n 'invalid-range-values': ({ normalizedRangeHeader }) => {\n if (!normalizedRangeHeader) {\n throw new Error(`Unexpected input to 'invalid-range-values' error.`);\n }\n return `The Range header is missing both start and end values. At least ` +\n `one of those values is needed. The Range header provided was ` +\n `\"${normalizedRangeHeader}\"`;\n },\n 'no-range-header': () => {\n return `No Range header was found in the Request provided.`;\n },\n 'range-not-satisfiable': ({ size, start, end }) => {\n return `The start (${start}) and end (${end}) values in the Range are ` +\n `not satisfiable by the cached response, which is ${size} bytes.`;\n },\n 'attempt-to-cache-non-get-request': ({ url, method }) => {\n return `Unable to cache '${url}' because it is a '${method}' request and ` +\n `only 'GET' requests can be cached.`;\n },\n 'cache-put-with-no-response': ({ url }) => {\n return `There was an attempt to cache '${url}' but the response was not ` +\n `defined.`;\n },\n 'no-response': ({ url, error }) => {\n let message = `The strategy could not generate a response for '${url}'.`;\n if (error) {\n message += ` The underlying error is ${error}.`;\n }\n return message;\n },\n 'bad-precaching-response': ({ url, status }) => {\n return `The precaching request for '${url}' failed with an HTTP ` +\n `status of ${status}.`;\n },\n 'non-precached-url': ({ url }) => {\n return `createHandlerBoundToURL('${url}') was called, but that URL is ` +\n `not precached. Please pass in a URL that is precached instead.`;\n },\n 'add-to-cache-list-conflicting-integrities': ({ url }) => {\n return `Two of the entries passed to ` +\n `'workbox-precaching.PrecacheController.addToCacheList()' had the URL ` +\n `${url} with different integrity values. Please remove one of them.`;\n },\n 'missing-precache-entry': ({ cacheName, url }) => {\n return `Unable to find a precached response in ${cacheName} for ${url}.`;\n },\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';\nconst fallback = (code, ...args) => {\n let msg = code;\n if (args.length > 0) {\n msg += ` :: ${JSON.stringify(args)}`;\n }\n return msg;\n};\nconst generatorFunction = (code, details = {}) => {\n const message = messages[code];\n if (!message) {\n throw new Error(`Unable to find message for code '${code}'.`);\n }\n return message(details);\n};\nexport const messageGenerator = (process.env.NODE_ENV === 'production') ?\n fallback : generatorFunction;\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 */\nclass WorkboxError extends Error {\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 constructor(errorCode, details) {\n const message = messageGenerator(errorCode, details);\n super(message);\n this.name = errorCode;\n this.details = details;\n }\n}\nexport { WorkboxError };\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// Callbacks to be executed whenever there's a quota error.\nconst quotaErrorCallbacks = new Set();\nexport { quotaErrorCallbacks };\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 { 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 */\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 quotaErrorCallbacks.add(callback);\n if (process.env.NODE_ENV !== 'production') {\n logger.log('Registered a callback to respond to quota errors.', callback);\n }\n}\nexport { registerQuotaErrorCallback };\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';\nconst _cacheNameDetails = {\n googleAnalytics: 'googleAnalytics',\n precache: 'precache-v2',\n prefix: 'workbox',\n runtime: 'runtime',\n suffix: typeof registration !== 'undefined' ? registration.scope : '',\n};\nconst _createCacheName = (cacheName) => {\n return [_cacheNameDetails.prefix, cacheName, _cacheNameDetails.suffix]\n .filter((value) => value && value.length > 0)\n .join('-');\n};\nconst eachCacheNameDetail = (fn) => {\n for (const key of Object.keys(_cacheNameDetails)) {\n fn(key);\n }\n};\nexport const cacheNames = {\n updateDetails: (details) => {\n eachCacheNameDetail((key) => {\n if (typeof details[key] === 'string') {\n _cacheNameDetails[key] = details[key];\n }\n });\n },\n getGoogleAnalyticsName: (userCacheName) => {\n return userCacheName || _createCacheName(_cacheNameDetails.googleAnalytics);\n },\n getPrecacheName: (userCacheName) => {\n return userCacheName || _createCacheName(_cacheNameDetails.precache);\n },\n getPrefix: () => {\n return _cacheNameDetails.prefix;\n },\n getRuntimeName: (userCacheName) => {\n return userCacheName || _createCacheName(_cacheNameDetails.runtime);\n },\n getSuffix: () => {\n return _cacheNameDetails.suffix;\n },\n};\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}","/*\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 */\nasync function executeQuotaErrorCallbacks() {\n if (process.env.NODE_ENV !== 'production') {\n logger.log(`About to run ${quotaErrorCallbacks.size} ` +\n `callbacks to clean up caches.`);\n }\n for (const callback of quotaErrorCallbacks) {\n await callback();\n if (process.env.NODE_ENV !== 'production') {\n logger.log(callback, 'is complete.');\n }\n }\n if (process.env.NODE_ENV !== 'production') {\n logger.log('Finished running callbacks.');\n }\n}\nexport { executeQuotaErrorCallbacks };\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';\nconst getFriendlyURL = (url) => {\n const urlObj = new URL(String(url), location.href);\n // See https://github.com/GoogleChrome/workbox/issues/2323\n // We want to include everything, except for the origin if it's same-origin.\n return urlObj.href.replace(new RegExp(`^${location.origin}`), '');\n};\nexport { getFriendlyURL };\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';\nlet 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 */\nfunction canConstructResponseFromBodyStream() {\n if (supportStatus === undefined) {\n const testResponse = new Response('');\n if ('body' in testResponse) {\n try {\n new Response(testResponse.body);\n supportStatus = true;\n }\n catch (error) {\n supportStatus = false;\n }\n }\n supportStatus = false;\n }\n return supportStatus;\n}\nexport { canConstructResponseFromBodyStream };\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 const pluginUtils = {\n filter: (plugins, callbackName) => {\n return plugins.filter((plugin) => callbackName in plugin);\n },\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 './assert.js';\nimport { executeQuotaErrorCallbacks } from './executeQuotaErrorCallbacks.js';\nimport { getFriendlyURL } from './getFriendlyURL.js';\nimport { logger } from './logger.js';\nimport { pluginUtils } from '../utils/pluginUtils.js';\nimport { WorkboxError } from './WorkboxError.js';\nimport '../_version.js';\n/**\n * Checks the list of plugins for the cacheKeyWillBeUsed callback, and\n * executes any of those callbacks found in sequence. The final `Request` object\n * returned by the last plugin is treated as the cache key for cache reads\n * and/or writes.\n *\n * @param {Object} options\n * @param {Request} options.request\n * @param {string} options.mode\n * @param {Array} [options.plugins=[]]\n * @return {Promise}\n *\n * @private\n * @memberof module:workbox-core\n */\nconst _getEffectiveRequest = async ({ request, mode, plugins = [], }) => {\n const cacheKeyWillBeUsedPlugins = pluginUtils.filter(plugins, \"cacheKeyWillBeUsed\" /* CACHE_KEY_WILL_BE_USED */);\n let effectiveRequest = request;\n for (const plugin of cacheKeyWillBeUsedPlugins) {\n effectiveRequest = await plugin[\"cacheKeyWillBeUsed\" /* CACHE_KEY_WILL_BE_USED */].call(plugin, { mode, request: effectiveRequest });\n if (typeof effectiveRequest === 'string') {\n effectiveRequest = new Request(effectiveRequest);\n }\n if (process.env.NODE_ENV !== 'production') {\n assert.isInstance(effectiveRequest, Request, {\n moduleName: 'Plugin',\n funcName: \"cacheKeyWillBeUsed\" /* CACHE_KEY_WILL_BE_USED */,\n isReturnValueProblem: true,\n });\n }\n }\n return effectiveRequest;\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 {Object} options\n * @param {Request} options.request\n * @param {Response} options.response\n * @param {Event} [options.event]\n * @param {Array} [options.plugins=[]]\n * @return {Promise}\n *\n * @private\n * @memberof module:workbox-core\n */\nconst _isResponseSafeToCache = async ({ request, response, event, plugins = [], }) => {\n let responseToCache = response;\n let pluginsUsed = false;\n for (const plugin of plugins) {\n if (\"cacheWillUpdate\" /* CACHE_WILL_UPDATE */ in plugin) {\n pluginsUsed = true;\n const pluginMethod = plugin[\"cacheWillUpdate\" /* CACHE_WILL_UPDATE */];\n responseToCache = await pluginMethod.call(plugin, {\n request,\n response: responseToCache,\n event,\n });\n if (process.env.NODE_ENV !== 'production') {\n if (responseToCache) {\n assert.isInstance(responseToCache, Response, {\n moduleName: 'Plugin',\n funcName: \"cacheWillUpdate\" /* CACHE_WILL_UPDATE */,\n isReturnValueProblem: true,\n });\n }\n }\n if (!responseToCache) {\n break;\n }\n }\n }\n if (!pluginsUsed) {\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 '${request.url}' is an opaque ` +\n `response. The caching strategy that you're using will not ` +\n `cache opaque responses by default.`);\n }\n else {\n logger.debug(`The response for '${request.url}' returned ` +\n `a status code of '${response.status}' and won't be cached as a ` +\n `result.`);\n }\n }\n }\n }\n responseToCache = responseToCache && responseToCache.status === 200 ?\n responseToCache : undefined;\n }\n return responseToCache ? responseToCache : null;\n};\n/**\n * This is a wrapper around cache.match().\n *\n * @param {Object} options\n * @param {string} options.cacheName Name of the cache to match against.\n * @param {Request} options.request The Request that will be used to look up\n * cache entries.\n * @param {Event} [options.event] The event that prompted the action.\n * @param {Object} [options.matchOptions] Options passed to cache.match().\n * @param {Array} [options.plugins=[]] Array of plugins.\n * @return {Response} A cached response if available.\n *\n * @private\n * @memberof module:workbox-core\n */\nconst matchWrapper = async ({ cacheName, request, event, matchOptions, plugins = [], }) => {\n const cache = await self.caches.open(cacheName);\n const effectiveRequest = await _getEffectiveRequest({\n plugins, request, mode: 'read'\n });\n let cachedResponse = await cache.match(effectiveRequest, matchOptions);\n if (process.env.NODE_ENV !== 'production') {\n if (cachedResponse) {\n logger.debug(`Found a cached response in '${cacheName}'.`);\n }\n else {\n logger.debug(`No cached response found in '${cacheName}'.`);\n }\n }\n for (const plugin of plugins) {\n if (\"cachedResponseWillBeUsed\" /* CACHED_RESPONSE_WILL_BE_USED */ in plugin) {\n const pluginMethod = plugin[\"cachedResponseWillBeUsed\" /* CACHED_RESPONSE_WILL_BE_USED */];\n cachedResponse = await pluginMethod.call(plugin, {\n cacheName,\n event,\n matchOptions,\n cachedResponse,\n request: effectiveRequest,\n });\n if (process.env.NODE_ENV !== 'production') {\n if (cachedResponse) {\n assert.isInstance(cachedResponse, Response, {\n moduleName: 'Plugin',\n funcName: \"cachedResponseWillBeUsed\" /* CACHED_RESPONSE_WILL_BE_USED */,\n isReturnValueProblem: true,\n });\n }\n }\n }\n }\n return cachedResponse;\n};\n/**\n * Wrapper around cache.put().\n *\n * Will call `cacheDidUpdate` on plugins if the cache was updated, using\n * `matchOptions` when determining what the old entry is.\n *\n * @param {Object} options\n * @param {string} options.cacheName\n * @param {Request} options.request\n * @param {Response} options.response\n * @param {Event} [options.event]\n * @param {Array} [options.plugins=[]]\n * @param {Object} [options.matchOptions]\n *\n * @private\n * @memberof module:workbox-core\n */\nconst putWrapper = async ({ cacheName, request, response, event, plugins = [], matchOptions, }) => {\n if (process.env.NODE_ENV !== 'production') {\n if (request.method && request.method !== 'GET') {\n throw new WorkboxError('attempt-to-cache-non-get-request', {\n url: getFriendlyURL(request.url),\n method: request.method,\n });\n }\n }\n const effectiveRequest = await _getEffectiveRequest({\n plugins, request, mode: 'write'\n });\n if (!response) {\n if (process.env.NODE_ENV !== 'production') {\n logger.error(`Cannot cache non-existent response for ` +\n `'${getFriendlyURL(effectiveRequest.url)}'.`);\n }\n throw new WorkboxError('cache-put-with-no-response', {\n url: getFriendlyURL(effectiveRequest.url),\n });\n }\n const responseToCache = await _isResponseSafeToCache({\n event,\n plugins,\n response,\n request: effectiveRequest,\n });\n if (!responseToCache) {\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Response '${getFriendlyURL(effectiveRequest.url)}' will ` +\n `not be cached.`, responseToCache);\n }\n return;\n }\n const cache = await self.caches.open(cacheName);\n const updatePlugins = pluginUtils.filter(plugins, \"cacheDidUpdate\" /* CACHE_DID_UPDATE */);\n const oldResponse = updatePlugins.length > 0 ?\n await matchWrapper({ cacheName, matchOptions, request: effectiveRequest }) :\n null;\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Updating the '${cacheName}' cache with a new Response for ` +\n `${getFriendlyURL(effectiveRequest.url)}.`);\n }\n try {\n await cache.put(effectiveRequest, responseToCache);\n }\n catch (error) {\n // See https://developer.mozilla.org/en-US/docs/Web/API/DOMException#exception-QuotaExceededError\n if (error.name === 'QuotaExceededError') {\n await executeQuotaErrorCallbacks();\n }\n throw error;\n }\n for (const plugin of updatePlugins) {\n await plugin[\"cacheDidUpdate\" /* CACHE_DID_UPDATE */].call(plugin, {\n cacheName,\n event,\n oldResponse,\n newResponse: responseToCache,\n request: effectiveRequest,\n });\n }\n};\nexport const cacheWrapper = {\n put: putWrapper,\n match: matchWrapper,\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';\n/**\n * A helper function that prevents a promise from being flagged as unused.\n *\n * @private\n **/\nexport function dontWaitFor(promise) {\n // Effective no-op.\n promise.then(() => { });\n}\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}","/*\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 */\nexport class DBWrapper {\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 constructor(name, version, { onupgradeneeded, onversionchange, } = {}) {\n this._db = null;\n this._name = name;\n this._version = version;\n this._onupgradeneeded = onupgradeneeded;\n this._onversionchange = onversionchange || (() => this.close());\n }\n /**\n * Returns the IDBDatabase instance (not normally needed).\n * @return {IDBDatabase|undefined}\n *\n * @private\n */\n get db() {\n return this._db;\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 async open() {\n if (this._db)\n return;\n this._db = await new Promise((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 let openRequestTimedOut = false;\n setTimeout(() => {\n openRequestTimedOut = true;\n reject(new Error('The open request was blocked and timed out'));\n }, this.OPEN_TIMEOUT);\n const openRequest = indexedDB.open(this._name, this._version);\n openRequest.onerror = () => reject(openRequest.error);\n openRequest.onupgradeneeded = (evt) => {\n if (openRequestTimedOut) {\n openRequest.transaction.abort();\n openRequest.result.close();\n }\n else if (typeof this._onupgradeneeded === 'function') {\n this._onupgradeneeded(evt);\n }\n };\n openRequest.onsuccess = () => {\n const db = openRequest.result;\n if (openRequestTimedOut) {\n db.close();\n }\n else {\n db.onversionchange = this._onversionchange.bind(this);\n resolve(db);\n }\n };\n });\n return this;\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 async getKey(storeName, query) {\n return (await this.getAllKeys(storeName, query, 1))[0];\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 async getAll(storeName, query, count) {\n return await this.getAllMatching(storeName, { query, count });\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 async getAllKeys(storeName, query, count) {\n const entries = await this.getAllMatching(storeName, { query, count, includeKeys: true });\n return entries.map((entry) => entry.key);\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 async getAllMatching(storeName, { index, query = null, // IE/Edge errors if query === `undefined`.\n direction = 'next', count, includeKeys = false, } = {}) {\n return await this.transaction([storeName], 'readonly', (txn, done) => {\n const store = txn.objectStore(storeName);\n const target = index ? store.index(index) : store;\n const results = [];\n const request = target.openCursor(query, direction);\n request.onsuccess = () => {\n const cursor = request.result;\n if (cursor) {\n results.push(includeKeys ? cursor : cursor.value);\n if (count && results.length >= count) {\n done(results);\n }\n else {\n cursor.continue();\n }\n }\n else {\n done(results);\n }\n };\n });\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} 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 async transaction(storeNames, type, callback) {\n await this.open();\n return await new Promise((resolve, reject) => {\n const txn = this._db.transaction(storeNames, type);\n txn.onabort = () => reject(txn.error);\n txn.oncomplete = () => resolve();\n callback(txn, (value) => resolve(value));\n });\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 async _call(method, storeName, type, ...args) {\n const callback = (txn, done) => {\n const objStore = txn.objectStore(storeName);\n // TODO(philipwalton): Fix this underlying TS2684 error.\n // @ts-ignore\n const request = objStore[method].apply(objStore, args);\n request.onsuccess = () => done(request.result);\n };\n return await this.transaction([storeName], type, callback);\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 close() {\n if (this._db) {\n this._db.close();\n this._db = null;\n }\n }\n}\n// Exposed on the prototype to let users modify the default timeout on a\n// per-instance or global basis.\nDBWrapper.prototype.OPEN_TIMEOUT = 2000;\n// Wrap native IDBObjectStore methods according to their mode.\nconst methodsToWrap = {\n readonly: ['get', 'count', 'getKey', 'getAll', 'getAllKeys'],\n readwrite: ['add', 'put', 'clear', 'delete'],\n};\nfor (const [mode, methods] of Object.entries(methodsToWrap)) {\n for (const method of methods) {\n if (method in IDBObjectStore.prototype) {\n // Don't use arrow functions here since we're outside of the class.\n DBWrapper.prototype[method] =\n async function (storeName, ...args) {\n return await this._call(method, storeName, mode, ...args);\n };\n }\n }\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 */\nexport const deleteDatabase = async (name) => {\n await new Promise((resolve, reject) => {\n const request = indexedDB.deleteDatabase(name);\n request.onerror = () => {\n reject(request.error);\n };\n request.onblocked = () => {\n reject(new Error('Delete blocked'));\n };\n request.onsuccess = () => {\n resolve();\n };\n });\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 { WorkboxError } from './WorkboxError.js';\nimport { logger } from './logger.js';\nimport { assert } from './assert.js';\nimport { getFriendlyURL } from '../_private/getFriendlyURL.js';\nimport { pluginUtils } from '../utils/pluginUtils.js';\nimport '../_version.js';\n/**\n * Wrapper around the fetch API.\n *\n * Will call requestWillFetch on available plugins.\n *\n * @param {Object} options\n * @param {Request|string} options.request\n * @param {Object} [options.fetchOptions]\n * @param {ExtendableEvent} [options.event]\n * @param {Array} [options.plugins=[]]\n * @return {Promise}\n *\n * @private\n * @memberof module:workbox-core\n */\nconst wrappedFetch = async ({ request, fetchOptions, event, plugins = [], }) => {\n if (typeof request === 'string') {\n request = new Request(request);\n }\n // We *should* be able to call `await event.preloadResponse` even if it's\n // undefined, but for some reason, doing so leads to errors in our Node unit\n // tests. To work around that, explicitly check preloadResponse's value first.\n if (event instanceof FetchEvent && event.preloadResponse) {\n const possiblePreloadResponse = await event.preloadResponse;\n if (possiblePreloadResponse) {\n if (process.env.NODE_ENV !== 'production') {\n logger.log(`Using a preloaded navigation response for ` +\n `'${getFriendlyURL(request.url)}'`);\n }\n return possiblePreloadResponse;\n }\n }\n if (process.env.NODE_ENV !== 'production') {\n assert.isInstance(request, Request, {\n paramName: 'request',\n expectedClass: Request,\n moduleName: 'workbox-core',\n className: 'fetchWrapper',\n funcName: 'wrappedFetch',\n });\n }\n const failedFetchPlugins = pluginUtils.filter(plugins, \"fetchDidFail\" /* FETCH_DID_FAIL */);\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 const originalRequest = failedFetchPlugins.length > 0 ?\n request.clone() : null;\n try {\n for (const plugin of plugins) {\n if (\"requestWillFetch\" /* REQUEST_WILL_FETCH */ in plugin) {\n const pluginMethod = plugin[\"requestWillFetch\" /* REQUEST_WILL_FETCH */];\n const requestClone = request.clone();\n request = await pluginMethod.call(plugin, {\n request: requestClone,\n event,\n });\n if (process.env.NODE_ENV !== 'production') {\n if (request) {\n assert.isInstance(request, Request, {\n moduleName: 'Plugin',\n funcName: \"cachedResponseWillBeUsed\" /* CACHED_RESPONSE_WILL_BE_USED */,\n isReturnValueProblem: true,\n });\n }\n }\n }\n }\n }\n catch (err) {\n throw new WorkboxError('plugin-error-request-will-fetch', {\n thrownError: err,\n });\n }\n // The request can be altered by plugins with `requestWillFetch` making\n // the original request (Most likely from a `fetch` event) to be different\n // to the Request we make. Pass both to `fetchDidFail` to aid debugging.\n const pluginFilteredRequest = request.clone();\n try {\n let fetchResponse;\n // See https://github.com/GoogleChrome/workbox/issues/1796\n if (request.mode === 'navigate') {\n fetchResponse = await fetch(request);\n }\n else {\n fetchResponse = await fetch(request, fetchOptions);\n }\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Network request for ` +\n `'${getFriendlyURL(request.url)}' returned a response with ` +\n `status '${fetchResponse.status}'.`);\n }\n for (const plugin of plugins) {\n if (\"fetchDidSucceed\" /* FETCH_DID_SUCCEED */ in plugin) {\n fetchResponse = await plugin[\"fetchDidSucceed\" /* FETCH_DID_SUCCEED */]\n .call(plugin, {\n event,\n request: pluginFilteredRequest,\n response: fetchResponse,\n });\n if (process.env.NODE_ENV !== 'production') {\n if (fetchResponse) {\n assert.isInstance(fetchResponse, Response, {\n moduleName: 'Plugin',\n funcName: \"fetchDidSucceed\" /* FETCH_DID_SUCCEED */,\n isReturnValueProblem: true,\n });\n }\n }\n }\n }\n return fetchResponse;\n }\n catch (error) {\n if (process.env.NODE_ENV !== 'production') {\n logger.error(`Network request for ` +\n `'${getFriendlyURL(request.url)}' threw an error.`, error);\n }\n for (const plugin of failedFetchPlugins) {\n await plugin[\"fetchDidFail\" /* FETCH_DID_FAIL */].call(plugin, {\n error,\n event,\n originalRequest: originalRequest.clone(),\n request: pluginFilteredRequest.clone(),\n });\n }\n throw error;\n }\n};\nconst fetchWrapper = {\n fetch: wrappedFetch,\n};\nexport { fetchWrapper };\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 './_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 * @param {Response} response\n * @param {Function} modifier\n * @memberof module:workbox-core\n */\nasync function copyResponse(response, modifier) {\n const clonedResponse = response.clone();\n // Create a fresh `ResponseInit` object by cloning the headers.\n const responseInit = {\n headers: new Headers(clonedResponse.headers),\n status: clonedResponse.status,\n statusText: clonedResponse.statusText,\n };\n // Apply any user modifications.\n const modifiedResponseInit = modifier ? modifier(responseInit) : responseInit;\n // 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 const body = canConstructResponseFromBodyStream() ?\n clonedResponse.body : await clonedResponse.blob();\n return new Response(body, modifiedResponseInit);\n}\nexport { copyResponse };\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';\nconst DB_NAME = 'workbox-expiration';\nconst OBJECT_STORE_NAME = 'cache-entries';\nconst normalizeURL = (unNormalizedUrl) => {\n const url = new URL(unNormalizedUrl, location.href);\n url.hash = '';\n return url.href;\n};\n/**\n * Returns the timestamp model.\n *\n * @private\n */\nclass CacheTimestampsModel {\n /**\n *\n * @param {string} cacheName\n *\n * @private\n */\n constructor(cacheName) {\n this._cacheName = cacheName;\n this._db = new DBWrapper(DB_NAME, 1, {\n onupgradeneeded: (event) => this._handleUpgrade(event),\n });\n }\n /**\n * Should perform an upgrade of indexedDB.\n *\n * @param {Event} event\n *\n * @private\n */\n _handleUpgrade(event) {\n const db = event.target.result;\n // 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 const objStore = db.createObjectStore(OBJECT_STORE_NAME, { 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 objStore.createIndex('cacheName', 'cacheName', { unique: false });\n objStore.createIndex('timestamp', 'timestamp', { unique: false });\n // Previous versions of `workbox-expiration` used `this._cacheName`\n // as the IDBDatabase name.\n deleteDatabase(this._cacheName);\n }\n /**\n * @param {string} url\n * @param {number} timestamp\n *\n * @private\n */\n async setTimestamp(url, timestamp) {\n url = normalizeURL(url);\n const entry = {\n url,\n 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 await this._db.put(OBJECT_STORE_NAME, entry);\n }\n /**\n * Returns the timestamp stored for a given URL.\n *\n * @param {string} url\n * @return {number}\n *\n * @private\n */\n async getTimestamp(url) {\n const entry = await this._db.get(OBJECT_STORE_NAME, this._getId(url));\n return entry.timestamp;\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}\n *\n * @private\n */\n async expireEntries(minTimestamp, maxCount) {\n const entriesToDelete = await this._db.transaction(OBJECT_STORE_NAME, 'readwrite', (txn, done) => {\n const store = txn.objectStore(OBJECT_STORE_NAME);\n const request = store.index('timestamp').openCursor(null, 'prev');\n const entriesToDelete = [];\n let entriesNotDeletedCount = 0;\n request.onsuccess = () => {\n const cursor = request.result;\n if (cursor) {\n const result = cursor.value;\n // TODO(philipwalton): once we can use a multi-key index, we\n // won't have to check `cacheName` here.\n if (result.cacheName === this._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) ||\n (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 }\n else {\n entriesNotDeletedCount++;\n }\n }\n cursor.continue();\n }\n else {\n done(entriesToDelete);\n }\n };\n });\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 const urlsDeleted = [];\n for (const entry of entriesToDelete) {\n await this._db.delete(OBJECT_STORE_NAME, entry.id);\n urlsDeleted.push(entry.url);\n }\n return urlsDeleted;\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 _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}\nexport { CacheTimestampsModel };\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 */\nclass CacheExpiration {\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 */\n constructor(cacheName, config = {}) {\n this._isRunning = false;\n this._rerunRequested = false;\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 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 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 // TODO: Assert is positive\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 // TODO: Assert is positive\n }\n }\n this._maxEntries = config.maxEntries;\n this._maxAgeSeconds = config.maxAgeSeconds;\n this._cacheName = cacheName;\n this._timestampModel = new CacheTimestampsModel(cacheName);\n }\n /**\n * Expires entries for the given cache and given criteria.\n */\n async expireEntries() {\n if (this._isRunning) {\n this._rerunRequested = true;\n return;\n }\n this._isRunning = true;\n const minTimestamp = this._maxAgeSeconds ?\n Date.now() - (this._maxAgeSeconds * 1000) : 0;\n const urlsExpired = await this._timestampModel.expireEntries(minTimestamp, this._maxEntries);\n // Delete URLs from the cache\n const cache = await self.caches.open(this._cacheName);\n for (const url of urlsExpired) {\n await cache.delete(url);\n }\n if (process.env.NODE_ENV !== 'production') {\n if (urlsExpired.length > 0) {\n logger.groupCollapsed(`Expired ${urlsExpired.length} ` +\n `${urlsExpired.length === 1 ? 'entry' : 'entries'} and removed ` +\n `${urlsExpired.length === 1 ? 'it' : 'them'} from the ` +\n `'${this._cacheName}' cache.`);\n logger.log(`Expired the following ${urlsExpired.length === 1 ?\n 'URL' : 'URLs'}:`);\n urlsExpired.forEach((url) => logger.log(` ${url}`));\n logger.groupEnd();\n }\n else {\n logger.debug(`Cache expiration ran and found no entries to remove.`);\n }\n }\n this._isRunning = false;\n if (this._rerunRequested) {\n this._rerunRequested = false;\n dontWaitFor(this.expireEntries());\n }\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 async updateTimestamp(url) {\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 await this._timestampModel.setTimestamp(url, Date.now());\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 async isURLExpired(url) {\n if (!this._maxAgeSeconds) {\n if (process.env.NODE_ENV !== 'production') {\n throw new WorkboxError(`expired-test-without-max-age`, {\n methodName: 'isURLExpired',\n paramName: 'maxAgeSeconds',\n });\n }\n return false;\n }\n else {\n const timestamp = await this._timestampModel.getTimestamp(url);\n const expireOlderThan = Date.now() - (this._maxAgeSeconds * 1000);\n return (timestamp < expireOlderThan);\n }\n }\n /**\n * Removes the IndexedDB object store used to keep track of cache expiration\n * metadata.\n */\n async delete() {\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 await this._timestampModel.expireEntries(Infinity); // Expires all.\n }\n}\nexport { CacheExpiration };\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 the Workbox APIs to regularly enforce a\n * limit on the age and / or the number of cached requests.\n *\n * Whenever a cached request is used or updated, this plugin will look\n * at the used 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 */\nclass ExpirationPlugin {\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 {boolean} [config.purgeOnQuotaError] Whether to opt this cache in to\n * automatic deletion if the available storage quota has been exceeded.\n */\n constructor(config = {}) {\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 = async ({ event, request, cacheName, cachedResponse }) => {\n if (!cachedResponse) {\n return null;\n }\n const isFresh = this._isResponseDateFresh(cachedResponse);\n // Expire entries to ensure that even if the expiration date has\n // expired, it'll only be used once.\n const cacheExpiration = this._getCacheExpiration(cacheName);\n dontWaitFor(cacheExpiration.expireEntries());\n // 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 const updateTimestampDone = cacheExpiration.updateTimestamp(request.url);\n if (event) {\n try {\n event.waitUntil(updateTimestampDone);\n }\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 ` +\n `updating cache entry for ` +\n `'${getFriendlyURL(event.request.url)}'.`);\n }\n }\n }\n }\n return isFresh ? cachedResponse : null;\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 this.cacheDidUpdate = async ({ cacheName, request }) => {\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 const cacheExpiration = this._getCacheExpiration(cacheName);\n await cacheExpiration.updateTimestamp(request.url);\n await cacheExpiration.expireEntries();\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 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 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 this._config = config;\n this._maxAgeSeconds = config.maxAgeSeconds;\n this._cacheExpirations = new Map();\n if (config.purgeOnQuotaError) {\n registerQuotaErrorCallback(() => this.deleteCacheAndMetadata());\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 _getCacheExpiration(cacheName) {\n if (cacheName === cacheNames.getRuntimeName()) {\n throw new WorkboxError('expire-custom-caches-only');\n }\n let cacheExpiration = this._cacheExpirations.get(cacheName);\n if (!cacheExpiration) {\n cacheExpiration = new CacheExpiration(cacheName, this._config);\n this._cacheExpirations.set(cacheName, cacheExpiration);\n }\n return cacheExpiration;\n }\n /**\n * @param {Response} cachedResponse\n * @return {boolean}\n *\n * @private\n */\n _isResponseDateFresh(cachedResponse) {\n if (!this._maxAgeSeconds) {\n // We aren't expiring by age, so return true, it's fresh\n return true;\n }\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 const dateHeaderTimestamp = this._getDateHeaderTimestamp(cachedResponse);\n if (dateHeaderTimestamp === null) {\n // Unable to parse date, so assume it's fresh.\n return true;\n }\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 const 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 _getDateHeaderTimestamp(cachedResponse) {\n if (!cachedResponse.headers.has('date')) {\n return null;\n }\n const dateHeader = cachedResponse.headers.get('date');\n const parsedDate = new Date(dateHeader);\n const headerTime = parsedDate.getTime();\n // If the Date header was invalid for some reason, parsedDate.getTime()\n // will return NaN.\n if (isNaN(headerTime)) {\n return null;\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 async deleteCacheAndMetadata() {\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 for (const [cacheName, cacheExpiration] of this._cacheExpirations) {\n await self.caches.delete(cacheName);\n await cacheExpiration.delete();\n }\n // Reset this._cacheExpirations to its initial state.\n this._cacheExpirations = new Map();\n }\n}\nexport { ExpirationPlugin };\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';\nconst plugins = [];\nexport const precachePlugins = {\n /*\n * @return {Array}\n * @private\n */\n get() {\n return plugins;\n },\n /*\n * @param {Array} newPlugins\n * @private\n */\n add(newPlugins) {\n plugins.push(...newPlugins);\n },\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 { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport '../_version.js';\n// Name of the search parameter used to store revision info.\nconst 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 */\nexport function createCacheKey(entry) {\n if (!entry) {\n throw new WorkboxError('add-to-cache-list-unexpected-type', { 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 if (typeof entry === 'string') {\n const urlObject = new URL(entry, location.href);\n return {\n cacheKey: urlObject.href,\n url: urlObject.href,\n };\n }\n const { revision, url } = entry;\n if (!url) {\n throw new WorkboxError('add-to-cache-list-unexpected-type', { entry });\n }\n // If there's just a URL and no revision, then it's also assumed to be a\n // versioned URL.\n if (!revision) {\n const urlObject = new URL(url, location.href);\n return {\n cacheKey: urlObject.href,\n url: urlObject.href,\n };\n }\n // Otherwise, construct a properly versioned URL using the custom Workbox\n // search parameter along with the revision info.\n const cacheKeyURL = new URL(url, location.href);\n const 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}\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 { PrecacheController } from '../PrecacheController.js';\nimport '../_version.js';\nlet precacheController;\n/**\n * @return {PrecacheController}\n * @private\n */\nexport const getOrCreatePrecacheController = () => {\n if (!precacheController) {\n precacheController = new PrecacheController();\n }\n return precacheController;\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 { cacheWrapper } from 'workbox-core/_private/cacheWrapper.js';\nimport { fetchWrapper } from 'workbox-core/_private/fetchWrapper.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport { copyResponse } from 'workbox-core/copyResponse.js';\nimport { createCacheKey } from './utils/createCacheKey.js';\nimport { printCleanupDetails } from './utils/printCleanupDetails.js';\nimport { printInstallDetails } from './utils/printInstallDetails.js';\nimport './_version.js';\n/**\n * Performs efficient precaching of assets.\n *\n * @memberof module:workbox-precaching\n */\nclass PrecacheController {\n /**\n * Create a new PrecacheController.\n *\n * @param {string} [cacheName] An optional name for the cache, to override\n * the default precache name.\n */\n constructor(cacheName) {\n this._cacheName = cacheNames.getPrecacheName(cacheName);\n this._urlsToCacheKeys = new Map();\n this._urlsToCacheModes = new Map();\n this._cacheKeysToIntegrities = new Map();\n }\n /**\n * This method will add items to the precache list, removing duplicates\n * and ensuring the information is valid.\n *\n * @param {\n * Array\n * } entries Array of entries to precache.\n */\n 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 const urlsToWarnAbout = [];\n for (const entry of entries) {\n // See https://github.com/GoogleChrome/workbox/issues/2259\n if (typeof entry === 'string') {\n urlsToWarnAbout.push(entry);\n }\n else if (entry && entry.revision === undefined) {\n urlsToWarnAbout.push(entry.url);\n }\n const { cacheKey, url } = createCacheKey(entry);\n const cacheMode = (typeof entry !== 'string' && entry.revision) ?\n 'reload' : 'default';\n if (this._urlsToCacheKeys.has(url) &&\n 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 if (typeof entry !== 'string' && entry.integrity) {\n if (this._cacheKeysToIntegrities.has(cacheKey) &&\n this._cacheKeysToIntegrities.get(cacheKey) !== entry.integrity) {\n throw new WorkboxError('add-to-cache-list-conflicting-integrities', {\n url,\n });\n }\n this._cacheKeysToIntegrities.set(cacheKey, entry.integrity);\n }\n this._urlsToCacheKeys.set(url, cacheKey);\n this._urlsToCacheModes.set(url, cacheMode);\n if (urlsToWarnAbout.length > 0) {\n const warningMessage = `Workbox is precaching URLs without revision ` +\n `info: ${urlsToWarnAbout.join(', ')}\\nThis is generally NOT safe. ` +\n `Learn more at https://bit.ly/wb-precache`;\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 }\n else {\n logger.warn(warningMessage);\n }\n }\n }\n }\n /**\n * Precaches new and updated assets. Call this method from the service worker\n * install event.\n *\n * @param {Object} options\n * @param {Event} [options.event] The install event (if needed).\n * @param {Array} [options.plugins] Plugins to be used for fetching\n * and caching during install.\n * @return {Promise}\n */\n async install({ event, plugins } = {}) {\n if (process.env.NODE_ENV !== 'production') {\n if (plugins) {\n assert.isArray(plugins, {\n moduleName: 'workbox-precaching',\n className: 'PrecacheController',\n funcName: 'install',\n paramName: 'plugins',\n });\n }\n }\n const toBePrecached = [];\n const alreadyPrecached = [];\n const cache = await self.caches.open(this._cacheName);\n const alreadyCachedRequests = await cache.keys();\n const existingCacheKeys = new Set(alreadyCachedRequests.map((request) => request.url));\n for (const [url, cacheKey] of this._urlsToCacheKeys) {\n if (existingCacheKeys.has(cacheKey)) {\n alreadyPrecached.push(url);\n }\n else {\n toBePrecached.push({ cacheKey, url });\n }\n }\n const precacheRequests = toBePrecached.map(({ cacheKey, url }) => {\n const integrity = this._cacheKeysToIntegrities.get(cacheKey);\n const cacheMode = this._urlsToCacheModes.get(url);\n return this._addURLToCache({\n cacheKey,\n cacheMode,\n event,\n integrity,\n plugins,\n url,\n });\n });\n await Promise.all(precacheRequests);\n const updatedURLs = toBePrecached.map((item) => item.url);\n if (process.env.NODE_ENV !== 'production') {\n printInstallDetails(updatedURLs, alreadyPrecached);\n }\n return {\n updatedURLs,\n notUpdatedURLs: alreadyPrecached,\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 * @return {Promise}\n */\n async activate() {\n const cache = await self.caches.open(this._cacheName);\n const currentlyCachedRequests = await cache.keys();\n const expectedCacheKeys = new Set(this._urlsToCacheKeys.values());\n const deletedURLs = [];\n for (const request of currentlyCachedRequests) {\n if (!expectedCacheKeys.has(request.url)) {\n await cache.delete(request);\n deletedURLs.push(request.url);\n }\n }\n if (process.env.NODE_ENV !== 'production') {\n printCleanupDetails(deletedURLs);\n }\n return { deletedURLs };\n }\n /**\n * Requests the entry and saves it to the cache if the response is valid.\n * By default, any response with a status code of less than 400 (including\n * opaque responses) is considered valid.\n *\n * If you need to use custom criteria to determine what's valid and what\n * isn't, then pass in an item in `options.plugins` that implements the\n * `cacheWillUpdate()` lifecycle event.\n *\n * @private\n * @param {Object} options\n * @param {string} options.cacheKey The string to use a cache key.\n * @param {string} options.url The URL to fetch and cache.\n * @param {string} [options.cacheMode] The cache mode for the network request.\n * @param {Event} [options.event] The install event (if passed).\n * @param {Array} [options.plugins] An array of plugins to apply to\n * fetch and caching.\n * @param {string} [options.integrity] The value to use for the `integrity`\n * field when making the request.\n */\n async _addURLToCache({ cacheKey, url, cacheMode, event, plugins, integrity }) {\n const request = new Request(url, {\n integrity,\n cache: cacheMode,\n credentials: 'same-origin',\n });\n let response = await fetchWrapper.fetch({\n event,\n plugins,\n request,\n });\n // Allow developers to override the default logic about what is and isn't\n // valid by passing in a plugin implementing cacheWillUpdate(), e.g.\n // a `CacheableResponsePlugin` instance.\n let cacheWillUpdatePlugin;\n for (const plugin of (plugins || [])) {\n if ('cacheWillUpdate' in plugin) {\n cacheWillUpdatePlugin = plugin;\n }\n }\n const isValidResponse = cacheWillUpdatePlugin ?\n // Use a callback if provided. It returns a truthy value if valid.\n // NOTE: invoke the method on the plugin instance so the `this` context\n // is correct.\n await cacheWillUpdatePlugin.cacheWillUpdate({ event, request, response }) :\n // Otherwise, default to considering any response status under 400 valid.\n // This includes, by default, considering opaque responses valid.\n response.status < 400;\n // Consider this a failure, leading to the `install` handler failing, if\n // we get back an invalid response.\n if (!isValidResponse) {\n throw new WorkboxError('bad-precaching-response', {\n url,\n status: response.status,\n });\n }\n // 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 if (response.redirected) {\n response = await copyResponse(response);\n }\n await cacheWrapper.put({\n event,\n plugins,\n response,\n // `request` already uses `url`. We may be able to reuse it.\n request: cacheKey === url ? request : new Request(cacheKey),\n cacheName: this._cacheName,\n matchOptions: {\n ignoreSearch: true,\n },\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} A URL to cache key mapping.\n */\n 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} The precached URLs.\n */\n getCachedURLs() {\n return [...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 getCacheKeyForURL(url) {\n const urlObject = new URL(url, location.href);\n return this._urlsToCacheKeys.get(urlObject.href);\n }\n /**\n * This acts as a drop-in replacement for [`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}\n */\n async matchPrecache(request) {\n const url = request instanceof Request ? request.url : request;\n const cacheKey = this.getCacheKeyForURL(url);\n if (cacheKey) {\n const cache = await self.caches.open(this._cacheName);\n return cache.match(cacheKey);\n }\n return undefined;\n }\n /**\n * Returns a function that can be used within a\n * {@link module:workbox-routing.Route} that will find a response for the\n * incoming request against the precache.\n *\n * If for an unexpected reason there is a cache miss for the request,\n * this will fall back to retrieving the `Response` via `fetch()` when\n * `fallbackToNetwork` is `true`.\n *\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 createHandler(fallbackToNetwork = true) {\n return async ({ request }) => {\n try {\n const response = await this.matchPrecache(request);\n if (response) {\n return response;\n }\n // This shouldn't normally happen, but there are edge cases:\n // https://github.com/GoogleChrome/workbox/issues/1441\n throw new WorkboxError('missing-precache-entry', {\n cacheName: this._cacheName,\n url: request instanceof Request ? request.url : request,\n });\n }\n catch (error) {\n if (fallbackToNetwork) {\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Unable to respond with precached response. ` +\n `Falling back to network.`, error);\n }\n return fetch(request);\n }\n throw error;\n }\n };\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 * If for an unexpected reason there is a cache miss when looking up `url`,\n * this will fall back to retrieving the `Response` via `fetch()` when\n * `fallbackToNetwork` is `true`.\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 createHandlerBoundToURL(url, fallbackToNetwork = true) {\n const cacheKey = this.getCacheKeyForURL(url);\n if (!cacheKey) {\n throw new WorkboxError('non-precached-url', { url });\n }\n const handler = this.createHandler(fallbackToNetwork);\n const request = new Request(url);\n return () => handler({ request });\n }\n}\nexport { PrecacheController };\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} 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 */\nexport function removeIgnoredSearchParams(urlObject, ignoreURLParametersMatching = []) {\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 (const paramName of [...urlObject.searchParams.keys()]) {\n if (ignoreURLParametersMatching.some((regExp) => regExp.test(paramName))) {\n urlObject.searchParams.delete(paramName);\n }\n }\n return urlObject;\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 */\nexport function* generateURLVariations(url, { ignoreURLParametersMatching, directoryIndex, cleanURLs, urlManipulation, } = {}) {\n const urlObject = new URL(url, location.href);\n urlObject.hash = '';\n yield urlObject.href;\n const urlWithoutIgnoredParams = removeIgnoredSearchParams(urlObject, ignoreURLParametersMatching);\n yield urlWithoutIgnoredParams.href;\n if (directoryIndex && urlWithoutIgnoredParams.pathname.endsWith('/')) {\n const directoryURL = new URL(urlWithoutIgnoredParams.href);\n directoryURL.pathname += directoryIndex;\n yield directoryURL.href;\n }\n if (cleanURLs) {\n const cleanURL = new URL(urlWithoutIgnoredParams.href);\n cleanURL.pathname += '.html';\n yield cleanURL.href;\n }\n if (urlManipulation) {\n const additionalURLs = urlManipulation({ url: urlObject });\n for (const urlToAttempt of additionalURLs) {\n yield urlToAttempt.href;\n }\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 { getOrCreatePrecacheController } from './getOrCreatePrecacheController.js';\nimport { generateURLVariations } from './generateURLVariations.js';\nimport '../_version.js';\n/**\n * This function will take the request URL and manipulate it based on the\n * configuration options.\n *\n * @param {string} url\n * @param {Object} options\n * @return {string} Returns the URL in the cache that matches the request,\n * if possible.\n *\n * @private\n */\nexport const getCacheKeyForURL = (url, options) => {\n const precacheController = getOrCreatePrecacheController();\n const urlsToCacheKeys = precacheController.getURLsToCacheKeys();\n for (const possibleURL of generateURLVariations(url, options)) {\n const possibleCacheKey = urlsToCacheKeys.get(possibleURL);\n if (possibleCacheKey) {\n return possibleCacheKey;\n }\n }\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 { addFetchListener } from './utils/addFetchListener.js';\nimport './_version.js';\nlet listenerAdded = false;\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]\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} [options.ignoreURLParametersMatching=[/^utm_/]] 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 * @memberof module:workbox-precaching\n */\nfunction addRoute(options) {\n if (!listenerAdded) {\n addFetchListener(options);\n listenerAdded = true;\n }\n}\nexport { addRoute };\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 { cacheNames } from 'workbox-core/_private/cacheNames.js';\nimport { getFriendlyURL } from 'workbox-core/_private/getFriendlyURL.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { getCacheKeyForURL } from './getCacheKeyForURL.js';\nimport '../_version.js';\n/**\n * Adds 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 * NOTE: when called more than once this method will replace the previously set\n * configuration options. Calling it more than once is not recommended outside\n * of tests.\n *\n * @private\n * @param {Object} [options]\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} [options.ignoreURLParametersMatching=[/^utm_/]] 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 {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 */\nexport const addFetchListener = ({ ignoreURLParametersMatching = [/^utm_/], directoryIndex = 'index.html', cleanURLs = true, urlManipulation, } = {}) => {\n const cacheName = cacheNames.getPrecacheName();\n // See https://github.com/Microsoft/TypeScript/issues/28357#issuecomment-436484705\n self.addEventListener('fetch', ((event) => {\n const precachedURL = getCacheKeyForURL(event.request.url, {\n cleanURLs,\n directoryIndex,\n ignoreURLParametersMatching,\n urlManipulation,\n });\n if (!precachedURL) {\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Precaching did not find a match for ` +\n getFriendlyURL(event.request.url));\n }\n return;\n }\n let responsePromise = self.caches.open(cacheName).then((cache) => {\n return cache.match(precachedURL);\n }).then((cachedResponse) => {\n if (cachedResponse) {\n return cachedResponse;\n }\n // Fall back to the network if we don't have a cached response\n // (perhaps due to manual cache cleanup).\n if (process.env.NODE_ENV !== 'production') {\n logger.warn(`The precached response for ` +\n `${getFriendlyURL(precachedURL)} in ${cacheName} was not found. ` +\n `Falling back to the network instead.`);\n }\n return fetch(precachedURL);\n });\n if (process.env.NODE_ENV !== 'production') {\n responsePromise = responsePromise.then((response) => {\n // Workbox is going to handle the route.\n // print the routing details to the console.\n logger.groupCollapsed(`Precaching is responding to: ` +\n getFriendlyURL(event.request.url));\n logger.log(`Serving the precached url: ${precachedURL}`);\n logger.groupCollapsed(`View request details here.`);\n logger.log(event.request);\n logger.groupEnd();\n logger.groupCollapsed(`View response details here.`);\n logger.log(response);\n logger.groupEnd();\n logger.groupEnd();\n return response;\n });\n }\n event.respondWith(responsePromise);\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 { logger } from 'workbox-core/_private/logger.js';\nimport { getOrCreatePrecacheController } from './utils/getOrCreatePrecacheController.js';\nimport { precachePlugins } from './utils/precachePlugins.js';\nimport './_version.js';\nconst installListener = (event) => {\n const precacheController = getOrCreatePrecacheController();\n const plugins = precachePlugins.get();\n event.waitUntil(precacheController.install({ event, plugins })\n .catch((error) => {\n if (process.env.NODE_ENV !== 'production') {\n logger.error(`Service worker installation failed. It will ` +\n `be retried automatically during the next navigation.`);\n }\n // Re-throw the error to ensure installation fails.\n throw error;\n }));\n};\nconst activateListener = (event) => {\n const precacheController = getOrCreatePrecacheController();\n event.waitUntil(precacheController.activate());\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 * 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} [entries=[]] Array of entries to precache.\n *\n * @memberof module:workbox-precaching\n */\nfunction precache(entries) {\n const precacheController = getOrCreatePrecacheController();\n precacheController.addToCacheList(entries);\n if (entries.length > 0) {\n // NOTE: these listeners will only be added once (even if the `precache()`\n // method is called multiple times) because event listeners are implemented\n // as a set, where each listener must be unique.\n // See https://github.com/Microsoft/TypeScript/issues/28357#issuecomment-436484705\n self.addEventListener('install', installListener);\n self.addEventListener('activate', activateListener);\n }\n}\nexport { precache };\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';\nlet 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 */\nexport const getOrCreateDefaultRouter = () => {\n if (!defaultRouter) {\n defaultRouter = new Router();\n // The helpers that use the default Router assume these listeners exist.\n defaultRouter.addFetchListener();\n defaultRouter.addCacheListener();\n }\n return defaultRouter;\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 '../_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 */\nexport const 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 return handler;\n }\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 return { handle: handler };\n }\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 */\nclass Route {\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 constructor(match, handler, method = defaultMethod) {\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 if (method) {\n assert.isOneOf(method, validMethods, { paramName: 'method' });\n }\n }\n // These values are referenced directly by Router so cannot be\n // altered by minificaton.\n this.handler = normalizeHandler(handler);\n this.match = match;\n this.method = method;\n }\n}\nexport { Route };\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 */\nexport const defaultMethod = 'GET';\n/**\n * The list of valid HTTP methods associated with requests that could be routed.\n *\n * @type {Array}\n *\n * @private\n */\nexport const validMethods = [\n 'DELETE',\n 'GET',\n 'HEAD',\n 'PATCH',\n 'POST',\n 'PUT',\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 */\nclass RegExpRoute extends Route {\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 constructor(regExp, handler, method) {\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 const match = ({ url }) => {\n const result = regExp.exec(url.href);\n // Return immediately if there's no match.\n if (!result) {\n return;\n }\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 if ((url.origin !== location.origin) && (result.index !== 0)) {\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`The regular expression '${regExp}' only partially matched ` +\n `against the cross-origin URL '${url}'. RegExpRoute's will only ` +\n `handle cross-origin requests if they match the entire URL.`);\n }\n return;\n }\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 return result.slice(1);\n };\n super(match, handler, method);\n }\n}\nexport { RegExpRoute };\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 { getFriendlyURL } from 'workbox-core/_private/getFriendlyURL.js';\nimport { normalizeHandler } from './utils/normalizeHandler.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 */\nclass Router {\n /**\n * Initializes a new Router.\n */\n constructor() {\n this._routes = new Map();\n }\n /**\n * @return {Map>} 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 get routes() {\n return this._routes;\n }\n /**\n * Adds a fetch event listener to respond to events when a route matches\n * the event's request.\n */\n addFetchListener() {\n // See https://github.com/Microsoft/TypeScript/issues/28357#issuecomment-436484705\n self.addEventListener('fetch', ((event) => {\n const { request } = event;\n const responsePromise = this.handleRequest({ request, event });\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 addCacheListener() {\n // See https://github.com/Microsoft/TypeScript/issues/28357#issuecomment-436484705\n self.addEventListener('message', ((event) => {\n if (event.data && event.data.type === 'CACHE_URLS') {\n const { payload } = event.data;\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Caching URLs from the window`, payload.urlsToCache);\n }\n const requestPromises = Promise.all(payload.urlsToCache.map((entry) => {\n if (typeof entry === 'string') {\n entry = [entry];\n }\n const request = new Request(...entry);\n return this.handleRequest({ request });\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 | undefined>`.\n })); // TypeScript\n event.waitUntil(requestPromises);\n // If a MessageChannel was used, reply to the message on success.\n if (event.ports && event.ports[0]) {\n requestPromises.then(() => event.ports[0].postMessage(true));\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 (this is usually\n * from a fetch event, but it does not have to be).\n * @param {FetchEvent} [options.event] The event that triggered the request,\n * if applicable.\n * @return {Promise|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 handleRequest({ request, event }) {\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 const url = new URL(request.url, location.href);\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 return;\n }\n const { params, route } = this.findMatchingRoute({ url, request, event });\n let handler = route && route.handler;\n const debugMessages = [];\n if (process.env.NODE_ENV !== 'production') {\n if (handler) {\n debugMessages.push([\n `Found a route to handle this request:`, route,\n ]);\n if (params) {\n debugMessages.push([\n `Passing the following params to the route's handler:`, params,\n ]);\n }\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 if (!handler && this._defaultHandler) {\n if (process.env.NODE_ENV !== 'production') {\n debugMessages.push(`Failed to find a matching route. Falling ` +\n `back to the default handler.`);\n }\n handler = this._defaultHandler;\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: ${getFriendlyURL(url)}`);\n }\n return;\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: ${getFriendlyURL(url)}`);\n debugMessages.forEach((msg) => {\n if (Array.isArray(msg)) {\n logger.log(...msg);\n }\n else {\n logger.log(msg);\n }\n });\n logger.groupEnd();\n }\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 let responsePromise;\n try {\n responsePromise = handler.handle({ url, request, event, params });\n }\n catch (err) {\n responsePromise = Promise.reject(err);\n }\n if (responsePromise instanceof Promise && this._catchHandler) {\n responsePromise = responsePromise.catch((err) => {\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: ` +\n ` ${getFriendlyURL(url)}. Falling back to Catch Handler.`);\n logger.error(`Error thrown by:`, route);\n logger.error(err);\n logger.groupEnd();\n }\n return this._catchHandler.handle({ url, request, event });\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 {Request} options.request The request to match.\n * @param {Event} [options.event] The corresponding event (unless N/A).\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 findMatchingRoute({ url, request, event }) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isInstance(url, URL, {\n moduleName: 'workbox-routing',\n className: 'Router',\n funcName: 'findMatchingRoute',\n paramName: 'options.url',\n });\n assert.isInstance(request, Request, {\n moduleName: 'workbox-routing',\n className: 'Router',\n funcName: 'findMatchingRoute',\n paramName: 'options.request',\n });\n }\n const routes = this._routes.get(request.method) || [];\n for (const route of routes) {\n let params;\n const matchResult = route.match({ url, request, event });\n if (matchResult) {\n // See https://github.com/GoogleChrome/workbox/issues/2079\n params = matchResult;\n if (Array.isArray(matchResult) && matchResult.length === 0) {\n // Instead of passing an empty array in as params, use undefined.\n params = undefined;\n }\n else if ((matchResult.constructor === Object &&\n Object.keys(matchResult).length === 0)) {\n // Instead of passing an empty object in as params, use undefined.\n params = undefined;\n }\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 }\n // Return early if have a match.\n return { route, params };\n }\n }\n // If no match was found above, return and empty object.\n return {};\n }\n /**\n * Define a default `handler` that's called when no routes explicitly\n * match the incoming request.\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 */\n setDefaultHandler(handler) {\n this._defaultHandler = 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 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 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 if (!this._routes.has(route.method)) {\n this._routes.set(route.method, []);\n }\n // Give precedence to all of the earlier routes by adding this additional\n // route to the end of the array.\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 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 const routeIndex = this._routes.get(route.method).indexOf(route);\n if (routeIndex > -1) {\n this._routes.get(route.method).splice(routeIndex, 1);\n }\n else {\n throw new WorkboxError('unregister-route-route-not-registered');\n }\n }\n}\nexport { Router };\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 { 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 */\nfunction registerRoute(capture, handler, method) {\n let route;\n if (typeof capture === 'string') {\n const captureUrl = new URL(capture, location.href);\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 }\n // We want to check if Express-style wildcards are in the pathname only.\n // TODO: Remove this log message in v4.\n const valueToCheck = capture.startsWith('http') ?\n captureUrl.pathname : capture;\n // See https://github.com/pillarjs/path-to-regexp#parameters\n const wildcards = '[*:?+]';\n if ((new RegExp(`${wildcards}`)).exec(valueToCheck)) {\n logger.debug(`The '$capture' parameter contains an Express-style wildcard ` +\n `character (${wildcards}). Strings are now always interpreted as ` +\n `exact matches; use a RegExp for partial or wildcard matches.`);\n }\n }\n const matchCallback = ({ url }) => {\n if (process.env.NODE_ENV !== 'production') {\n if ((url.pathname === captureUrl.pathname) &&\n (url.origin !== captureUrl.origin)) {\n logger.debug(`${capture} only partially matches the cross-origin URL ` +\n `${url}. This route will only handle cross-origin requests ` +\n `if they match the entire URL.`);\n }\n }\n return url.href === captureUrl.href;\n };\n // If `capture` is a string then `handler` and `method` must be present.\n route = new Route(matchCallback, handler, method);\n }\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 }\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 }\n else if (capture instanceof Route) {\n route = capture;\n }\n else {\n throw new WorkboxError('unsupported-route-type', {\n moduleName: 'workbox-routing',\n funcName: 'registerRoute',\n paramName: 'capture',\n });\n }\n const defaultRouter = getOrCreateDefaultRouter();\n defaultRouter.registerRoute(route);\n return route;\n}\nexport { registerRoute };\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} entries Array of entries to precache.\n * @param {Object} [options] See\n * [addRoute() options]{@link module:workbox-precaching.addRoute}.\n *\n * @memberof module:workbox-precaching\n */\nfunction precacheAndRoute(entries, options) {\n precache(entries);\n addRoute(options);\n}\nexport { precacheAndRoute };\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 const 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: async ({ response }) => {\n if (response.status === 200 || response.status === 0) {\n return response;\n }\n return null;\n },\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 { cacheWrapper } from 'workbox-core/_private/cacheWrapper.js';\nimport { fetchWrapper } from 'workbox-core/_private/fetchWrapper.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 { messages } from './utils/messages.js';\nimport { cacheOkAndOpaquePlugin } from './plugins/cacheOkAndOpaquePlugin.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 * @memberof module:workbox-strategies\n */\nclass StaleWhileRevalidate {\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} 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 all fetch() requests made by this strategy.\n * @param {Object} options.matchOptions [`CacheQueryOptions`](https://w3c.github.io/ServiceWorker/#dictdef-cachequeryoptions)\n */\n constructor(options = {}) {\n this._cacheName = cacheNames.getRuntimeName(options.cacheName);\n this._plugins = options.plugins || [];\n if (options.plugins) {\n const isUsingCacheWillUpdate = options.plugins.some((plugin) => !!plugin.cacheWillUpdate);\n this._plugins = isUsingCacheWillUpdate ?\n options.plugins : [cacheOkAndOpaquePlugin, ...options.plugins];\n }\n else {\n // No plugins passed in, use the default plugin.\n this._plugins = [cacheOkAndOpaquePlugin];\n }\n this._fetchOptions = options.fetchOptions;\n this._matchOptions = options.matchOptions;\n }\n /**\n * This method will perform a request strategy and follows an API that\n * will work with the\n * [Workbox Router]{@link module:workbox-routing.Router}.\n *\n * @param {Object} options\n * @param {Request|string} options.request A request to run this strategy for.\n * @param {Event} [options.event] The event that triggered the request.\n * @return {Promise}\n */\n async handle({ event, request }) {\n const logs = [];\n if (typeof request === 'string') {\n request = new Request(request);\n }\n if (process.env.NODE_ENV !== 'production') {\n assert.isInstance(request, Request, {\n moduleName: 'workbox-strategies',\n className: 'StaleWhileRevalidate',\n funcName: 'handle',\n paramName: 'request',\n });\n }\n const fetchAndCachePromise = this._getFromNetwork({ request, event });\n let response = await cacheWrapper.match({\n cacheName: this._cacheName,\n request,\n event,\n matchOptions: this._matchOptions,\n plugins: this._plugins,\n });\n let error;\n if (response) {\n if (process.env.NODE_ENV !== 'production') {\n logs.push(`Found a cached response in the '${this._cacheName}'` +\n ` cache. Will update with the network response in the background.`);\n }\n if (event) {\n try {\n event.waitUntil(fetchAndCachePromise);\n }\n catch (error) {\n if (process.env.NODE_ENV !== 'production') {\n logger.warn(`Unable to ensure service worker stays alive when ` +\n `updating cache for '${getFriendlyURL(request.url)}'.`);\n }\n }\n }\n }\n else {\n if (process.env.NODE_ENV !== 'production') {\n logs.push(`No response found in the '${this._cacheName}' cache. ` +\n `Will wait for the network response.`);\n }\n try {\n response = await fetchAndCachePromise;\n }\n catch (err) {\n error = err;\n }\n }\n if (process.env.NODE_ENV !== 'production') {\n logger.groupCollapsed(messages.strategyStart('StaleWhileRevalidate', request));\n for (const log of logs) {\n logger.log(log);\n }\n messages.printFinalResponse(response);\n logger.groupEnd();\n }\n if (!response) {\n throw new WorkboxError('no-response', { url: request.url, error });\n }\n return response;\n }\n /**\n * @param {Object} options\n * @param {Request} options.request\n * @param {Event} [options.event]\n * @return {Promise}\n *\n * @private\n */\n async _getFromNetwork({ request, event }) {\n const response = await fetchWrapper.fetch({\n request,\n event,\n fetchOptions: this._fetchOptions,\n plugins: this._plugins,\n });\n const cachePutPromise = cacheWrapper.put({\n cacheName: this._cacheName,\n request,\n response: response.clone(),\n event,\n plugins: this._plugins,\n });\n if (event) {\n try {\n event.waitUntil(cachePutPromise);\n }\n catch (error) {\n if (process.env.NODE_ENV !== 'production') {\n logger.warn(`Unable to ensure service worker stays alive when ` +\n `updating cache for '${getFriendlyURL(request.url)}'.`);\n }\n }\n }\n return response;\n }\n}\nexport { StaleWhileRevalidate };\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';\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 */\nfunction clientsClaim() {\n self.addEventListener('activate', () => self.clients.claim());\n}\nexport { clientsClaim };\n","/// \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\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 */\nfunction createHandlerBoundToURL(url) {\n const precacheController = getOrCreatePrecacheController();\n return precacheController.createHandlerBoundToURL(url);\n}\nexport { createHandlerBoundToURL };\n"]} \ No newline at end of file +{"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/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/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/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","../node_modules/workbox-core/_private/executeQuotaErrorCallbacks.js","../node_modules/workbox-core/_private/getFriendlyURL.js","../node_modules/workbox-core/_private/canConstructResponseFromBodyStream.js","../node_modules/workbox-core/utils/pluginUtils.js","../node_modules/workbox-core/_private/cacheWrapper.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/deleteDatabase.js","../node_modules/workbox-core/_private/fetchWrapper.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/precachePlugins.js","../node_modules/workbox-precaching/utils/createCacheKey.js","../node_modules/workbox-precaching/utils/getOrCreatePrecacheController.js","../node_modules/workbox-precaching/PrecacheController.js","../node_modules/workbox-precaching/utils/removeIgnoredSearchParams.js","../node_modules/workbox-precaching/utils/generateURLVariations.js","../node_modules/workbox-precaching/utils/getCacheKeyForURL.js","../node_modules/workbox-precaching/addRoute.js","../node_modules/workbox-precaching/utils/addFetchListener.js","../node_modules/workbox-precaching/precache.js","../node_modules/workbox-routing/utils/getOrCreateDefaultRouter.js","../node_modules/workbox-routing/utils/normalizeHandler.js","../node_modules/workbox-routing/Route.js","../node_modules/workbox-routing/utils/constants.js","../node_modules/workbox-routing/RegExpRoute.js","../node_modules/workbox-routing/Router.js","../node_modules/workbox-routing/registerRoute.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","service-worker.ts","../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","displayName","isGeneratorFunction","genFun","ctor","constructor","mark","setPrototypeOf","__proto__","awrap","async","Promise","iter","keys","reverse","pop","skipTempReset","prev","charAt","slice","stop","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","globalThis","Function","_arrayLikeToArray","arr","len","arr2","Array","_unsupportedIterableToArray","minLen","toString","from","test","_toConsumableArray","isArray","_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","JSON","stringify","WorkboxError","errorCode","details","message","quotaErrorCallbacks","Set","registerQuotaErrorCallback","callback","add","_cacheNameDetails","googleAnalytics","precache","prefix","suffix","registration","scope","_createCacheName","cacheName","filter","join","cacheNames","userCacheName","asyncGeneratorStep","gen","_next","_throw","_asyncToGenerator","executeQuotaErrorCallbacks","process","supportStatus","getFriendlyURL","url","URL","String","location","href","replace","RegExp","origin","pluginUtils","plugins","callbackName","plugin","_getEffectiveRequest","request","cacheKeyWillBeUsedPlugins","effectiveRequest","Request","_isResponseSafeToCache","response","event","responseToCache","pluginsUsed","pluginMethod","status","matchWrapper","matchOptions","caches","open","cache","match","cachedResponse","putWrapper","updatePlugins","oldResponse","put","newResponse","cacheWrapper","canConstructResponseFromBodyStream","testResponse","Response","body","dontWaitFor","promise","_slicedToArray","_arr","_n","_d","_s","_i","_defineProperties","target","props","descriptor","_createClass","protoProps","staticProps","DBWrapper","version","onupgradeneeded","onversionchange","_db","_name","_version","_onupgradeneeded","_onversionchange","close","openRequestTimedOut","setTimeout","OPEN_TIMEOUT","openRequest","indexedDB","onerror","evt","transaction","abort","onsuccess","db","storeName","query","getAllKeys","count","getAllMatching","includeKeys","entries","map","index","direction","txn","store","objectStore","results","openCursor","cursor","continue","storeNames","onabort","oncomplete","objStore","IDBObjectStore","_call","readonly","readwrite","deleteDatabase","onblocked","wrappedFetch","fetchOptions","FetchEvent","preloadResponse","possiblePreloadResponse","failedFetchPlugins","originalRequest","clone","requestClone","thrownError","pluginFilteredRequest","fetch","fetchResponse","fetchWrapper","copyResponse","modifier","clonedResponse","responseInit","headers","Headers","statusText","modifiedResponseInit","blob","OBJECT_STORE_NAME","normalizeURL","unNormalizedUrl","hash","CacheTimestampsModel","_cacheName","_handleUpgrade","createObjectStore","keyPath","createIndex","unique","timestamp","id","_getId","minTimestamp","maxCount","entriesToDelete","entriesNotDeletedCount","urlsDeleted","delete","CacheExpiration","config","_isRunning","_rerunRequested","_maxEntries","maxEntries","_maxAgeSeconds","maxAgeSeconds","_timestampModel","now","expireEntries","urlsExpired","setTimestamp","getTimestamp","expireOlderThan","Infinity","ExpirationPlugin","cachedResponseWillBeUsed","isFresh","_isResponseDateFresh","cacheExpiration","_getCacheExpiration","updateTimestampDone","updateTimestamp","waitUntil","cacheDidUpdate","_config","_cacheExpirations","purgeOnQuotaError","deleteCacheAndMetadata","dateHeaderTimestamp","_getDateHeaderTimestamp","dateHeader","headerTime","getTime","precachePlugins","createCacheKey","urlObject","cacheKey","revision","cacheKeyURL","originalURL","searchParams","precacheController","PrecacheController","_urlsToCacheKeys","_urlsToCacheModes","_cacheKeysToIntegrities","urlsToWarnAbout","cacheMode","firstEntry","secondEntry","integrity","warningMessage","console","warn","toBePrecached","alreadyPrecached","alreadyCachedRequests","existingCacheKeys","precacheRequests","_addURLToCache","all","updatedURLs","item","notUpdatedURLs","currentlyCachedRequests","expectedCacheKeys","deletedURLs","credentials","cacheWillUpdatePlugin","cacheWillUpdate","redirected","ignoreSearch","getCacheKeyForURL","fallbackToNetwork","matchPrecache","handler","createHandler","getOrCreatePrecacheController","removeIgnoredSearchParams","ignoreURLParametersMatching","paramName","some","regExp","generateURLVariations","directoryIndex","cleanURLs","urlManipulation","urlWithoutIgnoredParams","pathname","endsWith","directoryURL","cleanURL","additionalURLs","urlToAttempt","options","urlsToCacheKeys","getURLsToCacheKeys","possibleURL","possibleCacheKey","listenerAdded","addRoute","addEventListener","precachedURL","responsePromise","respondWith","addFetchListener","installListener","install","catch","activateListener","activate","defaultRouter","normalizeHandler","Route","RegExpRoute","exec","Router","_routes","handleRequest","data","payload","requestPromises","urlsToCache","ports","postMessage","protocol","startsWith","findMatchingRoute","params","route","_defaultHandler","_catchHandler","matchResult","routeIndex","splice","getOrCreateDefaultRouter","addCacheListener","registerRoute","capture","captureUrl","moduleName","funcName","cacheOkAndOpaquePlugin","StaleWhileRevalidate","_plugins","isUsingCacheWillUpdate","_fetchOptions","_matchOptions","fetchAndCachePromise","_getFromNetwork","cachePutPromise","clients","claim","addToCacheList","__WB_MANIFEST","fileExtensionRegexp","createHandlerBoundToURL","skipWaiting"],"mappings":"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","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 = \"/unict-telegram-channels-groups/\";\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\";\n// @ts-ignore\ntry {\n self['workbox:core:5.1.4'] && _();\n}\ncatch (e) { }\n","\"use strict\";\n// @ts-ignore\ntry {\n self['workbox:precaching:5.1.4'] && _();\n}\ncatch (e) { }\n","\"use strict\";\n// @ts-ignore\ntry {\n self['workbox:routing:5.1.4'] && _();\n}\ncatch (e) { }\n","\"use strict\";\n// @ts-ignore\ntry {\n self['workbox:strategies:5.1.4'] && _();\n}\ncatch (e) { }\n","\"use strict\";\n// @ts-ignore\ntry {\n self['workbox:expiration:5.1.4'] && _();\n}\ncatch (e) { }\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function 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 try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(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 || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = GeneratorFunctionPrototype;\n define(Gp, \"constructor\", GeneratorFunctionPrototype);\n define(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction);\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n 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\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return 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 =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n });\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n define(Gp, iteratorSymbol, function() {\n return this;\n });\n\n define(Gp, \"toString\", function() {\n return \"[object Generator]\";\n });\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, in modern engines\n // we can explicitly access globalThis. In older engines 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 if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\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 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 const messages = {\n 'invalid-value': ({ paramName, validValueDescription, value }) => {\n if (!paramName || !validValueDescription) {\n throw new Error(`Unexpected input to 'invalid-value' error.`);\n }\n return `The '${paramName}' parameter was given a value with an ` +\n `unexpected value. ${validValueDescription} Received a value of ` +\n `${JSON.stringify(value)}.`;\n },\n 'not-an-array': ({ moduleName, className, funcName, paramName }) => {\n if (!moduleName || !className || !funcName || !paramName) {\n throw new Error(`Unexpected input to 'not-an-array' error.`);\n }\n return `The parameter '${paramName}' passed into ` +\n `'${moduleName}.${className}.${funcName}()' must be an array.`;\n },\n 'incorrect-type': ({ expectedType, paramName, moduleName, className, funcName }) => {\n if (!expectedType || !paramName || !moduleName || !funcName) {\n throw new Error(`Unexpected input to 'incorrect-type' error.`);\n }\n return `The parameter '${paramName}' passed into ` +\n `'${moduleName}.${className ? (className + '.') : ''}` +\n `${funcName}()' must be of type ${expectedType}.`;\n },\n 'incorrect-class': ({ expectedClass, paramName, moduleName, className, funcName, isReturnValueProblem }) => {\n if (!expectedClass || !moduleName || !funcName) {\n throw new Error(`Unexpected input to 'incorrect-class' error.`);\n }\n if (isReturnValueProblem) {\n return `The return value from ` +\n `'${moduleName}.${className ? (className + '.') : ''}${funcName}()' ` +\n `must be an instance of class ${expectedClass.name}.`;\n }\n return `The parameter '${paramName}' passed into ` +\n `'${moduleName}.${className ? (className + '.') : ''}${funcName}()' ` +\n `must be an instance of class ${expectedClass.name}.`;\n },\n 'missing-a-method': ({ expectedMethod, paramName, moduleName, className, funcName }) => {\n if (!expectedMethod || !paramName || !moduleName || !className\n || !funcName) {\n throw new Error(`Unexpected input to 'missing-a-method' error.`);\n }\n return `${moduleName}.${className}.${funcName}() expected the ` +\n `'${paramName}' parameter to expose a '${expectedMethod}' method.`;\n },\n 'add-to-cache-list-unexpected-type': ({ entry }) => {\n return `An unexpected entry was passed to ` +\n `'workbox-precaching.PrecacheController.addToCacheList()' The entry ` +\n `'${JSON.stringify(entry)}' isn't supported. You must supply an array of ` +\n `strings with one or more characters, objects with a url property or ` +\n `Request objects.`;\n },\n 'add-to-cache-list-conflicting-entries': ({ firstEntry, secondEntry }) => {\n if (!firstEntry || !secondEntry) {\n throw new Error(`Unexpected input to ` +\n `'add-to-cache-list-duplicate-entries' error.`);\n }\n return `Two of the entries passed to ` +\n `'workbox-precaching.PrecacheController.addToCacheList()' had the URL ` +\n `${firstEntry._entryId} but different revision details. Workbox is ` +\n `unable to cache and version the asset correctly. Please remove one ` +\n `of the entries.`;\n },\n 'plugin-error-request-will-fetch': ({ thrownError }) => {\n if (!thrownError) {\n throw new Error(`Unexpected input to ` +\n `'plugin-error-request-will-fetch', error.`);\n }\n return `An error was thrown by a plugins 'requestWillFetch()' method. ` +\n `The thrown error message was: '${thrownError.message}'.`;\n },\n 'invalid-cache-name': ({ cacheNameId, value }) => {\n if (!cacheNameId) {\n throw new Error(`Expected a 'cacheNameId' for error 'invalid-cache-name'`);\n }\n return `You must provide a name containing at least one character for ` +\n `setCacheDetails({${cacheNameId}: '...'}). Received a value of ` +\n `'${JSON.stringify(value)}'`;\n },\n 'unregister-route-but-not-found-with-method': ({ method }) => {\n if (!method) {\n throw new Error(`Unexpected input to ` +\n `'unregister-route-but-not-found-with-method' error.`);\n }\n return `The route you're trying to unregister was not previously ` +\n `registered for the method type '${method}'.`;\n },\n 'unregister-route-route-not-registered': () => {\n return `The route you're trying to unregister was not previously ` +\n `registered.`;\n },\n 'queue-replay-failed': ({ name }) => {\n return `Replaying the background sync queue '${name}' failed.`;\n },\n 'duplicate-queue-name': ({ name }) => {\n return `The Queue name '${name}' is already being used. ` +\n `All instances of backgroundSync.Queue must be given unique names.`;\n },\n 'expired-test-without-max-age': ({ methodName, paramName }) => {\n return `The '${methodName}()' method can only be used when the ` +\n `'${paramName}' is used in the constructor.`;\n },\n 'unsupported-route-type': ({ moduleName, className, funcName, paramName }) => {\n return `The supplied '${paramName}' parameter was an unsupported type. ` +\n `Please check the docs for ${moduleName}.${className}.${funcName} for ` +\n `valid input types.`;\n },\n 'not-array-of-class': ({ value, expectedClass, moduleName, className, funcName, paramName }) => {\n return `The supplied '${paramName}' parameter must be an array of ` +\n `'${expectedClass}' objects. Received '${JSON.stringify(value)},'. ` +\n `Please check the call to ${moduleName}.${className}.${funcName}() ` +\n `to fix the issue.`;\n },\n 'max-entries-or-age-required': ({ moduleName, className, funcName }) => {\n return `You must define either config.maxEntries or config.maxAgeSeconds` +\n `in ${moduleName}.${className}.${funcName}`;\n },\n 'statuses-or-headers-required': ({ moduleName, className, funcName }) => {\n return `You must define either config.statuses or config.headers` +\n `in ${moduleName}.${className}.${funcName}`;\n },\n 'invalid-string': ({ moduleName, funcName, paramName }) => {\n if (!paramName || !moduleName || !funcName) {\n throw new Error(`Unexpected input to 'invalid-string' error.`);\n }\n return `When using strings, the '${paramName}' parameter must start with ` +\n `'http' (for cross-origin matches) or '/' (for same-origin matches). ` +\n `Please see the docs for ${moduleName}.${funcName}() for ` +\n `more info.`;\n },\n 'channel-name-required': () => {\n return `You must provide a channelName to construct a ` +\n `BroadcastCacheUpdate instance.`;\n },\n 'invalid-responses-are-same-args': () => {\n return `The arguments passed into responsesAreSame() appear to be ` +\n `invalid. Please ensure valid Responses are used.`;\n },\n 'expire-custom-caches-only': () => {\n return `You must provide a 'cacheName' property when using the ` +\n `expiration plugin with a runtime caching strategy.`;\n },\n 'unit-must-be-bytes': ({ normalizedRangeHeader }) => {\n if (!normalizedRangeHeader) {\n throw new Error(`Unexpected input to 'unit-must-be-bytes' error.`);\n }\n return `The 'unit' portion of the Range header must be set to 'bytes'. ` +\n `The Range header provided was \"${normalizedRangeHeader}\"`;\n },\n 'single-range-only': ({ normalizedRangeHeader }) => {\n if (!normalizedRangeHeader) {\n throw new Error(`Unexpected input to 'single-range-only' error.`);\n }\n return `Multiple ranges are not supported. Please use a single start ` +\n `value, and optional end value. The Range header provided was ` +\n `\"${normalizedRangeHeader}\"`;\n },\n 'invalid-range-values': ({ normalizedRangeHeader }) => {\n if (!normalizedRangeHeader) {\n throw new Error(`Unexpected input to 'invalid-range-values' error.`);\n }\n return `The Range header is missing both start and end values. At least ` +\n `one of those values is needed. The Range header provided was ` +\n `\"${normalizedRangeHeader}\"`;\n },\n 'no-range-header': () => {\n return `No Range header was found in the Request provided.`;\n },\n 'range-not-satisfiable': ({ size, start, end }) => {\n return `The start (${start}) and end (${end}) values in the Range are ` +\n `not satisfiable by the cached response, which is ${size} bytes.`;\n },\n 'attempt-to-cache-non-get-request': ({ url, method }) => {\n return `Unable to cache '${url}' because it is a '${method}' request and ` +\n `only 'GET' requests can be cached.`;\n },\n 'cache-put-with-no-response': ({ url }) => {\n return `There was an attempt to cache '${url}' but the response was not ` +\n `defined.`;\n },\n 'no-response': ({ url, error }) => {\n let message = `The strategy could not generate a response for '${url}'.`;\n if (error) {\n message += ` The underlying error is ${error}.`;\n }\n return message;\n },\n 'bad-precaching-response': ({ url, status }) => {\n return `The precaching request for '${url}' failed with an HTTP ` +\n `status of ${status}.`;\n },\n 'non-precached-url': ({ url }) => {\n return `createHandlerBoundToURL('${url}') was called, but that URL is ` +\n `not precached. Please pass in a URL that is precached instead.`;\n },\n 'add-to-cache-list-conflicting-integrities': ({ url }) => {\n return `Two of the entries passed to ` +\n `'workbox-precaching.PrecacheController.addToCacheList()' had the URL ` +\n `${url} with different integrity values. Please remove one of them.`;\n },\n 'missing-precache-entry': ({ cacheName, url }) => {\n return `Unable to find a precached response in ${cacheName} for ${url}.`;\n },\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';\nconst fallback = (code, ...args) => {\n let msg = code;\n if (args.length > 0) {\n msg += ` :: ${JSON.stringify(args)}`;\n }\n return msg;\n};\nconst generatorFunction = (code, details = {}) => {\n const message = messages[code];\n if (!message) {\n throw new Error(`Unable to find message for code '${code}'.`);\n }\n return message(details);\n};\nexport const messageGenerator = (process.env.NODE_ENV === 'production') ?\n fallback : generatorFunction;\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 */\nclass WorkboxError extends Error {\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 constructor(errorCode, details) {\n const message = messageGenerator(errorCode, details);\n super(message);\n this.name = errorCode;\n this.details = details;\n }\n}\nexport { WorkboxError };\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// Callbacks to be executed whenever there's a quota error.\nconst quotaErrorCallbacks = new Set();\nexport { quotaErrorCallbacks };\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 { 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 */\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 quotaErrorCallbacks.add(callback);\n if (process.env.NODE_ENV !== 'production') {\n logger.log('Registered a callback to respond to quota errors.', callback);\n }\n}\nexport { registerQuotaErrorCallback };\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';\nconst _cacheNameDetails = {\n googleAnalytics: 'googleAnalytics',\n precache: 'precache-v2',\n prefix: 'workbox',\n runtime: 'runtime',\n suffix: typeof registration !== 'undefined' ? registration.scope : '',\n};\nconst _createCacheName = (cacheName) => {\n return [_cacheNameDetails.prefix, cacheName, _cacheNameDetails.suffix]\n .filter((value) => value && value.length > 0)\n .join('-');\n};\nconst eachCacheNameDetail = (fn) => {\n for (const key of Object.keys(_cacheNameDetails)) {\n fn(key);\n }\n};\nexport const cacheNames = {\n updateDetails: (details) => {\n eachCacheNameDetail((key) => {\n if (typeof details[key] === 'string') {\n _cacheNameDetails[key] = details[key];\n }\n });\n },\n getGoogleAnalyticsName: (userCacheName) => {\n return userCacheName || _createCacheName(_cacheNameDetails.googleAnalytics);\n },\n getPrecacheName: (userCacheName) => {\n return userCacheName || _createCacheName(_cacheNameDetails.precache);\n },\n getPrefix: () => {\n return _cacheNameDetails.prefix;\n },\n getRuntimeName: (userCacheName) => {\n return userCacheName || _createCacheName(_cacheNameDetails.runtime);\n },\n getSuffix: () => {\n return _cacheNameDetails.suffix;\n },\n};\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}","/*\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 */\nasync function executeQuotaErrorCallbacks() {\n if (process.env.NODE_ENV !== 'production') {\n logger.log(`About to run ${quotaErrorCallbacks.size} ` +\n `callbacks to clean up caches.`);\n }\n for (const callback of quotaErrorCallbacks) {\n await callback();\n if (process.env.NODE_ENV !== 'production') {\n logger.log(callback, 'is complete.');\n }\n }\n if (process.env.NODE_ENV !== 'production') {\n logger.log('Finished running callbacks.');\n }\n}\nexport { executeQuotaErrorCallbacks };\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';\nconst getFriendlyURL = (url) => {\n const urlObj = new URL(String(url), location.href);\n // See https://github.com/GoogleChrome/workbox/issues/2323\n // We want to include everything, except for the origin if it's same-origin.\n return urlObj.href.replace(new RegExp(`^${location.origin}`), '');\n};\nexport { getFriendlyURL };\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';\nlet 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 */\nfunction canConstructResponseFromBodyStream() {\n if (supportStatus === undefined) {\n const testResponse = new Response('');\n if ('body' in testResponse) {\n try {\n new Response(testResponse.body);\n supportStatus = true;\n }\n catch (error) {\n supportStatus = false;\n }\n }\n supportStatus = false;\n }\n return supportStatus;\n}\nexport { canConstructResponseFromBodyStream };\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 const pluginUtils = {\n filter: (plugins, callbackName) => {\n return plugins.filter((plugin) => callbackName in plugin);\n },\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 './assert.js';\nimport { executeQuotaErrorCallbacks } from './executeQuotaErrorCallbacks.js';\nimport { getFriendlyURL } from './getFriendlyURL.js';\nimport { logger } from './logger.js';\nimport { pluginUtils } from '../utils/pluginUtils.js';\nimport { WorkboxError } from './WorkboxError.js';\nimport '../_version.js';\n/**\n * Checks the list of plugins for the cacheKeyWillBeUsed callback, and\n * executes any of those callbacks found in sequence. The final `Request` object\n * returned by the last plugin is treated as the cache key for cache reads\n * and/or writes.\n *\n * @param {Object} options\n * @param {Request} options.request\n * @param {string} options.mode\n * @param {Array} [options.plugins=[]]\n * @return {Promise}\n *\n * @private\n * @memberof module:workbox-core\n */\nconst _getEffectiveRequest = async ({ request, mode, plugins = [], }) => {\n const cacheKeyWillBeUsedPlugins = pluginUtils.filter(plugins, \"cacheKeyWillBeUsed\" /* CACHE_KEY_WILL_BE_USED */);\n let effectiveRequest = request;\n for (const plugin of cacheKeyWillBeUsedPlugins) {\n effectiveRequest = await plugin[\"cacheKeyWillBeUsed\" /* CACHE_KEY_WILL_BE_USED */].call(plugin, { mode, request: effectiveRequest });\n if (typeof effectiveRequest === 'string') {\n effectiveRequest = new Request(effectiveRequest);\n }\n if (process.env.NODE_ENV !== 'production') {\n assert.isInstance(effectiveRequest, Request, {\n moduleName: 'Plugin',\n funcName: \"cacheKeyWillBeUsed\" /* CACHE_KEY_WILL_BE_USED */,\n isReturnValueProblem: true,\n });\n }\n }\n return effectiveRequest;\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 {Object} options\n * @param {Request} options.request\n * @param {Response} options.response\n * @param {Event} [options.event]\n * @param {Array} [options.plugins=[]]\n * @return {Promise}\n *\n * @private\n * @memberof module:workbox-core\n */\nconst _isResponseSafeToCache = async ({ request, response, event, plugins = [], }) => {\n let responseToCache = response;\n let pluginsUsed = false;\n for (const plugin of plugins) {\n if (\"cacheWillUpdate\" /* CACHE_WILL_UPDATE */ in plugin) {\n pluginsUsed = true;\n const pluginMethod = plugin[\"cacheWillUpdate\" /* CACHE_WILL_UPDATE */];\n responseToCache = await pluginMethod.call(plugin, {\n request,\n response: responseToCache,\n event,\n });\n if (process.env.NODE_ENV !== 'production') {\n if (responseToCache) {\n assert.isInstance(responseToCache, Response, {\n moduleName: 'Plugin',\n funcName: \"cacheWillUpdate\" /* CACHE_WILL_UPDATE */,\n isReturnValueProblem: true,\n });\n }\n }\n if (!responseToCache) {\n break;\n }\n }\n }\n if (!pluginsUsed) {\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 '${request.url}' is an opaque ` +\n `response. The caching strategy that you're using will not ` +\n `cache opaque responses by default.`);\n }\n else {\n logger.debug(`The response for '${request.url}' returned ` +\n `a status code of '${response.status}' and won't be cached as a ` +\n `result.`);\n }\n }\n }\n }\n responseToCache = responseToCache && responseToCache.status === 200 ?\n responseToCache : undefined;\n }\n return responseToCache ? responseToCache : null;\n};\n/**\n * This is a wrapper around cache.match().\n *\n * @param {Object} options\n * @param {string} options.cacheName Name of the cache to match against.\n * @param {Request} options.request The Request that will be used to look up\n * cache entries.\n * @param {Event} [options.event] The event that prompted the action.\n * @param {Object} [options.matchOptions] Options passed to cache.match().\n * @param {Array} [options.plugins=[]] Array of plugins.\n * @return {Response} A cached response if available.\n *\n * @private\n * @memberof module:workbox-core\n */\nconst matchWrapper = async ({ cacheName, request, event, matchOptions, plugins = [], }) => {\n const cache = await self.caches.open(cacheName);\n const effectiveRequest = await _getEffectiveRequest({\n plugins, request, mode: 'read'\n });\n let cachedResponse = await cache.match(effectiveRequest, matchOptions);\n if (process.env.NODE_ENV !== 'production') {\n if (cachedResponse) {\n logger.debug(`Found a cached response in '${cacheName}'.`);\n }\n else {\n logger.debug(`No cached response found in '${cacheName}'.`);\n }\n }\n for (const plugin of plugins) {\n if (\"cachedResponseWillBeUsed\" /* CACHED_RESPONSE_WILL_BE_USED */ in plugin) {\n const pluginMethod = plugin[\"cachedResponseWillBeUsed\" /* CACHED_RESPONSE_WILL_BE_USED */];\n cachedResponse = await pluginMethod.call(plugin, {\n cacheName,\n event,\n matchOptions,\n cachedResponse,\n request: effectiveRequest,\n });\n if (process.env.NODE_ENV !== 'production') {\n if (cachedResponse) {\n assert.isInstance(cachedResponse, Response, {\n moduleName: 'Plugin',\n funcName: \"cachedResponseWillBeUsed\" /* CACHED_RESPONSE_WILL_BE_USED */,\n isReturnValueProblem: true,\n });\n }\n }\n }\n }\n return cachedResponse;\n};\n/**\n * Wrapper around cache.put().\n *\n * Will call `cacheDidUpdate` on plugins if the cache was updated, using\n * `matchOptions` when determining what the old entry is.\n *\n * @param {Object} options\n * @param {string} options.cacheName\n * @param {Request} options.request\n * @param {Response} options.response\n * @param {Event} [options.event]\n * @param {Array} [options.plugins=[]]\n * @param {Object} [options.matchOptions]\n *\n * @private\n * @memberof module:workbox-core\n */\nconst putWrapper = async ({ cacheName, request, response, event, plugins = [], matchOptions, }) => {\n if (process.env.NODE_ENV !== 'production') {\n if (request.method && request.method !== 'GET') {\n throw new WorkboxError('attempt-to-cache-non-get-request', {\n url: getFriendlyURL(request.url),\n method: request.method,\n });\n }\n }\n const effectiveRequest = await _getEffectiveRequest({\n plugins, request, mode: 'write'\n });\n if (!response) {\n if (process.env.NODE_ENV !== 'production') {\n logger.error(`Cannot cache non-existent response for ` +\n `'${getFriendlyURL(effectiveRequest.url)}'.`);\n }\n throw new WorkboxError('cache-put-with-no-response', {\n url: getFriendlyURL(effectiveRequest.url),\n });\n }\n const responseToCache = await _isResponseSafeToCache({\n event,\n plugins,\n response,\n request: effectiveRequest,\n });\n if (!responseToCache) {\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Response '${getFriendlyURL(effectiveRequest.url)}' will ` +\n `not be cached.`, responseToCache);\n }\n return;\n }\n const cache = await self.caches.open(cacheName);\n const updatePlugins = pluginUtils.filter(plugins, \"cacheDidUpdate\" /* CACHE_DID_UPDATE */);\n const oldResponse = updatePlugins.length > 0 ?\n await matchWrapper({ cacheName, matchOptions, request: effectiveRequest }) :\n null;\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Updating the '${cacheName}' cache with a new Response for ` +\n `${getFriendlyURL(effectiveRequest.url)}.`);\n }\n try {\n await cache.put(effectiveRequest, responseToCache);\n }\n catch (error) {\n // See https://developer.mozilla.org/en-US/docs/Web/API/DOMException#exception-QuotaExceededError\n if (error.name === 'QuotaExceededError') {\n await executeQuotaErrorCallbacks();\n }\n throw error;\n }\n for (const plugin of updatePlugins) {\n await plugin[\"cacheDidUpdate\" /* CACHE_DID_UPDATE */].call(plugin, {\n cacheName,\n event,\n oldResponse,\n newResponse: responseToCache,\n request: effectiveRequest,\n });\n }\n};\nexport const cacheWrapper = {\n put: putWrapper,\n match: matchWrapper,\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';\n/**\n * A helper function that prevents a promise from being flagged as unused.\n *\n * @private\n **/\nexport function dontWaitFor(promise) {\n // Effective no-op.\n promise.then(() => { });\n}\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}","/*\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 */\nexport class DBWrapper {\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 constructor(name, version, { onupgradeneeded, onversionchange, } = {}) {\n this._db = null;\n this._name = name;\n this._version = version;\n this._onupgradeneeded = onupgradeneeded;\n this._onversionchange = onversionchange || (() => this.close());\n }\n /**\n * Returns the IDBDatabase instance (not normally needed).\n * @return {IDBDatabase|undefined}\n *\n * @private\n */\n get db() {\n return this._db;\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 async open() {\n if (this._db)\n return;\n this._db = await new Promise((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 let openRequestTimedOut = false;\n setTimeout(() => {\n openRequestTimedOut = true;\n reject(new Error('The open request was blocked and timed out'));\n }, this.OPEN_TIMEOUT);\n const openRequest = indexedDB.open(this._name, this._version);\n openRequest.onerror = () => reject(openRequest.error);\n openRequest.onupgradeneeded = (evt) => {\n if (openRequestTimedOut) {\n openRequest.transaction.abort();\n openRequest.result.close();\n }\n else if (typeof this._onupgradeneeded === 'function') {\n this._onupgradeneeded(evt);\n }\n };\n openRequest.onsuccess = () => {\n const db = openRequest.result;\n if (openRequestTimedOut) {\n db.close();\n }\n else {\n db.onversionchange = this._onversionchange.bind(this);\n resolve(db);\n }\n };\n });\n return this;\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 async getKey(storeName, query) {\n return (await this.getAllKeys(storeName, query, 1))[0];\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 async getAll(storeName, query, count) {\n return await this.getAllMatching(storeName, { query, count });\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 async getAllKeys(storeName, query, count) {\n const entries = await this.getAllMatching(storeName, { query, count, includeKeys: true });\n return entries.map((entry) => entry.key);\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 async getAllMatching(storeName, { index, query = null, // IE/Edge errors if query === `undefined`.\n direction = 'next', count, includeKeys = false, } = {}) {\n return await this.transaction([storeName], 'readonly', (txn, done) => {\n const store = txn.objectStore(storeName);\n const target = index ? store.index(index) : store;\n const results = [];\n const request = target.openCursor(query, direction);\n request.onsuccess = () => {\n const cursor = request.result;\n if (cursor) {\n results.push(includeKeys ? cursor : cursor.value);\n if (count && results.length >= count) {\n done(results);\n }\n else {\n cursor.continue();\n }\n }\n else {\n done(results);\n }\n };\n });\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} 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 async transaction(storeNames, type, callback) {\n await this.open();\n return await new Promise((resolve, reject) => {\n const txn = this._db.transaction(storeNames, type);\n txn.onabort = () => reject(txn.error);\n txn.oncomplete = () => resolve();\n callback(txn, (value) => resolve(value));\n });\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 async _call(method, storeName, type, ...args) {\n const callback = (txn, done) => {\n const objStore = txn.objectStore(storeName);\n // TODO(philipwalton): Fix this underlying TS2684 error.\n // @ts-ignore\n const request = objStore[method].apply(objStore, args);\n request.onsuccess = () => done(request.result);\n };\n return await this.transaction([storeName], type, callback);\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 close() {\n if (this._db) {\n this._db.close();\n this._db = null;\n }\n }\n}\n// Exposed on the prototype to let users modify the default timeout on a\n// per-instance or global basis.\nDBWrapper.prototype.OPEN_TIMEOUT = 2000;\n// Wrap native IDBObjectStore methods according to their mode.\nconst methodsToWrap = {\n readonly: ['get', 'count', 'getKey', 'getAll', 'getAllKeys'],\n readwrite: ['add', 'put', 'clear', 'delete'],\n};\nfor (const [mode, methods] of Object.entries(methodsToWrap)) {\n for (const method of methods) {\n if (method in IDBObjectStore.prototype) {\n // Don't use arrow functions here since we're outside of the class.\n DBWrapper.prototype[method] =\n async function (storeName, ...args) {\n return await this._call(method, storeName, mode, ...args);\n };\n }\n }\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 */\nexport const deleteDatabase = async (name) => {\n await new Promise((resolve, reject) => {\n const request = indexedDB.deleteDatabase(name);\n request.onerror = () => {\n reject(request.error);\n };\n request.onblocked = () => {\n reject(new Error('Delete blocked'));\n };\n request.onsuccess = () => {\n resolve();\n };\n });\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 { WorkboxError } from './WorkboxError.js';\nimport { logger } from './logger.js';\nimport { assert } from './assert.js';\nimport { getFriendlyURL } from '../_private/getFriendlyURL.js';\nimport { pluginUtils } from '../utils/pluginUtils.js';\nimport '../_version.js';\n/**\n * Wrapper around the fetch API.\n *\n * Will call requestWillFetch on available plugins.\n *\n * @param {Object} options\n * @param {Request|string} options.request\n * @param {Object} [options.fetchOptions]\n * @param {ExtendableEvent} [options.event]\n * @param {Array} [options.plugins=[]]\n * @return {Promise}\n *\n * @private\n * @memberof module:workbox-core\n */\nconst wrappedFetch = async ({ request, fetchOptions, event, plugins = [], }) => {\n if (typeof request === 'string') {\n request = new Request(request);\n }\n // We *should* be able to call `await event.preloadResponse` even if it's\n // undefined, but for some reason, doing so leads to errors in our Node unit\n // tests. To work around that, explicitly check preloadResponse's value first.\n if (event instanceof FetchEvent && event.preloadResponse) {\n const possiblePreloadResponse = await event.preloadResponse;\n if (possiblePreloadResponse) {\n if (process.env.NODE_ENV !== 'production') {\n logger.log(`Using a preloaded navigation response for ` +\n `'${getFriendlyURL(request.url)}'`);\n }\n return possiblePreloadResponse;\n }\n }\n if (process.env.NODE_ENV !== 'production') {\n assert.isInstance(request, Request, {\n paramName: 'request',\n expectedClass: Request,\n moduleName: 'workbox-core',\n className: 'fetchWrapper',\n funcName: 'wrappedFetch',\n });\n }\n const failedFetchPlugins = pluginUtils.filter(plugins, \"fetchDidFail\" /* FETCH_DID_FAIL */);\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 const originalRequest = failedFetchPlugins.length > 0 ?\n request.clone() : null;\n try {\n for (const plugin of plugins) {\n if (\"requestWillFetch\" /* REQUEST_WILL_FETCH */ in plugin) {\n const pluginMethod = plugin[\"requestWillFetch\" /* REQUEST_WILL_FETCH */];\n const requestClone = request.clone();\n request = await pluginMethod.call(plugin, {\n request: requestClone,\n event,\n });\n if (process.env.NODE_ENV !== 'production') {\n if (request) {\n assert.isInstance(request, Request, {\n moduleName: 'Plugin',\n funcName: \"cachedResponseWillBeUsed\" /* CACHED_RESPONSE_WILL_BE_USED */,\n isReturnValueProblem: true,\n });\n }\n }\n }\n }\n }\n catch (err) {\n throw new WorkboxError('plugin-error-request-will-fetch', {\n thrownError: err,\n });\n }\n // The request can be altered by plugins with `requestWillFetch` making\n // the original request (Most likely from a `fetch` event) to be different\n // to the Request we make. Pass both to `fetchDidFail` to aid debugging.\n const pluginFilteredRequest = request.clone();\n try {\n let fetchResponse;\n // See https://github.com/GoogleChrome/workbox/issues/1796\n if (request.mode === 'navigate') {\n fetchResponse = await fetch(request);\n }\n else {\n fetchResponse = await fetch(request, fetchOptions);\n }\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Network request for ` +\n `'${getFriendlyURL(request.url)}' returned a response with ` +\n `status '${fetchResponse.status}'.`);\n }\n for (const plugin of plugins) {\n if (\"fetchDidSucceed\" /* FETCH_DID_SUCCEED */ in plugin) {\n fetchResponse = await plugin[\"fetchDidSucceed\" /* FETCH_DID_SUCCEED */]\n .call(plugin, {\n event,\n request: pluginFilteredRequest,\n response: fetchResponse,\n });\n if (process.env.NODE_ENV !== 'production') {\n if (fetchResponse) {\n assert.isInstance(fetchResponse, Response, {\n moduleName: 'Plugin',\n funcName: \"fetchDidSucceed\" /* FETCH_DID_SUCCEED */,\n isReturnValueProblem: true,\n });\n }\n }\n }\n }\n return fetchResponse;\n }\n catch (error) {\n if (process.env.NODE_ENV !== 'production') {\n logger.error(`Network request for ` +\n `'${getFriendlyURL(request.url)}' threw an error.`, error);\n }\n for (const plugin of failedFetchPlugins) {\n await plugin[\"fetchDidFail\" /* FETCH_DID_FAIL */].call(plugin, {\n error,\n event,\n originalRequest: originalRequest.clone(),\n request: pluginFilteredRequest.clone(),\n });\n }\n throw error;\n }\n};\nconst fetchWrapper = {\n fetch: wrappedFetch,\n};\nexport { fetchWrapper };\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 './_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 * @param {Response} response\n * @param {Function} modifier\n * @memberof module:workbox-core\n */\nasync function copyResponse(response, modifier) {\n const clonedResponse = response.clone();\n // Create a fresh `ResponseInit` object by cloning the headers.\n const responseInit = {\n headers: new Headers(clonedResponse.headers),\n status: clonedResponse.status,\n statusText: clonedResponse.statusText,\n };\n // Apply any user modifications.\n const modifiedResponseInit = modifier ? modifier(responseInit) : responseInit;\n // 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 const body = canConstructResponseFromBodyStream() ?\n clonedResponse.body : await clonedResponse.blob();\n return new Response(body, modifiedResponseInit);\n}\nexport { copyResponse };\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';\nconst DB_NAME = 'workbox-expiration';\nconst OBJECT_STORE_NAME = 'cache-entries';\nconst normalizeURL = (unNormalizedUrl) => {\n const url = new URL(unNormalizedUrl, location.href);\n url.hash = '';\n return url.href;\n};\n/**\n * Returns the timestamp model.\n *\n * @private\n */\nclass CacheTimestampsModel {\n /**\n *\n * @param {string} cacheName\n *\n * @private\n */\n constructor(cacheName) {\n this._cacheName = cacheName;\n this._db = new DBWrapper(DB_NAME, 1, {\n onupgradeneeded: (event) => this._handleUpgrade(event),\n });\n }\n /**\n * Should perform an upgrade of indexedDB.\n *\n * @param {Event} event\n *\n * @private\n */\n _handleUpgrade(event) {\n const db = event.target.result;\n // 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 const objStore = db.createObjectStore(OBJECT_STORE_NAME, { 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 objStore.createIndex('cacheName', 'cacheName', { unique: false });\n objStore.createIndex('timestamp', 'timestamp', { unique: false });\n // Previous versions of `workbox-expiration` used `this._cacheName`\n // as the IDBDatabase name.\n deleteDatabase(this._cacheName);\n }\n /**\n * @param {string} url\n * @param {number} timestamp\n *\n * @private\n */\n async setTimestamp(url, timestamp) {\n url = normalizeURL(url);\n const entry = {\n url,\n 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 await this._db.put(OBJECT_STORE_NAME, entry);\n }\n /**\n * Returns the timestamp stored for a given URL.\n *\n * @param {string} url\n * @return {number}\n *\n * @private\n */\n async getTimestamp(url) {\n const entry = await this._db.get(OBJECT_STORE_NAME, this._getId(url));\n return entry.timestamp;\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}\n *\n * @private\n */\n async expireEntries(minTimestamp, maxCount) {\n const entriesToDelete = await this._db.transaction(OBJECT_STORE_NAME, 'readwrite', (txn, done) => {\n const store = txn.objectStore(OBJECT_STORE_NAME);\n const request = store.index('timestamp').openCursor(null, 'prev');\n const entriesToDelete = [];\n let entriesNotDeletedCount = 0;\n request.onsuccess = () => {\n const cursor = request.result;\n if (cursor) {\n const result = cursor.value;\n // TODO(philipwalton): once we can use a multi-key index, we\n // won't have to check `cacheName` here.\n if (result.cacheName === this._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) ||\n (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 }\n else {\n entriesNotDeletedCount++;\n }\n }\n cursor.continue();\n }\n else {\n done(entriesToDelete);\n }\n };\n });\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 const urlsDeleted = [];\n for (const entry of entriesToDelete) {\n await this._db.delete(OBJECT_STORE_NAME, entry.id);\n urlsDeleted.push(entry.url);\n }\n return urlsDeleted;\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 _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}\nexport { CacheTimestampsModel };\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 */\nclass CacheExpiration {\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 */\n constructor(cacheName, config = {}) {\n this._isRunning = false;\n this._rerunRequested = false;\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 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 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 // TODO: Assert is positive\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 // TODO: Assert is positive\n }\n }\n this._maxEntries = config.maxEntries;\n this._maxAgeSeconds = config.maxAgeSeconds;\n this._cacheName = cacheName;\n this._timestampModel = new CacheTimestampsModel(cacheName);\n }\n /**\n * Expires entries for the given cache and given criteria.\n */\n async expireEntries() {\n if (this._isRunning) {\n this._rerunRequested = true;\n return;\n }\n this._isRunning = true;\n const minTimestamp = this._maxAgeSeconds ?\n Date.now() - (this._maxAgeSeconds * 1000) : 0;\n const urlsExpired = await this._timestampModel.expireEntries(minTimestamp, this._maxEntries);\n // Delete URLs from the cache\n const cache = await self.caches.open(this._cacheName);\n for (const url of urlsExpired) {\n await cache.delete(url);\n }\n if (process.env.NODE_ENV !== 'production') {\n if (urlsExpired.length > 0) {\n logger.groupCollapsed(`Expired ${urlsExpired.length} ` +\n `${urlsExpired.length === 1 ? 'entry' : 'entries'} and removed ` +\n `${urlsExpired.length === 1 ? 'it' : 'them'} from the ` +\n `'${this._cacheName}' cache.`);\n logger.log(`Expired the following ${urlsExpired.length === 1 ?\n 'URL' : 'URLs'}:`);\n urlsExpired.forEach((url) => logger.log(` ${url}`));\n logger.groupEnd();\n }\n else {\n logger.debug(`Cache expiration ran and found no entries to remove.`);\n }\n }\n this._isRunning = false;\n if (this._rerunRequested) {\n this._rerunRequested = false;\n dontWaitFor(this.expireEntries());\n }\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 async updateTimestamp(url) {\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 await this._timestampModel.setTimestamp(url, Date.now());\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 async isURLExpired(url) {\n if (!this._maxAgeSeconds) {\n if (process.env.NODE_ENV !== 'production') {\n throw new WorkboxError(`expired-test-without-max-age`, {\n methodName: 'isURLExpired',\n paramName: 'maxAgeSeconds',\n });\n }\n return false;\n }\n else {\n const timestamp = await this._timestampModel.getTimestamp(url);\n const expireOlderThan = Date.now() - (this._maxAgeSeconds * 1000);\n return (timestamp < expireOlderThan);\n }\n }\n /**\n * Removes the IndexedDB object store used to keep track of cache expiration\n * metadata.\n */\n async delete() {\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 await this._timestampModel.expireEntries(Infinity); // Expires all.\n }\n}\nexport { CacheExpiration };\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 the Workbox APIs to regularly enforce a\n * limit on the age and / or the number of cached requests.\n *\n * Whenever a cached request is used or updated, this plugin will look\n * at the used 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 */\nclass ExpirationPlugin {\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 {boolean} [config.purgeOnQuotaError] Whether to opt this cache in to\n * automatic deletion if the available storage quota has been exceeded.\n */\n constructor(config = {}) {\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 = async ({ event, request, cacheName, cachedResponse }) => {\n if (!cachedResponse) {\n return null;\n }\n const isFresh = this._isResponseDateFresh(cachedResponse);\n // Expire entries to ensure that even if the expiration date has\n // expired, it'll only be used once.\n const cacheExpiration = this._getCacheExpiration(cacheName);\n dontWaitFor(cacheExpiration.expireEntries());\n // 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 const updateTimestampDone = cacheExpiration.updateTimestamp(request.url);\n if (event) {\n try {\n event.waitUntil(updateTimestampDone);\n }\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 ` +\n `updating cache entry for ` +\n `'${getFriendlyURL(event.request.url)}'.`);\n }\n }\n }\n }\n return isFresh ? cachedResponse : null;\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 this.cacheDidUpdate = async ({ cacheName, request }) => {\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 const cacheExpiration = this._getCacheExpiration(cacheName);\n await cacheExpiration.updateTimestamp(request.url);\n await cacheExpiration.expireEntries();\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 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 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 this._config = config;\n this._maxAgeSeconds = config.maxAgeSeconds;\n this._cacheExpirations = new Map();\n if (config.purgeOnQuotaError) {\n registerQuotaErrorCallback(() => this.deleteCacheAndMetadata());\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 _getCacheExpiration(cacheName) {\n if (cacheName === cacheNames.getRuntimeName()) {\n throw new WorkboxError('expire-custom-caches-only');\n }\n let cacheExpiration = this._cacheExpirations.get(cacheName);\n if (!cacheExpiration) {\n cacheExpiration = new CacheExpiration(cacheName, this._config);\n this._cacheExpirations.set(cacheName, cacheExpiration);\n }\n return cacheExpiration;\n }\n /**\n * @param {Response} cachedResponse\n * @return {boolean}\n *\n * @private\n */\n _isResponseDateFresh(cachedResponse) {\n if (!this._maxAgeSeconds) {\n // We aren't expiring by age, so return true, it's fresh\n return true;\n }\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 const dateHeaderTimestamp = this._getDateHeaderTimestamp(cachedResponse);\n if (dateHeaderTimestamp === null) {\n // Unable to parse date, so assume it's fresh.\n return true;\n }\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 const 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 _getDateHeaderTimestamp(cachedResponse) {\n if (!cachedResponse.headers.has('date')) {\n return null;\n }\n const dateHeader = cachedResponse.headers.get('date');\n const parsedDate = new Date(dateHeader);\n const headerTime = parsedDate.getTime();\n // If the Date header was invalid for some reason, parsedDate.getTime()\n // will return NaN.\n if (isNaN(headerTime)) {\n return null;\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 async deleteCacheAndMetadata() {\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 for (const [cacheName, cacheExpiration] of this._cacheExpirations) {\n await self.caches.delete(cacheName);\n await cacheExpiration.delete();\n }\n // Reset this._cacheExpirations to its initial state.\n this._cacheExpirations = new Map();\n }\n}\nexport { ExpirationPlugin };\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';\nconst plugins = [];\nexport const precachePlugins = {\n /*\n * @return {Array}\n * @private\n */\n get() {\n return plugins;\n },\n /*\n * @param {Array} newPlugins\n * @private\n */\n add(newPlugins) {\n plugins.push(...newPlugins);\n },\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 { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport '../_version.js';\n// Name of the search parameter used to store revision info.\nconst 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 */\nexport function createCacheKey(entry) {\n if (!entry) {\n throw new WorkboxError('add-to-cache-list-unexpected-type', { 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 if (typeof entry === 'string') {\n const urlObject = new URL(entry, location.href);\n return {\n cacheKey: urlObject.href,\n url: urlObject.href,\n };\n }\n const { revision, url } = entry;\n if (!url) {\n throw new WorkboxError('add-to-cache-list-unexpected-type', { entry });\n }\n // If there's just a URL and no revision, then it's also assumed to be a\n // versioned URL.\n if (!revision) {\n const urlObject = new URL(url, location.href);\n return {\n cacheKey: urlObject.href,\n url: urlObject.href,\n };\n }\n // Otherwise, construct a properly versioned URL using the custom Workbox\n // search parameter along with the revision info.\n const cacheKeyURL = new URL(url, location.href);\n const 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}\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 { PrecacheController } from '../PrecacheController.js';\nimport '../_version.js';\nlet precacheController;\n/**\n * @return {PrecacheController}\n * @private\n */\nexport const getOrCreatePrecacheController = () => {\n if (!precacheController) {\n precacheController = new PrecacheController();\n }\n return precacheController;\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 { cacheWrapper } from 'workbox-core/_private/cacheWrapper.js';\nimport { fetchWrapper } from 'workbox-core/_private/fetchWrapper.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport { copyResponse } from 'workbox-core/copyResponse.js';\nimport { createCacheKey } from './utils/createCacheKey.js';\nimport { printCleanupDetails } from './utils/printCleanupDetails.js';\nimport { printInstallDetails } from './utils/printInstallDetails.js';\nimport './_version.js';\n/**\n * Performs efficient precaching of assets.\n *\n * @memberof module:workbox-precaching\n */\nclass PrecacheController {\n /**\n * Create a new PrecacheController.\n *\n * @param {string} [cacheName] An optional name for the cache, to override\n * the default precache name.\n */\n constructor(cacheName) {\n this._cacheName = cacheNames.getPrecacheName(cacheName);\n this._urlsToCacheKeys = new Map();\n this._urlsToCacheModes = new Map();\n this._cacheKeysToIntegrities = new Map();\n }\n /**\n * This method will add items to the precache list, removing duplicates\n * and ensuring the information is valid.\n *\n * @param {\n * Array\n * } entries Array of entries to precache.\n */\n 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 const urlsToWarnAbout = [];\n for (const entry of entries) {\n // See https://github.com/GoogleChrome/workbox/issues/2259\n if (typeof entry === 'string') {\n urlsToWarnAbout.push(entry);\n }\n else if (entry && entry.revision === undefined) {\n urlsToWarnAbout.push(entry.url);\n }\n const { cacheKey, url } = createCacheKey(entry);\n const cacheMode = (typeof entry !== 'string' && entry.revision) ?\n 'reload' : 'default';\n if (this._urlsToCacheKeys.has(url) &&\n 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 if (typeof entry !== 'string' && entry.integrity) {\n if (this._cacheKeysToIntegrities.has(cacheKey) &&\n this._cacheKeysToIntegrities.get(cacheKey) !== entry.integrity) {\n throw new WorkboxError('add-to-cache-list-conflicting-integrities', {\n url,\n });\n }\n this._cacheKeysToIntegrities.set(cacheKey, entry.integrity);\n }\n this._urlsToCacheKeys.set(url, cacheKey);\n this._urlsToCacheModes.set(url, cacheMode);\n if (urlsToWarnAbout.length > 0) {\n const warningMessage = `Workbox is precaching URLs without revision ` +\n `info: ${urlsToWarnAbout.join(', ')}\\nThis is generally NOT safe. ` +\n `Learn more at https://bit.ly/wb-precache`;\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 }\n else {\n logger.warn(warningMessage);\n }\n }\n }\n }\n /**\n * Precaches new and updated assets. Call this method from the service worker\n * install event.\n *\n * @param {Object} options\n * @param {Event} [options.event] The install event (if needed).\n * @param {Array} [options.plugins] Plugins to be used for fetching\n * and caching during install.\n * @return {Promise}\n */\n async install({ event, plugins } = {}) {\n if (process.env.NODE_ENV !== 'production') {\n if (plugins) {\n assert.isArray(plugins, {\n moduleName: 'workbox-precaching',\n className: 'PrecacheController',\n funcName: 'install',\n paramName: 'plugins',\n });\n }\n }\n const toBePrecached = [];\n const alreadyPrecached = [];\n const cache = await self.caches.open(this._cacheName);\n const alreadyCachedRequests = await cache.keys();\n const existingCacheKeys = new Set(alreadyCachedRequests.map((request) => request.url));\n for (const [url, cacheKey] of this._urlsToCacheKeys) {\n if (existingCacheKeys.has(cacheKey)) {\n alreadyPrecached.push(url);\n }\n else {\n toBePrecached.push({ cacheKey, url });\n }\n }\n const precacheRequests = toBePrecached.map(({ cacheKey, url }) => {\n const integrity = this._cacheKeysToIntegrities.get(cacheKey);\n const cacheMode = this._urlsToCacheModes.get(url);\n return this._addURLToCache({\n cacheKey,\n cacheMode,\n event,\n integrity,\n plugins,\n url,\n });\n });\n await Promise.all(precacheRequests);\n const updatedURLs = toBePrecached.map((item) => item.url);\n if (process.env.NODE_ENV !== 'production') {\n printInstallDetails(updatedURLs, alreadyPrecached);\n }\n return {\n updatedURLs,\n notUpdatedURLs: alreadyPrecached,\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 * @return {Promise}\n */\n async activate() {\n const cache = await self.caches.open(this._cacheName);\n const currentlyCachedRequests = await cache.keys();\n const expectedCacheKeys = new Set(this._urlsToCacheKeys.values());\n const deletedURLs = [];\n for (const request of currentlyCachedRequests) {\n if (!expectedCacheKeys.has(request.url)) {\n await cache.delete(request);\n deletedURLs.push(request.url);\n }\n }\n if (process.env.NODE_ENV !== 'production') {\n printCleanupDetails(deletedURLs);\n }\n return { deletedURLs };\n }\n /**\n * Requests the entry and saves it to the cache if the response is valid.\n * By default, any response with a status code of less than 400 (including\n * opaque responses) is considered valid.\n *\n * If you need to use custom criteria to determine what's valid and what\n * isn't, then pass in an item in `options.plugins` that implements the\n * `cacheWillUpdate()` lifecycle event.\n *\n * @private\n * @param {Object} options\n * @param {string} options.cacheKey The string to use a cache key.\n * @param {string} options.url The URL to fetch and cache.\n * @param {string} [options.cacheMode] The cache mode for the network request.\n * @param {Event} [options.event] The install event (if passed).\n * @param {Array} [options.plugins] An array of plugins to apply to\n * fetch and caching.\n * @param {string} [options.integrity] The value to use for the `integrity`\n * field when making the request.\n */\n async _addURLToCache({ cacheKey, url, cacheMode, event, plugins, integrity }) {\n const request = new Request(url, {\n integrity,\n cache: cacheMode,\n credentials: 'same-origin',\n });\n let response = await fetchWrapper.fetch({\n event,\n plugins,\n request,\n });\n // Allow developers to override the default logic about what is and isn't\n // valid by passing in a plugin implementing cacheWillUpdate(), e.g.\n // a `CacheableResponsePlugin` instance.\n let cacheWillUpdatePlugin;\n for (const plugin of (plugins || [])) {\n if ('cacheWillUpdate' in plugin) {\n cacheWillUpdatePlugin = plugin;\n }\n }\n const isValidResponse = cacheWillUpdatePlugin ?\n // Use a callback if provided. It returns a truthy value if valid.\n // NOTE: invoke the method on the plugin instance so the `this` context\n // is correct.\n await cacheWillUpdatePlugin.cacheWillUpdate({ event, request, response }) :\n // Otherwise, default to considering any response status under 400 valid.\n // This includes, by default, considering opaque responses valid.\n response.status < 400;\n // Consider this a failure, leading to the `install` handler failing, if\n // we get back an invalid response.\n if (!isValidResponse) {\n throw new WorkboxError('bad-precaching-response', {\n url,\n status: response.status,\n });\n }\n // 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 if (response.redirected) {\n response = await copyResponse(response);\n }\n await cacheWrapper.put({\n event,\n plugins,\n response,\n // `request` already uses `url`. We may be able to reuse it.\n request: cacheKey === url ? request : new Request(cacheKey),\n cacheName: this._cacheName,\n matchOptions: {\n ignoreSearch: true,\n },\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} A URL to cache key mapping.\n */\n 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} The precached URLs.\n */\n getCachedURLs() {\n return [...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 getCacheKeyForURL(url) {\n const urlObject = new URL(url, location.href);\n return this._urlsToCacheKeys.get(urlObject.href);\n }\n /**\n * This acts as a drop-in replacement for [`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}\n */\n async matchPrecache(request) {\n const url = request instanceof Request ? request.url : request;\n const cacheKey = this.getCacheKeyForURL(url);\n if (cacheKey) {\n const cache = await self.caches.open(this._cacheName);\n return cache.match(cacheKey);\n }\n return undefined;\n }\n /**\n * Returns a function that can be used within a\n * {@link module:workbox-routing.Route} that will find a response for the\n * incoming request against the precache.\n *\n * If for an unexpected reason there is a cache miss for the request,\n * this will fall back to retrieving the `Response` via `fetch()` when\n * `fallbackToNetwork` is `true`.\n *\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 createHandler(fallbackToNetwork = true) {\n return async ({ request }) => {\n try {\n const response = await this.matchPrecache(request);\n if (response) {\n return response;\n }\n // This shouldn't normally happen, but there are edge cases:\n // https://github.com/GoogleChrome/workbox/issues/1441\n throw new WorkboxError('missing-precache-entry', {\n cacheName: this._cacheName,\n url: request instanceof Request ? request.url : request,\n });\n }\n catch (error) {\n if (fallbackToNetwork) {\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Unable to respond with precached response. ` +\n `Falling back to network.`, error);\n }\n return fetch(request);\n }\n throw error;\n }\n };\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 * If for an unexpected reason there is a cache miss when looking up `url`,\n * this will fall back to retrieving the `Response` via `fetch()` when\n * `fallbackToNetwork` is `true`.\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 createHandlerBoundToURL(url, fallbackToNetwork = true) {\n const cacheKey = this.getCacheKeyForURL(url);\n if (!cacheKey) {\n throw new WorkboxError('non-precached-url', { url });\n }\n const handler = this.createHandler(fallbackToNetwork);\n const request = new Request(url);\n return () => handler({ request });\n }\n}\nexport { PrecacheController };\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} 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 */\nexport function removeIgnoredSearchParams(urlObject, ignoreURLParametersMatching = []) {\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 (const paramName of [...urlObject.searchParams.keys()]) {\n if (ignoreURLParametersMatching.some((regExp) => regExp.test(paramName))) {\n urlObject.searchParams.delete(paramName);\n }\n }\n return urlObject;\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 */\nexport function* generateURLVariations(url, { ignoreURLParametersMatching, directoryIndex, cleanURLs, urlManipulation, } = {}) {\n const urlObject = new URL(url, location.href);\n urlObject.hash = '';\n yield urlObject.href;\n const urlWithoutIgnoredParams = removeIgnoredSearchParams(urlObject, ignoreURLParametersMatching);\n yield urlWithoutIgnoredParams.href;\n if (directoryIndex && urlWithoutIgnoredParams.pathname.endsWith('/')) {\n const directoryURL = new URL(urlWithoutIgnoredParams.href);\n directoryURL.pathname += directoryIndex;\n yield directoryURL.href;\n }\n if (cleanURLs) {\n const cleanURL = new URL(urlWithoutIgnoredParams.href);\n cleanURL.pathname += '.html';\n yield cleanURL.href;\n }\n if (urlManipulation) {\n const additionalURLs = urlManipulation({ url: urlObject });\n for (const urlToAttempt of additionalURLs) {\n yield urlToAttempt.href;\n }\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 { getOrCreatePrecacheController } from './getOrCreatePrecacheController.js';\nimport { generateURLVariations } from './generateURLVariations.js';\nimport '../_version.js';\n/**\n * This function will take the request URL and manipulate it based on the\n * configuration options.\n *\n * @param {string} url\n * @param {Object} options\n * @return {string} Returns the URL in the cache that matches the request,\n * if possible.\n *\n * @private\n */\nexport const getCacheKeyForURL = (url, options) => {\n const precacheController = getOrCreatePrecacheController();\n const urlsToCacheKeys = precacheController.getURLsToCacheKeys();\n for (const possibleURL of generateURLVariations(url, options)) {\n const possibleCacheKey = urlsToCacheKeys.get(possibleURL);\n if (possibleCacheKey) {\n return possibleCacheKey;\n }\n }\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 { addFetchListener } from './utils/addFetchListener.js';\nimport './_version.js';\nlet listenerAdded = false;\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]\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} [options.ignoreURLParametersMatching=[/^utm_/]] 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 * @memberof module:workbox-precaching\n */\nfunction addRoute(options) {\n if (!listenerAdded) {\n addFetchListener(options);\n listenerAdded = true;\n }\n}\nexport { addRoute };\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 { cacheNames } from 'workbox-core/_private/cacheNames.js';\nimport { getFriendlyURL } from 'workbox-core/_private/getFriendlyURL.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { getCacheKeyForURL } from './getCacheKeyForURL.js';\nimport '../_version.js';\n/**\n * Adds 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 * NOTE: when called more than once this method will replace the previously set\n * configuration options. Calling it more than once is not recommended outside\n * of tests.\n *\n * @private\n * @param {Object} [options]\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} [options.ignoreURLParametersMatching=[/^utm_/]] 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 {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 */\nexport const addFetchListener = ({ ignoreURLParametersMatching = [/^utm_/], directoryIndex = 'index.html', cleanURLs = true, urlManipulation, } = {}) => {\n const cacheName = cacheNames.getPrecacheName();\n // See https://github.com/Microsoft/TypeScript/issues/28357#issuecomment-436484705\n self.addEventListener('fetch', ((event) => {\n const precachedURL = getCacheKeyForURL(event.request.url, {\n cleanURLs,\n directoryIndex,\n ignoreURLParametersMatching,\n urlManipulation,\n });\n if (!precachedURL) {\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Precaching did not find a match for ` +\n getFriendlyURL(event.request.url));\n }\n return;\n }\n let responsePromise = self.caches.open(cacheName).then((cache) => {\n return cache.match(precachedURL);\n }).then((cachedResponse) => {\n if (cachedResponse) {\n return cachedResponse;\n }\n // Fall back to the network if we don't have a cached response\n // (perhaps due to manual cache cleanup).\n if (process.env.NODE_ENV !== 'production') {\n logger.warn(`The precached response for ` +\n `${getFriendlyURL(precachedURL)} in ${cacheName} was not found. ` +\n `Falling back to the network instead.`);\n }\n return fetch(precachedURL);\n });\n if (process.env.NODE_ENV !== 'production') {\n responsePromise = responsePromise.then((response) => {\n // Workbox is going to handle the route.\n // print the routing details to the console.\n logger.groupCollapsed(`Precaching is responding to: ` +\n getFriendlyURL(event.request.url));\n logger.log(`Serving the precached url: ${precachedURL}`);\n logger.groupCollapsed(`View request details here.`);\n logger.log(event.request);\n logger.groupEnd();\n logger.groupCollapsed(`View response details here.`);\n logger.log(response);\n logger.groupEnd();\n logger.groupEnd();\n return response;\n });\n }\n event.respondWith(responsePromise);\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 { logger } from 'workbox-core/_private/logger.js';\nimport { getOrCreatePrecacheController } from './utils/getOrCreatePrecacheController.js';\nimport { precachePlugins } from './utils/precachePlugins.js';\nimport './_version.js';\nconst installListener = (event) => {\n const precacheController = getOrCreatePrecacheController();\n const plugins = precachePlugins.get();\n event.waitUntil(precacheController.install({ event, plugins })\n .catch((error) => {\n if (process.env.NODE_ENV !== 'production') {\n logger.error(`Service worker installation failed. It will ` +\n `be retried automatically during the next navigation.`);\n }\n // Re-throw the error to ensure installation fails.\n throw error;\n }));\n};\nconst activateListener = (event) => {\n const precacheController = getOrCreatePrecacheController();\n event.waitUntil(precacheController.activate());\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 * 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} [entries=[]] Array of entries to precache.\n *\n * @memberof module:workbox-precaching\n */\nfunction precache(entries) {\n const precacheController = getOrCreatePrecacheController();\n precacheController.addToCacheList(entries);\n if (entries.length > 0) {\n // NOTE: these listeners will only be added once (even if the `precache()`\n // method is called multiple times) because event listeners are implemented\n // as a set, where each listener must be unique.\n // See https://github.com/Microsoft/TypeScript/issues/28357#issuecomment-436484705\n self.addEventListener('install', installListener);\n self.addEventListener('activate', activateListener);\n }\n}\nexport { precache };\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';\nlet 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 */\nexport const getOrCreateDefaultRouter = () => {\n if (!defaultRouter) {\n defaultRouter = new Router();\n // The helpers that use the default Router assume these listeners exist.\n defaultRouter.addFetchListener();\n defaultRouter.addCacheListener();\n }\n return defaultRouter;\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 '../_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 */\nexport const 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 return handler;\n }\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 return { handle: handler };\n }\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 */\nclass Route {\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 constructor(match, handler, method = defaultMethod) {\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 if (method) {\n assert.isOneOf(method, validMethods, { paramName: 'method' });\n }\n }\n // These values are referenced directly by Router so cannot be\n // altered by minificaton.\n this.handler = normalizeHandler(handler);\n this.match = match;\n this.method = method;\n }\n}\nexport { Route };\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 */\nexport const defaultMethod = 'GET';\n/**\n * The list of valid HTTP methods associated with requests that could be routed.\n *\n * @type {Array}\n *\n * @private\n */\nexport const validMethods = [\n 'DELETE',\n 'GET',\n 'HEAD',\n 'PATCH',\n 'POST',\n 'PUT',\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 */\nclass RegExpRoute extends Route {\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 constructor(regExp, handler, method) {\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 const match = ({ url }) => {\n const result = regExp.exec(url.href);\n // Return immediately if there's no match.\n if (!result) {\n return;\n }\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 if ((url.origin !== location.origin) && (result.index !== 0)) {\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`The regular expression '${regExp}' only partially matched ` +\n `against the cross-origin URL '${url}'. RegExpRoute's will only ` +\n `handle cross-origin requests if they match the entire URL.`);\n }\n return;\n }\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 return result.slice(1);\n };\n super(match, handler, method);\n }\n}\nexport { RegExpRoute };\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 { getFriendlyURL } from 'workbox-core/_private/getFriendlyURL.js';\nimport { normalizeHandler } from './utils/normalizeHandler.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 */\nclass Router {\n /**\n * Initializes a new Router.\n */\n constructor() {\n this._routes = new Map();\n }\n /**\n * @return {Map>} 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 get routes() {\n return this._routes;\n }\n /**\n * Adds a fetch event listener to respond to events when a route matches\n * the event's request.\n */\n addFetchListener() {\n // See https://github.com/Microsoft/TypeScript/issues/28357#issuecomment-436484705\n self.addEventListener('fetch', ((event) => {\n const { request } = event;\n const responsePromise = this.handleRequest({ request, event });\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 addCacheListener() {\n // See https://github.com/Microsoft/TypeScript/issues/28357#issuecomment-436484705\n self.addEventListener('message', ((event) => {\n if (event.data && event.data.type === 'CACHE_URLS') {\n const { payload } = event.data;\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Caching URLs from the window`, payload.urlsToCache);\n }\n const requestPromises = Promise.all(payload.urlsToCache.map((entry) => {\n if (typeof entry === 'string') {\n entry = [entry];\n }\n const request = new Request(...entry);\n return this.handleRequest({ request });\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 | undefined>`.\n })); // TypeScript\n event.waitUntil(requestPromises);\n // If a MessageChannel was used, reply to the message on success.\n if (event.ports && event.ports[0]) {\n requestPromises.then(() => event.ports[0].postMessage(true));\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 (this is usually\n * from a fetch event, but it does not have to be).\n * @param {FetchEvent} [options.event] The event that triggered the request,\n * if applicable.\n * @return {Promise|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 handleRequest({ request, event }) {\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 const url = new URL(request.url, location.href);\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 return;\n }\n const { params, route } = this.findMatchingRoute({ url, request, event });\n let handler = route && route.handler;\n const debugMessages = [];\n if (process.env.NODE_ENV !== 'production') {\n if (handler) {\n debugMessages.push([\n `Found a route to handle this request:`, route,\n ]);\n if (params) {\n debugMessages.push([\n `Passing the following params to the route's handler:`, params,\n ]);\n }\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 if (!handler && this._defaultHandler) {\n if (process.env.NODE_ENV !== 'production') {\n debugMessages.push(`Failed to find a matching route. Falling ` +\n `back to the default handler.`);\n }\n handler = this._defaultHandler;\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: ${getFriendlyURL(url)}`);\n }\n return;\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: ${getFriendlyURL(url)}`);\n debugMessages.forEach((msg) => {\n if (Array.isArray(msg)) {\n logger.log(...msg);\n }\n else {\n logger.log(msg);\n }\n });\n logger.groupEnd();\n }\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 let responsePromise;\n try {\n responsePromise = handler.handle({ url, request, event, params });\n }\n catch (err) {\n responsePromise = Promise.reject(err);\n }\n if (responsePromise instanceof Promise && this._catchHandler) {\n responsePromise = responsePromise.catch((err) => {\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: ` +\n ` ${getFriendlyURL(url)}. Falling back to Catch Handler.`);\n logger.error(`Error thrown by:`, route);\n logger.error(err);\n logger.groupEnd();\n }\n return this._catchHandler.handle({ url, request, event });\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 {Request} options.request The request to match.\n * @param {Event} [options.event] The corresponding event (unless N/A).\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 findMatchingRoute({ url, request, event }) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isInstance(url, URL, {\n moduleName: 'workbox-routing',\n className: 'Router',\n funcName: 'findMatchingRoute',\n paramName: 'options.url',\n });\n assert.isInstance(request, Request, {\n moduleName: 'workbox-routing',\n className: 'Router',\n funcName: 'findMatchingRoute',\n paramName: 'options.request',\n });\n }\n const routes = this._routes.get(request.method) || [];\n for (const route of routes) {\n let params;\n const matchResult = route.match({ url, request, event });\n if (matchResult) {\n // See https://github.com/GoogleChrome/workbox/issues/2079\n params = matchResult;\n if (Array.isArray(matchResult) && matchResult.length === 0) {\n // Instead of passing an empty array in as params, use undefined.\n params = undefined;\n }\n else if ((matchResult.constructor === Object &&\n Object.keys(matchResult).length === 0)) {\n // Instead of passing an empty object in as params, use undefined.\n params = undefined;\n }\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 }\n // Return early if have a match.\n return { route, params };\n }\n }\n // If no match was found above, return and empty object.\n return {};\n }\n /**\n * Define a default `handler` that's called when no routes explicitly\n * match the incoming request.\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 */\n setDefaultHandler(handler) {\n this._defaultHandler = 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 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 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 if (!this._routes.has(route.method)) {\n this._routes.set(route.method, []);\n }\n // Give precedence to all of the earlier routes by adding this additional\n // route to the end of the array.\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 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 const routeIndex = this._routes.get(route.method).indexOf(route);\n if (routeIndex > -1) {\n this._routes.get(route.method).splice(routeIndex, 1);\n }\n else {\n throw new WorkboxError('unregister-route-route-not-registered');\n }\n }\n}\nexport { Router };\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 { 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 */\nfunction registerRoute(capture, handler, method) {\n let route;\n if (typeof capture === 'string') {\n const captureUrl = new URL(capture, location.href);\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 }\n // We want to check if Express-style wildcards are in the pathname only.\n // TODO: Remove this log message in v4.\n const valueToCheck = capture.startsWith('http') ?\n captureUrl.pathname : capture;\n // See https://github.com/pillarjs/path-to-regexp#parameters\n const wildcards = '[*:?+]';\n if ((new RegExp(`${wildcards}`)).exec(valueToCheck)) {\n logger.debug(`The '$capture' parameter contains an Express-style wildcard ` +\n `character (${wildcards}). Strings are now always interpreted as ` +\n `exact matches; use a RegExp for partial or wildcard matches.`);\n }\n }\n const matchCallback = ({ url }) => {\n if (process.env.NODE_ENV !== 'production') {\n if ((url.pathname === captureUrl.pathname) &&\n (url.origin !== captureUrl.origin)) {\n logger.debug(`${capture} only partially matches the cross-origin URL ` +\n `${url}. This route will only handle cross-origin requests ` +\n `if they match the entire URL.`);\n }\n }\n return url.href === captureUrl.href;\n };\n // If `capture` is a string then `handler` and `method` must be present.\n route = new Route(matchCallback, handler, method);\n }\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 }\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 }\n else if (capture instanceof Route) {\n route = capture;\n }\n else {\n throw new WorkboxError('unsupported-route-type', {\n moduleName: 'workbox-routing',\n funcName: 'registerRoute',\n paramName: 'capture',\n });\n }\n const defaultRouter = getOrCreateDefaultRouter();\n defaultRouter.registerRoute(route);\n return route;\n}\nexport { registerRoute };\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} entries Array of entries to precache.\n * @param {Object} [options] See\n * [addRoute() options]{@link module:workbox-precaching.addRoute}.\n *\n * @memberof module:workbox-precaching\n */\nfunction precacheAndRoute(entries, options) {\n precache(entries);\n addRoute(options);\n}\nexport { precacheAndRoute };\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 const 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: async ({ response }) => {\n if (response.status === 200 || response.status === 0) {\n return response;\n }\n return null;\n },\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 { cacheWrapper } from 'workbox-core/_private/cacheWrapper.js';\nimport { fetchWrapper } from 'workbox-core/_private/fetchWrapper.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 { messages } from './utils/messages.js';\nimport { cacheOkAndOpaquePlugin } from './plugins/cacheOkAndOpaquePlugin.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 * @memberof module:workbox-strategies\n */\nclass StaleWhileRevalidate {\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} 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 all fetch() requests made by this strategy.\n * @param {Object} options.matchOptions [`CacheQueryOptions`](https://w3c.github.io/ServiceWorker/#dictdef-cachequeryoptions)\n */\n constructor(options = {}) {\n this._cacheName = cacheNames.getRuntimeName(options.cacheName);\n this._plugins = options.plugins || [];\n if (options.plugins) {\n const isUsingCacheWillUpdate = options.plugins.some((plugin) => !!plugin.cacheWillUpdate);\n this._plugins = isUsingCacheWillUpdate ?\n options.plugins : [cacheOkAndOpaquePlugin, ...options.plugins];\n }\n else {\n // No plugins passed in, use the default plugin.\n this._plugins = [cacheOkAndOpaquePlugin];\n }\n this._fetchOptions = options.fetchOptions;\n this._matchOptions = options.matchOptions;\n }\n /**\n * This method will perform a request strategy and follows an API that\n * will work with the\n * [Workbox Router]{@link module:workbox-routing.Router}.\n *\n * @param {Object} options\n * @param {Request|string} options.request A request to run this strategy for.\n * @param {Event} [options.event] The event that triggered the request.\n * @return {Promise}\n */\n async handle({ event, request }) {\n const logs = [];\n if (typeof request === 'string') {\n request = new Request(request);\n }\n if (process.env.NODE_ENV !== 'production') {\n assert.isInstance(request, Request, {\n moduleName: 'workbox-strategies',\n className: 'StaleWhileRevalidate',\n funcName: 'handle',\n paramName: 'request',\n });\n }\n const fetchAndCachePromise = this._getFromNetwork({ request, event });\n let response = await cacheWrapper.match({\n cacheName: this._cacheName,\n request,\n event,\n matchOptions: this._matchOptions,\n plugins: this._plugins,\n });\n let error;\n if (response) {\n if (process.env.NODE_ENV !== 'production') {\n logs.push(`Found a cached response in the '${this._cacheName}'` +\n ` cache. Will update with the network response in the background.`);\n }\n if (event) {\n try {\n event.waitUntil(fetchAndCachePromise);\n }\n catch (error) {\n if (process.env.NODE_ENV !== 'production') {\n logger.warn(`Unable to ensure service worker stays alive when ` +\n `updating cache for '${getFriendlyURL(request.url)}'.`);\n }\n }\n }\n }\n else {\n if (process.env.NODE_ENV !== 'production') {\n logs.push(`No response found in the '${this._cacheName}' cache. ` +\n `Will wait for the network response.`);\n }\n try {\n response = await fetchAndCachePromise;\n }\n catch (err) {\n error = err;\n }\n }\n if (process.env.NODE_ENV !== 'production') {\n logger.groupCollapsed(messages.strategyStart('StaleWhileRevalidate', request));\n for (const log of logs) {\n logger.log(log);\n }\n messages.printFinalResponse(response);\n logger.groupEnd();\n }\n if (!response) {\n throw new WorkboxError('no-response', { url: request.url, error });\n }\n return response;\n }\n /**\n * @param {Object} options\n * @param {Request} options.request\n * @param {Event} [options.event]\n * @return {Promise}\n *\n * @private\n */\n async _getFromNetwork({ request, event }) {\n const response = await fetchWrapper.fetch({\n request,\n event,\n fetchOptions: this._fetchOptions,\n plugins: this._plugins,\n });\n const cachePutPromise = cacheWrapper.put({\n cacheName: this._cacheName,\n request,\n response: response.clone(),\n event,\n plugins: this._plugins,\n });\n if (event) {\n try {\n event.waitUntil(cachePutPromise);\n }\n catch (error) {\n if (process.env.NODE_ENV !== 'production') {\n logger.warn(`Unable to ensure service worker stays alive when ` +\n `updating cache for '${getFriendlyURL(request.url)}'.`);\n }\n }\n }\n return response;\n }\n}\nexport { StaleWhileRevalidate };\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';\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 */\nfunction clientsClaim() {\n self.addEventListener('activate', () => self.clients.claim());\n}\nexport { clientsClaim };\n","/// \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\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 */\nfunction createHandlerBoundToURL(url) {\n const precacheController = getOrCreatePrecacheController();\n return precacheController.createHandlerBoundToURL(url);\n}\nexport { createHandlerBoundToURL };\n"]} \ No newline at end of file diff --git a/static/js/4.5490d087.chunk.js b/static/js/4.5490d087.chunk.js deleted file mode 100644 index f2ee2fd..0000000 --- a/static/js/4.5490d087.chunk.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! For license information please see 4.5490d087.chunk.js.LICENSE.txt */ -(this["webpackJsonpUNICT-Telegram-Channels-Groups"]=this["webpackJsonpUNICT-Telegram-Channels-Groups"]||[]).push([[4],[function(e,t,n){"use strict";e.exports=n(51)},function(e,t,n){"use strict";e.exports=n(68)},function(e,t,n){"use strict";n.d(t,"b",(function(){return o})),n.d(t,"d",(function(){return i})),n.d(t,"a",(function(){return a})),n.d(t,"c",(function(){return l})),n.d(t,"e",(function(){return u}));var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},r(e,t)};function o(e,t){if("function"!==typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}function i(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"===typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o0&&o[o.length-1])&&(6===i[0]||2===i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]-1?this.ionViewWillEnterCallbacks[t]=e:this.ionViewWillEnterCallbacks.push(e)}else this.ionViewWillEnterCallbacks.push(e)}},{key:"ionViewWillEnter",value:function(){this.ionViewWillEnterCallbacks.forEach((function(e){return e()}))}},{key:"onIonViewDidEnter",value:function(e){if(e.id){var t=this.ionViewDidEnterCallbacks.findIndex((function(t){return t.id===e.id}));t>-1?this.ionViewDidEnterCallbacks[t]=e:this.ionViewDidEnterCallbacks.push(e)}else this.ionViewDidEnterCallbacks.push(e)}},{key:"ionViewDidEnter",value:function(){this.ionViewDidEnterCallbacks.forEach((function(e){return e()}))}},{key:"onIonViewWillLeave",value:function(e){if(e.id){var t=this.ionViewWillLeaveCallbacks.findIndex((function(t){return t.id===e.id}));t>-1?this.ionViewWillLeaveCallbacks[t]=e:this.ionViewWillLeaveCallbacks.push(e)}else this.ionViewWillLeaveCallbacks.push(e)}},{key:"ionViewWillLeave",value:function(){this.ionViewWillLeaveCallbacks.forEach((function(e){return e()}))}},{key:"onIonViewDidLeave",value:function(e){if(e.id){var t=this.ionViewDidLeaveCallbacks.findIndex((function(t){return t.id===e.id}));t>-1?this.ionViewDidLeaveCallbacks[t]=e:this.ionViewDidLeaveCallbacks.push(e)}else this.ionViewDidLeaveCallbacks.push(e)}},{key:"ionViewDidLeave",value:function(){this.ionViewDidLeaveCallbacks.forEach((function(e){return e()})),this.componentCanBeDestroyed()}},{key:"onComponentCanBeDestroyed",value:function(e){this.componentCanBeDestroyedCallback=e}},{key:"componentCanBeDestroyed",value:function(){this.componentCanBeDestroyedCallback&&this.componentCanBeDestroyedCallback()}}]),e}(),$=h.a.createContext({getIonRedirect:function(){},getIonRoute:function(){},getPageManager:function(){},getStackManager:function(){},goBack:function(e){"undefined"!==typeof window&&("string"===typeof e?window.location.pathname=e:window.history.back())},navigate:function(e){"undefined"!==typeof window&&(window.location.pathname=e)},hasIonicRouter:function(){return!1},routeInfo:void 0,setCurrentTab:function(){},changeTab:function(e,t){"undefined"!==typeof window&&(window.location.pathname=t)},resetTab:function(e,t){"undefined"!==typeof window&&(window.location.pathname=t)}}),x=function(e){return e.toLowerCase().split("-").map((function(e){return e.charAt(0).toUpperCase()+e.slice(1)})).join("")},S=function(e){return e.replace(/([A-Z])/g,(function(e){return"-".concat(e[0].toLowerCase())}))},C=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(e instanceof Element){var r=j(e.classList,t,n);""!==r&&(e.className=r),Object.keys(t).forEach((function(n){if("children"!==n&&"style"!==n&&"ref"!==n&&"class"!==n&&"className"!==n&&"forwardedRef"!==n)if(0===n.indexOf("on")&&n[2]===n[2].toUpperCase()){var r=n.substring(2),o=r[0].toLowerCase()+r.substring(1);T(o)||P(e,o,t[n])}else{"string"===typeof t[n]?e.setAttribute(S(n),t[n]):e[n]=t[n]}}))}},j=function(e,t,n){var r=t.className||t.class,o=n.className||n.class,i=R(e),a=R(r?r.split(" "):[]),l=R(o?o.split(" "):[]),u=[];return i.forEach((function(e){a.has(e)?(u.push(e),a.delete(e)):l.has(e)||u.push(e)})),a.forEach((function(e){return u.push(e)})),u.join(" ")},T=function(e){if("undefined"===typeof document)return!0;var t="on"+e,n=t in document;if(!n){var r=document.createElement("div");r.setAttribute(t,"return;"),n="function"===typeof r[t]}return n},P=function(e,t,n){var r=e.__events||(e.__events={}),o=r[t];o&&e.removeEventListener(t,o),e.addEventListener(t,r[t]=function(e){n&&n.call(this,e)})},R=function(e){var t=new Map;return e.forEach((function(e){return t.set(e,e)})),t},_=function(e,t){var n=function(t,n){return h.a.createElement(e,Object.assign({},t,{forwardedRef:n}))};return n.displayName=t,h.a.forwardRef(n)},L=function(e,t){"function"===typeof e?e(t):null!=e&&(e.current=t)},I=function(){for(var e=arguments.length,t=new Array(e),n=0;n1&&void 0!==arguments[1]&&arguments[1],n=x(e),r=function(r){Object(s.a)(i,r);var o=Object(c.a)(i);function i(e){var t;return Object(f.a)(this,i),(t=o.call(this,e)).handleClick=function(e){var n=t.props,r=n.routerLink,o=n.routerDirection,i=n.routerOptions,a=n.routerAnimation;void 0!==r&&(e.preventDefault(),t.context.navigate(r,o,void 0,a,i))},t.ref=h.a.createRef(),t.stableMergedRefs=I(t.ref,t.props.forwardedRef),t}return Object(d.a)(i,[{key:"componentDidMount",value:function(){this.componentDidUpdate(this.props)}},{key:"componentDidUpdate",value:function(e){var t=this.ref.current;C(t,this.props,e)}},{key:"render",value:function(){var n=this,r=this.props,o=r.children,i=(r.forwardedRef,r.style),a=(r.className,r.ref,Object(b.d)(r,["children","forwardedRef","style","className","ref"])),l=Object.keys(a).reduce((function(e,t){if(0===t.indexOf("on")&&t[2]===t[2].toUpperCase()){var n=t.substring(2).toLowerCase();T(n)&&(e[t]=a[t])}else["string","boolean","number"].includes(typeof a[t])&&(e[S(t)]=a[t]);return e}),{}),u=Object.assign(Object.assign({},l),{ref:this.stableMergedRefs,style:i});if(t)if(this.props.routerLink&&!this.props.href&&(u.href=this.props.routerLink),u.onClick){var s=u.onClick;u.onClick=function(e){s(e),e.defaultPrevented||n.handleClick(e)}}else u.onClick=this.handleClick;return h.a.createElement(e,u,o)}}],[{key:"displayName",get:function(){return n}},{key:"contextType",get:function(){return $}}]),i}(h.a.Component);return _(r,n)},D=A("ion-app"),M=A("ion-card",!0),B=A("ion-card-header"),z=A("ion-card-title"),V=A("ion-col"),H=A("ion-content"),F=A("ion-grid"),U=A("ion-row"),W=function(e,t){var n="on".concat(e,"DidDismiss"),r="on".concat(e,"DidPresent"),i="on".concat(e,"WillDismiss"),p="on".concat(e,"WillPresent"),m=function(h){Object(s.a)(v,h);var m=Object(c.a)(v);function v(e){var t;return Object(f.a)(this,v),(t=m.call(this,e)).isUnmounted=!1,t.handleDismiss=t.handleDismiss.bind(Object(u.a)(t)),t}return Object(d.a)(v,[{key:"componentDidMount",value:function(){var e=Object(l.a)(a.a.mark((function e(){return a.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:this.props.isOpen&&this.present();case 2:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}()},{key:"componentWillUnmount",value:function(){this.isUnmounted=!0,this.overlay&&this.overlay.dismiss()}},{key:"componentDidUpdate",value:function(){var e=Object(l.a)(a.a.mark((function e(t){return a.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t.isOpen!==this.props.isOpen&&!0===this.props.isOpen&&this.present(t),!this.overlay||t.isOpen===this.props.isOpen||!1!==this.props.isOpen){e.next=4;break}return e.next=4,this.overlay.dismiss();case 4:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}()},{key:"handleDismiss",value:function(e){this.props.onDidDismiss&&this.props.onDidDismiss(e),L(this.props.forwardedRef,null)}},{key:"present",value:function(){var e=Object(l.a)(a.a.mark((function e(l){var u,s,c,f=this;return a.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return s=this.props,c=Object(b.d)(s,["isOpen","onDidDismiss","onDidPresent","onWillDismiss","onWillPresent"]),e.next=3,t.create(Object.assign({},c));case 3:if(this.overlay=e.sent,C(this.overlay,(u={},Object(o.a)(u,n,this.handleDismiss),Object(o.a)(u,r,(function(e){return f.props.onDidPresent&&f.props.onDidPresent(e)})),Object(o.a)(u,i,(function(e){return f.props.onWillDismiss&&f.props.onWillDismiss(e)})),Object(o.a)(u,p,(function(e){return f.props.onWillPresent&&f.props.onWillPresent(e)})),u),l),!0!==this.props.isOpen||!1!==this.isUnmounted){e.next=9;break}return L(this.props.forwardedRef,this.overlay),e.next=9,this.overlay.present();case 9:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}()},{key:"render",value:function(){return null}}],[{key:"displayName",get:function(){return e}}]),v}(h.a.Component);return h.a.forwardRef((function(e,t){return h.a.createElement(m,Object.assign({},e,{forwardedRef:t}))}))},q=(g.b,g.f,g.h,function(e,t){var n="on".concat(e,"DidDismiss"),r="on".concat(e,"DidPresent"),i="on".concat(e,"WillDismiss"),p="on".concat(e,"WillPresent"),m=function(h){Object(s.a)(v,h);var m=Object(c.a)(v);function v(e){var t;return Object(f.a)(this,v),(t=m.call(this,e)).isDismissing=!1,"undefined"!==typeof document&&(t.el=document.createElement("div")),t.handleDismiss=t.handleDismiss.bind(Object(u.a)(t)),t}return Object(d.a)(v,[{key:"componentDidMount",value:function(){this.props.isOpen&&this.present()}},{key:"componentWillUnmount",value:function(){this.overlay&&this.overlay.dismiss()}},{key:"handleDismiss",value:function(e){this.props.onDidDismiss&&this.props.onDidDismiss(e),L(this.props.forwardedRef,null)}},{key:"shouldComponentUpdate",value:function(e){return this.overlay&&e.isOpen!==this.props.isOpen&&!1===e.isOpen&&(this.isDismissing=!0),!0}},{key:"componentDidUpdate",value:function(){var e=Object(l.a)(a.a.mark((function e(t){return a.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.overlay&&C(this.overlay,this.props,t),t.isOpen!==this.props.isOpen&&!0===this.props.isOpen&&this.present(t),!this.overlay||t.isOpen===this.props.isOpen||!1!==this.props.isOpen){e.next=7;break}return e.next=5,this.overlay.dismiss();case 5:this.isDismissing=!1,this.forceUpdate();case 7:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}()},{key:"present",value:function(){var e=Object(l.a)(a.a.mark((function e(l){var u,s,c,f,d=this;return a.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return s=this.props,c=Object(b.d)(s,["children","isOpen","onDidDismiss","onDidPresent","onWillDismiss","onWillPresent"]),f=Object.assign(Object.assign({},c),(u={ref:this.props.forwardedRef},Object(o.a)(u,n,this.handleDismiss),Object(o.a)(u,r,(function(e){return d.props.onDidPresent&&d.props.onDidPresent(e)})),Object(o.a)(u,i,(function(e){return d.props.onWillDismiss&&d.props.onWillDismiss(e)})),Object(o.a)(u,p,(function(e){return d.props.onWillPresent&&d.props.onWillPresent(e)})),u)),e.next=4,t.create(Object.assign(Object.assign({},f),{component:this.el,componentProps:{}}));case 4:return this.overlay=e.sent,L(this.props.forwardedRef,this.overlay),C(this.overlay,f,l),e.next=9,this.overlay.present();case 9:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}()},{key:"render",value:function(){return k.a.createPortal(this.props.isOpen||this.isDismissing?this.props.children:null,this.el)}}],[{key:"displayName",get:function(){return e}}]),v}(h.a.Component);return h.a.forwardRef((function(e,t){return h.a.createElement(m,Object.assign({},e,{forwardedRef:t}))}))}),X=(g.g,g.i,h.a.createContext({registerIonPage:function(){},isInOutlet:function(){return!1}})),Y=function(e){Object(s.a)(n,e);var t=Object(c.a)(n);function n(e){var r;return Object(f.a)(this,n),(r=t.call(this,e)).ionPageElementRef=h.a.createRef(),r.stableMergedRefs=I(r.ionPageElementRef,r.props.forwardedRef),r}return Object(d.a)(n,[{key:"componentDidMount",value:function(){this.ionPageElementRef.current&&(this.context.isInOutlet()&&this.ionPageElementRef.current.classList.add("ion-page-invisible"),this.context.registerIonPage(this.ionPageElementRef.current,this.props.routeInfo),this.ionPageElementRef.current.addEventListener("ionViewWillEnter",this.ionViewWillEnterHandler.bind(this)),this.ionPageElementRef.current.addEventListener("ionViewDidEnter",this.ionViewDidEnterHandler.bind(this)),this.ionPageElementRef.current.addEventListener("ionViewWillLeave",this.ionViewWillLeaveHandler.bind(this)),this.ionPageElementRef.current.addEventListener("ionViewDidLeave",this.ionViewDidLeaveHandler.bind(this)))}},{key:"componentWillUnmount",value:function(){this.ionPageElementRef.current&&(this.ionPageElementRef.current.removeEventListener("ionViewWillEnter",this.ionViewWillEnterHandler.bind(this)),this.ionPageElementRef.current.removeEventListener("ionViewDidEnter",this.ionViewDidEnterHandler.bind(this)),this.ionPageElementRef.current.removeEventListener("ionViewWillLeave",this.ionViewWillLeaveHandler.bind(this)),this.ionPageElementRef.current.removeEventListener("ionViewDidLeave",this.ionViewDidLeaveHandler.bind(this)))}},{key:"ionViewWillEnterHandler",value:function(){this.ionLifeCycleContext.ionViewWillEnter()}},{key:"ionViewDidEnterHandler",value:function(){this.ionLifeCycleContext.ionViewDidEnter()}},{key:"ionViewWillLeaveHandler",value:function(){this.ionLifeCycleContext.ionViewWillLeave()}},{key:"ionViewDidLeaveHandler",value:function(){this.ionLifeCycleContext.ionViewDidLeave()}},{key:"render",value:function(){var e=this,t=this.props,n=t.className,r=t.children,o=(t.routeInfo,t.forwardedRef,Object(b.d)(t,["className","children","routeInfo","forwardedRef"]));return h.a.createElement(E.Consumer,null,(function(t){return e.ionLifeCycleContext=t,h.a.createElement("div",Object.assign({className:n?"".concat(n," ion-page"):"ion-page",ref:e.stableMergedRefs},o),r)}))}}],[{key:"contextType",get:function(){return X}}]),n}(h.a.PureComponent),G=function(e){Object(s.a)(n,e);var t=Object(c.a)(n);function n(e){return Object(f.a)(this,n),t.call(this,e)}return Object(d.a)(n,[{key:"render",value:function(){var e=this.props,t=e.className,n=e.children,r=e.forwardedRef,o=Object(b.d)(e,["className","children","forwardedRef"]);return this.context.hasIonicRouter()?h.a.createElement(Y,Object.assign({className:t?"".concat(t):"",routeInfo:this.context.routeInfo,forwardedRef:r},o),n):h.a.createElement("div",Object.assign({className:t?"ion-page ".concat(t):"ion-page",ref:r},o),n)}}],[{key:"displayName",get:function(){return"IonPage"}},{key:"contextType",get:function(){return $}}]),n}(h.a.Component),Q=_(G,"IonPage"),K=h.a.createContext({activeTab:void 0,selectTab:function(){return!1}}),J="undefined"!==typeof HTMLElement?HTMLElement:function(){return function e(){Object(f.a)(this,e)}}(),Z=A("ion-tab-button"),ee=A("ion-tab-bar"),te=A("ion-router-outlet"),ne=A("ion-icon"),re=function(e){Object(s.a)(n,e);var t=Object(c.a)(n);function n(e){return Object(f.a)(this,n),t.call(this,e)}return Object(d.a)(n,[{key:"componentDidMount",value:function(){var e=this;this.ionRouterOutlet&&(setTimeout((function(){e.context.registerIonPage(e.ionRouterOutlet,e.props.routeInfo)}),25),this.ionRouterOutlet.addEventListener("ionViewWillEnter",this.ionViewWillEnterHandler.bind(this)),this.ionRouterOutlet.addEventListener("ionViewDidEnter",this.ionViewDidEnterHandler.bind(this)),this.ionRouterOutlet.addEventListener("ionViewWillLeave",this.ionViewWillLeaveHandler.bind(this)),this.ionRouterOutlet.addEventListener("ionViewDidLeave",this.ionViewDidLeaveHandler.bind(this)))}},{key:"componentWillUnmount",value:function(){this.ionRouterOutlet&&(this.ionRouterOutlet.removeEventListener("ionViewWillEnter",this.ionViewWillEnterHandler.bind(this)),this.ionRouterOutlet.removeEventListener("ionViewDidEnter",this.ionViewDidEnterHandler.bind(this)),this.ionRouterOutlet.removeEventListener("ionViewWillLeave",this.ionViewWillLeaveHandler.bind(this)),this.ionRouterOutlet.removeEventListener("ionViewDidLeave",this.ionViewDidLeaveHandler.bind(this)))}},{key:"ionViewWillEnterHandler",value:function(){this.ionLifeCycleContext.ionViewWillEnter()}},{key:"ionViewDidEnterHandler",value:function(){this.ionLifeCycleContext.ionViewDidEnter()}},{key:"ionViewWillLeaveHandler",value:function(){this.ionLifeCycleContext.ionViewWillLeave()}},{key:"ionViewDidLeaveHandler",value:function(){this.ionLifeCycleContext.ionViewDidLeave()}},{key:"render",value:function(){var e=this,t=this.props,n=t.StackManager,r=t.children,o=t.routeInfo,i=Object(b.d)(t,["StackManager","children","routeInfo"]);return h.a.createElement(E.Consumer,null,(function(t){return e.ionLifeCycleContext=t,h.a.createElement(n,{routeInfo:o},h.a.createElement(te,Object.assign({setRef:function(t){return e.ionRouterOutlet=t}},i),r))}))}}],[{key:"contextType",get:function(){return X}}]),n}(h.a.Component),oe=function(e){Object(s.a)(n,e);var t=Object(c.a)(n);function n(e){return Object(f.a)(this,n),t.call(this,e)}return Object(d.a)(n,[{key:"render",value:function(){var e=this.context.getStackManager(),t=this.props,n=t.children,r=t.forwardedRef,o=Object(b.d)(t,["children","forwardedRef"]);return this.context.hasIonicRouter()?o.ionPage?h.a.createElement(re,Object.assign({StackManager:e,routeInfo:this.context.routeInfo},o),n):h.a.createElement(e,{routeInfo:this.context.routeInfo},h.a.createElement(te,Object.assign({},o,{forwardedRef:r}),n)):h.a.createElement(te,Object.assign({ref:r},this.props),this.props.children)}}],[{key:"contextType",get:function(){return $}}]),n}(h.a.Component),ie=_(oe,"IonRouterOutlet"),ae=function(e){Object(s.a)(n,e);var t=Object(c.a)(n);function n(e){var r;return Object(f.a)(this,n),(r=t.call(this,e)).handleIonTabButtonClick=r.handleIonTabButtonClick.bind(Object(u.a)(r)),r}return Object(d.a)(n,[{key:"handleIonTabButtonClick",value:function(){this.props.onClick&&this.props.onClick(new CustomEvent("ionTabButtonClick",{detail:{tab:this.props.tab,href:this.props.href,routeOptions:this.props.routerOptions}}))}},{key:"render",value:function(){var e=this.props,t=Object(b.d)(e,["onClick"]);return h.a.createElement(Z,Object.assign({onIonTabButtonClick:this.handleIonTabButtonClick},t))}}],[{key:"displayName",get:function(){return"IonTabButton"}}]),n}(h.a.Component),le=function(e){Object(s.a)(n,e);var t=Object(c.a)(n);function n(e){var r;Object(f.a)(this,n),(r=t.call(this,e)).setActiveTabOnContext=function(e){};var o={};return h.a.Children.forEach(e.children,(function(t){var n,r,i,a;null!=t&&"object"===typeof t&&t.props&&(t.type===ae||t.type.isTabButton)&&(o[t.props.tab]={originalHref:t.props.href,currentHref:t.props.href,originalRouteOptions:t.props.href===(null===(n=e.routeInfo)||void 0===n?void 0:n.pathname)?null===(r=e.routeInfo)||void 0===r?void 0:r.routeOptions:void 0,currentRouteOptions:t.props.href===(null===(i=e.routeInfo)||void 0===i?void 0:i.pathname)?null===(a=e.routeInfo)||void 0===a?void 0:a.routeOptions:void 0})})),r.state={tabs:o},r.onTabButtonClick=r.onTabButtonClick.bind(Object(u.a)(r)),r.renderTabButton=r.renderTabButton.bind(Object(u.a)(r)),r.setActiveTabOnContext=r.setActiveTabOnContext.bind(Object(u.a)(r)),r.selectTab=r.selectTab.bind(Object(u.a)(r)),r}return Object(d.a)(n,[{key:"componentDidMount",value:function(){var e=this,t=this.state.tabs,n=Object.keys(t).find((function(n){var r=t[n].originalHref;return e.props.routeInfo.pathname.startsWith(r)}));n&&this.setState({activeTab:n})}},{key:"componentDidUpdate",value:function(){this.state.activeTab&&this.setActiveTabOnContext(this.state.activeTab)}},{key:"selectTab",value:function(e){var t=this.state.tabs[e];return!!t&&(this.onTabButtonClick(new CustomEvent("ionTabButtonClick",{detail:{href:t.currentHref,tab:e,selected:e===this.state.activeTab,routeOptions:void 0}})),!0)}},{key:"onTabButtonClick",value:function(e){var t=this.state.tabs[e.detail.tab],n=t.originalHref,r=e.detail.href;this.state.activeTab===e.detail.tab?n!==r&&this.context.resetTab(e.detail.tab,n,t.originalRouteOptions):(this.props.onIonTabsWillChange&&this.props.onIonTabsWillChange(new CustomEvent("ionTabWillChange",{detail:{tab:e.detail.tab}})),this.props.onIonTabsDidChange&&this.props.onIonTabsDidChange(new CustomEvent("ionTabDidChange",{detail:{tab:e.detail.tab}})),this.setActiveTabOnContext(e.detail.tab),this.context.changeTab(e.detail.tab,r,e.detail.routeOptions))}},{key:"renderTabButton",value:function(e){var t=this;return function(n){var r,o;if(null!=n&&n.props&&(n.type===ae||n.type.isTabButton)){var i=n.props.tab===e?null===(r=t.props.routeInfo)||void 0===r?void 0:r.pathname:t.state.tabs[n.props.tab].currentHref,a=n.props.tab===e?null===(o=t.props.routeInfo)||void 0===o?void 0:o.routeOptions:t.state.tabs[n.props.tab].currentRouteOptions;return h.a.cloneElement(n,{href:i,routeOptions:a,onClick:t.onTabButtonClick})}return null}}},{key:"render",value:function(){var e=this.state.activeTab;return h.a.createElement(ee,Object.assign({},this.props,{selectedTab:e}),h.a.Children.map(this.props.children,this.renderTabButton(e)))}}],[{key:"getDerivedStateFromProps",value:function(e,t){var n,r,o,i=Object.assign({},t.tabs),a=Object.keys(t.tabs).find((function(n){var r=t.tabs[n].originalHref;return e.routeInfo.pathname.startsWith(r)}));h.a.Children.forEach(e.children,(function(e){if(null!=e&&"object"===typeof e&&e.props&&(e.type===ae||e.type.isTabButton)){var t=i[e.props.tab];t&&t.originalHref===e.props.href||(i[e.props.tab]={originalHref:e.props.href,currentHref:e.props.href,originalRouteOptions:e.props.routeOptions,currentRouteOptions:e.props.routeOptions})}}));var l=t.activeTab;if(a&&l){var u=t.tabs[l].currentHref,s=t.tabs[l].currentRouteOptions;a===l&&u===(null===(n=e.routeInfo)||void 0===n?void 0:n.pathname)&&s===(null===(r=e.routeInfo)||void 0===r?void 0:r.routeOptions)||(i[a]={originalHref:i[a].originalHref,currentHref:e.routeInfo.pathname+(e.routeInfo.search||""),originalRouteOptions:i[a].originalRouteOptions,currentRouteOptions:null===(o=e.routeInfo)||void 0===o?void 0:o.routeOptions},"pop"===e.routeInfo.routeAction&&a!==l&&(i[l]={originalHref:i[l].originalHref,currentHref:i[l].originalHref,originalRouteOptions:i[l].originalRouteOptions,currentRouteOptions:i[l].currentRouteOptions}))}return a&&e.onSetCurrentTab(a,e.routeInfo),{activeTab:a,tabs:i}}},{key:"contextType",get:function(){return $}}]),n}(h.a.PureComponent),ue=h.a.memo((function(e){var t=e.forwardedRef,n=Object(b.d)(e,["forwardedRef"]),r=Object(p.useContext)($);return h.a.createElement(le,Object.assign({ref:t},n,{routeInfo:n.routeInfo||r.routeInfo||{pathname:window.location.pathname},onSetCurrentTab:r.setCurrentTab}),n.children)})),se=_(ue,"IonTabBar"),ce=function(e){Object(s.a)(n,e);var t=Object(c.a)(n);function n(){return Object(f.a)(this,n),t.call(this)}return n}(J);"undefined"!==typeof window&&window.customElements&&(customElements.get("ion-tabs")||customElements.define("ion-tabs",ce));var fe={display:"flex",position:"absolute",top:"0",left:"0",right:"0",bottom:"0",flexDirection:"column",width:"100%",height:"100%",contain:"layout size style"},de={position:"relative",flex:1,contain:"layout size style"},pe=(h.a.Component,function(t,n){e&&Object({NODE_ENV:"production",PUBLIC_URL:".",WDS_SOCKET_HOST:void 0,WDS_SOCKET_PATH:void 0,WDS_SOCKET_PORT:void 0,FAST_REFRESH:!0}),0}),he=function(e){Object(s.a)(n,e);var t=Object(c.a)(n);function n(e){var r;return Object(f.a)(this,n),(r=t.call(this,e)).props.name&&pe(),r}return Object(d.a)(n,[{key:"render",value:function(){var e,t,n,r,o=this.props,i=o.icon,a=o.ios,l=o.md,u=Object(b.d)(o,["icon","ios","md"]);return a||l?(r="ios",n=Object(g.e)(window,r)?null!==(e=null!==a&&void 0!==a?a:l)&&void 0!==e?e:i:null!==(t=null!==l&&void 0!==l?l:a)&&void 0!==t?t:i):n=i,h.a.createElement(ne,Object.assign({ref:this.props.forwardedRef,icon:n},u),this.props.children)}}],[{key:"contextType",get:function(){return $}}]),n}(h.a.PureComponent),me=(_(he,"IonIcon"),function(e){Object(s.a)(n,e);var t=Object(c.a)(n);function n(){return Object(f.a)(this,n),t.apply(this,arguments)}return Object(d.a)(n,[{key:"render",value:function(){var e=this.context.getIonRoute();return this.context.hasIonicRouter()&&n?h.a.createElement(e,Object.assign({},this.props)):(console.error("You either do not have an Ionic Router package, or your router does not support using "),null)}}],[{key:"contextType",get:function(){return $}}]),n}(h.a.PureComponent)),ve=(h.a.PureComponent,h.a.createContext({routeInfo:void 0,push:function(){throw new Error("An Ionic Router is required for IonRouterContext")},back:function(){throw new Error("An Ionic Router is required for IonRouterContext")},canGoBack:function(){throw new Error("An Ionic Router is required for IonRouterContext")},nativeBack:function(){throw new Error("An Ionic Router is required for IonRouterContext")}}));h.a.PureComponent;var ye=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=["children","progressStart","progressStep","progressEnd","pause","stop","destroy","play","from","to","fromTo","onFinish"];for(var o in t)t.hasOwnProperty(o)&&!r.includes(o)&&t[o]!==n[o]&&e[o](t[o]);var i=t.from;if(i&&i!==n.from){var a=Array.isArray(i)?i:[i];a.forEach((function(t){return e.from(t.property,t.value)}))}var l=t.to;if(l&&l!==n.to){var u=Array.isArray(l)?l:[l];u.forEach((function(t){return e.to(t.property,t.value)}))}var s=t.fromTo;if(s&&s!==n.fromTo){var c=Array.isArray(s)?s:[s];c.forEach((function(t){return e.fromTo(t.property,t.fromValue,t.toValue)}))}var f=t.onFinish;if(f&&f!==n.onFinish){var d=Array.isArray(f)?f:[f];d.forEach((function(t){return e.onFinish(t.callback,t.opts)}))}},ge=function(e){var t,n,r,o,i,a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},l=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},u=a.progressStart,s=a.progressStep,c=a.progressEnd;!u||(null===(t=l.progressStart)||void 0===t?void 0:t.forceLinearEasing)===(null===u||void 0===u?void 0:u.forceLinearEasing)&&(null===(n=l.progressStart)||void 0===n?void 0:n.step)===(null===u||void 0===u?void 0:u.step)||e.progressStart(u.forceLinearEasing,u.step),s&&(null===(r=l.progressStep)||void 0===r?void 0:r.step)!==(null===s||void 0===s?void 0:s.step)&&e.progressStep(s.step),!c||(null===(o=l.progressEnd)||void 0===o?void 0:o.playTo)===(null===c||void 0===c?void 0:c.playTo)&&(null===(i=l.progressEnd)||void 0===i?void 0:i.step)===(null===c||void 0===c?void 0:c.step)&&(null===l||void 0===l?void 0:l.dur)===(null===c||void 0===c?void 0:c.dur)||e.progressEnd(c.playTo,c.step,c.dur)},be=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};!n.play&&t.play&&e.play(),!n.pause&&t.pause&&e.pause(),!n.stop&&t.stop&&e.stop(),!n.destroy&&t.destroy&&e.destroy()};Object(v.a)({"arrow-back-sharp":y.a,"caret-back-sharp":y.b,"chevron-back":y.c,"chevron-forward":y.d,close:y.e,"close-circle":y.f,"close-sharp":y.g,"menu-outline":y.h,"menu-sharp":y.i,"reorder-two-sharp":y.k,"reorder-three-outline":y.j,"search-outline":y.l,"search-sharp":y.m}),"undefined"!==typeof window&&Object(m.a)(window);var we=h.a.createContext({addViewItem:function(){},canGoBack:function(){},clearOutlet:function(){},createViewItem:function(){},findViewItemByPathname:function(){},findLeavingViewItemByRouteInfo:function(){},findViewItemByRouteInfo:function(){},getChildrenToRender:function(){},goBack:function(){},unMountViewItem:function(){}}),ke=function(e){Object(s.a)(n,e);var t=Object(c.a)(n);function n(e){var r;return Object(f.a)(this,n),(r=t.call(this,e)).ionLifeCycleContext=new O,r._isMounted=!1,r.ionLifeCycleContext.onComponentCanBeDestroyed((function(){r.props.mount||r._isMounted&&r.setState({show:!1},(function(){return r.props.removeView()}))})),r.state={show:!0},r}return Object(d.a)(n,[{key:"componentDidMount",value:function(){this._isMounted=!0}},{key:"componentWillUnmount",value:function(){this._isMounted=!1}},{key:"render",value:function(){var e=this.state.show;return h.a.createElement(E.Provider,{value:this.ionLifeCycleContext},e&&this.props.children)}}]),n}(h.a.Component),Ee=function(){function e(){Object(f.a)(this,e),this.locationHistory=[],this.tabHistory={}}return Object(d.a)(e,[{key:"add",value:function(e){"push"===e.routeAction||null==e.routeAction?this._add(e):"pop"===e.routeAction?this._pop(e):"replace"===e.routeAction&&this._replace(e),"root"===e.routeDirection&&(this._clear(),this._add(e))}},{key:"clearTabStack",value:function(e){var t=this,n=this._getRouteInfosByKey(e);n&&(n.forEach((function(e){t.locationHistory=t.locationHistory.filter((function(t){return t.id!==e.id}))})),this.tabHistory[e]=[])}},{key:"update",value:function(e){var t=this.locationHistory.findIndex((function(t){return t.id===e.id}));t>-1&&this.locationHistory.splice(t,1,e);var n=this.tabHistory[e.tab||""];if(n){var r=n.findIndex((function(t){return t.id===e.id}));r>-1?n.splice(r,1,e):n.push(e)}else e.tab&&(this.tabHistory[e.tab]=[e])}},{key:"_add",value:function(e){var t=this._getRouteInfosByKey(e.tab);t&&(this._areRoutesEqual(t[t.length-1],e)&&t.pop(),t.push(e)),this.locationHistory.push(e)}},{key:"_areRoutesEqual",value:function(e,t){return!(!e||!t)&&(e.pathname===t.pathname&&e.search===t.search)}},{key:"_pop",value:function(e){var t=this._getRouteInfosByKey(e.tab);t&&(t.pop(),t.pop(),t.push(e)),this.locationHistory.pop(),this.locationHistory.pop(),this.locationHistory.push(e)}},{key:"_replace",value:function(e){var t=this._getRouteInfosByKey(e.tab);t&&t.pop(),this.locationHistory.pop(),this._add(e)}},{key:"_clear",value:function(){var e=this;Object.keys(this.tabHistory).forEach((function(t){return e.tabHistory[t]=[]})),this.locationHistory=[]}},{key:"_getRouteInfosByKey",value:function(e){var t;return e&&((t=this.tabHistory[e])||(t=this.tabHistory[e]=[])),t}},{key:"getFirstRouteInfoForTab",value:function(e){var t=this._getRouteInfosByKey(e);if(t)return t[0]}},{key:"getCurrentRouteInfoForTab",value:function(e){var t=this._getRouteInfosByKey(e);if(t)return t[t.length-1]}},{key:"findLastLocation",value:function(e){var t=this._getRouteInfosByKey(e.tab);if(t)for(var n=t.length-2;n>=0;n--){var r=t[n];if(r&&r.pathname===e.pushedByRoute)return r}for(var o=this.locationHistory.length-2;o>=0;o--){var i=this.locationHistory[o];if(i&&i.pathname===e.pushedByRoute)return i}}},{key:"previous",value:function(){return this.locationHistory[this.locationHistory.length-2]||this.locationHistory[this.locationHistory.length-1]}},{key:"current",value:function(){return this.locationHistory[this.locationHistory.length-1]}},{key:"canGoBack",value:function(){return this.locationHistory.length>1}}]),e}(),Oe=function(e){Object(s.a)(n,e);var t=Object(c.a)(n);function n(e){var r;return Object(f.a)(this,n),(r=t.call(this,e))._isMounted=!1,r.ionRouterContextValue={push:function(e,t,n,o,i){r.navigate(e,t,n,i,o)},back:function(e){r.goBack(void 0,e)},canGoBack:function(){return r.props.locationHistory.canGoBack()},nativeBack:function(){return r.props.onNativeBack()},routeInfo:r.props.routeInfo},r.state={goBack:r.goBack.bind(Object(u.a)(r)),hasIonicRouter:function(){return!0},navigate:r.navigate.bind(Object(u.a)(r)),getIonRedirect:r.getIonRedirect.bind(Object(u.a)(r)),getIonRoute:r.getIonRoute.bind(Object(u.a)(r)),getStackManager:r.getStackManager.bind(Object(u.a)(r)),getPageManager:r.getPageManager.bind(Object(u.a)(r)),routeInfo:r.props.routeInfo,setCurrentTab:r.props.onSetCurrentTab,changeTab:r.props.onChangeTab,resetTab:r.props.onResetTab},"undefined"!==typeof document&&(r.handleHardwareBackButton=r.handleHardwareBackButton.bind(Object(u.a)(r)),document.addEventListener("ionBackButton",r.handleHardwareBackButton)),r}return Object(d.a)(n,[{key:"componentDidMount",value:function(){this._isMounted=!0}},{key:"componentWillUnmount",value:function(){"undefined"!==typeof document&&(document.removeEventListener("ionBackButton",this.handleHardwareBackButton),this._isMounted=!1)}},{key:"handleHardwareBackButton",value:function(e){var t=this;e.detail.register(0,(function(e){t._isMounted&&(t.nativeGoBack(),e())}))}},{key:"goBack",value:function(e,t){this.props.onNavigateBack(e,t)}},{key:"nativeGoBack",value:function(){this.props.onNativeBack()}},{key:"navigate",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"forward",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"push",r=arguments.length>3?arguments[3]:void 0,o=arguments.length>4?arguments[4]:void 0,i=arguments.length>5?arguments[5]:void 0;this.props.onNavigate(e,n,t,r,o,i)}},{key:"getPageManager",value:function(){return Y}},{key:"getIonRedirect",value:function(){return this.props.ionRedirect}},{key:"getIonRoute",value:function(){return this.props.ionRoute}},{key:"getStackManager",value:function(){return this.props.stackManager}},{key:"render",value:function(){return h.a.createElement($.Provider,{value:Object.assign(Object.assign({},this.state),{routeInfo:this.props.routeInfo})},h.a.createElement(ve.Provider,{value:Object.assign(Object.assign({},this.ionRouterContextValue),{routeInfo:this.props.routeInfo})},this.props.children))}}]),n}(h.a.PureComponent),$e=function(){function e(){Object(f.a)(this,e),this.viewStacks={},this.add=this.add.bind(this),this.clear=this.clear.bind(this),this.getViewItemsForOutlet=this.getViewItemsForOutlet.bind(this),this.remove=this.remove.bind(this)}return Object(d.a)(e,[{key:"add",value:function(e){var t=e.outletId;this.viewStacks[t]?this.viewStacks[t].push(e):this.viewStacks[t]=[e]}},{key:"clear",value:function(e){var t=this;setTimeout((function(){delete t.viewStacks[e]}),500)}},{key:"getViewItemsForOutlet",value:function(e){return this.viewStacks[e]||[]}},{key:"remove",value:function(e){var t=e.outletId,n=this.viewStacks[t];if(n){var r=n.find((function(t){return t.id===e.id}));r&&(r.mount=!1,this.viewStacks[t]=n.filter((function(e){return e.id!==r.id})))}}},{key:"getStackIds",value:function(){return Object.keys(this.viewStacks)}},{key:"getAllViewItems",value:function(){var e=this,t=this.getStackIds(),n=[];return t.forEach((function(t){n.push.apply(n,Object(r.a)(e.viewStacks[t]))})),n}}]),e}(),xe={main:0},Se=function(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"main",n=(null!==(e=xe[t])&&void 0!==e?e:0)+1;return xe[t]=n,n.toString()}}).call(this,n(55))},function(e,t,n){"use strict";n.d(t,"a",(function(){return d}));var r,o=n(2),i=n(14),a=function(e){return e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()},l=function(e){if(void 0===r){var t=void 0!==e.style.animationName,n=void 0!==e.style.webkitAnimationName;r=!t&&n?"-webkit-":""}return r},u=function(e,t,n){var r=t.startsWith("animation")?l(e):"";e.style.setProperty(r+t,n)},s=function(e,t){var n=t.startsWith("animation")?l(e):"";e.style.removeProperty(n+t)},c=[],f=function(e,t){if(void 0===e&&(e=[]),void 0!==t){var n=Array.isArray(t)?t:[t];return Object(o.e)(Object(o.e)([],e),n)}return e},d=function(e){var t,n,r,d,p,h,m,v,y,g,b,w,k,E=[],O=[],$=[],x=!1,S={},C=[],j=[],T={},P=0,R=!1,_=!1,L=!0,I=!1,N=!0,A=e,D=[],M=[],B=[],z=[],V=[],H=[],F=[],U=[],W=[],q=[],X="function"===typeof AnimationEffect||"function"===typeof window.AnimationEffect,Y="function"===typeof Element&&"function"===typeof Element.prototype.animate&&X,G=function(e){J(),e&&Z()},Q=function(e,t){return(t&&t.oneTimeCallback?M:D).push({c:e,o:t}),k},K=function(){return D.length=0,M.length=0,k},J=function(){if(Y)q.forEach((function(e){e.cancel()})),q.length=0;else{var e=B.slice();Object(i.q)((function(){e.forEach((function(e){s(e,"animation-name"),s(e,"animation-duration"),s(e,"animation-timing-function"),s(e,"animation-iteration-count"),s(e,"animation-delay"),s(e,"animation-play-state"),s(e,"animation-fill-mode"),s(e,"animation-direction")}))}))}},Z=function(){V.forEach((function(e){e&&e.parentNode&&e.parentNode.removeChild(e)})),V.length=0},ee=function(){return void 0!==p?p:m?m.getFill():"both"},te=function(){return void 0!==y?y:void 0!==h?h:m?m.getDirection():"normal"},ne=function(){return R?"linear":void 0!==r?r:m?m.getEasing():"linear"},re=function(){return _?0:void 0!==g?g:void 0!==n?n:m?m.getDuration():0},oe=function(){return void 0!==d?d:m?m.getIterations():1},ie=function(){return void 0!==b?b:void 0!==t?t:m?m.getDelay():0},ae=function(){0!==P&&0===--P&&(!function(){me(),U.forEach((function(e){return e()})),W.forEach((function(e){return e()}));var e=L?1:0,t=C,n=j,r=T;B.forEach((function(e){var o=e.classList;for(var i in t.forEach((function(e){return o.add(e)})),n.forEach((function(e){return o.remove(e)})),r)r.hasOwnProperty(i)&&u(e,i,r[i])})),D.forEach((function(t){return t.c(e,k)})),M.forEach((function(t){return t.c(e,k)})),M.length=0,N=!0,L&&(I=!0),L=!0}(),m&&m.animationFinish())},le=function(t){void 0===t&&(t=!0),Z();var n=function(e){return e.forEach((function(e){for(var t in e)if(e.hasOwnProperty(t)){var n,r=e[t];"easing"===t?(e[n="animation-timing-function"]=r,delete e[t]):(n=a(t))!==t&&(e[n]=r,delete e[t])}})),e}(E);B.forEach((function(r){if(n.length>0){var o=function(e){return void 0===e&&(e=[]),e.map((function(e){var t=e.offset,n=[];for(var r in e)e.hasOwnProperty(r)&&"offset"!==r&&n.push(r+": "+e[r]+";");return 100*t+"% { "+n.join(" ")+" }"})).join(" ")}(n);w=void 0!==e?e:function(e){var t=c.indexOf(e);return t<0&&(t=c.push(e)-1),"ion-animation-"+t}(o);var a=function(e,t,n){var r=function(e){var t=e.getRootNode();return t.head||t}(n),o=l(n),i=r.querySelector("#"+e);if(i)return i;var a=(n.ownerDocument||document).createElement("style");return a.id=e,a.textContent="@"+o+"keyframes "+e+" { "+t+" } @"+o+"keyframes "+e+"-alt { "+t+" }",r.appendChild(a),a}(w,o,r);V.push(a),u(r,"animation-duration",re()+"ms"),u(r,"animation-timing-function",ne()),u(r,"animation-delay",ie()+"ms"),u(r,"animation-fill-mode",ee()),u(r,"animation-direction",te());var s=oe()===1/0?"infinite":oe().toString();u(r,"animation-iteration-count",s),u(r,"animation-play-state","paused"),t&&u(r,"animation-name",a.id+"-alt"),Object(i.q)((function(){u(r,"animation-name",a.id||null)}))}}))},ue=function(e){void 0===e&&(e=!0),function(){H.forEach((function(e){return e()})),F.forEach((function(e){return e()}));var e=O,t=$,n=S;B.forEach((function(r){var o=r.classList;for(var i in e.forEach((function(e){return o.add(e)})),t.forEach((function(e){return o.remove(e)})),n)n.hasOwnProperty(i)&&u(r,i,n[i])}))}(),E.length>0&&(Y?(B.forEach((function(e){var t=e.animate(E,{id:A,delay:ie(),duration:re(),easing:ne(),iterations:oe(),fill:ee(),direction:te()});t.pause(),q.push(t)})),q.length>0&&(q[0].onfinish=function(){ae()})):le(e)),x=!0},se=function(e){if(e=Math.min(Math.max(e,0),.9999),Y)q.forEach((function(t){t.currentTime=t.effect.getComputedTiming().delay+re()*e,t.pause()}));else{var t="-"+re()*e+"ms";B.forEach((function(e){E.length>0&&(u(e,"animation-delay",t),u(e,"animation-play-state","paused"))}))}},ce=function(e){q.forEach((function(e){e.effect.updateTiming({delay:ie(),duration:re(),easing:ne(),iterations:oe(),fill:ee(),direction:te()})})),void 0!==e&&se(e)},fe=function(e,t){void 0===e&&(e=!0),Object(i.q)((function(){B.forEach((function(n){u(n,"animation-name",w||null),u(n,"animation-duration",re()+"ms"),u(n,"animation-timing-function",ne()),u(n,"animation-delay",void 0!==t?"-"+t*re()+"ms":ie()+"ms"),u(n,"animation-fill-mode",ee()||null),u(n,"animation-direction",te()||null);var r=oe()===1/0?"infinite":oe().toString();u(n,"animation-iteration-count",r),e&&u(n,"animation-name",w+"-alt"),Object(i.q)((function(){u(n,"animation-name",w||null)}))}))}))},de=function(e,t,n){return void 0===e&&(e=!1),void 0===t&&(t=!0),e&&z.forEach((function(r){r.update(e,t,n)})),Y?ce(n):fe(t,n),k},pe=function(){x&&(Y?q.forEach((function(e){e.pause()})):B.forEach((function(e){u(e,"animation-play-state","paused")})))},he=function(){v=void 0,ae()},me=function(){v&&clearTimeout(v)},ve=function(){B.forEach((function(e){s(e,"animation-duration"),s(e,"animation-delay"),s(e,"animation-play-state")}))},ye=function(e){return new Promise((function(t){e&&e.sync&&(_=!0,Q((function(){return _=!1}),{oneTimeCallback:!0})),x||ue(),I&&(Y?(se(0),ce()):fe(),I=!1),N&&(P=z.length+1,N=!1),Q((function(){return t()}),{oneTimeCallback:!0}),z.forEach((function(e){e.play()})),Y?(q.forEach((function(e){e.play()})),0!==E.length&&0!==B.length||ae()):function(){if(me(),Object(i.q)((function(){B.forEach((function(e){E.length>0&&u(e,"animation-play-state","running")}))})),0===E.length||0===B.length)ae();else{var e=ie()||0,t=re()||0,n=oe()||1;isFinite(n)&&(v=setTimeout(he,e+t*n+100)),function(e,t){var n,r={passive:!0},o=function(){n&&n()},i=function(n){e===n.target&&(o(),t(n))};e&&(e.addEventListener("webkitAnimationEnd",i,r),e.addEventListener("animationend",i,r),n=function(){e.removeEventListener("webkitAnimationEnd",i,r),e.removeEventListener("animationend",i,r)})}(B[0],(function(){me(),Object(i.q)((function(){ve(),Object(i.q)(ae)}))}))}}()}))},ge=function(e,t){var n,r=E[0];return void 0===r||void 0!==r.offset&&0!==r.offset?E=Object(o.e)([(n={offset:0},n[e]=t,n)],E):r[e]=t,k};return k={parentAnimation:m,elements:B,childAnimations:z,id:A,animationFinish:ae,from:ge,to:function(e,t){var n,r=E[E.length-1];return void 0===r||void 0!==r.offset&&1!==r.offset?E=Object(o.e)(Object(o.e)([],E),[(n={offset:1},n[e]=t,n)]):r[e]=t,k},fromTo:function(e,t,n){return ge(e,t).to(e,n)},parent:function(e){return m=e,k},play:ye,pause:function(){return z.forEach((function(e){e.pause()})),pe(),k},stop:function(){z.forEach((function(e){e.stop()})),x&&(J(),x=!1),R=!1,_=!1,N=!0,y=void 0,g=void 0,b=void 0,P=0,I=!1,L=!0},destroy:function(e){return z.forEach((function(t){t.destroy(e)})),G(e),B.length=0,z.length=0,E.length=0,K(),x=!1,N=!0,k},keyframes:function(e){return E=e,k},addAnimation:function(e){if(null!=e)if(Array.isArray(e))for(var t=0,n=e;t=0)for(var t=0;t0){var n=t[0];return{x:n.clientX,y:n.clientY}}if(void 0!==e.pageX)return{x:e.pageX,y:e.pageY}}return{x:0,y:0}},g=function(e){var t="rtl"===document.dir;switch(e){case"start":return t;case"end":return!t;default:throw new Error('"'+e+'" is not a valid value for [side]. Use "start" or "end" instead.')}},b=function(e,t){var n=e._original||e;return{_original:e,emit:w(n.emit.bind(n),t)}},w=function(e,t){var n;return void 0===t&&(t=0),function(){for(var o=[],i=0;i-1,y=function(e){return Promise.resolve(e)},g=function(){try{return new CSSStyleSheet,"function"===typeof(new CSSStyleSheet).replace}catch(e){}return!1}(),b=function(e,t,n,r){n&&n.map((function(n){var r=n[0],o=n[1],i=n[2],a=k(e,r),l=w(t,i),u=E(r);m.ael(a,o,l,u),(t.$rmListeners$=t.$rmListeners$||[]).push((function(){return m.rel(a,o,l,u)}))}))},w=function(e,t){return function(n){try{256&e.$flags$?e.$lazyInstance$[t](n):(e.$queuedListeners$=e.$queuedListeners$||[]).push([t,n])}catch(r){De(r)}}},k=function(e,t){return 4&t?h:8&t?d:16&t?h.body:e},E=function(e){return 0!==(2&e)},O="s-id",$="sty-id",x="c-id",S="http://www.w3.org/1999/xlink",C=function(e,t){return void 0===t&&(t=""),function(){}},j=new WeakMap,T=function(e,t,n){var r=ze.get(e);g&&n?(r=r||new CSSStyleSheet).replace(t):r=t,ze.set(e,r)},P=function(e,t,n,r){var o=R(t,n),i=ze.get(o);if(e=11===e.nodeType?e:h,i)if("string"===typeof i){e=e.head||e;var l=j.get(e),u=void 0;if(l||j.set(e,l=new Set),!l.has(o)){if(e.host&&(u=e.querySelector('[sty-id="'+o+'"]')))u.innerHTML=i;else{if(m.$cssShim$){var s=(u=m.$cssShim$.createHostStyle(r,o,i,!!(10&t.$flags$)))["s-sc"];s&&(o=s,l=null)}else(u=h.createElement("style")).innerHTML=i;e.insertBefore(u,e.querySelector("link"))}l&&l.add(o)}}else e.adoptedStyleSheets.includes(i)||(e.adoptedStyleSheets=Object(a.e)(Object(a.e)([],e.adoptedStyleSheets),[i]));return o},R=function(e,t){return"sc-"+(t&&32&e.$flags$?e.$tagName$+"-"+t:e.$tagName$)},_=function(e){return e.replace(/\/\*!@([^\/]+)\*\/[^\{]+\{/g,"$1{")},L=function(e){return Ve.push(e)},I=function(e){return Le(e).$modeName$},N={},A=function(e){return"object"===(e=typeof e)||"function"===e},D=function(e,t){for(var n=[],r=2;r0&&(d.$children$=s),d.$key$=i,d.$name$=a,d},M=function(e,t){var n={$flags$:0,$tag$:e,$text$:t,$elm$:null,$children$:null,$attrs$:null,$key$:null,$name$:null};return n},B={},z={forEach:function(e,t){return e.map(V).forEach(t)},map:function(e,t){return e.map(V).map(t).map(H)}},V=function(e){return{vattrs:e.$attrs$,vchildren:e.$children$,vkey:e.$key$,vname:e.$name$,vtag:e.$tag$,vtext:e.$text$}},H=function(e){if("function"===typeof e.vtag){var t=Object.assign({},e.vattrs);return e.vkey&&(t.key=e.vkey),e.vname&&(t.name=e.vname),D.apply(void 0,Object(a.e)([e.vtag,t],e.vchildren||[]))}var n=M(e.vtag,e.vtext);return n.$attrs$=e.vattrs,n.$children$=e.vchildren,n.$key$=e.vkey,n.$name$=e.vname,n},F=function(e,t,n,r,o,i){if(n!==r){var a=Ae(e,t),l=t.toLowerCase();if("class"===t){var u=e.classList,s=W(n),c=W(r);u.remove.apply(u,s.filter((function(e){return e&&!c.includes(e)}))),u.add.apply(u,c.filter((function(e){return e&&!s.includes(e)})))}else if("style"===t){for(var f in n)r&&null!=r[f]||(f.includes("-")?e.style.removeProperty(f):e.style[f]="");for(var f in r)n&&r[f]===n[f]||(f.includes("-")?e.style.setProperty(f,r[f]):e.style[f]=r[f])}else if("key"===t);else if("ref"===t)r&&r(e);else if(a||"o"!==t[0]||"n"!==t[1]){var p=A(r);if((a||p&&null!==r)&&!o)try{if(e.tagName.includes("-"))e[t]=r;else{var h=null==r?"":r;"list"===t?a=!1:null!=n&&e[t]==h||(e[t]=h)}}catch(y){}var v=!1;l!==(l=l.replace(/^xlink\:?/,""))&&(t=l,v=!0),null==r||!1===r?!1===r&&""!==e.getAttribute(t)||(v?e.removeAttributeNS(S,t):e.removeAttribute(t)):(!a||4&i||o)&&!p&&(r=!0===r?"":r,v?e.setAttributeNS(S,t,r):e.setAttribute(t,r))}else t="-"===t[2]?t.slice(3):Ae(d,l)?l.slice(2):l[2]+t.slice(3),n&&m.rel(e,t,n,!1),r&&m.ael(e,t,r,!1)}},U=/\s/,W=function(e){return e?e.split(U):[]},q=function(e,t,n,r){var o=11===t.$elm$.nodeType&&t.$elm$.host?t.$elm$.host:t.$elm$,i=e&&e.$attrs$||N,a=t.$attrs$||N;for(r in i)r in a||F(o,r,i[r],void 0,n,t.$flags$);for(r in a)F(o,r,i[r],a[r],n,t.$flags$)},X=function e(t,n,a,u){var f,d,p,m=n.$children$[a],v=0;if(l||(s=!0,"slot"===m.$tag$&&(r&&u.classList.add(r+"-s"),m.$flags$|=m.$children$?2:1)),null!==m.$text$)f=m.$elm$=h.createTextNode(m.$text$);else if(1&m.$flags$)f=m.$elm$=h.createTextNode("");else{if(c||(c="svg"===m.$tag$),f=m.$elm$=h.createElementNS(c?"http://www.w3.org/2000/svg":"http://www.w3.org/1999/xhtml",2&m.$flags$?"slot-fb":m.$tag$),c&&"foreignObject"===m.$tag$&&(c=!1),q(null,m,c),function(e){return null!=e}(r)&&f["s-si"]!==r&&f.classList.add(f["s-si"]=r),m.$children$)for(v=0;v=0;o--){var a=r[o];a["s-hn"]!==i&&a["s-ol"]&&(ee(a).insertBefore(a,Z(a)),a["s-ol"].remove(),a["s-ol"]=void 0,s=!0),n&&e(a,n)}m.$flags$&=-2},G=function(e,t,n,r,o,a){var l,u=e["s-cr"]&&e["s-cr"].parentNode||e;for(u.shadowRoot&&u.tagName===i&&(u=u.shadowRoot);o<=a;++o)r[o]&&(l=X(null,n,o,e))&&(r[o].$elm$=l,u.insertBefore(l,Z(t)))},Q=function(e,t,n,r,o){for(;t<=n;++t)(r=e[t])&&(o=r.$elm$,ae(r),u=!0,o["s-ol"]?o["s-ol"].remove():Y(o,!0),o.remove())},K=function(e,t,n,r){for(var o,i,a=0,l=0,u=0,s=0,c=t.length-1,f=t[0],d=t[c],p=r.length-1,h=r[0],m=r[p];a<=c&&l<=p;)if(null==f)f=t[++a];else if(null==d)d=t[--c];else if(null==h)h=r[++l];else if(null==m)m=r[--p];else if(J(f,h))te(f,h),f=t[++a],h=r[++l];else if(J(d,m))te(d,m),d=t[--c],m=r[--p];else if(J(f,m))"slot"!==f.$tag$&&"slot"!==m.$tag$||Y(f.$elm$.parentNode,!1),te(f,m),e.insertBefore(f.$elm$,d.$elm$.nextSibling),f=t[++a],m=r[--p];else if(J(d,h))"slot"!==f.$tag$&&"slot"!==m.$tag$||Y(d.$elm$.parentNode,!1),te(d,h),e.insertBefore(d.$elm$,f.$elm$),d=t[--c],h=r[++l];else{for(u=-1,s=a;s<=c;++s)if(t[s]&&null!==t[s].$key$&&t[s].$key$===h.$key$){u=s;break}u>=0?((i=t[u]).$tag$!==h.$tag$?o=X(t&&t[l],n,u,e):(te(i,h),t[u]=void 0,o=i.$elm$),h=r[++l]):(o=X(t&&t[l],n,l,e),h=r[++l]),o&&ee(f.$elm$).insertBefore(o,Z(f.$elm$))}a>c?G(e,null==r[p+1]?null:r[p+1].$elm$,n,r,l,p):l>p&&Q(t,a,c)},J=function(e,t){return e.$tag$===t.$tag$&&("slot"===e.$tag$?e.$name$===t.$name$:e.$key$===t.$key$)},Z=function(e){return e&&e["s-ol"]||e},ee=function(e){return(e["s-ol"]?e["s-ol"]:e).parentNode},te=function(e,t){var n,r=t.$elm$=e.$elm$,o=e.$children$,i=t.$children$,a=t.$tag$,l=t.$text$;null===l?(c="svg"===a||"foreignObject"!==a&&c,"slot"===a||q(e,t,c),null!==o&&null!==i?K(r,o,t,i):null!==i?(null!==e.$text$&&(r.textContent=""),G(r,null,t,i,0,i.length-1)):null!==o&&Q(o,0,o.length-1),c&&"svg"===a&&(c=!1)):(n=r["s-cr"])?n.parentNode.textContent=l:e.$text$!==l&&(r.data=l)},ne=function e(t){var n,r,o,i,a,l,u=t.childNodes;for(r=0,o=u.length;r=0;l--)(r=o[l])["s-cn"]||r["s-nr"]||r["s-hn"]===n["s-hn"]||(ie(r,i)?(a=re.find((function(e){return e.$nodeToRelocate$===r})),u=!0,r["s-sn"]=r["s-sn"]||i,a?a.$slotRefNode$=n:re.push({$slotRefNode$:n,$nodeToRelocate$:r}),r["s-sr"]&&re.map((function(e){ie(e.$nodeToRelocate$,r["s-sn"])&&(a=re.find((function(e){return e.$nodeToRelocate$===r})),a&&!e.$slotRefNode$&&(e.$slotRefNode$=a.$slotRefNode$))}))):re.some((function(e){return e.$nodeToRelocate$===r}))||re.push({$nodeToRelocate$:r}));1===n.nodeType&&e(n)}},ie=function(e,t){return 1===e.nodeType?null===e.getAttribute("slot")&&""===t||e.getAttribute("slot")===t:e["s-sn"]===t||""===t},ae=function e(t){t.$attrs$&&t.$attrs$.ref&&t.$attrs$.ref(null),t.$children$&&t.$children$.map(e)},le=function(e,t){var n=e.$hostElement$,a=e.$cmpMeta$,c=e.$vnode$||M(null,null),f=function(e){return e&&e.$tag$===B}(t)?t:D(null,null,t);if(i=n.tagName,a.$attrsToReflect$&&(f.$attrs$=f.$attrs$||{},a.$attrsToReflect$.map((function(e){var t=e[0],r=e[1];return f.$attrs$[r]=n[t]}))),f.$tag$=null,f.$flags$|=4,e.$vnode$=f,f.$elm$=c.$elm$=n.shadowRoot||n,r=n["s-sc"],o=n["s-cr"],l=v&&0!==(1&a.$flags$),u=!1,te(c,f),m.$flags$|=1,s){oe(f.$elm$);for(var d=void 0,p=void 0,y=void 0,g=void 0,b=void 0,w=void 0,k=0;k=0;f--)e(t,n,r,o,i,a.childNodes[f],l);if(a.shadowRoot)for(f=a.shadowRoot.childNodes.length-1;f>=0;f--)e(t,n,r,o,i,a.shadowRoot.childNodes[f],l)}else if(8===a.nodeType)(s=a.nodeValue.split("."))[1]!==l&&"0"!==s[1]||(u=s[0],c={$flags$:0,$hostId$:s[1],$nodeId$:s[2],$depth$:s[3],$index$:s[4],$elm$:a,$attrs$:null,$children$:null,$key$:null,$name$:null,$tag$:null,$text$:null},"t"===u?(c.$elm$=a.nextSibling,c.$elm$&&3===c.$elm$.nodeType&&(c.$text$=c.$elm$.textContent,n.push(c),a.remove(),t.$children$||(t.$children$=[]),t.$children$[c.$index$]=c,o&&"0"===c.$depth$&&(o[c.$index$]=c.$elm$))):c.$hostId$===l&&("s"===u?(c.$tag$="slot",s[5]?a["s-sn"]=c.$name$=s[5]:a["s-sn"]="",a["s-sr"]=!0,o&&(c.$elm$=h.createElement(c.$tag$),c.$name$&&c.$elm$.setAttribute("name",c.$name$),a.parentNode.insertBefore(c.$elm$,a),a.remove(),"0"===c.$depth$&&(o[c.$index$]=c.$elm$)),r.push(c),t.$children$||(t.$children$=[]),t.$children$[c.$index$]=c):"r"===u&&(o?a.remove():(i["s-cr"]=a,a["s-cn"]=!0))));else if(t&&"style"===t.$tag$){var d=M(null,a.textContent);d.$elm$=a,d.$index$="0",t.$children$=[d]}},Oe=function e(t,n){if(1===t.nodeType){for(var r=0;r0)&&m.raf(e)},Xe=function(e){return y().then(e)},Ye=Ue(He,!1),Ge=Ue(Fe,!0),Qe={isDev:!1,isBrowser:!0,isServer:!1,isTesting:!1}},function(e,t,n){"use strict";n.d(t,"a",(function(){return a})),n.d(t,"b",(function(){return E})),n.d(t,"c",(function(){return g})),n.d(t,"d",(function(){return i})),n.d(t,"e",(function(){return O}));var r,o=n(17),i=function(e){return l(e)},a=function(e,t){return"string"===typeof e&&(t=e,e=void 0),i(e).includes(t)},l=function(e){if(void 0===e&&(e=window),"undefined"===typeof e)return[];e.Ionic=e.Ionic||{};var t=e.Ionic.platforms;return null==t&&(t=e.Ionic.platforms=u(e)).forEach((function(t){return e.document.documentElement.classList.add("plt-"+t)})),t},u=function(e){return Object.keys(y).filter((function(t){return y[t](e)}))},s=function(e){return!!m(e,/iPad/i)||!(!m(e,/Macintosh/i)||!f(e))},c=function(e){return m(e,/android|sink/i)},f=function(e){return v(e,"(any-pointer:coarse)")},d=function(e){return p(e)||h(e)},p=function(e){return!!(e.cordova||e.phonegap||e.PhoneGap)},h=function(e){var t=e.Capacitor;return!(!t||!t.isNative)},m=function(e,t){return t.test(e.navigator.userAgent)},v=function(e,t){return e.matchMedia(t).matches},y={ipad:s,iphone:function(e){return m(e,/iPhone/i)},ios:function(e){return m(e,/iPhone|iPod/i)||s(e)},android:c,phablet:function(e){var t=e.innerWidth,n=e.innerHeight,r=Math.min(t,n),o=Math.max(t,n);return r>390&&r<520&&o>620&&o<800},tablet:function(e){var t=e.innerWidth,n=e.innerHeight,r=Math.min(t,n),o=Math.max(t,n);return s(e)||function(e){return c(e)&&!m(e,/mobile/i)}(e)||r>460&&r<820&&o>780&&o<1400},cordova:p,capacitor:h,electron:function(e){return m(e,/electron/i)},pwa:function(e){return!(!e.matchMedia("(display-mode: standalone)").matches&&!e.navigator.standalone)},mobile:f,mobileweb:function(e){return f(e)&&!d(e)},desktop:function(e){return!f(e)},hybrid:d},g=new(function(){function e(){this.m=new Map}return e.prototype.reset=function(e){this.m=new Map(Object.entries(e))},e.prototype.get=function(e,t){var n=this.m.get(e);return void 0!==n?n:t},e.prototype.getBoolean=function(e,t){void 0===t&&(t=!1);var n=this.m.get(e);return void 0===n?t:"string"===typeof n?"true"===n:!!n},e.prototype.getNumber=function(e,t){var n=parseFloat(this.m.get(e));return isNaN(n)?void 0!==t?t:NaN:n},e.prototype.set=function(e,t){this.m.set(e,t)},e}()),b=function(e,t){return e.substr(0,t.length)===t},w="ionic:",k="ionic-persist-config",E=function(e){return e&&Object(o.i)(e)||r},O=function(e){if(void 0===e&&(e={}),"undefined"!==typeof window){var t=window.document,n=window,i=n.Ionic=n.Ionic||{};l(n);var u=Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},function(e){try{var t=e.sessionStorage.getItem(k);return null!==t?JSON.parse(t):{}}catch(n){return{}}}(n)),{persistConfig:!1}),i.config),function(e){var t={};return e.location.search.slice(1).split("&").map((function(e){return e.split("=")})).map((function(e){var t=e[0],n=e[1];return[decodeURIComponent(t),decodeURIComponent(n)]})).filter((function(e){var t=e[0];return b(t,w)})).map((function(e){var t=e[0],n=e[1];return[t.slice(w.length),n]})).forEach((function(e){var n=e[0],r=e[1];t[n]=r})),t}(n)),e);g.reset(u),g.getBoolean("persistConfig")&&function(e,t){try{e.sessionStorage.setItem(k,JSON.stringify(t))}catch(n){return}}(n,u),i.config=g,i.mode=r=g.get("mode",t.documentElement.getAttribute("mode")||(a(n,"ios")?"ios":"md")),g.set("mode",r),t.documentElement.setAttribute("mode",r),t.documentElement.classList.add(r),g.getBoolean("_testing")&&g.set("animated",!1);var s=function(e){return e.tagName&&e.tagName.startsWith("ION-")},c=function(e){return["ios","md"].includes(e)};Object(o.p)((function(e){for(;e;){var t=e.mode||e.getAttribute("mode");if(t){if(c(t))return t;s(e)&&console.warn('Invalid ionic mode: "'+t+'", expected: "ios" or "md"')}e=e.parentElement}return r}))}}},function(e,t,n){"use strict";n.d(t,"a",(function(){return O})),n.d(t,"b",(function(){return T})),n.d(t,"d",(function(){return R})),n.d(t,"c",(function(){return m})),n.d(t,"f",(function(){return v})),n.d(t,"e",(function(){return h}));var r=n(16);function o(e){return"/"===e.charAt(0)}function i(e,t){for(var n=t,r=n+1,o=e.length;r=0;d--){var p=a[d];"."===p?i(a,d):".."===p?(i(a,d),f++):f&&(i(a,d),f--)}if(!s)for(;f--;f)a.unshift("..");!s||""===a[0]||a[0]&&o(a[0])||a.unshift("");var h=a.join("/");return n&&"/"!==h.substr(-1)&&(h+="/"),h};function l(e){return e.valueOf?e.valueOf():Object.prototype.valueOf.call(e)}var u=function e(t,n){if(t===n)return!0;if(null==t||null==n)return!1;if(Array.isArray(t))return Array.isArray(n)&&t.length===n.length&&t.every((function(t,r){return e(t,n[r])}));if("object"===typeof t||"object"===typeof n){var r=l(t),o=l(n);return r!==t||o!==n?e(r,o):Object.keys(Object.assign({},t,n)).every((function(r){return e(t[r],n[r])}))}return!1},s=n(23);function c(e){return"/"===e.charAt(0)?e:"/"+e}function f(e){return"/"===e.charAt(0)?e.substr(1):e}function d(e,t){return function(e,t){return 0===e.toLowerCase().indexOf(t.toLowerCase())&&-1!=="/?#".indexOf(e.charAt(t.length))}(e,t)?e.substr(t.length):e}function p(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function h(e){var t=e.pathname,n=e.search,r=e.hash,o=t||"/";return n&&"?"!==n&&(o+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(o+="#"===r.charAt(0)?r:"#"+r),o}function m(e,t,n,o){var i;"string"===typeof e?(i=function(e){var t=e||"/",n="",r="",o=t.indexOf("#");-1!==o&&(r=t.substr(o),t=t.substr(0,o));var i=t.indexOf("?");return-1!==i&&(n=t.substr(i),t=t.substr(0,i)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e),i.state=t):(void 0===(i=Object(r.a)({},e)).pathname&&(i.pathname=""),i.search?"?"!==i.search.charAt(0)&&(i.search="?"+i.search):i.search="",i.hash?"#"!==i.hash.charAt(0)&&(i.hash="#"+i.hash):i.hash="",void 0!==t&&void 0===i.state&&(i.state=t));try{i.pathname=decodeURI(i.pathname)}catch(l){throw l instanceof URIError?new URIError('Pathname "'+i.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):l}return n&&(i.key=n),o?i.pathname?"/"!==i.pathname.charAt(0)&&(i.pathname=a(i.pathname,o.pathname)):i.pathname=o.pathname:i.pathname||(i.pathname="/"),i}function v(e,t){return e.pathname===t.pathname&&e.search===t.search&&e.hash===t.hash&&e.key===t.key&&u(e.state,t.state)}function y(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,o){if(null!=e){var i="function"===typeof e?e(t,n):e;"string"===typeof i?"function"===typeof r?r(i,o):o(!0):o(!1!==i)}else o(!0)},appendListener:function(e){var n=!0;function r(){n&&e.apply(void 0,arguments)}return t.push(r),function(){n=!1,t=t.filter((function(e){return e!==r}))}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),r=0;rt?n.splice(t,n.length-t,o):n.push(o),f({action:r,location:o,index:t,entries:n})}}))},replace:function(e,t){var r="REPLACE",o=m(e,t,d(),w.location);c.confirmTransitionTo(o,r,n,(function(e){e&&(w.entries[w.index]=o,f({action:r,location:o}))}))},go:b,goBack:function(){b(-1)},goForward:function(){b(1)},canGo:function(e){var t=w.index+e;return t>=0&&t .ion-page, :scope > ion-nav, :scope > ion-tabs");return t||e}},function(e,t,n){"use strict";n.d(t,"a",(function(){return A})),n.d(t,"b",(function(){return c})),n.d(t,"c",(function(){return f})),n.d(t,"d",(function(){return m})),n.d(t,"e",(function(){return S})),n.d(t,"f",(function(){return y})),n.d(t,"g",(function(){return j})),n.d(t,"h",(function(){return R})),n.d(t,"i",(function(){return u})),n.d(t,"j",(function(){return L})),n.d(t,"k",(function(){return d})),n.d(t,"l",(function(){return p})),n.d(t,"m",(function(){return h})),n.d(t,"n",(function(){return N})),n.d(t,"o",(function(){return v}));var r=n(2),o=n(18),i=n(29),a=n(14),l=0,u=new WeakMap,s=function(e){return{create:function(t){return g(e,t)},dismiss:function(t,n,r){return O(document,t,n,e,r)},getTop:function(){return Object(r.a)(this,void 0,void 0,(function(){return Object(r.c)(this,(function(t){return[2,$(document,e)]}))}))}}},c=s("ion-alert"),f=s("ion-action-sheet"),d=s("ion-loading"),p=s("ion-modal"),h=s("ion-picker"),m=s("ion-popover"),v=s("ion-toast"),y=function(e){"undefined"!==typeof document&&E(document);var t=l++;e.overlayIndex=t,e.hasAttribute("id")||(e.id="ion-overlay-"+t)},g=function(e,t){return"undefined"!==typeof customElements?customElements.whenDefined(e).then((function(){var n=document.createElement(e);return n.classList.add("overlay-hidden"),Object.assign(n,t),T(document).appendChild(n),new Promise((function(e){return Object(a.c)(n,e)}))})):Promise.resolve()},b='[tabindex]:not([tabindex^="-"]), input:not([type=hidden]):not([tabindex^="-"]), textarea:not([tabindex^="-"]), button:not([tabindex^="-"]), select:not([tabindex^="-"]), .ion-focusable:not([tabindex^="-"])',w="input:not([type=hidden]), textarea, button, select",k=function(e,t){var n=$(t),r=e.target;if(n&&r)if(n===r)n.lastFocus=void 0;else{var o=Object(a.g)(n);if(!o.contains(r))return;var i=o.querySelector(".ion-overlay-wrapper");if(!i)return;if(i.contains(r))n.lastFocus=r;else{var l=n.lastFocus;!function(e,t){var n=e.querySelector(b),r=n&&n.shadowRoot;r&&(n=r.querySelector(w)||n),n?n.focus():t.focus()}(i,n),l===t.activeElement&&function(e,t){var n=Array.from(e.querySelectorAll(b)),r=n.length>0?n[n.length-1]:null,o=r&&r.shadowRoot;o&&(r=o.querySelector(w)||r),r?r.focus():t.focus()}(i,n),n.lastFocus=t.activeElement}}},E=function(e){0===l&&(l=1,e.addEventListener("focus",(function(t){return k(t,e)}),!0),e.addEventListener("ionBackButton",(function(t){var n=$(e);n&&n.backdropDismiss&&t.detail.register(i.OVERLAY_BACK_BUTTON_PRIORITY,(function(){return n.dismiss(void 0,A)}))})),e.addEventListener("keyup",(function(t){if("Escape"===t.key){var n=$(e);n&&n.backdropDismiss&&n.dismiss(void 0,A)}})))},O=function(e,t,n,r,o){var i=$(e,r,o);return i?i.dismiss(t,n):Promise.reject("overlay does not exist")},$=function(e,t,n){var r=function(e,t){return void 0===t&&(t="ion-alert,ion-action-sheet,ion-loading,ion-modal,ion-picker,ion-popover,ion-toast"),Array.from(e.querySelectorAll(t)).filter((function(e){return e.overlayIndex>0}))}(e,t);return void 0===n?r[r.length-1]:r.find((function(e){return e.id===n}))},x=function(e){void 0===e&&(e=!1);var t=T(document).querySelector("ion-router-outlet, ion-nav, #ion-view-container-root");t&&(e?t.setAttribute("aria-hidden","true"):t.removeAttribute("aria-hidden"))},S=function(e,t,n,i,a){return Object(r.a)(void 0,void 0,void 0,(function(){var l,u;return Object(r.c)(this,(function(r){switch(r.label){case 0:return e.presented?[2]:(x(!0),e.presented=!0,e.willPresent.emit(),l=Object(o.b)(e),u=e.enterAnimation?e.enterAnimation:o.c.get(t,"ios"===l?n:i),[4,P(e,u,e.el,a)]);case 1:return r.sent()&&e.didPresent.emit(),"ION-TOAST"!==e.el.tagName&&C(e.el),e.keyboardClose&&e.el.focus(),[2]}}))}))},C=function(e){return Object(r.a)(void 0,void 0,void 0,(function(){var t,n;return Object(r.c)(this,(function(r){switch(r.label){case 0:return(t=document.activeElement)?((n=t&&t.shadowRoot)&&(t=n.querySelector(w)||t),[4,e.onDidDismiss()]):[2];case 1:return r.sent(),t.focus(),[2]}}))}))},j=function(e,t,n,i,a,l,s){return Object(r.a)(void 0,void 0,void 0,(function(){var c,f,d;return Object(r.c)(this,(function(r){switch(r.label){case 0:if(!e.presented)return[2,!1];x(!1),e.presented=!1,r.label=1;case 1:return r.trys.push([1,4,,5]),e.el.style.setProperty("pointer-events","none"),e.willDismiss.emit({data:t,role:n}),c=Object(o.b)(e),f=e.leaveAnimation?e.leaveAnimation:o.c.get(i,"ios"===c?a:l),"gesture"===n?[3,3]:[4,P(e,f,e.el,s)];case 2:r.sent(),r.label=3;case 3:return e.didDismiss.emit({data:t,role:n}),u.delete(e),[3,5];case 4:return d=r.sent(),console.error(d),[3,5];case 5:return e.el.remove(),[2,!0]}}))}))},T=function(e){return e.querySelector("ion-app")||e.body},P=function(e,t,n,i){return Object(r.a)(void 0,void 0,void 0,(function(){var a,l,s;return Object(r.c)(this,(function(c){switch(c.label){case 0:return n.classList.remove("overlay-hidden"),a=n.shadowRoot||e.el,l=t(a,i),e.animated&&o.c.getBoolean("animated",!0)||l.duration(0),e.keyboardClose&&l.beforeAddWrite((function(){var e=n.ownerDocument.activeElement;e&&e.matches("input, ion-input, ion-textarea")&&e.blur()})),s=u.get(e)||[],u.set(e,Object(r.e)(Object(r.e)([],s),[l])),[4,l.play()];case 1:return c.sent(),[2,!0]}}))}))},R=function(e,t){var n,r=new Promise((function(e){return n=e}));return _(e,t,(function(e){n(e.detail)})),r},_=function(e,t,n){Object(a.a)(e,t,(function r(o){Object(a.b)(e,t,r),n(o)}))},L=function(e){return"cancel"===e||e===A},I=function(e){return e()},N=function(e,t){if("function"===typeof e)return o.c.get("_zoneGate",I)((function(){try{return e(t)}catch(n){console.error(n)}}))},A="backdrop"},function(e,t,n){"use strict";function r(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}n.d(t,"a",(function(){return r}))},function(e,t,n){"use strict";!function e(){if("undefined"!==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"===typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}(),e.exports=n(52)},function(e,t,n){"use strict";n.r(t),n.d(t,"MENU_BACK_BUTTON_PRIORITY",(function(){return l})),n.d(t,"OVERLAY_BACK_BUTTON_PRIORITY",(function(){return a})),n.d(t,"blockHardwareBackButton",(function(){return o})),n.d(t,"startHardwareBackButton",(function(){return i}));var r=n(2),o=function(){document.addEventListener("backbutton",(function(){}))},i=function(){var e=document,t=!1;e.addEventListener("backbutton",(function(){if(!t){var n=0,o=[],i=new CustomEvent("ionBackButton",{bubbles:!1,detail:{register:function(e,t){o.push({priority:e,handler:t,id:n++})}}});e.dispatchEvent(i);var a=function(e){return Object(r.a)(void 0,void 0,void 0,(function(){var t,n;return Object(r.c)(this,(function(r){switch(r.label){case 0:return r.trys.push([0,3,,4]),e&&e.handler?null==(t=e.handler(l))?[3,2]:[4,t]:[3,2];case 1:r.sent(),r.label=2;case 2:return[3,4];case 3:return n=r.sent(),console.error(n),[3,4];case 4:return[2]}}))}))},l=function(){if(o.length>0){var e={priority:Number.MIN_SAFE_INTEGER,handler:function(){},id:-1};o.forEach((function(t){t.priority>=e.priority&&(e=t)})),t=!0,o=o.filter((function(t){return t.id!==e.id})),a(e).then((function(){return t=!1}))}};l()}}))},a=100,l=99},function(e,t,n){"use strict";n.d(t,"a",(function(){return l}));var r=function(){function e(){this.gestureId=0,this.requestedStart=new Map,this.disabledGestures=new Map,this.disabledScroll=new Set}return e.prototype.createGesture=function(e){return new o(this,this.newID(),e.name,e.priority||0,!!e.disableScroll)},e.prototype.createBlocker=function(e){return void 0===e&&(e={}),new i(this,this.newID(),e.disable,!!e.disableScroll)},e.prototype.start=function(e,t,n){return this.canStart(e)?(this.requestedStart.set(t,n),!0):(this.requestedStart.delete(t),!1)},e.prototype.capture=function(e,t,n){if(!this.start(e,t,n))return!1;var r=this.requestedStart,o=-1e4;if(r.forEach((function(e){o=Math.max(o,e)})),o===n){this.capturedId=t,r.clear();var i=new CustomEvent("ionGestureCaptured",{detail:{gestureName:e}});return document.dispatchEvent(i),!0}return r.delete(t),!1},e.prototype.release=function(e){this.requestedStart.delete(e),this.capturedId===e&&(this.capturedId=void 0)},e.prototype.disableGesture=function(e,t){var n=this.disabledGestures.get(e);void 0===n&&(n=new Set,this.disabledGestures.set(e,n)),n.add(t)},e.prototype.enableGesture=function(e,t){var n=this.disabledGestures.get(e);void 0!==n&&n.delete(t)},e.prototype.disableScroll=function(e){this.disabledScroll.add(e),1===this.disabledScroll.size&&document.body.classList.add(a)},e.prototype.enableScroll=function(e){this.disabledScroll.delete(e),0===this.disabledScroll.size&&document.body.classList.remove(a)},e.prototype.canStart=function(e){return void 0===this.capturedId&&!this.isDisabled(e)},e.prototype.isCaptured=function(){return void 0!==this.capturedId},e.prototype.isScrollDisabled=function(){return this.disabledScroll.size>0},e.prototype.isDisabled=function(e){var t=this.disabledGestures.get(e);return!!(t&&t.size>0)},e.prototype.newID=function(){return this.gestureId++,this.gestureId},e}(),o=function(){function e(e,t,n,r,o){this.id=t,this.name=n,this.disableScroll=o,this.priority=1e6*r+t,this.ctrl=e}return e.prototype.canStart=function(){return!!this.ctrl&&this.ctrl.canStart(this.name)},e.prototype.start=function(){return!!this.ctrl&&this.ctrl.start(this.name,this.id,this.priority)},e.prototype.capture=function(){if(!this.ctrl)return!1;var e=this.ctrl.capture(this.name,this.id,this.priority);return e&&this.disableScroll&&this.ctrl.disableScroll(this.id),e},e.prototype.release=function(){this.ctrl&&(this.ctrl.release(this.id),this.disableScroll&&this.ctrl.enableScroll(this.id))},e.prototype.destroy=function(){this.release(),this.ctrl=void 0},e}(),i=function(){function e(e,t,n,r){this.id=t,this.disable=n,this.disableScroll=r,this.ctrl=e}return e.prototype.block=function(){if(this.ctrl){if(this.disable)for(var e=0,t=this.disable;ee.length)&&(t=e.length);for(var n=0,r=new Array(t);n ion-content"),g=h.querySelectorAll(":scope > ion-header > *:not(ion-toolbar), :scope > ion-footer > *"),b=h.querySelectorAll(":scope > ion-header > ion-toolbar"),w=Object(r.a)(),k=Object(r.a)();if(w.addElement(h).duration(t.duration||540).easing(t.easing||"cubic-bezier(0.32,0.72,0,1)").fill("both").beforeRemoveClass("ion-page-invisible"),m&&e){var E=Object(r.a)();E.addElement(e),w.addAnimation(E)}if(y||0!==b.length||0!==g.length?(k.addElement(y),k.addElement(g)):k.addElement(h.querySelector(":scope > .ion-page, :scope > ion-nav, :scope > ion-tabs")),w.addAnimation(k),v?k.beforeClearStyles([n]).fromTo("transform","translateX("+p+")","translateX(0%)").fromTo(n,.8,1):k.beforeClearStyles([n]).fromTo("transform","translateX("+d+")","translateX(0%)"),y){var O=a(y).querySelector(".transition-effect");if(O){var $=O.querySelector(".transition-cover"),x=O.querySelector(".transition-shadow"),S=Object(r.a)(),C=Object(r.a)(),j=Object(r.a)();S.addElement(O).beforeStyles({opacity:"1",display:"block"}).afterStyles({opacity:"",display:""}),C.addElement($).beforeClearStyles([n]).fromTo(n,0,.1),j.addElement(x).beforeClearStyles([n]).fromTo(n,.03,.7),S.addAnimation([C,j]),k.addAnimation([S])}}var T=h.querySelector("ion-header.header-collapse-condense"),P=function(e,t,n,r,o){var i=u(r,n),a=l(o),f=l(r),d=u(o,n),p=null!==i&&null!==a&&!n,h=null!==f&&null!==d&&n;if(p){var m=a.getBoundingClientRect(),v=i.getBoundingClientRect();c(e,t,n,a,m,v),s(e,t,n,i,m,v)}else if(h){var y=f.getBoundingClientRect(),g=d.getBoundingClientRect();c(e,t,n,f,y,g),s(e,t,n,d,y,g)}return{forward:p,backward:h}}(w,f,v,h,m),R=P.forward,_=P.backward;if(b.forEach((function(e){var t=Object(r.a)();t.addElement(e),w.addAnimation(t);var o=Object(r.a)();o.addElement(e.querySelector("ion-title"));var i,l=Object(r.a)(),u=Array.from(e.querySelectorAll("ion-buttons,[menuToggle]")),s=e.closest("ion-header"),c=s&&s.classList.contains("header-collapse-condense-inactive");i=v?u.filter((function(e){var t=e.classList.contains("buttons-collapse");return t&&!c||!t})):u.filter((function(e){return!e.classList.contains("buttons-collapse")})),l.addElement(i);var h=Object(r.a)();h.addElement(e.querySelectorAll(":scope > *:not(ion-title):not(ion-buttons):not([menuToggle])"));var m=Object(r.a)();m.addElement(a(e).querySelector(".toolbar-background"));var y=Object(r.a)(),g=e.querySelector("ion-back-button");if(g&&y.addElement(g),t.addAnimation([o,l,h,m,y]),l.fromTo(n,.01,1),h.fromTo(n,.01,1),v)c||o.fromTo("transform","translateX("+p+")","translateX(0%)").fromTo(n,.01,1),h.fromTo("transform","translateX("+p+")","translateX(0%)"),y.fromTo(n,.01,1);else if(T||o.fromTo("transform","translateX("+d+")","translateX(0%)").fromTo(n,.01,1),h.fromTo("transform","translateX("+d+")","translateX(0%)"),m.beforeClearStyles([n,"transform"]),(null===s||void 0===s?void 0:s.translucent)?m.fromTo("transform",f?"translateX(-100%)":"translateX(100%)","translateX(0px)"):m.fromTo(n,.01,"var(--opacity)"),R||y.fromTo(n,.01,1),g&&!R){var b=Object(r.a)();b.addElement(a(g).querySelector(".button-text")).fromTo("transform",f?"translateX(-100px)":"translateX(100px)","translateX(0px)"),t.addAnimation(b)}})),m){var L=Object(r.a)(),I=m.querySelector(":scope > ion-content"),N=m.querySelectorAll(":scope > ion-header > ion-toolbar"),A=m.querySelectorAll(":scope > ion-header > *:not(ion-toolbar), :scope > ion-footer > *");if(I||0!==N.length||0!==A.length?(L.addElement(I),L.addElement(A)):L.addElement(m.querySelector(":scope > .ion-page, :scope > ion-nav, :scope > ion-tabs")),w.addAnimation(L),v){L.beforeClearStyles([n]).fromTo("transform","translateX(0%)",f?"translateX(-100%)":"translateX(100%)");var D=Object(o.e)(m);w.afterAddWrite((function(){"normal"===w.getDirection()&&D.style.setProperty("display","none")}))}else L.fromTo("transform","translateX(0%)","translateX("+p+")").fromTo(n,1,.8);if(I){var M=a(I).querySelector(".transition-effect");if(M){var B=M.querySelector(".transition-cover"),z=M.querySelector(".transition-shadow"),V=Object(r.a)(),H=Object(r.a)(),F=Object(r.a)();V.addElement(M).beforeStyles({opacity:"1",display:"block"}).afterStyles({opacity:"",display:""}),H.addElement(B).beforeClearStyles([n]).fromTo(n,.1,0),F.addElement(z).beforeClearStyles([n]).fromTo(n,.7,.03),V.addAnimation([H,F]),L.addAnimation([V])}}N.forEach((function(e){var t=Object(r.a)();t.addElement(e);var o=Object(r.a)();o.addElement(e.querySelector("ion-title"));var l=Object(r.a)(),u=e.querySelectorAll("ion-buttons,[menuToggle]"),s=e.closest("ion-header"),c=s&&s.classList.contains("header-collapse-condense-inactive"),d=Array.from(u).filter((function(e){var t=e.classList.contains("buttons-collapse");return t&&!c||!t}));l.addElement(d);var h=Object(r.a)(),m=e.querySelectorAll(":scope > *:not(ion-title):not(ion-buttons):not([menuToggle])");m.length>0&&h.addElement(m);var y=Object(r.a)();y.addElement(a(e).querySelector(".toolbar-background"));var g=Object(r.a)(),b=e.querySelector("ion-back-button");if(b&&g.addElement(b),t.addAnimation([o,l,h,g,y]),w.addAnimation(t),g.fromTo(n,.99,0),l.fromTo(n,.99,0),h.fromTo(n,.99,0),v){if(c||o.fromTo("transform","translateX(0%)",f?"translateX(-100%)":"translateX(100%)").fromTo(n,.99,0),h.fromTo("transform","translateX(0%)",f?"translateX(-100%)":"translateX(100%)"),y.beforeClearStyles([n,"transform"]),(null===s||void 0===s?void 0:s.translucent)?y.fromTo("transform","translateX(0px)",f?"translateX(-100%)":"translateX(100%)"):y.fromTo(n,"var(--opacity)",0),b&&!_){var k=Object(r.a)();k.addElement(a(b).querySelector(".button-text")).fromTo("transform","translateX(0%)","translateX("+(f?-124:124)+"px)"),t.addAnimation(k)}}else c||o.fromTo("transform","translateX(0%)","translateX("+p+")").fromTo(n,.99,0).afterClearStyles([i,n]),h.fromTo("transform","translateX(0%)","translateX("+p+")").afterClearStyles([i,n]),g.afterClearStyles([n]),o.afterClearStyles([n]),l.afterClearStyles([n])}))}return w}catch(U){throw U}}},function(e,t,n){"use strict";n.r(t),n.d(t,"mdTransitionAnimation",(function(){return i}));var r=n(5),o=n(25),i=(n(14),n(17),function(e,t){var n="back"===t.direction,i=t.enteringEl,a=t.leavingEl,l=Object(o.e)(i),u=l.querySelector("ion-toolbar"),s=Object(r.a)();if(s.addElement(l).fill("both").beforeRemoveClass("ion-page-invisible"),n?s.duration(t.duration||200).easing("cubic-bezier(0.47,0,0.745,0.715)"):s.duration(t.duration||280).easing("cubic-bezier(0.36,0.66,0.04,1)").fromTo("transform","translateY(40px)","translateY(0px)").fromTo("opacity",.01,1),u){var c=Object(r.a)();c.addElement(u),s.addAnimation(c)}if(a&&n){s.duration(t.duration||200).easing("cubic-bezier(0.47,0,0.745,0.715)");var f=Object(r.a)();f.addElement(Object(o.e)(a)).onFinish((function(e){1===e&&f.elements.length>0&&f.elements[0].style.setProperty("display","none")})).fromTo("transform","translateY(0px)","translateY(40px)").fromTo("opacity",1,0),s.addAnimation(f)}return s})},,function(e,t,n){var r=n(62);e.exports=p,e.exports.parse=i,e.exports.compile=function(e,t){return l(i(e,t),t)},e.exports.tokensToFunction=l,e.exports.tokensToRegExp=d;var o=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function i(e,t){for(var n,r=[],i=0,a=0,l="",c=t&&t.delimiter||"/";null!=(n=o.exec(e));){var f=n[0],d=n[1],p=n.index;if(l+=e.slice(a,p),a=p+f.length,d)l+=d[1];else{var h=e[a],m=n[2],v=n[3],y=n[4],g=n[5],b=n[6],w=n[7];l&&(r.push(l),l="");var k=null!=m&&null!=h&&h!==m,E="+"===b||"*"===b,O="?"===b||"*"===b,$=n[2]||c,x=y||g;r.push({name:v||i++,prefix:m||"",delimiter:$,optional:O,repeat:E,partial:k,asterisk:!!w,pattern:x?s(x):w?".*":"[^"+u($)+"]+?"})}}return ai?1:p<-i?-1:0,s=!1,!0},isGesture:function(){return 0!==c},getDirection:function(){return c}}}(u.direction,u.threshold,u.maxAngle),O=r.a.createGesture({name:e.gestureName,priority:e.gesturePriority,disableScroll:e.disableScroll}),$=function(){t&&(a=!1,y&&y(k))},x=function(){return!(O&&!O.capture())&&(t=!0,o=!1,k.startX=k.currentX,k.startY=k.currentY,k.startTime=k.currentTime,p?p(k).then(S):S(),!0)},S=function(){w&&function(){if("undefined"!==typeof document){var e=document.activeElement;null!==e&&e.blur&&e.blur()}}(),h&&h(k),o=!0},C=function(){t=!1,n=!1,a=!1,o=!0,O.release()},j=function(e){var n=t,r=o;C(),r&&(s(k,e),n?m&&m(k):v&&v(k))},T=function(e,t,n,r,o){var a,u,s,c,f,d,p,h=0,m=function(r){h=Date.now()+2e3,t(r)&&(!u&&n&&(u=i(e,"touchmove",n,o)),s||(s=i(r.target,"touchend",y,o)),c||(c=i(r.target,"touchcancel",y,o)))},v=function(r){h>Date.now()||t(r)&&(!d&&n&&(d=i(l(e),"mousemove",n,o)),p||(p=i(l(e),"mouseup",g,o)))},y=function(e){b(),r&&r(e)},g=function(e){w(),r&&r(e)},b=function(){u&&u(),s&&s(),c&&c(),u=s=c=void 0},w=function(){d&&d(),p&&p(),d=p=void 0},k=function(){b(),w()},E=function(t){void 0===t&&(t=!0),t?(a||(a=i(e,"touchstart",m,o)),f||(f=i(e,"mousedown",v,o))):(a&&a(),f&&f(),a=f=void 0,k())};return{enable:E,stop:k,destroy:function(){E(!1),r=n=t=void 0}}}(u.el,(function(e){var t=f(e);return!(n||!o)&&(c(e,k),k.startX=k.currentX,k.startY=k.currentY,k.startTime=k.currentTime=t,k.velocityX=k.velocityY=k.deltaX=k.deltaY=0,k.event=e,(!d||!1!==d(k))&&(O.release(),!!O.start()&&(n=!0,0===g?x():(E.start(k.startX,k.startY),!0))))}),(function(e){t?!a&&o&&(a=!0,s(k,e),requestAnimationFrame($)):(s(k,e),E.detect(k.currentX,k.currentY)&&(E.isGesture()&&x()||P()))}),j,{capture:!1,passive:b}),P=function(){C(),T.stop(),v&&v(k)};return{enable:function(e){void 0===e&&(e=!0),e||(t&&j(void 0),C()),T.enable(e)},destroy:function(){O.destroy(),T.destroy()}}},s=function(e,t){if(t){var n=e.currentX,r=e.currentY,o=e.currentTime;c(t,e);var i=e.currentX,a=e.currentY,l=(e.currentTime=f(t))-o;if(l>0&&l<100){var u=(i-n)/l,s=(a-r)/l;e.velocityX=.7*u+.3*e.velocityX,e.velocityY=.7*s+.3*e.velocityY}e.deltaX=i-e.startX,e.deltaY=a-e.startY,e.event=t}},c=function(e,t){var n=0,r=0;if(e){var o=e.changedTouches;if(o&&o.length>0){var i=o[0];n=i.clientX,r=i.clientY}else void 0!==e.pageX&&(n=e.pageX,r=e.pageY)}t.currentX=n,t.currentY=r},f=function(e){return e.timeStamp||Date.now()}},function(e,t,n){"use strict";n.d(t,"a",(function(){return r}));var r=function(e,t,n,r,a){return i(e[1],t[1],n[1],r[1],a).map((function(i){return o(e[0],t[0],n[0],r[0],i)}))},o=function(e,t,n,r,o){return o*(3*t*Math.pow(o-1,2)+o*(-3*n*o+3*n+r*o))-e*Math.pow(o-1,3)},i=function(e,t,n,r,o){return a((r-=o)-3*(n-=o)+3*(t-=o)-(e-=o),3*n-6*t+3*e,3*t-3*e,e).filter((function(e){return e>=0&&e<=1}))},a=function(e,t,n,r){if(0===e)return function(e,t,n){var r=t*t-4*e*n;return r<0?[]:[(-t+Math.sqrt(r))/(2*e),(-t-Math.sqrt(r))/(2*e)]}(t,n,r);var o=(3*(n/=e)-(t/=e)*t)/3,i=(2*t*t*t-9*t*n+27*(r/=e))/27;if(0===o)return[Math.pow(-i,1/3)];if(0===i)return[Math.sqrt(-o),-Math.sqrt(-o)];var a=Math.pow(i/2,2)+Math.pow(o/3,3);if(0===a)return[Math.pow(i/2,.5)-t/3];if(a>0)return[Math.pow(-i/2+Math.sqrt(a),1/3)-Math.pow(i/2+Math.sqrt(a),1/3)-t/3];var l=Math.sqrt(Math.pow(-o/3,3)),u=Math.acos(-i/(2*Math.sqrt(Math.pow(-o/3,3)))),s=2*Math.pow(l,1/3);return[s*Math.cos(u/3)-t/3,s*Math.cos((u+2*Math.PI)/3)-t/3,s*Math.cos((u+4*Math.PI)/3)-t/3]}},function(e,t,n){"use strict";n.d(t,"a",(function(){return r}));var r=function(e){try{if(e instanceof s)return e.value;if(!a()||"string"!==typeof e||""===e)return e;var t=document.createDocumentFragment(),n=document.createElement("div");t.appendChild(n),n.innerHTML=e,u.forEach((function(e){for(var n=t.querySelectorAll(e),r=n.length-1;r>=0;r--){var a=n[r];a.parentNode?a.parentNode.removeChild(a):t.removeChild(a);for(var l=i(a),u=0;u=0;n--){var r=t.attributes.item(n),o=r.name;if(l.includes(o.toLowerCase())){var a=r.value;null!=a&&a.toLowerCase().includes("javascript:")&&t.removeAttribute(o)}else t.removeAttribute(o)}var u=i(t);for(n=0;n0?t[0].el:void 0])}}))}))},a=function(){return Object(r.a)(void 0,void 0,void 0,(function(){return Object(r.c)(this,(function(e){switch(e.label){case 0:return[4,v()];case 1:return e.sent(),[2,d()]}}))}))},l=function(t,n){e.set(t,n)},u=function(e){var n=e.side;t.filter((function(t){return t.side===n&&t!==e})).forEach((function(e){return e.disabled=!0}))},d=function(){return m((function(e){return e._isOpen}))},p=function(){return t.map((function(e){return e.el}))},h=function(){return t.some((function(e){return e.isAnimating}))},m=function(e){var n=t.find(e);if(void 0!==n)return n.el},v=function(){return Promise.all(Array.from(document.querySelectorAll("ion-menu")).map((function(e){return new Promise((function(t){return Object(i.c)(e,t)}))})))};return l("reveal",f),l("push",c),l("overlay",s),"undefined"!==typeof document&&document.addEventListener("ionBackButton",(function(e){var t=d();t&&e.detail.register(o.MENU_BACK_BUTTON_PRIORITY,(function(){return t.close()}))})),{registerAnimation:l,get:n,getMenus:function(){return Object(r.a)(void 0,void 0,void 0,(function(){return Object(r.c)(this,(function(e){switch(e.label){case 0:return[4,v()];case 1:return e.sent(),[2,p()]}}))}))},getOpen:a,isEnabled:function(e){return Object(r.a)(void 0,void 0,void 0,(function(){var t;return Object(r.c)(this,(function(r){switch(r.label){case 0:return[4,n(e)];case 1:return(t=r.sent())?[2,!t.disabled]:[2,!1]}}))}))},swipeGesture:function(e,t){return Object(r.a)(void 0,void 0,void 0,(function(){var o;return Object(r.c)(this,(function(r){switch(r.label){case 0:return[4,n(t)];case 1:return(o=r.sent())&&(o.swipeGesture=e),[2,o]}}))}))},isAnimating:function(){return Object(r.a)(void 0,void 0,void 0,(function(){return Object(r.c)(this,(function(e){switch(e.label){case 0:return[4,v()];case 1:return e.sent(),[2,h()]}}))}))},isOpen:function(e){return Object(r.a)(void 0,void 0,void 0,(function(){var t;return Object(r.c)(this,(function(r){switch(r.label){case 0:return null==e?[3,2]:[4,n(e)];case 1:return[2,void 0!==(t=r.sent())&&t.isOpen()];case 2:return[4,a()];case 3:return[2,void 0!==(t=r.sent())]}}))}))},enable:function(e,t){return Object(r.a)(void 0,void 0,void 0,(function(){var o;return Object(r.c)(this,(function(r){switch(r.label){case 0:return[4,n(t)];case 1:return(o=r.sent())&&(o.disabled=!e),[2,o]}}))}))},toggle:function(e){return Object(r.a)(void 0,void 0,void 0,(function(){var t;return Object(r.c)(this,(function(r){switch(r.label){case 0:return[4,n(e)];case 1:return(t=r.sent())?[2,t.toggle()]:[2,!1]}}))}))},close:function(e){return Object(r.a)(void 0,void 0,void 0,(function(){var t;return Object(r.c)(this,(function(r){switch(r.label){case 0:return[4,void 0!==e?n(e):a()];case 1:return void 0!==(t=r.sent())?[2,t.close()]:[2,!1]}}))}))},open:function(e){return Object(r.a)(void 0,void 0,void 0,(function(){var t;return Object(r.c)(this,(function(r){switch(r.label){case 0:return[4,n(e)];case 1:return(t=r.sent())?[2,t.open()]:[2,!1]}}))}))},_getOpenSync:d,_createAnimation:function(t,n){var r=e.get(t);if(!r)throw new Error("animation not registered");return r(n)},_register:function(e){t.indexOf(e)<0&&(e.disabled||u(e),t.push(e))},_unregister:function(e){var n=t.indexOf(e);n>-1&&t.splice(n,1)},_setOpen:function(e,t,n){return Object(r.a)(void 0,void 0,void 0,(function(){var o;return Object(r.c)(this,(function(r){switch(r.label){case 0:return h()?[2,!1]:t?[4,a()]:[3,3];case 1:return(o=r.sent())&&e.el!==o?[4,o.setOpen(!1,!1)]:[3,3];case 2:r.sent(),r.label=3;case 3:return[2,e._setOpen(t,n)]}}))}))},_setActiveMenu:u}}()},function(e,t,n){"use strict";n.d(t,"a",(function(){return f})),n.d(t,"b",(function(){return d})),n.d(t,"c",(function(){return p})),n.d(t,"d",(function(){return s})),n.d(t,"e",(function(){return v}));!function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)}}();var r,o,i=!1,a="undefined"!==typeof window?window:{},l=(a.document,{$flags$:0,$resourcesUrl$:"",jmp:function(e){return e()},raf:function(e){return requestAnimationFrame(e)},ael:function(e,t,n,r){return e.addEventListener(t,n,r)},rel:function(e,t,n,r){return e.removeEventListener(t,n,r)},ce:function(e,t){return new CustomEvent(e,t)}}),u=(function(){try{return new CSSStyleSheet,"function"===typeof(new CSSStyleSheet).replace}catch(r){}}(),new WeakMap,function(e){return"object"===(e=typeof e)||"function"===e}),s=function(e,t){for(var n=[],r=2;r0&&(d.$children$=l),d},c=function(e,t){var n={$flags$:0,$tag$:e,$text$:t,$elm$:null,$children$:null,$attrs$:null};return n},f={},d=function(e){return m(e).$hostElement$},p=function(e){var t=new URL(e,l.$resourcesUrl$);return t.origin!==a.location.origin?t.href:t.pathname},h=new WeakMap,m=function(e){return h.get(e)},v=function(e,t){return h.set(t.$lazyInstance$=e,t)},y=function(e,t){return(0,console.error)(e,t)},g=(new Map,new Map,[]),b=[],w=function(e){for(var t=0;t0)&&l.raf(e)},E=function(e){return function(e){return Promise.resolve(e)}().then(e)};r=b,o=!0},function(e,t,n){"use strict";n.d(t,"a",(function(){return C}));var r=n(15),o=n(3),i=n.n(o),a=n(8),l=n(6),u=n(9),s=n(11),c=n(13),f=n(12),d=n(2),p=n(19),h=n(0),m=n.n(h),v=n(7),y=n(4),g=function(e){Object(c.a)(n,e);var t=Object(f.a)(n);function n(){return Object(u.a)(this,n),t.apply(this,arguments)}return Object(s.a)(n,[{key:"render",value:function(){return m.a.createElement(v.b,{path:this.props.path,exact:this.props.exact,render:this.props.render,computedMatch:this.props.computedMatch})}}]),n}(m.a.PureComponent),b=function(e){Object(c.a)(n,e);var t=Object(f.a)(n);function n(){var e;return Object(u.a)(this,n),(e=t.call(this)).createViewItem=e.createViewItem.bind(Object(l.a)(e)),e.findViewItemByRouteInfo=e.findViewItemByRouteInfo.bind(Object(l.a)(e)),e.findLeavingViewItemByRouteInfo=e.findLeavingViewItemByRouteInfo.bind(Object(l.a)(e)),e.getChildrenToRender=e.getChildrenToRender.bind(Object(l.a)(e)),e.findViewItemByPathname=e.findViewItemByPathname.bind(Object(l.a)(e)),e}return Object(s.a)(n,[{key:"createViewItem",value:function(e,t,n,r){var o={id:Object(y.r)("viewItem"),outletId:e,ionPageElement:r,reactElement:t,mount:!0,ionRoute:!1},i={exact:t.props.exact,path:t.props.path||t.props.from,component:t.props.component},a=Object(v.e)(n.pathname,i);return t.type===y.i&&(o.ionRoute=!0,o.disableIonPageManagement=t.props.disableIonPageManagement),o.routeData={match:a,childProps:t.props},o}},{key:"getChildrenToRender",value:function(e,t,n){var r=this,o=this.getViewItemsForOutlet(e);return m.a.Children.forEach(t.props.children,(function(e){var t=o.find((function(t){return w(e,t.routeData.childProps.path||t.routeData.childProps.from)}));t&&(t.reactElement=e)})),o.map((function(e){var t;if(e.ionRoute&&!e.disableIonPageManagement)t=m.a.createElement(y.p,{key:"view-".concat(e.id),mount:e.mount,removeView:function(){return r.remove(e)}},m.a.cloneElement(e.reactElement,{computedMatch:e.routeData.match}));else{var o=w(e.reactElement,n.pathname);t=m.a.createElement(y.p,{key:"view-".concat(e.id),mount:e.mount,removeView:function(){return r.remove(e)}},m.a.cloneElement(e.reactElement,{computedMatch:e.routeData.match})),!o&&e.routeData.match&&(e.routeData.match=void 0,e.mount=!1)}return t}))}},{key:"findViewItemByRouteInfo",value:function(e,t){var n=this.findViewItemByPath(e.pathname,t),r=n.viewItem,o=n.match;return r&&o&&(r.routeData.match=o),r}},{key:"findLeavingViewItemByRouteInfo",value:function(e,t){var n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],r=this.findViewItemByPath(e.lastPathname,t,!1,n),o=r.viewItem;return o}},{key:"findViewItemByPathname",value:function(e,t){return this.findViewItemByPath(e,t).viewItem}},{key:"findViewItemByPath",value:function(e,t,n,r){var o,i,a;if(t)(a=this.getViewItemsForOutlet(t)).some(u),o||a.some(s);else{var l=this.getAllViewItems();l.some(u),o||l.some(s)}return{viewItem:o,match:i};function u(t){if(r&&!t.ionRoute)return!1;var a={exact:!!n||t.routeData.childProps.exact,path:t.routeData.childProps.path||t.routeData.childProps.from,component:t.routeData.childProps.component},l=Object(v.e)(e,a);return!!l&&(o=t,i=l,!0)}function s(t){return!t.routeData.childProps.path&&!t.routeData.childProps.from&&(i={path:e,url:e,isExact:!0,params:{}},o=t,!0)}}}]),n}(y.q);function w(e,t,n){var r={exact:!!n||e.props.exact,path:e.props.path||e.props.from,component:e.props.component};return Object(v.e)(t,r)}function k(e){var t;if(t="string"===typeof e?e:e.outerHTML,document){var n=document.createElement("div");n.innerHTML=t,n.style.zIndex="";var r=n.getElementsByTagName("ion-back-button");return r[0]&&r[0].remove(),n.firstChild}}var E=function(e){Object(c.a)(n,e);var t=Object(f.a)(n);function n(e){var r;return Object(u.a)(this,n),(r=t.call(this,e)).stackContextValue={registerIonPage:r.registerIonPage.bind(Object(l.a)(r)),isInOutlet:function(){return!0}},r.registerIonPage=r.registerIonPage.bind(Object(l.a)(r)),r.transitionPage=r.transitionPage.bind(Object(l.a)(r)),r.handlePageTransition=r.handlePageTransition.bind(Object(l.a)(r)),r.id=Object(y.r)("routerOutlet"),r}return Object(s.a)(n,[{key:"componentDidMount",value:function(){this.routerOutletElement&&(this.setupRouterOutlet(this.routerOutletElement),this.handlePageTransition(this.props.routeInfo))}},{key:"componentDidUpdate",value:function(e){this.props.routeInfo.pathname!==e.routeInfo.pathname&&this.handlePageTransition(this.props.routeInfo)}},{key:"componentWillUnmount",value:function(){this.context.clearOutlet(this.id)}},{key:"handlePageTransition",value:function(){var e=Object(a.a)(i.a.mark((function e(t){var n,r,o,a,l,u=this;return i.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:this.routerOutletElement&&this.routerOutletElement.commit?(o=this.context.findViewItemByRouteInfo(t,this.id),!(a=this.context.findLeavingViewItemByRouteInfo(t,this.id))&&t.prevRouteLastPathname&&(a=this.context.findViewItemByPathname(t.prevRouteLastPathname,this.id)),a&&("replace"===t.routeAction?a.mount=!1:"push"!==t.routeAction||"forward"!==t.routeDirection?"none"!==t.routeDirection&&o!==a&&(a.mount=!1):(null===(n=t.routeOptions)||void 0===n?void 0:n.unmount)&&(a.mount=!1)),l=O(null===(r=this.ionRouterOutlet)||void 0===r?void 0:r.props.children,t),o&&(o.reactElement=l),o||l&&(o=this.context.createViewItem(this.id,l,t),this.context.addViewItem(o)),o&&o.ionPageElement?this.transitionPage(t,o,a):!a||l||o||a.ionPageElement&&(a.ionPageElement.classList.add("ion-page-hidden"),a.ionPageElement.setAttribute("aria-hidden","true")),this.forceUpdate()):setTimeout((function(){return u.handlePageTransition(t)}),10);case 1:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}()},{key:"registerIonPage",value:function(e,t){var n=this.context.findViewItemByRouteInfo(t,this.id);n&&(n.ionPageElement=e,n.ionRoute=!0),this.handlePageTransition(t)}},{key:"setupRouterOutlet",value:function(){var e=Object(a.a)(i.a.mark((function e(t){var n,r,o=this;return i.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=function(){var e=Object(y.s)();return!!(e&&e.get("swipeBackEnabled","ios"===t.mode))&&o.context.canGoBack()},r=function(){o.context.goBack()},t.swipeHandler={canStart:n,onStart:r,onEnd:function(e){return!0}};case 3:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()},{key:"transitionPage",value:function(){var e=Object(a.a)(i.a.mark((function e(t,n,r){var o,l,u,s,c;return i.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(c=function(){return(c=Object(a.a)(i.a.mark((function e(n,r){return i.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n.classList.add("ion-page"),n.classList.add("ion-page-invisible"),e.next=4,o.commit(n,r,{deepWait:!0,duration:void 0===l?0:void 0,direction:l,showGoBack:!!t.pushedByRoute,progressAnimation:!1,animationBuilder:t.routeAnimation});case 4:case"end":return e.stop()}}),e)})))).apply(this,arguments)},s=function(e,t){return c.apply(this,arguments)},o=this.routerOutletElement,l="none"===t.routeDirection||"root"===t.routeDirection?void 0:t.routeDirection,!(n&&n.ionPageElement&&this.routerOutletElement)){e.next=23;break}if(!r||!r.ionPageElement||n!==r){e.next=20;break}if(!$(r.reactElement,t.pathname,!0)){e.next=16;break}if(!(u=k(r.ionPageElement.outerHTML))){e.next=14;break}return this.routerOutletElement.appendChild(u),e.next=13,s(n.ionPageElement,u);case 13:this.routerOutletElement.removeChild(u);case 14:e.next=18;break;case 16:return e.next=18,s(n.ionPageElement,void 0);case 18:e.next=23;break;case 20:return e.next=22,s(n.ionPageElement,null===r||void 0===r?void 0:r.ionPageElement);case 22:r&&r.ionPageElement&&(r.ionPageElement.classList.add("ion-page-hidden"),r.ionPageElement.setAttribute("aria-hidden","true"));case 23:case"end":return e.stop()}}),e,this)})));return function(t,n,r){return e.apply(this,arguments)}}()},{key:"render",value:function(){var e=this,t=this.props.children,n=m.a.Children.only(t);this.ionRouterOutlet=n;var r=this.context.getChildrenToRender(this.id,this.ionRouterOutlet,this.props.routeInfo,(function(){e.forceUpdate()}));return m.a.createElement(y.o.Provider,{value:this.stackContextValue},m.a.cloneElement(n,{ref:function(t){n.props.setRef&&n.props.setRef(t),n.props.forwardedRef&&(n.props.forwardedRef.current=t),e.routerOutletElement=t;var r=n.ref;"function"===typeof r&&r(t)}},r))}}],[{key:"contextType",get:function(){return y.n}}]),n}(m.a.PureComponent);function O(e,t){var n;return m.a.Children.forEach(e,(function(e){var r={exact:e.props.exact,path:e.props.path||e.props.from,component:e.props.component};Object(v.e)(t.pathname,r)&&(n=e)})),n||(m.a.Children.forEach(e,(function(e){e.props.path||e.props.from||(n=e)})),n)}function $(e,t,n){var r={exact:!!n||e.props.exact,path:e.props.path||e.props.from,component:e.props.component};return Object(v.e)(t,r)}var x=function(e){Object(c.a)(n,e);var t=Object(f.a)(n);function n(e){var r;Object(u.a)(this,n),(r=t.call(this,e)).exitViewFromOtherOutletHandlers=[],r.locationHistory=new y.l,r.viewStack=new b,r.routeMangerContextState={canGoBack:function(){return r.locationHistory.canGoBack()},clearOutlet:r.viewStack.clear,findViewItemByPathname:r.viewStack.findViewItemByPathname,getChildrenToRender:r.viewStack.getChildrenToRender,goBack:function(){return r.handleNavigateBack()},createViewItem:r.viewStack.createViewItem,findViewItemByRouteInfo:r.viewStack.findViewItemByRouteInfo,findLeavingViewItemByRouteInfo:r.viewStack.findLeavingViewItemByRouteInfo,addViewItem:r.viewStack.add,unMountViewItem:r.viewStack.remove};var o={id:Object(y.r)("routeInfo"),pathname:r.props.location.pathname,search:r.props.location.search};return r.locationHistory.add(o),r.handleChangeTab=r.handleChangeTab.bind(Object(l.a)(r)),r.handleResetTab=r.handleResetTab.bind(Object(l.a)(r)),r.handleNativeBack=r.handleNativeBack.bind(Object(l.a)(r)),r.handleNavigate=r.handleNavigate.bind(Object(l.a)(r)),r.handleNavigateBack=r.handleNavigateBack.bind(Object(l.a)(r)),r.props.registerHistoryListener(r.handleHistoryChange.bind(Object(l.a)(r))),r.handleSetCurrentTab=r.handleSetCurrentTab.bind(Object(l.a)(r)),r.state={routeInfo:o},r}return Object(s.a)(n,[{key:"handleChangeTab",value:function(e,t,n){if(t){var o=this.locationHistory.getCurrentRouteInfoForTab(e),i=t.split("?"),a=Object(r.a)(i,2),l=a[0],u=a[1];o?(this.incomingRouteParams=Object.assign(Object.assign({},o),{routeAction:"push",routeDirection:"none"}),o.pathname===l?(this.incomingRouteParams.routeOptions=n,this.props.history.push(o.pathname+(o.search||""))):(this.incomingRouteParams.pathname=l,this.incomingRouteParams.search=u?"?"+u:void 0,this.incomingRouteParams.routeOptions=n,this.props.history.push(l+(u?"?"+u:"")))):this.handleNavigate(l,"push","none",void 0,n,e)}}},{key:"handleHistoryChange",value:function(e,t){var n,r,o,i;if((i=this.incomingRouteParams&&"replace"===this.incomingRouteParams.routeAction?this.locationHistory.previous():this.locationHistory.current()).pathname+i.search!==e.pathname){if(!this.incomingRouteParams){if("REPLACE"===t&&(this.incomingRouteParams={routeAction:"replace",routeDirection:"none",tab:this.currentTab}),"POP"===t){var a=this.locationHistory.current();if(a&&a.pushedByRoute){var l=this.locationHistory.findLastLocation(a);this.incomingRouteParams=Object.assign(Object.assign({},l),{routeAction:"pop",routeDirection:"back"})}else this.incomingRouteParams={routeAction:"pop",routeDirection:"none",tab:this.currentTab}}this.incomingRouteParams||(this.incomingRouteParams={routeAction:"push",routeDirection:(null===(n=e.state)||void 0===n?void 0:n.direction)||"forward",routeOptions:null===(r=e.state)||void 0===r?void 0:r.routerOptions,tab:this.currentTab})}var u;if(null===(o=this.incomingRouteParams)||void 0===o?void 0:o.id)u=Object.assign(Object.assign({},this.incomingRouteParams),{lastPathname:i.pathname}),this.locationHistory.add(u);else{var s="push"===this.incomingRouteParams.routeAction&&"forward"===this.incomingRouteParams.routeDirection;if(u=Object.assign(Object.assign({id:Object(y.r)("routeInfo")},this.incomingRouteParams),{lastPathname:i.pathname,pathname:e.pathname,search:e.search,params:this.props.match.params,prevRouteLastPathname:i.lastPathname}),s)u.tab=i.tab,u.pushedByRoute=i.pathname;else if("pop"===u.routeAction){var c=this.locationHistory.findLastLocation(u);u.pushedByRoute=null===c||void 0===c?void 0:c.pushedByRoute}else if("push"===u.routeAction&&u.tab!==i.tab){var f=this.locationHistory.getCurrentRouteInfoForTab(u.tab);u.pushedByRoute=null===f||void 0===f?void 0:f.pushedByRoute}else if("replace"===u.routeAction){var d=this.locationHistory.current(),p=null===d||void 0===d?void 0:d.pushedByRoute,h=void 0!==p&&p!==u.pathname?p:u.pushedByRoute;u.lastPathname=(null===d||void 0===d?void 0:d.pathname)||u.lastPathname,u.prevRouteLastPathname=null===d||void 0===d?void 0:d.lastPathname,u.pushedByRoute=h,u.routeDirection=(null===d||void 0===d?void 0:d.routeDirection)||u.routeDirection,u.routeAnimation=(null===d||void 0===d?void 0:d.routeAnimation)||u.routeAnimation}this.locationHistory.add(u)}this.setState({routeInfo:u})}this.incomingRouteParams=void 0}},{key:"handleNativeBack",value:function(){var e=this.props.history;(e.goBack||e.back)()}},{key:"handleNavigate",value:function(e,t,n,r,o,i){this.incomingRouteParams=Object.assign(this.incomingRouteParams||{},{routeAction:t,routeDirection:n,routeOptions:o,routeAnimation:r,tab:i}),"push"===t?this.props.history.push(e):this.props.history.replace(e)}},{key:"handleNavigateBack",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"/",t=arguments.length>1?arguments[1]:void 0,n=Object(y.s)();e=e||n&&n.get("backButtonDefaultHref");var r=this.locationHistory.current();if(r&&r.pushedByRoute){var o=this.locationHistory.findLastLocation(r);if(o)if(this.incomingRouteParams=Object.assign(Object.assign({},o),{routeAction:"pop",routeDirection:"back",routeAnimation:t||r.routeAnimation}),r.lastPathname===r.pushedByRoute||o.pathname===r.pushedByRoute&&""===r.tab&&""===o.tab){var i=this.props.history,a=i.goBack||i.back;a()}else this.handleNavigate(o.pathname+(o.search||""),"pop","back");else this.handleNavigate(e,"pop","back")}else this.handleNavigate(e,"pop","back")}},{key:"handleResetTab",value:function(e,t,n){var r=this.locationHistory.getFirstRouteInfoForTab(e);if(r){var o=Object.assign({},r);o.pathname=t,o.routeOptions=n,this.incomingRouteParams=Object.assign(Object.assign({},o),{routeAction:"pop",routeDirection:"back"}),this.props.history.push(o.pathname+(o.search||""))}}},{key:"handleSetCurrentTab",value:function(e){this.currentTab=e;var t=Object.assign({},this.locationHistory.current());t.tab!==e&&(t.tab=e,this.locationHistory.update(t))}},{key:"render",value:function(){return m.a.createElement(y.n.Provider,{value:this.routeMangerContextState},m.a.createElement(y.m,{ionRoute:g,ionRedirect:{},stackManager:E,routeInfo:this.state.routeInfo,onNativeBack:this.handleNativeBack,onNavigateBack:this.handleNavigateBack,onNavigate:this.handleNavigate,onSetCurrentTab:this.handleSetCurrentTab,onChangeTab:this.handleChangeTab,onResetTab:this.handleResetTab,locationHistory:this.locationHistory},this.props.children))}}]),n}(m.a.PureComponent),S=Object(v.f)(x);S.displayName="IonRouter";m.a.Component,m.a.Component;var C=function(e){Object(c.a)(n,e);var t=Object(f.a)(n);function n(e){var r;Object(u.a)(this,n),r=t.call(this,e);var o=e.history,i=Object(d.d)(e,["history"]);return r.history=o||Object(p.b)(i),r.history.listen(r.handleHistoryChange.bind(Object(l.a)(r))),r.registerHistoryListener=r.registerHistoryListener.bind(Object(l.a)(r)),r}return Object(s.a)(n,[{key:"handleHistoryChange",value:function(e,t){var n=e.location||e,r=e.action||t;this.historyListenHandler&&this.historyListenHandler(n,r)}},{key:"registerHistoryListener",value:function(e){this.historyListenHandler=e}},{key:"render",value:function(){var e=this.props,t=e.children,n=Object(d.d)(e,["children"]);return m.a.createElement(v.c,Object.assign({history:this.history},n),m.a.createElement(S,{registerHistoryListener:this.registerHistoryListener},t))}}]),n}(m.a.Component)},function(e,t,n){"use strict";(function(e){var r=n(0),o=n.n(r),i=n(24),a=n(31),l=n.n(a),u=1073741823,s="undefined"!==typeof globalThis?globalThis:"undefined"!==typeof window?window:"undefined"!==typeof e?e:{};function c(e){var t=[];return{on:function(e){t.push(e)},off:function(e){t=t.filter((function(t){return t!==e}))},get:function(){return e},set:function(n,r){e=n,t.forEach((function(t){return t(e,r)}))}}}var f=o.a.createContext||function(e,t){var n,o,a="__create-react-context-"+function(){var e="__global_unique_id__";return s[e]=(s[e]||0)+1}()+"__",f=function(e){function n(){var t;return(t=e.apply(this,arguments)||this).emitter=c(t.props.value),t}Object(i.a)(n,e);var r=n.prototype;return r.getChildContext=function(){var e;return(e={})[a]=this.emitter,e},r.componentWillReceiveProps=function(e){if(this.props.value!==e.value){var n,r=this.props.value,o=e.value;((i=r)===(a=o)?0!==i||1/i===1/a:i!==i&&a!==a)?n=0:(n="function"===typeof t?t(r,o):u,0!==(n|=0)&&this.emitter.set(e.value,n))}var i,a},r.render=function(){return this.props.children},n}(r.Component);f.childContextTypes=((n={})[a]=l.a.object.isRequired,n);var d=function(t){function n(){var e;return(e=t.apply(this,arguments)||this).state={value:e.getValue()},e.onUpdate=function(t,n){0!==((0|e.observedBits)&n)&&e.setState({value:e.getValue()})},e}Object(i.a)(n,t);var r=n.prototype;return r.componentWillReceiveProps=function(e){var t=e.observedBits;this.observedBits=void 0===t||null===t?u:t},r.componentDidMount=function(){this.context[a]&&this.context[a].on(this.onUpdate);var e=this.props.observedBits;this.observedBits=void 0===e||null===e?u:e},r.componentWillUnmount=function(){this.context[a]&&this.context[a].off(this.onUpdate)},r.getValue=function(){return this.context[a]?this.context[a].get():e},r.render=function(){return(e=this.props.children,Array.isArray(e)?e[0]:e)(this.state.value);var e},n}(r.Component);return d.contextTypes=((o={})[a]=l.a.object,o),{Provider:f,Consumer:d}};t.a=f}).call(this,n(50))},function(e,t,n){"use strict";var r=n(65),o={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},i={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},a={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},l={};function u(e){return r.isMemo(e)?a:l[e.$$typeof]||o}l[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},l[r.Memo]=a;var s=Object.defineProperty,c=Object.getOwnPropertyNames,f=Object.getOwnPropertySymbols,d=Object.getOwnPropertyDescriptor,p=Object.getPrototypeOf,h=Object.prototype;e.exports=function e(t,n,r){if("string"!==typeof n){if(h){var o=p(n);o&&o!==h&&e(t,o,r)}var a=c(n);f&&(a=a.concat(f(n)));for(var l=u(t),m=u(n),v=0;v