From 00b907efae80781690ea60a7d3a24dfe4969b89f Mon Sep 17 00:00:00 2001 From: weeman Date: Mon, 18 Sep 2023 22:05:35 +0200 Subject: [PATCH] Migrate to Vite Signed-off-by: weeman --- .eslintignore | 1 + .github/workflows/build-meshviewer.yml | 3 +- .github/workflows/release-meshviewer.yml | 2 +- .gitignore | 9 +- .prettierignore | 2 + README.md | 23 +- app.js | 40 - assets/favicon/android-chrome-192x192.png | Bin 3693 -> 0 bytes assets/favicon/android-chrome-512x512.png | Bin 9270 -> 0 bytes assets/favicon/apple-touch-icon.png | Bin 3221 -> 0 bytes assets/favicon/browserconfig.xml | 12 - assets/favicon/favicon-16x16.png | Bin 485 -> 0 bytes assets/favicon/favicon-32x32.png | Bin 886 -> 0 bytes assets/favicon/favicon.ico | Bin 15086 -> 0 bytes assets/favicon/mstile-144x144.png | Bin 2454 -> 0 bytes assets/favicon/mstile-150x150.png | Bin 2235 -> 0 bytes assets/favicon/mstile-310x150.png | Bin 2301 -> 0 bytes assets/favicon/mstile-310x310.png | Bin 4335 -> 0 bytes assets/favicon/mstile-70x70.png | Bin 1676 -> 0 bytes assets/favicon/safari-pinned-tab.svg | 1 - assets/favicon/site.webmanifest | 21 - assets/faviconData.json | 42 - assets/{icons => }/fonts/meshviewer.ttf | Bin assets/{icons => }/fonts/meshviewer.woff | Bin assets/{icons => }/fonts/meshviewer.woff2 | Bin assets/icons/icon.scss | 6 +- gulp/config.js | 47 - gulp/serve.js | 21 - gulp/tasks/clean.js | 6 - gulp/tasks/copy.js | 9 - gulp/tasks/eslint-fail.js | 9 - gulp/tasks/eslint.js | 9 - gulp/tasks/favicon.js | 65 - gulp/tasks/html.js | 23 - gulp/tasks/javascript.js | 14 - gulp/tasks/jsonMinify.js | 8 - gulp/tasks/sass.js | 23 - gulp/tasks/setDevelopment.js | 6 - gulpfile.js | 49 - html/offline.html | 25 - html/index.html => index.html | 16 +- lib/about.js | 114 +- lib/config_default.js | 554 +- lib/container.js | 32 +- lib/datadistributor.js | 174 +- lib/filters/filtergui.js | 66 +- lib/filters/genericnode.js | 92 +- lib/filters/hostname.js | 68 +- lib/filters/nodefilter.js | 30 +- lib/forcegraph.js | 509 +- lib/forcegraph/draw.js | 224 +- lib/gui.js | 298 +- lib/index.js | 4 + lib/infobox/link.js | 191 +- lib/infobox/location.js | 148 +- lib/infobox/main.js | 114 +- lib/infobox/node.js | 439 +- lib/legend.js | 112 +- lib/linklist.js | 160 +- lib/load.js | 24 +- lib/main.js | 231 +- lib/map.js | 428 +- lib/map/activearea.js | 508 +- lib/map/button.js | 256 +- lib/map/clientlayer.js | 97 +- lib/map/labellayer.js | 672 +- lib/map/locationmarker.js | 50 +- lib/nodelist.js | 190 +- lib/offline.js | 1 + lib/proportions.js | 456 +- lib/sidebar.js | 102 +- lib/simplenodelist.js | 106 +- lib/sorttable.js | 101 +- lib/tabs.js | 92 +- lib/title.js | 50 +- lib/utils/helper.js | 435 +- lib/utils/language.js | 121 +- lib/utils/math.js | 52 +- lib/utils/node.js | 298 +- lib/utils/router.js | 256 +- lib/utils/version.js | 176 +- offline.html | 31 + package-lock.json | 16477 ++++++-------------- package.json | 58 +- polyfill.js | 33 - public/apple-touch-icon-180x180.png | Bin 0 -> 1548 bytes public/config.json | 366 + public/favicon.ico | Bin 0 -> 1420 bytes {locale => public/locale}/cz.json | 0 {locale => public/locale}/de.json | 0 {locale => public/locale}/en.json | 0 {locale => public/locale}/fr.json | 0 {locale => public/locale}/ru.json | 0 {locale => public/locale}/tr.json | 0 public/maskable-icon-512x512.png | Bin 0 -> 4035 bytes public/pwa-192x192.png | Bin 0 -> 2062 bytes public/pwa-512x512.png | Bin 0 -> 5325 bytes public/pwa-64x64.png | Bin 0 -> 883 bytes scss/mixins/_font.scss | 8 +- scss/modules/font/_font.scss | 2 - service-worker.js | 23 - vite.config.js | 55 + 102 files changed, 9554 insertions(+), 16022 deletions(-) create mode 100644 .prettierignore delete mode 100644 app.js delete mode 100644 assets/favicon/android-chrome-192x192.png delete mode 100644 assets/favicon/android-chrome-512x512.png delete mode 100644 assets/favicon/apple-touch-icon.png delete mode 100644 assets/favicon/browserconfig.xml delete mode 100644 assets/favicon/favicon-16x16.png delete mode 100644 assets/favicon/favicon-32x32.png delete mode 100644 assets/favicon/favicon.ico delete mode 100644 assets/favicon/mstile-144x144.png delete mode 100644 assets/favicon/mstile-150x150.png delete mode 100644 assets/favicon/mstile-310x150.png delete mode 100644 assets/favicon/mstile-310x310.png delete mode 100644 assets/favicon/mstile-70x70.png delete mode 100644 assets/favicon/safari-pinned-tab.svg delete mode 100644 assets/favicon/site.webmanifest delete mode 100644 assets/faviconData.json rename assets/{icons => }/fonts/meshviewer.ttf (100%) rename assets/{icons => }/fonts/meshviewer.woff (100%) rename assets/{icons => }/fonts/meshviewer.woff2 (100%) delete mode 100644 gulp/config.js delete mode 100644 gulp/serve.js delete mode 100644 gulp/tasks/clean.js delete mode 100644 gulp/tasks/copy.js delete mode 100644 gulp/tasks/eslint-fail.js delete mode 100644 gulp/tasks/eslint.js delete mode 100644 gulp/tasks/favicon.js delete mode 100644 gulp/tasks/html.js delete mode 100644 gulp/tasks/javascript.js delete mode 100644 gulp/tasks/jsonMinify.js delete mode 100644 gulp/tasks/sass.js delete mode 100644 gulp/tasks/setDevelopment.js delete mode 100644 gulpfile.js delete mode 100644 html/offline.html rename html/index.html => index.html (74%) create mode 100644 lib/index.js create mode 100644 lib/offline.js create mode 100644 offline.html delete mode 100644 polyfill.js create mode 100644 public/apple-touch-icon-180x180.png create mode 100644 public/config.json create mode 100644 public/favicon.ico rename {locale => public/locale}/cz.json (100%) rename {locale => public/locale}/de.json (100%) rename {locale => public/locale}/en.json (100%) rename {locale => public/locale}/fr.json (100%) rename {locale => public/locale}/ru.json (100%) rename {locale => public/locale}/tr.json (100%) create mode 100644 public/maskable-icon-512x512.png create mode 100644 public/pwa-192x192.png create mode 100644 public/pwa-512x512.png create mode 100644 public/pwa-64x64.png delete mode 100644 service-worker.js create mode 100644 vite.config.js diff --git a/.eslintignore b/.eslintignore index 796b96d1..48ba845e 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1 +1,2 @@ /build +/dev-dist diff --git a/.github/workflows/build-meshviewer.yml b/.github/workflows/build-meshviewer.yml index 962d893d..ae227e1b 100644 --- a/.github/workflows/build-meshviewer.yml +++ b/.github/workflows/build-meshviewer.yml @@ -19,4 +19,5 @@ jobs: node-version: ${{ matrix.node-version }} - run: npm install - run: npm audit - - run: npm run gulp-ci + - run: npm run lint + - run: npm run build diff --git a/.github/workflows/release-meshviewer.yml b/.github/workflows/release-meshviewer.yml index 69c4fb79..82665259 100644 --- a/.github/workflows/release-meshviewer.yml +++ b/.github/workflows/release-meshviewer.yml @@ -17,7 +17,7 @@ jobs: with: node-version: ${{ matrix.node-version }} - run: npm install - - run: npm run gulp + - run: npm run build - run: "cd build; zip -r ../meshviewer-build.zip .; cd .." - name: Create Release id: create_release diff --git a/.gitignore b/.gitignore index c352fbc0..5875c22b 100644 --- a/.gitignore +++ b/.gitignore @@ -10,10 +10,11 @@ Thumbs.db # IDE files -/.idea/ +/.idea # Project files -node_modules/ -build/ -config.js +/node_modules +/build +/config.js *.zip +/dev-dist diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 00000000..48ba845e --- /dev/null +++ b/.prettierignore @@ -0,0 +1,2 @@ +/build +/dev-dist diff --git a/README.md b/README.md index cfc3b1bd..e6b92688 100644 --- a/README.md +++ b/README.md @@ -18,32 +18,35 @@ It is recommended to use the latest release: - Clone this repository - Run `npm install` -- Run `npm run gulp` +- Run `npm run build` - A production build can then be found in [`/build`](./build) -Hint: You can start a development server with `npm run serve` +Hint: You can start a development server with `npm run dev` -### Build & Run using Docker +### Build and run using Docker Static local test instance: ```bash -docker run -it --rm -u $(id -u):$(id -g) -v "$PWD":/app -w /app node npm install -docker run -it --rm -u $(id -u):$(id -g) -v "$PWD":/app -w /app node npm run gulp-ci +docker run -it --rm -u $(id -u):$(id -g) -v "$PWD":/app -w /app node npm install +docker run -it --rm -u $(id -u):$(id -g) -v "$PWD":/app -w /app node npm run build docker run -it --rm -v "$PWD/build":/usr/share/nginx/html -p 8080:80 --name nginx nginx ``` The map is reachable at [localhost:8080](http://localhost:8080). -You have to copy `config.example.json` as `build/config.json`. +You have to copy `config.example.json` to `build/config.json`. -Live build / development env: +Start a development environment: ```bash -docker run -it --rm -u $(id -u):$(id -g) -v "$PWD":/app -w /app -e NODE_ENV=development -p 3000:3000 node npm run gulp serve +docker run -it --rm --name meshviewer-dev \ + -u $(id -u):$(id -g) \ + -v "$PWD":/app -w /app \ + -e NODE_ENV=development \ + -p 5173:5173 \ + node npm run dev -- --host 0.0.0.0 ``` -The map is reachable at [localhost:3000](http://localhost:3000). - ## Configuration The configuration documentation is nowhere near finished. diff --git a/app.js b/app.js deleted file mode 100644 index e294f277..00000000 --- a/app.js +++ /dev/null @@ -1,40 +0,0 @@ -"use strict"; - -require.config({ - paths: { - polyglot: "../node_modules/node-polyglot/build/polyglot", - Navigo: "../node_modules/navigo/lib/navigo", - leaflet: "../node_modules/leaflet/dist/leaflet", - moment: "../node_modules/moment/min/moment.min", - // d3 modules indirect dependencies - // by d3-zoom: d3-drag - "d3-ease": "../node_modules/d3-ease/dist/d3-ease", - "d3-transition": "../node_modules/d3-transition/dist/d3-transition", - "d3-color": "../node_modules/d3-color/dist/d3-color", - "d3-interpolate": "../node_modules/d3-interpolate/dist/d3-interpolate", - // by d3-force - "d3-collection": "../node_modules/d3-collection/dist/d3-collection", - "d3-dispatch": "../node_modules/d3-dispatch/dist/d3-dispatch", - "d3-quadtree": "../node_modules/d3-quadtree/dist/d3-quadtree", - "d3-timer": "../node_modules/d3-timer/dist/d3-timer", - // by d3-drag: d3-selection - // d3 modules dependencies - "d3-selection": "../node_modules/d3-selection/dist/d3-selection", - "d3-force": "../node_modules/d3-force/dist/d3-force", - "d3-zoom": "../node_modules/d3-zoom/dist/d3-zoom", - "d3-drag": "../node_modules/d3-drag/dist/d3-drag", - snabbdom: "../node_modules/snabbdom/dist/snabbdom-patch", - rbush: "../node_modules/rbush/rbush", - helper: "utils/helper", - }, - shim: { - "d3-drag": ["d3-selection"], - "d3-force": ["d3-collection", "d3-dispatch", "d3-quadtree", "d3-timer"], - "d3-interpolate": ["d3-color"], - "d3-zoom": ["d3-drag", "d3-ease", "d3-transition", "d3-interpolate"], - }, -}); - -require(["load"], function (load) { - load(); -}); diff --git a/assets/favicon/android-chrome-192x192.png b/assets/favicon/android-chrome-192x192.png deleted file mode 100644 index c5dd45d31fa9eaeed851697a6bf9d80cf2f328ef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3693 zcmZ8kcQhPY_Z^I0qK)V+N}@)K-g~c4A0gs5i-9-4`i-h0?AK@2B z-Gpuv0}D+9&%k4$IZM<2;BvjMql+|}as&A>ACuV&o*6t}L1szvzXF4!}_REFAb91wJuj)ZAierV4HBa_Z@^Nzr3WlfYk95j#3#OLnS+APbZKhRJzq!~-db0Q}~;HTc>3 ziZoc&B5j{1Dc1XPRgWkXY0GsiZ6@RkgXDkX=vWieEuFh$#|BeH4ZH>ouSQ>6I?871 z1YYHAMG3Hamis#tUSDPy^&M1Ptd<`}Wh0>VK^0F8DuaH8URAOM7j$^be-PC9m9v{e zNg}myB^c^{H;%mA+9S~gje(TA~^fF?Ele7k)i1bq7RD6%$(CF;Sn{BwK546@`ofAWn$DP`l0EB1Q%gJ_E*SBdEFh~zPo$EDVN4QZ z7}}(jKts(t7rLz0V}=_A-uh8k-sXH?;+~*nBid6l zTd-A$Cw6Asj^H~GrfVV+LB1=1w!(PzgmGRn@zKS?+liR;g)^fod9-KyBiakl3Y+zzI|Q(|)ReWmzh@Bs~;KnULZ zvYk(_}_e> zGr-4oUe|YA1g4Phq8g*6d%S_nA~mhE{r1Y{^(Ez()c4Oi?iqSw<#mi96Go)*n>OC!NZDITw?p`184G%W^?cfC27wjK!sKd7K z)&tx5H6tT8xig)T4I0#0+JpB5R&je+4@3U#7+fXEk^l)QM5$qF(C+u@i4RJ2e)nva z4&J3sd-&`(?$~XAU^5;oE`QBrD_LN4Wll?)oUP@-=~pw2tsEbXk~NQvv&<@fl$9XM z4HqZWrI=dGQ^Q&4j?Ddt9?8gk$1hvOp+d{JPETMv<5DMt-4H#MlsyS zR*mv}$R58J-;KS4$O@NeJao2?=o6r;I9jrW`=|IHlR2~XVfj=P1xQgqeDnN@azO!L@ zi>ImY6vMZTKY+}K+MR`1yTh6*$xM)GLH$Xc-q1ZnhSgVHVT1L!)`#}_`-)oLBPOnKiWSpEtH$xl zAx@(M*W0U|z^mJDdVhyn;wEV0El*g_)$4r8danmAq$7^qn!o$aE#aK_CNjX`^L(m3$o~S;W*5YG8gCBbk2oO{%xEU^{9oni^ zGOT39rV-Yh6BIN{6OxPvIM>MyD<@#vJO_gD%Vbe0Ij?skT9+u@<|TeT9>i$vIT2_K z$(`jw3Ay~sro4Z=K(D;taahUNE5jdvuoy5Br@VDm^LKdz&|eUg4yGWYvGVl2Kqd0Q zHzG^vb$_<&f+6IPQjSk5)N?zSs@{ z9w0Q{Bj9q7kI!u=0i6=+fc?0V(2r|+CSDWWRxClUpAy{B2ilqzxgrJ4ZfQ^e_;hnf z!R2l*xH^rwzth+K#BrF|1ZrF!fU-<+dJhJ>4tFufz9L)oBBl3Wy}i@!LSf)GxZq;a zVo2zHCaJBlak(4}`Ga8v1^e%xnN>mwKaNAL6xazz%MQG%vds0+Lk?AU1Y}aF0!6wW z5mYreURIxeV+Pu%hgV<-?$w3yA7B&_zFUoJd##$5k$R~XzB^x>7gifjwa&Ub90+H< zJU=iGO$)E@cYnD8@^%r6jOqkGSvEY8euJ6vSVc3n5e;=4=Y6Do$|6BjP4W)=!LMM! z)*uRU=QUBg0Ft?Fjcz6Fl>G~I;%!(5Jw^Vu#^@)so65--7iTq&dN95 z-@&$jvF}W9`_mbChYGwQ$Fe*n*T@oG3>0DV2v1OgBGw&$#P9nK$0TPw*b<+RpPd*T@^J1`cVIfhIvI%3$eZSR=Lo>*8o?vmgvWd*B|>TT{q ze3QF!8*A1HZs%1ryqagZzutG!4Y?-@_QHzM6%yS3+zeg{zjK;JT^4W98U4bN?{p$2 zS&o-3TS@{{Ve#6KlIiY@7jo>4I*!5Z~v!Jj3>dp0 z2N3`R8pnT9$V1E3OJh%`%ZKbs+)QKdcQ=wKO6u$lE~$_;AZXk~aF9&aHZ@#^bMX+W zNs0d8;@-w4?-4h1!Z|)!;kHqvhHa`;n$|54QAsO%L#w(V=h~8R@z!FJ6mb)|a*0u6 zQtKg8#iMJ#TM9>T$wdP=WV#4u5bI_zZXeeWJ^X=;Piu-+Ii!~^Oj`Kf15}-^8~lghOH52i50FVN}8;4P8{E+McNjiFAZ-{s4>Io%U&hIy^4-)k@Q71=$T zwdIp131j&VX~}1Ht4y=Z%^Z?akO!@ha3jDXoXDT$`J5N&QH}@VC8CdSKQ#6%Lmtph z`Ad_z>o)hE;K)p>`_$!ZmVCgDLl}R;cdw|31@cdw8lRU0n8RlS`%ENJFVcSPl|L!L z05tY36Cpn1c#GDNSzq5x1S(~6@&9;2PaMGVkYH0LdNdAF{w2Al)HGZbL1V&X0&mGC z0fJ(laWUsI7ENzd)R#^P(nEP4=Mik_tg1a{o|-<-;uG}+QTi=+s2g1_t!4ZsizoaX z8MS%G(7{P?Ba6|6I6x^{VO!1erMNGQsQF9J($1K+-Ts~DL3u6Qw=o_Z%P_m%Eg>fY z{_xSrQ2qV52@c;zItE|lh4MPT41acrJJJeUk~C+z{4_tHDYc#WtRdYJnjW5fd+HA2 z7_v*^br@8vw!K(ddBZ$ObND&Y6o@RQn%7=kY3$g zg_}P!7bM>=KPx0WI~CT2iUL>21YpIn{|#2}uJObt^|y%@0yl2jE`YA4kw%@GQ|$i% D0$C&@ diff --git a/assets/favicon/android-chrome-512x512.png b/assets/favicon/android-chrome-512x512.png deleted file mode 100644 index 7f2934383cb9359470fa40555f4250f778998bdc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9270 zcmbt)XHe8J_wH{Cuv8c6ed)bQFS0Z#0@6FuRC*Bs6_i~%2m%TM0t!eK=^bfHN0BPh zn-uB2v#|T;y?5rF`{mC4aL;6No+M9lPEInJ$s{ob`kLe9|kue}kL6_o4QG@qfYpNjUBm{BQ9F{6EtFBG1Mv z+zfTYtP?fH+}B+zlAMlK8uU;jGP;tyafZv!NZ%M3e0W8*`j-97=dNY!PhlrMj1QiOvoZ@HWcT;BiuC^}dFekzSKW?RCZ_g9XjJo+T-loOrT{EE4UU0!4mP13zEPGwgf-a|(ozJBIg8*vSv>4Q_E* zN?Yvicmlh$h^$lnhi9z$;h_|>%=!d;HFjY#f^%QFvLW^NcHUU6F3inszWxZxyff}^ z+e>lvlbFqB2KBOg+OK7@mlk6=mtJYEL#L5byQ%rRW{z@*Hx=AaRhjX&jBI$TT;f~5 zVZSnq5Id=qS;nfHl4!Qz^}NDYlb4CP=riH~_tff!6qa>&bKI-V9_FRps)B6=@mcz> zDbfV7rYR|@m&G&g^%ox@`C7gfzpwM%O+th3uKs=ao&5nCO~D#PwoYef{=|#%g2xR$-h z%_h(&+xev)*W3bPo`{Bj(Q7tWi?0Q8Ku!&{Cfp4Ms29yK zXT`t7Ah1ugo!@c?(U1Q@XQD;tS0{%Q*>d+2ZIEo3jA`m0HnC)ig1^{I8PkzF zS|EYAr@Wt!s6vk(>M>W(8=R>G-3A)FoK^NJ~uV-IUEd?{lH`g8?#W z`9?kILD6?_4)1>r$aPeTh?UWARX19SCl>%ca!XK~g04tSr741nu-Rk8i-kahkcl#d zQ#nbS*Iz>7iUjEX6retmD(rOSx0LBWkWC>on`s3pNdtB@%W=W`p;9f1_)QhV6=EM#WhZHG*}6$0T+R6|{)K2d5y^10&|vJ8vqXP;XYM_mXG_%u9CI9tkU9{a z(!#Hd$a6)j2h&C;jqU^>iS;M)@ zJ@@br@CLc>%WXD<1}|Bs!P@#nysz0qqd%d{sGc}l5G+&SS0xZOq6;Rmg)FytgU8O< zf+p%_iz(DdCnsk`*|m*z(jNuj@N`3JfrH0DL#;CG&+P1h73{boIWQ=J2@qp9D!REi7lJ!rOq= zJA$(^!M@uWN`Pr;7WoC8?1#G58;p<;1n_;QCSm=JyACA)7S=kWs0>DGDUK4;g-!B2 zrQU=9Nt4EZSxWKOb5j`H*{QoLoBa+{GAPOW6s0$lrIJ+2e8+=v8LTFBC}=303ssvj}vJ(d&NKb(QPh#(0C)pci0C zmg5+H@UenZQIz0kDit0AitZMRL%^54mDDGF0U*Von`ksJStKSLkr1eS7}zGGr;;~#ah zW_?C)T|eQNccMb1)U_gip}M7Ce@H0 zHQ1}d*exiX^-Ov9+x}|04ERfE%?&ut4M?urV!T$s)BWGK@c`&SsJ!0qnzFDT;D6nm zNLx7Y6zt{?+S2LKV}r&weo2ugkJC=BN%;l_QCYK;sz|ZCVxUxsn*V1mwqqAm*Cvy% zS9=$2!imhiWxp^mmiis$Z6qvfXw=^5jm1*gOeD*i_5-yf?5E|ElkE@M_R7uJcovnC zLY%QjJy}3#{OqgmWEI1YyD4ft#9ge~cv-^2#k2cv51pQU56~2(>T7yI2o}1}?>?2} zW}t9|L^tRcNBFU$VXtTK2@BoUIfIE3X-M?rz^__`0X^EKYpk!Ycu9OSU14&@Eg!!e zc%g={(j-W9l8M8w)^ZE#mk>h|e|MLxk0g9Uskj&0<@F5hK-CYR#@34P^h~&R0SP1d zIEF1F?kxD`mR46`EsT|wp@n~l>U5~%Pj-_h)5YT*u^APxcjZ@5RS^RX-sm6J>$Di!Sd^1o0E0^wStM+(ezb@<#R{=>1q z1goxfkvsBzhUMxyuKxs-@xeGrol3&pib1`fP7em!-e0@*!4_F4O1iPVLeMY12x2_h zIvzh#7XV+Z7HmvW1lD)%ORf(lQ^j?HWi%k~CY)jl zq2g$R-U~6s2~qx~0>WiYDdidquIT>YXNqp_Cd_#P_;%4n%Qm6@Q#jdvHlz2lO}9hC zwdjkL0yco!{xVB>$XETHjBCfA78=XS(b{xyJ%qNjWr`G76frQbb4XATyX%&ns7O32 z@@pzRwYZ1Ijvf380QB);UzpmL6g|Gb{%}|SkCX!~-IiTZe+ROR0>lc~Bk@cxrQ7M9 z;$rM-bmVs7oFNE23(yC~zZ-B%=%c&_NWeuPd$DWEN2r$THf{2nUG%FHK&%jt$8ln; zc<##Ex`OOA@NEEeslvzs$-`f9dp9010xBYdx(@d`G0g44FAb!`1qCKsRM?9G>qUy!$M^TtA)rqh5DD5H1$az4cY9) zQvkci_*gc3rVytL1Oq^}-R7K8YYSiWLzw`WT)f>mAZNl0g@X`1`FI&;Xi-#c65+`#L*T;fbJ%5qujtr~$AKY8`3oXU7!egK248ay+hosNw%Ou8K$5MiJp0rK)^Y`KQTT&yhxENvJwje zPr<5?T2`X&gB!0*MOOW4ILN3Zup$)3w*MO|g3DA(3{FC;~EP4byH zEd=fD%~SThxMZ4Ewq{58Yk5?SO;q9^-fl zsOj>14-w%Z-cYFZ{%*iQ?OUrvd_owyf;y;`qbaB9n-}6^2%x z!7c>(DRu57o&gJtgf>0Q6fwF^o?BRXL zfQz!ZHNJKkl$OWO2l>f~{=hHdUsL+Huj0Gi;4AnR z`2J`fE`eY5X7Z6}HsMS1lQs?L?2S{@;Gb6s@GsOf`4pG`aUZ^a&D{oMs|zegK4tEG zy8iY(mrU3!rOJ(|T5l9Spg-d@#cON{Coe`DDEU5{g9CPm--Vs?E}!3)60*Z~lx%VT zD7=}-o>w}rg5LMV?g!%x@4pg-T(vccXQZF6BEH0_W~?+pC+^%VO2s>#&$tFG3W?_8 z1>FQC5qLChQBL*Mt}98WbBthR0b&xu!|iDN?O74y*6&a>2v^^v$6vOj)E{n|>Q`E_ z`|Ze{o6I2p5ncqJ_a-mnF|8`*fB{ka1!fhGguRFakSu~&X;xS`I(G(64&*uKv-NUD z!F@caMs6pP3C6pSfDusUbWq75e#4KEI2>L63n;RFd6()18lt@Y#I{SJui_8=vq}Uf zfvh8MC(ja-X}ipb85K)Am4amn`7i$ub}^KC{TLdBKWK;A6chP$@yd@bKHcp6_NDrI zC3E3{``vdL(2`mJzgt)+b4Bb)dzg0A6JJOavk!*M;K<@$u$vwWTD*t8tLst8k8;Mk}nHK zJ#~rTfW$4%a?xa$N``rIb7#j6R_s%bB16@5mswwn5e@Up`EbuV*(h{_nZ@SVKKLRf zNVnhbR*t(lDOD3ctQWDf^yiAq>~i<`47nAJ6V%??jk7K%;8}1gllXZ!OPfh}$NI{# zf-{-0k^SX60$(KL=QoTe<8gZ$r!j!Ydmv3O{qSj8-6ERCf+#>vA=-Xehy#*6UdUTS zXuNglkXfMb&JK0DFFb#&Cp{nZfXBy|pL^zs)~#N8X4T}|sjzqK(kSGeE32J>$Wf=CKSt=G}z*Hv3p_um;CzGB4ceVj>-ZGC)_Vj!3XZ<6> zR50+$tG#EMXCOP%Odkx;MsGSb5$`e+3dvG^*WUh>bO-{Ntm|79?5KQAWie1@#IoZ1 zasS0dnKJN`E?P6gCv62O{Sl%~s7lclKRVbouCiIqv6`V?p zjC==)bEpXr;-aRk-;f62*bmvlT1X$*L1DSrlQ?nqn%#ng#20yRBTYDAQ&fj4a=AsX z{WVv}LMOdbPx!F3;)UQ7nVxJI%*scr9%r$B+22MuOJyxW)8wr_MqdA>dZ?3b zR3V%Q!?jX@MO)2?p0&T@GIZ90ivqP-i^AklKiZDYWw4{*4BE*j)K{#l+P%%N&8 z17e9zMC$Qh!~pP(Vt=N6lQLB9Y=-C-YD&!tV&3s9qR`z11$+ShB`M>i zRVm<_h8>3R^i{$NwdhUC>g21o9sa@*lCQRkA9l$$D8mPT;*Eo0uSjpjB|_A>jYh*L z{Ro)kz_JhJuk1>$7v(VU_fV~u8Fivc8x3E=3D>bQ@TDV__tU}-=EWq z|8RI(vwz2d3kqAW(+HN{70!NJ)tnKAHk>uNmU)OJ*vP~F=*JvjOT()srj|K zt$Ai)pent_Go$k;F4Vq6q6|3m&cWYd-kvfxBW$UMT^;cD{Ds-B9d&SlFF*+*e9)_e z>8xB25$_>`Pp%f$$#n1ryZH|x|QXOjw^h2j1d9oZ^sbgqCWu;zzf1k*stu(Gj7kWsss6W8tAwd zE-1+AXDS?Ya)MOyAOMYY49%|DD1$eD4~}gdrG%m@R=h9TJL-SUn0{+7=j;jif~YV( zWGlaZ*f&~Q1k1U9QEI~v^Qhd)1?k(Ee*4;Su(O7Y3B`*vL^GKB! ziIcOIrAARFm&Vjki}7H0ZanC5SuHywUQezzDj$KYJtZ{)HQhxBGUdRoCCjigLuZn_)WF|>5<%|Vae6yc3#^I37G65*6ULb5WQQ+)ME)#{_^DiEWf>h4AIBoH)WJGkaf8z1=IdGg&A~ zKiyZw5c7*SretH1%bZ_7{z)0k<9R%oq4M|opU#~18&dF-f5cYz_DN3SHm2n#Gf0%F zOc%F48$2bn#i@2bJ-u9XgTp=!YQ#nX*b}n2+KG{pwykQHT+O?Ty+6LyeT|)JLh^~k z*Y9@Cm%XI~>tif9o3y!JTsEc6%{~G^8y&ZD2(JRC`hPr_sB0Y4VD9Y`BkL5qy!X1d zzx3PBOqq}>B-&{@AN(6oV+@SI4C$cP8oUu;k6cEd;jtF);paQw>pYuwtv=}(e!8?k zVD9WF+L}PsV`5(pOlQn?B&0P<7lRCW-Fxp(ROnLCfa>;0=-+0jXLckA_mJl@8Y~Iw zN*_%-cfw%Mh|;YYCSLpoqrsK?D2f8AXp6=x8RkB%Ee+3FW!$exa`k0jj6lWXryx<* z=awZP(f7|sS5*Tys`HQdAWLC0>MM=_J0gn_kYyMe+xl>rG&2*9M<2vLW|o6 z%;|#0At967JZA^^ALmptpn6bQt z6}?*%JV7w67=2nsBqo3m)4FGF$2NDg9E_(A1XOyZm7gHsbT2pd0)nS_D*gTvgv*(c zbC&mIR0(BBA1tjFIb@tWoNT<5`z0B{Ru+dDAp}`UV)s~^6P*|db>)E8dS8XGV<0}001O&rSkmWffn(Vm_jew+~l(2!FQT+4>^eibl?w~x#=SQzI z|71`I=8;;QQ3QvcJX{6z>rgUh6A0@%g@VJ3L7 zY<4-xgGF9OmIugb-eCCF>oDxQWWpj9fXB~%vuvc{@25=#cx@!uPP;X4D98+#7UBb9 z=LH~O!$x!yzvMr@)hEGyi{=>q0)051(G+|0JamiaiwK+XYQolgnEe5-vHQe)PJa z{gL$m*bRgGCw|By1ci-{+Q zmJB2}A?B8`Wb0vNJW`Hs1fdyv&kqvm6730k*;i7mUUJLk!sVt5gU3F?GL^LWfkjkM z^i1fIjA*R`NK)?c@F$D;8nM^MX6m+DDuB;LQ6Z5*!(?2xi?Gp8M4{0234rLMSUXyQ z!>r(9D7%IkFdT}V@8AxJW-T0(*Y5HE(`A!7vtcpO>n`(-`MYuYh~i$i2H(ZOi-Y9| z8vrsKX|dW7K`JW_7HeWb@xmyQAs`_5DU3p$^7dCCku-5jnHFY{DGOSrL`Sjx&eV*3 z6owO~2G%-36K`u9@-=QDa}0df7AZ78;4RBxx0P}Hz0nn*?`b>F-rPqQbe|GSlVj+oC06$=-2}1YHiFrUgkd6zWwkMn4+jvX= z0XEd=XKAC|OOQTwEXzHL4s^~f+0`W_0pISwFjo8e{i=7Yv#KIS5BQa^Hv7niq=+oF zakU9YIV5*1H&c^dftdT`{;FbHcf3BpI8b1}yQ&)J&Fo z=2n@2B4J1^5IT+cC^X0IVO|SCUyyNDi)9iqV>+7umiIa@oCBPVAT#_!M03OrYPN9+ zuPMs!YX!$;VlvVNIl=)1d1vaC)ai9uF+c&gmxMggJ&LO$2+u@{y)IsH$d=IcfbX?6 z64O(vEc@*xl9mOkk^nD4e!3}&oxEvrC(^gCE})YA5~`VtUMuMSEo*N~>j7OPQ50HR zvc3fYb*>;mJmc+GLfCIvH1AX#E}t+npK~t;iwGrnXThveiPE%)%uxZr+g1Es4Ttgx z!M{g`38gheGlik-Ji{s)ed;P&KD&2iuE&hYJCk1_ADj2gvcmu9-#Xr^%_0Mv2s|~s zJw}k!)cUio6B2rBFxnaCaHMLk#@x})OI>#M{ z;=x}rPZ&>VSzk3j&aYzL`ctF-IdR^~z<16e$5&P@8H*BHqmXm_#LIef-I5R>4wD$m zPhwJZ-62q-+M?8qcmB~o_xV}t8Pl&cF_s?}qh;hku&D2EhA*{DpQ%a1eIadrh&MNH zf?S7DcvE0a}mm!4hopmR#RStq*EK)>c<^c)>RDI zduMkLs5~Gxc6qvc33`K5Bm%eReADhEYna?rQU9Z#gU^jfyo^&8-##U#yiWB-*N(wzt198l#6ty|x5ex(FK zS)EC5SISxGD2C4TDZ_>`p1oTgWA*VrIe!Jj{(SY9 zJokqSL$}8JwU-ZHOde800x!!0pkx8DIJZ5oXJe5e0Q$C|yPO?K$~M-n7F91y6Cyj! z)BGI7rN|H@0bxDdHH>|+l3y347i#m22`2im=Y0EKp=ZZaI%~E$f`*5;`9%E)jZ!ld z?XCmIE(^Dz=bQ1&TRrYCjVHD*TV5#h0cK1X1$Kk)HLe#kO18hn>7u^@^JF31iWkHf zF`Q}Y9=5BeIwt7Sc-E`lnoaFmGv`yJ_)w{_dq(_9d<+NcN{C$f^4WWZ*W_~+s)~+I zo+!BPLy$BqG&sh%FMr%hhr-x~Lcw%rPYYLx`vcm4MC0B6JK-9HhclXftupR2%Mku>PN)KL0mS+$WXV V=rTn5HR}C`qOGB?UZ!dv`ag}IKcN5s diff --git a/assets/favicon/apple-touch-icon.png b/assets/favicon/apple-touch-icon.png deleted file mode 100644 index 7bcafc10fd7d50ff98e1e4a5e892f89184d51feb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3221 zcmaKv_ahXH1Ba14%X|^Cij2&X6=%!Hj&R60&d6RD#UWeC9!IFq5zfw?y^pi!q2%m6 zj&u0F??3SU;qyHI!t;rLVWh)A%SB5Is2C+?Jo?>wW@io zh-c>w@}QfW>zk{qI#J*i;qvC@=A>V&M)1|?ko?Jj?y_+8mPpHqu#8N9$o z5O<3O?4Z}jz0rm1 z^S@QxRtw3>r-Ki>EuSACCAO;MCqp$xz?wU#gp=jT;#37S5)!&JJxz7zex5kHyT>qf`af@s7f6Sl!S)NqwzAd|C#K>*-F+IQ;Ul-GU00~Dhogs zMmT`R?*HiOhRiUpaA5|4+|D_Pyp=0!m+|qtgKmgEz#FtPe~dgntdKr*sg<-K6QgxN!vU!sp_R5XY=)_A+dYMBo}re+T4 z64bY3Js03`Y51($m6GWljyxB~n{6fsnsEOoyBTk{aqpx6GuU2Gp>zsIp=SS*#!^0B zi@T%nnxW`o&kl3s*>kII_*-TR7kV@Y! zo1GU^yy+;&n=+4WEncqXSZgb7#CMnlCIBY5?oY@pwP8k1^_5~E8k2~72&ryMs^gAm z+prIHEC*W_>KiJl#xIpFkO{2LT`GHKw;6JrFxuRtYbGU3`-$T|R*gL)j2sY0Y0#5^ z)pFU55p&Ra^92M{ej7p0(6&Ubo*v{-7^r7lxa!vw7k$YJP1WWH8S78l@@CH~?QkLF z8x(oKb1i``?Nfb*5oxUJF-09^;ktn&IF-5%> z`$wXV5`tK^?&nfSc1~Pf)f-=1LB95Ed7wL_O5vn+t925G0z^& zwfwl`U|Uwh;qDSUb?xJ{f#cHiHo6rS4`Ghl6SiDF=O}yfJ!LLqMda(5`50sj#B+k-DXz>-!MT@9+85?5P>aX{_y80sr5a z%zd8IlAD>b{Y68SRnvSJ5_mT+y@2hL|D01INm?!!_Ai&>M`k8f1W(9OO$6P1Qa=?# z;6}*h93qaD)~jTN>kj$-injMt@=be+$aiCT$mdk*uXmJAMTBL&gY>LL38S%A=71MP zDq-PkL_ojwo16Yzaj zw(!YjVyM8g_9a6czn!h4sqP?KFGj$P-?63P9{ckpBD;TA+5XrOCH-}+$}KC2KmhKJ zJC|Sh-%mu^#(q%vqFsgP_DYuIr`Ym;LU+z--$Sy33rF}QtdR_m8+yzql{`MVe*;U(v z4YX&=HhTT|tYv?oR4vEMao&JC#Do74Vq6E}xECXuTISLv^;vHBVYT>udc@KcfI-Op zuqutoMmtz6>?s?JNG9|k*zK($w<0&EH2bsFBefwP5VXHCf3eJ1j7ui{uB1}H_c%iR zkv7o?WTM`{!xjEm3=yBn?GZuxXQY7SMEZfb3iF9;1~T;26J(;zD>s2A=MjDKRZFhE z6>p0{BeL1!2Ik&V7;fBH>T3 zk}mjP`Q-&EN7TgCO#Pr@Gpk=h^ir{#wUMv&rm83I_fO8}2!tbcxGKUYJ-7Qm4kp8* zQpm|qftB`pNiBiQ?ubPPWlN&TM_e2IkT8J~-7;hcQW3t$N8Ns6(-4*2+mKmuunt5;vWYz@q)681DUir| znFSPti6fa$$a~kJlfGL}STc~Ng#vADC&U~8CO5>60jb02ldS8cUdA0{HdNn2tG^2R zDKpE?E;PNZ1|uh~n0uukgO@wYZK@Z7>Lxgof2>5#C9ZXjuypcKUNLU)2qNH!GAkT22YNpa+W1z#(4Sm3rI+4)> zUr_9GxAUoI{I(k8PIYRLsPxjJDew9%=Hyuhx6#{L>5t0P6ZNj^0(&oaf&p~VfveSz z3_811Xiut)KvXFO(jm&^xmXZG0)eRSbxp$!6|h*6p%*pr4IM652RM#fuM$BRySTe1ZnQw|8Adu{UoffS1-P*|Y0t~>4 zf(+ZYTpafE!yG{>3f#SnQq6V@@U7%Cin9g(Y%OZWyMM<<=wc=_wl@0zSgitK*Nkez zv&+qX(u9w$38_GoiFiW zJ*`@h!2i=KB3A$!afqc9n7Q4{cY@E@kHJy;)WotyY~fw=$IHR6V!+$fnnbm_uk7HW zw8^SB8K1_pb?g!HNxm8TQJL6~M)L)e&J{~x>C5*R%=reIT_%VYQS{GO_ip1%QIOJ_ z3v61et4g)z(A8V=N{q(&wf|9T<8nB6j2JDPK6d*o-!ZJUJUSn${Yfu`IYHQ64{+(q65c_RU;~f;ym-;q1?D*a7HI+=vhxRwihnpO$AcYK@aJoK9CJexzg7 zZ*f?1P&f(QI0G)78%0waqWGut84T)_3<5kx;zC$9hK$;5o?GRZCc}f+jMDIxpOK#8 z0a;9!W9~2HkH?$=8#Z3nQmUyk)n_kWM;n^V0)+x))#-kYdUJR;m+VT7=LWpvoI|w) zLPb1w>^ftL6B%XIqq|<3GkLMBto+U2*OP|XP1f@9Cn%KW9yo;Txkxy_r+j-;lM*^> zjS|o%CjM}Im0mR1>I)U|^BOiOn@g@v1c0H-OF*AkX|pLUpgS(A#C0xMVQpK}=iX=# zlk$BQgucQk=;Y0VMvSBSu5{YWu7>w>!3T5swwc~6Mk%xp4_EjF;_c0qtI{h>6QR!q z*HJGI+NTUuv4Z)rxM}yk(&Dn{1VII|3?44t9XjLvjyFZ|q2ek-;LSwinbE}bM3U)Y zBq<$^j$%u3R#beqM_CnKb3O+++Z>A3Z+mU`Ip^->vI8>T|6L>?h4*_o6{vqquux6? zi;xb}bOM4Aw;|_n*-!J-(5%Z~+O5adS8%=IhTx9VG0J%1$rQs=|up%y)? z!ssj9wv@7~h$C-&G%BTyUS~cOz>5`hNuGV&^MKLi=JEO?AN(sNKckrVCN5ZT&pKnr zKMGab0Y0cD(bm1+@sDI{#SH#D*H}d;qi+N6&PQ@`ROHGqh4IX!7muor^Hl6Eh5q;| ydt9G35lrSBDUyHgR|47f`oE!U2e^6CdqbiZh*Ub9k81qyXy|DfX;uLoqW%X3DP?T{ diff --git a/assets/favicon/browserconfig.xml b/assets/favicon/browserconfig.xml deleted file mode 100644 index 153c99b8..00000000 --- a/assets/favicon/browserconfig.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - #dc0067 - - - diff --git a/assets/favicon/favicon-16x16.png b/assets/favicon/favicon-16x16.png deleted file mode 100644 index 42ff0beb16a67d625f9119317d4abeec2c99d82a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 485 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbMf#sHrXSD(zn^>X2Gv{WQ+y=?f6 zE^8pUPC5c8zCtJlNPau5_4Sn22KjKHI9xHD0hIlAPV@6IZMevKneZ*zAzw~t0})W; zmy_CGj%$Cvpb0eL>q+fb>x>X8<-)(7(K_Jm3secT@p`k}ZhQYvM|56qH2Qi<`~6-$ zAbEe9#pNo;BcWbE!Kv3a@B$rgT@vIM%&@L>r3vd4MmYgdo^G!>)@PP+Xy+W*t;?~g zZF6wFo3vtoX|v!g%d7L}srL(+6>V(Uk-F)~(aA=e=K54W-Vg;eW`(DVV~B(#>p@m0 zCPxN_13UNaRa)ZA!XmQq_J8{`l0X#--j@|yirIP=Wi-C3voyLb;#8#f`-SRimF(Tp zi9-FyIL=lC`EK7{I@yF@ljroa58uDemDgfb_)}B1{QfQmgW2+Lca?2tOu4?iY+HT( zZNI?fPecFx`D8eM|2p~VMw?kZk5}E5*H69IFE+DoXJ70t^(m(-0(MKgtW4VFxbakV h%j;ss1weP%KWE@Rv*7%kKR_2Tc)I$ztaD0e0swpL&g1|9 diff --git a/assets/favicon/favicon-32x32.png b/assets/favicon/favicon-32x32.png deleted file mode 100644 index 7c478b7b1370633f939c8f6d072d78641f3e3d4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 886 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabRA=0VB`q!332twEL<-azC}A^y=*uL z$-zhq%{}VxW2u1A;#6*8g-+2PkqZ$^)Vv$bK}({7#=0 zM8OV=zzfArd!7C6PqhSk_U=TG_?yj!N5Z^-44{@5MgK#AK@(OIMp?pfUQBJ-df3eJ1I4$EG*TX1KgtcQxx z)KV_(cNRIjzGS@ovp%Qa)z(Pj#Arg{D52jbo3SeNn zFuhWrhr$Q*9`i^QXC zafj|di!_(L)zv2PxXml{@ke&)=TZ$XBs)6Wp5NwTKM?bz@W^r@qXWzNI+l8Nq?$2r z*!q;GV9LophKmLQk5?QspQlBSo7zuvw1P*p9>&UGvAh28%?3P&$DJHTyxUqOEDft6Rj9sFzX#8>$I z62a>ao|ZIKlzu(cwJ4)#`O_&I_1b(z{kxJ|Q(8sNs+KC;j}ot9KIUfjk;f@GmqAi% ziF}8WiI>Cj)LI9hucFFxm)JF|S)F9&bAsX1U9bJklgmOAs{9fflDsDfuVYDgY;jFY zeNyb&^()vOIDT~ZoOR@4=+g8@H}5EKv0+xY)pF?*&+{4g=A5?BYLi<2$n-B0tF^%| Ui`qhOV4`90boFyt=akR{0FlF*6#xJL diff --git a/assets/favicon/favicon.ico b/assets/favicon/favicon.ico deleted file mode 100644 index fc79f4e7f678499e464a7417d10912b1a1dea57c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15086 zcmeI2du*508OL7&^Ri%JOcL!Jtq5~0qXo7a7?&RgF`$HrA`mtc{KF{3KY+~%$)IeQ zvN#A!z%3HCv4lh+G%RT5CV~ZYwJZfUfw?G1X)=by&<=_%mcILb&gIwhyS%;85&r0# zJbljPInV7p=Q)>Oqo`lhKN>S85-yHj9T`RUMNw2-?COJ~=#<(93)BD1fGDaE!8b*t zA<-fM?dBU{QQzM_5A=B;zXu*%R@;BUJ(UBdzW8Ck{1i84t8^YISRr_2!SKpT;Z1^R z0%e37`;(3{1;+((7FomEVz5u?F;U%9Hw$Xl6?94KJ|YjK=&rqYlQa- z&bhWLYFnB#K5QrUN@|*Jxz^Z|-X)T~MSxGw2o4IK6y*3(ZGRAW-IuCd0G+d|*7d=s zFw`}>T>95bUn_mDX?2Qg^!l-N_B(;fmT;2{PhYb?k!h~TCymM1?s5lyxBg@;+W7UcO*~Hy$Ex1s=(mLJl-17qr5_vS zW%v8KbR8l%A$VPO6bNs3^&y_7D_AlL1wNLE3*%2=^gws)S`qS6-O>~HS}$3B%ok(u z|D3QdEEDra_v%Y0g;zS=U#C5!>#QspBNey*b~0Cadehz>Cl$UOtUmG!{sqXLtY`SJ z7W^8<2Ig?FAa5>^&f^8d{sqlJtML3#PG@EK3dr9+9%`K~%n5$ySLpe!ha+T9_k9c~SULO74vC%b@TZS= zZwtClOY(#IZl&MxW4`7IjIAaw*tjAegf?Omw&?_KKk3O@-XdLNL94^I%)F3em0Mk& z41JEj(0j7L>SALX{)>qdFQcc}@g;VMAwQ@1=OgT%zVyhqr2Ec5Z`J|1^m0bqI~S|x zO#VxQ#(Cf3hgI46qo;ayHV!$Gw^(pI(BVp|;=}s1p6$7a^#ItsWalML{o-Hfjt`8_ z{hkdDW2`e>uBG3t{R(0he~x?W0&x;cSMuoiY~E@cEvSVC+6SMleL3{G+D8c3!`Vlc zbT|KI%j-(r$F#*57u&O+)kpUT;)2+Ae!n2hnzr{! ztx5TvGrGTuFyg3m+-u{nNPCO%ryt`92dfPeYO^dT9G68=E zMQ+Bu8vdQ>4~@nZnswZ619yQrjCK9Dx^vb@=G(W^*VRw_xC^x3G1_I}H`??1Ofk=1 z#l4<9G&|g@LfI}3xv$%~w0B_MJ^=iLe~`nP;lA7D^$x9o@#xB(h&%&Ne~;mgmUE}m z`X%3^JK*=!#C$Iv#3S?T=M?_F?BmO0&h2@97W##<=9c>% z>HLI%yu;alw17OcGMj%`7a#cI-%xM-gI$}XOHI&6d#Cf@#-jgm=Gn_*toZr2j*K@M zXq?{Y%sy=QUD@QvCt>mRZ%*8WGxj$ZXV~I%#-=1bzFoBV1O3lvd^$&~-Y!RXF;DNY z%blDfiGA$g+>>)A^7I~yFY}7LbD_MTzfgVn-st4pld$M!3Vf^+_j3gE++12YS$Wg* zV!gU`V9r6lJqepU*Zv-RP;zqY&7!%I#LKsf2Qj%tfUW?s>Ejbzk(5_FkM3acv$AZg z=jgBg0Vb}jE=^tG?c$C&B8PeX$w|DI<;ds?&mc$HhISW_Jtkzn*D1jIkh+QMQ`if$FI)=eIDq# z2V(O@QD?Z((N&dGh@v&Zt*Iy)ma31Ni=wC~bs%mS1g?o2k6L`OI*JO4>P>yk%`I`2 z`m27{60Z?`e0s%A1?9rcW1>_n+}7`OIXLd$aM9rE<~oN5IvhFNXmGt$g1)ZK;?pWq zuZk?6ih(IpA2g*1+*Xtt1U{Wgtpit;rw-jLyk>RL>HfmMTm4CcZhY~u)kVz>7PmAD zuP=`q!7|w3195EH<%Q-(wd-qToW3^r@%`Rm6 z3k8b=?B5HuAAa?EX(@TU7ab6^3BE8e+}y>BdrJrLEEdca%*eJ)b?*Jmf)@l+1RDhC zu_2#)-Fvt*uP%A7>7j4G|9Qs$Y~-UCpBaLW1=c<*Fa55d_KO1Szm4(er}7a&jc@aO z^@jUp$$m|+OK@0_`0ikMiKlqL`#*x^f?o@;E&LyX&s4AReo>isqkjq?@oiqd<$PMr`Hat4ku>9yn$-(B$tOq}iIY0;fMsW7w`G?AA7Y*->yVSSU z&yT0?2}a)7{SEt!t;z!-4{Su1paprtn*|?;_C?qJY)IdevXimb`8ww}JjvN6U|x{@ ztgG)8CRQHliOlRV&K~@qVUOBJ%kEPK+*%OLAmj?B^+pV!%fy#HxqsZ77cMy;5PQt= z;{x(hJo#52zti0q&$cnC4qw4`V%+Fp;}Cxvn6&v+-Q%Tuh=1})I>#sR>rT7)-6p=| zN`9Z)gCFFB=kT}W6XOq=b?)=0#l_u`kxlDz8FI;`>>cDG@}l7z>__Q+Kz-y3@~5E< z^JX^xj_Mk3*1Ir!AwVuZ5b~4V!E&ZVE<(= z0J8@mf1#&kyyOypA2=N{)}v_2>3+WfI9nA z`b;93W-lh^JNa|{c#qv!<_($bBb)&M{0YDGKIq4Q)y`glu8Ul~MCH%KZ!2{^W53=1 zu>ZBB{Hk%t$B$F&NW&j~>?ifUEyQZ~{rC(&v6rH6+W*kIe8}%Hd2bfZe&Y3*%ISSC zXxB|9|EDqRmF#24MOQNy`Kgmz#e-bHe49N9O1B?lTVDG;H}w;TWzcsNubw_1*7z9$ z{Lh>-uf)IiXWseG$ET-l=q-7iV^~AP6wqP(_f%HWICOA6$9^E=Oqn#Uul@h;0sD^7 z{&%g4Uy0*&6B^@tCp5+18Qju#@0!W2H^+C~p(haa)}2ko7f%b$2+r!!qB@Qn`p0qo z*f_3U5w{KcX?bhWlzvx_ynW}@qp3-)Me(GzR6I#+Ul!<r)VD&kb9@nC(Iphn0}urSNVC` zl(TOaY%P87(vPY8&(K*p&x>})5AJ+*pfJ2D1$zZmf@OlCC4aj-Q~#H>R%ek3@H1nf z9d3S)fxhC0cfIl@$77u9AEkC^_Ducxi5JEk`tQ3MyL;TehBqF$|II(6! zjPrVh7@m)Q?~RAcD$gB9hmylhH=#$_A3xnAeou+tMtl>F$u5sR`gs9z(Vag0pgMPj zS(NknHRQpZPFwj8W~L*w>Y^@$o&C_;XxGa=O9` z8v6#T_uns~XqA55EvSp42CcfQzY%;AMXf5gd_RinpNyjOKZ&BVmo=ujecb;5ITe(g diff --git a/assets/favicon/mstile-144x144.png b/assets/favicon/mstile-144x144.png deleted file mode 100644 index 8131e67dec58087223ae3a24c92717bfff03c118..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2454 zcmcJR`9IT-1IORyJ|ek~Mmdr*5*mFB%avmbbDv?3k73L$Qi{2+=8D{WK0<|%D3Ruj zwwPpyIYZ`X6TW>P-@oDedOTjQ=Z~*npQ&&wlQUf6TmS%^F*AkT{=@A5mV^1vekweN z`vX_Fh3!oX|IpL_TLfsUpg%|8@Y_~4zyg=>8tc^W!=Io`uw3cczIuzUk#ILPe;vaY z33gP!9BTmJ7&3zy*hbC#a3;4`EArUE*bss%>ZhkghZQhH$f}J`x!VR3d=$PW&nXsB zxe~vuINO z%C!MuUH}kz*StXB)Oo;52wwR4PKCTJz0M(N_EQ4MjU$=r*kBasIMd%rs4VW%7Xk34 zWCJx3)3`3F+xmhCiG)tOpSwHVF0-qd6L5RNMWy`0#nm9F;dlR0X00NmbNm^Uc*_X| zrWtIALuL7r4h%95_CT(B7Z4-e?05Iw(#xrJ4acz?biNM#1gQJgdpu6xLmmA_cx_m_ z?0aZ`%R+`nh5N=83td#+0?}br^X!ANyw@L1B#Pp?Sfi1dKh zDR-9XgS}0S>2>c#+BaB;k9iUq7dyj-HFS$DX(~!t2`Z?M83khg=;%b^2{IybF?&A| z?k-I?Q8#i9-Da+E2%OxtFmd8TR&V`W7BVh6<0ug$Wg^cDK;47$7BXDEfNjlWdswP3 zO2FG}J^=un*trBGmPnAn!Rf-v{MM!U(EI1H7;3uAb3VXlGrB^jgZS?Rc5VJu8mSV! zW*8C~FWO!vS9)Cf19Rtno0vpgnbbrFi?h~}!D_VU3}^S37Syt(#VCypN zZprJZkZWX=1i3304g2xJns1Tkr1jkJTIK;obkRG#wn1UN+&5J!4!4ZrKz>dotcoJ% zjTO+v@@A(kQ)yp8HUL0v9_-(j0&wf3JB7c1=tsp3;)7aQ8EHv%UlaQtONfA?%kyQO zW2b-1OKa|it;A+^JE%2ND4+-Fd)V`gxy4@71ZH>uF}EXAZyN#oCinEMY2Dou9#-GI zBcCv)j~4FLr`*c_5K17Rs-m8;*ExsYeX%f4ja2*fY&$83Zc)H{G_Svge-$@Pn=}(k zO~o%3aCTwxddl+a-He8_Ey#aSJjqdR!8Og7_@BMQpR;G|D@8J5Ec$Ry@Co6^x1cH;*Qr++=kXhPJ(*64eF_t= z$yX3AVz#?BYa5B4&fy3&TkR;6QfERDb)NQ&`car*m30C$7|bJt`}e)<)jqMpQuogL z>y2f;o~^5%B2;07S!PF5l0!eUEK~`Hg`MYKD=YHkx5Rl^5Cv{A=Rhv8Ui-Ry$@j+a zUKEYiRAVAwvYGGun&*JeOosB%+La+QWEa-aYQ89Ki4Yw%GBW;FI`vhh3T)ZGBB>g( znWv$|CdUa}DO$mS5*e+yb8);1nDH5y&P%Jizq22PU@9)K(~-=;X}CZoyJe$(WXw}u z=pGYvSg;c!&D7E~zTPgLY-{wPl|WRLj5A)MFZF&K7**im`rPn{PZv9r`}yxSZ^-un zKDXF>30>!*nu~AhJ)HKQzZJ#eN?enxsE%wWB^{mByayA+oXzXL6pb14n4Qrkj(@mE zI`l21{)QzD%|%QLs1Q7wx`MW}%^82ur6o0en*5oy_7ej@5!K|;O^IChJnZXB#<@UFo@Fi8BUl=>9 zj>?N^4KW&X`{Gtahd-fqv&^z!JE(j?Y;Lex!SneEAGF?GiQ=a3- zJzlbm#jpuN8^1TtyI+roc)iN)s}(jv)IYbj7RZ;4Ywsxzw*j|$N4^VNQq|=77^o0& z`SPYv*|)TUppbD(2c(R>wCpo%EkEF3OjTE;y?lQ4g0nf7mUx}xc5CUgDEaU8UsctU z^k)h};2@}QzpHD;9TFAkHLcW8t*!8E`Wj;V;2yl|Krb-HMGI1}Bx*fVCy5Th-w(4& zdnmELYGsC0oW*k+FNcc;3`1^ECHt|Z`gXT-!1<9t{!w9PE@GZnptFlSxmnQvvckcT zjyBOzojP*THp|tY z;1dQ@ght7im`D1bO%I)Qx<9%3bWW2R^$X2iF*Ta{rDHC8W`wLM)Luc&#l#99dHDjs z=5k0R0cpv>v9atW;{QWM;>W59wf-`Y-9_NmarT@U>c;y0YMHxvO?#W|(nOWLO%`&p zW{Y0{LrK$oN~q+pfYM5aiDbpR`Hr@PW7u49Iu_j2n4pfAOC`~YAL~t1VwkwPqfxCL zQ)IvR#!c+uwrh7KwF5>sN^MEBKywlW+v({Ap6NS-_Jq25q=68xoCg%3@JF#%}| zlJ?vaX+QMita~fb3%i_s)a4;2jNG-XZka2$>@oOFN2*M#AW28LA~yUCwq3LOBxQc* zL{#N$Z*R3eByZyY8go5_RslCGjky{$vsjbUGyaT)yl>AwEckX>#W6zG$}5D(R|uln zonA6}Kekn({KAi}^R7G)tXUAUqAN(Wz@F5VKX9T@$ToXeTf&Rbp}Npxk0ia8oKHbV zY@3CZhtn>=Qz?4&QmI#EAS+cPD!io@I$$Jo7?msb?yt+R?Yqq9tYGV%bngd?vYeUY zf#}I+8RYGF&W&hK%f>EnbgyFS&Y=XfR~a$M`ygzr(>;B(_oq;tsJ81AR(bR*{65F^f=DyBaYPySz$6jf%#qRaHABMpSJr zLL>F;QAKJKH7bg#^6mQzzVDpxJ?EZ#&OP^he!WR>D-$k`D;z8=EL<>Cuq_MAf4Kkg z1=e4UHHtmwS3uwv_7DsI;Isc*30O?kFQ5S0*2<2B+*@2xF)dSWET_TQ-F3o99AqUa#cjCUhU^ehHPK1iI8jwDG7#|#W1U#z;_RPPHRkNnc z5bSYpH+W3u`T(A#(ez&Z;@lRR4YfX_Y0N7$9r@jzGLlV^*m(&QJ;J(s(QgAR}4%Q$j9xAfy`QtuyL8GH8W3s3u5a z@huvsy#!VuBD2wr)RTQFh1}k&p>KSHV?reEZn~Tgeu{Y!DtunkvoCv0n&45o z;oI0(!R*dYFZI~A!PV%1pVnGkn9Wnw48s_dFP~GKR9coA*iDaJKdqfOovWL?_$-3} z*dUh%U##?F=4(L>%(1$!d7>rp@mhV_mPrt{lZ)BBp+D12g5~{_8>@-)SMgXa0R_SW zb<`;__xo%76IJC=Qm)-MpWM}5PlpauQO~sv(5PCTMbXXB5ph+$xOg;oySLMmni$Do z1k*BaFTt4#5nW6#m7{lAT-mf=eyp}5%qcH@S}V$d?iw&2pGXP1{>tNAeOQ&KzP6<{ z*OVYu=tkcwqR1>!&FHpuhpy<;-tPwP9>jQ58UIp*sF@USAbF zN$04$@W@g=33HE#=li(;VMJ$xjDZE)T!F3_0xecGOM3L;(e!6bDxtZk0xK$!)}YDN ze}dyKGF>U&)(kM&s0)g|oM`RB9KNIei7h?JiYsG1pE!s)s{0wSc5MZ#td!WRYY#f z%k4#eDI6J&4UabNYu0@;PTLy6#*b^9bq^x|nLf;ALRgGom~5M{6bhEAqGgWb%{&^s z*H{>T-$)=7`>;N6M|Qk1@;r=NFfo9?Bv5W%r7taoslm}eR>=_~$;&qoHtSLZ0;M1I z3^u#P8?St9H*P+N^zR)aU$-;t5O#a-Kg9195US(`y1#Xo2RHvCWfTIOY!Q#^_`S`6 z7xEj`EMkKgg<6F;atSjA&D9Sg{;0qdU0gZ5yK81>I_KEVzPHCvUiH3Ay}3&v4G<7O zX4z+@8?g2g^XOtCQNy*fs&KNoTI1t#D!7ect5m4|4U$AdO-S(PY+#=F%WdE$icM?Q z77Izxen8dXaa%~xG=GMFWE&MD-cP#nW5K-5o{fa@csKHNP6j)^J2}Or2VNNI`Chgg zGg6R2h9bZ9fS%+`al2^^j>TFnT}wOA32v^LuuNcdr^ul_kTjmfAZ6%W@O<2qv$^@o zXmZUgxwX!>xF7q}Wr)HzzYZvo1V1<=tTojH^c7c3(ZT+BLvRVLZD{iO`lqtr0y|w4 zR&}^<-DVIvmE7zl-i!?h&BWlwE$EGIAL~;qNwWkR`>bw9R_(bW+~|h@p_1aC;g;*h zt@lZKf-6h+9=cN2vR2W$N>Wy&A5jO$aMo2uPWK)hGaeSAxO{%Bi$>PS-D+4mT%7dm zHvlU5wwQx3&8Lr@guNnrx9IO$Wt}$X6i&(PVfXWf|8rz@B$g6#xrL8^kMhqJ2C)K@jPAt$7qDti A_y7O^ diff --git a/assets/favicon/mstile-310x150.png b/assets/favicon/mstile-310x150.png deleted file mode 100644 index 0e044dcadc848dd4432a6d11e7c460fee02cd674..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2301 zcmb7_=Q|q;1I2^nTA@X1w2B(7D3V&KRiZ&{301S)8ns=dirBSMd+$=jtUXK3){L#K zotL%|u~%I#>bf7^KcMH!d7j^Mo^w7PyrI4(3)6Kb006+E^$3Ll0B9uv02)>Xx=WHZ z;i_?Ia)!Fb>bg#z7r(D!0_o#r0~;2jZv?or->k?<`DYF^hz2_rCkG9egD$ri?6pux zW8eABd7{@l0f;J^hK7c`ccFr#w^0x)F>?64*x^8}fEO6#aVhIvcKxo71Kh2i49G5X zy%ki$kZ@^X0(QIJwIfb-g!A-B3Gb$h|8*ZE9KruNrNeF z!ueC%z6zI=6-8u7JpujtXek>nuXzxF_TrLk@~c}scErIi#$dXD~`p+f%}}^hdIW z90jUO%4*h318eC0I%Efat`^JD`YpLwNut9ISTnHhW(mrVB+y^eF`Gx;Z^WVqaXJxI z+rd{Q2ZY&Np;8f}*3$z-hlQ!tYcNS7LY^^SRx{tlppws786hzFI)-oQ4a7V&z^xm4xtRQ%vL4c% zRynG+BOL~Gbw4dC9G;>?eZ2gLYiEogal;5(ml{+GM zA}S~r{qcv)8^qQM=SWXKN{0!&N}p?pHb$N?i4}%SN2u`;hQ1^O_!Y#sHBpbQF_(PE zf2+xl2~GYD?p| zwYSWv-j3bS>3_tPJ(YtfxyG0D9))yA9G!?_y~U6vZxEqKREk@=^z#3-4;*G{MC zV0GAy8Rw&&-w*W6rIyB_&$_QMA7f?{30#OJL&B0zRz$}fyXhO)Jd0q1!nPC}KsVg^ zx*HR`0nl}VNu#X=i3Y5w%+-H~(tzr|Gb02Et7GB1z<|ONsmCP3k{q$nF+5Zkcqoc| zZ!TkG$)a-8yDy|ECMKJ-H^X*=TH0OQ`UB3NReR@(jOD@+hevM{w+=lYyJ1Xpka-l$ z&!;6qW7YQ1G3bd(3@TH1_8;k+r z+QT+(Got}o8MG#ASc<3QlY8iX`6SF(WHjpRjU-51CqrpnQ~ymAWWcvW*lKZSed>Gb zuXrL!)?%qtb@l5^;yn$|pjDIzPJgz5m_0cDumVcWsbYIn0!#hl<`7h=02XxMc>^hK_|N9E5L7ctVkbRH) zX07WjQB-8WXFCTavwlt|XQ!W0shuJ%;pvmelHfn%?7#>tQC4C=oKbq%Ul&iRCMFrT zVyD?pGZn0eBmB50@mp|)PhfES+;;GsHTQz+Sm~oz((5U`BOJ6ELgir~S~;nCGtFJ$ z!^%QJ2`jlf)kH>{+^rM_Jh%jyR>8#mkh3*gRM^Srv-0}&a+U0h9&lwue{yu9&C{-( zMy8oGCBdvE*f7tgYA-b|gZ%hv>?-d7wX+-(9Y;D{w&{YnD`%fSU~pS#ZZ}!NTp9QY z-hjkL4#r}{O_hwgP-Ff{Iu8;e`~BI^SJDXQhwaUg5Gs-l#frF3-VvAdY^7d_tsK1efF ze6#uZO1erg(<_EU-1l)KPKdKlo<&c+&`cvC}ER5E)96VPvP;zwnZ8 zhmH?6Cg2w}}hNFAYIwo5c0S#e^*dvV|4Vs&yLWaNGOS{6S_;7tiaZ z$4RGk59_FQHS2Kcgy_^{JbJXrC8}*s(I`u8uU^d5Lz?)tVWqHb(TDMw^OwLXw}xB% zM0>NcoH+2rc+7Hw=ULK;H--r$-)|Hz#)UlwI9jsWq)!#y{vpijXvoVG zDgrWJkbnNHI>D7!o?~X$u2Edq`g%U(4>VMyhdWOQPn6pl9CNGY%Gt zk7;Oeqo4$!BQI=Yag%L>8)nW+$4 Z|NPx6Av5o?;G4Vu0WEcXRJEE-*uVUmOospf diff --git a/assets/favicon/mstile-310x310.png b/assets/favicon/mstile-310x310.png deleted file mode 100644 index 1b00e9ad231280592cc811b0c4f4eb8185f1d4a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4335 zcmb`K=QkSw+s08NYR?3GKD?AKr7G>zw=C=Umr){l4Fk`nu{gx7lwK5fRa7z*P*1h)5v+9l))BPIIjCspB#{ zy*?jx^wKnriJztyqb3Le+uS4mrbl~ek3DWYr`zr2*S;ypl$TQ(jqX0A7FgMP5aYy= zvS$kVCg`S{TF8m=e)AW-?~LQ1Krg21&4PSy>Y6Rr1|vx&0YEr@WJq^ZfZu!u1!g{{ zT}m88+bgF_?Q^_QobqY0a{D^a^$e{c`de;rp~ukNZmM~5e!pEuihF6Ts&$jyVf_qR zZt@8j5}^Xa+qjmNq-ZyL1h737lhjgkP$+xLdKoojO&@fq9jg{jxttEO4kWpw(m;WB zFADRTZmoe|EA8=j=G=1fARBbR@G*`FH^fC}Wtl28__Cjtr6k(BRs7j7)7a%}8}3RA znIAtwyFVa88B1PA+1Q`w7TX`x%8W$xt+5fP15;f3N6Gw;n&H4a#S|+d{P5u2U6A2; zgT|EvvBRj!oQ|^fAZ)isxtKE+t=Ta4m_ei&pzGWU7qU(`Dyg+MZ=u{bNcc2J#3|qxziwhE9 zFS@P>c162ElcokzIWY1{e4K>~p&txnu(qw_)$sNbM(y2YA8`0V<+vr8;(Kxaf}X~{ zaPu#XBNfHIBUZ@!RNyj?%BV)AYJxL!m3$Y+Ca;v-!s)HonzI!_eZ9(Nxq_YHdHe%GI7@@d z-(&(cSs&~t^}tO9a0vyp4CfP^WT%MuOh-EpW!z;9ib+L#a)Zq8<@6r32ARcR$jEif zaV9Mr1F3sz=J+d2O)(FdF`%j<9M&>wsSGC4guF(3jT!HdL=4;G6>FXbUx5kh>F;S4 znTBdGr-`5Z?JcEnYz@v1%)<+?Ay{1=efgtPbd=~&&*#f>YEzYD4@=Z01YgUZ^ldEU z5tDl1?cRWAWyf5O4A1E#97UO9g6umE?C4W33S1X9wfqHsvg6O*) z;wc+t`AsT5;HABMgq$19aOZSUbDZB?)6DG-8m!P3Qt|BhA&h-rO#KuCA_H%d0>+P0 zHI!YzW8X1sgB0RsueTw;fGCcQTDZdoXW$an0-^`SKiSz?dW`;W<``>%QZOLVvK3^xZY69X&~A) z4v-`w+?KkG@hL>TZu&?t_nak{n*fzyR9}5n5Tf`A5+$%{}R^8u^DRjmPU(^V#yNCE!hf6Cha29W!cE zF|c9Ip1Q7xZ)rg?jzB>XNT2bp3bsEsb@TVj`2&#N`a!)D4+wD2>2YA*6XXruN6MO? zcn5WgBWOTffnZLSYfk3=uVN!uE80NTV*WT#<5S%}S6blLp5TOsI#K=#$tQ0K10kzq z1PNPhleDvkGS4qbGHWA)R$$Q$W;Wg&qOmR;4-WV2XjkkhAg|T}pGb&s;^TL4hCTi& z(kG3c>AI!M0UkHRz!{;O;IVVLSrt+=}9&<4Amdc3P3F=eZsLK9n%2dI^i{JkEiL)6^92gco7@d_fCft6$QM;ASc}T zHoo+ZjE$UicG}Mhg+e;D9&|1)8D^7ZED8EjUY*IYLcr1t-g2-<;&+hNOsI5Rr;ZJ% zK7{oHp%7KyCdA0owV02wCCE(trmtc5=kgV~vWf#XWqhZ$r9J-JLudO$tjP(@^csiQ ze^N|)_=1B@Y3U}B-Gy+{${O>7=8sDp5!iG!pMO@;6n)7?x?D^bq9YK6>%SCRm_Ivf z7h)6|$e60APYey!5r_j;<8X1b(g_M(*Mv5qMEqa4rTzu5ElLrwtW zkvrmvbhyvGH&m7ijQkC6qNWK5R=20JmcQ~;S24EpC;viN@c#Loy~RpNE240nfGKM*scEzOnPchAx9m? zRN}koFXPyKxgqh2CR+T z+|10KNI5;J$31i|ye1Tz*vmzCOFJC>I0K&@GGn*MmKZYyeFN7lpDoM6udz6TyU4TR zjsp9Nz*p#cDJ_)2g>-*x+h;lKvVCfQkMyyjai>B<=eQB*oBAIJ3)DNY2Vw=RcG^W8 zB2n(L`19tfI{2YMmQO=a{Wpkaxn4w~AA>S|4xX~jV!f7Odf;2S+e_5#l@${9CXt6R zfd%=^{N%52uRD@>y6PD0{-AbBO16KDb1F4Dj!Hv+nWpjfDVp7HY}sBmTXFKwV|K+5 zm%`~*8^XCZAi2OyWGD|6`0#5Gu0#$(?{gTXDW@;>OrRpoop~6lx)3S~;ylD#n%e~} zj+I0?HWYL`6+09~pRpdB^UJwcwcV?b)g__M@z6>k72Zpgr4N5_J_yvH$x_6qVyUKI zscI0yF)tfMSXrUOAwoT3rpEO~N|~Blb4G4__hJtU*bKffvn1vo+iHFK$VeI{nd1nP zy_+4mCYYhe+fFTP;X2?cRiMz;Zv$ofA}NrHR-rmTpx}EGPgh*TLPJ)_&Owa*pd3NJ z7!Q4hP6_w1=O7FJsDI6D4|D&aa)~*g0^as$F^kkDMAb*1uT+fv6*;Qx*NdUCzDl7D z5VMh-Rlz?+-BHGODAxj9Vb4q6mT9M_qTnYh3D)G*t6Vv&r$Z$t5R?o>KNDlWj0m#m zo{zQCfIekqAb z9^+X}ko`{Sz`IC|k2d)JetZgXz8)ES-}q6cE7biqxSbz{fV{x2l8K*lq~E4gYpdK4 z(A(yc^k0K@W^7Bp-dAwzD>`9VRa+ILd)dW8uYJ&J!%K-B79NVs3gPnnq>O-&_kQ+g zRtVCt)vH+t2+gE)i8<&8zo5w%S@CPNbA|QvVt1!mo%Z7{xwC9`1eUF}7^C5EzT89a zfH#A_d^at}q6i4+4CXFXj;fvb%;L1Vlc!4VOc`n*w7qEUZ4AC7#as{Gb8CqIk&joZ z4*06I^s?yJXF`r-*VC$IlqngKJBTvgW64; z<)Id{BDZxt`l~l91nedzB^UE=F!`PKVahiAi$yqVanAF}EEUs`Z13<}UXxK-`9YIg zG%mCOdLh}Bh9L41k{9{RGQL^%L3a?IQsx`VAqGJVB=r#^eDKF9vv?=bWgqmY!jQIa z>@AC&YQG+&ko80z=3QE)EQ|U^ zyQ-=yq6|G^%zZkjK{Xd~dZZCzjz8#qZ!>0>-qWSKUcy;-ktx78t3X%C+m@_4kUP&_ zoG)(iv&1gD62L_Q7{}tczkj&&ya1%RFpsNEifui$P!fMjk!TW@LO}r_F%%nP6E)6r zCdyun6gUWNfO(n4zbxq|Y_qZ59fno^;0ysC8*9?#ZdB2GZ$ACt$MN$y)=Qn6%g~oH zY18v;O=X8~LeT^@Q@(UY~U~H!>Dc#2LDSO0`-uv)9nQ>Ubo222L)49WV zZ>1ho%jamw=d7exRw#i&N2OIu-J}E_3|qLjR^GFEu~V&P`R-!d?&DioWr{2B0Zm9K zqGXqzwX_8m$l2qwkA5r%sIaHz`l~A%le!0;glJtGiuVTZPZJkO$!XxxjDqjK?Z3b| zh+SLsOmZ&?%PzdCj=C_RgRbI{+gik0abpBw-Ck($^QJP~+hhmiH z!YGVwCVuPV+Cmu&uIif?Dkcq>pi030eyf>-((3pi+ov&AXB!?*`l$G16fA{zX_BM# z?*|jV^6}biIK1OX4L>4kfW%4)iE*Fx-;C!xA@a#E`bg)q#N^Z&)1p+}md(5PZY!rm z%ygB()+|oCCMLwQ)bZM&wfGy=t4n$^AhI-#Mm)i^=0QI3${b9zsc~$Mm-kmFjb)od z;}u^u-dk~;rgqi+c1~yb?X)zgPqySF1jN1nkc+?&r9Al?paZ%VTy#m(;|=cY!L6I z)*PY*Xd(>`@<*)t_3D$#gxA99V|7S9x~GsunyXILiF4QaLM@;p)~aWuirhz#qD~(9 z;@het19mi5eL^L9481)qB-*-?aRS{vkKY^;9V+InhwNl}q-vO*HZ{w45)+Z5i9jUI ze{O1IOPpUv_AHF-JFKXHz(I$hXeSw~MryiED-COS{(PTU(ec^R161-<7O< zD<5B%@+E1$UK1*0mD@4-awcDrB;T8M?tc0F1E1I9@%r-9>&GXDNI0@X`8#C*zz#Q8 zXVP}F|1k`@oy+4{8{2i9c^7=mbLlnr ztOSrZ%eR=4XJkwIzW(!@)~aw&_jJ4hRD3$V*qw|YVMSl7gcO%eInY3{&16TXp8ku8 zdQG$(J4J64%C;6zi~2}RefsLqeQS{Ovxlt$t{}Wv4$!*N$qJxMS_9<(b`?5l#vd~7 zC!G#tZ29M#&fHkek?+VjJWx4>KLZ7T zIeOaNs@+b)P8Bq@NU|WzGw7N3b^-)gS>_##wrSg$LzFxFs)FCtG|b_m_b#5KWRHl_ zI^QR#0?KPOa!=k!wF0ntD(xXTR;ioHDH)n71pBW{Qly^3Rp)Ovm2cGNmij4zJ1Lcf z{F=||V(G*Qjz$GNN_YUmMk29-d-?b@P}gUC-Qv$$`_gi)10vH?pDGrQxLb`ZU4uIR z!0C+kQCBoF=Qi;XJ`UWpEnBH>wTeb*3SwcOJUL+Sd7|}b#ymzzOc_HY%>-U(tPM5% z>V_!ya=M;t5u4898S41Cx0;MO&sE$Qjw+ea_u2nPcfDa;q^@fK&2-j92fwJh^*h8) zsIgCmK(&{;M`;fP4TPFtG*CaH%2(2%{IykPT>jRtq$>X}e|WJyk{{*4v8UFfY5O$m zZm;o!eZs+2Zkui?V-#Cpvf$+OLQp_{o`_(1ZlKk#`KDQpRWFygrlk935XSdQj8Ugo zaGnl#9Sd013Q+-b6mk}#;MUfUW9K?l!i2pEEum=8lNEai2%kz9A35h-?rzh#&D8pc zhJvr!$}!JcIaXfa;1AkfQ)Mr%&;|VuN_s)@H>Ee_0dwfYb2;|l;g+7%x?_iE2D%tZ z4JSTymCqX$34St9>jUO177M60NyqnvryQ?%wT^cm8JO3O-;+znKu)Te`M+a}8LmRr z0|s-AL5dG9=6!599~VDB3%zn#JL6SmgloUmfB(7<8yG&=aI*F7ng<=FJUp*VBUFerneiYj5;&?VilO^CgA10ybKT7#nMAjy7lLueGU>4S^Ru>kTiY!hcbx zytNbUteTzo$|UmVwC?IkYZ3R}#aH&0F~a0Br{lDe)(>Y-JhKzp!%z~>5NwM<_E0wl zM$0c$Ir8N8L+`Pe@2>}$6jc}5Y`nrQ;oh;_QmECsxjZv6wR_ThGZ?1G6j-2t?5c2TUYHp>bKtpJS=b`RbT`D!Xt@P_ay1u_+%NG zCu^4Tr%n_&`s^V=UW;M!vTP~wMIA@ZWv)FfX_MSuH*+3A%>OX_FOOw9GU)EX7IAIHp}}qZ12-3fbB!Y<;cwe!Pxt@; diff --git a/assets/favicon/safari-pinned-tab.svg b/assets/favicon/safari-pinned-tab.svg deleted file mode 100644 index 93d40d0f..00000000 --- a/assets/favicon/safari-pinned-tab.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/favicon/site.webmanifest b/assets/favicon/site.webmanifest deleted file mode 100644 index d08d9b2b..00000000 --- a/assets/favicon/site.webmanifest +++ /dev/null @@ -1,21 +0,0 @@ -{ - "name": "Meshviewer", - "short_name": "Meshviewer", - "icons": [ - { - "src": "./android-chrome-192x192.png", - "sizes": "192x192", - "type": "image/png" - }, - { - "src": "./android-chrome-512x512.png", - "sizes": "512x512", - "type": "image/png" - } - ], - "theme_color": "#dc0067", - "background_color": "#dc0067", - "start_url": ".", - "display": "standalone", - "orientation": "portrait" -} diff --git a/assets/faviconData.json b/assets/faviconData.json deleted file mode 100644 index 7b5ee044..00000000 --- a/assets/faviconData.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "result": { "status": "success" }, - "favicon": { - "package_url": "https://realfavicongenerator.net/files/ed9ef5a59ae048602fb9a5b74436696e43a575ce/favicon_package_v0.16.zip", - "files_urls": [ - "https://realfavicongenerator.net/files/ed9ef5a59ae048602fb9a5b74436696e43a575ce/package_files/android-chrome-192x192.png", - "https://realfavicongenerator.net/files/ed9ef5a59ae048602fb9a5b74436696e43a575ce/package_files/android-chrome-512x512.png", - "https://realfavicongenerator.net/files/ed9ef5a59ae048602fb9a5b74436696e43a575ce/package_files/apple-touch-icon.png", - "https://realfavicongenerator.net/files/ed9ef5a59ae048602fb9a5b74436696e43a575ce/package_files/browserconfig.xml", - "https://realfavicongenerator.net/files/ed9ef5a59ae048602fb9a5b74436696e43a575ce/package_files/favicon-16x16.png", - "https://realfavicongenerator.net/files/ed9ef5a59ae048602fb9a5b74436696e43a575ce/package_files/favicon-32x32.png", - "https://realfavicongenerator.net/files/ed9ef5a59ae048602fb9a5b74436696e43a575ce/package_files/favicon.ico", - "https://realfavicongenerator.net/files/ed9ef5a59ae048602fb9a5b74436696e43a575ce/package_files/mstile-144x144.png", - "https://realfavicongenerator.net/files/ed9ef5a59ae048602fb9a5b74436696e43a575ce/package_files/mstile-150x150.png", - "https://realfavicongenerator.net/files/ed9ef5a59ae048602fb9a5b74436696e43a575ce/package_files/mstile-310x150.png", - "https://realfavicongenerator.net/files/ed9ef5a59ae048602fb9a5b74436696e43a575ce/package_files/mstile-310x310.png", - "https://realfavicongenerator.net/files/ed9ef5a59ae048602fb9a5b74436696e43a575ce/package_files/mstile-70x70.png", - "https://realfavicongenerator.net/files/ed9ef5a59ae048602fb9a5b74436696e43a575ce/package_files/safari-pinned-tab.svg", - "https://realfavicongenerator.net/files/ed9ef5a59ae048602fb9a5b74436696e43a575ce/package_files/site.webmanifest" - ], - "html_code": "\n\n\n\n\n\n\n\n\n\n\n", - "compression": "true", - "overlapping_markups": [ - "link[rel=\"apple-touch-icon\"]", - "meta[name=\"apple-mobile-web-app-title\"]", - "link[rel=\"shortcut\"]", - "link[rel=\"shortcut icon\"]", - "link[rel=\"icon\",sizes=\"16x16\"]", - "link[rel=\"icon\",sizes=\"32x32\"]", - "meta[name=\"msapplication-TileColor\"]", - "meta[name=\"msapplication-TileImage\"]", - "meta[name=\"msapplication-config\"]", - "meta[name=\"application-name\"]", - "link[rel=\"manifest\"]", - "meta[name=\"theme-color\"]", - "link[rel=\"mask-icon\"]" - ] - }, - "files_location": { "type": "path", "path": "." }, - "preview_picture_url": "https://realfavicongenerator.net/files/ed9ef5a59ae048602fb9a5b74436696e43a575ce/favicon_preview.png", - "version": "0.16" -} diff --git a/assets/icons/fonts/meshviewer.ttf b/assets/fonts/meshviewer.ttf similarity index 100% rename from assets/icons/fonts/meshviewer.ttf rename to assets/fonts/meshviewer.ttf diff --git a/assets/icons/fonts/meshviewer.woff b/assets/fonts/meshviewer.woff similarity index 100% rename from assets/icons/fonts/meshviewer.woff rename to assets/fonts/meshviewer.woff diff --git a/assets/icons/fonts/meshviewer.woff2 b/assets/fonts/meshviewer.woff2 similarity index 100% rename from assets/icons/fonts/meshviewer.woff2 rename to assets/fonts/meshviewer.woff2 diff --git a/assets/icons/icon.scss b/assets/icons/icon.scss index 5d712994..06bc26e6 100644 --- a/assets/icons/icon.scss +++ b/assets/icons/icon.scss @@ -8,9 +8,9 @@ $cache-breaker: unique-id(); font-style: normal; font-weight: normal; src: - url("fonts/meshviewer.woff2?rel=#{$cache-breaker}") format("woff2"), - url("fonts/meshviewer.woff?rel=#{$cache-breaker}") format("woff"), - url("fonts/meshviewer.ttf?rel=#{$cache-breaker}") format("truetype"); + url("@fonts/meshviewer.woff2?rel=#{$cache-breaker}") format("woff2"), + url("@fonts/meshviewer.woff?rel=#{$cache-breaker}") format("woff"), + url("@fonts/meshviewer.ttf?rel=#{$cache-breaker}") format("truetype"); } [class^="ion-"], diff --git a/gulp/config.js b/gulp/config.js deleted file mode 100644 index 2ce83564..00000000 --- a/gulp/config.js +++ /dev/null @@ -1,47 +0,0 @@ -module.exports = function () { - const build = 'build'; - - return { - build: build, - faviconData: 'assets/faviconData.json', - src: { - sass: 'scss/**/*.scss', - javascript: ['./app.js', 'lib/**/*.js'], - json: 'locale/*.json', - html: ['html/*.html', './config*.js'] - }, - clean: [build + '/*.map', build + '/vendor', build + '/main.css'], - browsersync: { - open: false, - server: { - baseDir: build - }, - files: [ - build + '/*.css', - build + '/*.js', - build + '/*.html', - build + '/locale/*.json' - ] - }, - requireJs: { - prod: { - baseUrl: 'lib', - name: '../node_modules/almond/almond', - mainConfigFile: 'app.js', - include: '../app', - out: 'app.js', - build: true, - preserveLicenseComments: true - }, - dev: { - baseUrl: 'lib', - name: '../node_modules/almond/almond', - mainConfigFile: 'app.js', - include: '../app', - optimize: 'none', - out: 'app.js', - build: false - } - } - }; -}; diff --git a/gulp/serve.js b/gulp/serve.js deleted file mode 100644 index 4483e4ea..00000000 --- a/gulp/serve.js +++ /dev/null @@ -1,21 +0,0 @@ -module.exports = function (gulp, plugins, config, env) { - const browserSync = require("browser-sync"); - - function getTask(task) { - return require("./tasks/" + task)(gulp, plugins, config, env); - } - - gulp.task("ws", () => browserSync(config.browsersync)); - - gulp.task("watch:html", () => gulp.watch(config.src.html, gulp.parallel(getTask("html")))); - - gulp.task("watch:javascript", () => - gulp.watch(config.src.javascript, gulp.parallel(getTask("eslint"), getTask("javascript"))), - ); - - gulp.task("watch:styles", () => gulp.watch(config.src.sass, gulp.parallel(getTask("sass")))); - - gulp.task("watch:json", () => gulp.watch(config.src.json, gulp.parallel(getTask("jsonMinify")))); - - gulp.task("watch", gulp.parallel("watch:html", "watch:styles", "watch:javascript", "watch:json")); -}; diff --git a/gulp/tasks/clean.js b/gulp/tasks/clean.js deleted file mode 100644 index b334f787..00000000 --- a/gulp/tasks/clean.js +++ /dev/null @@ -1,6 +0,0 @@ -const del = require("del"); -module.exports = function (gulp, plugins, config) { - return function clean() { - return del(config.clean); - }; -}; diff --git a/gulp/tasks/copy.js b/gulp/tasks/copy.js deleted file mode 100644 index bc831f2b..00000000 --- a/gulp/tasks/copy.js +++ /dev/null @@ -1,9 +0,0 @@ -module.exports = function (gulp, plugins, config) { - return function copy() { - gulp.src(["config.example.json"]).pipe(gulp.dest(config.build)); - gulp.src(["html/*.html", "assets/favicon/*"]).pipe(gulp.dest(config.build)); - gulp.src(["assets/logo.svg", "service-worker.js"]).pipe(gulp.dest(config.build)); - gulp.src(["polyfill.js"]).pipe(gulp.dest(config.build + "/vendor")); - return gulp.src(["assets/fonts/*", "assets/icons/fonts/*"]).pipe(gulp.dest(config.build + "/fonts")); - }; -}; diff --git a/gulp/tasks/eslint-fail.js b/gulp/tasks/eslint-fail.js deleted file mode 100644 index cbfbd9e8..00000000 --- a/gulp/tasks/eslint-fail.js +++ /dev/null @@ -1,9 +0,0 @@ -module.exports = function (gulp, plugins) { - return function eslint() { - return gulp - .src(["app.js", "gulpfile.js", "lib/**/*.js", "gulp/**/*.js"]) - .pipe(plugins.eslint()) - .pipe(plugins.eslint.format()) - .pipe(plugins.eslint.failAfterError()); - }; -}; diff --git a/gulp/tasks/eslint.js b/gulp/tasks/eslint.js deleted file mode 100644 index 0f27d7af..00000000 --- a/gulp/tasks/eslint.js +++ /dev/null @@ -1,9 +0,0 @@ -module.exports = function (gulp, plugins, config, env) { - return function eslint() { - return gulp - .src(["app.js", "gulpfile.js", "lib/**/*.js", "gulp/**/*.js"]) - .pipe(plugins.eslint()) - .pipe(plugins.eslint.format()) - .pipe(env.production(plugins.eslint.failAfterError())); - }; -}; diff --git a/gulp/tasks/favicon.js b/gulp/tasks/favicon.js deleted file mode 100644 index d44df03c..00000000 --- a/gulp/tasks/favicon.js +++ /dev/null @@ -1,65 +0,0 @@ -module.exports = function (gulp, plugins, config) { - return function javascript(cb) { - plugins.realFavicon.generateFavicon({ - masterPicture: "assets/logo.svg", - dest: "assets/favicon", - iconsPath: ".", - design: { - ios: { - pictureAspect: "backgroundAndMargin", - backgroundColor: "#ffffff", - margin: "14%", - assets: { - ios6AndPriorIcons: false, - ios7AndLaterIcons: false, - precomposedIcons: false, - declareOnlyDefaultIcon: true, - }, - appName: "Meshviewer", - }, - desktopBrowser: {}, - windows: { - pictureAspect: "whiteSilhouette", - backgroundColor: "#dc0067", - onConflict: "override", - assets: { - windows80Ie10Tile: false, - windows10Ie11EdgeTiles: { - small: true, - medium: true, - big: true, - rectangle: false, - }, - }, - appName: "Meshviewer", - }, - androidChrome: { - // pictureAspect: 'shadow', - themeColor: "#dc0067", - manifest: { - name: "Meshviewer", - display: "standalone", - orientation: "portrait", - onConflict: "override", - declared: true, - }, - assets: { - legacyIcon: false, - lowResolutionIcons: false, - }, - }, - safariPinnedTab: { - pictureAspect: "silhouette", - themeColor: "#dc0067", - }, - }, - settings: { - compression: 2, - scalingAlgorithm: "Mitchell", - errorOnImageTooSmall: false, - }, - markupFile: config.faviconData, - }); - return cb(); - }; -}; diff --git a/gulp/tasks/html.js b/gulp/tasks/html.js deleted file mode 100644 index 85cae3d5..00000000 --- a/gulp/tasks/html.js +++ /dev/null @@ -1,23 +0,0 @@ -const fs = require("fs"); - -module.exports = function (gulp, plugins, config, env) { - return function html() { - return gulp - .src(env.production() ? config.build + "/*.html" : "html/*.html") - .pipe(plugins.realFavicon.injectFaviconMarkups(JSON.parse(fs.readFileSync(config.faviconData)).favicon.html_code)) - .pipe(env.production(plugins.inlineSource({ compress: false }))) - .pipe( - plugins.cacheBust({ - type: "timestamp", - }), - ) - .pipe( - plugins.htmlmin({ - removeComments: true, - collapseWhitespace: true, - minifyJS: true, - }), - ) - .pipe(gulp.dest(config.build)); - }; -}; diff --git a/gulp/tasks/javascript.js b/gulp/tasks/javascript.js deleted file mode 100644 index 52039e8a..00000000 --- a/gulp/tasks/javascript.js +++ /dev/null @@ -1,14 +0,0 @@ -module.exports = function (gulp, plugins, config, env) { - return function javascript() { - return gulp - .src("app.js") - .pipe(env.development(plugins.sourcemaps.init())) - .pipe(plugins.requirejsOptimize(env.production() ? config.requireJs.prod : config.requireJs.dev)) - .on("error", function () { - this.emit("end"); - }) - .pipe(env.production(plugins.uglify({ output: { comments: "all" } }))) - .pipe(env.development(plugins.sourcemaps.write(".", { addComment: true }))) - .pipe(gulp.dest(config.build)); - }; -}; diff --git a/gulp/tasks/jsonMinify.js b/gulp/tasks/jsonMinify.js deleted file mode 100644 index 872de1e3..00000000 --- a/gulp/tasks/jsonMinify.js +++ /dev/null @@ -1,8 +0,0 @@ -module.exports = function (gulp, plugins, config) { - return function jsonMinify() { - return gulp - .src(config.src.json) - .pipe(plugins.jsonminify()) - .pipe(gulp.dest(config.build + "/locale")); - }; -}; diff --git a/gulp/tasks/sass.js b/gulp/tasks/sass.js deleted file mode 100644 index 2faa836a..00000000 --- a/gulp/tasks/sass.js +++ /dev/null @@ -1,23 +0,0 @@ -module.exports = function (gulp, plugins, config, env) { - return function sass() { - return gulp - .src("scss/*.scss") - .pipe(env.development(plugins.sourcemaps.init())) - .pipe( - require("gulp-sass")(require("sass"))({ - outputStyle: "compressed", - sourceMap: false, - }), - ) - .on("error", function () { - this.emit("end"); - }) - .pipe( - plugins.autoprefixer({ - browsers: config.autoprefixer, - }), - ) - .pipe(env.development(plugins.sourcemaps.write(".", { addComment: true }))) - .pipe(gulp.dest(config.build)); - }; -}; diff --git a/gulp/tasks/setDevelopment.js b/gulp/tasks/setDevelopment.js deleted file mode 100644 index f464b54f..00000000 --- a/gulp/tasks/setDevelopment.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = function (gulp, plugins, config, env) { - return function setDevelopment(done) { - plugins.environments.current(env.development); - done(); - }; -}; diff --git a/gulpfile.js b/gulpfile.js deleted file mode 100644 index 81b00167..00000000 --- a/gulpfile.js +++ /dev/null @@ -1,49 +0,0 @@ -const gulp = require("gulp"); -const plugins = require("gulp-load-plugins")(); -const config = require("./gulp/config")(); - -const env = { - development: plugins.environments.development, - production: plugins.environments.production, -}; - -// Default environment is production -plugins.environments.current(env.production); - -function getTask(task) { - return require("./gulp/tasks/" + task)(gulp, plugins, config, env); -} - -gulp.task("generate-favicon", getTask("favicon")); - -require("./gulp/serve")(gulp, plugins, config, env); -gulp.task( - "serve", - gulp.series( - getTask("setDevelopment"), - gulp.parallel(getTask("eslint")), - gulp.parallel(getTask("copy"), getTask("javascript"), getTask("sass"), getTask("jsonMinify")), - getTask("html"), - gulp.parallel("watch", "ws"), - ), -); - -gulp.task( - "ci", - gulp.series( - gulp.parallel(getTask("eslint-fail")), - gulp.parallel(getTask("copy"), getTask("javascript"), getTask("sass"), getTask("jsonMinify")), - getTask("html"), - getTask("clean"), - ), -); - -gulp.task( - "default", - gulp.series( - gulp.parallel(getTask("eslint")), - gulp.parallel(getTask("copy"), getTask("javascript"), getTask("sass"), getTask("jsonMinify")), - getTask("html"), - getTask("clean"), - ), -); diff --git a/html/offline.html b/html/offline.html deleted file mode 100644 index 7261495e..00000000 --- a/html/offline.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - Meshviewer Loading - - - - -
-

- You are Offline!
- Loading ... -
- No connection available. -


-

- -
- - diff --git a/html/index.html b/index.html similarity index 74% rename from html/index.html rename to index.html index 526efd2e..9dff8911 100644 --- a/html/index.html +++ b/index.html @@ -24,20 +24,20 @@ - - Meshviewer - loading... - - - - - + + + + + + +

Lade
- Loading ... + Loading ...
Karten & Knoten...

diff --git a/lib/about.js b/lib/about.js index d2d67b76..f8afa1c0 100644 --- a/lib/about.js +++ b/lib/about.js @@ -1,60 +1,56 @@ -define(function () { - "use strict"; - - return function () { - this.render = function render(d) { - d.innerHTML = - _.t("sidebar.aboutInfo") + - "

" + - _.t("node.nodes") + - "

" + - '

' + - ' ' + - _.t("sidebar.nodeNew") + - "" + - ' ' + - _.t("sidebar.nodeOnline") + - "" + - ' ' + - _.t("sidebar.nodeOffline") + - "" + - ' ' + - _.t("sidebar.nodeUplink") + - "" + - "

" + - "

" + - _.t("node.clients") + - "

" + - '

' + - ' 2.4 GHz' + - ' 5 GHz' + - ' ' + - _.t("others") + - "" + - "

" + - "

Feel free to contribute!

" + - "

Please support this meshviewer-fork by opening issues or sending pull requests!

" + - '

' + - "https://github.com/freifunk/meshviewer

" + - '

Fork maintained by Freifunk Frankfurt

' + - "

AGPL 3

" + - "

Copyright (C) Milan Pässler

" + - "

Copyright (C) Nils Schneider

" + - "

This program is free software: you can redistribute it and/or " + - "modify it under the terms of the GNU Affero General Public " + - "License as published by the Free Software Foundation, either " + - "version 3 of the License, or (at your option) any later version.

" + - "

This program is distributed in the hope that it will be useful, " + - "but WITHOUT ANY WARRANTY; without even the implied warranty of " + - "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the " + - "GNU Affero General Public License for more details.

" + - "

You should have received a copy of the GNU Affero General " + - "Public License along with this program. If not, see " + - '' + - "https://www.gnu.org/licenses/.

" + - "

The source code is available at " + - '' + - "https://github.com/freifunk/meshviewer.

"; - }; +export const About = function () { + this.render = function render(d) { + d.innerHTML = + _.t("sidebar.aboutInfo") + + "

" + + _.t("node.nodes") + + "

" + + '

' + + ' ' + + _.t("sidebar.nodeNew") + + "" + + ' ' + + _.t("sidebar.nodeOnline") + + "" + + ' ' + + _.t("sidebar.nodeOffline") + + "" + + ' ' + + _.t("sidebar.nodeUplink") + + "" + + "

" + + "

" + + _.t("node.clients") + + "

" + + '

' + + ' 2.4 GHz' + + ' 5 GHz' + + ' ' + + _.t("others") + + "" + + "

" + + "

Feel free to contribute!

" + + "

Please support this meshviewer-fork by opening issues or sending pull requests!

" + + '

' + + "https://github.com/freifunk/meshviewer

" + + '

Fork maintained by Freifunk Frankfurt

' + + "

AGPL 3

" + + "

Copyright (C) Milan Pässler

" + + "

Copyright (C) Nils Schneider

" + + "

This program is free software: you can redistribute it and/or " + + "modify it under the terms of the GNU Affero General Public " + + "License as published by the Free Software Foundation, either " + + "version 3 of the License, or (at your option) any later version.

" + + "

This program is distributed in the hope that it will be useful, " + + "but WITHOUT ANY WARRANTY; without even the implied warranty of " + + "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the " + + "GNU Affero General Public License for more details.

" + + "

You should have received a copy of the GNU Affero General " + + "Public License along with this program. If not, see " + + '' + + "https://www.gnu.org/licenses/.

" + + "

The source code is available at " + + '' + + "https://github.com/freifunk/meshviewer.

"; }; -}); +}; diff --git a/lib/config_default.js b/lib/config_default.js index 52f6a060..cf8d1e8a 100644 --- a/lib/config_default.js +++ b/lib/config_default.js @@ -1,284 +1,282 @@ -define([], function () { - return { - reverseGeocodingApi: "https://nominatim.openstreetmap.org/reverse", - maxAge: 14, - maxAgeAlert: 3, - nodeZoom: 18, - labelZoom: 13, - clientZoom: 15, - fullscreen: true, - fullscreenFrame: true, - nodeAttr: [ - // value can be a node attribute (1 depth) or a a function in utils/node with prefix show - { - name: "node.status", - value: "Status", - }, - { - name: "node.gateway", - value: "Gateway", - }, - { - name: "node.coordinates", - value: "GeoURI", - }, - // { - // "name": "node.contact", - // "value": "owner" - // }, +export const config = { + reverseGeocodingApi: "https://nominatim.openstreetmap.org/reverse", + maxAge: 14, + maxAgeAlert: 3, + nodeZoom: 18, + labelZoom: 13, + clientZoom: 15, + fullscreen: true, + fullscreenFrame: true, + nodeAttr: [ + // value can be a node attribute (1 depth) or a a function in utils/node with prefix show + { + name: "node.status", + value: "Status", + }, + { + name: "node.gateway", + value: "Gateway", + }, + { + name: "node.coordinates", + value: "GeoURI", + }, + // { + // "name": "node.contact", + // "value": "owner" + // }, - // Examples for functions - // { - // // no name will remove first column - // 'value': function (d) { - // var moment = require('moment'); - // var V = require('snabbdom').default; - // return V.h('td', { props: { colSpan: 2 }, style: { background: '#49a' } }, - // _.t('sidebar.nodeOnline') + ' translate, ' + moment(d.firstseen).get('month') + - // ' Month require libs like moment, access config ' + config.siteName); - // } - // }, - // { - // 'name': 'Neighbour first seen', - // 'value': function (d, nodeDict) { - // return nodeDict[d.gateway_nexthop].firstseen.format() + 'access node object'; - // } - // }, - { - name: "node.hardware", - value: "model", - }, - { - name: "node.primaryMac", - value: "mac", - }, - { - name: "node.firmware", - value: "Firmware", - }, - { - name: "node.uptime", - value: "Uptime", - }, - { - name: "node.firstSeen", - value: "FirstSeen", - }, - { - name: "node.systemLoad", - value: "Load", - }, - { - name: "node.ram", - value: "RAM", - }, - { - name: "node.ipAddresses", - value: "IPs", - }, - { - name: "node.update", - value: "Autoupdate", - }, - { - name: "node.domain", - value: "Domain", - }, - { - name: "node.clients", - value: "Clients", - }, - ], - supportedLocale: ["en", "de", "cz", "fr", "tr", "ru"], - // Color configs - icon: { - base: { - fillOpacity: 0.6, - opacity: 0.6, - weight: 2, - radius: 6, - className: "stroke-first", - }, - online: { - color: "#1566A9", - fillColor: "#1566A9", - radius: 8, - stroke: false, - }, - "online.uplink": { - fillColor: "#cde", - stroke: true, - radius: 4, - weight: 10, - }, - offline: { - color: "#D43E2A", - fillColor: "#D43E2A", - radius: 3, - }, - lost: { - color: "#D43E2A", - fillColor: "#D43E2A", - radius: 4, - }, - alert: { - color: "#D43E2A", - fillColor: "#D43E2A", - radius: 5, - }, - new: { - color: "#1566A9", - fillColor: "#93E929", - }, - "new.uplink": { - stroke: true, - radius: 4, - weight: 10, - }, + // Examples for functions + // { + // // no name will remove first column + // 'value': function (d) { + // var moment = require('moment'); + // var V = require('snabbdom').default; + // return V.h('td', { props: { colSpan: 2 }, style: { background: '#49a' } }, + // _.t('sidebar.nodeOnline') + ' translate, ' + moment(d.firstseen).get('month') + + // ' Month require libs like moment, access config ' + config.siteName); + // } + // }, + // { + // 'name': 'Neighbour first seen', + // 'value': function (d, nodeDict) { + // return nodeDict[d.gateway_nexthop].firstseen.format() + 'access node object'; + // } + // }, + { + name: "node.hardware", + value: "model", + }, + { + name: "node.primaryMac", + value: "mac", + }, + { + name: "node.firmware", + value: "Firmware", + }, + { + name: "node.uptime", + value: "Uptime", + }, + { + name: "node.firstSeen", + value: "FirstSeen", + }, + { + name: "node.systemLoad", + value: "Load", + }, + { + name: "node.ram", + value: "RAM", + }, + { + name: "node.ipAddresses", + value: "IPs", + }, + { + name: "node.update", + value: "Autoupdate", + }, + { + name: "node.domain", + value: "Domain", + }, + { + name: "node.clients", + value: "Clients", + }, + ], + supportedLocale: ["en", "de", "cz", "fr", "tr", "ru"], + // Color configs + icon: { + base: { + fillOpacity: 0.6, + opacity: 0.6, + weight: 2, + radius: 6, + className: "stroke-first", + }, + online: { + color: "#1566A9", + fillColor: "#1566A9", + radius: 8, + stroke: false, + }, + "online.uplink": { + fillColor: "#cde", + stroke: true, + radius: 4, + weight: 10, + }, + offline: { + color: "#D43E2A", + fillColor: "#D43E2A", + radius: 3, + }, + lost: { + color: "#D43E2A", + fillColor: "#D43E2A", + radius: 4, + }, + alert: { + color: "#D43E2A", + fillColor: "#D43E2A", + radius: 5, + }, + new: { + color: "#1566A9", + fillColor: "#93E929", + }, + "new.uplink": { + stroke: true, + radius: 4, + weight: 10, + }, + }, + client: { + wifi24: "rgba(220, 0, 103, 0.7)", + wifi5: "rgba(10, 156, 146, 0.7)", + other: "rgba(227, 166, 25, 0.7)", + }, + map: { + labelNewColor: "#459c18", + tqFrom: "#F02311", + tqTo: "#04C714", + highlightNode: { + color: "#ad2358", + weight: 8, + fillOpacity: 1, + opacity: 0.4, + className: "stroke-first", }, - client: { - wifi24: "rgba(220, 0, 103, 0.7)", - wifi5: "rgba(10, 156, 146, 0.7)", - other: "rgba(227, 166, 25, 0.7)", + highlightLink: { + weight: 4, + opacity: 1, + dashArray: "5, 10", }, - map: { - labelNewColor: "#459c18", - tqFrom: "#F02311", - tqTo: "#04C714", - highlightNode: { - color: "#ad2358", - weight: 8, - fillOpacity: 1, - opacity: 0.4, - className: "stroke-first", - }, - highlightLink: { - weight: 4, - opacity: 1, - dashArray: "5, 10", - }, + }, + forceGraph: { + nodeColor: "#fff", + nodeOfflineColor: "#D43E2A", + highlightColor: "rgba(255, 255, 255, 0.2)", + labelColor: "#fff", + tqFrom: "#770038", + tqTo: "#dc0067", + zoomModifier: 1, + }, + locate: { + outerCircle: { + stroke: false, + color: "#4285F4", + opacity: 1, + fillOpacity: 0.3, + clickable: false, + radius: 16, }, - forceGraph: { - nodeColor: "#fff", - nodeOfflineColor: "#D43E2A", - highlightColor: "rgba(255, 255, 255, 0.2)", - labelColor: "#fff", - tqFrom: "#770038", - tqTo: "#dc0067", - zoomModifier: 1, + innerCircle: { + "stroke:": true, + color: "#ffffff", + fillColor: "#4285F4", + weight: 1.5, + clickable: false, + opacity: 1, + fillOpacity: 1, + radius: 7, }, - locate: { - outerCircle: { - stroke: false, - color: "#4285F4", - opacity: 1, - fillOpacity: 0.3, - clickable: false, - radius: 16, - }, - innerCircle: { - "stroke:": true, - color: "#ffffff", - fillColor: "#4285F4", - weight: 1.5, - clickable: false, - opacity: 1, - fillOpacity: 1, - radius: 7, - }, - accuracyCircle: { - stroke: true, - color: "#4285F4", - weight: 1, - clickable: false, - opacity: 0.7, - fillOpacity: 0.2, - }, + accuracyCircle: { + stroke: true, + color: "#4285F4", + weight: 1, + clickable: false, + opacity: 0.7, + fillOpacity: 0.2, }, - deprecated: [ - "TP-Link TL-WR740N/ND v1", - "AP121", - "AP121U", - "D-Link DIR-615", - "D-Link DIR-615 D", - "AVM FRITZ!Box 7320", - "AVM FRITZ!Box 7330", - "AVM FRITZ!Box 7330 SL", - "TP-Link TL-MR13U v1", - "TP-Link TL-MR3020 v1", - "TP-Link TL-MR3040 v1", - "TP-Link TL-MR3040 v2", - "TP-Link TL-MR3220 v1", - "TP-Link TL-MR3220 v2", - "TP-Link TL-MR3420 v1", - "TP-Link TL-MR3420 v2", - "TP-Link TL-WA701N/ND v1", - "TP-Link TL-WA701N/ND v2", - "TP-Link TL-WA730RE v1", - "TP-Link TL-WA750RE v1", - "TP-Link TL-WA801N/ND v1", - "TP-Link TL-WA801N/ND v2", - "TP-Link TL-WA801N/ND v3", - "TP-Link TL-WA830RE v1", - "TP-Link TL-WA830RE v2", - "TP-Link TL-WA850RE v1", - "TP-Link TL-WA860RE v1", - "TP-Link TL-WA901N/ND v1", - "TP-Link TL-WA901N/ND v2", - "TP-Link TL-WA901N/ND v3", - "TP-Link TL-WA901N/ND v4", - "TP-Link TL-WA901N/ND v5", - "TP-Link TL-WA7210N v2", - "TP-Link TL-WA7510N v1", - "TP-Link TL-WR703N v1", - "TP-Link TL-WR710N v2", - "TP-Link TL-WR740N/ND v1", - "TP-Link TL-WR740N/ND v3", - "TP-Link TL-WR740N/ND v4", - "TP-Link TL-WR740N/ND v5", - "TP-Link TL-WR741N/ND v1", - "TP-Link TL-WR741N/ND v3", - "TP-Link TL-WR741N/ND v4", - "TP-Link TL-WR741N/ND v5", - "TP-Link TL-WR743N/ND v1", - "TP-Link TL-WR743N/ND v2", - "TP-Link TL-WR840N v2", - "TP-Link TL-WR841N/ND v3", - "TP-Link TL-WR841N/ND v5", - "TP-Link TL-WR841N/ND v7", - "TP-Link TL-WR841N/ND v8", - "TP-Link TL-WR841N/ND v9", - "TP-Link TL-WR841N/ND v10", - "TP-Link TL-WR841N/ND v11", - "TP-Link TL-WR841N/ND v12", - "TP-Link TL-WR841N/ND Mod (16M) v11", - "TP-Link TL-WR841N/ND Mod (16M) v10", - "TP-Link TL-WR841N/ND Mod (16M) v8", - "TP-Link TL-WR841N/ND Mod (16M) v9", - "TP-Link TL-WR841N/ND Mod (8M) v10", - "TP-Link TL-WR842N/ND v1", - "TP-Link TL-WR842N/ND v2", - "TP-Link TL-WR843N/ND v1", - "TP-Link TL-WR940N v1", - "TP-Link TL-WR940N v2", - "TP-Link TL-WR940N v3", - "TP-Link TL-WR940N v4", - "TP-Link TL-WR940N v5", - "TP-Link TL-WR940N v6", - "TP-Link TL-WR941N/ND v2", - "TP-Link TL-WR941N/ND v3", - "TP-Link TL-WR941N/ND v4", - "TP-Link TL-WR941N/ND v5", - "TP-Link TL-WR941N/ND v6", - "TP-Link TL-WR1043N/ND v1", - "A5-V11", - "D-Link DIR-615 D1", - "D-Link DIR-615 D2", - "D-Link DIR-615 D3", - "D-Link DIR-615 D4", - "D-Link DIR-615 H1", - "VoCore 8M", - "VoCore 16M", - ], - }; -}); + }, + deprecated: [ + "TP-Link TL-WR740N/ND v1", + "AP121", + "AP121U", + "D-Link DIR-615", + "D-Link DIR-615 D", + "AVM FRITZ!Box 7320", + "AVM FRITZ!Box 7330", + "AVM FRITZ!Box 7330 SL", + "TP-Link TL-MR13U v1", + "TP-Link TL-MR3020 v1", + "TP-Link TL-MR3040 v1", + "TP-Link TL-MR3040 v2", + "TP-Link TL-MR3220 v1", + "TP-Link TL-MR3220 v2", + "TP-Link TL-MR3420 v1", + "TP-Link TL-MR3420 v2", + "TP-Link TL-WA701N/ND v1", + "TP-Link TL-WA701N/ND v2", + "TP-Link TL-WA730RE v1", + "TP-Link TL-WA750RE v1", + "TP-Link TL-WA801N/ND v1", + "TP-Link TL-WA801N/ND v2", + "TP-Link TL-WA801N/ND v3", + "TP-Link TL-WA830RE v1", + "TP-Link TL-WA830RE v2", + "TP-Link TL-WA850RE v1", + "TP-Link TL-WA860RE v1", + "TP-Link TL-WA901N/ND v1", + "TP-Link TL-WA901N/ND v2", + "TP-Link TL-WA901N/ND v3", + "TP-Link TL-WA901N/ND v4", + "TP-Link TL-WA901N/ND v5", + "TP-Link TL-WA7210N v2", + "TP-Link TL-WA7510N v1", + "TP-Link TL-WR703N v1", + "TP-Link TL-WR710N v2", + "TP-Link TL-WR740N/ND v1", + "TP-Link TL-WR740N/ND v3", + "TP-Link TL-WR740N/ND v4", + "TP-Link TL-WR740N/ND v5", + "TP-Link TL-WR741N/ND v1", + "TP-Link TL-WR741N/ND v3", + "TP-Link TL-WR741N/ND v4", + "TP-Link TL-WR741N/ND v5", + "TP-Link TL-WR743N/ND v1", + "TP-Link TL-WR743N/ND v2", + "TP-Link TL-WR840N v2", + "TP-Link TL-WR841N/ND v3", + "TP-Link TL-WR841N/ND v5", + "TP-Link TL-WR841N/ND v7", + "TP-Link TL-WR841N/ND v8", + "TP-Link TL-WR841N/ND v9", + "TP-Link TL-WR841N/ND v10", + "TP-Link TL-WR841N/ND v11", + "TP-Link TL-WR841N/ND v12", + "TP-Link TL-WR841N/ND Mod (16M) v11", + "TP-Link TL-WR841N/ND Mod (16M) v10", + "TP-Link TL-WR841N/ND Mod (16M) v8", + "TP-Link TL-WR841N/ND Mod (16M) v9", + "TP-Link TL-WR841N/ND Mod (8M) v10", + "TP-Link TL-WR842N/ND v1", + "TP-Link TL-WR842N/ND v2", + "TP-Link TL-WR843N/ND v1", + "TP-Link TL-WR940N v1", + "TP-Link TL-WR940N v2", + "TP-Link TL-WR940N v3", + "TP-Link TL-WR940N v4", + "TP-Link TL-WR940N v5", + "TP-Link TL-WR940N v6", + "TP-Link TL-WR941N/ND v2", + "TP-Link TL-WR941N/ND v3", + "TP-Link TL-WR941N/ND v4", + "TP-Link TL-WR941N/ND v5", + "TP-Link TL-WR941N/ND v6", + "TP-Link TL-WR1043N/ND v1", + "A5-V11", + "D-Link DIR-615 D1", + "D-Link DIR-615 D2", + "D-Link DIR-615 D3", + "D-Link DIR-615 D4", + "D-Link DIR-615 H1", + "VoCore 8M", + "VoCore 16M", + ], +}; diff --git a/lib/container.js b/lib/container.js index d918deb2..1274ed0d 100644 --- a/lib/container.js +++ b/lib/container.js @@ -1,22 +1,18 @@ -define([], function () { - "use strict"; +export const Container = function (tag) { + if (!tag) { + tag = "div"; + } - return function (tag) { - if (!tag) { - tag = "div"; - } + var self = this; + var container = document.createElement(tag); - var self = this; - var container = document.createElement(tag); - - self.add = function add(d) { - d.render(container); - }; - - self.render = function render(el) { - el.appendChild(container); - }; + self.add = function add(d) { + d.render(container); + }; - return self; + self.render = function render(el) { + el.appendChild(container); }; -}); + + return self; +}; diff --git a/lib/datadistributor.js b/lib/datadistributor.js index 97f7998b..bcb94e36 100644 --- a/lib/datadistributor.js +++ b/lib/datadistributor.js @@ -1,106 +1,104 @@ -define(["filters/nodefilter"], function (NodeFilter) { - "use strict"; - - return function () { - var targets = []; - var filterObservers = []; - var filters = []; - var filteredData; - var data; - - function remove(d) { - targets = targets.filter(function (e) { - return d !== e; - }); - } - - function add(d) { - targets.push(d); - - if (filteredData !== undefined) { - d.setData(filteredData); - } +import { NodeFilter } from "./filters/nodefilter"; + +export const DataDistributor = function () { + var targets = []; + var filterObservers = []; + var filters = []; + var filteredData; + var data; + + function remove(d) { + targets = targets.filter(function (e) { + return d !== e; + }); + } + + function add(d) { + targets.push(d); + + if (filteredData !== undefined) { + d.setData(filteredData); } + } - function setData(d) { - data = d; - refresh(); - } - - function refresh() { - if (data === undefined) { - return; - } + function setData(d) { + data = d; + refresh(); + } - var filter = filters.reduce( - function (a, f) { - return function (d) { - return a(d) && f.run(d); - }; - }, - function () { - return true; - }, - ); - - filteredData = new NodeFilter(filter)(data); - - targets.forEach(function (t) { - t.setData(filteredData); - }); + function refresh() { + if (data === undefined) { + return; } - function notifyObservers() { - filterObservers.forEach(function (d) { - d.filtersChanged(filters); - }); - } - - function addFilter(d) { - var newItem = true; + var filter = filters.reduce( + function (a, f) { + return function (d) { + return a(d) && f.run(d); + }; + }, + function () { + return true; + }, + ); + + filteredData = new NodeFilter(filter)(data); + + targets.forEach(function (t) { + t.setData(filteredData); + }); + } + + function notifyObservers() { + filterObservers.forEach(function (d) { + d.filtersChanged(filters); + }); + } - filters.forEach(function (f) { - if (f.getKey && f.getKey() === d.getKey()) { - removeFilter(f); - newItem = false; - } - }); + function addFilter(d) { + var newItem = true; - if (newItem) { - filters.push(d); - notifyObservers(); - d.setRefresh(refresh); - refresh(); + filters.forEach(function (f) { + if (f.getKey && f.getKey() === d.getKey()) { + removeFilter(f); + newItem = false; } - } + }); - function removeFilter(d) { - filters = filters.filter(function (e) { - return d !== e; - }); + if (newItem) { + filters.push(d); notifyObservers(); + d.setRefresh(refresh); refresh(); } + } - function watchFilters(d) { - filterObservers.push(d); + function removeFilter(d) { + filters = filters.filter(function (e) { + return d !== e; + }); + notifyObservers(); + refresh(); + } - d.filtersChanged(filters); + function watchFilters(d) { + filterObservers.push(d); - return function () { - filterObservers = filterObservers.filter(function (e) { - return d !== e; - }); - }; - } + d.filtersChanged(filters); - return { - add: add, - remove: remove, - setData: setData, - addFilter: addFilter, - removeFilter: removeFilter, - watchFilters: watchFilters, + return function () { + filterObservers = filterObservers.filter(function (e) { + return d !== e; + }); }; + } + + return { + add: add, + remove: remove, + setData: setData, + addFilter: addFilter, + removeFilter: removeFilter, + watchFilters: watchFilters, }; -}); +}; diff --git a/lib/filters/filtergui.js b/lib/filters/filtergui.js index 86c414dd..fb6d823d 100644 --- a/lib/filters/filtergui.js +++ b/lib/filters/filtergui.js @@ -1,44 +1,40 @@ -define(function () { - "use strict"; +export const FilterGui = function (distributor) { + var container = document.createElement("ul"); + container.classList.add("filters"); + var div = document.createElement("div"); - return function (distributor) { - var container = document.createElement("ul"); - container.classList.add("filters"); - var div = document.createElement("div"); + function render(el) { + el.appendChild(div); + } - function render(el) { - el.appendChild(div); + function filtersChanged(filters) { + while (container.firstChild) { + container.removeChild(container.firstChild); } - function filtersChanged(filters) { - while (container.firstChild) { - container.removeChild(container.firstChild); - } + filters.forEach(function (d) { + var li = document.createElement("li"); + container.appendChild(li); + d.render(li); - filters.forEach(function (d) { - var li = document.createElement("li"); - container.appendChild(li); - d.render(li); + var button = document.createElement("button"); + button.classList.add("ion-close"); + button.setAttribute("aria-label", _.t("remove")); + button.onclick = function onclick() { + distributor.removeFilter(d); + }; + li.appendChild(button); + }); - var button = document.createElement("button"); - button.classList.add("ion-close"); - button.setAttribute("aria-label", _.t("remove")); - button.onclick = function onclick() { - distributor.removeFilter(d); - }; - li.appendChild(button); - }); - - if (container.parentNode === div && filters.length === 0) { - div.removeChild(container); - } else if (filters.length > 0) { - div.appendChild(container); - } + if (container.parentNode === div && filters.length === 0) { + div.removeChild(container); + } else if (filters.length > 0) { + div.appendChild(container); } + } - return { - render: render, - filtersChanged: filtersChanged, - }; + return { + render: render, + filtersChanged: filtersChanged, }; -}); +}; diff --git a/lib/filters/genericnode.js b/lib/filters/genericnode.js index 5167946f..128906a3 100644 --- a/lib/filters/genericnode.js +++ b/lib/filters/genericnode.js @@ -1,63 +1,61 @@ -define(["helper"], function (helper) { - "use strict"; +import * as helper from "../utils/helper"; - return function (name, key, value, f) { - var negate = false; - var refresh; +export const GenericNodeFilter = function (name, key, value, f) { + var negate = false; + var refresh; - var label = document.createElement("label"); - var strong = document.createElement("strong"); - label.textContent = name + ": "; - label.appendChild(strong); + var label = document.createElement("label"); + var strong = document.createElement("strong"); + label.textContent = name + ": "; + label.appendChild(strong); - function run(d) { - var o = helper.dictGet(d, key.slice(0)); + function run(d) { + var o = helper.dictGet(d, key.slice(0)); - if (f) { - o = f(o); - } - - return o === value ? !negate : negate; + if (f) { + o = f(o); } - function setRefresh(r) { - refresh = r; - } + return o === value ? !negate : negate; + } - function draw(el) { - if (negate) { - el.classList.add("not"); - } else { - el.classList.remove("not"); - } + function setRefresh(r) { + refresh = r; + } - strong.textContent = value; + function draw(el) { + if (negate) { + el.classList.add("not"); + } else { + el.classList.remove("not"); } - function render(el) { - el.appendChild(label); - draw(el); - - label.onclick = function onclick() { - negate = !negate; + strong.textContent = value; + } - draw(el); + function render(el) { + el.appendChild(label); + draw(el); - if (refresh) { - refresh(); - } - }; - } + label.onclick = function onclick() { + negate = !negate; - function getKey() { - return value.concat(name); - } + draw(el); - return { - run: run, - setRefresh: setRefresh, - render: render, - getKey: getKey, + if (refresh) { + refresh(); + } }; + } + + function getKey() { + return value.concat(name); + } + + return { + run: run, + setRefresh: setRefresh, + render: render, + getKey: getKey, }; -}); +}; diff --git a/lib/filters/hostname.js b/lib/filters/hostname.js index 29b78f85..c964a9bb 100644 --- a/lib/filters/hostname.js +++ b/lib/filters/hostname.js @@ -1,42 +1,38 @@ -define(function () { - "use strict"; +export const HostnameFilter = function () { + var refreshFunctions = []; + var timer; + var input = document.createElement("input"); - return function () { - var refreshFunctions = []; - var timer; - var input = document.createElement("input"); + function refresh() { + clearTimeout(timer); + timer = setTimeout(function () { + refreshFunctions.forEach(function (f) { + f(); + }); + }, 250); + } - function refresh() { - clearTimeout(timer); - timer = setTimeout(function () { - refreshFunctions.forEach(function (f) { - f(); - }); - }, 250); - } + function run(d) { + return d.hostname.toLowerCase().includes(input.value.toLowerCase()); + } - function run(d) { - return d.hostname.toLowerCase().includes(input.value.toLowerCase()); - } + function setRefresh(f) { + refreshFunctions.push(f); + } - function setRefresh(f) { - refreshFunctions.push(f); - } + function render(el) { + input.type = "search"; + input.placeholder = _.t("sidebar.nodeFilter"); + input.setAttribute("aria-label", _.t("sidebar.nodeFilter")); + input.addEventListener("input", refresh); + el.classList.add("filter-node"); + el.classList.add("ion-filter"); + el.appendChild(input); + } - function render(el) { - input.type = "search"; - input.placeholder = _.t("sidebar.nodeFilter"); - input.setAttribute("aria-label", _.t("sidebar.nodeFilter")); - input.addEventListener("input", refresh); - el.classList.add("filter-node"); - el.classList.add("ion-filter"); - el.appendChild(input); - } - - return { - run: run, - setRefresh: setRefresh, - render: render, - }; + return { + run: run, + setRefresh: setRefresh, + render: render, }; -}); +}; diff --git a/lib/filters/nodefilter.js b/lib/filters/nodefilter.js index e3535445..7811c0fc 100644 --- a/lib/filters/nodefilter.js +++ b/lib/filters/nodefilter.js @@ -1,22 +1,18 @@ -define(function () { - "use strict"; +export const NodeFilter = function (filter) { + return function (data) { + var n = Object.create(data); + n.nodes = {}; - return function (filter) { - return function (data) { - var n = Object.create(data); - n.nodes = {}; - - for (var key in data.nodes) { - if (data.nodes.hasOwnProperty(key)) { - n.nodes[key] = data.nodes[key].filter(filter); - } + for (var key in data.nodes) { + if (data.nodes.hasOwnProperty(key)) { + n.nodes[key] = data.nodes[key].filter(filter); } + } - n.links = data.links.filter(function (d) { - return filter(d.source) && filter(d.target); - }); + n.links = data.links.filter(function (d) { + return filter(d.source) && filter(d.target); + }); - return n; - }; + return n; }; -}); +}; diff --git a/lib/forcegraph.js b/lib/forcegraph.js index a836e5a5..e4e28849 100644 --- a/lib/forcegraph.js +++ b/lib/forcegraph.js @@ -1,297 +1,294 @@ -define([ - "d3-selection", - "d3-force", - "d3-zoom", - "d3-drag", - "d3-timer", - "d3-ease", - "d3-interpolate", - "utils/math", - "forcegraph/draw", -], function (d3Selection, d3Force, d3Zoom, d3Drag, d3Timer, d3Ease, d3Interpolate, math, draw) { - "use strict"; - - return function (linkScale, sidebar) { - var self = this; - var el; - var canvas; - var ctx; - var force; - var forceLink; - - var transform = d3Zoom.zoomIdentity; - var intNodes = []; - var dictNodes = {}; - var intLinks = []; - var movetoTimer; - var initial = 1.8; - - var NODE_RADIUS_DRAG = 10; - var NODE_RADIUS_SELECT = 15; - var LINK_RADIUS_SELECT = 12; - var ZOOM_ANIMATE_DURATION = 350; - - var ZOOM_MIN = 1 / 8; - var ZOOM_MAX = 3; - - var FORCE_ALPHA = 0.01; - - draw.setTransform(transform); - - function resizeCanvas() { - canvas.width = el.offsetWidth; - canvas.height = el.offsetHeight; - draw.setMaxArea(canvas.width, canvas.height); +import * as d3Drag from "d3-drag"; +import * as d3Ease from "d3-ease"; +import * as d3Force from "d3-force"; +import * as d3Interpolate from "d3-interpolate"; +import * as d3Selection from "d3-selection"; +import * as d3Timer from "d3-timer"; +import * as d3Zoom from "d3-zoom"; + +import math from "./utils/math"; +import draw from "./forcegraph/draw"; + +export const ForceGraph = function (linkScale, sidebar) { + var self = this; + var el; + var canvas; + var ctx; + var force; + var forceLink; + + var transform = d3Zoom.zoomIdentity; + var intNodes = []; + var dictNodes = {}; + var intLinks = []; + var movetoTimer; + var initial = 1.8; + + var NODE_RADIUS_DRAG = 10; + var NODE_RADIUS_SELECT = 15; + var LINK_RADIUS_SELECT = 12; + var ZOOM_ANIMATE_DURATION = 350; + + var ZOOM_MIN = 1 / 8; + var ZOOM_MAX = 3; + + var FORCE_ALPHA = 0.01; + + draw.setTransform(transform); + + function resizeCanvas() { + canvas.width = el.offsetWidth; + canvas.height = el.offsetHeight; + draw.setMaxArea(canvas.width, canvas.height); + } + + function transformPosition(p) { + transform.x = p.x; + transform.y = p.y; + transform.k = p.k; + } + + function moveTo(callback, forceMove) { + clearTimeout(movetoTimer); + if (!forceMove && force.alpha() > 0.3) { + movetoTimer = setTimeout(function timerOfMoveTo() { + moveTo(callback); + }, 300); + return; } + var result = callback(); + var x = result[0]; + var y = result[1]; + var k = result[2]; + var end = { k: k }; - function transformPosition(p) { - transform.x = p.x; - transform.y = p.y; - transform.k = p.k; - } + end.x = (canvas.width + sidebar.getWidth()) / 2 - x * k; + end.y = canvas.height / 2 - y * k; + + var start = { x: transform.x, y: transform.y, k: transform.k }; - function moveTo(callback, forceMove) { - clearTimeout(movetoTimer); - if (!forceMove && force.alpha() > 0.3) { - movetoTimer = setTimeout(function timerOfMoveTo() { - moveTo(callback); - }, 300); + var interpolate = d3Interpolate.interpolateObject(start, end); + + var timer = d3Timer.timer(function (t) { + if (t >= ZOOM_ANIMATE_DURATION) { + timer.stop(); return; } - var result = callback(); - var x = result[0]; - var y = result[1]; - var k = result[2]; - var end = { k: k }; - - end.x = (canvas.width + sidebar.getWidth()) / 2 - x * k; - end.y = canvas.height / 2 - y * k; - var start = { x: transform.x, y: transform.y, k: transform.k }; + var v = interpolate(d3Ease.easeQuadInOut(t / ZOOM_ANIMATE_DURATION)); + transformPosition(v); + window.requestAnimationFrame(redraw); + }); + } - var interpolate = d3Interpolate.interpolateObject(start, end); + function onClick(event) { + if (event.defaultPrevented) { + return; + } - var timer = d3Timer.timer(function (t) { - if (t >= ZOOM_ANIMATE_DURATION) { - timer.stop(); - return; - } + var e = transform.invert([event.clientX, event.clientY]); + var n = force.find(e[0], e[1], NODE_RADIUS_SELECT); - var v = interpolate(d3Ease.easeQuadInOut(t / ZOOM_ANIMATE_DURATION)); - transformPosition(v); - window.requestAnimationFrame(redraw); - }); + if (n !== undefined) { + router.fullUrl({ node: n.o.node_id }); + return; } - function onClick(event) { - if (event.defaultPrevented) { - return; + e = { x: e[0], y: e[1] }; + + var closedLink; + var radius = LINK_RADIUS_SELECT; + intLinks.forEach(function (d) { + var distance = math.distanceLink(e, d.source, d.target); + if (distance < radius) { + closedLink = d; + radius = distance; } + }); - var e = transform.invert([event.clientX, event.clientY]); - var n = force.find(e[0], e[1], NODE_RADIUS_SELECT); + if (closedLink !== undefined) { + router.fullUrl({ link: closedLink.o.id }); + } + } - if (n !== undefined) { - router.fullUrl({ node: n.o.node_id }); - return; + function redraw() { + ctx.save(); + ctx.clearRect(0, 0, canvas.width, canvas.height); + ctx.translate(transform.x, transform.y); + ctx.scale(transform.k, transform.k); + + intLinks.forEach(draw.drawLink); + intNodes.forEach(draw.drawNode); + + ctx.restore(); + } + + el = document.createElement("div"); + el.classList.add("graph"); + + forceLink = d3Force + .forceLink() + .distance(function (d) { + if (d.o.type.indexOf("vpn") === 0) { + return 0; + } + return 75; + }) + .strength(function (d) { + if (d.o.type.indexOf("vpn") === 0) { + return 0.02; } + return Math.max(0.5, d.o.source_tq); + }); - e = { x: e[0], y: e[1] }; + var zoom = d3Zoom + .zoom() + .scaleExtent([ZOOM_MIN, ZOOM_MAX]) + .on("zoom", function (event) { + transform = event.transform; + draw.setTransform(transform); + redraw(); + }); - var closedLink; - var radius = LINK_RADIUS_SELECT; - intLinks.forEach(function (d) { - var distance = math.distanceLink(e, d.source, d.target); - if (distance < radius) { - closedLink = d; - radius = distance; - } - }); + force = d3Force + .forceSimulation() + .force("link", forceLink) + .force("charge", d3Force.forceManyBody()) + .force("x", d3Force.forceX().strength(0.02)) + .force("y", d3Force.forceY().strength(0.02)) + .force("collide", d3Force.forceCollide()) + .on("tick", redraw) + .alphaDecay(0.025); + + var drag = d3Drag + .drag() + .subject(function (event) { + var e = transform.invert([event.x, event.y]); + var n = force.find(e[0], e[1], NODE_RADIUS_DRAG); - if (closedLink !== undefined) { - router.fullUrl({ link: closedLink.o.id }); + if (n !== undefined) { + n.x = event.x; + n.y = event.y; + return n; } - } + return undefined; + }) + .on("start", function (event) { + if (!event.active) { + force.alphaTarget(FORCE_ALPHA).restart(); + } + event.subject.fx = transform.invertX(event.subject.x); + event.subject.fy = transform.invertY(event.subject.y); + }) + .on("drag", function (event) { + event.subject.fx = transform.invertX(event.x); + event.subject.fy = transform.invertY(event.y); + }) + .on("end", function (event) { + if (!event.active) { + force.alphaTarget(0); + } + event.subject.fx = null; + event.subject.fy = null; + }); - function redraw() { - ctx.save(); - ctx.clearRect(0, 0, canvas.width, canvas.height); - ctx.translate(transform.x, transform.y); - ctx.scale(transform.k, transform.k); + canvas = d3Selection.select(el).append("canvas").on("click", onClick).call(drag).call(zoom).node(); - intLinks.forEach(draw.drawLink); - intNodes.forEach(draw.drawNode); + ctx = canvas.getContext("2d"); + draw.setCTX(ctx); - ctx.restore(); - } + window.addEventListener("resize", function () { + resizeCanvas(); + redraw(); + }); - el = document.createElement("div"); - el.classList.add("graph"); + self.setData = function setData(data) { + intNodes = data.nodes.all.map(function (d) { + var e = dictNodes[d.node_id]; + if (!e) { + e = {}; + dictNodes[d.node_id] = e; + } - forceLink = d3Force - .forceLink() - .distance(function (d) { - if (d.o.type.indexOf("vpn") === 0) { - return 0; - } - return 75; - }) - .strength(function (d) { - if (d.o.type.indexOf("vpn") === 0) { - return 0.02; - } - return Math.max(0.5, d.o.source_tq); - }); + e.o = d; - var zoom = d3Zoom - .zoom() - .scaleExtent([ZOOM_MIN, ZOOM_MAX]) - .on("zoom", function (event) { - transform = event.transform; - draw.setTransform(transform); - redraw(); - }); + return e; + }); - force = d3Force - .forceSimulation() - .force("link", forceLink) - .force("charge", d3Force.forceManyBody()) - .force("x", d3Force.forceX().strength(0.02)) - .force("y", d3Force.forceY().strength(0.02)) - .force("collide", d3Force.forceCollide()) - .on("tick", redraw) - .alphaDecay(0.025); - - var drag = d3Drag - .drag() - .subject(function (event) { - var e = transform.invert([event.x, event.y]); - var n = force.find(e[0], e[1], NODE_RADIUS_DRAG); - - if (n !== undefined) { - n.x = event.x; - n.y = event.y; - return n; - } - return undefined; - }) - .on("start", function (event) { - if (!event.active) { - force.alphaTarget(FORCE_ALPHA).restart(); - } - event.subject.fx = transform.invertX(event.subject.x); - event.subject.fy = transform.invertY(event.subject.y); - }) - .on("drag", function (event) { - event.subject.fx = transform.invertX(event.x); - event.subject.fy = transform.invertY(event.y); + intLinks = data.links + .filter(function (d) { + return data.nodeDict[d.source.node_id].is_online && data.nodeDict[d.target.node_id].is_online; }) - .on("end", function (event) { - if (!event.active) { - force.alphaTarget(0); - } - event.subject.fx = null; - event.subject.fy = null; + .map(function (d) { + return { + o: d, + source: dictNodes[d.source.node_id], + target: dictNodes[d.target.node_id], + color: linkScale(d.source_tq), + color_to: linkScale(d.target_tq), + }; }); - canvas = d3Selection.select(el).append("canvas").on("click", onClick).call(drag).call(zoom).node(); + force.nodes(intNodes); + forceLink.links(intLinks); - ctx = canvas.getContext("2d"); - draw.setCTX(ctx); - - window.addEventListener("resize", function () { - resizeCanvas(); - redraw(); - }); - - self.setData = function setData(data) { - intNodes = data.nodes.all.map(function (d) { - var e = dictNodes[d.node_id]; - if (!e) { - e = {}; - dictNodes[d.node_id] = e; - } + force.alpha(initial).velocityDecay(0.15).restart(); + if (initial === 1.8) { + initial = 0.5; + } - e.o = d; + resizeCanvas(); + }; - return e; - }); + self.resetView = function resetView() { + moveTo(function calcToReset() { + draw.setHighlight(null); + return [0, 0, (ZOOM_MIN + config.forceGraph.zoomModifier) / 2]; + }, true); + }; - intLinks = data.links - .filter(function (d) { - return data.nodeDict[d.source.node_id].is_online && data.nodeDict[d.target.node_id].is_online; - }) - .map(function (d) { - return { - o: d, - source: dictNodes[d.source.node_id], - target: dictNodes[d.target.node_id], - color: linkScale(d.source_tq), - color_to: linkScale(d.target_tq), - }; - }); - - force.nodes(intNodes); - forceLink.links(intLinks); - - force.alpha(initial).velocityDecay(0.15).restart(); - if (initial === 1.8) { - initial = 0.5; + self.gotoNode = function gotoNode(d) { + moveTo(function calcToNode() { + draw.setHighlight({ type: "node", id: d.node_id }); + var n = dictNodes[d.node_id]; + if (n) { + return [n.x, n.y, (ZOOM_MAX + 1) / 2]; } + return self.resetView(); + }); + }; - resizeCanvas(); - }; - - self.resetView = function resetView() { - moveTo(function calcToReset() { - draw.setHighlight(null); - return [0, 0, (ZOOM_MIN + config.forceGraph.zoomModifier) / 2]; - }, true); - }; - - self.gotoNode = function gotoNode(d) { - moveTo(function calcToNode() { - draw.setHighlight({ type: "node", id: d.node_id }); - var n = dictNodes[d.node_id]; - if (n) { - return [n.x, n.y, (ZOOM_MAX + 1) / 2]; - } - return self.resetView(); - }); - }; - - self.gotoLink = function gotoLink(d) { - moveTo(function calcToLink() { - draw.setHighlight({ type: "link", id: d[0].id }); - var l = intLinks.find(function (link) { - return link.o.id === d[0].id; - }); - if (l) { - return [(l.source.x + l.target.x) / 2, (l.source.y + l.target.y) / 2, ZOOM_MAX / 2 + ZOOM_MIN]; - } - return self.resetView(); + self.gotoLink = function gotoLink(d) { + moveTo(function calcToLink() { + draw.setHighlight({ type: "link", id: d[0].id }); + var l = intLinks.find(function (link) { + return link.o.id === d[0].id; }); - }; - - self.gotoLocation = function gotoLocation() { - // ignore - }; + if (l) { + return [(l.source.x + l.target.x) / 2, (l.source.y + l.target.y) / 2, ZOOM_MAX / 2 + ZOOM_MIN]; + } + return self.resetView(); + }); + }; - self.destroy = function destroy() { - force.stop(); - canvas.parentNode.removeChild(canvas); - force = null; + self.gotoLocation = function gotoLocation() { + // ignore + }; - if (el.parentNode) { - el.parentNode.removeChild(el); - } - }; + self.destroy = function destroy() { + force.stop(); + canvas.parentNode.removeChild(canvas); + force = null; - self.render = function render(d) { - d.appendChild(el); - resizeCanvas(); - }; + if (el.parentNode) { + el.parentNode.removeChild(el); + } + }; - return self; + self.render = function render(d) { + d.appendChild(el); + resizeCanvas(); }; -}); + + return self; +}; diff --git a/lib/forcegraph/draw.js b/lib/forcegraph/draw.js index ed0a797b..4bbb68bd 100644 --- a/lib/forcegraph/draw.js +++ b/lib/forcegraph/draw.js @@ -1,129 +1,129 @@ -define(["helper"], function (helper) { - var self = {}; - - var ctx; - var width; - var height; - var transform; - var highlight; - - var NODE_RADIUS = 15; - var LINE_RADIUS = 12; - - function drawDetailNode(d) { - if (transform.k > 1 && d.o.is_online) { - helper.positionClients(ctx, d, Math.PI, d.o, 15); - ctx.beginPath(); - var name = d.o.node_id; - if (d.o) { - name = d.o.hostname; - } - ctx.textAlign = "center"; - ctx.fillStyle = config.forceGraph.labelColor; - ctx.fillText(name, d.x, d.y + 20); - } - } +import * as helper from "../utils/helper"; - function drawHighlightNode(d) { - if (highlight && highlight.type === "node" && d.o.node_id === highlight.id) { - ctx.arc(d.x, d.y, NODE_RADIUS * 1.5, 0, 2 * Math.PI); - ctx.fillStyle = config.forceGraph.highlightColor; - ctx.fill(); - ctx.beginPath(); - } - } +var self = {}; - function drawHighlightLink(d, to) { - if (highlight && highlight.type === "link" && d.o.id === highlight.id) { - ctx.lineTo(to[0], to[1]); - ctx.strokeStyle = config.forceGraph.highlightColor; - ctx.lineWidth = LINE_RADIUS * 2; - ctx.lineCap = "round"; - ctx.stroke(); - to = [d.source.x, d.source.y]; - } - return to; - } +var ctx; +var width; +var height; +var transform; +var highlight; - self.drawNode = function drawNode(d) { - if ( - d.x < transform.invertX(0) || - d.y < transform.invertY(0) || - transform.invertX(width) < d.x || - transform.invertY(height) < d.y - ) { - return; - } - ctx.beginPath(); +var NODE_RADIUS = 15; +var LINE_RADIUS = 12; - drawHighlightNode(d); - - if (d.o.is_online) { - ctx.arc(d.x, d.y, 8, 0, 2 * Math.PI); - if (d.o.is_gateway) { - ctx.rect(d.x - 9, d.y - 9, 18, 18); - } - ctx.fillStyle = config.forceGraph.nodeColor; - } else { - ctx.arc(d.x, d.y, 6, 0, 2 * Math.PI); - ctx.fillStyle = config.forceGraph.nodeOfflineColor; +function drawDetailNode(d) { + if (transform.k > 1 && d.o.is_online) { + helper.positionClients(ctx, d, Math.PI, d.o, 15); + ctx.beginPath(); + var name = d.o.node_id; + if (d.o) { + name = d.o.hostname; } + ctx.textAlign = "center"; + ctx.fillStyle = config.forceGraph.labelColor; + ctx.fillText(name, d.x, d.y + 20); + } +} +function drawHighlightNode(d) { + if (highlight && highlight.type === "node" && d.o.node_id === highlight.id) { + ctx.arc(d.x, d.y, NODE_RADIUS * 1.5, 0, 2 * Math.PI); + ctx.fillStyle = config.forceGraph.highlightColor; ctx.fill(); - - drawDetailNode(d); - }; - - self.drawLink = function drawLink(d) { - var zero = transform.invert([0, 0]); - var area = transform.invert([width, height]); - if ( - (d.source.x < zero[0] && d.target.x < zero[0]) || - (d.source.y < zero[1] && d.target.y < zero[1]) || - (d.source.x > area[0] && d.target.x > area[0]) || - (d.source.y > area[1] && d.target.y > area[1]) - ) { - return; - } ctx.beginPath(); - ctx.moveTo(d.source.x, d.source.y); - var to = [d.target.x, d.target.y]; + } +} - to = drawHighlightLink(d, to); +function drawHighlightLink(d, to) { + if (highlight && highlight.type === "link" && d.o.id === highlight.id) { + ctx.lineTo(to[0], to[1]); + ctx.strokeStyle = config.forceGraph.highlightColor; + ctx.lineWidth = LINE_RADIUS * 2; + ctx.lineCap = "round"; + ctx.stroke(); + to = [d.source.x, d.source.y]; + } + return to; +} + +self.drawNode = function drawNode(d) { + if ( + d.x < transform.invertX(0) || + d.y < transform.invertY(0) || + transform.invertX(width) < d.x || + transform.invertY(height) < d.y + ) { + return; + } + ctx.beginPath(); - var grd = ctx.createLinearGradient(d.source.x, d.source.y, d.target.x, d.target.y); - grd.addColorStop(0.45, d.color); - grd.addColorStop(0.55, d.color_to); + drawHighlightNode(d); - ctx.lineTo(to[0], to[1]); - ctx.strokeStyle = grd; - if (d.o.type.indexOf("vpn") === 0) { - ctx.globalAlpha = 0.2; - ctx.lineWidth = 1.5; - } else { - ctx.globalAlpha = 0.8; - ctx.lineWidth = 2.5; + if (d.o.is_online) { + ctx.arc(d.x, d.y, 8, 0, 2 * Math.PI); + if (d.o.is_gateway) { + ctx.rect(d.x - 9, d.y - 9, 18, 18); } - ctx.stroke(); - ctx.globalAlpha = 1; - }; + ctx.fillStyle = config.forceGraph.nodeColor; + } else { + ctx.arc(d.x, d.y, 6, 0, 2 * Math.PI); + ctx.fillStyle = config.forceGraph.nodeOfflineColor; + } + + ctx.fill(); + + drawDetailNode(d); +}; + +self.drawLink = function drawLink(d) { + var zero = transform.invert([0, 0]); + var area = transform.invert([width, height]); + if ( + (d.source.x < zero[0] && d.target.x < zero[0]) || + (d.source.y < zero[1] && d.target.y < zero[1]) || + (d.source.x > area[0] && d.target.x > area[0]) || + (d.source.y > area[1] && d.target.y > area[1]) + ) { + return; + } + ctx.beginPath(); + ctx.moveTo(d.source.x, d.source.y); + var to = [d.target.x, d.target.y]; + + to = drawHighlightLink(d, to); + + var grd = ctx.createLinearGradient(d.source.x, d.source.y, d.target.x, d.target.y); + grd.addColorStop(0.45, d.color); + grd.addColorStop(0.55, d.color_to); + + ctx.lineTo(to[0], to[1]); + ctx.strokeStyle = grd; + if (d.o.type.indexOf("vpn") === 0) { + ctx.globalAlpha = 0.2; + ctx.lineWidth = 1.5; + } else { + ctx.globalAlpha = 0.8; + ctx.lineWidth = 2.5; + } + ctx.stroke(); + ctx.globalAlpha = 1; +}; - self.setCTX = function setCTX(newValue) { - ctx = newValue; - }; +self.setCTX = function setCTX(newValue) { + ctx = newValue; +}; - self.setHighlight = function setHighlight(newValue) { - highlight = newValue; - }; +self.setHighlight = function setHighlight(newValue) { + highlight = newValue; +}; - self.setTransform = function setTransform(newValue) { - transform = newValue; - }; +self.setTransform = function setTransform(newValue) { + transform = newValue; +}; - self.setMaxArea = function setMaxArea(newWidth, newHeight) { - width = newWidth; - height = newHeight; - }; +self.setMaxArea = function setMaxArea(newWidth, newHeight) { + width = newWidth; + height = newHeight; +}; - return self; -}); +export default self; diff --git a/lib/gui.js b/lib/gui.js index e46248b2..fb116dd7 100644 --- a/lib/gui.js +++ b/lib/gui.js @@ -1,175 +1,153 @@ -define([ - "d3-interpolate", - "map", - "sidebar", - "tabs", - "container", - "legend", - "linklist", - "nodelist", - "simplenodelist", - "infobox/main", - "proportions", - "forcegraph", - "title", - "about", - "datadistributor", - "filters/filtergui", - "filters/hostname", - "helper", -], function ( - d3Interpolate, - Map, - Sidebar, - Tabs, - Container, - Legend, - Linklist, - Nodelist, - SimpleNodelist, - Infobox, - Proportions, - ForceGraph, - Title, - About, - DataDistributor, - FilterGUI, - HostnameFilter, - helper, -) { - "use strict"; - - return function (language) { - var self = this; - var content; - var contentDiv; - - var linkScale = d3Interpolate.interpolate(config.map.tqFrom, config.map.tqTo); - var sidebar; - - var buttons = document.createElement("div"); - buttons.classList.add("buttons"); - - var fanout = new DataDistributor(); - var fanoutUnfiltered = new DataDistributor(); - fanoutUnfiltered.add(fanout); - - function removeContent() { - if (!content) { - return; - } - - router.removeTarget(content); - fanout.remove(content); - - content.destroy(); - - content = null; +import { interpolate } from "d3-interpolate"; + +import { About } from "./about"; +import { Container } from "./container"; +import { DataDistributor } from "./datadistributor"; +import { ForceGraph } from "./forcegraph"; +import { Legend } from "./legend"; +import { Linklist } from "./linklist"; +import { Nodelist } from "./nodelist"; +import { Map } from "./map"; +import { Proportions } from "./proportions"; +import { SimpleNodelist } from "./simplenodelist"; +import { Sidebar } from "./sidebar"; +import { Tabs } from "./tabs"; +import { Title } from "./title"; +import { Main as Infobox } from "./infobox/main"; +import { FilterGui } from "./filters/filtergui"; +import { HostnameFilter } from "./filters/hostname"; +import * as helper from "./utils/helper"; + +export const Gui = function (language) { + var self = this; + var content; + var contentDiv; + + var linkScale = interpolate(config.map.tqFrom, config.map.tqTo); + var sidebar; + + var buttons = document.createElement("div"); + buttons.classList.add("buttons"); + + var fanout = new DataDistributor(); + var fanoutUnfiltered = new DataDistributor(); + fanoutUnfiltered.add(fanout); + + function removeContent() { + if (!content) { + return; } - function addContent(K) { - removeContent(); + router.removeTarget(content); + fanout.remove(content); - content = new K(linkScale, sidebar, buttons); - content.render(contentDiv); + content.destroy(); - fanout.add(content); - router.addTarget(content); - } + content = null; + } - function mkView(K) { - return function () { - addContent(K); - }; - } + function addContent(K) { + removeContent(); - var loader = document.getElementsByClassName("loader")[0]; - loader.classList.add("hide"); + content = new K(linkScale, sidebar, buttons); + content.render(contentDiv); - contentDiv = document.createElement("div"); - contentDiv.classList.add("content"); - document.body.appendChild(contentDiv); + fanout.add(content); + router.addTarget(content); + } - sidebar = new Sidebar(document.body); + function mkView(K) { + return function () { + addContent(K); + }; + } - contentDiv.appendChild(buttons); + var loader = document.getElementsByClassName("loader")[0]; + loader.classList.add("hide"); - var buttonToggle = document.createElement("button"); - buttonToggle.classList.add("ion-eye"); - buttonToggle.setAttribute("aria-label", _.t("button.switchView")); - buttonToggle.onclick = function onclick() { - var data; - if (content.constructor === Map) { - data = { view: "graph", lat: undefined, lng: undefined, zoom: undefined }; - } else { - data = { view: "map" }; - } - router.fullUrl(data, false, true); - }; + contentDiv = document.createElement("div"); + contentDiv.classList.add("content"); + document.body.appendChild(contentDiv); - buttons.appendChild(buttonToggle); + sidebar = new Sidebar(document.body); - if (config.fullscreen || (config.fullscreenFrame && window.frameElement)) { - var buttonFullscreen = document.createElement("button"); - buttonFullscreen.classList.add("ion-full-enter"); - buttonFullscreen.setAttribute("aria-label", _.t("button.fullscreen")); - buttonFullscreen.onclick = function onclick() { - helper.fullscreen(buttonFullscreen); - }; + contentDiv.appendChild(buttons); - buttons.appendChild(buttonFullscreen); + var buttonToggle = document.createElement("button"); + buttonToggle.classList.add("ion-eye"); + buttonToggle.setAttribute("aria-label", _.t("button.switchView")); + buttonToggle.onclick = function onclick() { + var data; + if (content.constructor === Map) { + data = { view: "graph", lat: undefined, lng: undefined, zoom: undefined }; + } else { + data = { view: "map" }; } - - var title = new Title(); - - var header = new Container("header"); - var infobox = new Infobox(sidebar, linkScale); - var tabs = new Tabs(); - var overview = new Container(); - var legend = new Legend(language); - var newnodeslist = new SimpleNodelist("new", "firstseen", _.t("node.new")); - var lostnodeslist = new SimpleNodelist("lost", "lastseen", _.t("node.missing")); - var nodelist = new Nodelist(); - var linklist = new Linklist(linkScale); - var statistics = new Proportions(fanout); - var about = new About(); - - fanoutUnfiltered.add(legend); - fanoutUnfiltered.add(newnodeslist); - fanoutUnfiltered.add(lostnodeslist); - fanoutUnfiltered.add(infobox); - fanout.add(nodelist); - fanout.add(linklist); - fanout.add(statistics); - - sidebar.add(header); - header.add(legend); - - overview.add(newnodeslist); - overview.add(lostnodeslist); - - var filterGUI = new FilterGUI(fanout); - fanout.watchFilters(filterGUI); - header.add(filterGUI); - - var hostnameFilter = new HostnameFilter(); - fanout.addFilter(hostnameFilter); - - sidebar.add(tabs); - tabs.add("sidebar.actual", overview); - tabs.add("node.nodes", nodelist); - tabs.add("node.links", linklist); - tabs.add("sidebar.stats", statistics); - tabs.add("sidebar.about", about); - - router.addTarget(title); - router.addTarget(infobox); - - router.addView("map", mkView(Map)); - router.addView("graph", mkView(ForceGraph)); - - self.setData = fanoutUnfiltered.setData; - - return self; + router.fullUrl(data, false, true); }; -}); + + buttons.appendChild(buttonToggle); + + if (config.fullscreen || (config.fullscreenFrame && window.frameElement)) { + var buttonFullscreen = document.createElement("button"); + buttonFullscreen.classList.add("ion-full-enter"); + buttonFullscreen.setAttribute("aria-label", _.t("button.fullscreen")); + buttonFullscreen.onclick = function onclick() { + helper.fullscreen(buttonFullscreen); + }; + + buttons.appendChild(buttonFullscreen); + } + + var title = new Title(); + + var header = new Container("header"); + var infobox = new Infobox(sidebar, linkScale); + var tabs = new Tabs(); + var overview = new Container(); + var legend = new Legend(language); + var newnodeslist = new SimpleNodelist("new", "firstseen", _.t("node.new")); + var lostnodeslist = new SimpleNodelist("lost", "lastseen", _.t("node.missing")); + var nodelist = new Nodelist(); + var linklist = new Linklist(linkScale); + var statistics = new Proportions(fanout); + var about = new About(); + + fanoutUnfiltered.add(legend); + fanoutUnfiltered.add(newnodeslist); + fanoutUnfiltered.add(lostnodeslist); + fanoutUnfiltered.add(infobox); + fanout.add(nodelist); + fanout.add(linklist); + fanout.add(statistics); + + sidebar.add(header); + header.add(legend); + + overview.add(newnodeslist); + overview.add(lostnodeslist); + + var filterGui = new FilterGui(fanout); + fanout.watchFilters(filterGui); + header.add(filterGui); + + var hostnameFilter = new HostnameFilter(); + fanout.addFilter(hostnameFilter); + + sidebar.add(tabs); + tabs.add("sidebar.actual", overview); + tabs.add("node.nodes", nodelist); + tabs.add("node.links", linklist); + tabs.add("sidebar.stats", statistics); + tabs.add("sidebar.about", about); + + router.addTarget(title); + router.addTarget(infobox); + + router.addView("map", mkView(Map)); + router.addView("graph", mkView(ForceGraph)); + + self.setData = fanoutUnfiltered.setData; + + return self; +}; diff --git a/lib/index.js b/lib/index.js new file mode 100644 index 00000000..89977f16 --- /dev/null +++ b/lib/index.js @@ -0,0 +1,4 @@ +import "../scss/main.scss"; +import { load } from "./load"; + +load(); diff --git a/lib/infobox/link.js b/lib/infobox/link.js index 79d1b06a..78e27171 100644 --- a/lib/infobox/link.js +++ b/lib/infobox/link.js @@ -1,112 +1,111 @@ -define(["helper", "snabbdom"], function (helper, V) { - "use strict"; - V = V.default; +import V from "snabbdom/dist/snabbdom-patch"; - function showStatImg(img, o, d, time) { - var subst = { - "{SOURCE_ID}": d.source.node_id, - "{SOURCE_NAME}": d.source.hostname.replace(/[^a-z0-9\-]/gi, "_"), - "{SOURCE_ADDR}": d.source_addr, - "{SOURCE_MAC}": d.source_mac ? d.source_mac : d.source_addr, - "{TARGET_ID}": d.target.node_id, - "{TARGET_NAME}": d.target.hostname.replace(/[^a-z0-9\-]/gi, "_"), - "{TARGET_ADDR}": d.target_addr, - "{TARGET_MAC}": d.target_mac ? d.target_mac : d.target_addr, - "{TYPE}": d.type, - "{TIME}": time, - "{LOCALE}": _.locale(), - }; +import * as helper from "../utils/helper"; - img.push(V.h("h4", helper.listReplace(o.name, subst))); - img.push(helper.showStat(V, o, subst)); - } +function showStatImg(img, o, d, time) { + var subst = { + "{SOURCE_ID}": d.source.node_id, + "{SOURCE_NAME}": d.source.hostname.replace(/[^a-z0-9\-]/gi, "_"), + "{SOURCE_ADDR}": d.source_addr, + "{SOURCE_MAC}": d.source_mac ? d.source_mac : d.source_addr, + "{TARGET_ID}": d.target.node_id, + "{TARGET_NAME}": d.target.hostname.replace(/[^a-z0-9\-]/gi, "_"), + "{TARGET_ADDR}": d.target_addr, + "{TARGET_MAC}": d.target_mac ? d.target_mac : d.target_addr, + "{TYPE}": d.type, + "{TIME}": time, + "{LOCALE}": _.locale(), + }; - return function (el, d, linkScale) { - var self = this; - var header = document.createElement("div"); - var table = document.createElement("table"); - var images = document.createElement("div"); - el.appendChild(header); - el.appendChild(table); - el.appendChild(images); + img.push(V.h("h4", helper.listReplace(o.name, subst))); + img.push(helper.showStat(V, o, subst)); +} - self.render = function render() { - var children = []; - var img = []; - var time = d[0].target.lastseen.format("DDMMYYYYHmmss"); +export const Link = function (el, d, linkScale) { + var self = this; + var header = document.createElement("div"); + var table = document.createElement("table"); + var images = document.createElement("div"); + el.appendChild(header); + el.appendChild(table); + el.appendChild(images); - header = V.patch( - header, - V.h( - "div", - V.h("h2", [ - V.h( - "a", - { - props: { href: router.generateLink({ node: d[0].source.node_id }) }, - }, - d[0].source.hostname, - ), - V.h("span", " - "), - V.h( - "a", - { - props: { href: router.generateLink({ node: d[0].target.node_id }) }, - }, - d[0].target.hostname, - ), - ]), - ), - ); + self.render = function render() { + var children = []; + var img = []; + var time = d[0].target.lastseen.format("DDMMYYYYHmmss"); + header = V.patch( + header, + V.h( + "div", + V.h("h2", [ + V.h( + "a", + { + props: { href: router.generateLink({ node: d[0].source.node_id }) }, + }, + d[0].source.hostname, + ), + V.h("span", " - "), + V.h( + "a", + { + props: { href: router.generateLink({ node: d[0].target.node_id }) }, + }, + d[0].target.hostname, + ), + ]), + ), + ); + + helper.attributeEntry( + V, + children, + "node.hardware", + (d[0].source.model ? d[0].source.model + " – " : "") + (d[0].target.model ? d[0].target.model : ""), + ); + helper.attributeEntry(V, children, "node.distance", helper.showDistance(d[0])); + + d.forEach(function (link) { + children.push( + V.h("tr", { props: { className: "header" } }, [V.h("th", _.t("node.connectionType")), V.h("th", link.type)]), + ); helper.attributeEntry( V, children, - "node.hardware", - (d[0].source.model ? d[0].source.model + " – " : "") + (d[0].target.model ? d[0].target.model : ""), + "node.tq", + V.h( + "span", + { style: { color: linkScale((link.source_tq + link.target_tq) / 2) } }, + helper.showTq(link.source_tq) + " - " + helper.showTq(link.target_tq), + ), ); - helper.attributeEntry(V, children, "node.distance", helper.showDistance(d[0])); - - d.forEach(function (link) { - children.push( - V.h("tr", { props: { className: "header" } }, [V.h("th", _.t("node.connectionType")), V.h("th", link.type)]), - ); - helper.attributeEntry( - V, - children, - "node.tq", - V.h( - "span", - { style: { color: linkScale((link.source_tq + link.target_tq) / 2) } }, - helper.showTq(link.source_tq) + " - " + helper.showTq(link.target_tq), - ), - ); - if (config.linkTypeInfos) { - config.linkTypeInfos.forEach(function (o) { - showStatImg(img, o, link, time); - }); - } - }); - - if (config.linkInfos) { - config.linkInfos.forEach(function (o) { - showStatImg(img, o, d[0], time); + if (config.linkTypeInfos) { + config.linkTypeInfos.forEach(function (o) { + showStatImg(img, o, link, time); }); } + }); - var elNew = V.h("table", children); - table = V.patch(table, elNew); - table.elm.classList.add("attributes"); - images = V.patch(images, V.h("div", img)); - }; - - self.setData = function setData(data) { - d = data.links.filter(function (a) { - return a.id === d[0].id; + if (config.linkInfos) { + config.linkInfos.forEach(function (o) { + showStatImg(img, o, d[0], time); }); - self.render(); - }; - return self; + } + + var elNew = V.h("table", children); + table = V.patch(table, elNew); + table.elm.classList.add("attributes"); + images = V.patch(images, V.h("div", img)); + }; + + self.setData = function setData(data) { + d = data.links.filter(function (a) { + return a.id === d[0].id; + }); + self.render(); }; -}); + return self; +}; diff --git a/lib/infobox/location.js b/lib/infobox/location.js index ab936c7c..d747889d 100644 --- a/lib/infobox/location.js +++ b/lib/infobox/location.js @@ -1,84 +1,82 @@ -define(["helper"], function (helper) { - "use strict"; +import * as helper from "../utils/helper"; - return function (el, d) { - var sidebarTitle = document.createElement("h2"); - sidebarTitle.textContent = _.t("location.location"); - el.appendChild(sidebarTitle); +export const location = function (el, d) { + var sidebarTitle = document.createElement("h2"); + sidebarTitle.textContent = _.t("location.location"); + el.appendChild(sidebarTitle); - helper - .getJSON( - config.reverseGeocodingApi + - "?format=json&lat=" + - d.lat + - "&lon=" + - d.lng + - "&zoom=18&addressdetails=0&accept-language=" + - _.locale(), - ) - .then(function (result) { - if (result.display_name) { - sidebarTitle.outerHTML += "

" + result.display_name + "

"; - } - }); + helper + .getJSON( + config.reverseGeocodingApi + + "?format=json&lat=" + + d.lat + + "&lon=" + + d.lng + + "&zoom=18&addressdetails=0&accept-language=" + + _.locale(), + ) + .then(function (result) { + if (result.display_name) { + sidebarTitle.outerHTML += "

" + result.display_name + "

"; + } + }); - var editLat = document.createElement("input"); - editLat.setAttribute("aria-label", _.t("location.latitude")); - editLat.type = "text"; - editLat.value = d.lat.toFixed(9); - el.appendChild(createBox("lat", _.t("location.latitude"), editLat)); + var editLat = document.createElement("input"); + editLat.setAttribute("aria-label", _.t("location.latitude")); + editLat.type = "text"; + editLat.value = d.lat.toFixed(9); + el.appendChild(createBox("lat", _.t("location.latitude"), editLat)); - var editLng = document.createElement("input"); - editLng.setAttribute("aria-label", _.t("location.longitude")); - editLng.type = "text"; - editLng.value = d.lng.toFixed(9); - el.appendChild(createBox("lng", _.t("location.longitude"), editLng)); + var editLng = document.createElement("input"); + editLng.setAttribute("aria-label", _.t("location.longitude")); + editLng.type = "text"; + editLng.value = d.lng.toFixed(9); + el.appendChild(createBox("lng", _.t("location.longitude"), editLng)); - var editUci = document.createElement("textarea"); - editUci.setAttribute("aria-label", "Uci"); - editUci.value = - "uci set gluon-node-info.@location[0]='location'; " + - "uci set gluon-node-info.@location[0].share_location='1';" + - "uci set gluon-node-info.@location[0].latitude='" + - d.lat.toFixed(9) + - "';" + - "uci set gluon-node-info.@location[0].longitude='" + - d.lng.toFixed(9) + - "';" + - "uci commit gluon-node-info"; + var editUci = document.createElement("textarea"); + editUci.setAttribute("aria-label", "Uci"); + editUci.value = + "uci set gluon-node-info.@location[0]='location'; " + + "uci set gluon-node-info.@location[0].share_location='1';" + + "uci set gluon-node-info.@location[0].latitude='" + + d.lat.toFixed(9) + + "';" + + "uci set gluon-node-info.@location[0].longitude='" + + d.lng.toFixed(9) + + "';" + + "uci commit gluon-node-info"; - el.appendChild(createBox("uci", "Uci", editUci)); + el.appendChild(createBox("uci", "Uci", editUci)); - function createBox(name, title, inputElem) { - var box = document.createElement("div"); - var heading = document.createElement("h3"); - heading.textContent = title; - box.appendChild(heading); - var btn = document.createElement("button"); - btn.classList.add("ion-clipboard"); - btn.title = _.t("location.copy"); - btn.setAttribute("aria-label", _.t("location.copy")); - btn.onclick = function onclick() { - copy2clip(inputElem.id); - }; - inputElem.id = "location-" + name; - inputElem.readOnly = true; - var line = document.createElement("p"); - line.appendChild(inputElem); - line.appendChild(btn); - box.appendChild(line); - box.id = "box-" + name; - return box; - } + function createBox(name, title, inputElem) { + var box = document.createElement("div"); + var heading = document.createElement("h3"); + heading.textContent = title; + box.appendChild(heading); + var btn = document.createElement("button"); + btn.classList.add("ion-clipboard"); + btn.title = _.t("location.copy"); + btn.setAttribute("aria-label", _.t("location.copy")); + btn.onclick = function onclick() { + copy2clip(inputElem.id); + }; + inputElem.id = "location-" + name; + inputElem.readOnly = true; + var line = document.createElement("p"); + line.appendChild(inputElem); + line.appendChild(btn); + box.appendChild(line); + box.id = "box-" + name; + return box; + } - function copy2clip(id) { - var copyField = document.querySelector("#" + id); - copyField.select(); - try { - document.execCommand("copy"); - } catch (err) { - console.warn(err); - } + function copy2clip(id) { + var copyField = document.querySelector("#" + id); + copyField.select(); + try { + document.execCommand("copy"); + } catch (err) { + console.warn(err); } - }; -}); + } +}; diff --git a/lib/infobox/main.js b/lib/infobox/main.js index f8d56d2a..859b900b 100644 --- a/lib/infobox/main.js +++ b/lib/infobox/main.js @@ -1,70 +1,70 @@ -define(["infobox/link", "infobox/node", "infobox/location"], function (Link, Node, location) { - "use strict"; +import { Link } from "./link"; +import { Node } from "./node"; +import { location } from "./location"; - return function (sidebar, linkScale) { - var self = this; - var el; - var node; - var link; +export const Main = function (sidebar, linkScale) { + var self = this; + var el; + var node; + var link; - function destroy() { - if (el && el.parentNode) { - el.parentNode.removeChild(el); - node = link = el = undefined; - sidebar.reveal(); - } + function destroy() { + if (el && el.parentNode) { + el.parentNode.removeChild(el); + node = link = el = undefined; + sidebar.reveal(); } + } - function create() { - destroy(); - sidebar.ensureVisible(); - sidebar.hide(); + function create() { + destroy(); + sidebar.ensureVisible(); + sidebar.hide(); - el = document.createElement("div"); - sidebar.container.children[1].appendChild(el); + el = document.createElement("div"); + sidebar.container.children[1].appendChild(el); - el.scrollIntoView(false); - el.classList.add("infobox"); - el.destroy = destroy; + el.scrollIntoView(false); + el.classList.add("infobox"); + el.destroy = destroy; - var closeButton = document.createElement("button"); - closeButton.classList.add("close"); - closeButton.classList.add("ion-close"); - closeButton.setAttribute("aria-label", _.t("close")); - closeButton.onclick = function () { - router.fullUrl(); - }; - el.appendChild(closeButton); - } - - self.resetView = destroy; - - self.gotoNode = function gotoNode(d, nodeDict) { - create(); - node = new Node(el, d, linkScale, nodeDict); - node.render(); + var closeButton = document.createElement("button"); + closeButton.classList.add("close"); + closeButton.classList.add("ion-close"); + closeButton.setAttribute("aria-label", _.t("close")); + closeButton.onclick = function () { + router.fullUrl(); }; + el.appendChild(closeButton); + } - self.gotoLink = function gotoLink(d) { - create(); - link = new Link(el, d, linkScale); - link.render(); - }; + self.resetView = destroy; - self.gotoLocation = function gotoLocation(d) { - create(); - location(el, d); - }; + self.gotoNode = function gotoNode(d, nodeDict) { + create(); + node = new Node(el, d, linkScale, nodeDict); + node.render(); + }; - self.setData = function setData(d) { - if (typeof node === "object") { - node.setData(d); - } - if (typeof link === "object") { - link.setData(d); - } - }; + self.gotoLink = function gotoLink(d) { + create(); + link = new Link(el, d, linkScale); + link.render(); + }; + + self.gotoLocation = function gotoLocation(d) { + create(); + location(el, d); + }; - return self; + self.setData = function setData(d) { + if (typeof node === "object") { + node.setData(d); + } + if (typeof link === "object") { + link.setData(d); + } }; -}); + + return self; +}; diff --git a/lib/infobox/node.js b/lib/infobox/node.js index b2b61350..c0d82ab6 100644 --- a/lib/infobox/node.js +++ b/lib/infobox/node.js @@ -1,254 +1,249 @@ -define(["sorttable", "snabbdom", "d3-interpolate", "helper", "utils/node"], function ( - SortTable, - V, - d3Interpolate, - helper, - nodef, -) { - "use strict"; - V = V.default; - - function showStatImg(o, d) { - var subst = { - "{NODE_ID}": d.node_id, - "{NODE_NAME}": d.hostname.replace(/[^a-z0-9\-]/gi, "_"), - "{NODE_CUSTOM}": d.hostname.replace(config.node_custom, "_"), - "{TIME}": d.lastseen.format("DDMMYYYYHmmss"), - "{LOCALE}": _.locale(), - }; - return helper.showStat(V, o, subst); - } +import V from "snabbdom/dist/snabbdom-patch"; + +import { SortTable } from "../sorttable"; +import * as helper from "../utils/helper"; +import nodef from "../utils/node"; + +function showStatImg(o, d) { + var subst = { + "{NODE_ID}": d.node_id, + "{NODE_NAME}": d.hostname.replace(/[^a-z0-9\-]/gi, "_"), + "{NODE_CUSTOM}": d.hostname.replace(config.node_custom, "_"), + "{TIME}": d.lastseen.format("DDMMYYYYHmmss"), + "{LOCALE}": _.locale(), + }; + return helper.showStat(V, o, subst); +} - function showHwImg(o, d) { - if (!d.model) { - return null; - } - var subst = { - "{MODEL}": d.model, - "{NODE_NAME}": d.hostname, - "{MODEL_HASH}": d.model.split("").reduce(function (a, b) { - a = (a << 5) - a + b.charCodeAt(0); - return a & a; - }, 0), - "{MODEL_NORMALIZED}": d.model - .toLowerCase() - .replace(/[^a-z0-9\.\-]+/gi, "-") - .replace(/^-+/, "") - .replace(/-+$/, ""), - }; - return helper.showHwImg(V, o, subst); +function showHwImg(o, d) { + if (!d.model) { + return null; } + var subst = { + "{MODEL}": d.model, + "{NODE_NAME}": d.hostname, + "{MODEL_HASH}": d.model.split("").reduce(function (a, b) { + a = (a << 5) - a + b.charCodeAt(0); + return a & a; + }, 0), + "{MODEL_NORMALIZED}": d.model + .toLowerCase() + .replace(/[^a-z0-9\.\-]+/gi, "-") + .replace(/^-+/, "") + .replace(/-+$/, ""), + }; + return helper.showHwImg(V, o, subst); +} - return function (el, d, linkScale, nodeDict) { - function nodeLink(node) { - return V.h( - "a", - { - props: { - className: node.is_online ? "online" : "offline", - href: router.generateLink({ node: node.node_id }), - }, - on: { - click: function (e) { - router.fullUrl({ node: node.node_id }, e); - }, +export function Node(el, d, linkScale, nodeDict) { + function nodeLink(node) { + return V.h( + "a", + { + props: { + className: node.is_online ? "online" : "offline", + href: router.generateLink({ node: node.node_id }), + }, + on: { + click: function (e) { + router.fullUrl({ node: node.node_id }, e); }, }, - node.hostname, - ); - } + }, + node.hostname, + ); + } - function nodeIdLink(nodeId) { - if (nodeDict[nodeId]) { - return nodeLink(nodeDict[nodeId]); - } - return nodeId; + function nodeIdLink(nodeId) { + if (nodeDict[nodeId]) { + return nodeLink(nodeDict[nodeId]); } + return nodeId; + } - function showGateway(node) { - var gatewayCols = [ - V.h("span", [nodeIdLink(node.gateway_nexthop), V.h("br"), _.t("node.nexthop")]), - V.h("span", { props: { className: "ion-arrow-right-c" } }), - V.h("span", [nodeIdLink(node.gateway), V.h("br"), "IPv4"]), - ]; - - if (node.gateway6 !== undefined) { - gatewayCols.push(V.h("span", [nodeIdLink(node.gateway6), V.h("br"), "IPv6"])); - } + function showGateway(node) { + var gatewayCols = [ + V.h("span", [nodeIdLink(node.gateway_nexthop), V.h("br"), _.t("node.nexthop")]), + V.h("span", { props: { className: "ion-arrow-right-c" } }), + V.h("span", [nodeIdLink(node.gateway), V.h("br"), "IPv4"]), + ]; - return V.h("td", { props: { className: "gateway" } }, gatewayCols); + if (node.gateway6 !== undefined) { + gatewayCols.push(V.h("span", [nodeIdLink(node.gateway6), V.h("br"), "IPv6"])); } - function renderNeighbourRow(n) { - var icons = [ - V.h("span", { - props: { - className: "icon ion-" + (n.link.type.indexOf("wifi") === 0 ? "wifi" : "share-alt"), - title: _.t(n.link.type), - }, - }), - ]; - if (helper.hasLocation(n.node)) { - icons.push(V.h("span", { props: { className: "ion-location", title: _.t("location.location") } })); - } + return V.h("td", { props: { className: "gateway" } }, gatewayCols); + } - return V.h("tr", [ - V.h("td", icons), - V.h("td", nodeLink(n.node)), - V.h("td", n.node.clients), - V.h("td", [ - V.h( - "a", - { - style: { - color: linkScale((n.link.source_tq + n.link.target_tq) / 2), - }, - props: { - title: n.link.source.hostname + " - " + n.link.target.hostname, - href: router.generateLink({ link: n.link.id }), - }, - on: { - click: function (e) { - router.fullUrl({ link: n.link.id }, e); - }, + function renderNeighbourRow(n) { + var icons = [ + V.h("span", { + props: { + className: "icon ion-" + (n.link.type.indexOf("wifi") === 0 ? "wifi" : "share-alt"), + title: _.t(n.link.type), + }, + }), + ]; + if (helper.hasLocation(n.node)) { + icons.push(V.h("span", { props: { className: "ion-location", title: _.t("location.location") } })); + } + + return V.h("tr", [ + V.h("td", icons), + V.h("td", nodeLink(n.node)), + V.h("td", n.node.clients), + V.h("td", [ + V.h( + "a", + { + style: { + color: linkScale((n.link.source_tq + n.link.target_tq) / 2), + }, + props: { + title: n.link.source.hostname + " - " + n.link.target.hostname, + href: router.generateLink({ link: n.link.id }), + }, + on: { + click: function (e) { + router.fullUrl({ link: n.link.id }, e); }, }, - helper.showTq(n.link.source_tq) + " - " + helper.showTq(n.link.target_tq), - ), - ]), - V.h("td", helper.showDistance(n.link)), - ]); - } + }, + helper.showTq(n.link.source_tq) + " - " + helper.showTq(n.link.target_tq), + ), + ]), + V.h("td", helper.showDistance(n.link)), + ]); + } - var self = this; - var header = document.createElement("h2"); - var hwImage = document.createElement("div"); - var table = document.createElement("table"); - var images = document.createElement("div"); - var neighbours = document.createElement("h3"); - var headings = [ - { - name: "", - sort: function (a, b) { - return a.link.type.localeCompare(b.link.type); - }, + var self = this; + var header = document.createElement("h2"); + var hwImage = document.createElement("div"); + var table = document.createElement("table"); + var images = document.createElement("div"); + var neighbours = document.createElement("h3"); + var headings = [ + { + name: "", + sort: function (a, b) { + return a.link.type.localeCompare(b.link.type); }, - { - name: "node.nodes", - sort: function (a, b) { - return a.node.hostname.localeCompare(b.node.hostname); - }, - reverse: false, + }, + { + name: "node.nodes", + sort: function (a, b) { + return a.node.hostname.localeCompare(b.node.hostname); }, - { - name: "node.clients", - class: "ion-people", - sort: function (a, b) { - return a.node.clients - b.node.clients; - }, - reverse: true, + reverse: false, + }, + { + name: "node.clients", + class: "ion-people", + sort: function (a, b) { + return a.node.clients - b.node.clients; }, - { - name: "node.tq", - class: "ion-connection-bars", - sort: function (a, b) { - return a.link.source_tq - b.link.source_tq; - }, - reverse: true, + reverse: true, + }, + { + name: "node.tq", + class: "ion-connection-bars", + sort: function (a, b) { + return a.link.source_tq - b.link.source_tq; }, - { - name: "node.distance", - class: "ion-arrow-resize", - sort: function (a, b) { - return ( - (a.link.distance === undefined ? -1 : a.link.distance) - - (b.link.distance === undefined ? -1 : b.link.distance) - ); - }, - reverse: true, + reverse: true, + }, + { + name: "node.distance", + class: "ion-arrow-resize", + sort: function (a, b) { + return ( + (a.link.distance === undefined ? -1 : a.link.distance) - + (b.link.distance === undefined ? -1 : b.link.distance) + ); }, - ]; - var tableNeighbour = new SortTable(headings, 1, renderNeighbourRow); - - // Prepare deprecation warning. At first not displayed, text follows later - var deprecation = document.createElement("div"); - deprecation.setAttribute("class", "deprecated"); - deprecation.setAttribute("style", "display: none;"); - deprecation.innerHTML = "
" + (config.deprecation_text || _.t("deprecation")) + "
"; - - el.appendChild(header); - el.appendChild(hwImage); - el.appendChild(deprecation); - el.appendChild(table); - el.appendChild(neighbours); - el.appendChild(tableNeighbour.el); - el.appendChild(images); - - self.render = function render() { - V.patch(header, V.h("h2", d.hostname)); - - var hwImg = showHwImg(config.hwImg, d); - var hwImgContainerData = { - attrs: { - class: "hw-img-container", - }, - }; - hwImage = V.patch(hwImage, hwImg ? V.h("div", hwImgContainerData, hwImg) : V.h("div")); + reverse: true, + }, + ]; + var tableNeighbour = new SortTable(headings, 1, renderNeighbourRow); + + // Prepare deprecation warning. At first not displayed, text follows later + var deprecation = document.createElement("div"); + deprecation.setAttribute("class", "deprecated"); + deprecation.setAttribute("style", "display: none;"); + deprecation.innerHTML = "
" + (config.deprecation_text || _.t("deprecation")) + "
"; + + el.appendChild(header); + el.appendChild(hwImage); + el.appendChild(deprecation); + el.appendChild(table); + el.appendChild(neighbours); + el.appendChild(tableNeighbour.el); + el.appendChild(images); + + self.render = function render() { + V.patch(header, V.h("h2", d.hostname)); + + var hwImg = showHwImg(config.hwImg, d); + var hwImgContainerData = { + attrs: { + class: "hw-img-container", + }, + }; + hwImage = V.patch(hwImage, hwImg ? V.h("div", hwImgContainerData, hwImg) : V.h("div")); - var children = []; + var children = []; - config.nodeAttr.forEach(function (row) { - var field = d[row.value]; - if (typeof row.value === "function") { - field = row.value(d, nodeDict); - } else if (nodef["show" + row.value] !== undefined) { - field = nodef["show" + row.value](d); - } - // Check if device is in list of deprecated devices. If so, display the deprecation warning - if (config.deprecation_enabled) { - if (row.name === "node.hardware") { - if (config.deprecated && field && config.deprecated.includes(field)) { - deprecation.setAttribute("style", "display: block;"); - } + config.nodeAttr.forEach(function (row) { + var field = d[row.value]; + if (typeof row.value === "function") { + field = row.value(d, nodeDict); + } else if (nodef["show" + row.value] !== undefined) { + field = nodef["show" + row.value](d); + } + // Check if device is in list of deprecated devices. If so, display the deprecation warning + if (config.deprecation_enabled) { + if (row.name === "node.hardware") { + if (config.deprecated && field && config.deprecated.includes(field)) { + deprecation.setAttribute("style", "display: block;"); } } + } - if (field) { - if (typeof field !== "object") { - field = V.h("td", field); - } - children.push(V.h("tr", [row.name !== undefined ? V.h("th", _.t(row.name)) : null, field])); + if (field) { + if (typeof field !== "object") { + field = V.h("td", field); } - }); + children.push(V.h("tr", [row.name !== undefined ? V.h("th", _.t(row.name)) : null, field])); + } + }); - children.push(V.h("tr", [V.h("th", _.t("node.gateway")), showGateway(d)])); + children.push(V.h("tr", [V.h("th", _.t("node.gateway")), showGateway(d)])); - var elNew = V.h("table", children); - table = V.patch(table, elNew); - table.elm.classList.add("attributes"); + var elNew = V.h("table", children); + table = V.patch(table, elNew); + table.elm.classList.add("attributes"); - V.patch(neighbours, V.h("h3", _.t("node.link", d.neighbours.length) + " (" + d.neighbours.length + ")")); - if (d.neighbours.length > 0) { - tableNeighbour.setData(d.neighbours); - tableNeighbour.el.elm.classList.add("node-links"); - } + V.patch(neighbours, V.h("h3", _.t("node.link", d.neighbours.length) + " (" + d.neighbours.length + ")")); + if (d.neighbours.length > 0) { + tableNeighbour.setData(d.neighbours); + tableNeighbour.el.elm.classList.add("node-links"); + } - if (config.nodeInfos) { - var img = []; - config.nodeInfos.forEach(function (nodeInfo) { - img.push(V.h("h4", nodeInfo.name)); - img.push(showStatImg(nodeInfo, d)); - }); - images = V.patch(images, V.h("div", img)); - } - }; + if (config.nodeInfos) { + var img = []; + config.nodeInfos.forEach(function (nodeInfo) { + img.push(V.h("h4", nodeInfo.name)); + img.push(showStatImg(nodeInfo, d)); + }); + images = V.patch(images, V.h("div", img)); + } + }; - self.setData = function setData(data) { - if (data.nodeDict[d.node_id]) { - d = data.nodeDict[d.node_id]; - } - self.render(); - }; - return self; + self.setData = function setData(data) { + if (data.nodeDict[d.node_id]) { + d = data.nodeDict[d.node_id]; + } + self.render(); }; -}); + return self; +} diff --git a/lib/legend.js b/lib/legend.js index 37dd1fdf..e5f935b0 100644 --- a/lib/legend.js +++ b/lib/legend.js @@ -1,64 +1,62 @@ -define(["helper"], function (helper) { - "use strict"; - - return function (language) { - var self = this; - var stats = document.createTextNode(""); - var timestamp = document.createTextNode(""); - - self.setData = function setData(d) { - var totalNodes = Object.keys(d.nodeDict).length; - var totalOnlineNodes = d.nodes.online.length; - var totalClients = helper.sum( - d.nodes.online.map(function (n) { - return n.clients; - }), - ); - var totalGateways = helper.sum( - d.nodes.online - .filter(function (n) { - return n.is_gateway; - }) - .map(helper.one), - ); - - stats.textContent = - _.t("sidebar.nodes", { total: totalNodes, online: totalOnlineNodes }) + - " " + - _.t("sidebar.clients", { smart_count: totalClients }) + - " " + - _.t("sidebar.gateway", { smart_count: totalGateways }); +import * as helper from "./utils/helper"; + +export const Legend = function (language) { + var self = this; + var stats = document.createTextNode(""); + var timestamp = document.createTextNode(""); + + self.setData = function setData(d) { + var totalNodes = Object.keys(d.nodeDict).length; + var totalOnlineNodes = d.nodes.online.length; + var totalClients = helper.sum( + d.nodes.online.map(function (n) { + return n.clients; + }), + ); + var totalGateways = helper.sum( + d.nodes.online + .filter(function (n) { + return n.is_gateway; + }) + .map(helper.one), + ); + + stats.textContent = + _.t("sidebar.nodes", { total: totalNodes, online: totalOnlineNodes }) + + " " + + _.t("sidebar.clients", { smart_count: totalClients }) + + " " + + _.t("sidebar.gateway", { smart_count: totalGateways }); + + timestamp.textContent = _.t("sidebar.lastUpdate") + " " + d.timestamp.fromNow(); + }; - timestamp.textContent = _.t("sidebar.lastUpdate") + " " + d.timestamp.fromNow(); - }; + self.render = function render(el) { + var h1 = document.createElement("h1"); + h1.textContent = config.siteName; + el.appendChild(h1); - self.render = function render(el) { - var h1 = document.createElement("h1"); - h1.textContent = config.siteName; - el.appendChild(h1); + language.languageSelect(el); - language.languageSelect(el); + var p = document.createElement("p"); + p.classList.add("legend"); - var p = document.createElement("p"); - p.classList.add("legend"); + p.appendChild(stats); + p.appendChild(document.createElement("br")); + p.appendChild(timestamp); - p.appendChild(stats); + if (config.linkList) { p.appendChild(document.createElement("br")); - p.appendChild(timestamp); - - if (config.linkList) { - p.appendChild(document.createElement("br")); - config.linkList.forEach(function (link) { - var a = document.createElement("a"); - a.innerText = link.title; - a.href = link.href; - p.appendChild(a); - }); - } - - el.appendChild(p); - }; - - return self; + config.linkList.forEach(function (link) { + var a = document.createElement("a"); + a.innerText = link.title; + a.href = link.href; + p.appendChild(a); + }); + } + + el.appendChild(p); }; -}); + + return self; +}; diff --git a/lib/linklist.js b/lib/linklist.js index 43202a45..1fff4f97 100644 --- a/lib/linklist.js +++ b/lib/linklist.js @@ -1,94 +1,94 @@ -define(["sorttable", "snabbdom", "helper"], function (SortTable, V, helper) { - "use strict"; - V = V.default; +import V from "snabbdom/dist/snabbdom-patch"; - function linkName(d) { - return (d.source ? d.source.hostname : d.source.id) + " – " + d.target.hostname; - } +import { SortTable } from "./sorttable"; +import * as helper from "./utils/helper"; + +function linkName(d) { + return (d.source ? d.source.hostname : d.source.id) + " – " + d.target.hostname; +} - var headings = [ - { - name: "", - sort: function (a, b) { - return a.type.localeCompare(b.type); - }, +var headings = [ + { + name: "", + sort: function (a, b) { + return a.type.localeCompare(b.type); }, - { - name: "node.nodes", - sort: function (a, b) { - return linkName(a).localeCompare(linkName(b)); - }, - reverse: false, + }, + { + name: "node.nodes", + sort: function (a, b) { + return linkName(a).localeCompare(linkName(b)); }, - { - name: "node.tq", - class: "ion-connection-bars", - sort: function (a, b) { - return (a.source_tq + a.target_tq) / 2 - (b.source_tq + b.target_tq) / 2; - }, - reverse: true, + reverse: false, + }, + { + name: "node.tq", + class: "ion-connection-bars", + sort: function (a, b) { + return (a.source_tq + a.target_tq) / 2 - (b.source_tq + b.target_tq) / 2; }, - { - name: "node.distance", - class: "ion-arrow-resize", - sort: function (a, b) { - return (a.distance === undefined ? -1 : a.distance) - (b.distance === undefined ? -1 : b.distance); - }, - reverse: true, + reverse: true, + }, + { + name: "node.distance", + class: "ion-arrow-resize", + sort: function (a, b) { + return (a.distance === undefined ? -1 : a.distance) - (b.distance === undefined ? -1 : b.distance); }, - ]; + reverse: true, + }, +]; - return function (linkScale) { - var table = new SortTable(headings, 3, renderRow); +export const Linklist = function (linkScale) { + var table = new SortTable(headings, 3, renderRow); - function renderRow(d) { - var td1Content = [ - V.h( - "a", - { - props: { - href: router.generateLink({ link: d.id }), - }, - on: { - click: function (e) { - router.fullUrl({ link: d.id }, e); - }, + function renderRow(d) { + var td1Content = [ + V.h( + "a", + { + props: { + href: router.generateLink({ link: d.id }), + }, + on: { + click: function (e) { + router.fullUrl({ link: d.id }, e); }, }, - linkName(d), - ), - ]; + }, + linkName(d), + ), + ]; - return V.h("tr", [ - V.h( - "td", - V.h("span", { - props: { - className: "icon ion-" + (d.type.indexOf("wifi") === 0 ? "wifi" : "share-alt"), - title: _.t(d.type), - }, - }), - ), - V.h("td", td1Content), - V.h( - "td", - { style: { color: linkScale((d.source_tq + d.target_tq) / 2) } }, - helper.showTq(d.source_tq) + " - " + helper.showTq(d.target_tq), - ), - V.h("td", helper.showDistance(d)), - ]); - } + return V.h("tr", [ + V.h( + "td", + V.h("span", { + props: { + className: "icon ion-" + (d.type.indexOf("wifi") === 0 ? "wifi" : "share-alt"), + title: _.t(d.type), + }, + }), + ), + V.h("td", td1Content), + V.h( + "td", + { style: { color: linkScale((d.source_tq + d.target_tq) / 2) } }, + helper.showTq(d.source_tq) + " - " + helper.showTq(d.target_tq), + ), + V.h("td", helper.showDistance(d)), + ]); + } - this.render = function render(d) { - var h2 = document.createElement("h2"); - h2.textContent = _.t("node.links"); - d.appendChild(h2); - table.el.elm.classList.add("link-list"); - d.appendChild(table.el.elm); - }; + this.render = function render(d) { + var h2 = document.createElement("h2"); + h2.textContent = _.t("node.links"); + d.appendChild(h2); + table.el.elm.classList.add("link-list"); + d.appendChild(table.el.elm); + }; - this.setData = function setData(d) { - table.setData(d.links); - }; + this.setData = function setData(d) { + table.setData(d.links); }; -}); +}; diff --git a/lib/load.js b/lib/load.js index b9a02773..91bb0161 100644 --- a/lib/load.js +++ b/lib/load.js @@ -1,15 +1,9 @@ -define(["config_default", "main"], function (cDefault, main) { - return function () { - fetch("config.json") - .then(function (res) { - return res.json(); - }) - .then(function (out) { - window.config = Object.assign(cDefault, out); - main(); - }) - .catch(function (err) { - throw err; - }); - }; -}); +import { config as defaultConfig } from "./config_default"; +import { main } from "./main"; + +export const load = async () => { + const configResponse = await fetch("config.json"); + const config = await configResponse.json(); + globalThis.config = Object.assign(defaultConfig, config); + main(); +}; diff --git a/lib/main.js b/lib/main.js index f6082afd..ee1ffdfc 100644 --- a/lib/main.js +++ b/lib/main.js @@ -1,129 +1,126 @@ -define(["moment", "utils/router", "leaflet", "gui", "helper", "utils/language"], function ( - moment, - Router, - L, - GUI, - helper, - Language, -) { - "use strict"; - - return function () { - function handleData(data) { - var timestamp; - var nodes = []; - var links = []; - var nodeDict = {}; - - for (var i = 0; i < data.length; ++i) { - nodes = nodes.concat(data[i].nodes); - timestamp = data[i].timestamp; - links = links.concat(data[i].links); - } - - nodes.forEach(function (node) { - node.firstseen = moment.utc(node.firstseen).local(); - node.lastseen = moment.utc(node.lastseen).local(); - }); - - var age = moment().subtract(config.maxAge, "days"); - - var online = nodes.filter(function (d) { - return d.is_online; - }); - var offline = nodes.filter(function (d) { - return !d.is_online; - }); +import moment from "moment"; +import * as L from "leaflet"; + +import { Router } from "./utils/router"; +import { Gui } from "./gui"; +import { Language } from "./utils/language"; +import * as helper from "./utils/helper"; + +export const main = () => { + function handleData(data) { + var timestamp; + var nodes = []; + var links = []; + var nodeDict = {}; + + for (var i = 0; i < data.length; ++i) { + nodes = nodes.concat(data[i].nodes); + timestamp = data[i].timestamp; + links = links.concat(data[i].links); + } - var newnodes = helper.limit("firstseen", age, helper.sortByKey("firstseen", online)); - var lostnodes = helper.limit("lastseen", age, helper.sortByKey("lastseen", offline)); + nodes.forEach(function (node) { + node.firstseen = moment.utc(node.firstseen).local(); + node.lastseen = moment.utc(node.lastseen).local(); + }); - nodes.forEach(function (d) { - d.neighbours = []; - nodeDict[d.node_id] = d; - }); + var age = moment().subtract(config.maxAge, "days"); - links.forEach(function (d) { - d.source = nodeDict[d.source]; - d.target = nodeDict[d.target]; + var online = nodes.filter(function (d) { + return d.is_online; + }); + var offline = nodes.filter(function (d) { + return !d.is_online; + }); - d.id = [d.source.node_id, d.target.node_id].join("-"); - d.source.neighbours.push({ node: d.target, link: d }); - d.target.neighbours.push({ node: d.source, link: d }); + var newnodes = helper.limit("firstseen", age, helper.sortByKey("firstseen", online)); + var lostnodes = helper.limit("lastseen", age, helper.sortByKey("lastseen", offline)); - try { - d.latlngs = []; - d.latlngs.push(L.latLng(d.source.location.latitude, d.source.location.longitude)); - d.latlngs.push(L.latLng(d.target.location.latitude, d.target.location.longitude)); + nodes.forEach(function (d) { + d.neighbours = []; + nodeDict[d.node_id] = d; + }); - d.distance = d.latlngs[0].distanceTo(d.latlngs[1]); - } catch (e) { - // ignore exception - } - }); + links.forEach(function (d) { + d.source = nodeDict[d.source]; + d.target = nodeDict[d.target]; - return { - now: moment(), - timestamp: moment.utc(timestamp).local(), - nodes: { - all: nodes, - online: online, - offline: offline, - new: newnodes, - lost: lostnodes, - }, - links: links, - nodeDict: nodeDict, - }; - } + d.id = [d.source.node_id, d.target.node_id].join("-"); + d.source.neighbours.push({ node: d.target, link: d }); + d.target.neighbours.push({ node: d.source, link: d }); - var language = new Language(); - window.router = new Router(language); + try { + d.latlngs = []; + d.latlngs.push(L.latLng(d.source.location.latitude, d.source.location.longitude)); + d.latlngs.push(L.latLng(d.target.location.latitude, d.target.location.longitude)); - config.dataPath.forEach(function (d, i) { - config.dataPath[i] += "meshviewer.json"; + d.distance = d.latlngs[0].distanceTo(d.latlngs[1]); + } catch (e) { + // ignore exception + } }); - language.init(router); - - function update() { - return Promise.all(config.dataPath.map(helper.getJSON)).then(handleData); - } - - update() - .then(function (d) { - return new Promise(function (resolve, reject) { - var count = 0; - (function waitForLanguage() { - if (Object.keys(_.phrases).length > 0) { - resolve(d); - } else if (count > 500) { - reject(new Error("translation not loaded after 10 seconds")); - } else { - setTimeout(waitForLanguage.bind(this), 20); - } - count++; - })(); - }); - }) - .then(function (d) { - var gui = new GUI(language); - gui.setData(d); - router.setData(d); - router.resolve(); - - window.setInterval(function () { - update().then(function (n) { - gui.setData(n); - router.setData(n); - }); - }, 60000); - }) - .catch(function (e) { - document.querySelector(".loader").innerHTML += - e.message + - '


or report to your community'; - console.warn(e); + return { + now: moment(), + timestamp: moment.utc(timestamp).local(), + nodes: { + all: nodes, + online: online, + offline: offline, + new: newnodes, + lost: lostnodes, + }, + links: links, + nodeDict: nodeDict, + }; + } + + var language = new Language(); + window.router = new Router(language); + + config.dataPath.forEach(function (d, i) { + config.dataPath[i] += "meshviewer.json"; + }); + + language.init(router); + + function update() { + return Promise.all(config.dataPath.map(helper.getJSON)).then(handleData); + } + + update() + .then(function (d) { + return new Promise(function (resolve, reject) { + var count = 0; + (function waitForLanguage() { + if (Object.keys(_.phrases).length > 0) { + resolve(d); + } else if (count > 500) { + reject(new Error("translation not loaded after 10 seconds")); + } else { + setTimeout(waitForLanguage.bind(this), 20); + } + count++; + })(); }); - }; -}); + }) + .then(function (d) { + var gui = new Gui(language); + gui.setData(d); + router.setData(d); + router.resolve(); + + window.setInterval(function () { + update().then(function (n) { + gui.setData(n); + router.setData(n); + }); + }, 60000); + }) + .catch(function (e) { + document.querySelector(".loader").innerHTML += + e.message + + '


or report to your community'; + console.warn(e); + }); +}; diff --git a/lib/map.js b/lib/map.js index a5166920..cd2acb83 100644 --- a/lib/map.js +++ b/lib/map.js @@ -1,262 +1,260 @@ -define(["map/clientlayer", "map/labellayer", "map/button", "leaflet", "map/activearea"], function ( - ClientLayer, - LabelLayer, - Button, - L, -) { - "use strict"; - - var options = { - worldCopyJump: true, - zoomControl: true, - minZoom: 0, - }; - - return function (linkScale, sidebar, buttons) { - var self = this; - var savedView; - - var map; - var layerControl; - var baseLayers = {}; - - function saveView() { - savedView = { - center: map.getCenter(), - zoom: map.getZoom(), - }; - } - - function contextMenuOpenLayerMenu() { - document.querySelector(".leaflet-control-layers").classList.add("leaflet-control-layers-expanded"); +import * as L from "leaflet"; + +import { ClientLayer } from "./map/clientlayer"; +import { LabelLayer } from "./map/labellayer"; +import { Button } from "./map/button"; +import "./map/activearea"; + +var options = { + worldCopyJump: true, + zoomControl: true, + minZoom: 0, +}; + +export const Map = function (linkScale, sidebar, buttons) { + var self = this; + var savedView; + + var map; + var layerControl; + var baseLayers = {}; + + function saveView() { + savedView = { + center: map.getCenter(), + zoom: map.getZoom(), + }; + } + + function contextMenuOpenLayerMenu() { + document.querySelector(".leaflet-control-layers").classList.add("leaflet-control-layers-expanded"); + } + + function mapActiveArea() { + map.setActiveArea({ + position: "absolute", + left: sidebar.getWidth() + "px", + right: 0, + top: 0, + bottom: 0, + }); + } + + function setActiveArea() { + setTimeout(mapActiveArea, 300); + } + + var el = document.createElement("div"); + el.classList.add("map"); + + map = L.map(el, options); + mapActiveArea(); + + var now = new Date(); + config.mapLayers.forEach(function (item, i) { + if ( + (typeof item.config.start === "number" && item.config.start <= now.getHours()) || + (typeof item.config.end === "number" && item.config.end > now.getHours()) + ) { + item.config.order = item.config.start * -1; + } else { + item.config.order = i; } + }); + + config.mapLayers = config.mapLayers.sort(function (a, b) { + return a.config.order - b.config.order; + }); + + var layers = config.mapLayers.map(function (d) { + return { + name: d.name, + layer: L.tileLayer( + d.url.replace( + "{format}", + document.createElement("canvas").toDataURL("image/webp").indexOf("data:image/webp") === 0 ? "webp" : "png", + ), + d.config, + ), + }; + }); - function mapActiveArea() { - map.setActiveArea({ - position: "absolute", - left: sidebar.getWidth() + "px", - right: 0, - top: 0, - bottom: 0, - }); - } + map.addLayer(layers[0].layer); - function setActiveArea() { - setTimeout(mapActiveArea, 300); - } + layers.forEach(function (d) { + baseLayers[d.name] = d.layer; + }); - var el = document.createElement("div"); - el.classList.add("map"); + var button = new Button(map, buttons); - map = L.map(el, options); - mapActiveArea(); + map.on("locationfound", button.locationFound); + map.on("locationerror", button.locationError); + map.on("dragend", saveView); + map.on("contextmenu", contextMenuOpenLayerMenu); - var now = new Date(); - config.mapLayers.forEach(function (item, i) { - if ( - (typeof item.config.start === "number" && item.config.start <= now.getHours()) || - (typeof item.config.end === "number" && item.config.end > now.getHours()) - ) { - item.config.order = item.config.start * -1; - } else { - item.config.order = i; + if (config.geo) { + [].forEach.call(config.geo, function (geo) { + if (geo) { + L.geoJSON(geo.json, geo.option).addTo(map); } }); + } - config.mapLayers = config.mapLayers.sort(function (a, b) { - return a.config.order - b.config.order; - }); + button.init(); - var layers = config.mapLayers.map(function (d) { - return { - name: d.name, - layer: L.tileLayer( - d.url.replace( - "{format}", - document.createElement("canvas").toDataURL("image/webp").indexOf("data:image/webp") === 0 ? "webp" : "png", - ), - d.config, - ), - }; - }); + layerControl = L.control.layers(baseLayers, [], { position: "bottomright" }); + layerControl.addTo(map); - map.addLayer(layers[0].layer); - - layers.forEach(function (d) { - baseLayers[d.name] = d.layer; - }); + map.zoomControl.setPosition("topright"); - var button = new Button(map, buttons); - - map.on("locationfound", button.locationFound); - map.on("locationerror", button.locationError); - map.on("dragend", saveView); - map.on("contextmenu", contextMenuOpenLayerMenu); - - if (config.geo) { - [].forEach.call(config.geo, function (geo) { - if (geo) { - L.geoJSON(geo.json, geo.option).addTo(map); - } - }); - } + var clientLayer = new ClientLayer({ minZoom: config.clientZoom }); + clientLayer.addTo(map); + clientLayer.setZIndex(5); - button.init(); + var labelLayer = new LabelLayer({ minZoom: config.labelZoom }); + labelLayer.addTo(map); + labelLayer.setZIndex(6); - layerControl = L.control.layers(baseLayers, [], { position: "bottomright" }); - layerControl.addTo(map); + sidebar.button.addEventListener("visibility", setActiveArea); - map.zoomControl.setPosition("topright"); + map.on("zoom", function () { + clientLayer.redraw(); + labelLayer.redraw(); + }); - var clientLayer = new ClientLayer({ minZoom: config.clientZoom }); - clientLayer.addTo(map); - clientLayer.setZIndex(5); - - var labelLayer = new LabelLayer({ minZoom: config.labelZoom }); - labelLayer.addTo(map); - labelLayer.setZIndex(6); + map.on("baselayerchange", function (e) { + map.options.maxZoom = e.layer.options.maxZoom; + clientLayer.options.maxZoom = map.options.maxZoom; + labelLayer.options.maxZoom = map.options.maxZoom; + if (map.getZoom() > map.options.maxZoom) { + map.setZoom(map.options.maxZoom); + } - sidebar.button.addEventListener("visibility", setActiveArea); + var style = document.querySelector('.css-mode:not([media="not"])'); + if (style && e.layer.options.mode !== "" && !style.classList.contains(e.layer.options.mode)) { + style.media = "not"; + labelLayer.updateLayer(); + } + if (e.layer.options.mode) { + var newStyle = document.querySelector(".css-mode." + e.layer.options.mode); + newStyle.media = ""; + newStyle.appendChild(document.createTextNode("")); + labelLayer.updateLayer(); + } + }); - map.on("zoom", function () { - clientLayer.redraw(); - labelLayer.redraw(); + map.on("load", function () { + var inputs = document.querySelectorAll(".leaflet-control-layers-selector"); + [].forEach.call(inputs, function (input) { + input.setAttribute("role", "radiogroup"); + input.setAttribute("aria-label", input.nextSibling.innerHTML.trim()); }); + }); - map.on("baselayerchange", function (e) { - map.options.maxZoom = e.layer.options.maxZoom; - clientLayer.options.maxZoom = map.options.maxZoom; - labelLayer.options.maxZoom = map.options.maxZoom; - if (map.getZoom() > map.options.maxZoom) { - map.setZoom(map.options.maxZoom); - } + var nodeDict = {}; + var linkDict = {}; + var highlight; - var style = document.querySelector('.css-mode:not([media="not"])'); - if (style && e.layer.options.mode !== "" && !style.classList.contains(e.layer.options.mode)) { - style.media = "not"; - labelLayer.updateLayer(); - } - if (e.layer.options.mode) { - var newStyle = document.querySelector(".css-mode." + e.layer.options.mode); - newStyle.media = ""; - newStyle.appendChild(document.createTextNode("")); - labelLayer.updateLayer(); - } + function resetMarkerStyles(nodes, links) { + Object.keys(nodes).forEach(function (d) { + nodes[d].resetStyle(); }); - map.on("load", function () { - var inputs = document.querySelectorAll(".leaflet-control-layers-selector"); - [].forEach.call(inputs, function (input) { - input.setAttribute("role", "radiogroup"); - input.setAttribute("aria-label", input.nextSibling.innerHTML.trim()); - }); + Object.keys(links).forEach(function (d) { + links[d].resetStyle(); }); + } - var nodeDict = {}; - var linkDict = {}; - var highlight; + function setView(bounds, zoom) { + map.fitBounds(bounds, { maxZoom: zoom ? zoom : config.nodeZoom }); + } - function resetMarkerStyles(nodes, links) { - Object.keys(nodes).forEach(function (d) { - nodes[d].resetStyle(); - }); + function goto(m) { + var bounds; - Object.keys(links).forEach(function (d) { - links[d].resetStyle(); - }); + if ("getBounds" in m) { + bounds = m.getBounds(); + } else { + bounds = L.latLngBounds([m.getLatLng()]); } - function setView(bounds, zoom) { - map.fitBounds(bounds, { maxZoom: zoom ? zoom : config.nodeZoom }); - } + setView(bounds); - function goto(m) { - var bounds; + return m; + } - if ("getBounds" in m) { - bounds = m.getBounds(); - } else { - bounds = L.latLngBounds([m.getLatLng()]); - } - - setView(bounds); - - return m; - } + function updateView(nopanzoom) { + resetMarkerStyles(nodeDict, linkDict); + var m; - function updateView(nopanzoom) { - resetMarkerStyles(nodeDict, linkDict); - var m; - - if (highlight !== undefined) { - if (highlight.type === "node" && nodeDict[highlight.o.node_id]) { - m = nodeDict[highlight.o.node_id]; - m.setStyle(config.map.highlightNode); - } else if (highlight.type === "link" && linkDict[highlight.o.id]) { - m = linkDict[highlight.o.id]; - m.setStyle(config.map.highlightLink); - } + if (highlight !== undefined) { + if (highlight.type === "node" && nodeDict[highlight.o.node_id]) { + m = nodeDict[highlight.o.node_id]; + m.setStyle(config.map.highlightNode); + } else if (highlight.type === "link" && linkDict[highlight.o.id]) { + m = linkDict[highlight.o.id]; + m.setStyle(config.map.highlightLink); } + } - if (!nopanzoom) { - if (m) { - goto(m); - } else if (savedView) { - map.setView(savedView.center, savedView.zoom); - } else { - setView(config.fixedCenter); - } + if (!nopanzoom) { + if (m) { + goto(m); + } else if (savedView) { + map.setView(savedView.center, savedView.zoom); + } else { + setView(config.fixedCenter); } } + } - self.setData = function setData(data) { - nodeDict = {}; - linkDict = {}; - - clientLayer.setData(data); - labelLayer.setData(data, map, nodeDict, linkDict, linkScale); + self.setData = function setData(data) { + nodeDict = {}; + linkDict = {}; - updateView(true); - }; + clientLayer.setData(data); + labelLayer.setData(data, map, nodeDict, linkDict, linkScale); - self.resetView = function resetView() { - button.disableTracking(); - highlight = undefined; - updateView(); - }; + updateView(true); + }; - self.gotoNode = function gotoNode(d) { - button.disableTracking(); - highlight = { type: "node", o: d }; - updateView(); - }; + self.resetView = function resetView() { + button.disableTracking(); + highlight = undefined; + updateView(); + }; - self.gotoLink = function gotoLink(d) { - button.disableTracking(); - highlight = { type: "link", o: d[0] }; - updateView(); - }; + self.gotoNode = function gotoNode(d) { + button.disableTracking(); + highlight = { type: "node", o: d }; + updateView(); + }; - self.gotoLocation = function gotoLocation(d) { - button.disableTracking(); - map.setView([d.lat, d.lng], d.zoom); - }; + self.gotoLink = function gotoLink(d) { + button.disableTracking(); + highlight = { type: "link", o: d[0] }; + updateView(); + }; - self.destroy = function destroy() { - button.clearButtons(); - sidebar.button.removeEventListener("visibility", setActiveArea); - map.remove(); + self.gotoLocation = function gotoLocation(d) { + button.disableTracking(); + map.setView([d.lat, d.lng], d.zoom); + }; - if (el.parentNode) { - el.parentNode.removeChild(el); - } - }; + self.destroy = function destroy() { + button.clearButtons(); + sidebar.button.removeEventListener("visibility", setActiveArea); + map.remove(); - self.render = function render(d) { - d.appendChild(el); - map.invalidateSize(); - }; + if (el.parentNode) { + el.parentNode.removeChild(el); + } + }; - return self; + self.render = function render(d) { + d.appendChild(el); + map.invalidateSize(); }; -}); + + return self; +}; diff --git a/lib/map/activearea.js b/lib/map/activearea.js index ef793d9a..881accad 100644 --- a/lib/map/activearea.js +++ b/lib/map/activearea.js @@ -1,292 +1,290 @@ -define(function () { - /** - * https://github.com/Mappy/Leaflet-active-area - * Apache 2.0 license https://www.apache.org/licenses/LICENSE-2.0 - */ - - var previousMethods = { - getCenter: L.Map.prototype.getCenter, - setView: L.Map.prototype.setView, - setZoomAround: L.Map.prototype.setZoomAround, - getBoundsZoom: L.Map.prototype.getBoundsZoom, - RendererUpdate: L.Renderer.prototype._update, - }; - - L.Map.include({ - getBounds: function () { - if (this._viewport) { - return this.getViewportLatLngBounds(); - } - var bounds = this.getPixelBounds(); - var sw = this.unproject(bounds.getBottomLeft()); - var ne = this.unproject(bounds.getTopRight()); - - return new L.LatLngBounds(sw, ne); - }, - - getViewport: function () { - return this._viewport; - }, - - getViewportBounds: function () { - var vp = this._viewport; - var topleft = L.point(vp.offsetLeft, vp.offsetTop); - var vpsize = L.point(vp.clientWidth, vp.clientHeight); - - if (vpsize.x === 0 || vpsize.y === 0) { - // Our own viewport has no good size - so we fallback to the container size: - vp = this.getContainer(); - if (vp) { - topleft = L.point(0, 0); - vpsize = L.point(vp.clientWidth, vp.clientHeight); - } +/** + * https://github.com/Mappy/Leaflet-active-area + * Apache 2.0 license https://www.apache.org/licenses/LICENSE-2.0 + */ + +var previousMethods = { + getCenter: L.Map.prototype.getCenter, + setView: L.Map.prototype.setView, + setZoomAround: L.Map.prototype.setZoomAround, + getBoundsZoom: L.Map.prototype.getBoundsZoom, + RendererUpdate: L.Renderer.prototype._update, +}; + +L.Map.include({ + getBounds: function () { + if (this._viewport) { + return this.getViewportLatLngBounds(); + } + var bounds = this.getPixelBounds(); + var sw = this.unproject(bounds.getBottomLeft()); + var ne = this.unproject(bounds.getTopRight()); + + return new L.LatLngBounds(sw, ne); + }, + + getViewport: function () { + return this._viewport; + }, + + getViewportBounds: function () { + var vp = this._viewport; + var topleft = L.point(vp.offsetLeft, vp.offsetTop); + var vpsize = L.point(vp.clientWidth, vp.clientHeight); + + if (vpsize.x === 0 || vpsize.y === 0) { + // Our own viewport has no good size - so we fallback to the container size: + vp = this.getContainer(); + if (vp) { + topleft = L.point(0, 0); + vpsize = L.point(vp.clientWidth, vp.clientHeight); } + } - return L.bounds(topleft, topleft.add(vpsize)); - }, + return L.bounds(topleft, topleft.add(vpsize)); + }, - getViewportLatLngBounds: function () { - var bounds = this.getViewportBounds(); - return L.latLngBounds(this.containerPointToLatLng(bounds.min), this.containerPointToLatLng(bounds.max)); - }, + getViewportLatLngBounds: function () { + var bounds = this.getViewportBounds(); + return L.latLngBounds(this.containerPointToLatLng(bounds.min), this.containerPointToLatLng(bounds.max)); + }, - getOffset: function () { - var mCenter = this.getSize().divideBy(2); - var vCenter = this.getViewportBounds().getCenter(); + getOffset: function () { + var mCenter = this.getSize().divideBy(2); + var vCenter = this.getViewportBounds().getCenter(); - return mCenter.subtract(vCenter); - }, + return mCenter.subtract(vCenter); + }, - getCenter: function (withoutViewport) { - var center = previousMethods.getCenter.call(this); + getCenter: function (withoutViewport) { + var center = previousMethods.getCenter.call(this); - if (this.getViewport() && !withoutViewport) { - var zoom = this.getZoom(); - var point = this.project(center, zoom); - point = point.subtract(this.getOffset()); + if (this.getViewport() && !withoutViewport) { + var zoom = this.getZoom(); + var point = this.project(center, zoom); + point = point.subtract(this.getOffset()); - center = this.unproject(point, zoom); - } + center = this.unproject(point, zoom); + } - return center; - }, + return center; + }, - setView: function (center, zoom, options) { - center = L.latLng(center); - zoom = zoom === undefined ? this._zoom : this._limitZoom(zoom); + setView: function (center, zoom, options) { + center = L.latLng(center); + zoom = zoom === undefined ? this._zoom : this._limitZoom(zoom); - if (this.getViewport()) { - var point = this.project(center, this._limitZoom(zoom)); - point = point.add(this.getOffset()); - center = this.unproject(point, this._limitZoom(zoom)); - } + if (this.getViewport()) { + var point = this.project(center, this._limitZoom(zoom)); + point = point.add(this.getOffset()); + center = this.unproject(point, this._limitZoom(zoom)); + } - return previousMethods.setView.call(this, center, zoom, options); - }, + return previousMethods.setView.call(this, center, zoom, options); + }, - setZoomAround: function (latlng, zoom, options) { - var vp = this.getViewport(); + setZoomAround: function (latlng, zoom, options) { + var vp = this.getViewport(); - if (vp) { - var scale = this.getZoomScale(zoom); - var viewHalf = this.getViewportBounds().getCenter(); - var containerPoint = latlng instanceof L.Point ? latlng : this.latLngToContainerPoint(latlng); + if (vp) { + var scale = this.getZoomScale(zoom); + var viewHalf = this.getViewportBounds().getCenter(); + var containerPoint = latlng instanceof L.Point ? latlng : this.latLngToContainerPoint(latlng); - var centerOffset = containerPoint.subtract(viewHalf).multiplyBy(1 - 1 / scale); - var newCenter = this.containerPointToLatLng(viewHalf.add(centerOffset)); + var centerOffset = containerPoint.subtract(viewHalf).multiplyBy(1 - 1 / scale); + var newCenter = this.containerPointToLatLng(viewHalf.add(centerOffset)); - return this.setView(newCenter, zoom, { zoom: options }); - } - return previousMethods.setZoomAround.call(this, latlng, zoom, options); - }, - - getBoundsZoom: function (bounds, inside, padding) { - // (LatLngBounds[, Boolean, Point]) -> Number - bounds = L.latLngBounds(bounds); - padding = L.point(padding || [0, 0]); - - var zoom = this.getZoom() || 0; - var min = this.getMinZoom(); - var max = this.getMaxZoom(); - var nw = bounds.getNorthWest(); - var se = bounds.getSouthEast(); - var vp = this.getViewport(); - var size = (vp ? L.point(vp.clientWidth, vp.clientHeight) : this.getSize()).subtract(padding); - var boundsSize = this.project(se, zoom).subtract(this.project(nw, zoom)); - var snap = L.Browser.any3d ? this.options.zoomSnap : 1; - - var scale = Math.min(size.x / boundsSize.x, size.y / boundsSize.y); - - zoom = this.getScaleZoom(scale, zoom); - - if (snap) { - zoom = Math.round(zoom / (snap / 100)) * (snap / 100); // don't jump if within 1% of a snap level - zoom = inside ? Math.ceil(zoom / snap) * snap : Math.floor(zoom / snap) * snap; - } + return this.setView(newCenter, zoom, { zoom: options }); + } + return previousMethods.setZoomAround.call(this, latlng, zoom, options); + }, - return Math.max(min, Math.min(max, zoom)); - }, - }); - - L.Map.include({ - setActiveArea: function (css, keepCenter, animate) { - var center; - if (keepCenter && this._zoom) { - // save center if map is already initialized - // and keepCenter is passed - center = this.getCenter(); - } + getBoundsZoom: function (bounds, inside, padding) { + // (LatLngBounds[, Boolean, Point]) -> Number + bounds = L.latLngBounds(bounds); + padding = L.point(padding || [0, 0]); - if (!this._viewport) { - // Make viewport if not already made - var container = this.getContainer(); - this._viewport = L.DomUtil.create("div", ""); - container.insertBefore(this._viewport, container.firstChild); - } - - if (typeof css === "string") { - this._viewport.className = css; - } else { - L.extend(this._viewport.style, css); - } - - if (center) { - this.setView(center, this.getZoom(), { animate: !!animate }); - } - return this; - }, - }); - - L.Renderer.include({ - _onZoom: function () { - this._updateTransform(this._map.getCenter(true), this._map.getZoom()); - }, - - _update: function () { - previousMethods.RendererUpdate.call(this); - this._center = this._map.getCenter(true); - }, - }); - - L.GridLayer.include({ - _updateLevels: function () { - var zoom = this._tileZoom; - var maxZoom = this.options.maxZoom; - - if (zoom === undefined) { - return undefined; - } - - for (var z in this._levels) { - if (this._levels[z].el.children.length || z === zoom) { - this._levels[z].el.style.zIndex = maxZoom - Math.abs(zoom - z); - } else { - L.DomUtil.remove(this._levels[z].el); - this._removeTilesAtZoom(z); - delete this._levels[z]; - } - } + var zoom = this.getZoom() || 0; + var min = this.getMinZoom(); + var max = this.getMaxZoom(); + var nw = bounds.getNorthWest(); + var se = bounds.getSouthEast(); + var vp = this.getViewport(); + var size = (vp ? L.point(vp.clientWidth, vp.clientHeight) : this.getSize()).subtract(padding); + var boundsSize = this.project(se, zoom).subtract(this.project(nw, zoom)); + var snap = L.Browser.any3d ? this.options.zoomSnap : 1; - var level = this._levels[zoom]; - var map = this._map; + var scale = Math.min(size.x / boundsSize.x, size.y / boundsSize.y); - if (!level) { - level = this._levels[zoom] = {}; + zoom = this.getScaleZoom(scale, zoom); - level.el = L.DomUtil.create("div", "leaflet-tile-container leaflet-zoom-animated", this._container); - level.el.style.zIndex = maxZoom; + if (snap) { + zoom = Math.round(zoom / (snap / 100)) * (snap / 100); // don't jump if within 1% of a snap level + zoom = inside ? Math.ceil(zoom / snap) * snap : Math.floor(zoom / snap) * snap; + } - level.origin = map.project(map.unproject(map.getPixelOrigin()), zoom).round(); - level.zoom = zoom; + return Math.max(min, Math.min(max, zoom)); + }, +}); - this._setZoomTransform(level, map.getCenter(true), map.getZoom()); +L.Map.include({ + setActiveArea: function (css, keepCenter, animate) { + var center; + if (keepCenter && this._zoom) { + // save center if map is already initialized + // and keepCenter is passed + center = this.getCenter(); + } + + if (!this._viewport) { + // Make viewport if not already made + var container = this.getContainer(); + this._viewport = L.DomUtil.create("div", ""); + container.insertBefore(this._viewport, container.firstChild); + } + + if (typeof css === "string") { + this._viewport.className = css; + } else { + L.extend(this._viewport.style, css); + } + + if (center) { + this.setView(center, this.getZoom(), { animate: !!animate }); + } + return this; + }, +}); - // force the browser to consider the newly added element for transition - L.Util.falseFn(level.el.offsetWidth); - } +L.Renderer.include({ + _onZoom: function () { + this._updateTransform(this._map.getCenter(true), this._map.getZoom()); + }, - this._level = level; + _update: function () { + previousMethods.RendererUpdate.call(this); + this._center = this._map.getCenter(true); + }, +}); - return level; - }, +L.GridLayer.include({ + _updateLevels: function () { + var zoom = this._tileZoom; + var maxZoom = this.options.maxZoom; - _resetView: function (e) { - var animating = e && (e.pinch || e.flyTo); - this._setView(this._map.getCenter(true), this._map.getZoom(), animating, animating); - }, + if (zoom === undefined) { + return undefined; + } - _update: function (center) { - var map = this._map; - if (!map) { - return; + for (var z in this._levels) { + if (this._levels[z].el.children.length || z === zoom) { + this._levels[z].el.style.zIndex = maxZoom - Math.abs(zoom - z); + } else { + L.DomUtil.remove(this._levels[z].el); + this._removeTilesAtZoom(z); + delete this._levels[z]; } - var zoom = map.getZoom(); + } + + var level = this._levels[zoom]; + var map = this._map; + + if (!level) { + level = this._levels[zoom] = {}; + + level.el = L.DomUtil.create("div", "leaflet-tile-container leaflet-zoom-animated", this._container); + level.el.style.zIndex = maxZoom; + + level.origin = map.project(map.unproject(map.getPixelOrigin()), zoom).round(); + level.zoom = zoom; + + this._setZoomTransform(level, map.getCenter(true), map.getZoom()); + + // force the browser to consider the newly added element for transition + L.Util.falseFn(level.el.offsetWidth); + } + + this._level = level; + + return level; + }, + + _resetView: function (e) { + var animating = e && (e.pinch || e.flyTo); + this._setView(this._map.getCenter(true), this._map.getZoom(), animating, animating); + }, + + _update: function (center) { + var map = this._map; + if (!map) { + return; + } + var zoom = map.getZoom(); + + if (center === undefined) { + center = map.getCenter(this); + } + if (this._tileZoom === undefined) { + return; + } // if out of minzoom/maxzoom + + var pixelBounds = this._getTiledPixelBounds(center); + var tileRange = this._pxBoundsToTileRange(pixelBounds); + var tileCenter = tileRange.getCenter(); + var queue = []; + + for (var key in this._tiles) { + this._tiles[key].current = false; + } + + // _update just loads more tiles. If the tile zoom level differs too much + // from the map's, let _setView reset levels and prune old tiles. + if (Math.abs(zoom - this._tileZoom) > 1) { + this._setView(center, zoom); + return; + } + + // create a queue of coordinates to load tiles from + for (var j = tileRange.min.y; j <= tileRange.max.y; j++) { + for (var i = tileRange.min.x; i <= tileRange.max.x; i++) { + var coords = new L.Point(i, j); + coords.z = this._tileZoom; + + if (!this._isValidTile(coords)) { + continue; + } - if (center === undefined) { - center = map.getCenter(this); + var tile = this._tiles[this._tileCoordsToKey(coords)]; + if (tile) { + tile.current = true; + } else { + queue.push(coords); + } } - if (this._tileZoom === undefined) { - return; - } // if out of minzoom/maxzoom - - var pixelBounds = this._getTiledPixelBounds(center); - var tileRange = this._pxBoundsToTileRange(pixelBounds); - var tileCenter = tileRange.getCenter(); - var queue = []; - - for (var key in this._tiles) { - this._tiles[key].current = false; + } + + // sort tile queue to load tiles in order of their distance to center + queue.sort(function (a, b) { + return a.distanceTo(tileCenter) - b.distanceTo(tileCenter); + }); + + if (queue.length !== 0) { + // if its the first batch of tiles to load + if (!this._loading) { + this._loading = true; + // @event loading: Event + // Fired when the grid layer starts loading tiles + this.fire("loading"); } - // _update just loads more tiles. If the tile zoom level differs too much - // from the map's, let _setView reset levels and prune old tiles. - if (Math.abs(zoom - this._tileZoom) > 1) { - this._setView(center, zoom); - return; - } + // create DOM fragment to append tiles in one batch + var fragment = document.createDocumentFragment(); - // create a queue of coordinates to load tiles from - for (var j = tileRange.min.y; j <= tileRange.max.y; j++) { - for (var i = tileRange.min.x; i <= tileRange.max.x; i++) { - var coords = new L.Point(i, j); - coords.z = this._tileZoom; - - if (!this._isValidTile(coords)) { - continue; - } - - var tile = this._tiles[this._tileCoordsToKey(coords)]; - if (tile) { - tile.current = true; - } else { - queue.push(coords); - } - } + for (i = 0; i < queue.length; i++) { + this._addTile(queue[i], fragment); } - // sort tile queue to load tiles in order of their distance to center - queue.sort(function (a, b) { - return a.distanceTo(tileCenter) - b.distanceTo(tileCenter); - }); - - if (queue.length !== 0) { - // if its the first batch of tiles to load - if (!this._loading) { - this._loading = true; - // @event loading: Event - // Fired when the grid layer starts loading tiles - this.fire("loading"); - } - - // create DOM fragment to append tiles in one batch - var fragment = document.createDocumentFragment(); - - for (i = 0; i < queue.length; i++) { - this._addTile(queue[i], fragment); - } - - this._level.el.appendChild(fragment); - } - }, - }); + this._level.el.appendChild(fragment); + } + }, }); diff --git a/lib/map/button.js b/lib/map/button.js index e0a429cd..11cc988c 100644 --- a/lib/map/button.js +++ b/lib/map/button.js @@ -1,158 +1,154 @@ -define(["map/clientlayer", "map/labellayer", "leaflet", "map/locationmarker"], function ( - ClientLayer, - LabelLayer, - L, - LocationMarker, -) { - "use strict"; - var self = {}; - - var ButtonBase = L.Control.extend({ - options: { - position: "bottomright", - }, - - active: false, - button: undefined, - - initialize: function (f, o) { - L.Util.setOptions(this, o); - this.f = f; - }, - - update: function () { - this.button.classList.toggle("active", this.active); - }, - - set: function (v) { - this.active = v; - this.update(); - }, - }); +import * as L from "leaflet"; - var LocateButton = ButtonBase.extend({ - onAdd: function () { - var button = L.DomUtil.create("button", "ion-locate"); - button.setAttribute("aria-label", _.t("button.tracking")); - L.DomEvent.disableClickPropagation(button); - L.DomEvent.addListener(button, "click", this.onClick, this); +import { LocationMarker } from "./locationmarker"; - this.button = button; +var self = {}; - return button; - }, +var ButtonBase = L.Control.extend({ + options: { + position: "bottomright", + }, - onClick: function () { - this.f(!this.active); - }, - }); + active: false, + button: undefined, - var CoordsPickerButton = ButtonBase.extend({ - onAdd: function () { - var button = L.DomUtil.create("button", "ion-pin"); - button.setAttribute("aria-label", _.t("button.location")); + initialize: function (f, o) { + L.Util.setOptions(this, o); + this.f = f; + }, - // Click propagation isn't disabled as this causes problems with the - // location picking mode; instead propagation is stopped in onClick(). - L.DomEvent.addListener(button, "click", this.onClick, this); + update: function () { + this.button.classList.toggle("active", this.active); + }, - this.button = button; + set: function (v) { + this.active = v; + this.update(); + }, +}); - return button; - }, +var LocateButton = ButtonBase.extend({ + onAdd: function () { + var button = L.DomUtil.create("button", "ion-locate"); + button.setAttribute("aria-label", _.t("button.tracking")); + L.DomEvent.disableClickPropagation(button); + L.DomEvent.addListener(button, "click", this.onClick, this); - onClick: function (e) { - L.DomEvent.stopPropagation(e); - this.f(!this.active); - }, - }); + this.button = button; - return function (map, buttons) { - var userLocation; + return button; + }, - var locateUserButton = new LocateButton(function (d) { - if (d) { - enableTracking(); - } else { - self.disableTracking(); - } - }); + onClick: function () { + this.f(!this.active); + }, +}); - var mybuttons = []; +var CoordsPickerButton = ButtonBase.extend({ + onAdd: function () { + var button = L.DomUtil.create("button", "ion-pin"); + button.setAttribute("aria-label", _.t("button.location")); - function addButton(button) { - var el = button.onAdd(); - mybuttons.push(el); - buttons.appendChild(el); - } + // Click propagation isn't disabled as this causes problems with the + // location picking mode; instead propagation is stopped in onClick(). + L.DomEvent.addListener(button, "click", this.onClick, this); - self.clearButtons = function clearButtons() { - mybuttons.forEach(function (d) { - buttons.removeChild(d); - }); - }; - - var showCoordsPickerButton = new CoordsPickerButton(function (d) { - if (d) { - enableCoords(); - } else { - disableCoords(); - } - }); + this.button = button; - function enableTracking() { - map.locate({ - watch: true, - enableHighAccuracy: true, - setView: true, - }); - locateUserButton.set(true); - } + return button; + }, - self.disableTracking = function disableTracking() { - map.stopLocate(); - self.locationError(); - locateUserButton.set(false); - }; + onClick: function (e) { + L.DomEvent.stopPropagation(e); + this.f(!this.active); + }, +}); - function enableCoords() { - map.getContainer().classList.add("pick-coordinates"); - map.on("click", showCoordinates); - showCoordsPickerButton.set(true); - } +export const Button = function (map, buttons) { + var userLocation; - function disableCoords() { - map.getContainer().classList.remove("pick-coordinates"); - map.off("click", showCoordinates); - showCoordsPickerButton.set(false); + var locateUserButton = new LocateButton(function (d) { + if (d) { + enableTracking(); + } else { + self.disableTracking(); } + }); + + var mybuttons = []; + + function addButton(button) { + var el = button.onAdd(); + mybuttons.push(el); + buttons.appendChild(el); + } - function showCoordinates(e) { - router.fullUrl({ zoom: map.getZoom(), lat: e.latlng.lat, lng: e.latlng.lng }); + self.clearButtons = function clearButtons() { + mybuttons.forEach(function (d) { + buttons.removeChild(d); + }); + }; + + var showCoordsPickerButton = new CoordsPickerButton(function (d) { + if (d) { + enableCoords(); + } else { disableCoords(); } + }); - self.locationFound = function locationFound(e) { - if (!userLocation) { - userLocation = new LocationMarker(e.latlng).addTo(map); - } + function enableTracking() { + map.locate({ + watch: true, + enableHighAccuracy: true, + setView: true, + }); + locateUserButton.set(true); + } - userLocation.setLatLng(e.latlng); - userLocation.setAccuracy(e.accuracy); - }; + self.disableTracking = function disableTracking() { + map.stopLocate(); + self.locationError(); + locateUserButton.set(false); + }; - self.locationError = function locationError() { - if (userLocation) { - map.removeLayer(userLocation); - userLocation = null; - } - }; + function enableCoords() { + map.getContainer().classList.add("pick-coordinates"); + map.on("click", showCoordinates); + showCoordsPickerButton.set(true); + } + + function disableCoords() { + map.getContainer().classList.remove("pick-coordinates"); + map.off("click", showCoordinates); + showCoordsPickerButton.set(false); + } + + function showCoordinates(e) { + router.fullUrl({ zoom: map.getZoom(), lat: e.latlng.lat, lng: e.latlng.lng }); + disableCoords(); + } + + self.locationFound = function locationFound(e) { + if (!userLocation) { + userLocation = new LocationMarker(e.latlng).addTo(map); + } - self.init = function init() { - addButton(locateUserButton); - addButton(showCoordsPickerButton); - }; + userLocation.setLatLng(e.latlng); + userLocation.setAccuracy(e.accuracy); + }; - return self; + self.locationError = function locationError() { + if (userLocation) { + map.removeLayer(userLocation); + userLocation = null; + } }; -}); + + self.init = function init() { + addButton(locateUserButton); + addButton(showCoordsPickerButton); + }; + + return self; +}; diff --git a/lib/map/clientlayer.js b/lib/map/clientlayer.js index e660cc72..62ed9e30 100644 --- a/lib/map/clientlayer.js +++ b/lib/map/clientlayer.js @@ -1,63 +1,64 @@ -define(["leaflet", "rbush", "helper"], function (L, RBush, helper) { - "use strict"; +import * as L from "leaflet"; +import RBush from "rbush"; - return L.GridLayer.extend({ - mapRTree: function mapRTree(d) { - return { - minX: d.location.latitude, - minY: d.location.longitude, - maxX: d.location.latitude, - maxY: d.location.longitude, - node: d, - }; - }, - setData: function (data) { - var rtreeOnlineAll = new RBush(9); +import * as helper from "../utils/helper"; - this.data = rtreeOnlineAll.load(data.nodes.online.filter(helper.hasLocation).map(this.mapRTree)); +export const ClientLayer = L.GridLayer.extend({ + mapRTree: function mapRTree(d) { + return { + minX: d.location.latitude, + minY: d.location.longitude, + maxX: d.location.latitude, + maxY: d.location.longitude, + node: d, + }; + }, + setData: function (data) { + var rtreeOnlineAll = new RBush(9); - // pre-calculate start angles - this.data.all().forEach(function (n) { - n.startAngle = (parseInt(n.node.node_id.substr(10, 2), 16) / 255) * 2 * Math.PI; - }); - this.redraw(); - }, - createTile: function (tilePoint) { - var tile = L.DomUtil.create("canvas", "leaflet-tile"); + this.data = rtreeOnlineAll.load(data.nodes.online.filter(helper.hasLocation).map(this.mapRTree)); - var tileSize = this.options.tileSize; - tile.width = tileSize; - tile.height = tileSize; + // pre-calculate start angles + this.data.all().forEach(function (n) { + n.startAngle = (parseInt(n.node.node_id.substr(10, 2), 16) / 255) * 2 * Math.PI; + }); + this.redraw(); + }, + createTile: function (tilePoint) { + var tile = L.DomUtil.create("canvas", "leaflet-tile"); - if (!this.data) { - return tile; - } + var tileSize = this.options.tileSize; + tile.width = tileSize; + tile.height = tileSize; - var ctx = tile.getContext("2d"); - var s = tilePoint.multiplyBy(tileSize); - var map = this._map; + if (!this.data) { + return tile; + } + + var ctx = tile.getContext("2d"); + var s = tilePoint.multiplyBy(tileSize); + var map = this._map; - var margin = 50; - var bbox = helper.getTileBBox(s, map, tileSize, margin); + var margin = 50; + var bbox = helper.getTileBBox(s, map, tileSize, margin); - var nodes = this.data.search(bbox); + var nodes = this.data.search(bbox); - if (nodes.length === 0) { - return tile; - } + if (nodes.length === 0) { + return tile; + } - var startDistance = 10; + var startDistance = 10; - nodes.forEach(function (d) { - var p = map.project([d.node.location.latitude, d.node.location.longitude]); + nodes.forEach(function (d) { + var p = map.project([d.node.location.latitude, d.node.location.longitude]); - p.x -= s.x; - p.y -= s.y; + p.x -= s.x; + p.y -= s.y; - helper.positionClients(ctx, p, d.startAngle, d.node, startDistance); - }); + helper.positionClients(ctx, p, d.startAngle, d.node, startDistance); + }); - return tile; - }, - }); + return tile; + }, }); diff --git a/lib/map/labellayer.js b/lib/map/labellayer.js index d46ba1d9..256006eb 100644 --- a/lib/map/labellayer.js +++ b/lib/map/labellayer.js @@ -1,385 +1,387 @@ -define(["leaflet", "rbush", "helper", "moment"], function (L, RBush, helper, moment) { - "use strict"; - - var groupOnline; - var groupOffline; - var groupNew; - var groupLost; - var groupLines; - - var labelLocations = [ - ["left", "middle", 0 / 8], - ["center", "top", 6 / 8], - ["right", "middle", 4 / 8], - ["left", "top", 7 / 8], - ["left", "ideographic", 1 / 8], - ["right", "top", 5 / 8], - ["center", "ideographic", 2 / 8], - ["right", "ideographic", 3 / 8], - ]; - var labelShadow; - var bodyStyle = { fontFamily: "sans-serif" }; - var nodeRadius = 4; - - var cFont = document.createElement("canvas").getContext("2d"); - - function measureText(font, text) { - cFont.font = font; - return cFont.measureText(text); - } - - function mapRTree(d) { - return { minX: d.position.lat, minY: d.position.lng, maxX: d.position.lat, maxY: d.position.lng, label: d }; - } - - function prepareLabel(fillStyle, fontSize, offset, stroke) { - return function (d) { - var font = fontSize + "px " + bodyStyle.fontFamily; - return { - position: L.latLng(d.location.latitude, d.location.longitude), - label: d.hostname, - offset: offset, - fillStyle: fillStyle, - height: fontSize * 1.2, - font: font, - stroke: stroke, - width: measureText(font, d.hostname).width, - }; +import * as L from "leaflet"; +import moment from "moment"; + +import * as helper from "../utils/helper"; +import RBush from "rbush"; + +var groupOnline; +var groupOffline; +var groupNew; +var groupLost; +var groupLines; + +var labelLocations = [ + ["left", "middle", 0 / 8], + ["center", "top", 6 / 8], + ["right", "middle", 4 / 8], + ["left", "top", 7 / 8], + ["left", "ideographic", 1 / 8], + ["right", "top", 5 / 8], + ["center", "ideographic", 2 / 8], + ["right", "ideographic", 3 / 8], +]; +var labelShadow; +var bodyStyle = { fontFamily: "sans-serif" }; +var nodeRadius = 4; + +var cFont = document.createElement("canvas").getContext("2d"); + +function measureText(font, text) { + cFont.font = font; + return cFont.measureText(text); +} + +function mapRTree(d) { + return { minX: d.position.lat, minY: d.position.lng, maxX: d.position.lat, maxY: d.position.lng, label: d }; +} + +function prepareLabel(fillStyle, fontSize, offset, stroke) { + return function (d) { + var font = fontSize + "px " + bodyStyle.fontFamily; + return { + position: L.latLng(d.location.latitude, d.location.longitude), + label: d.hostname, + offset: offset, + fillStyle: fillStyle, + height: fontSize * 1.2, + font: font, + stroke: stroke, + width: measureText(font, d.hostname).width, }; - } - - function calcOffset(offset, loc) { - return [offset * Math.cos(loc[2] * 2 * Math.PI), offset * Math.sin(loc[2] * 2 * Math.PI)]; - } - - function labelRect(p, offset, anchor, label, minZoom, maxZoom, z) { - var margin = 1 + 1.41 * (1 - (z - minZoom) / (maxZoom - minZoom)); - - var width = label.width * margin; - var height = label.height * margin; + }; +} - var dx = { - left: 0, - right: -width, - center: -width / 2, - }; +function calcOffset(offset, loc) { + return [offset * Math.cos(loc[2] * 2 * Math.PI), offset * Math.sin(loc[2] * 2 * Math.PI)]; +} - var dy = { - top: 0, - ideographic: -height, - middle: -height / 2, - }; +function labelRect(p, offset, anchor, label, minZoom, maxZoom, z) { + var margin = 1 + 1.41 * (1 - (z - minZoom) / (maxZoom - minZoom)); - var x = p.x + offset[0] + dx[anchor[0]]; - var y = p.y + offset[1] + dy[anchor[1]]; + var width = label.width * margin; + var height = label.height * margin; - return { minX: x, minY: y, maxX: x + width, maxY: y + height }; - } + var dx = { + left: 0, + right: -width, + center: -width / 2, + }; - function mkMarker(dict, iconFunc) { - return function (d) { - var m = L.circleMarker([d.location.latitude, d.location.longitude], iconFunc(d)); + var dy = { + top: 0, + ideographic: -height, + middle: -height / 2, + }; - m.resetStyle = function resetStyle() { - m.setStyle(iconFunc(d)); - }; + var x = p.x + offset[0] + dx[anchor[0]]; + var y = p.y + offset[1] + dy[anchor[1]]; - m.on("click", function () { - router.fullUrl({ node: d.node_id }); - }); - m.bindTooltip(helper.escape(d.hostname)); + return { minX: x, minY: y, maxX: x + width, maxY: y + height }; +} - dict[d.node_id] = m; +function mkMarker(dict, iconFunc) { + return function (d) { + var m = L.circleMarker([d.location.latitude, d.location.longitude], iconFunc(d)); - return m; + m.resetStyle = function resetStyle() { + m.setStyle(iconFunc(d)); }; - } - function addLinksToMap(dict, linkScale, graph) { - graph = graph.filter(function (d) { - return "distance" in d && d.type.indexOf("vpn") !== 0; + m.on("click", function () { + router.fullUrl({ node: d.node_id }); }); + m.bindTooltip(helper.escape(d.hostname)); - return graph.map(function (d) { - var opts = { - color: linkScale((d.source_tq + d.target_tq) / 2), - weight: 4, - opacity: 0.5, - dashArray: "none", - }; - - var line = L.polyline(d.latlngs, opts); + dict[d.node_id] = m; - line.resetStyle = function resetStyle() { - line.setStyle(opts); - }; + return m; + }; +} - line.bindTooltip( - helper.escape(d.source.hostname + " – " + d.target.hostname) + - "
" + - helper.showDistance(d) + - " / " + - helper.showTq(d.source_tq) + - " - " + - helper.showTq(d.target_tq) + - "
" + - d.type + - "
", - ); - - line.on("click", function () { - router.fullUrl({ link: d.id }); - }); - - dict[d.id] = line; +function addLinksToMap(dict, linkScale, graph) { + graph = graph.filter(function (d) { + return "distance" in d && d.type.indexOf("vpn") !== 0; + }); - return line; - }); - } + return graph.map(function (d) { + var opts = { + color: linkScale((d.source_tq + d.target_tq) / 2), + weight: 4, + opacity: 0.5, + dashArray: "none", + }; - function getIcon(color) { - return Object.assign({}, config.icon.base, config.icon[color]); - } + var line = L.polyline(d.latlngs, opts); - return L.GridLayer.extend({ - onAdd: function (map) { - L.GridLayer.prototype.onAdd.call(this, map); - if (this.data) { - this.prepareLabels(); - } - }, - setData: function (data, map, nodeDict, linkDict, linkScale) { - var iconOnline = getIcon("online"); - var iconOffline = getIcon("offline"); - var iconLost = getIcon("lost"); - var iconAlert = getIcon("alert"); - var iconNew = getIcon("new"); - var iconOnlineUplink = Object.assign({}, iconOnline, config.icon["online.uplink"]); - var iconNewUplink = Object.assign({}, iconNew, config.icon["new.uplink"]); - - // Check if init or data is already set - if (groupLines) { - groupOffline.clearLayers(); - groupOnline.clearLayers(); - groupNew.clearLayers(); - groupLost.clearLayers(); - groupLines.clearLayers(); - } + line.resetStyle = function resetStyle() { + line.setStyle(opts); + }; - var lines = addLinksToMap(linkDict, linkScale, data.links); - groupLines = L.featureGroup(lines).addTo(map); + line.bindTooltip( + helper.escape(d.source.hostname + " – " + d.target.hostname) + + "
" + + helper.showDistance(d) + + " / " + + helper.showTq(d.source_tq) + + " - " + + helper.showTq(d.target_tq) + + "
" + + d.type + + "
", + ); + + line.on("click", function () { + router.fullUrl({ link: d.id }); + }); - var nodesOnline = helper.subtract(data.nodes.online, data.nodes.new).filter(helper.hasLocation); - var nodesOffline = helper.subtract(data.nodes.offline, data.nodes.lost).filter(helper.hasLocation); - var nodesNew = data.nodes.new.filter(helper.hasLocation); - var nodesLost = data.nodes.lost.filter(helper.hasLocation); + dict[d.id] = line; - var markersOnline = nodesOnline.map( - mkMarker(nodeDict, function (d) { - if (helper.hasUplink(d)) { - return iconOnlineUplink; - } - return iconOnline; - }), - ); - - var markersOffline = nodesOffline.map( - mkMarker(nodeDict, function () { - return iconOffline; - }), - ); - - var markersNew = nodesNew.map( - mkMarker(nodeDict, function (d) { - if (helper.hasUplink(d)) { - return iconNewUplink; - } - return iconNew; - }), - ); - - var markersLost = nodesLost.map( - mkMarker(nodeDict, function (d) { - var age = moment(data.now).diff(d.lastseen, "days", true); - if (age <= config.maxAgeAlert) { - return iconAlert; - } - if (age <= config.maxAge) { - return iconLost; - } - return null; - }), - ); - - groupOffline = L.featureGroup(markersOffline).addTo(map); - groupLost = L.featureGroup(markersLost).addTo(map); - groupOnline = L.featureGroup(markersOnline).addTo(map); - groupNew = L.featureGroup(markersNew).addTo(map); - - this.data = { - online: nodesOnline, - offline: nodesOffline, - new: nodesNew, - lost: nodesLost, + return line; + }); +} + +function getIcon(color) { + return Object.assign({}, config.icon.base, config.icon[color]); +} + +export const LabelLayer = L.GridLayer.extend({ + onAdd: function (map) { + L.GridLayer.prototype.onAdd.call(this, map); + if (this.data) { + this.prepareLabels(); + } + }, + setData: function (data, map, nodeDict, linkDict, linkScale) { + var iconOnline = getIcon("online"); + var iconOffline = getIcon("offline"); + var iconLost = getIcon("lost"); + var iconAlert = getIcon("alert"); + var iconNew = getIcon("new"); + var iconOnlineUplink = Object.assign({}, iconOnline, config.icon["online.uplink"]); + var iconNewUplink = Object.assign({}, iconNew, config.icon["new.uplink"]); + + // Check if init or data is already set + if (groupLines) { + groupOffline.clearLayers(); + groupOnline.clearLayers(); + groupNew.clearLayers(); + groupLost.clearLayers(); + groupLines.clearLayers(); + } + + var lines = addLinksToMap(linkDict, linkScale, data.links); + groupLines = L.featureGroup(lines).addTo(map); + + var nodesOnline = helper.subtract(data.nodes.online, data.nodes.new).filter(helper.hasLocation); + var nodesOffline = helper.subtract(data.nodes.offline, data.nodes.lost).filter(helper.hasLocation); + var nodesNew = data.nodes.new.filter(helper.hasLocation); + var nodesLost = data.nodes.lost.filter(helper.hasLocation); + + var markersOnline = nodesOnline.map( + mkMarker(nodeDict, function (d) { + if (helper.hasUplink(d)) { + return iconOnlineUplink; + } + return iconOnline; + }), + ); + + var markersOffline = nodesOffline.map( + mkMarker(nodeDict, function () { + return iconOffline; + }), + ); + + var markersNew = nodesNew.map( + mkMarker(nodeDict, function (d) { + if (helper.hasUplink(d)) { + return iconNewUplink; + } + return iconNew; + }), + ); + + var markersLost = nodesLost.map( + mkMarker(nodeDict, function (d) { + var age = moment(data.now).diff(d.lastseen, "days", true); + if (age <= config.maxAgeAlert) { + return iconAlert; + } + if (age <= config.maxAge) { + return iconLost; + } + return null; + }), + ); + + groupOffline = L.featureGroup(markersOffline).addTo(map); + groupLost = L.featureGroup(markersLost).addTo(map); + groupOnline = L.featureGroup(markersOnline).addTo(map); + groupNew = L.featureGroup(markersNew).addTo(map); + + this.data = { + online: nodesOnline, + offline: nodesOffline, + new: nodesNew, + lost: nodesLost, + }; + this.updateLayer(); + }, + updateLayer: function () { + if (this._map) { + this.prepareLabels(); + } + }, + prepareLabels: function () { + var d = this.data; + + // label: + // - position (WGS84 coords) + // - offset (2D vector in pixels) + // - anchor (tuple, textAlignment, textBaseline) + // - minZoom (inclusive) + // - label (string) + // - color (string) + + var labelsOnline = d.online.map(prepareLabel(null, 11, 8, true)); + var labelsOffline = d.offline.map(prepareLabel(config.icon.offline.color, 9, 5, false)); + var labelsNew = d.new.map(prepareLabel(config.map.labelNewColor, 11, 8, true)); + var labelsLost = d.lost.map(prepareLabel(config.icon.lost.color, 11, 8, true)); + + var labels = [].concat(labelsNew).concat(labelsLost).concat(labelsOnline).concat(labelsOffline); + + var minZoom = this.options.minZoom; + var maxZoom = this.options.maxZoom; + + var trees = []; + + var map = this._map; + + function nodeToRect(z) { + return function (n) { + var p = map.project(n.position, z); + return { minX: p.x - nodeRadius, minY: p.y - nodeRadius, maxX: p.x + nodeRadius, maxY: p.y + nodeRadius }; }; - this.updateLayer(); - }, - updateLayer: function () { - if (this._map) { - this.prepareLabels(); - } - }, - prepareLabels: function () { - var d = this.data; - - // label: - // - position (WGS84 coords) - // - offset (2D vector in pixels) - // - anchor (tuple, textAlignment, textBaseline) - // - minZoom (inclusive) - // - label (string) - // - color (string) - - var labelsOnline = d.online.map(prepareLabel(null, 11, 8, true)); - var labelsOffline = d.offline.map(prepareLabel(config.icon.offline.color, 9, 5, false)); - var labelsNew = d.new.map(prepareLabel(config.map.labelNewColor, 11, 8, true)); - var labelsLost = d.lost.map(prepareLabel(config.icon.lost.color, 11, 8, true)); - - var labels = [].concat(labelsNew).concat(labelsLost).concat(labelsOnline).concat(labelsOffline); + } - var minZoom = this.options.minZoom; - var maxZoom = this.options.maxZoom; + for (var z = minZoom; z <= maxZoom; z++) { + trees[z] = new RBush(9); + trees[z].load(labels.map(nodeToRect(z))); + } - var trees = []; + labels = labels + .map(function (n) { + var best = labelLocations + .map(function (loc) { + var offset = calcOffset(n.offset, loc); + var i; - var map = this._map; - - function nodeToRect(z) { - return function (n) { - var p = map.project(n.position, z); - return { minX: p.x - nodeRadius, minY: p.y - nodeRadius, maxX: p.x + nodeRadius, maxY: p.y + nodeRadius }; - }; - } - - for (var z = minZoom; z <= maxZoom; z++) { - trees[z] = new RBush(9); - trees[z].load(labels.map(nodeToRect(z))); - } + for (i = maxZoom; i >= minZoom; i--) { + var p = map.project(n.position, i); + var rect = labelRect(p, offset, loc, n, minZoom, maxZoom, i); + var candidates = trees[i].search(rect); - labels = labels - .map(function (n) { - var best = labelLocations - .map(function (loc) { - var offset = calcOffset(n.offset, loc); - var i; - - for (i = maxZoom; i >= minZoom; i--) { - var p = map.project(n.position, i); - var rect = labelRect(p, offset, loc, n, minZoom, maxZoom, i); - var candidates = trees[i].search(rect); - - if (candidates.length > 0) { - break; - } + if (candidates.length > 0) { + break; } - - return { loc: loc, z: i + 1 }; - }) - .filter(function (k) { - return k.z <= maxZoom; - }) - .sort(function (a, b) { - return a.z - b.z; - })[0]; - - if (best !== undefined) { - n.offset = calcOffset(n.offset, best.loc); - n.minZoom = best.z; - n.anchor = best.loc; - - for (var i = maxZoom; i >= best.z; i--) { - var p = map.project(n.position, i); - var rect = labelRect(p, n.offset, best.loc, n, minZoom, maxZoom, i); - trees[i].insert(rect); } - return n; + return { loc: loc, z: i + 1 }; + }) + .filter(function (k) { + return k.z <= maxZoom; + }) + .sort(function (a, b) { + return a.z - b.z; + })[0]; + + if (best !== undefined) { + n.offset = calcOffset(n.offset, best.loc); + n.minZoom = best.z; + n.anchor = best.loc; + + for (var i = maxZoom; i >= best.z; i--) { + var p = map.project(n.position, i); + var rect = labelRect(p, n.offset, best.loc, n, minZoom, maxZoom, i); + trees[i].insert(rect); } - return undefined; - }) - .filter(function (n) { - return n !== undefined; - }); - this.margin = 16; + return n; + } + return undefined; + }) + .filter(function (n) { + return n !== undefined; + }); - if (labels.length > 0) { - this.margin += labels - .map(function (n) { - return n.width; - }) - .sort() - .reverse()[0]; - } + this.margin = 16; - this.labels = new RBush(9); - this.labels.load(labels.map(mapRTree)); + if (labels.length > 0) { + this.margin += labels + .map(function (n) { + return n.width; + }) + .sort() + .reverse()[0]; + } - this.redraw(); - }, - createTile: function (tilePoint) { - var tile = L.DomUtil.create("canvas", "leaflet-tile"); + this.labels = new RBush(9); + this.labels.load(labels.map(mapRTree)); - var tileSize = this.options.tileSize; - tile.width = tileSize; - tile.height = tileSize; + this.redraw(); + }, + createTile: function (tilePoint) { + var tile = L.DomUtil.create("canvas", "leaflet-tile"); - if (!this.labels) { - return tile; - } + var tileSize = this.options.tileSize; + tile.width = tileSize; + tile.height = tileSize; - var s = tilePoint.multiplyBy(tileSize); - var map = this._map; - bodyStyle = window.getComputedStyle(document.querySelector("body")); - labelShadow = bodyStyle.backgroundColor.replace(/rgb/i, "rgba").replace(/\)/i, ",0.7)"); + if (!this.labels) { + return tile; + } - function projectNodes(d) { - var p = map.project(d.label.position); + var s = tilePoint.multiplyBy(tileSize); + var map = this._map; + bodyStyle = window.getComputedStyle(document.querySelector("body")); + labelShadow = bodyStyle.backgroundColor.replace(/rgb/i, "rgba").replace(/\)/i, ",0.7)"); - p.x -= s.x; - p.y -= s.y; + function projectNodes(d) { + var p = map.project(d.label.position); - return { p: p, label: d.label }; - } + p.x -= s.x; + p.y -= s.y; - var bbox = helper.getTileBBox(s, map, tileSize, this.margin); - var labels = this.labels.search(bbox).map(projectNodes); - var ctx = tile.getContext("2d"); + return { p: p, label: d.label }; + } - ctx.lineWidth = 5; - ctx.strokeStyle = labelShadow; - ctx.miterLimit = 2; + var bbox = helper.getTileBBox(s, map, tileSize, this.margin); + var labels = this.labels.search(bbox).map(projectNodes); + var ctx = tile.getContext("2d"); - function drawLabel(d) { - ctx.font = d.label.font; - ctx.textAlign = d.label.anchor[0]; - ctx.textBaseline = d.label.anchor[1]; - ctx.fillStyle = d.label.fillStyle === null ? bodyStyle.color : d.label.fillStyle; + ctx.lineWidth = 5; + ctx.strokeStyle = labelShadow; + ctx.miterLimit = 2; - if (d.label.stroke) { - ctx.strokeText(d.label.label, d.p.x + d.label.offset[0], d.p.y + d.label.offset[1]); - } + function drawLabel(d) { + ctx.font = d.label.font; + ctx.textAlign = d.label.anchor[0]; + ctx.textBaseline = d.label.anchor[1]; + ctx.fillStyle = d.label.fillStyle === null ? bodyStyle.color : d.label.fillStyle; - ctx.fillText(d.label.label, d.p.x + d.label.offset[0], d.p.y + d.label.offset[1]); + if (d.label.stroke) { + ctx.strokeText(d.label.label, d.p.x + d.label.offset[0], d.p.y + d.label.offset[1]); } - labels - .filter(function (d) { - return tilePoint.z >= d.label.minZoom; - }) - .forEach(drawLabel); + ctx.fillText(d.label.label, d.p.x + d.label.offset[0], d.p.y + d.label.offset[1]); + } - return tile; - }, - }); + labels + .filter(function (d) { + return tilePoint.z >= d.label.minZoom; + }) + .forEach(drawLabel); + + return tile; + }, }); diff --git a/lib/map/locationmarker.js b/lib/map/locationmarker.js index f530c84e..64940e5f 100644 --- a/lib/map/locationmarker.js +++ b/lib/map/locationmarker.js @@ -1,32 +1,30 @@ -define(["leaflet"], function (L) { - "use strict"; +import * as L from "leaflet"; - return L.CircleMarker.extend({ - initialize: function (latlng) { - this.accuracyCircle = L.circle(latlng, 0, config.locate.accuracyCircle); - this.outerCircle = L.circleMarker(latlng, config.locate.outerCircle); - L.CircleMarker.prototype.initialize.call(this, latlng, config.locate.innerCircle); +export const LocationMarker = L.CircleMarker.extend({ + initialize: function (latlng) { + this.accuracyCircle = L.circle(latlng, 0, config.locate.accuracyCircle); + this.outerCircle = L.circleMarker(latlng, config.locate.outerCircle); + L.CircleMarker.prototype.initialize.call(this, latlng, config.locate.innerCircle); - this.on("remove", function () { - this._map.removeLayer(this.accuracyCircle); - this._map.removeLayer(this.outerCircle); - }); - }, + this.on("remove", function () { + this._map.removeLayer(this.accuracyCircle); + this._map.removeLayer(this.outerCircle); + }); + }, - setLatLng: function (latlng) { - this.accuracyCircle.setLatLng(latlng); - this.outerCircle.setLatLng(latlng); - L.CircleMarker.prototype.setLatLng.call(this, latlng); - }, + setLatLng: function (latlng) { + this.accuracyCircle.setLatLng(latlng); + this.outerCircle.setLatLng(latlng); + L.CircleMarker.prototype.setLatLng.call(this, latlng); + }, - setAccuracy: function (accuracy) { - this.accuracyCircle.setRadius(accuracy); - }, + setAccuracy: function (accuracy) { + this.accuracyCircle.setRadius(accuracy); + }, - onAdd: function (map) { - this.accuracyCircle.addTo(map).bringToBack(); - this.outerCircle.addTo(map); - L.CircleMarker.prototype.onAdd.call(this, map); - }, - }); + onAdd: function (map) { + this.accuracyCircle.addTo(map).bringToBack(); + this.outerCircle.addTo(map); + L.CircleMarker.prototype.onAdd.call(this, map); + }, }); diff --git a/lib/nodelist.js b/lib/nodelist.js index 536e4053..dec57595 100644 --- a/lib/nodelist.js +++ b/lib/nodelist.js @@ -1,112 +1,112 @@ -define(["sorttable", "snabbdom", "helper"], function (SortTable, V, helper) { - "use strict"; - V = V.default; +import V from "snabbdom/dist/snabbdom-patch"; - function showUptime(uptime) { - // 1000ms are 1 second and 60 second are 1min: 60 * 1000 = 60000 - var s = uptime / 60000; - if (Math.abs(s) < 60) { - return Math.round(s) + " m"; - } - s /= 60; - if (Math.abs(s) < 24) { - return Math.round(s) + " h"; - } - s /= 24; - return Math.round(s) + " d"; +import { SortTable } from "./sorttable"; +import * as helper from "./utils/helper"; + +function showUptime(uptime) { + // 1000ms are 1 second and 60 second are 1min: 60 * 1000 = 60000 + var s = uptime / 60000; + if (Math.abs(s) < 60) { + return Math.round(s) + " m"; } + s /= 60; + if (Math.abs(s) < 24) { + return Math.round(s) + " h"; + } + s /= 24; + return Math.round(s) + " d"; +} - var headings = [ - { - name: "", +var headings = [ + { + name: "", + }, + { + name: "node.nodes", + sort: function (a, b) { + return a.hostname.localeCompare(b.hostname); }, - { - name: "node.nodes", - sort: function (a, b) { - return a.hostname.localeCompare(b.hostname); - }, - reverse: false, + reverse: false, + }, + { + name: "node.uptime", + class: "ion-time", + sort: function (a, b) { + return a.uptime - b.uptime; }, - { - name: "node.uptime", - class: "ion-time", - sort: function (a, b) { - return a.uptime - b.uptime; - }, - reverse: true, - }, - { - name: "node.links", - class: "ion-share-alt", - sort: function (a, b) { - return a.neighbours.length - b.neighbours.length; - }, - reverse: true, + reverse: true, + }, + { + name: "node.links", + class: "ion-share-alt", + sort: function (a, b) { + return a.neighbours.length - b.neighbours.length; }, - { - name: "node.clients", - class: "ion-people", - sort: function (a, b) { - return a.clients - b.clients; - }, - reverse: true, + reverse: true, + }, + { + name: "node.clients", + class: "ion-people", + sort: function (a, b) { + return a.clients - b.clients; }, - ]; + reverse: true, + }, +]; - return function () { - function renderRow(d) { - var td0Content = ""; - if (helper.hasLocation(d)) { - td0Content = V.h("span", { props: { className: "icon ion-location", title: _.t("location.location") } }); - } +export const Nodelist = function () { + function renderRow(d) { + var td0Content = ""; + if (helper.hasLocation(d)) { + td0Content = V.h("span", { props: { className: "icon ion-location", title: _.t("location.location") } }); + } - var td1Content = V.h( - "a", - { - props: { - className: ["hostname", d.is_online ? "online" : "offline"].join(" "), - href: router.generateLink({ node: d.node_id }), - }, - on: { - click: function (e) { - router.fullUrl({ node: d.node_id }, e); - }, + var td1Content = V.h( + "a", + { + props: { + className: ["hostname", d.is_online ? "online" : "offline"].join(" "), + href: router.generateLink({ node: d.node_id }), + }, + on: { + click: function (e) { + router.fullUrl({ node: d.node_id }, e); }, }, - d.hostname, - ); + }, + d.hostname, + ); - return V.h("tr", [ - V.h("td", td0Content), - V.h("td", td1Content), - V.h("td", showUptime(d.uptime)), - V.h("td", d.neighbours.length), - V.h("td", d.clients), - ]); - } + return V.h("tr", [ + V.h("td", td0Content), + V.h("td", td1Content), + V.h("td", showUptime(d.uptime)), + V.h("td", d.neighbours.length), + V.h("td", d.clients), + ]); + } - var table = new SortTable(headings, 1, renderRow); + var table = new SortTable(headings, 1, renderRow); - this.render = function render(d) { - var h2 = document.createElement("h2"); - h2.textContent = _.t("node.all"); - d.appendChild(h2); - table.el.elm.classList.add("node-list"); - d.appendChild(table.el.elm); - }; + this.render = function render(d) { + var h2 = document.createElement("h2"); + h2.textContent = _.t("node.all"); + d.appendChild(h2); + table.el.elm.classList.add("node-list"); + d.appendChild(table.el.elm); + }; - this.setData = function setData(d) { - var data = d.nodes.all.map(function (e) { - var n = Object.create(e); - if (e.is_online) { - n.uptime = d.now - new Date(e.uptime).getTime(); - } else { - n.uptime = e.lastseen - d.now; - } - return n; - }); + this.setData = function setData(d) { + var data = d.nodes.all.map(function (e) { + var n = Object.create(e); + if (e.is_online) { + n.uptime = d.now - new Date(e.uptime).getTime(); + } else { + n.uptime = e.lastseen - d.now; + } + return n; + }); - table.setData(data); - }; + table.setData(data); }; -}); +}; diff --git a/lib/offline.js b/lib/offline.js new file mode 100644 index 00000000..3d218844 --- /dev/null +++ b/lib/offline.js @@ -0,0 +1 @@ +import "../scss/main.scss"; diff --git a/lib/proportions.js b/lib/proportions.js index b991370b..5d6bcac5 100644 --- a/lib/proportions.js +++ b/lib/proportions.js @@ -1,246 +1,242 @@ -define(["d3-interpolate", "snabbdom", "utils/version", "filters/genericnode", "helper"], function ( - d3Interpolate, - V, - versionCompare, - Filter, - helper, -) { - "use strict"; - V = V.default; - - return function (filterManager) { - var self = this; - var scale = d3Interpolate.interpolate(config.forceGraph.tqFrom, config.forceGraph.tqTo); - var time; - - var statusTable; - var fwTable; - var baseTable; - var depTable; - var hwTable; - var geoTable; - var autoTable; - var gatewayTable; - var gateway6Table; - var domainTable; - - function count(nodes, key, f) { - var dict = {}; - - nodes.forEach(function (d) { - var v = helper.dictGet(d, key.slice(0)); - - if (f !== undefined) { - v = f(v); - } - - if (v === null) { - return; - } - - dict[v] = 1 + (v in dict ? dict[v] : 0); - }); - - return Object.keys(dict).map(function (d) { - return [d, dict[d], key, f]; - }); - } - - function addFilter(filter) { - return function () { - filterManager.addFilter(filter); - return false; - }; - } +import V from "snabbdom/dist/snabbdom-patch"; +import * as d3Interpolate from "d3-interpolate"; + +import { GenericNodeFilter } from "./filters/genericnode"; +import * as helper from "./utils/helper"; +import { compare } from "./utils/version"; + +export const Proportions = function (filterManager) { + var self = this; + var scale = d3Interpolate.interpolate(config.forceGraph.tqFrom, config.forceGraph.tqTo); + var time; + + var statusTable; + var fwTable; + var baseTable; + var depTable; + var hwTable; + var geoTable; + var autoTable; + var gatewayTable; + var gateway6Table; + var domainTable; + + function count(nodes, key, f) { + var dict = {}; + + nodes.forEach(function (d) { + var v = helper.dictGet(d, key.slice(0)); + + if (f !== undefined) { + v = f(v); + } - function fillTable(name, table, data) { - if (!table) { - table = document.createElement("table"); + if (v === null) { + return; } - var max = Math.max.apply( - Math, - data.map(function (o) { - return o[1]; - }), - ); + dict[v] = 1 + (v in dict ? dict[v] : 0); + }); - var items = data.map(function (d) { - var v = d[1] / max; + return Object.keys(dict).map(function (d) { + return [d, dict[d], key, f]; + }); + } - var filter = new Filter(_.t(name), d[2], d[0], d[3]); + function addFilter(filter) { + return function () { + filterManager.addFilter(filter); + return false; + }; + } - var a = V.h("a", { on: { click: addFilter(filter) } }, d[0]); + function fillTable(name, table, data) { + if (!table) { + table = document.createElement("table"); + } - var th = V.h("th", a); - var td = V.h( - "td", - V.h( - "span", - { - style: { - width: "calc(25px + " + Math.round(v * 90) + "%)", - backgroundColor: scale(v), - }, + var max = Math.max.apply( + Math, + data.map(function (o) { + return o[1]; + }), + ); + + var items = data.map(function (d) { + var v = d[1] / max; + + var filter = new GenericNodeFilter(_.t(name), d[2], d[0], d[3]); + + var a = V.h("a", { on: { click: addFilter(filter) } }, d[0]); + + var th = V.h("th", a); + var td = V.h( + "td", + V.h( + "span", + { + style: { + width: "calc(25px + " + Math.round(v * 90) + "%)", + backgroundColor: scale(v), }, - d[1].toFixed(0), - ), - ); + }, + d[1].toFixed(0), + ), + ); - return V.h("tr", [th, td]); - }); - var tableNew = V.h("table", { props: { className: "proportion" } }, items); - return V.patch(table, tableNew); + return V.h("tr", [th, td]); + }); + var tableNew = V.h("table", { props: { className: "proportion" } }, items); + return V.patch(table, tableNew); + } + + self.setData = function setData(data) { + var onlineNodes = data.nodes.online; + var nodes = onlineNodes.concat(data.nodes.lost); + time = data.timestamp; + + function hostnameOfNodeID(nodeid) { + var gateway = data.nodeDict[nodeid]; + if (gateway) { + return gateway.hostname; + } + return null; } - self.setData = function setData(data) { - var onlineNodes = data.nodes.online; - var nodes = onlineNodes.concat(data.nodes.lost); - time = data.timestamp; - - function hostnameOfNodeID(nodeid) { - var gateway = data.nodeDict[nodeid]; - if (gateway) { - return gateway.hostname; - } - return null; + var gatewayDict = count(nodes, ["gateway"], hostnameOfNodeID); + var gateway6Dict = count(nodes, ["gateway6"], hostnameOfNodeID); + + var statusDict = count(nodes, ["is_online"], function (d) { + return d ? "online" : "offline"; + }); + var fwDict = count(nodes, ["firmware", "release"]); + var baseDict = count(nodes, ["firmware", "base"]); + var deprecationDict = count(nodes, ["model"], function (d) { + return config.deprecated && d && config.deprecated.includes(d) ? _.t("yes") : _.t("no"); + }); + var hwDict = count(nodes, ["model"]); + var geoDict = count(nodes, ["location"], function (d) { + return d && d.longitude && d.latitude ? _.t("yes") : _.t("no"); + }); + + var autoDict = count(nodes, ["autoupdater"], function (d) { + if (d.enabled) { + return d.branch; } - - var gatewayDict = count(nodes, ["gateway"], hostnameOfNodeID); - var gateway6Dict = count(nodes, ["gateway6"], hostnameOfNodeID); - - var statusDict = count(nodes, ["is_online"], function (d) { - return d ? "online" : "offline"; - }); - var fwDict = count(nodes, ["firmware", "release"]); - var baseDict = count(nodes, ["firmware", "base"]); - var deprecationDict = count(nodes, ["model"], function (d) { - return config.deprecated && d && config.deprecated.includes(d) ? _.t("yes") : _.t("no"); - }); - var hwDict = count(nodes, ["model"]); - var geoDict = count(nodes, ["location"], function (d) { - return d && d.longitude && d.latitude ? _.t("yes") : _.t("no"); - }); - - var autoDict = count(nodes, ["autoupdater"], function (d) { - if (d.enabled) { - return d.branch; - } - return _.t("node.deactivated"); - }); - - var domainDict = count(nodes, ["domain"], function (d) { - if (config.domainNames) { - config.domainNames.some(function (t) { - if (d === t.domain) { - d = t.name; - return true; - } - }); - } - return d; - }); - - statusTable = fillTable( - "node.status", - statusTable, - statusDict.sort(function (a, b) { - return b[1] - a[1]; - }), - ); - fwTable = fillTable("node.firmware", fwTable, fwDict.sort(versionCompare)); - baseTable = fillTable("node.baseversion", baseTable, baseDict.sort(versionCompare)); - depTable = fillTable( - "node.deprecationStatus", - depTable, - deprecationDict.sort(function (a, b) { - return b[1] - a[1]; - }), - ); - hwTable = fillTable( - "node.hardware", - hwTable, - hwDict.sort(function (a, b) { - return b[1] - a[1]; - }), - ); - geoTable = fillTable( - "node.visible", - geoTable, - geoDict.sort(function (a, b) { - return b[1] - a[1]; - }), - ); - autoTable = fillTable( - "node.update", - autoTable, - autoDict.sort(function (a, b) { - return b[1] - a[1]; - }), - ); - gatewayTable = fillTable( - "node.selectedGatewayIPv4", - gatewayTable, - gatewayDict.sort(function (a, b) { - return b[1] - a[1]; - }), - ); - gateway6Table = fillTable( - "node.selectedGatewayIPv6", - gateway6Table, - gateway6Dict.sort(function (a, b) { - return b[1] - a[1]; - }), - ); - domainTable = fillTable( - "node.domain", - domainTable, - domainDict.sort(function (a, b) { - return b[1] - a[1]; - }), - ); - }; - - self.render = function render(el) { - self.renderSingle(el, "node.status", statusTable); - self.renderSingle(el, "node.firmware", fwTable); - self.renderSingle(el, "node.baseversion", baseTable); - self.renderSingle(el, "node.deprecationStatus", depTable); - self.renderSingle(el, "node.hardware", hwTable); - self.renderSingle(el, "node.visible", geoTable); - self.renderSingle(el, "node.update", autoTable); - self.renderSingle(el, "node.selectedGatewayIPv4", gatewayTable); - self.renderSingle(el, "node.selectedGatewayIPv6", gateway6Table); - self.renderSingle(el, "node.domain", domainTable); - - if (config.globalInfos) { - var images = document.createElement("div"); - el.appendChild(images); - var img = []; - var subst = { - "{TIME}": time, - "{LOCALE}": _.locale(), - }; - config.globalInfos.forEach(function (globalInfo) { - img.push(V.h("h2", globalInfo.name)); - img.push(helper.showStat(V, globalInfo, subst)); + return _.t("node.deactivated"); + }); + + var domainDict = count(nodes, ["domain"], function (d) { + if (config.domainNames) { + config.domainNames.some(function (t) { + if (d === t.domain) { + d = t.name; + return true; + } }); - V.patch(images, V.h("div", img)); } - }; + return d; + }); + + statusTable = fillTable( + "node.status", + statusTable, + statusDict.sort(function (a, b) { + return b[1] - a[1]; + }), + ); + fwTable = fillTable("node.firmware", fwTable, fwDict.sort(compare)); + baseTable = fillTable("node.baseversion", baseTable, baseDict.sort(compare)); + depTable = fillTable( + "node.deprecationStatus", + depTable, + deprecationDict.sort(function (a, b) { + return b[1] - a[1]; + }), + ); + hwTable = fillTable( + "node.hardware", + hwTable, + hwDict.sort(function (a, b) { + return b[1] - a[1]; + }), + ); + geoTable = fillTable( + "node.visible", + geoTable, + geoDict.sort(function (a, b) { + return b[1] - a[1]; + }), + ); + autoTable = fillTable( + "node.update", + autoTable, + autoDict.sort(function (a, b) { + return b[1] - a[1]; + }), + ); + gatewayTable = fillTable( + "node.selectedGatewayIPv4", + gatewayTable, + gatewayDict.sort(function (a, b) { + return b[1] - a[1]; + }), + ); + gateway6Table = fillTable( + "node.selectedGatewayIPv6", + gateway6Table, + gateway6Dict.sort(function (a, b) { + return b[1] - a[1]; + }), + ); + domainTable = fillTable( + "node.domain", + domainTable, + domainDict.sort(function (a, b) { + return b[1] - a[1]; + }), + ); + }; - self.renderSingle = function renderSingle(el, heading, table) { - if (table.children.length > 0) { - var h2 = document.createElement("h2"); - h2.classList.add("proportion-header"); - h2.textContent = _.t(heading); - h2.onclick = function onclick() { - table.elm.classList.toggle("hide"); - }; - el.appendChild(h2); - el.appendChild(table.elm); - } - }; - return self; + self.render = function render(el) { + self.renderSingle(el, "node.status", statusTable); + self.renderSingle(el, "node.firmware", fwTable); + self.renderSingle(el, "node.baseversion", baseTable); + self.renderSingle(el, "node.deprecationStatus", depTable); + self.renderSingle(el, "node.hardware", hwTable); + self.renderSingle(el, "node.visible", geoTable); + self.renderSingle(el, "node.update", autoTable); + self.renderSingle(el, "node.selectedGatewayIPv4", gatewayTable); + self.renderSingle(el, "node.selectedGatewayIPv6", gateway6Table); + self.renderSingle(el, "node.domain", domainTable); + + if (config.globalInfos) { + var images = document.createElement("div"); + el.appendChild(images); + var img = []; + var subst = { + "{TIME}": time, + "{LOCALE}": _.locale(), + }; + config.globalInfos.forEach(function (globalInfo) { + img.push(V.h("h2", globalInfo.name)); + img.push(helper.showStat(V, globalInfo, subst)); + }); + V.patch(images, V.h("div", img)); + } + }; + + self.renderSingle = function renderSingle(el, heading, table) { + if (table.children.length > 0) { + var h2 = document.createElement("h2"); + h2.classList.add("proportion-header"); + h2.textContent = _.t(heading); + h2.onclick = function onclick() { + table.elm.classList.toggle("hide"); + }; + el.appendChild(h2); + el.appendChild(table.elm); + } }; -}); + return self; +}; diff --git a/lib/sidebar.js b/lib/sidebar.js index 42ff2eb4..d976df66 100644 --- a/lib/sidebar.js +++ b/lib/sidebar.js @@ -1,64 +1,60 @@ -define(function () { - "use strict"; +export const Sidebar = function (el) { + var self = this; - return function (el) { - var self = this; - - // Needed to avoid render blocking - var gridBreakpoints = { - lg: [992, 446], - xl: [1200, 560], - }; - - var sidebar = document.createElement("div"); - sidebar.classList.add("sidebar"); - el.appendChild(sidebar); + // Needed to avoid render blocking + var gridBreakpoints = { + lg: [992, 446], + xl: [1200, 560], + }; - var button = document.createElement("button"); - var visibility = new CustomEvent("visibility"); - sidebar.appendChild(button); + var sidebar = document.createElement("div"); + sidebar.classList.add("sidebar"); + el.appendChild(sidebar); - button.classList.add("sidebarhandle"); - button.setAttribute("aria-label", _.t("sidebar.toggle")); - button.onclick = function onclick() { - button.dispatchEvent(visibility); - sidebar.classList.toggle("hidden"); - }; + var button = document.createElement("button"); + var visibility = new CustomEvent("visibility"); + sidebar.appendChild(button); - var container = document.createElement("div"); - container.classList.add("container"); - sidebar.appendChild(container); + button.classList.add("sidebarhandle"); + button.setAttribute("aria-label", _.t("sidebar.toggle")); + button.onclick = function onclick() { + button.dispatchEvent(visibility); + sidebar.classList.toggle("hidden"); + }; - self.getWidth = function getWidth() { - if (gridBreakpoints.lg[0] > window.innerWidth || sidebar.classList.contains("hidden")) { - return 0; - } else if (gridBreakpoints.xl[0] > window.innerWidth) { - return gridBreakpoints.lg[1]; - } - return gridBreakpoints.xl[1]; - }; + var container = document.createElement("div"); + container.classList.add("container"); + sidebar.appendChild(container); + + self.getWidth = function getWidth() { + if (gridBreakpoints.lg[0] > window.innerWidth || sidebar.classList.contains("hidden")) { + return 0; + } else if (gridBreakpoints.xl[0] > window.innerWidth) { + return gridBreakpoints.lg[1]; + } + return gridBreakpoints.xl[1]; + }; - self.add = function add(d) { - d.render(container); - }; + self.add = function add(d) { + d.render(container); + }; - self.ensureVisible = function ensureVisible() { - sidebar.classList.remove("hidden"); - }; + self.ensureVisible = function ensureVisible() { + sidebar.classList.remove("hidden"); + }; - self.hide = function hide() { - container.children[1].classList.add("hide"); - container.children[2].classList.add("hide"); - }; + self.hide = function hide() { + container.children[1].classList.add("hide"); + container.children[2].classList.add("hide"); + }; - self.reveal = function reveal() { - container.children[1].classList.remove("hide"); - container.children[2].classList.remove("hide"); - }; + self.reveal = function reveal() { + container.children[1].classList.remove("hide"); + container.children[2].classList.remove("hide"); + }; - self.container = sidebar; - self.button = button; + self.container = sidebar; + self.button = button; - return self; - }; -}); + return self; +}; diff --git a/lib/simplenodelist.js b/lib/simplenodelist.js index bcafa818..227960b6 100644 --- a/lib/simplenodelist.js +++ b/lib/simplenodelist.js @@ -1,67 +1,67 @@ -define(["moment", "snabbdom", "helper"], function (moment, V, helper) { - "use strict"; - V = V.default; +import moment from "moment"; +import V from "snabbdom/dist/snabbdom-patch"; - return function (nodes, field, title) { - var self = this; - var el; - var tbody; +import * as helper from "./utils/helper"; - self.render = function render(d) { - el = d; - }; +export const SimpleNodelist = function (nodes, field, title) { + var self = this; + var el; + var tbody; - self.setData = function setData(data) { - var list = data.nodes[nodes]; + self.render = function render(d) { + el = d; + }; - if (list.length === 0) { - tbody = null; - return; - } + self.setData = function setData(data) { + var list = data.nodes[nodes]; - if (!tbody) { - var h2 = document.createElement("h2"); - h2.textContent = title; - el.appendChild(h2); + if (list.length === 0) { + tbody = null; + return; + } - var table = document.createElement("table"); - table.classList.add("node-list"); - el.appendChild(table); + if (!tbody) { + var h2 = document.createElement("h2"); + h2.textContent = title; + el.appendChild(h2); - tbody = document.createElement("tbody"); - tbody.last = V.h("tbody"); - table.appendChild(tbody); - } + var table = document.createElement("table"); + table.classList.add("node-list"); + el.appendChild(table); - var items = list.map(function (d) { - var td0Content = ""; - if (helper.hasLocation(d)) { - td0Content = V.h("span", { props: { className: "icon ion-location", title: _.t("location.location") } }); - } + tbody = document.createElement("tbody"); + tbody.last = V.h("tbody"); + table.appendChild(tbody); + } - var td1Content = V.h( - "a", - { - props: { - className: ["hostname", d.is_online ? "online" : "offline"].join(" "), - href: router.generateLink({ node: d.node_id }), - }, - on: { - click: function (e) { - router.fullUrl({ node: d.node_id }, e); - }, + var items = list.map(function (d) { + var td0Content = ""; + if (helper.hasLocation(d)) { + td0Content = V.h("span", { props: { className: "icon ion-location", title: _.t("location.location") } }); + } + + var td1Content = V.h( + "a", + { + props: { + className: ["hostname", d.is_online ? "online" : "offline"].join(" "), + href: router.generateLink({ node: d.node_id }), + }, + on: { + click: function (e) { + router.fullUrl({ node: d.node_id }, e); }, }, - d.hostname, - ); + }, + d.hostname, + ); - return V.h("tr", [V.h("td", td0Content), V.h("td", td1Content), V.h("td", moment(d[field]).from(data.now))]); - }); + return V.h("tr", [V.h("td", td0Content), V.h("td", td1Content), V.h("td", moment(d[field]).from(data.now))]); + }); - var tbodyNew = V.h("tbody", items); - tbody = V.patch(tbody, tbodyNew); - }; - - return self; + var tbodyNew = V.h("tbody", items); + tbody = V.patch(tbody, tbodyNew); }; -}); + + return self; +}; diff --git a/lib/sorttable.js b/lib/sorttable.js index 39274a7b..51efe2bb 100644 --- a/lib/sorttable.js +++ b/lib/sorttable.js @@ -1,69 +1,66 @@ -define(["snabbdom"], function (V) { - "use strict"; - V = V.default; +import V from "snabbdom/dist/snabbdom-patch"; - return function (headings, sortIndex, renderRow) { - var self = this; - var data; - var sortReverse = false; - self.el = document.createElement("table"); +export const SortTable = function (headings, sortIndex, renderRow) { + var self = this; + var data; + var sortReverse = false; + self.el = document.createElement("table"); - function sortTable(i) { - sortReverse = i === sortIndex ? !sortReverse : false; - sortIndex = i; + function sortTable(i) { + sortReverse = i === sortIndex ? !sortReverse : false; + sortIndex = i; - updateView(); - } - - function sortTableHandler(i) { - return function () { - sortTable(i); - }; - } + updateView(); + } - function updateView() { - var children = []; + function sortTableHandler(i) { + return function () { + sortTable(i); + }; + } - if (data.length !== 0) { - var th = headings.map(function (d, i) { - var name = _.t(d.name); - var properties = { - onclick: sortTableHandler(i), - className: "sort-header", - }; + function updateView() { + var children = []; - if (d.class) { - properties.className += " " + d.class; - properties.title = name; - name = ""; - } + if (data.length !== 0) { + var th = headings.map(function (d, i) { + var name = _.t(d.name); + var properties = { + onclick: sortTableHandler(i), + className: "sort-header", + }; - if (sortIndex === i) { - properties.className += sortReverse ? " sort-up" : " sort-down"; - } + if (d.class) { + properties.className += " " + d.class; + properties.title = name; + name = ""; + } - return V.h("th", { props: properties }, name); - }); + if (sortIndex === i) { + properties.className += sortReverse ? " sort-up" : " sort-down"; + } - var links = data.slice(0).sort(headings[sortIndex].sort); + return V.h("th", { props: properties }, name); + }); - if (headings[sortIndex].reverse ? !sortReverse : sortReverse) { - links = links.reverse(); - } + var links = data.slice(0).sort(headings[sortIndex].sort); - children.push(V.h("thead", V.h("tr", th))); - children.push(V.h("tbody", links.map(renderRow))); + if (headings[sortIndex].reverse ? !sortReverse : sortReverse) { + links = links.reverse(); } - var elNew = V.h("table", children); - self.el = V.patch(self.el, elNew); + children.push(V.h("thead", V.h("tr", th))); + children.push(V.h("tbody", links.map(renderRow))); } - self.setData = function setData(d) { - data = d; - updateView(); - }; + var elNew = V.h("table", children); + self.el = V.patch(self.el, elNew); + } - return self; + self.setData = function setData(d) { + data = d; + updateView(); }; -}); + + return self; +}; diff --git a/lib/tabs.js b/lib/tabs.js index b77250de..66d11109 100644 --- a/lib/tabs.js +++ b/lib/tabs.js @@ -1,63 +1,59 @@ -define(function () { - "use strict"; +export const Tabs = function () { + var self = this; - return function () { - var self = this; + var tabs = document.createElement("ul"); + tabs.classList.add("tabs"); - var tabs = document.createElement("ul"); - tabs.classList.add("tabs"); + var container = document.createElement("div"); - var container = document.createElement("div"); - - function gotoTab(li) { - for (var i = 0; i < tabs.children.length; i++) { - tabs.children[i].classList.remove("visible"); - } - - while (container.firstChild) { - container.removeChild(container.firstChild); - } - - li.classList.add("visible"); + function gotoTab(li) { + for (var i = 0; i < tabs.children.length; i++) { + tabs.children[i].classList.remove("visible"); + } - var tab = document.createElement("div"); - tab.classList.add("tab"); - container.appendChild(tab); - li.child.render(tab); + while (container.firstChild) { + container.removeChild(container.firstChild); } - function switchTab() { - gotoTab(this); + li.classList.add("visible"); - return false; - } + var tab = document.createElement("div"); + tab.classList.add("tab"); + container.appendChild(tab); + li.child.render(tab); + } - self.add = function add(title, d) { - var li = document.createElement("li"); - li.textContent = _.t(title); - li.onclick = switchTab; - li.child = d; - tabs.appendChild(li); + function switchTab() { + gotoTab(this); - var anyVisible = false; + return false; + } - for (var i = 0; i < tabs.children.length; i++) { - if (tabs.children[i].classList.contains("visible")) { - anyVisible = true; - break; - } - } + self.add = function add(title, d) { + var li = document.createElement("li"); + li.textContent = _.t(title); + li.onclick = switchTab; + li.child = d; + tabs.appendChild(li); + + var anyVisible = false; - if (!anyVisible) { - gotoTab(li); + for (var i = 0; i < tabs.children.length; i++) { + if (tabs.children[i].classList.contains("visible")) { + anyVisible = true; + break; } - }; + } - self.render = function render(el) { - el.appendChild(tabs); - el.appendChild(container); - }; + if (!anyVisible) { + gotoTab(li); + } + }; - return self; + self.render = function render(el) { + el.appendChild(tabs); + el.appendChild(container); }; -}); + + return self; +}; diff --git a/lib/title.js b/lib/title.js index 9e4145fe..eb513adc 100644 --- a/lib/title.js +++ b/lib/title.js @@ -1,35 +1,31 @@ -define(function () { - "use strict"; +export const Title = function () { + function setTitle(d) { + var title = [config.siteName]; - return function () { - function setTitle(d) { - var title = [config.siteName]; - - if (d !== undefined) { - title.unshift(d); - } - - document.title = title.join(" - "); + if (d !== undefined) { + title.unshift(d); } - this.resetView = function resetView() { - setTitle(); - }; + document.title = title.join(" - "); + } - this.gotoNode = function gotoNode(d) { - setTitle(d.hostname); - }; - - this.gotoLink = function gotoLink(d) { - setTitle(d[0].source.hostname + " \u21D4 " + d[0].target.hostname); - }; + this.resetView = function resetView() { + setTitle(); + }; - this.gotoLocation = function gotoLocation() { - // ignore - }; + this.gotoNode = function gotoNode(d) { + setTitle(d.hostname); + }; - this.destroy = function destroy() {}; + this.gotoLink = function gotoLink(d) { + setTitle(d[0].source.hostname + " \u21D4 " + d[0].target.hostname); + }; - return this; + this.gotoLocation = function gotoLocation() { + // ignore }; -}); + + this.destroy = function destroy() {}; + + return this; +}; diff --git a/lib/utils/helper.js b/lib/utils/helper.js index 8ae6ac6c..4418a444 100644 --- a/lib/utils/helper.js +++ b/lib/utils/helper.js @@ -1,235 +1,236 @@ -"use strict"; - -define({ - get: function get(url) { - return new Promise(function (resolve, reject) { - var req = new XMLHttpRequest(); - req.open("GET", url); - - req.onload = function onload() { - if (req.status === 200) { - resolve(req.response); - } else { - reject(Error(req.statusText)); - } - }; - - req.onerror = function onerror() { - reject(Error("Network Error")); - }; - - req.send(); - }); - }, - - getJSON: function getJSON(url) { - return require("helper").get(url).then(JSON.parse); - }, - - sortByKey: function sortByKey(key, d) { - return d.sort(function (a, b) { - return b[key] - a[key]; - }); - }, - - limit: function limit(key, m, d) { - return d.filter(function (n) { - return n[key].isAfter(m); - }); - }, - - sum: function sum(a) { - return a.reduce(function (b, c) { - return b + c; - }, 0); - }, - - one: function one() { - return 1; - }, - - dictGet: function dictGet(dict, key) { - var k = key.shift(); - - if (!(k in dict)) { - return null; - } - - if (key.length === 0) { - return dict[k]; - } - - return this.dictGet(dict[k], key); - }, - - listReplace: function listReplace(s, subst) { - for (var key in subst) { - if (subst.hasOwnProperty(key)) { - var re = new RegExp(key, "g"); - s = s.replace(re, subst[key]); +export const get = function get(url) { + return new Promise(function (resolve, reject) { + var req = new XMLHttpRequest(); + req.open("GET", url); + + req.onload = function onload() { + if (req.status === 200) { + resolve(req.response); + } else { + reject(Error(req.statusText)); } + }; + + req.onerror = function onerror() { + reject(Error("Network Error")); + }; + + req.send(); + }); +}; + +export const getJSON = function getJSON(url) { + return get(url).then(JSON.parse); +}; + +export const sortByKey = function sortByKey(key, d) { + return d.sort(function (a, b) { + return b[key] - a[key]; + }); +}; + +export const limit = function limit(key, m, d) { + return d.filter(function (n) { + return n[key].isAfter(m); + }); +}; + +export const sum = function sum(a) { + return a.reduce(function (b, c) { + return b + c; + }, 0); +}; + +export const one = function one() { + return 1; +}; + +export const dictGet = function dictGet(dict, key) { + var k = key.shift(); + + if (!(k in dict)) { + return null; + } + + if (key.length === 0) { + return dict[k]; + } + + return dictGet(dict[k], key); +}; + +export const listReplace = function listReplace(s, subst) { + for (var key in subst) { + if (subst.hasOwnProperty(key)) { + var re = new RegExp(key, "g"); + s = s.replace(re, subst[key]); } - return s; - }, - - hasLocation: function hasLocation(d) { - return "location" in d && Math.abs(d.location.latitude) < 90 && Math.abs(d.location.longitude) < 180; - }, - - hasUplink: function hasUplink(d) { - if (!("neighbours" in d)) { - return false; + } + return s; +}; + +export const hasLocation = function hasLocation(d) { + return "location" in d && Math.abs(d.location.latitude) < 90 && Math.abs(d.location.longitude) < 180; +}; + +export const hasUplink = function hasUplink(d) { + if (!("neighbours" in d)) { + return false; + } + let uplink = false; + d.neighbours.forEach(function (l) { + if (l.link.type === "vpn") { + uplink = true; } - let uplink = false; - d.neighbours.forEach(function (l) { - if (l.link.type === "vpn") { - uplink = true; - } - }); - return uplink; - }, + }); + return uplink; +}; - subtract: function subtract(a, b) { - var ids = {}; +export const subtract = function subtract(a, b) { + var ids = {}; - b.forEach(function (d) { - ids[d.node_id] = true; - }); + b.forEach(function (d) { + ids[d.node_id] = true; + }); - return a.filter(function (d) { - return !ids[d.node_id]; - }); - }, + return a.filter(function (d) { + return !ids[d.node_id]; + }); +}; - /* Helpers working with links */ +/* Helpers working with links */ - showDistance: function showDistance(d) { - if (isNaN(d.distance)) { - return ""; - } +export const showDistance = function showDistance(d) { + if (isNaN(d.distance)) { + return ""; + } - return d.distance.toFixed(0) + " m"; - }, + return d.distance.toFixed(0) + " m"; +}; - showTq: function showTq(d) { - return (d * 100).toFixed(0) + "%"; - }, - - attributeEntry: function attributeEntry(V, children, label, value) { - if (value !== undefined) { - if (typeof value !== "object") { - value = V.h("td", value); - } +export const showTq = function showTq(d) { + return (d * 100).toFixed(0) + "%"; +}; - children.push(V.h("tr", [V.h("th", _.t(label)), value])); - } - }, - showStat: function showStat(V, o, subst) { - var content = V.h("img", { - attrs: { - src: require("helper").listReplace(o.image, subst), - width: o.width, - height: o.height, - alt: _.t("loading", { name: o.name }), - }, - }); - - if (o.href) { - return V.h( - "div", - V.h( - "a", - { - attrs: { - href: require("helper").listReplace(o.href, subst), - target: "_blank", - title: require("helper").listReplace(o.title, subst), - }, - }, - content, - ), - ); - } - return V.h("div", content); - }, - showHwImg: function showHwImg(V, o, subst) { - if (!o) { - return null; +export const attributeEntry = function attributeEntry(V, children, label, value) { + if (value !== undefined) { + if (typeof value !== "object") { + value = V.h("td", value); } - return V.h("img", { - attrs: { src: require("helper").listReplace(o, subst), class: "hw-img" }, - on: { - // hide non-existant images - error: function (e) { - e.target.style.display = "none"; + children.push(V.h("tr", [V.h("th", _.t(label)), value])); + } +}; + +export const showStat = function showStat(V, o, subst) { + var content = V.h("img", { + attrs: { + src: listReplace(o.image, subst), + width: o.width, + height: o.height, + alt: _.t("loading", { name: o.name }), + }, + }); + + if (o.href) { + return V.h( + "div", + V.h( + "a", + { + attrs: { + href: listReplace(o.href, subst), + target: "_blank", + title: listReplace(o.title, subst), + }, }, + content, + ), + ); + } + return V.h("div", content); +}; + +export const showHwImg = function showHwImg(V, o, subst) { + if (!o) { + return null; + } + + return V.h("img", { + attrs: { src: listReplace(o, subst), class: "hw-img" }, + on: { + // hide non-existant images + error: function (e) { + e.target.style.display = "none"; }, - }); - }, - - getTileBBox: function getTileBBox(s, map, tileSize, margin) { - var tl = map.unproject([s.x - margin, s.y - margin]); - var br = map.unproject([s.x + margin + tileSize, s.y + margin + tileSize]); - - return { minX: br.lat, minY: tl.lng, maxX: tl.lat, maxY: br.lng }; - }, - positionClients: function positionClients(ctx, p, startAngle, node, startDistance) { - if (node.clients === 0) { - return; - } - - var radius = 3; - var a = 1.2; - var mode = 0; - - ctx.beginPath(); - ctx.fillStyle = config.client.wifi24; - - for (var orbit = 0, i = 0; i < node.clients; orbit++) { - var distance = startDistance + orbit * 2 * radius * a; - var n = Math.floor((Math.PI * distance) / (a * radius)); - var delta = node.clients - i; - - for (var j = 0; j < Math.min(delta, n); i++, j++) { - if (mode !== 1 && i >= node.clients_wifi24 + node.clients_wifi5) { - mode = 1; - ctx.fill(); - ctx.beginPath(); - ctx.fillStyle = config.client.wifi5; - } else if (mode === 0 && i >= node.clients_wifi24) { - mode = 2; - ctx.fill(); - ctx.beginPath(); - ctx.fillStyle = config.client.other; - } - var angle = ((2 * Math.PI) / n) * j; - var x = p.x + distance * Math.cos(angle + startAngle); - var y = p.y + distance * Math.sin(angle + startAngle); - - ctx.moveTo(x, y); - ctx.arc(x, y, radius, 0, 2 * Math.PI); + }, + }); +}; + +export const getTileBBox = function getTileBBox(s, map, tileSize, margin) { + var tl = map.unproject([s.x - margin, s.y - margin]); + var br = map.unproject([s.x + margin + tileSize, s.y + margin + tileSize]); + + return { minX: br.lat, minY: tl.lng, maxX: tl.lat, maxY: br.lng }; +}; + +export const positionClients = function positionClients(ctx, p, startAngle, node, startDistance) { + if (node.clients === 0) { + return; + } + + var radius = 3; + var a = 1.2; + var mode = 0; + + ctx.beginPath(); + ctx.fillStyle = config.client.wifi24; + + for (var orbit = 0, i = 0; i < node.clients; orbit++) { + var distance = startDistance + orbit * 2 * radius * a; + var n = Math.floor((Math.PI * distance) / (a * radius)); + var delta = node.clients - i; + + for (var j = 0; j < Math.min(delta, n); i++, j++) { + if (mode !== 1 && i >= node.clients_wifi24 + node.clients_wifi5) { + mode = 1; + ctx.fill(); + ctx.beginPath(); + ctx.fillStyle = config.client.wifi5; + } else if (mode === 0 && i >= node.clients_wifi24) { + mode = 2; + ctx.fill(); + ctx.beginPath(); + ctx.fillStyle = config.client.other; } + var angle = ((2 * Math.PI) / n) * j; + var x = p.x + distance * Math.cos(angle + startAngle); + var y = p.y + distance * Math.sin(angle + startAngle); + + ctx.moveTo(x, y); + ctx.arc(x, y, radius, 0, 2 * Math.PI); } - ctx.fill(); - }, - fullscreen: function fullscreen(btn) { - if (!document.fullscreenElement && !document.webkitFullscreenElement && !document.mozFullScreenElement) { - var fel = document.firstElementChild; - var func = fel.requestFullscreen || fel.webkitRequestFullScreen || fel.mozRequestFullScreen; - func.call(fel); - btn.classList.remove("ion-full-enter"); - btn.classList.add("ion-full-exit"); - } else { - func = document.exitFullscreen || document.webkitExitFullscreen || document.mozCancelFullScreen; - if (func) { - func.call(document); - btn.classList.remove("ion-full-exit"); - btn.classList.add("ion-full-enter"); - } + } + ctx.fill(); +}; + +export const fullscreen = function fullscreen(btn) { + if (!document.fullscreenElement && !document.webkitFullscreenElement && !document.mozFullScreenElement) { + var fel = document.firstElementChild; + var func = fel.requestFullscreen || fel.webkitRequestFullScreen || fel.mozRequestFullScreen; + func.call(fel); + btn.classList.remove("ion-full-enter"); + btn.classList.add("ion-full-exit"); + } else { + func = document.exitFullscreen || document.webkitExitFullscreen || document.mozCancelFullScreen; + if (func) { + func.call(document); + btn.classList.remove("ion-full-exit"); + btn.classList.add("ion-full-enter"); } - }, - escape: function escape(string) { - return string.replace(//g, ">").replace(/"/g, """).replace(/'/g, "'"); - }, -}); + } +}; + +export const escape = function escape(string) { + return string.replace(//g, ">").replace(/"/g, """).replace(/'/g, "'"); +}; diff --git a/lib/utils/language.js b/lib/utils/language.js index 00e3f090..9e9a7e64 100644 --- a/lib/utils/language.js +++ b/lib/utils/language.js @@ -1,71 +1,72 @@ -define(["polyglot", "moment", "helper"], function (Polyglot, moment, helper) { - "use strict"; - return function () { - var router; +import moment from "moment"; +import * as helper from "./helper"; +import Polyglot from "node-polyglot"; - function languageSelect(el) { - var select = document.createElement("select"); - select.className = "language-switch"; - select.setAttribute("aria-label", "Language"); - select.addEventListener("change", setSelectLocale); - el.appendChild(select); +export const Language = function () { + var router; - // Keep english - select.innerHTML = ""; - for (var i = 0; i < config.supportedLocale.length; i++) { - select.innerHTML += - '"; - } - } + function languageSelect(el) { + var select = document.createElement("select"); + select.className = "language-switch"; + select.setAttribute("aria-label", "Language"); + select.addEventListener("change", setSelectLocale); + el.appendChild(select); - function setSelectLocale(event) { - router.fullUrl({ lang: event.target.value }, false, true); - } - - function getLocale(input) { - var language = input || (navigator.languages && navigator.languages[0]) || navigator.language; - var locale = config.supportedLocale[0]; - config.supportedLocale.some(function (item) { - if (language.indexOf(item) !== -1) { - locale = item; - return true; - } - return false; - }); - return locale; + // Keep english + select.innerHTML = ""; + for (var i = 0; i < config.supportedLocale.length; i++) { + select.innerHTML += + '"; } + } - function setTranslation(json) { - _.extend(json); + function setSelectLocale(event) { + router.fullUrl({ lang: event.target.value }, false, true); + } - if (moment.locale(_.locale()) !== _.locale()) { - moment.defineLocale(_.locale(), { - longDateFormat: { - LT: "HH:mm", - LTS: "HH:mm:ss", - L: "DD.MM.YYYY", - LL: "D. MMMM YYYY", - LLL: "D. MMMM YYYY HH:mm", - LLLL: "dddd, D. MMMM YYYY HH:mm", - }, - calendar: json.momentjs.calendar, - relativeTime: json.momentjs.relativeTime, - }); + function getLocale(input) { + var language = input || (navigator.languages && navigator.languages[0]) || navigator.language; + var locale = config.supportedLocale[0]; + config.supportedLocale.some(function (item) { + if (language.indexOf(item) !== -1) { + locale = item; + return true; } - } + return false; + }); + return locale; + } + + function setTranslation(json) { + _.extend(json); - function init(r) { - router = r; - /** global: _ */ - window._ = new Polyglot({ locale: getLocale(router.getLang()), allowMissing: true }); - helper.getJSON("locale/" + _.locale() + ".json?" + config.cacheBreaker).then(setTranslation); - document.querySelector("html").setAttribute("lang", _.locale()); + if (moment.locale(_.locale()) !== _.locale()) { + moment.defineLocale(_.locale(), { + longDateFormat: { + LT: "HH:mm", + LTS: "HH:mm:ss", + L: "DD.MM.YYYY", + LL: "D. MMMM YYYY", + LLL: "D. MMMM YYYY HH:mm", + LLLL: "dddd, D. MMMM YYYY HH:mm", + }, + calendar: json.momentjs.calendar, + relativeTime: json.momentjs.relativeTime, + }); } + } + + function init(r) { + router = r; + /** global: _ */ + window._ = new Polyglot({ locale: getLocale(router.getLang()), allowMissing: true }); + helper.getJSON("locale/" + _.locale() + ".json?" + config.cacheBreaker).then(setTranslation); + document.querySelector("html").setAttribute("lang", _.locale()); + } - return { - init: init, - getLocale: getLocale, - languageSelect: languageSelect, - }; + return { + init: init, + getLocale: getLocale, + languageSelect: languageSelect, }; -}); +}; diff --git a/lib/utils/math.js b/lib/utils/math.js index c4961aa8..ce6f4b86 100644 --- a/lib/utils/math.js +++ b/lib/utils/math.js @@ -1,31 +1,29 @@ -define(function () { - var self = {}; +var self = {}; - self.distance = function distance(a, b) { - return (a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y); - }; +self.distance = function distance(a, b) { + return (a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y); +}; - self.distancePoint = function distancePoint(a, b) { - return Math.sqrt(self.distance(a, b)); - }; +self.distancePoint = function distancePoint(a, b) { + return Math.sqrt(self.distance(a, b)); +}; - self.distanceLink = function distanceLink(p, a, b) { - /* http://stackoverflow.com/questions/849211 */ - var l2 = self.distance(a, b); - if (l2 === 0) { - return self.distance(p, a); - } - var t = ((p.x - a.x) * (b.x - a.x) + (p.y - a.y) * (b.y - a.y)) / l2; - if (t < 0) { - return self.distance(p, a); - } else if (t > 1) { - return self.distance(p, b); - } - return self.distancePoint(p, { - x: a.x + t * (b.x - a.x), - y: a.y + t * (b.y - a.y), - }); - }; +self.distanceLink = function distanceLink(p, a, b) { + /* http://stackoverflow.com/questions/849211 */ + var l2 = self.distance(a, b); + if (l2 === 0) { + return self.distance(p, a); + } + var t = ((p.x - a.x) * (b.x - a.x) + (p.y - a.y) * (b.y - a.y)) / l2; + if (t < 0) { + return self.distance(p, a); + } else if (t > 1) { + return self.distance(p, b); + } + return self.distancePoint(p, { + x: a.x + t * (b.x - a.x), + y: a.y + t * (b.y - a.y), + }); +}; - return self; -}); +export default self; diff --git a/lib/utils/node.js b/lib/utils/node.js index 4da0a731..3ceae8ec 100644 --- a/lib/utils/node.js +++ b/lib/utils/node.js @@ -1,156 +1,156 @@ -define(["snabbdom", "helper", "moment"], function (V, helper, moment) { - "use strict"; - V = V.default; - - var self = {}; - - function showBar(v, width, warning) { - return V.h("span", { props: { className: "bar" + (warning ? " warning" : "") } }, [ - V.h("span", { - style: { width: width * 100 + "%" }, - }), - V.h("label", v), - ]); +import V from "snabbdom/dist/snabbdom-patch"; +import moment from "moment"; + +import * as helper from "./helper"; + +var self = {}; + +function showBar(v, width, warning) { + return V.h("span", { props: { className: "bar" + (warning ? " warning" : "") } }, [ + V.h("span", { + style: { width: width * 100 + "%" }, + }), + V.h("label", v), + ]); +} + +self.showStatus = function showStatus(d) { + return V.h( + "td", + { props: { className: d.is_online ? "online" : "offline" } }, + _.t(d.is_online ? "node.lastOnline" : "node.lastOffline", { + time: d.lastseen.fromNow(), + date: d.lastseen.format("DD.MM.YYYY, H:mm:ss"), + }), + ); +}; + +self.showGeoURI = function showGeoURI(d) { + if (!helper.hasLocation(d)) { + return undefined; } - self.showStatus = function showStatus(d) { - return V.h( - "td", - { props: { className: d.is_online ? "online" : "offline" } }, - _.t(d.is_online ? "node.lastOnline" : "node.lastOffline", { - time: d.lastseen.fromNow(), - date: d.lastseen.format("DD.MM.YYYY, H:mm:ss"), - }), - ); - }; - - self.showGeoURI = function showGeoURI(d) { - if (!helper.hasLocation(d)) { - return undefined; - } - - return V.h( - "td", - V.h( - "a", - { props: { href: "geo:" + d.location.latitude + "," + d.location.longitude } }, - Number(d.location.latitude.toFixed(6)) + ", " + Number(d.location.longitude.toFixed(6)), - ), - ); - }; - - self.showGateway = function showGateway(d) { - return d.is_gateway ? _.t("yes") : undefined; - }; - - self.showFirmware = function showFirmware(d) { - return ( - [helper.dictGet(d, ["firmware", "release"]), helper.dictGet(d, ["firmware", "base"])] - .filter(function (n) { - return n !== null; - }) - .join(" / ") || undefined - ); - }; - - self.showUptime = function showUptime(d) { - return moment.utc(d.uptime).local().fromNow(true); - }; - - self.showFirstSeen = function showFirstSeen(d) { - return d.firstseen.fromNow(true); - }; - - self.showLoad = function showLoad(d) { - return showBar(d.loadavg.toFixed(2), d.loadavg / (d.nproc || 1), d.loadavg >= d.nproc); - }; - - self.showRAM = function showRAM(d) { - return showBar(Math.round(d.memory_usage * 100) + " %", d.memory_usage, d.memory_usage >= 0.8); - }; - - self.showDomain = function showDomain(d) { - var rt = d.domain; - if (config.domainNames) { - config.domainNames.some(function (t) { - if (rt === t.domain) { - rt = t.name; - return true; - } - }); - } - return rt; - }; - - self.countLocalClients = function countLocalClients(d, visited = {}) { - if (d.node_id in visited) return 0; - visited[d.node_id] = 1; - - var count = d.clients || 0; - d.neighbours.forEach(function (n) { - if (n.link.type === "vpn") return; - count += self.countLocalClients(n.node, visited); + return V.h( + "td", + V.h( + "a", + { props: { href: "geo:" + d.location.latitude + "," + d.location.longitude } }, + Number(d.location.latitude.toFixed(6)) + ", " + Number(d.location.longitude.toFixed(6)), + ), + ); +}; + +self.showGateway = function showGateway(d) { + return d.is_gateway ? _.t("yes") : undefined; +}; + +self.showFirmware = function showFirmware(d) { + return ( + [helper.dictGet(d, ["firmware", "release"]), helper.dictGet(d, ["firmware", "base"])] + .filter(function (n) { + return n !== null; + }) + .join(" / ") || undefined + ); +}; + +self.showUptime = function showUptime(d) { + return moment.utc(d.uptime).local().fromNow(true); +}; + +self.showFirstSeen = function showFirstSeen(d) { + return d.firstseen.fromNow(true); +}; + +self.showLoad = function showLoad(d) { + return showBar(d.loadavg.toFixed(2), d.loadavg / (d.nproc || 1), d.loadavg >= d.nproc); +}; + +self.showRAM = function showRAM(d) { + return showBar(Math.round(d.memory_usage * 100) + " %", d.memory_usage, d.memory_usage >= 0.8); +}; + +self.showDomain = function showDomain(d) { + var rt = d.domain; + if (config.domainNames) { + config.domainNames.some(function (t) { + if (rt === t.domain) { + rt = t.name; + return true; + } }); - return count; - }; - - self.showClients = function showClients(d) { - if (!d.is_online) { - return undefined; + } + return rt; +}; + +self.countLocalClients = function countLocalClients(d, visited = {}) { + if (d.node_id in visited) return 0; + visited[d.node_id] = 1; + + var count = d.clients || 0; + d.neighbours.forEach(function (n) { + if (n.link.type === "vpn") return; + count += self.countLocalClients(n.node, visited); + }); + return count; +}; + +self.showClients = function showClients(d) { + if (!d.is_online) { + return undefined; + } + var localClients = self.countLocalClients(d); + + var clients = [ + V.h("span", [ + d.clients > 0 ? d.clients : _.t("none"), + V.h("br"), + V.h("i", { props: { className: "ion-people", title: _.t("node.clients") } }), + ]), + V.h("span", { props: { className: "legend-24ghz" } }, [ + d.clients_wifi24, + V.h("br"), + V.h("span", { props: { className: "symbol", title: "2,4 GHz" } }), + ]), + V.h("span", { props: { className: "legend-5ghz" } }, [ + d.clients_wifi5, + V.h("br"), + V.h("span", { props: { className: "symbol", title: "5 GHz" } }), + ]), + V.h("span", { props: { className: "legend-others" } }, [ + d.clients_other, + V.h("br"), + V.h("span", { props: { className: "symbol", title: _.t("others") } }), + ]), + V.h("span", [ + localClients > 0 ? localClients : _.t("none"), + V.h("br"), + V.h("i", { props: { className: "ion-share-alt", title: _.t("node.localClients") } }), + ]), + ]; + return V.h("td", { props: { className: "clients" } }, clients); +}; + +self.showIPs = function showIPs(d) { + var string = []; + var ips = d.addresses; + ips.sort(); + ips.forEach(function (ip, i) { + if (i > 0) { + string.push(V.h("br")); } - var localClients = self.countLocalClients(d); - - var clients = [ - V.h("span", [ - d.clients > 0 ? d.clients : _.t("none"), - V.h("br"), - V.h("i", { props: { className: "ion-people", title: _.t("node.clients") } }), - ]), - V.h("span", { props: { className: "legend-24ghz" } }, [ - d.clients_wifi24, - V.h("br"), - V.h("span", { props: { className: "symbol", title: "2,4 GHz" } }), - ]), - V.h("span", { props: { className: "legend-5ghz" } }, [ - d.clients_wifi5, - V.h("br"), - V.h("span", { props: { className: "symbol", title: "5 GHz" } }), - ]), - V.h("span", { props: { className: "legend-others" } }, [ - d.clients_other, - V.h("br"), - V.h("span", { props: { className: "symbol", title: _.t("others") } }), - ]), - V.h("span", [ - localClients > 0 ? localClients : _.t("none"), - V.h("br"), - V.h("i", { props: { className: "ion-share-alt", title: _.t("node.localClients") } }), - ]), - ]; - return V.h("td", { props: { className: "clients" } }, clients); - }; - - self.showIPs = function showIPs(d) { - var string = []; - var ips = d.addresses; - ips.sort(); - ips.forEach(function (ip, i) { - if (i > 0) { - string.push(V.h("br")); - } - if (ip.indexOf("fe80:") !== 0) { - string.push(V.h("a", { props: { href: "http://[" + ip + "]/", target: "_blank" } }, ip)); - } else { - string.push(ip); - } - }); - return V.h("td", string); - }; + if (ip.indexOf("fe80:") !== 0) { + string.push(V.h("a", { props: { href: "http://[" + ip + "]/", target: "_blank" } }, ip)); + } else { + string.push(ip); + } + }); + return V.h("td", string); +}; - self.showAutoupdate = function showAutoupdate(d) { - return d.autoupdater.enabled ? _.t("node.activated", { branch: d.autoupdater.branch }) : _.t("node.deactivated"); - }; +self.showAutoupdate = function showAutoupdate(d) { + return d.autoupdater.enabled ? _.t("node.activated", { branch: d.autoupdater.branch }) : _.t("node.deactivated"); +}; - return self; -}); +export default self; diff --git a/lib/utils/router.js b/lib/utils/router.js index 526a6a60..6a746862 100644 --- a/lib/utils/router.js +++ b/lib/utils/router.js @@ -1,153 +1,151 @@ -define(["Navigo"], function (Navigo) { - "use strict"; - - return function (language) { - var init = false; - var objects = {}; - var targets = []; - var views = {}; - var current = {}; - var state = { lang: language.getLocale(), view: "map" }; - - function resetView() { +import Navigo from "navigo"; + +export const Router = function (language) { + var init = false; + var objects = {}; + var targets = []; + var views = {}; + var current = {}; + var state = { lang: language.getLocale(), view: "map" }; + + function resetView() { + targets.forEach(function (t) { + t.resetView(); + }); + } + + function gotoNode(d) { + if (objects.nodeDict[d.nodeId]) { targets.forEach(function (t) { - t.resetView(); + t.gotoNode(objects.nodeDict[d.nodeId], objects.nodeDict); }); } + } - function gotoNode(d) { - if (objects.nodeDict[d.nodeId]) { - targets.forEach(function (t) { - t.gotoNode(objects.nodeDict[d.nodeId], objects.nodeDict); - }); - } - } - - function gotoLink(d) { - var link = objects.links.filter(function (value) { - return value.id === d.linkId; + function gotoLink(d) { + var link = objects.links.filter(function (value) { + return value.id === d.linkId; + }); + if (link) { + targets.forEach(function (t) { + t.gotoLink(link); }); - if (link) { - targets.forEach(function (t) { - t.gotoLink(link); - }); - } } + } - function view(d) { - if (d.view in views) { - views[d.view](); - state.view = d.view; - resetView(); - } + function view(d) { + if (d.view in views) { + views[d.view](); + state.view = d.view; + resetView(); } + } + + function customRoute(lang, viewValue, node, link, zoom, lat, lng) { + current = { + lang: lang, + view: viewValue, + node: node, + link: link, + zoom: zoom, + lat: lat, + lng: lng, + }; - function customRoute(lang, viewValue, node, link, zoom, lat, lng) { - current = { - lang: lang, - view: viewValue, - node: node, - link: link, - zoom: zoom, - lat: lat, - lng: lng, - }; - - if (lang && lang !== state.lang && lang === language.getLocale(lang)) { - location.reload(); - } - - if (!init || (viewValue && viewValue !== state.view)) { - if (!viewValue) { - viewValue = state.view; - } - view({ view: viewValue }); - init = true; - } + if (lang && lang !== state.lang && lang === language.getLocale(lang)) { + location.reload(); + } - if (node) { - gotoNode({ nodeId: node }); - } else if (link) { - gotoLink({ linkId: link }); - } else if (lat) { - targets.forEach(function (t) { - t.gotoLocation({ - zoom: parseInt(zoom, 10), - lat: parseFloat(lat), - lng: parseFloat(lng), - }); - }); - } else { - resetView(); + if (!init || (viewValue && viewValue !== state.view)) { + if (!viewValue) { + viewValue = state.view; } + view({ view: viewValue }); + init = true; } - var router = new Navigo(null, true, "#!"); - - router - .on( - /^\/?#?!?\/([\w]{2})?\/?(map|graph)?\/?([a-f\d]{12})?([a-f\d\-]{25})?\/?(?:(\d+)\/(-?[\d.]+)\/(-?[\d.]+))?$/, - customRoute, - ) - .on({ - "*": function () { - router.fullUrl(); - }, + if (node) { + gotoNode({ nodeId: node }); + } else if (link) { + gotoLink({ linkId: link }); + } else if (lat) { + targets.forEach(function (t) { + t.gotoLocation({ + zoom: parseInt(zoom, 10), + lat: parseFloat(lat), + lng: parseFloat(lng), + }); }); + } else { + resetView(); + } + } + + var router = new Navigo(null, true, "#!"); + + router + .on( + /^\/?#?!?\/([\w]{2})?\/?(map|graph)?\/?([a-f\d]{12})?([a-f\d\-]{25})?\/?(?:(\d+)\/(-?[\d.]+)\/(-?[\d.]+))?$/, + customRoute, + ) + .on({ + "*": function () { + router.fullUrl(); + }, + }); + + router.generateLink = function generateLink(data, full, deep) { + var result = "#!"; + + if (full) { + data = Object.assign({}, state, data); + } else if (deep) { + data = Object.assign({}, current, data); + } - router.generateLink = function generateLink(data, full, deep) { - var result = "#!"; - - if (full) { - data = Object.assign({}, state, data); - } else if (deep) { - data = Object.assign({}, current, data); - } - - for (var key in data) { - if (!data.hasOwnProperty(key) || data[key] === undefined) { - continue; - } - result += "/" + data[key]; + for (var key in data) { + if (!data.hasOwnProperty(key) || data[key] === undefined) { + continue; } + result += "/" + data[key]; + } - return result; - }; - - router.fullUrl = function fullUrl(data, e, deep) { - if (e) { - e.preventDefault(); - } - router.navigate(router.generateLink(data, !deep, deep)); - }; + return result; + }; - router.getLang = function getLang() { - var lang = location.hash.match(/^\/?#!?\/([\w]{2})\//); - if (lang) { - state.lang = language.getLocale(lang[1]); - return lang[1]; - } - return null; - }; + router.fullUrl = function fullUrl(data, e, deep) { + if (e) { + e.preventDefault(); + } + router.navigate(router.generateLink(data, !deep, deep)); + }; - router.addTarget = function addTarget(d) { - targets.push(d); - }; + router.getLang = function getLang() { + var lang = location.hash.match(/^\/?#!?\/([\w]{2})\//); + if (lang) { + state.lang = language.getLocale(lang[1]); + return lang[1]; + } + return null; + }; - router.removeTarget = function removeTarget(d) { - targets = targets.filter(function (e) { - return d !== e; - }); - }; + router.addTarget = function addTarget(d) { + targets.push(d); + }; - router.addView = function addView(k, d) { - views[k] = d; - }; + router.removeTarget = function removeTarget(d) { + targets = targets.filter(function (e) { + return d !== e; + }); + }; - router.setData = function setData(data) { - objects = data; - }; + router.addView = function addView(k, d) { + views[k] = d; + }; - return router; + router.setData = function setData(data) { + objects = data; }; -}); + + return router; +}; diff --git a/lib/utils/version.js b/lib/utils/version.js index 60da97ef..59863425 100644 --- a/lib/utils/version.js +++ b/lib/utils/version.js @@ -1,102 +1,94 @@ -define(function () { - "use strict"; +const Version = function (v) { + var version = /^[a-zA-Z]?([0-9]*(?=:))?:(.*)/.exec(v); + this.epoch = version ? version[1] : 0; + version = version && version[2] ? version[2] : v; + version = version.split("-"); + this.debian = version.length > 1 ? version.pop() : ""; + this.upstream = version.join("-"); +}; - /* - reimplate after node-deb-version-compare under MIT - (https://github.com/sdumetz/node-deb-version-compare) - */ - - function Version(v) { - var version = /^[a-zA-Z]?([0-9]*(?=:))?:(.*)/.exec(v); - this.epoch = version ? version[1] : 0; - version = version && version[2] ? version[2] : v; - version = version.split("-"); - this.debian = version.length > 1 ? version.pop() : ""; - this.upstream = version.join("-"); +Version.prototype.compare = function (b) { + if ((this.epoch > 0 || b.epoch > 0) && Math.sign(this.epoch - b.epoch) !== 0) { + return Math.sign(this.epoch - b.epoch); + } + if (this.compareStrings(this.upstream, b.upstream) !== 0) { + return this.compareStrings(this.upstream, b.upstream); } + return this.compareStrings(this.debian, b.debian); +}; - Version.prototype.compare = function (b) { - if ((this.epoch > 0 || b.epoch > 0) && Math.sign(this.epoch - b.epoch) !== 0) { - return Math.sign(this.epoch - b.epoch); - } - if (this.compareStrings(this.upstream, b.upstream) !== 0) { - return this.compareStrings(this.upstream, b.upstream); - } - return this.compareStrings(this.debian, b.debian); - }; +Version.prototype.charCode = function (c) { + // the lower the charcode the lower the version. + // if (c === '~') {return 0;} // tilde sort before anything + // else + if (/[a-zA-Z]/.test(c)) { + return c.charCodeAt(0) - "A".charCodeAt(0) + 1; + } else if (/[.:+-:]/.test(c)) { + return c.charCodeAt(0) + "z".charCodeAt(0) + 1; + } // charcodes are 46..58 + return 0; +}; - Version.prototype.charCode = function (c) { - // the lower the charcode the lower the version. - // if (c === '~') {return 0;} // tilde sort before anything - // else - if (/[a-zA-Z]/.test(c)) { - return c.charCodeAt(0) - "A".charCodeAt(0) + 1; - } else if (/[.:+-:]/.test(c)) { - return c.charCodeAt(0) + "z".charCodeAt(0) + 1; - } // charcodes are 46..58 - return 0; - }; - - // find index of "val" in "ar". - Version.prototype.findIndex = function (ar, fn) { - for (var i = 0; i < ar.length; i++) { - if (fn(ar[i], i)) { - return i; - } +// find index of "val" in "ar". +Version.prototype.findIndex = function (ar, fn) { + for (var i = 0; i < ar.length; i++) { + if (fn(ar[i], i)) { + return i; } - return -1; - }; + } + return -1; +}; - Version.prototype.compareChunk = function (a, b) { - var ca = a.split(""); - var cb = b.split(""); - var diff = this.findIndex(ca, function (c, index) { - return !(cb[index] && c === cb[index]); - }); - if (diff === -1) { - if (cb.length > ca.length) { - if (cb[ca.length] === "~") { - return 1; - } - return -1; +Version.prototype.compareChunk = function (a, b) { + var ca = a.split(""); + var cb = b.split(""); + var diff = this.findIndex(ca, function (c, index) { + return !(cb[index] && c === cb[index]); + }); + if (diff === -1) { + if (cb.length > ca.length) { + if (cb[ca.length] === "~") { + return 1; } - return 0; // no diff found and same length - } else if (!cb[diff]) { - return ca[diff] === "~" ? -1 : 1; + return -1; } - return this.charCode(ca[diff]) > this.charCode(cb[diff]) ? 1 : -1; - }; + return 0; // no diff found and same length + } else if (!cb[diff]) { + return ca[diff] === "~" ? -1 : 1; + } + return this.charCode(ca[diff]) > this.charCode(cb[diff]) ? 1 : -1; +}; - Version.prototype.compareStrings = function (a, b) { - if (a === b) { - return 0; - } - var parseA = /([^0-9]+|[0-9]+)/g; - var parseB = /([^0-9]+|[0-9]+)/g; - var ra = parseA.exec(a); - var rb = parseB.exec(b); - while (ra !== null && rb !== null) { - if ((isNaN(ra[1]) || isNaN(rb[1])) && ra[1] !== rb[1]) { - // a or b is not a number and they're not equal. Note : "" IS a number so both null is impossible - return this.compareChunk(ra[1], rb[1]); - } // both are numbers - if (ra[1] !== rb[1]) { - return parseInt(ra[1], 10) > parseInt(rb[1], 10) ? 1 : -1; - } - ra = parseA.exec(a); - rb = parseB.exec(b); - } - if (!ra && rb) { - // rb doesn't get exec-ed when ra == null - return rb.length > 0 && rb[1].split("")[0] === "~" ? 1 : -1; - } else if (ra && !rb) { - return ra[1].split("")[0] === "~" ? -1 : 1; - } +Version.prototype.compareStrings = function (a, b) { + if (a === b) { return 0; - }; - return function compare(a, b) { - var va = new Version(a[0]); - var vb = new Version(b[0]); - return vb.compare(va); - }; -}); + } + var parseA = /([^0-9]+|[0-9]+)/g; + var parseB = /([^0-9]+|[0-9]+)/g; + var ra = parseA.exec(a); + var rb = parseB.exec(b); + while (ra !== null && rb !== null) { + if ((isNaN(ra[1]) || isNaN(rb[1])) && ra[1] !== rb[1]) { + // a or b is not a number and they're not equal. Note : "" IS a number so both null is impossible + return this.compareChunk(ra[1], rb[1]); + } // both are numbers + if (ra[1] !== rb[1]) { + return parseInt(ra[1], 10) > parseInt(rb[1], 10) ? 1 : -1; + } + ra = parseA.exec(a); + rb = parseB.exec(b); + } + if (!ra && rb) { + // rb doesn't get exec-ed when ra == null + return rb.length > 0 && rb[1].split("")[0] === "~" ? 1 : -1; + } else if (ra && !rb) { + return ra[1].split("")[0] === "~" ? -1 : 1; + } + return 0; +}; + +export const compare = (a, b) => { + var va = new Version(a[0]); + var vb = new Version(b[0]); + return vb.compare(va); +}; diff --git a/offline.html b/offline.html new file mode 100644 index 00000000..90b1d1fb --- /dev/null +++ b/offline.html @@ -0,0 +1,31 @@ + + + + + Meshviewer Loading + + + + + + + + + + +
+

+ You are Offline!
+ Loading ... +
+ No connection available. +
+
+
+

+ +
+ + diff --git a/package-lock.json b/package-lock.json index 9c2cfeb2..2a5b947a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,10 +9,10 @@ "version": "12.2.1", "license": "AGPL-3.0", "dependencies": { - "almond": "^0.3.3", "d3-collection": "^1.0.7", "d3-drag": "^3.0.0", "d3-force": "^3.0.0", + "d3-interpolate": "^3.0.1", "d3-selection": "^3.0.0", "d3-zoom": "^3.0.0", "leaflet": "^1.7.1", @@ -21,42 +21,28 @@ "node-polyglot": "2.2.2", "promise-polyfill": "^8.2.0", "rbush": "^3.0.1", - "requirejs": "^2.3.6", "snabbdom": "^0.7.4" }, "devDependencies": { - "babel-eslint": "^10.0.1", - "browser-sync": "^2.27.4", - "del": "^6.0.0", + "@vite-pwa/assets-generator": "^0.0.10", + "babel-eslint": "^10.1.0", "eslint": "^7.31.0", "eslint-config-airbnb-es5": "^1.2.0", "eslint-config-defaults": "^9.0.0", "eslint-config-prettier": "^9.0.0", "eslint-plugin-react": "^7.33.2", - "gulp": "^4.0.1", - "gulp-autoprefixer": "^8.0.0", - "gulp-cache-bust": "^1.4.0", - "gulp-cli": "^2.3.0", - "gulp-environments": "^1.0.1", - "gulp-eslint": "^6.0.0", - "gulp-htmlmin": "^5.0.1", - "gulp-inject": "^5.0.2", - "gulp-inline-source": "^4.0.0", - "gulp-jsonminify": "^1.1.0", - "gulp-load-plugins": "^2.0.7", - "gulp-real-favicon": "^0.3.2", - "gulp-requirejs-optimize": "^1.3.0", - "gulp-sass": "^5.0.0", - "gulp-sourcemaps": "^3.0.0", - "gulp-stylelint": "^13.0.0", - "gulp-uglify": "^3.0.2", "prettier": "3.0.3", - "sass": "^1.66.1", - "stylelint": "^13.10.0", - "stylelint-config-standard": "^22.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.3" + "vite": "^4.4.9", + "vite-plugin-pwa": "^0.16.5" + } + }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" } }, "node_modules/@ampproject/remapping": { @@ -72,48 +58,54 @@ "node": ">=6.0.0" } }, + "node_modules/@antfu/utils": { + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-0.7.6.tgz", + "integrity": "sha512-pvFiLP2BeOKA/ZOS6jxx4XhKzdVLHDhGlFEaZ2flWWYf2xOqVniqpk38I04DFRyz+L0ASggl7SkItTc+ZLju4w==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, "node_modules/@babel/code-frame": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.21.4.tgz", - "integrity": "sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==", + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", "dev": true, "dependencies": { - "@babel/highlight": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" + "@babel/highlight": "^7.10.4" } }, "node_modules/@babel/compat-data": { - "version": "7.22.3", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.3.tgz", - "integrity": "sha512-aNtko9OPOwVESUFp3MZfD8Uzxl7JzSeJpd7npIoxCasU37PFbAQRpKglkaKwlHOyeJdrREpo8TW8ldrkYWwvIQ==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.20.tgz", + "integrity": "sha512-BQYjKbpXjoXwFW5jGqiizJQQT/aC7pFm9Ok1OWssonuguICi264lbgMzRp2ZMmRSlfkX6DsWDDcsrctK8Rwfiw==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.22.1", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.1.tgz", - "integrity": "sha512-Hkqu7J4ynysSXxmAahpN1jjRwVJ+NdpraFLIWflgjpVob3KNyK3/tIUc7Q7szed8WMp0JNa7Qtd1E9Oo22F9gA==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.0.tgz", + "integrity": "sha512-97z/ju/Jy1rZmDxybphrBuI+jtJjFVoz7Mr9yUQVVVi+DNZE333uFQeMOqcCIy1x3WYBIbWftUSLmbNXNT7qFQ==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.21.4", - "@babel/generator": "^7.22.0", - "@babel/helper-compilation-targets": "^7.22.1", - "@babel/helper-module-transforms": "^7.22.1", - "@babel/helpers": "^7.22.0", - "@babel/parser": "^7.22.0", - "@babel/template": "^7.21.9", - "@babel/traverse": "^7.22.1", - "@babel/types": "^7.22.0", - "convert-source-map": "^1.7.0", + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.23.0", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-module-transforms": "^7.23.0", + "@babel/helpers": "^7.23.0", + "@babel/parser": "^7.23.0", + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.0", + "@babel/types": "^7.23.0", + "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", - "json5": "^2.2.2", - "semver": "^6.3.0" + "json5": "^2.2.3", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" @@ -123,6 +115,101 @@ "url": "https://opencollective.com/babel" } }, + "node_modules/@babel/core/node_modules/@babel/code-frame": { + "version": "7.22.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", + "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.22.13", + "chalk": "^2.4.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/core/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/core/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/core/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/@babel/core/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@babel/core/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/core/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/core/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, "node_modules/@babel/core/node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", @@ -132,13 +219,25 @@ "semver": "bin/semver.js" } }, + "node_modules/@babel/core/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/@babel/generator": { - "version": "7.22.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.3.tgz", - "integrity": "sha512-C17MW4wlk//ES/CJDL51kPNwl+qiBQyN7b9SKyVp11BLGFeSPoVaHrv+MNt8jwQFhQWowW88z1eeBx3pFz9v8A==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", + "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==", "dev": true, "dependencies": { - "@babel/types": "^7.22.3", + "@babel/types": "^7.23.0", "@jridgewell/gen-mapping": "^0.3.2", "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" @@ -147,23 +246,44 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", + "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz", + "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.22.1", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.1.tgz", - "integrity": "sha512-Rqx13UM3yVB5q0D/KwQ8+SPfX/+Rnsy1Lw1k/UwOC4KC6qrzIQoY3lYnBu5EHKBlEHHcj0M0W8ltPSkD8rqfsQ==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", + "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.22.0", - "@babel/helper-validator-option": "^7.21.0", - "browserslist": "^4.21.3", + "@babel/compat-data": "^7.22.9", + "@babel/helper-validator-option": "^7.22.15", + "browserslist": "^4.21.9", "lru-cache": "^5.1.1", - "semver": "^6.3.0" + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { @@ -190,9350 +310,3543 @@ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "dev": true }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.1", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.1.tgz", - "integrity": "sha512-Z2tgopurB/kTbidvzeBrc2To3PUP/9i5MUe+fU6QJCQDyPwSH2oRapkLw3KGECDYSjhQZCNxEvNvZlLw8JjGwA==", + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz", + "integrity": "sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==", "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-member-expression-to-functions": "^7.22.15", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "semver": "^6.3.1" + }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-function-name": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz", - "integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==", + "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz", + "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==", "dev": true, "dependencies": { - "@babel/template": "^7.20.7", - "@babel/types": "^7.21.0" + "@babel/helper-annotate-as-pure": "^7.22.5", + "regexpu-core": "^5.3.1", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.2.tgz", + "integrity": "sha512-k0qnnOqHn5dK9pZpfD5XXZ9SojAITdCKRn2Lp6rnDGzIbaP0rHyMPk/4wsSxVBVz4RfN0q6VpXWP2pDGIoQ7hw==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "dependencies": { - "@babel/types": "^7.18.6" + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@babel/helper-define-polyfill-provider/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", + "dev": true, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-module-imports": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.21.4.tgz", - "integrity": "sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg==", + "node_modules/@babel/helper-function-name": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", "dev": true, "dependencies": { - "@babel/types": "^7.21.4" + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.22.1", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.1.tgz", - "integrity": "sha512-dxAe9E7ySDGbQdCVOY/4+UcD8M9ZFqZcZhSPsPacvCG4M+9lwtDDQfI2EoaSvmf7W/8yCBkGU0m7Pvt1ru3UZw==", + "node_modules/@babel/helper-hoist-variables": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.22.1", - "@babel/helper-module-imports": "^7.21.4", - "@babel/helper-simple-access": "^7.21.5", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.19.1", - "@babel/template": "^7.21.9", - "@babel/traverse": "^7.22.1", - "@babel/types": "^7.22.0" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-simple-access": { - "version": "7.21.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.21.5.tgz", - "integrity": "sha512-ENPDAMC1wAjR0uaCUwliBdiSl1KBJAVnMTzXqi64c2MG8MPR6ii4qf7bSXDqSFbr4W6W028/rf5ivoHop5/mkg==", + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz", + "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==", "dev": true, "dependencies": { - "@babel/types": "^7.21.5" + "@babel/types": "^7.23.0" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", - "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "node_modules/@babel/helper-module-imports": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", + "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", "dev": true, "dependencies": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.15" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-string-parser": { - "version": "7.21.5", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.21.5.tgz", - "integrity": "sha512-5pTUx3hAJaZIdW99sJ6ZUUgWq/Y+Hja7TowEnLNMm1VivRgZQL3vpBY3qUACVsvw+yQU6+YgfBVmcbLaZtrA1w==", + "node_modules/@babel/helper-module-transforms": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz", + "integrity": "sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==", "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-simple-access": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-validator-identifier": "^7.22.20" + }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", + "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-validator-option": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz", - "integrity": "sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==", + "node_modules/@babel/helper-plugin-utils": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", + "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", "dev": true, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helpers": { - "version": "7.22.3", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.3.tgz", - "integrity": "sha512-jBJ7jWblbgr7r6wYZHMdIqKc73ycaTcCaWRq4/2LpuPHcx7xMlZvpGQkOYc9HeSjn6rcx15CPlgVcBtZ4WZJ2w==", + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz", + "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==", "dev": true, "dependencies": { - "@babel/template": "^7.21.9", - "@babel/traverse": "^7.22.1", - "@babel/types": "^7.22.3" + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-wrap-function": "^7.22.20" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "node_modules/@babel/helper-replace-supers": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz", + "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-member-expression-to-functions": "^7.22.15", + "@babel/helper-optimise-call-expression": "^7.22.5" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@babel/parser": { - "version": "7.22.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.4.tgz", - "integrity": "sha512-VLLsx06XkEYqBtE5YGPwfSGwfrjnyPP5oiGty3S8pQLFDFLaS8VwWSIxkTXpcvr5zeYLE6+MBNl2npl/YnfofA==", + "node_modules/@babel/helper-simple-access": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", + "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", "dev": true, - "bin": { - "parser": "bin/babel-parser.js" + "dependencies": { + "@babel/types": "^7.22.5" }, "engines": { - "node": ">=6.0.0" + "node": ">=6.9.0" } }, - "node_modules/@babel/template": { - "version": "7.21.9", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.21.9.tgz", - "integrity": "sha512-MK0X5k8NKOuWRamiEfc3KEJiHMTkGZNUjzMipqCGDDc6ijRl/B7RGSKVGncu4Ro/HdyzzY6cmoXuKI2Gffk7vQ==", + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", + "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.21.4", - "@babel/parser": "^7.21.9", - "@babel/types": "^7.21.5" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/traverse": { - "version": "7.22.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.4.tgz", - "integrity": "sha512-Tn1pDsjIcI+JcLKq1AVlZEr4226gpuAQTsLMorsYg9tuS/kG7nuwwJ4AB8jfQuEgb/COBwR/DqJxmoiYFu5/rQ==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.21.4", - "@babel/generator": "^7.22.3", - "@babel/helper-environment-visitor": "^7.22.1", - "@babel/helper-function-name": "^7.21.0", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.22.4", - "@babel/types": "^7.22.4", - "debug": "^4.1.0", - "globals": "^11.1.0" + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/types": { - "version": "7.22.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.4.tgz", - "integrity": "sha512-Tx9x3UBHTTsMSW85WB2kphxYQVvrZ/t1FxD88IpSgIjiUJlCm9z+xWIDwyo1vffTwSqteqyznB8ZE9vYYk16zA==", + "node_modules/@babel/helper-string-parser": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", + "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", "dev": true, - "dependencies": { - "@babel/helper-string-parser": "^7.21.5", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" - }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@eslint/eslintrc": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", - "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", + "node_modules/@babel/helper-validator-identifier": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", "dev": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", - "globals": "^13.9.0", - "ignore": "^4.0.6", - "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", - "strip-json-comments": "^3.1.1" - }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz", + "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==", + "dev": true, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "node_modules/@babel/helper-wrap-function": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz", + "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==", "dev": true, "dependencies": { - "type-fest": "^0.20.2" + "@babel/helper-function-name": "^7.22.5", + "@babel/template": "^7.22.15", + "@babel/types": "^7.22.19" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6.9.0" } }, - "node_modules/@eslint/eslintrc/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "node_modules/@babel/helpers": { + "version": "7.23.1", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.1.tgz", + "integrity": "sha512-chNpneuK18yW5Oxsr+t553UZzzAs3aZnFm4bxhebsNTeshrC95yA7l5yl7GBAG+JG1rF0F7zzD2EixK9mWSDoA==", "dev": true, - "engines": { - "node": ">=10" + "dependencies": { + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.0", + "@babel/types": "^7.23.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@gulp-sourcemaps/identity-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@gulp-sourcemaps/identity-map/-/identity-map-2.0.1.tgz", - "integrity": "sha512-Tb+nSISZku+eQ4X1lAkevcQa+jknn/OVUgZ3XCxEKIsLsqYuPoJwJOPQeaOk75X3WPftb29GWY1eqE7GLsXb1Q==", + "node_modules/@babel/highlight": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", + "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", "dev": true, "dependencies": { - "acorn": "^6.4.1", - "normalize-path": "^3.0.0", - "postcss": "^7.0.16", - "source-map": "^0.6.0", - "through2": "^3.0.1" + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0" }, "engines": { - "node": ">= 0.10" + "node": ">=6.9.0" } }, - "node_modules/@gulp-sourcemaps/identity-map/node_modules/acorn": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", - "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, - "bin": { - "acorn": "bin/acorn" + "dependencies": { + "color-convert": "^1.9.0" }, "engines": { - "node": ">=0.4.0" + "node": ">=4" } }, - "node_modules/@gulp-sourcemaps/identity-map/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/@gulp-sourcemaps/identity-map/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" }, "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "node": ">=4" } }, - "node_modules/@gulp-sourcemaps/identity-map/node_modules/through2": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz", - "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==", + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, "dependencies": { - "inherits": "^2.0.4", - "readable-stream": "2 || 3" + "color-name": "1.1.3" } }, - "node_modules/@gulp-sourcemaps/map-sources": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@gulp-sourcemaps/map-sources/-/map-sources-1.0.0.tgz", - "integrity": "sha512-o/EatdaGt8+x2qpb0vFLC/2Gug/xYPRXb6a+ET1wGYKozKN3krDWC/zZFZAtrzxJHuDL12mwdfEFKcKMNvc55A==", + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/@babel/highlight/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, - "dependencies": { - "normalize-path": "^2.0.1", - "through2": "^2.0.3" - }, "engines": { - "node": ">= 0.10" + "node": ">=0.8.0" } }, - "node_modules/@gulp-sourcemaps/map-sources/node_modules/normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, - "dependencies": { - "remove-trailing-separator": "^1.0.1" - }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/@gulp-sourcemaps/map-sources/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, - "node_modules/@gulpjs/to-absolute-glob": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@gulpjs/to-absolute-glob/-/to-absolute-glob-4.0.0.tgz", - "integrity": "sha512-kjotm7XJrJ6v+7knhPaRgaT6q8F8K2jiafwYdNHLzmV0uGLuZY43FK6smNSHUPrhq5kX2slCUy+RGG/xGqmIKA==", + "node_modules/@babel/parser": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", + "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", "dev": true, - "dependencies": { - "is-negated-glob": "^1.0.0" + "bin": { + "parser": "bin/babel-parser.js" }, "engines": { - "node": ">=10.13.0" + "node": ">=6.0.0" } }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", - "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.15.tgz", + "integrity": "sha512-FB9iYlz7rURmRJyXRKEnalYPPdn87H5no108cyuQQyMwlpJ2SJtpIUBI27kdTin956pz+LPypkPVPUTlxOmrsg==", "dev": true, "dependencies": { - "@humanwhocodes/object-schema": "^1.2.0", - "debug": "^4.1.1", - "minimatch": "^3.0.4" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { - "node": ">=10.10.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.15.tgz", + "integrity": "sha512-Hyph9LseGvAeeXzikV88bczhsrLrIZqDPxO+sSmAunMPaGrBGhfMWzCPYTtiW9t+HzSE2wtV8e5cc5P6r1xMDQ==", "dev": true, "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-transform-optional-chaining": "^7.22.15" }, "engines": { - "node": ">=6.0.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" } }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", "dev": true, "engines": { - "node": ">=6.0.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", "dev": true, - "engines": { - "node": ">=6.0.0" + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.3.tgz", - "integrity": "sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==", + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", "dev": true, "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.18", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", - "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", "dev": true, "dependencies": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "node_modules/@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", "dev": true, "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" + "@babel/helper-plugin-utils": "^7.8.3" }, - "engines": { - "node": ">= 8" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz", + "integrity": "sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==", "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, "engines": { - "node": ">= 8" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.5.tgz", + "integrity": "sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==", "dev": true, "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { - "node": ">= 8" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@socket.io/component-emitter": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", - "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==", - "dev": true - }, - "node_modules/@stylelint/postcss-css-in-js": { - "version": "0.37.3", - "resolved": "https://registry.npmjs.org/@stylelint/postcss-css-in-js/-/postcss-css-in-js-0.37.3.tgz", - "integrity": "sha512-scLk3cSH1H9KggSniseb2KNAU5D9FWc3H7BxCSAIdtU9OWIyw0zkEZ9qEKHryRM+SExYXRKNb7tOOVNAsQ3iwg==", - "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", "dev": true, "dependencies": { - "@babel/core": "^7.17.9" + "@babel/helper-plugin-utils": "^7.10.4" }, "peerDependencies": { - "postcss": ">=7.0.0", - "postcss-syntax": ">=0.36.2" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@stylelint/postcss-markdown": { - "version": "0.36.2", - "resolved": "https://registry.npmjs.org/@stylelint/postcss-markdown/-/postcss-markdown-0.36.2.tgz", - "integrity": "sha512-2kGbqUVJUGE8dM+bMzXG/PYUWKkjLIkRLWNh39OaADkiabDRdw8ATFCgbMz5xdIcvwspPAluSL7uY+ZiTWdWmQ==", - "deprecated": "Use the original unforked package instead: postcss-markdown", + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", "dev": true, "dependencies": { - "remark": "^13.0.0", - "unist-util-find-all-after": "^3.0.2" + "@babel/helper-plugin-utils": "^7.8.0" }, "peerDependencies": { - "postcss": ">=7.0.0", - "postcss-syntax": ">=0.36.2" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@trysound/sax": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", - "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", "dev": true, - "engines": { - "node": ">=10.13.0" + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@types/cookie": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", - "dev": true - }, - "node_modules/@types/cors": { - "version": "2.8.13", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.13.tgz", - "integrity": "sha512-RG8AStHlUiV5ysZQKq97copd2UmVYw3/pRMLefISZ3S1hK104Cwm7iLQ3fTKx+lsUH2CE8FlLaYeEA2LSeqYUA==", + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", "dev": true, "dependencies": { - "@types/node": "*" + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@types/mdast": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.11.tgz", - "integrity": "sha512-Y/uImid8aAwrEA24/1tcRZwpxX3pIFTSilcNDKSPn+Y2iDywSEachzRuvgAYYLR3wpGXAsMbv5lvKLDZLeYPAw==", + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", "dev": true, "dependencies": { - "@types/unist": "*" + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@types/minimist": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", - "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", - "dev": true - }, - "node_modules/@types/node": { - "version": "20.2.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.2.5.tgz", - "integrity": "sha512-JJulVEQXmiY9Px5axXHeYGLSjhkZEnD+MDPDGbCbIAbMslkKwmygtZFy1X6s/075Yo94sf8GuSlFfPzysQrWZQ==", - "dev": true - }, - "node_modules/@types/normalize-package-data": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", - "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", - "dev": true - }, - "node_modules/@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", - "dev": true - }, - "node_modules/@types/unist": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz", - "integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==", - "dev": true - }, - "node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", "dev": true, "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" + "@babel/helper-plugin-utils": "^7.8.0" }, - "engines": { - "node": ">= 0.6" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", "dev": true, - "bin": { - "acorn": "bin/acorn" + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" }, - "engines": { - "node": ">=0.4.0" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + "@babel/core": "^7.0.0-0" } }, - "node_modules/aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", "dev": true, "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" + "@babel/helper-plugin-utils": "^7.14.5" }, "engines": { - "node": ">=8" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "@babel/helper-plugin-utils": "^7.14.5" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/almond": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/almond/-/almond-0.3.3.tgz", - "integrity": "sha512-Eh5QhyxrKnTI0OuGpwTRvzRrnu1NF3F2kbQJRwpXj/uMy0uycwqw2/RhdDrD1cBTD1JFFHFrxGIU8HQztowR0g==", "engines": { - "node": ">=0.4.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/ansi-colors": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", - "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, "engines": { - "node": ">=6" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/ansi-cyan": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-cyan/-/ansi-cyan-0.1.1.tgz", - "integrity": "sha512-eCjan3AVo/SxZ0/MyIYRtkpxIu/H3xZN7URr1vXVrISxeyz8fUFz0FJziamK4sS8I+t35y4rHg1b2PklyBe/7A==", + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz", + "integrity": "sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==", "dev": true, "dependencies": { - "ansi-wrap": "0.1.0" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { - "node": ">=0.10.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.15.tgz", + "integrity": "sha512-jBm1Es25Y+tVoTi5rfd5t1KLmL8ogLKpXszboWOTTtGFGz2RKnQe2yn7HbZ+kb/B8N0FVSGQo874NSlOU1T4+w==", "dev": true, "dependencies": { - "type-fest": "^0.21.3" + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.9", + "@babel/plugin-syntax-async-generators": "^7.8.4" }, "engines": { - "node": ">=8" + "node": ">=6.9.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/ansi-escapes/node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz", + "integrity": "sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==", "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.5" + }, "engines": { - "node": ">=10" + "node": ">=6.9.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/ansi-gray": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", - "integrity": "sha512-HrgGIZUl8h2EHuZaU9hTR/cU5nhKxpVE1V6kdGsQ8e4zirElJ5fvtfc8N7Q1oq1aatO275i8pUFUCpNWCAnVWw==", + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.22.5.tgz", + "integrity": "sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==", "dev": true, "dependencies": { - "ansi-wrap": "0.1.0" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { - "node": ">=0.10.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/ansi-red": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-red/-/ansi-red-0.1.1.tgz", - "integrity": "sha512-ewaIr5y+9CUTGFwZfpECUbFlGcC0GCw1oqR9RI6h1gQCd9Aj2GxSckCnPsVJnmfMZbwFYE+leZGASgkWl06Jow==", + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.0.tgz", + "integrity": "sha512-cOsrbmIOXmf+5YbL99/S49Y3j46k/T16b9ml8bm9lP6N9US5iQ2yBK7gpui1pg0V/WMcXdkfKbTb7HXq9u+v4g==", "dev": true, "dependencies": { - "ansi-wrap": "0.1.0" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { - "node": ">=0.10.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz", + "integrity": "sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==", "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, "engines": { - "node": ">=8" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.11.tgz", + "integrity": "sha512-GMM8gGmqI7guS/llMFk1bJDkKfn3v3C4KHK9Yg1ey5qcHcOlKb0QvcMrgzvxo+T03/4szNh5lghY+fEC98Kq9g==", "dev": true, "dependencies": { - "color-convert": "^1.9.0" + "@babel/helper-create-class-features-plugin": "^7.22.11", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" }, "engines": { - "node": ">=4" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" } }, - "node_modules/ansi-wrap": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", - "integrity": "sha512-ZyznvL8k/FZeQHr2T6LzcJ/+vBApDnMNZvfVFy3At0knswWd6rJ3/0Hhmpu8oqa6C92npmozs890sX9Dl6q+Qw==", + "node_modules/@babel/plugin-transform-classes": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.15.tgz", + "integrity": "sha512-VbbC3PGjBdE0wAWDdHM9G8Gm977pnYI0XpqMd6LrKISj8/DJXEsWqgRuTYaNE9Bv0JGhTZUzHDlMk18IpOuoqw==", "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.9", + "@babel/helper-split-export-declaration": "^7.22.6", + "globals": "^11.1.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/any-promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", - "dev": true + "node_modules/@babel/plugin-transform-classes/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz", + "integrity": "sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==", "dev": true, "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/template": "^7.22.5" }, "engines": { - "node": ">= 8" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/append-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz", - "integrity": "sha512-WLbYiXzD3y/ATLZFufV/rZvWdZOs+Z/+5v1rBZ463Jn398pa6kcde27cvozYnBoxXblGZTFfoPpsaEw0orU5BA==", + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.0.tgz", + "integrity": "sha512-vaMdgNXFkYrB+8lbgniSYWHsgqK5gjaMNcc84bMIOMRLH0L9AqYq3hwMdvnyqj1OPqea8UtjPEuS/DCenah1wg==", "dev": true, "dependencies": { - "buffer-equal": "^1.0.0" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { - "node": ">=0.10.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/archy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==", - "dev": true - }, - "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz", + "integrity": "sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==", "dev": true, "dependencies": { - "sprintf-js": "~1.0.2" + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz", + "integrity": "sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==", "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, "engines": { - "node": ">=0.10.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/arr-filter": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/arr-filter/-/arr-filter-1.1.2.tgz", - "integrity": "sha512-A2BETWCqhsecSvCkWAeVBFLH6sXEUGASuzkpjL3GR1SlL/PWL6M3J8EAAld2Uubmh39tvkJTqC9LeLHCUKmFXA==", + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.11.tgz", + "integrity": "sha512-g/21plo58sfteWjaO0ZNVb+uEOkJNjAaHhbejrnBmu011l/eNDScmkbjCC3l4FKb10ViaGU4aOkFznSu2zRHgA==", "dev": true, "dependencies": { - "make-iterator": "^1.0.0" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" }, "engines": { - "node": ">=0.10.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz", + "integrity": "sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==", "dev": true, + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, "engines": { - "node": ">=0.10.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/arr-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/arr-map/-/arr-map-2.0.2.tgz", - "integrity": "sha512-tVqVTHt+Q5Xb09qRkbu+DidW1yYzz5izWS2Xm2yFm7qJnmUfz4HPzNxbHkdRJbz2lrqI7S+z17xNYdFcBBO8Hw==", + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.11.tgz", + "integrity": "sha512-xa7aad7q7OiT8oNZ1mU7NrISjlSkVdMbNxn9IuLZyL9AJEhs1Apba3I+u5riX1dIkdptP5EKDG5XDPByWxtehw==", "dev": true, "dependencies": { - "make-iterator": "^1.0.0" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" }, "engines": { - "node": ">=0.10.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.15.tgz", + "integrity": "sha512-me6VGeHsx30+xh9fbDLLPi0J1HzmeIIyenoOQHuw2D4m2SAU3NrspX5XxJLBpqn5yrLzrlw2Iy3RA//Bx27iOA==", "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, "engines": { - "node": ">=0.10.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", - "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz", + "integrity": "sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==", + "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "is-array-buffer": "^3.0.1" + "@babel/helper-compilation-targets": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/array-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", - "integrity": "sha512-zHjL5SZa68hkKHBFBK6DJCTtr9sfTCPCaph/L7tMSLcTFgy+zX7E+6q5UArbtOtMBCtxdICpfTCspRse+ywyXA==", + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.11.tgz", + "integrity": "sha512-CxT5tCqpA9/jXFlme9xIBCc5RPtdDq3JpkkhgHQqtDdiTnTI0jtZ0QzXhr5DILeYifDPp2wvY2ad+7+hLMW5Pw==", "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-json-strings": "^7.8.3" + }, "engines": { - "node": ">=0.10.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/array-includes": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", - "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", + "node_modules/@babel/plugin-transform-literals": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz", + "integrity": "sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "get-intrinsic": "^1.1.3", - "is-string": "^1.0.7" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { - "node": ">= 0.4" + "node": ">=6.9.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/array-initial": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/array-initial/-/array-initial-1.1.0.tgz", - "integrity": "sha512-BC4Yl89vneCYfpLrs5JU2aAu9/a+xWbeKhvISg9PT7eWFB9UlRvI+rKEtk6mgxWr3dSkk9gQ8hCrdqt06NXPdw==", + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.11.tgz", + "integrity": "sha512-qQwRTP4+6xFCDV5k7gZBF3C31K34ut0tbEcTKxlX/0KXxm9GLcO14p570aWxFvVzx6QAfPgq7gaeIHXJC8LswQ==", "dev": true, "dependencies": { - "array-slice": "^1.0.0", - "is-number": "^4.0.0" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" }, "engines": { - "node": ">=0.10.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/array-initial/node_modules/is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.22.5.tgz", + "integrity": "sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==", "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, "engines": { - "node": ">=0.10.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/array-last": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/array-last/-/array-last-1.3.0.tgz", - "integrity": "sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg==", + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.0.tgz", + "integrity": "sha512-xWT5gefv2HGSm4QHtgc1sYPbseOyf+FFDo2JbpE25GWl5BqTGO9IMwTYJRoIdjsF85GE+VegHxSCUt5EvoYTAw==", "dev": true, "dependencies": { - "is-number": "^4.0.0" + "@babel/helper-module-transforms": "^7.23.0", + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { - "node": ">=0.10.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/array-last/node_modules/is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.0.tgz", + "integrity": "sha512-32Xzss14/UVc7k9g775yMIvkVK8xwKE0DPdP5JTapr3+Z9w4tzeOuLNY6BXDQR6BdnzIlXnCGAzsk/ICHBLVWQ==", "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.23.0", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-simple-access": "^7.22.5" + }, "engines": { - "node": ">=0.10.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/array-slice": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", - "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.0.tgz", + "integrity": "sha512-qBej6ctXZD2f+DhlOC9yO47yEYgUh5CZNz/aBoH4j/3NOlRfJXJbY7xDQCqQVf9KbrqGzIWER1f23doHGrIHFg==", "dev": true, + "dependencies": { + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-module-transforms": "^7.23.0", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20" + }, "engines": { - "node": ">=0.10.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/array-sort": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-sort/-/array-sort-1.0.0.tgz", - "integrity": "sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg==", + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz", + "integrity": "sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==", "dev": true, "dependencies": { - "default-compare": "^1.0.0", - "get-value": "^2.0.6", - "kind-of": "^5.0.2" + "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { - "node": ">=0.10.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", + "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, "engines": { - "node": ">=8" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz", + "integrity": "sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==", "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, "engines": { - "node": ">=0.10.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/array.prototype.flatmap": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", - "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.11.tgz", + "integrity": "sha512-YZWOw4HxXrotb5xsjMJUDlLgcDXSfO9eCmdl1bgW4+/lAGdkjaEvOnQ4p5WKKdUgSzO39dgPl0pTnfxm0OAXcg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-shim-unscopables": "^1.0.0" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" }, "engines": { - "node": ">= 0.4" + "node": ">=6.9.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/array.prototype.tosorted": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz", - "integrity": "sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==", + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.11.tgz", + "integrity": "sha512-3dzU4QGPsILdJbASKhF/V2TVP+gJya1PsueQCxIPCEcerqF21oEcrob4mzjsp2Py/1nLfF5m+xYNMDpmA8vffg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-shim-unscopables": "^1.0.0", - "get-intrinsic": "^1.1.3" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.1.tgz", - "integrity": "sha512-09x0ZWFEjj4WD8PDbykUwo3t9arLn8NIzmmYEJFpYekOAQjpkGSyrQhNoRTcwwcFRu+ycWF78QZ63oWTqSjBcw==", + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.15.tgz", + "integrity": "sha512-fEB+I1+gAmfAyxZcX1+ZUwLeAuuf8VIg67CTznZE0MqVFumWkh8xWtn58I4dxdVf080wn7gzWoF8vndOViJe9Q==", + "dev": true, "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "get-intrinsic": "^1.2.1", - "is-array-buffer": "^3.0.2", - "is-shared-array-buffer": "^1.0.2" + "@babel/compat-data": "^7.22.9", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.22.15" }, "engines": { - "node": ">= 0.4" + "node": ">=6.9.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/arrify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", - "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.22.5.tgz", + "integrity": "sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==", "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.5" + }, "engines": { - "node": ">=8" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.11.tgz", + "integrity": "sha512-rli0WxesXUeCJnMYhzAglEjLWVDF6ahb45HuprcmQuLidBJFWjNnOzssk2kuc6e33FlLaiZhG/kUIzUMWdBKaQ==", "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true, - "engines": { - "node": ">=8" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/async": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", - "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.0.tgz", + "integrity": "sha512-sBBGXbLJjxTzLBF5rFWaikMnOGOk/BmK6vVByIdEggZ7Vn6CvWXZyRkkLFK6WE0IF8jSliyOkUN6SScFgzCM0g==", "dev": true, "dependencies": { - "lodash": "^4.17.14" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/async-done": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/async-done/-/async-done-2.0.0.tgz", - "integrity": "sha512-j0s3bzYq9yKIVLKGE/tWlCpa3PfFLcrDZLTSVdnnCTGagXuXBJO4SsY9Xdk/fQBirCkH4evW5xOeJXqlAQFdsw==", + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.15.tgz", + "integrity": "sha512-hjk7qKIqhyzhhUvRT683TYQOFa/4cQKwQy7ALvTpODswN40MljzNDa0YldevS6tGbxwaEKVn502JmY0dP7qEtQ==", "dev": true, "dependencies": { - "end-of-stream": "^1.4.4", - "once": "^1.4.0", - "stream-exhaust": "^1.0.2" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { - "node": ">= 10.13.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/async-each-series": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/async-each-series/-/async-each-series-0.1.1.tgz", - "integrity": "sha512-p4jj6Fws4Iy2m0iCmI2am2ZNZCgbdgE+P8F/8csmn2vx7ixXrO2zGcuNsD46X5uZSVecmkEy/M06X2vG8KD6dQ==", + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.5.tgz", + "integrity": "sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==", "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, "engines": { - "node": ">=0.8.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/async-settle": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-1.0.0.tgz", - "integrity": "sha512-VPXfB4Vk49z1LHHodrEQ6Xf7W4gg1w0dAPROHngx7qgDjqmIQ+fXmwgGXTW/ITLai0YLSvWepJOP9EVpMnEAcw==", + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.11.tgz", + "integrity": "sha512-sSCbqZDBKHetvjSwpyWzhuHkmW5RummxJBVbYLkGkaiTOWGxml7SXt0iWa03bzxFIx7wOj3g/ILRd0RcJKBeSQ==", "dev": true, "dependencies": { - "async-done": "^1.2.2" + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.11", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" }, "engines": { - "node": ">= 0.10" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/async-settle/node_modules/async-done": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.2.tgz", - "integrity": "sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw==", + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.22.5.tgz", + "integrity": "sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==", "dev": true, "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.2", - "process-nextick-args": "^2.0.0", - "stream-exhaust": "^1.0.1" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { - "node": ">= 0.10" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/asynciterator.prototype": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz", - "integrity": "sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==", + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.10.tgz", + "integrity": "sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw==", "dev": true, "dependencies": { - "has-symbols": "^1.0.3" - } - }, - "node_modules/atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true, - "bin": { - "atob": "bin/atob.js" + "@babel/helper-plugin-utils": "^7.22.5", + "regenerator-transform": "^0.15.2" }, "engines": { - "node": ">= 4.5.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/autoprefixer": { - "version": "10.4.14", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.14.tgz", - "integrity": "sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==", + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz", + "integrity": "sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==", "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/autoprefixer" - } - ], "dependencies": { - "browserslist": "^4.21.5", - "caniuse-lite": "^1.0.30001464", - "fraction.js": "^4.2.0", - "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", - "postcss-value-parser": "^4.2.0" - }, - "bin": { - "autoprefixer": "bin/autoprefixer" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { - "node": "^10 || ^12 || >=14" + "node": ">=6.9.0" }, "peerDependencies": { - "postcss": "^8.1.0" + "@babel/core": "^7.0.0-0" } }, - "node_modules/available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz", + "integrity": "sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, "engines": { - "node": ">= 0.4" + "node": ">=6.9.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "node_modules/@babel/plugin-transform-spread": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz", + "integrity": "sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==", "dev": true, "dependencies": { - "follow-redirects": "^1.14.0" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/babel-eslint": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.1.0.tgz", - "integrity": "sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==", - "deprecated": "babel-eslint is now @babel/eslint-parser. This package will no longer receive updates.", + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.22.5.tgz", + "integrity": "sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.7.0", - "@babel/traverse": "^7.7.0", - "@babel/types": "^7.7.0", - "eslint-visitor-keys": "^1.0.0", - "resolve": "^1.12.0" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { - "node": ">=6" + "node": ">=6.9.0" }, "peerDependencies": { - "eslint": ">= 4.12.1" + "@babel/core": "^7.0.0-0" } }, - "node_modules/bach": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/bach/-/bach-1.2.0.tgz", - "integrity": "sha512-bZOOfCb3gXBXbTFXq3OZtGR88LwGeJvzu6szttaIzymOTS4ZttBNOWSv7aLZja2EMycKtRYV0Oa8SNKH/zkxvg==", + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.22.5.tgz", + "integrity": "sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==", "dev": true, "dependencies": { - "arr-filter": "^1.1.1", - "arr-flatten": "^1.0.1", - "arr-map": "^2.0.0", - "array-each": "^1.0.0", - "array-initial": "^1.0.0", - "array-last": "^1.1.1", - "async-done": "^1.2.2", - "async-settle": "^1.0.0", - "now-and-later": "^2.0.0" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { - "node": ">= 0.10" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/bach/node_modules/async-done": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.2.tgz", - "integrity": "sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw==", + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.22.5.tgz", + "integrity": "sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==", "dev": true, "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.2", - "process-nextick-args": "^2.0.0", - "stream-exhaust": "^1.0.1" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { - "node": ">= 0.10" - } - }, - "node_modules/bail": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz", - "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "node_modules/base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.10.tgz", + "integrity": "sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg==", "dev": true, "dependencies": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { - "node": ">=0.10.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/base/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.5.tgz", + "integrity": "sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==", "dev": true, "dependencies": { - "is-descriptor": "^1.0.0" + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { - "node": ">=0.10.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/base64id": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", - "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz", + "integrity": "sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==", "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, "engines": { - "node": "^4.5.0 || >= 5.9" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", - "dev": true - }, - "node_modules/binary": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", - "integrity": "sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg==", + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.5.tgz", + "integrity": "sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==", "dev": true, "dependencies": { - "buffers": "~0.1.1", - "chainsaw": "~0.1.0" + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { - "node": "*" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, + "node_modules/@babel/preset-env": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.22.20.tgz", + "integrity": "sha512-11MY04gGC4kSzlPHRfvVkNAZhUxOvm7DCJ37hPDnUENwe06npjIRAfInEMTGSb4LZK5ZgDFkv5hw0lGebHeTyg==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.22.20", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.22.15", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.22.15", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.22.5", + "@babel/plugin-syntax-import-attributes": "^7.22.5", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.22.5", + "@babel/plugin-transform-async-generator-functions": "^7.22.15", + "@babel/plugin-transform-async-to-generator": "^7.22.5", + "@babel/plugin-transform-block-scoped-functions": "^7.22.5", + "@babel/plugin-transform-block-scoping": "^7.22.15", + "@babel/plugin-transform-class-properties": "^7.22.5", + "@babel/plugin-transform-class-static-block": "^7.22.11", + "@babel/plugin-transform-classes": "^7.22.15", + "@babel/plugin-transform-computed-properties": "^7.22.5", + "@babel/plugin-transform-destructuring": "^7.22.15", + "@babel/plugin-transform-dotall-regex": "^7.22.5", + "@babel/plugin-transform-duplicate-keys": "^7.22.5", + "@babel/plugin-transform-dynamic-import": "^7.22.11", + "@babel/plugin-transform-exponentiation-operator": "^7.22.5", + "@babel/plugin-transform-export-namespace-from": "^7.22.11", + "@babel/plugin-transform-for-of": "^7.22.15", + "@babel/plugin-transform-function-name": "^7.22.5", + "@babel/plugin-transform-json-strings": "^7.22.11", + "@babel/plugin-transform-literals": "^7.22.5", + "@babel/plugin-transform-logical-assignment-operators": "^7.22.11", + "@babel/plugin-transform-member-expression-literals": "^7.22.5", + "@babel/plugin-transform-modules-amd": "^7.22.5", + "@babel/plugin-transform-modules-commonjs": "^7.22.15", + "@babel/plugin-transform-modules-systemjs": "^7.22.11", + "@babel/plugin-transform-modules-umd": "^7.22.5", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", + "@babel/plugin-transform-new-target": "^7.22.5", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.11", + "@babel/plugin-transform-numeric-separator": "^7.22.11", + "@babel/plugin-transform-object-rest-spread": "^7.22.15", + "@babel/plugin-transform-object-super": "^7.22.5", + "@babel/plugin-transform-optional-catch-binding": "^7.22.11", + "@babel/plugin-transform-optional-chaining": "^7.22.15", + "@babel/plugin-transform-parameters": "^7.22.15", + "@babel/plugin-transform-private-methods": "^7.22.5", + "@babel/plugin-transform-private-property-in-object": "^7.22.11", + "@babel/plugin-transform-property-literals": "^7.22.5", + "@babel/plugin-transform-regenerator": "^7.22.10", + "@babel/plugin-transform-reserved-words": "^7.22.5", + "@babel/plugin-transform-shorthand-properties": "^7.22.5", + "@babel/plugin-transform-spread": "^7.22.5", + "@babel/plugin-transform-sticky-regex": "^7.22.5", + "@babel/plugin-transform-template-literals": "^7.22.5", + "@babel/plugin-transform-typeof-symbol": "^7.22.5", + "@babel/plugin-transform-unicode-escapes": "^7.22.10", + "@babel/plugin-transform-unicode-property-regex": "^7.22.5", + "@babel/plugin-transform-unicode-regex": "^7.22.5", + "@babel/plugin-transform-unicode-sets-regex": "^7.22.5", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "@babel/types": "^7.22.19", + "babel-plugin-polyfill-corejs2": "^0.4.5", + "babel-plugin-polyfill-corejs3": "^0.8.3", + "babel-plugin-polyfill-regenerator": "^0.5.2", + "core-js-compat": "^3.31.0", + "semver": "^6.3.1" + }, "engines": { - "node": ">=8" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "dev": true - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "node_modules/@babel/preset-env/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "node_modules/@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", "dev": true, "dependencies": { - "fill-range": "^7.0.1" + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" }, - "engines": { - "node": ">=8" + "peerDependencies": { + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/browser-sync": { - "version": "2.29.3", - "resolved": "https://registry.npmjs.org/browser-sync/-/browser-sync-2.29.3.tgz", - "integrity": "sha512-NiM38O6XU84+MN+gzspVmXV2fTOoe+jBqIBx3IBdhZrdeURr6ZgznJr/p+hQ+KzkKEiGH/GcC4SQFSL0jV49bg==", - "dev": true, - "dependencies": { - "browser-sync-client": "^2.29.3", - "browser-sync-ui": "^2.29.3", - "bs-recipes": "1.3.4", - "chalk": "4.1.2", - "chokidar": "^3.5.1", - "connect": "3.6.6", - "connect-history-api-fallback": "^1", - "dev-ip": "^1.0.1", - "easy-extender": "^2.3.4", - "eazy-logger": "^4.0.1", - "etag": "^1.8.1", - "fresh": "^0.5.2", - "fs-extra": "3.0.1", - "http-proxy": "^1.18.1", - "immutable": "^3", - "localtunnel": "^2.0.1", - "micromatch": "^4.0.2", - "opn": "5.3.0", - "portscanner": "2.2.0", - "raw-body": "^2.3.2", - "resp-modifier": "6.0.2", - "rx": "4.1.0", - "send": "0.16.2", - "serve-index": "1.9.1", - "serve-static": "1.13.2", - "server-destroy": "1.0.1", - "socket.io": "^4.4.1", - "ua-parser-js": "^1.0.33", - "yargs": "^17.3.1" - }, - "bin": { - "browser-sync": "dist/bin.js" + "node_modules/@babel/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", + "dev": true + }, + "node_modules/@babel/runtime": { + "version": "7.23.1", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.1.tgz", + "integrity": "sha512-hC2v6p8ZSI/W0HUzh3V8C5g+NwSKzKPtJwSpTjwl0o297GP9+ZLQSkdvHz46CM3LqyoXxq+5G9komY+eSqSO0g==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.14.0" }, "engines": { - "node": ">= 8.0.0" + "node": ">=6.9.0" } }, - "node_modules/browser-sync-client": { - "version": "2.29.3", - "resolved": "https://registry.npmjs.org/browser-sync-client/-/browser-sync-client-2.29.3.tgz", - "integrity": "sha512-4tK5JKCl7v/3aLbmCBMzpufiYLsB1+UI+7tUXCCp5qF0AllHy/jAqYu6k7hUF3hYtlClKpxExWaR+rH+ny07wQ==", + "node_modules/@babel/template": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", "dev": true, "dependencies": { - "etag": "1.8.1", - "fresh": "0.5.2", - "mitt": "^1.1.3" + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" }, "engines": { - "node": ">=8.0.0" + "node": ">=6.9.0" } }, - "node_modules/browser-sync-ui": { - "version": "2.29.3", - "resolved": "https://registry.npmjs.org/browser-sync-ui/-/browser-sync-ui-2.29.3.tgz", - "integrity": "sha512-kBYOIQjU/D/3kYtUIJtj82e797Egk1FB2broqItkr3i4eF1qiHbFCG6srksu9gWhfmuM/TNG76jMfzAdxEPakg==", + "node_modules/@babel/template/node_modules/@babel/code-frame": { + "version": "7.22.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", + "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", "dev": true, "dependencies": { - "async-each-series": "0.1.1", - "chalk": "4.1.2", - "connect-history-api-fallback": "^1", - "immutable": "^3", - "server-destroy": "1.0.1", - "socket.io-client": "^4.4.1", - "stream-throttle": "^0.1.3" + "@babel/highlight": "^7.22.13", + "chalk": "^2.4.2" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/browser-sync-ui/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/@babel/template/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "dependencies": { - "color-convert": "^2.0.1" + "color-convert": "^1.9.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=4" } }, - "node_modules/browser-sync-ui/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/@babel/template/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=4" } }, - "node_modules/browser-sync-ui/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/@babel/template/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" + "color-name": "1.1.3" } }, - "node_modules/browser-sync-ui/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "node_modules/@babel/template/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true }, - "node_modules/browser-sync-ui/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/@babel/template/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, "engines": { - "node": ">=8" + "node": ">=0.8.0" } }, - "node_modules/browser-sync-ui/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/@babel/template/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/browser-sync/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, + "node_modules/@babel/template/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, "dependencies": { - "color-convert": "^2.0.1" + "has-flag": "^3.0.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=4" } }, - "node_modules/browser-sync/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "node_modules/@babel/traverse": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.0.tgz", + "integrity": "sha512-t/QaEvyIoIkwzpiZ7aoSKK8kObQYeF7T2v+dazAYCb8SXtp58zEVkWW7zAnju8FNKNdr4ScAOEDmMItbyOmEYw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.23.0", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.23.0", + "@babel/types": "^7.23.0", + "debug": "^4.1.0", + "globals": "^11.1.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=6.9.0" } }, - "node_modules/browser-sync/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/@babel/traverse/node_modules/@babel/code-frame": { + "version": "7.22.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", + "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", "dev": true, "dependencies": { - "color-name": "~1.1.4" + "@babel/highlight": "^7.22.13", + "chalk": "^2.4.2" }, "engines": { - "node": ">=7.0.0" + "node": ">=6.9.0" } }, - "node_modules/browser-sync/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/browser-sync/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/@babel/traverse/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/browser-sync/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/@babel/traverse/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" }, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/browserslist": { - "version": "4.21.7", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.7.tgz", - "integrity": "sha512-BauCXrQ7I2ftSqd2mvKHGo85XR0u7Ru3C/Hxsy/0TkfCtjrmAbPdzLGasmoiBxplpDXlPvdjX9u7srIMfgasNA==", + "node_modules/@babel/traverse/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], "dependencies": { - "caniuse-lite": "^1.0.30001489", - "electron-to-chromium": "^1.4.411", - "node-releases": "^2.0.12", - "update-browserslist-db": "^1.0.11" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + "color-name": "1.1.3" } }, - "node_modules/bs-recipes": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/bs-recipes/-/bs-recipes-1.3.4.tgz", - "integrity": "sha512-BXvDkqhDNxXEjeGM8LFkSbR+jzmP/CYpCiVKYn+soB1dDldeU15EBNDkwVXndKuX35wnNUaPd0qSoQEAkmQtMw==", + "node_modules/@babel/traverse/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true }, - "node_modules/buffer-equal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.1.tgz", - "integrity": "sha512-QoV3ptgEaQpvVwbXdSO39iqPQTCxSF7A5U99AxbHYqUdCizL/lH2Z0A2y6nbZucxMEOtNyZfG2s6gsVugGpKkg==", + "node_modules/@babel/traverse/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, + "dependencies": { + "ms": "2.1.2" + }, "engines": { - "node": ">=0.4" + "node": ">=6.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true + "node_modules/@babel/traverse/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } }, - "node_modules/buffers": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", - "integrity": "sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==", + "node_modules/@babel/traverse/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true, "engines": { - "node": ">=0.2.0" + "node": ">=4" } }, - "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "node_modules/@babel/traverse/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, "engines": { - "node": ">= 0.8" + "node": ">=4" } }, - "node_modules/cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "node_modules/@babel/traverse/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@babel/traverse/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "dependencies": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" + "has-flag": "^3.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/cache-base/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "node_modules/@babel/types": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", + "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", "dev": true, "dependencies": { - "is-extendable": "^0.1.0" + "@babel/helper-string-parser": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20", + "to-fast-properties": "^2.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=6.9.0" } }, - "node_modules/cache-base/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "node_modules/@canvas/image-data": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@canvas/image-data/-/image-data-1.0.0.tgz", + "integrity": "sha512-BxOqI5LgsIQP1odU5KMwV9yoijleOPzHL18/YvNqF9KFSGF2K/DLlYAbDQsWqd/1nbaFuSkYD/191dpMtNh4vw==", + "dev": true + }, + "node_modules/@esbuild/android-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", + "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", + "cpu": [ + "arm" + ], "dev": true, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, - "node_modules/cache-base/node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "node_modules/@esbuild/android-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", + "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, - "node_modules/cache-base/node_modules/set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "node_modules/@esbuild/android-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz", + "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, - "node_modules/cache-base/node_modules/split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "node_modules/@esbuild/darwin-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", + "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "extend-shallow": "^3.0.0" - }, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, - "node_modules/cache-base/node_modules/split-string/node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "node_modules/@esbuild/darwin-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", + "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, - "node_modules/cache-base/node_modules/split-string/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", + "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4" - }, + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, - "node_modules/cache-base/node_modules/union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "node_modules/@esbuild/freebsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", + "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - }, + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, - "node_modules/cachebust": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/cachebust/-/cachebust-2.4.1.tgz", - "integrity": "sha512-Y2O58hqbFeeD09qyC3o9nPp9qHPC4KvRnZkiXI+Eaxs15IIA/3mqGrTrE8AWcThgADrwtQ+97yKbc2c/CypaAQ==", + "node_modules/@esbuild/linux-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", + "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", + "cpu": [ + "arm" + ], "dev": true, - "dependencies": { - "cheerio": "^0.22.0", - "md5": "^2.0.0" - }, - "bin": { - "cachebust": "cli.js" - } - }, - "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" } }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "node_modules/@esbuild/linux-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", + "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", + "cpu": [ + "arm64" + ], "dev": true, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6" + "node": ">=12" } }, - "node_modules/camel-case": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", - "integrity": "sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w==", + "node_modules/@esbuild/linux-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", + "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", + "cpu": [ + "ia32" + ], "dev": true, - "dependencies": { - "no-case": "^2.2.0", - "upper-case": "^1.1.1" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" } }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "node_modules/@esbuild/linux-loong64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", + "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", + "cpu": [ + "loong64" + ], "dev": true, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6" + "node": ">=12" } }, - "node_modules/camelcase-keys": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", - "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", + "node_modules/@esbuild/linux-mips64el": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", + "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", + "cpu": [ + "mips64el" + ], "dev": true, - "dependencies": { - "camelcase": "^5.3.1", - "map-obj": "^4.0.0", - "quick-lru": "^4.0.1" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=12" } }, - "node_modules/caniuse-lite": { - "version": "1.0.30001495", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001495.tgz", - "integrity": "sha512-F6x5IEuigtUfU5ZMQK2jsy5JqUUlEFRVZq8bO2a+ysq5K7jD6PPc9YXZj78xDNS3uNchesp1Jw47YXEqr+Viyg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ] - }, - "node_modules/chainsaw": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", - "integrity": "sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==", + "node_modules/@esbuild/linux-ppc64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", + "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", + "cpu": [ + "ppc64" + ], "dev": true, - "dependencies": { - "traverse": ">=0.3.0 <0.4" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "*" + "node": ">=12" } }, - "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "node_modules/@esbuild/linux-riscv64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", + "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", + "cpu": [ + "riscv64" + ], "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=4" + "node": ">=12" } }, - "node_modules/character-entities": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", - "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", + "node_modules/@esbuild/linux-s390x": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", + "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", + "cpu": [ + "s390x" + ], "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" } }, - "node_modules/character-entities-legacy": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", - "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", + "node_modules/@esbuild/linux-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", + "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", + "cpu": [ + "x64" + ], "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" } }, - "node_modules/character-reference-invalid": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", - "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", + "node_modules/@esbuild/netbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", + "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", + "cpu": [ + "x64" + ], "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" } }, - "node_modules/chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "dev": true - }, - "node_modules/charenc": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", - "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==", + "node_modules/@esbuild/openbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", + "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", + "cpu": [ + "x64" + ], "dev": true, + "optional": true, + "os": [ + "openbsd" + ], "engines": { - "node": "*" + "node": ">=12" } }, - "node_modules/cheerio": { - "version": "0.22.0", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.22.0.tgz", - "integrity": "sha512-8/MzidM6G/TgRelkzDG13y3Y9LxBjCb+8yOEZ9+wwq5gVF2w2pV0wmHvjfT0RvuxGyR7UEuK36r+yYMbT4uKgA==", + "node_modules/@esbuild/sunos-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", + "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "css-select": "~1.2.0", - "dom-serializer": "~0.1.0", - "entities": "~1.1.1", - "htmlparser2": "^3.9.1", - "lodash.assignin": "^4.0.9", - "lodash.bind": "^4.1.4", - "lodash.defaults": "^4.0.1", - "lodash.filter": "^4.4.0", - "lodash.flatten": "^4.2.0", - "lodash.foreach": "^4.3.0", - "lodash.map": "^4.4.0", - "lodash.merge": "^4.4.0", - "lodash.pick": "^4.2.1", - "lodash.reduce": "^4.4.0", - "lodash.reject": "^4.4.0", - "lodash.some": "^4.4.0" - }, + "optional": true, + "os": [ + "sunos" + ], "engines": { - "node": ">= 0.6" + "node": ">=12" } }, - "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "node_modules/@esbuild/win32-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", + "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", + "cpu": [ + "arm64" + ], "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } + "optional": true, + "os": [ + "win32" ], - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" + "node": ">=12" } }, - "node_modules/class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "node_modules/@esbuild/win32-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", + "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", + "cpu": [ + "ia32" + ], "dev": true, - "dependencies": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, - "node_modules/class-utils/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "node_modules/@esbuild/win32-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", + "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, - "node_modules/class-utils/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "node_modules/@eslint/eslintrc": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", + "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", "dev": true, "dependencies": { - "kind-of": "^3.0.2" + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^13.9.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" }, "engines": { - "node": ">=0.10.0" + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/class-utils/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "node_modules/@eslint/eslintrc/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "dependencies": { - "is-buffer": "^1.1.5" + "ms": "2.1.2" }, "engines": { - "node": ">=0.10.0" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/class-utils/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "node_modules/@eslint/eslintrc/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", + "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", "dev": true, "dependencies": { - "kind-of": "^3.0.2" + "@humanwhocodes/object-schema": "^1.2.0", + "debug": "^4.1.1", + "minimatch": "^3.0.4" }, "engines": { - "node": ">=0.10.0" + "node": ">=10.10.0" } }, - "node_modules/class-utils/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "node_modules/@humanwhocodes/config-array/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "dependencies": { - "is-buffer": "^1.1.5" + "ms": "2.1.2" }, "engines": { - "node": ">=0.10.0" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/class-utils/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "node_modules/@humanwhocodes/config-array/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", "dev": true, "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" }, "engines": { - "node": ">=0.10.0" + "node": ">=6.0.0" } }, - "node_modules/clean-css": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.4.tgz", - "integrity": "sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==", + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", "dev": true, - "dependencies": { - "source-map": "~0.6.0" - }, "engines": { - "node": ">= 4.0" + "node": ">=6.0.0" } }, - "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", "dev": true, "engines": { - "node": ">=6" + "node": ">=6.0.0" } }, - "node_modules/cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "node_modules/@jridgewell/source-map": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", + "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", "dev": true, "dependencies": { - "restore-cursor": "^3.1.0" - }, - "engines": { - "node": ">=8" + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" } }, - "node_modules/cli-width": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", - "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz", + "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==", "dev": true, - "engines": { - "node": ">= 10" + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" }, "engines": { - "node": ">=12" + "node": ">= 8" } }, - "node_modules/clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, "engines": { - "node": ">=0.8" + "node": ">= 8" } }, - "node_modules/clone-buffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", - "integrity": "sha512-KLLTJWrvwIP+OPfMn0x2PheDEP20RPUcGXj/ERegTgdmPEZylALQldygiqrPPu8P45uNuPs7ckmReLY6v/iA5g==", + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, - "engines": { - "node": ">= 0.10" + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" } }, - "node_modules/clone-regexp": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clone-regexp/-/clone-regexp-2.2.0.tgz", - "integrity": "sha512-beMpP7BOtTipFuW8hrJvREQ2DrRu3BE7by0ZpibtfBA+qfHYvMGTc2Yb1JMYPKg/JUw0CHYvpg796aNTSW9z7Q==", + "node_modules/@surma/rollup-plugin-off-main-thread": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz", + "integrity": "sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==", "dev": true, "dependencies": { - "is-regexp": "^2.0.0" - }, - "engines": { - "node": ">=6" + "ejs": "^3.1.6", + "json5": "^2.2.0", + "magic-string": "^0.25.0", + "string.prototype.matchall": "^4.0.6" } }, - "node_modules/clone-stats": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", - "integrity": "sha512-au6ydSpg6nsrigcZ4m8Bc9hxjeW+GJ8xh5G3BJCMt4WXe1H10UNaVOamqQTmrx1kjVuxAHIQSNU6hY4Nsn9/ag==", + "node_modules/@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", "dev": true }, - "node_modules/cloneable-readable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.3.tgz", - "integrity": "sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==", + "node_modules/@types/node": { + "version": "20.8.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.2.tgz", + "integrity": "sha512-Vvycsc9FQdwhxE3y3DzeIxuEJbWGDsnrxvMADzTDF/lcdR9/K+AQIeAghTQsHtotg/q0j3WEOYS/jQgSdWue3w==", + "dev": true + }, + "node_modules/@types/resolve": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", + "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", "dev": true, "dependencies": { - "inherits": "^2.0.1", - "process-nextick-args": "^2.0.0", - "readable-stream": "^2.3.5" + "@types/node": "*" } }, - "node_modules/code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } + "node_modules/@types/trusted-types": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.4.tgz", + "integrity": "sha512-IDaobHimLQhjwsQ/NMwRVfa/yL7L/wriQPMhw1ZJall0KX6E1oxk29XMDeilW5qTIg5aoiqf5Udy8U/51aNoQQ==", + "dev": true }, - "node_modules/collection-map": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-map/-/collection-map-1.0.0.tgz", - "integrity": "sha512-5D2XXSpkOnleOI21TG7p3T0bGAsZ/XknZpKBmGYyluO8pw4zA3K8ZlrBIbC4FXg3m6z/RNFiUFfT2sQK01+UHA==", + "node_modules/@vite-pwa/assets-generator": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/@vite-pwa/assets-generator/-/assets-generator-0.0.10.tgz", + "integrity": "sha512-Ya3iE0EWIV+0g0XFXIjqSU8ZnhpJeLi9/xx+VfbSyXThKjk168GUYqd1z+SOuRO03bSRFDeK8wGixtwWuedjqg==", "dev": true, "dependencies": { - "arr-map": "^2.0.2", - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" + "cac": "^6.7.14", + "colorette": "^2.0.20", + "consola": "^3.2.3", + "sharp": "^0.32.5", + "sharp-ico": "^0.1.5", + "unconfig": "^0.3.10" + }, + "bin": { + "pwa-assets-generator": "bin/pwa-assets-generator.mjs" }, "engines": { - "node": ">=0.10.0" + "node": ">=16.14.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" } }, - "node_modules/collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", + "node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", "dev": true, - "dependencies": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" + "bin": { + "acorn": "bin/acorn" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" + "node": ">=0.4.0" } }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/color-support": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, - "bin": { - "color-support": "bin.js" + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/commander": { - "version": "2.17.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", - "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", - "dev": true - }, - "node_modules/component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "node_modules/concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, - "engines": [ - "node >= 0.8" - ], "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/connect": { - "version": "3.6.6", - "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.6.tgz", - "integrity": "sha512-OO7axMmPpu/2XuX1+2Yrg0ddju31B6xLZMWkJ5rYBu4YRmRVlOjvlY6kw2FJKiAzyxGwnrDUAG4s1Pf0sbBMCQ==", + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", "dev": true, - "dependencies": { - "debug": "2.6.9", - "finalhandler": "1.1.0", - "parseurl": "~1.3.2", - "utils-merge": "1.0.1" - }, "engines": { - "node": ">= 0.10.0" + "node": ">=6" } }, - "node_modules/connect-history-api-fallback": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", - "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, "engines": { - "node": ">=0.8" + "node": ">=8" } }, - "node_modules/connect/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/connect/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true - }, - "node_modules/cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", - "dev": true, + "color-convert": "^2.0.1" + }, "engines": { - "node": ">= 0.6" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==", + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 8" } }, - "node_modules/copy-props": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-2.0.5.tgz", - "integrity": "sha512-XBlx8HSqrT0ObQwmSzM7WE5k8FxTV75h1DX1Z3n6NhQ/UYYAvInWYmG06vFt7hQZArE2fuO62aihiWIVQwh1sw==", + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, "dependencies": { - "each-props": "^1.3.2", - "is-plain-object": "^5.0.0" + "sprintf-js": "~1.0.2" } }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true - }, - "node_modules/cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "dev": true, + "node_modules/array-buffer-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", + "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", "dependencies": { - "object-assign": "^4", - "vary": "^1" + "call-bind": "^1.0.2", + "is-array-buffer": "^3.0.1" }, - "engines": { - "node": ">= 0.10" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/cosmiconfig": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", - "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "node_modules/array-includes": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz", + "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==", "dev": true, "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "is-string": "^1.0.7" }, "engines": { - "node": ">=10" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "node_modules/array.prototype.flat": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", "dev": true, "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" }, "engines": { - "node": ">= 8" - } - }, - "node_modules/crypt": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", - "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==", - "dev": true, - "engines": { - "node": "*" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/css": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/css/-/css-3.0.0.tgz", - "integrity": "sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==", + "node_modules/array.prototype.flatmap": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", "dev": true, "dependencies": { - "inherits": "^2.0.4", - "source-map": "^0.6.1", - "source-map-resolve": "^0.6.0" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/css-select": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", - "integrity": "sha512-dUQOBoqdR7QwV90WysXPLXG5LO7nhYBgiWVfxF80DKPF8zx1t/pUd2FYy73emg3zrjtM6dzmYgbHKfV2rxiHQA==", + "node_modules/array.prototype.tosorted": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.2.tgz", + "integrity": "sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg==", "dev": true, "dependencies": { - "boolbase": "~1.0.0", - "css-what": "2.1", - "domutils": "1.5.1", - "nth-check": "~1.0.1" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0", + "get-intrinsic": "^1.2.1" } }, - "node_modules/css-tree": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz", - "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==", - "dev": true, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", + "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==", "dependencies": { - "mdn-data": "2.0.28", - "source-map-js": "^1.0.1" + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "is-array-buffer": "^3.0.2", + "is-shared-array-buffer": "^1.0.2" }, "engines": { - "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", - "npm": ">=7.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/css-what": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", - "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==", + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "dev": true, "engines": { - "node": "*" + "node": ">=8" } }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "node_modules/asynciterator.prototype": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz", + "integrity": "sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==", "dev": true, - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" + "dependencies": { + "has-symbols": "^1.0.3" } }, - "node_modules/csso": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz", - "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==", + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", "dev": true, - "dependencies": { - "css-tree": "~2.2.0" - }, "engines": { - "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", - "npm": ">=7.0.0" + "node": ">= 4.0.0" } }, - "node_modules/d": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", - "dev": true, - "dependencies": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/d3-collection": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/d3-collection/-/d3-collection-1.0.7.tgz", - "integrity": "sha512-ii0/r5f4sjKNTfh84Di+DpztYwqKhEyUlKoPrzUFfeSkWxjW49xU2QzO9qrPrNkpdI0XJkfzvmTu8V2Zylln6A==" - }, - "node_modules/d3-color": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", - "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-dispatch": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", - "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-drag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", - "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", - "dependencies": { - "d3-dispatch": "1 - 3", - "d3-selection": "3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-ease": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", - "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-force": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", - "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", - "dependencies": { - "d3-dispatch": "1 - 3", - "d3-quadtree": "1 - 3", - "d3-timer": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-interpolate": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", - "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", - "dependencies": { - "d3-color": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-quadtree": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", - "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-selection": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", - "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-timer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", - "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-transition": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", - "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", - "dependencies": { - "d3-color": "1 - 3", - "d3-dispatch": "1 - 3", - "d3-ease": "1 - 3", - "d3-interpolate": "1 - 3", - "d3-timer": "1 - 3" - }, - "engines": { - "node": ">=12" - }, - "peerDependencies": { - "d3-selection": "2 - 3" - } - }, - "node_modules/d3-zoom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", - "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", - "dependencies": { - "d3-dispatch": "1 - 3", - "d3-drag": "2 - 3", - "d3-interpolate": "1 - 3", - "d3-selection": "2 - 3", - "d3-transition": "2 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/data-uri-to-buffer": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", - "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", - "dev": true, - "engines": { - "node": ">= 12" - } - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/debug-fabulous": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/debug-fabulous/-/debug-fabulous-1.1.0.tgz", - "integrity": "sha512-GZqvGIgKNlUnHUPQhepnUZFIMoi3dgZKQBzKDeL2g7oJF9SNAji/AAu36dusFUas0O+pae74lNeoIPHqXWDkLg==", - "dev": true, - "dependencies": { - "debug": "3.X", - "memoizee": "0.4.X", - "object-assign": "4.X" - } - }, - "node_modules/debug-fabulous/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/decamelize-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", - "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", - "dev": true, - "dependencies": { - "decamelize": "^1.1.0", - "map-obj": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/decamelize-keys/node_modules/map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/decode-uri-component": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", - "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", - "dev": true, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "node_modules/default-compare": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz", - "integrity": "sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==", - "dev": true, - "dependencies": { - "kind-of": "^5.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/default-resolution": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/default-resolution/-/default-resolution-2.0.0.tgz", - "integrity": "sha512-2xaP6GiwVwOEbXCGoJ4ufgC76m8cj805jrghScewJC2ZDsb9U0b4BIrba+xt/Uytyd0HvQ6+WymSRTfnYj59GQ==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/define-properties": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", - "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", - "dependencies": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/del": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz", - "integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==", - "dev": true, - "dependencies": { - "globby": "^11.0.1", - "graceful-fs": "^4.2.4", - "is-glob": "^4.0.1", - "is-path-cwd": "^2.2.0", - "is-path-inside": "^3.0.2", - "p-map": "^4.0.0", - "rimraf": "^3.0.2", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg==", - "dev": true - }, - "node_modules/detect-file": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", - "integrity": "sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/detect-newline": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", - "integrity": "sha512-CwffZFvlJffUg9zZA0uqrjQayUTC8ob94pnr5sFwaVv3IOmkfUHcWH+jXaQK3askE51Cqe8/9Ql/0uXNwqZ8Zg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/dev-ip": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dev-ip/-/dev-ip-1.0.1.tgz", - "integrity": "sha512-LmVkry/oDShEgSZPNgqCIp2/TlqtExeGmymru3uCELnfyjY11IzpAproLYs+1X88fXO6DBoYP3ul2Xo2yz2j6A==", - "dev": true, - "bin": { - "dev-ip": "lib/dev-ip.js" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/dom-serializer": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", - "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", - "dev": true, - "dependencies": { - "domelementtype": "^1.3.0", - "entities": "^1.1.1" - } - }, - "node_modules/domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", - "dev": true - }, - "node_modules/domhandler": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", - "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", - "dev": true, - "dependencies": { - "domelementtype": "1" - } - }, - "node_modules/domutils": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", - "integrity": "sha512-gSu5Oi/I+3wDENBsOWBiRK1eoGxcywYSqg3rR960/+EfY0CF4EX1VPkgHOZ3WiS/Jg2DtliF6BhWcHlfpYUcGw==", - "dev": true, - "dependencies": { - "dom-serializer": "0", - "domelementtype": "1" - } - }, - "node_modules/duplexify": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", - "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", - "dev": true, - "dependencies": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" - } - }, - "node_modules/each-props": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/each-props/-/each-props-1.3.2.tgz", - "integrity": "sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.1", - "object.defaults": "^1.1.0" - } - }, - "node_modules/each-props/node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/easy-extender": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/easy-extender/-/easy-extender-2.3.4.tgz", - "integrity": "sha512-8cAwm6md1YTiPpOvDULYJL4ZS6WfM5/cTeVVh4JsvyYZAoqlRVUpHL9Gr5Fy7HA6xcSZicUia3DeAgO3Us8E+Q==", - "dev": true, - "dependencies": { - "lodash": "^4.17.10" - }, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/eazy-logger": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/eazy-logger/-/eazy-logger-4.0.1.tgz", - "integrity": "sha512-2GSFtnnC6U4IEKhEI7+PvdxrmjJ04mdsj3wHZTFiw0tUtG4HCWzTr13ZYTk8XOGnA1xQMaDljoBOYlk3D/MMSw==", - "dev": true, - "dependencies": { - "chalk": "4.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/eazy-logger/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/eazy-logger/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/eazy-logger/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/eazy-logger/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/eazy-logger/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/eazy-logger/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "dev": true - }, - "node_modules/electron-to-chromium": { - "version": "1.4.420", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.420.tgz", - "integrity": "sha512-BpPy2KXZc+UPbI8NGo2QdHU1Mkq11pO/zaNDHY57L09K/0ytrPw+IiLOUvZ1NjI5BlAVF5DkNr1UBUS76Tc4ow==", - "dev": true - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/engine.io": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.4.2.tgz", - "integrity": "sha512-FKn/3oMiJjrOEOeUub2WCox6JhxBXq/Zn3fZOMCBxKnNYtsdKjxhl7yR3fZhM9PV+rdE75SU5SYMc+2PGzo+Tg==", - "dev": true, - "dependencies": { - "@types/cookie": "^0.4.1", - "@types/cors": "^2.8.12", - "@types/node": ">=10.0.0", - "accepts": "~1.3.4", - "base64id": "2.0.0", - "cookie": "~0.4.1", - "cors": "~2.8.5", - "debug": "~4.3.1", - "engine.io-parser": "~5.0.3", - "ws": "~8.11.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/engine.io-client": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.4.0.tgz", - "integrity": "sha512-GyKPDyoEha+XZ7iEqam49vz6auPnNJ9ZBfy89f+rMMas8AuiMWOZ9PVzu8xb9ZC6rafUqiGHSCfu22ih66E+1g==", - "dev": true, - "dependencies": { - "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.1", - "engine.io-parser": "~5.0.3", - "ws": "~8.11.0", - "xmlhttprequest-ssl": "~2.0.0" - } - }, - "node_modules/engine.io-parser": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.7.tgz", - "integrity": "sha512-P+jDFbvK6lE3n1OL+q9KuzdOFWkkZ/cMV9gol/SbVfpyqfvrfrFTOFJ6fQm2VC3PZHlU3QPhVwmbsCnauHF2MQ==", - "dev": true, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "dev": true, - "dependencies": { - "ansi-colors": "^4.1.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", - "dev": true - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/es-abstract": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.1.tgz", - "integrity": "sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw==", - "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "arraybuffer.prototype.slice": "^1.0.1", - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "es-set-tostringtag": "^2.0.1", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.2.1", - "get-symbol-description": "^1.0.0", - "globalthis": "^1.0.3", - "gopd": "^1.0.1", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.5", - "is-array-buffer": "^3.0.2", - "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.10", - "is-weakref": "^1.0.2", - "object-inspect": "^1.12.3", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.5.0", - "safe-array-concat": "^1.0.0", - "safe-regex-test": "^1.0.0", - "string.prototype.trim": "^1.2.7", - "string.prototype.trimend": "^1.0.6", - "string.prototype.trimstart": "^1.0.6", - "typed-array-buffer": "^1.0.0", - "typed-array-byte-length": "^1.0.0", - "typed-array-byte-offset": "^1.0.0", - "typed-array-length": "^1.0.4", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.10" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-iterator-helpers": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.13.tgz", - "integrity": "sha512-LK3VGwzvaPWobO8xzXXGRUOGw8Dcjyfk62CsY/wfHN75CwsJPbuypOYJxK6g5RyEL8YDjIWcl6jgd8foO6mmrA==", - "dev": true, - "dependencies": { - "asynciterator.prototype": "^1.0.0", - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.21.3", - "es-set-tostringtag": "^2.0.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.2.1", - "globalthis": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.5", - "iterator.prototype": "^1.1.0", - "safe-array-concat": "^1.0.0" - } - }, - "node_modules/es-set-tostringtag": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", - "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", - "dependencies": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-shim-unscopables": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", - "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - } - }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es5-ext": { - "version": "0.10.62", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz", - "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.3", - "next-tick": "^1.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", - "dev": true, - "dependencies": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, - "node_modules/es6-symbol": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", - "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", - "dev": true, - "dependencies": { - "d": "^1.0.1", - "ext": "^1.1.2" - } - }, - "node_modules/es6-weak-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", - "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", - "dev": true, - "dependencies": { - "d": "1", - "es5-ext": "^0.10.46", - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.1" - } - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "dev": true - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/eslint": { - "version": "7.32.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", - "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", - "dev": true, - "dependencies": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.3", - "@humanwhocodes/config-array": "^0.5.0", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "enquirer": "^2.3.5", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.1.2", - "globals": "^13.6.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", - "strip-json-comments": "^3.1.0", - "table": "^6.0.9", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-config-airbnb-es5": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/eslint-config-airbnb-es5/-/eslint-config-airbnb-es5-1.2.0.tgz", - "integrity": "sha512-MaOKwNpqNZIRy+3augFj5vGHJ4F1sskPjJ/Od7K3N8Vv+8pD6t73XCL18KrHrF1m58qFxPBDl1US6bswE65IbQ==", - "dev": true, - "dependencies": { - "strip-json-comments": "1.0.2" - } - }, - "node_modules/eslint-config-airbnb-es5/node_modules/strip-json-comments": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.2.tgz", - "integrity": "sha512-zRzQSDu8YVDoLt1cVFfznCS6Y0wxWphJiG6+2d9YLZQJKooieRoVa518RFGK/P7m9ZsNyDEiknOJkdPQu7exVw==", - "dev": true, - "bin": { - "strip-json-comments": "cli.js" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/eslint-config-defaults": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-defaults/-/eslint-config-defaults-9.0.0.tgz", - "integrity": "sha512-+7YOx3HLdwG50YWpFNI/CLriyqcScVyFB7AWmR0T+6LyWhZCQrlHGYiQbniv04zACAv0W9hjIrhd8yFIMov6PQ==", - "dev": true, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/eslint-config-prettier": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.0.0.tgz", - "integrity": "sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==", - "dev": true, - "bin": { - "eslint-config-prettier": "bin/cli.js" - }, - "peerDependencies": { - "eslint": ">=7.0.0" - } - }, - "node_modules/eslint-plugin-react": { - "version": "7.33.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz", - "integrity": "sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==", - "dev": true, - "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flatmap": "^1.3.1", - "array.prototype.tosorted": "^1.1.1", - "doctrine": "^2.1.0", - "es-iterator-helpers": "^1.0.12", - "estraverse": "^5.3.0", - "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "minimatch": "^3.1.2", - "object.entries": "^1.1.6", - "object.fromentries": "^2.0.6", - "object.hasown": "^1.1.2", - "object.values": "^1.1.6", - "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.4", - "semver": "^6.3.1", - "string.prototype.matchall": "^4.0.8" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" - } - }, - "node_modules/eslint-plugin-react/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-react/node_modules/resolve": { - "version": "2.0.0-next.4", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", - "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", - "dev": true, - "dependencies": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/eslint-plugin-react/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/eslint-scope/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^1.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint/node_modules/@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.10.4" - } - }, - "node_modules/eslint/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/eslint/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/eslint/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/eslint/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/eslint/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint/node_modules/globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", - "dev": true, - "dependencies": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", - "dev": true, - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/event-emitter": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", - "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", - "dev": true, - "dependencies": { - "d": "1", - "es5-ext": "~0.10.14" - } - }, - "node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true - }, - "node_modules/execall": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/execall/-/execall-2.0.0.tgz", - "integrity": "sha512-0FU2hZ5Hh6iQnarpRtQurM/aAvp3RIbfvgLHrcqJYzhXyV2KFruhuChf9NC6waAhiUR7FFtlugkI4p7f2Fqlow==", - "dev": true, - "dependencies": { - "clone-regexp": "^2.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", - "dev": true, - "dependencies": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/expand-brackets/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/expand-tilde": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==", - "dev": true, - "dependencies": { - "homedir-polyfill": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ext": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", - "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", - "dev": true, - "dependencies": { - "type": "^2.7.2" - } - }, - "node_modules/ext/node_modules/type": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", - "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==", - "dev": true - }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, - "node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "dev": true, - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "dev": true, - "dependencies": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "dependencies": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fancy-log": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz", - "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==", - "dev": true, - "dependencies": { - "ansi-gray": "^0.1.1", - "color-support": "^1.1.3", - "parse-node-version": "^1.0.0", - "time-stamp": "^1.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/fast-fifo": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.2.0.tgz", - "integrity": "sha512-NcvQXt7Cky1cNau15FWy64IjuO8X0JijhTBBrJj1YlxlDfRkJXNaK9RFUjwpfDPzMdv7wB38jr53l9tkNLxnWg==", - "dev": true - }, - "node_modules/fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "node_modules/fastest-levenshtein": { - "version": "1.0.16", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", - "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", - "dev": true, - "engines": { - "node": ">= 4.9.1" - } - }, - "node_modules/fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/fetch-blob": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", - "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/jimmywarting" - }, - { - "type": "paypal", - "url": "https://paypal.me/jimmywarting" - } - ], - "dependencies": { - "node-domexception": "^1.0.0", - "web-streams-polyfill": "^3.0.3" - }, - "engines": { - "node": "^12.20 || >= 14.13" - } - }, - "node_modules/figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^1.0.5" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/finalhandler": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", - "integrity": "sha512-ejnvM9ZXYzp6PUPUyQBMBf0Co5VX2gr5H2VQe2Ui2jWXNlxv+PYZo8wpAymJNJdLsG1R4p+M4aynF8KuoUEwRw==", - "dev": true, - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.1", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.2", - "statuses": "~1.3.1", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/findup-sync": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-5.0.0.tgz", - "integrity": "sha512-MzwXju70AuyflbgeOhzvQWAvvQdo1XL0A9bVvlXsYcFEBM87WR4OakL4OfZq+QRmr+duJubio+UtNQCPsVESzQ==", - "dev": true, - "dependencies": { - "detect-file": "^1.0.0", - "is-glob": "^4.0.3", - "micromatch": "^4.0.4", - "resolve-dir": "^1.0.1" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/fined": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", - "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", - "dev": true, - "dependencies": { - "expand-tilde": "^2.0.2", - "is-plain-object": "^2.0.3", - "object.defaults": "^1.1.0", - "object.pick": "^1.2.0", - "parse-filepath": "^1.0.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/fined/node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/flagged-respawn": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", - "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "dev": true - }, - "node_modules/flush-write-stream": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", - "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "readable-stream": "^2.3.6" - } - }, - "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dependencies": { - "is-callable": "^1.1.3" - } - }, - "node_modules/for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/for-own": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", - "integrity": "sha512-0OABksIGrxKK8K4kynWkQ7y1zounQxP+CWnyclVwj81KW3vlLlGUx57DKGcP/LH216GzqnstnPocF16Nxs0Ycg==", - "dev": true, - "dependencies": { - "for-in": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fork-stream": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/fork-stream/-/fork-stream-0.0.4.tgz", - "integrity": "sha512-Pqq5NnT78ehvUnAk/We/Jr22vSvanRlFTpAmQ88xBY/M1TlHe+P0ILuEyXS595ysdGfaj22634LBkGMA2GTcpA==", - "dev": true - }, - "node_modules/formdata-polyfill": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", - "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", - "dev": true, - "dependencies": { - "fetch-blob": "^3.1.2" - }, - "engines": { - "node": ">=12.20.0" - } - }, - "node_modules/fraction.js": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", - "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", - "dev": true, - "engines": { - "node": "*" - }, - "funding": { - "type": "patreon", - "url": "https://www.patreon.com/infusion" - } - }, - "node_modules/fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", - "dev": true, - "dependencies": { - "map-cache": "^0.2.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fs-extra": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz", - "integrity": "sha512-V3Z3WZWVUYd8hoCL5xfXJCaHWYzmtwW5XWYSlLgERi8PWd8bx1kUHUk8L1BT57e49oKnDDD180mjfrHc1yA9rg==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^3.0.0", - "universalify": "^0.1.0" - } - }, - "node_modules/fs-mkdirp-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz", - "integrity": "sha512-+vSd9frUnapVC2RZYfL3FCB2p3g4TBhaUmrsWlSudsGdnxIuUvBB2QM1VZeBtc49QFwrp+wQLrDs3+xxDgI5gQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.11", - "through2": "^2.0.3" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/fs-mkdirp-stream/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/fstream": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", - "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "inherits": "~2.0.0", - "mkdirp": ">=0.5 0", - "rimraf": "2" - }, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/fstream/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "node_modules/function.prototype.name": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", - "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0", - "functions-have-names": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", - "dev": true - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-stdin": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", - "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/glob-stream": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-8.0.0.tgz", - "integrity": "sha512-CdIUuwOkYNv9ZadR3jJvap8CMooKziQZ/QCSPhEb7zqfsEI5YnPmvca7IvbaVE3z58ZdUYD2JsU6AUWjL8WZJA==", - "dev": true, - "dependencies": { - "@gulpjs/to-absolute-glob": "^4.0.0", - "anymatch": "^3.1.3", - "fastq": "^1.13.0", - "glob-parent": "^6.0.2", - "is-glob": "^4.0.3", - "is-negated-glob": "^1.0.0", - "normalize-path": "^3.0.0", - "streamx": "^2.12.5" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/glob-stream/node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/glob-watcher": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-6.0.0.tgz", - "integrity": "sha512-wGM28Ehmcnk2NqRORXFOTOR064L4imSw3EeOqU5bIwUf62eXGwg89WivH6VMahL8zlQHeodzvHpXplrqzrz3Nw==", - "dev": true, - "dependencies": { - "async-done": "^2.0.0", - "chokidar": "^3.5.3" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/global-modules": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", - "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", - "dev": true, - "dependencies": { - "global-prefix": "^1.0.1", - "is-windows": "^1.0.1", - "resolve-dir": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/global-prefix": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", - "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==", - "dev": true, - "dependencies": { - "expand-tilde": "^2.0.2", - "homedir-polyfill": "^1.0.1", - "ini": "^1.3.4", - "is-windows": "^1.0.1", - "which": "^1.2.14" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/global-prefix/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", - "dependencies": { - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globby/node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/globjoin": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz", - "integrity": "sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==", - "dev": true - }, - "node_modules/glogg": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.2.tgz", - "integrity": "sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==", - "dev": true, - "dependencies": { - "sparkles": "^1.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/gonzales-pe": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/gonzales-pe/-/gonzales-pe-4.3.0.tgz", - "integrity": "sha512-otgSPpUmdWJ43VXyiNgEYE4luzHCL2pz4wQ0OnDluC6Eg4Ko3Vexy/SrSynglw/eR+OhkzmqFCZa/OFa/RgAOQ==", - "dev": true, - "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "gonzales": "bin/gonzales.js" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dependencies": { - "get-intrinsic": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true - }, - "node_modules/group-array": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/group-array/-/group-array-1.0.0.tgz", - "integrity": "sha512-PJresALe5TUzSIcdWKLdAKcdUDxv8du2EGueShgAL2xknbcTo5Bk1xbNaNhxpWxxAx/SV7N+5S0UyK7XV0+QhA==", - "dev": true, - "dependencies": { - "arr-flatten": "^1.1.0", - "for-own": "^1.0.0", - "get-value": "^3.0.1", - "kind-of": "^6.0.2", - "split-string": "^6.1.0", - "union-value": "^2.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/group-array/node_modules/get-value": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-3.0.1.tgz", - "integrity": "sha512-mKZj9JLQrwMBtj5wxi6MH8Z5eSKaERpAwjg43dPtlGI1ZVEgH/qC7T8/6R2OBSUA+zzHBZgICsVJaEIV2tKTDA==", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/group-array/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.2.tgz", - "integrity": "sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA==", - "dev": true, - "dependencies": { - "glob-watcher": "^5.0.3", - "gulp-cli": "^2.2.0", - "undertaker": "^1.2.1", - "vinyl-fs": "^3.0.0" - }, - "bin": { - "gulp": "bin/gulp.js" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/gulp-autoprefixer": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/gulp-autoprefixer/-/gulp-autoprefixer-8.0.0.tgz", - "integrity": "sha512-sVR++PIaXpa81p52dmmA/jt50bw0egmylK5mjagfgOJ8uLDGaF9tHyzvetkY9Uo0gBZUS5sVqN3kX/GlUKOyog==", - "dev": true, - "dependencies": { - "autoprefixer": "^10.2.6", - "fancy-log": "^1.3.3", - "plugin-error": "^1.0.1", - "postcss": "^8.3.0", - "through2": "^4.0.2", - "vinyl-sourcemaps-apply": "^0.2.1" - }, - "engines": { - "node": ">=12" - }, - "peerDependencies": { - "gulp": ">=4" - }, - "peerDependenciesMeta": { - "gulp": { - "optional": true - } - } - }, - "node_modules/gulp-cache-bust": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/gulp-cache-bust/-/gulp-cache-bust-1.4.1.tgz", - "integrity": "sha512-ksYCu06p2hpUDilgtv/jMB9lxBLg/v9F0xEAYbndgS/xWqamHpIpGRPAKj76VRXJpDTHgEqVPcd2rCofj4TERg==", - "dev": true, - "dependencies": { - "ansi-colors": "^1.0.1", - "cachebust": "2.4.1", - "fancy-log": "^1.3.2", - "graceful-fs": "^4.1.9", - "map-stream": "^0.1.0", - "plugin-error": "^0.1.2", - "temp-write": "^2.1.0", - "through2": "2.0.1", - "vinyl": "^2.1.0" - }, - "engines": { - "node": ">=4.4.5", - "npm": ">=2.15.1" - } - }, - "node_modules/gulp-cache-bust/node_modules/ansi-colors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", - "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", - "dev": true, - "dependencies": { - "ansi-wrap": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-cache-bust/node_modules/arr-diff": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-1.1.0.tgz", - "integrity": "sha512-OQwDZUqYaQwyyhDJHThmzId8daf4/RFNLaeh3AevmSeZ5Y7ug4Ga/yKc6l6kTZOBW781rCj103ZuTh8GAsB3+Q==", - "dev": true, - "dependencies": { - "arr-flatten": "^1.0.1", - "array-slice": "^0.2.3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-cache-bust/node_modules/arr-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-2.1.0.tgz", - "integrity": "sha512-t5db90jq+qdgk8aFnxEkjqta0B/GHrM1pxzuuZz2zWsOXc5nKu3t+76s/PQBA8FTcM/ipspIH9jWG4OxCBc2eA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-cache-bust/node_modules/array-slice": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz", - "integrity": "sha512-rlVfZW/1Ph2SNySXwR9QYkChp8EkOEiTMO5Vwx60usw04i4nWemkm9RXmQqgkQFaLHsqLuADvjp6IfgL9l2M8Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-cache-bust/node_modules/extend-shallow": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-1.1.4.tgz", - "integrity": "sha512-L7AGmkO6jhDkEBBGWlLtftA80Xq8DipnrRPr0pyi7GQLXkaq9JYA4xF4z6qnadIC6euiTDKco0cGSU9muw+WTw==", - "dev": true, - "dependencies": { - "kind-of": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-cache-bust/node_modules/kind-of": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz", - "integrity": "sha512-aUH6ElPnMGon2/YkxRIigV32MOpTVcoXQ1Oo8aYn40s+sJ3j+0gFZsT8HKDcxNy7Fi9zuquWtGaGAahOdv5p/g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-cache-bust/node_modules/plugin-error": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-0.1.2.tgz", - "integrity": "sha512-WzZHcm4+GO34sjFMxQMqZbsz3xiNEgonCskQ9v+IroMmYgk/tas8dG+Hr2D6IbRPybZ12oWpzE/w3cGJ6FJzOw==", - "dev": true, - "dependencies": { - "ansi-cyan": "^0.1.1", - "ansi-red": "^0.1.1", - "arr-diff": "^1.0.1", - "arr-union": "^2.0.1", - "extend-shallow": "^1.1.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-cache-bust/node_modules/process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha512-yN0WQmuCX63LP/TMvAg31nvT6m4vDqJEiiv2CAZqWOGNWutc9DfDk1NPYYmKUFmaVM2UwDowH4u5AHWYP/jxKw==", - "dev": true - }, - "node_modules/gulp-cache-bust/node_modules/readable-stream": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", - "integrity": "sha512-TXcFfb63BQe1+ySzsHZI/5v1aJPCShfqvWJ64ayNImXMsN1Cd0YGk/wm8KB7/OeessgPc9QvS9Zou8QTkFzsLw==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "~1.0.0", - "process-nextick-args": "~1.0.6", - "string_decoder": "~0.10.x", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/gulp-cache-bust/node_modules/string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", - "dev": true - }, - "node_modules/gulp-cache-bust/node_modules/through2": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.1.tgz", - "integrity": "sha512-/vp02SIbpmVHapNMjox4hDBzykPdAOmH5y3INcKaxGfpEPSCMqzdWXyGfqPYyxoBLo1JpxBrlh3Z9esv0vWUYw==", - "dev": true, - "dependencies": { - "readable-stream": "~2.0.0", - "xtend": "~4.0.0" - } - }, - "node_modules/gulp-cli": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.3.0.tgz", - "integrity": "sha512-zzGBl5fHo0EKSXsHzjspp3y5CONegCm8ErO5Qh0UzFzk2y4tMvzLWhoDokADbarfZRL2pGpRp7yt6gfJX4ph7A==", - "dev": true, - "dependencies": { - "ansi-colors": "^1.0.1", - "archy": "^1.0.0", - "array-sort": "^1.0.0", - "color-support": "^1.1.3", - "concat-stream": "^1.6.0", - "copy-props": "^2.0.1", - "fancy-log": "^1.3.2", - "gulplog": "^1.0.0", - "interpret": "^1.4.0", - "isobject": "^3.0.1", - "liftoff": "^3.1.0", - "matchdep": "^2.0.0", - "mute-stdout": "^1.0.0", - "pretty-hrtime": "^1.0.0", - "replace-homedir": "^1.0.0", - "semver-greatest-satisfied-range": "^1.1.0", - "v8flags": "^3.2.0", - "yargs": "^7.1.0" - }, - "bin": { - "gulp": "bin/gulp.js" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/gulp-cli/node_modules/ansi-colors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", - "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", - "dev": true, - "dependencies": { - "ansi-wrap": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-cli/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-cli/node_modules/camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-cli/node_modules/cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w==", - "dev": true, - "dependencies": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" - } - }, - "node_modules/gulp-cli/node_modules/find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==", - "dev": true, - "dependencies": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-cli/node_modules/get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", - "dev": true - }, - "node_modules/gulp-cli/node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true - }, - "node_modules/gulp-cli/node_modules/is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", - "dev": true, - "dependencies": { - "number-is-nan": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-cli/node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/gulp-cli/node_modules/path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==", - "dev": true, - "dependencies": { - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-cli/node_modules/path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-cli/node_modules/read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==", - "dev": true, - "dependencies": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-cli/node_modules/read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==", - "dev": true, - "dependencies": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-cli/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/gulp-cli/node_modules/string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", - "dev": true, - "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-cli/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-cli/node_modules/wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==", - "dev": true, - "dependencies": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-cli/node_modules/y18n": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", - "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==", - "dev": true - }, - "node_modules/gulp-cli/node_modules/yargs": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.2.tgz", - "integrity": "sha512-ZEjj/dQYQy0Zx0lgLMLR8QuaqTihnxirir7EwUHp1Axq4e3+k8jXU5K0VLbNvedv1f4EWtBonDIZm0NUr+jCcA==", - "dev": true, - "dependencies": { - "camelcase": "^3.0.0", - "cliui": "^3.2.0", - "decamelize": "^1.1.1", - "get-caller-file": "^1.0.1", - "os-locale": "^1.4.0", - "read-pkg-up": "^1.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^1.0.2", - "which-module": "^1.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^5.0.1" - } - }, - "node_modules/gulp-cli/node_modules/yargs-parser": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.1.tgz", - "integrity": "sha512-wpav5XYiddjXxirPoCTUPbqM0PXvJ9hiBMvuJgInvo4/lAOTZzUprArw17q2O1P2+GHhbBr18/iQwjL5Z9BqfA==", - "dev": true, - "dependencies": { - "camelcase": "^3.0.0", - "object.assign": "^4.1.0" - } - }, - "node_modules/gulp-environments": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gulp-environments/-/gulp-environments-1.0.1.tgz", - "integrity": "sha512-ooM/H+1ZFImalQPHCaMGvKap/8UQxHMcyo65f/Y6ZakCpa4FgJ9NH/9ux7hj7Z8J22mFlJu9RQgxuZT82UtlKg==", - "dev": true, - "dependencies": { - "gulp-if": "^2.0.1", - "yargs": "^15.0.1" - } - }, - "node_modules/gulp-environments/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/gulp-environments/node_modules/cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, - "node_modules/gulp-environments/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/gulp-environments/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/gulp-environments/node_modules/require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, - "node_modules/gulp-environments/node_modules/which-module": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", - "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", - "dev": true - }, - "node_modules/gulp-environments/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/gulp-environments/node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true - }, - "node_modules/gulp-environments/node_modules/yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "dev": true, - "dependencies": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/gulp-environments/node_modules/yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "dev": true, - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/gulp-eslint": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/gulp-eslint/-/gulp-eslint-6.0.0.tgz", - "integrity": "sha512-dCVPSh1sA+UVhn7JSQt7KEb4An2sQNbOdB3PA8UCfxsoPlAKjJHxYHGXdXC7eb+V1FAnilSFFqslPrq037l1ig==", - "dev": true, - "dependencies": { - "eslint": "^6.0.0", - "fancy-log": "^1.3.2", - "plugin-error": "^1.0.1" - } - }, - "node_modules/gulp-eslint/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/gulp-eslint/node_modules/astral-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/gulp-eslint/node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "engines": { - "node": ">=4.8" - } - }, - "node_modules/gulp-eslint/node_modules/cross-spawn/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/gulp-eslint/node_modules/emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "node_modules/gulp-eslint/node_modules/eslint": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", - "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.0.0", - "ajv": "^6.10.0", - "chalk": "^2.1.0", - "cross-spawn": "^6.0.5", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "eslint-scope": "^5.0.0", - "eslint-utils": "^1.4.3", - "eslint-visitor-keys": "^1.1.0", - "espree": "^6.1.2", - "esquery": "^1.0.1", - "esutils": "^2.0.2", - "file-entry-cache": "^5.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.0.0", - "globals": "^12.1.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "inquirer": "^7.0.0", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.3.0", - "lodash": "^4.17.14", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", - "natural-compare": "^1.4.0", - "optionator": "^0.8.3", - "progress": "^2.0.0", - "regexpp": "^2.0.1", - "semver": "^6.1.2", - "strip-ansi": "^5.2.0", - "strip-json-comments": "^3.0.1", - "table": "^5.2.3", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/gulp-eslint/node_modules/eslint-utils": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", - "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^1.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/gulp-eslint/node_modules/espree": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", - "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", - "dev": true, - "dependencies": { - "acorn": "^7.1.1", - "acorn-jsx": "^5.2.0", - "eslint-visitor-keys": "^1.1.0" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/gulp-eslint/node_modules/file-entry-cache": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", - "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", - "dev": true, - "dependencies": { - "flat-cache": "^2.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/gulp-eslint/node_modules/flat-cache": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", - "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", - "dev": true, - "dependencies": { - "flatted": "^2.0.0", - "rimraf": "2.6.3", - "write": "1.0.3" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/gulp-eslint/node_modules/flatted": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", - "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", - "dev": true - }, - "node_modules/gulp-eslint/node_modules/globals": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", - "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", - "dev": true, - "dependencies": { - "type-fest": "^0.8.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/gulp-eslint/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/gulp-eslint/node_modules/levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", - "dev": true, - "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/gulp-eslint/node_modules/optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dev": true, - "dependencies": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/gulp-eslint/node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/gulp-eslint/node_modules/prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/gulp-eslint/node_modules/regexpp": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", - "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", - "dev": true, - "engines": { - "node": ">=6.5.0" - } - }, - "node_modules/gulp-eslint/node_modules/rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/gulp-eslint/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/gulp-eslint/node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", - "dev": true, - "dependencies": { - "shebang-regex": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-eslint/node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-eslint/node_modules/slice-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", - "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.0", - "astral-regex": "^1.0.0", - "is-fullwidth-code-point": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/gulp-eslint/node_modules/string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/gulp-eslint/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/gulp-eslint/node_modules/table": { - "version": "5.4.6", - "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", - "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", - "dev": true, - "dependencies": { - "ajv": "^6.10.2", - "lodash": "^4.17.14", - "slice-ansi": "^2.1.0", - "string-width": "^3.0.0" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/gulp-eslint/node_modules/type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", - "dev": true, - "dependencies": { - "prelude-ls": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/gulp-eslint/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/gulp-eslint/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/gulp-htmlmin": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/gulp-htmlmin/-/gulp-htmlmin-5.0.1.tgz", - "integrity": "sha512-ASlyDPZOSKjHYUifYV0rf9JPDflN9IRIb8lw2vRqtYMC4ljU3zAmnnaVXwFQ3H+CfXxZSUesZ2x7jrnPJu93jA==", - "dev": true, - "dependencies": { - "html-minifier": "^3.5.20", - "plugin-error": "^1.0.1", - "through2": "^2.0.3" - }, - "engines": { - "node": ">= 6.0" - } - }, - "node_modules/gulp-htmlmin/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/gulp-if": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/gulp-if/-/gulp-if-2.0.2.tgz", - "integrity": "sha512-tV0UfXkZodpFq6CYxEqH8tqLQgN6yR9qOhpEEN3O6N5Hfqk3fFLcbAavSex5EqnmoQjyaZ/zvgwclvlTI1KGfw==", - "dev": true, - "dependencies": { - "gulp-match": "^1.0.3", - "ternary-stream": "^2.0.1", - "through2": "^2.0.1" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/gulp-if/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/gulp-inject": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/gulp-inject/-/gulp-inject-5.0.5.tgz", - "integrity": "sha512-5bGMjqleXUHPu4CI1pnVzHtwyMy+Zt8EMo1RFwNsOpidPxwjFwyLgmsRZWGMMI8UenJMJRjURqwznfFmqb5wgw==", - "dev": true, - "dependencies": { - "ansi-colors": "^4.1.1", - "arrify": "^2.0.1", - "escape-string-regexp": "^2.0.0", - "fancy-log": "^1.3.3", - "group-array": "^1.0.0", - "plugin-error": "^1.0.1", - "stream-to-array": "^2.3.0", - "through2": "^3.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/gulp-inject/node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/gulp-inject/node_modules/through2": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz", - "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==", - "dev": true, - "dependencies": { - "inherits": "^2.0.4", - "readable-stream": "2 || 3" - } - }, - "node_modules/gulp-inline-source": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/gulp-inline-source/-/gulp-inline-source-4.0.0.tgz", - "integrity": "sha512-LrqCom18aYkceV2YPqJyCrDpHNyLGrHHNYCmWQXFvJUMyYIpf+xxBzmvR45cokyoq2KW9H8oxijvnDjHn9s3Pw==", - "dev": true, - "dependencies": { - "inline-source": "~6.1.8", - "plugin-error": "~1.0.1", - "through2": "~2.0.0" - }, - "engines": { - "node": ">=7.6" - } - }, - "node_modules/gulp-inline-source/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/gulp-jsonminify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/gulp-jsonminify/-/gulp-jsonminify-1.1.0.tgz", - "integrity": "sha512-nkqH5aRajfCGD8HB2yN+QSEQG0SMEpS7UyOp3HS966Og4DqUX0y8sPF5SU8uSsGLLLXbnHwyHbDkxauYO/pSpQ==", - "dev": true, - "dependencies": { - "jsonminify": "~0.2.3", - "plugin-error": "^0.1.2", - "through2": "~0.6.5" - } - }, - "node_modules/gulp-jsonminify/node_modules/arr-diff": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-1.1.0.tgz", - "integrity": "sha512-OQwDZUqYaQwyyhDJHThmzId8daf4/RFNLaeh3AevmSeZ5Y7ug4Ga/yKc6l6kTZOBW781rCj103ZuTh8GAsB3+Q==", - "dev": true, - "dependencies": { - "arr-flatten": "^1.0.1", - "array-slice": "^0.2.3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-jsonminify/node_modules/arr-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-2.1.0.tgz", - "integrity": "sha512-t5db90jq+qdgk8aFnxEkjqta0B/GHrM1pxzuuZz2zWsOXc5nKu3t+76s/PQBA8FTcM/ipspIH9jWG4OxCBc2eA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-jsonminify/node_modules/array-slice": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz", - "integrity": "sha512-rlVfZW/1Ph2SNySXwR9QYkChp8EkOEiTMO5Vwx60usw04i4nWemkm9RXmQqgkQFaLHsqLuADvjp6IfgL9l2M8Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-jsonminify/node_modules/extend-shallow": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-1.1.4.tgz", - "integrity": "sha512-L7AGmkO6jhDkEBBGWlLtftA80Xq8DipnrRPr0pyi7GQLXkaq9JYA4xF4z6qnadIC6euiTDKco0cGSU9muw+WTw==", - "dev": true, - "dependencies": { - "kind-of": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-jsonminify/node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", - "dev": true - }, - "node_modules/gulp-jsonminify/node_modules/kind-of": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz", - "integrity": "sha512-aUH6ElPnMGon2/YkxRIigV32MOpTVcoXQ1Oo8aYn40s+sJ3j+0gFZsT8HKDcxNy7Fi9zuquWtGaGAahOdv5p/g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-jsonminify/node_modules/plugin-error": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-0.1.2.tgz", - "integrity": "sha512-WzZHcm4+GO34sjFMxQMqZbsz3xiNEgonCskQ9v+IroMmYgk/tas8dG+Hr2D6IbRPybZ12oWpzE/w3cGJ6FJzOw==", - "dev": true, - "dependencies": { - "ansi-cyan": "^0.1.1", - "ansi-red": "^0.1.1", - "arr-diff": "^1.0.1", - "arr-union": "^2.0.1", - "extend-shallow": "^1.1.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-jsonminify/node_modules/readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "node_modules/gulp-jsonminify/node_modules/string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", - "dev": true - }, - "node_modules/gulp-jsonminify/node_modules/through2": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", - "integrity": "sha512-RkK/CCESdTKQZHdmKICijdKKsCRVHs5KsLZ6pACAmF/1GPUQhonHSXWNERctxEp7RmvjdNbZTL5z9V7nSCXKcg==", - "dev": true, - "dependencies": { - "readable-stream": ">=1.0.33-1 <1.1.0-0", - "xtend": ">=4.0.0 <4.1.0-0" - } - }, - "node_modules/gulp-load-plugins": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/gulp-load-plugins/-/gulp-load-plugins-2.0.8.tgz", - "integrity": "sha512-BS0aRx67WnWPt8stEDvwt+biD2gQ1NwDMgxuUhX5+AQSujqlcSecbdL+U6g0zu2S3YjOuY+eGmnXjT2J3hRMIg==", - "dev": true, - "dependencies": { - "array-unique": "^0.3.2", - "fancy-log": "^2.0.0", - "findup-sync": "^5.0.0", - "gulplog": "^2.0.0", - "has-gulplog": "^1.0.0", - "micromatch": "^4.0.2", - "resolve": "^1.17.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/gulp-load-plugins/node_modules/fancy-log": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-2.0.0.tgz", - "integrity": "sha512-9CzxZbACXMUXW13tS0tI8XsGGmxWzO2DmYrGuBJOJ8k8q2K7hwfJA5qHjuPPe8wtsco33YR9wc+Rlr5wYFvhSA==", - "dev": true, - "dependencies": { - "color-support": "^1.1.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/gulp-load-plugins/node_modules/glogg": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glogg/-/glogg-2.0.0.tgz", - "integrity": "sha512-YDtL/QX54MN8+GorvS9tnKI5HtqWrFW9bv5yPRmFBeofi5neWzqQN8X/0HmM5zMkDbB8OYvC3/Pj8UEJUZFeqA==", - "dev": true, - "dependencies": { - "sparkles": "^2.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/gulp-load-plugins/node_modules/gulplog": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-2.0.1.tgz", - "integrity": "sha512-11IFA5ZwhFUjXPNYxrk9Z5FWGQIzJzxrBCE4qZC2elFkwt6oamM1ESwZVrhFMLl5IVlhnMwleFEWxiEyuMndIg==", - "dev": true, - "dependencies": { - "glogg": "^2.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/gulp-load-plugins/node_modules/sparkles": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-2.0.0.tgz", - "integrity": "sha512-rqUsosNTLY8KIT6qhuJlXzIUjYJNHTDoHmPnJwfnD7bEvSSvhUOMKuPMCsmLR3vDhyTGi0oAqAbLjgiIXnL2wQ==", - "dev": true, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/gulp-match": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/gulp-match/-/gulp-match-1.1.0.tgz", - "integrity": "sha512-DlyVxa1Gj24DitY2OjEsS+X6tDpretuxD6wTfhXE/Rw2hweqc1f6D/XtsJmoiCwLWfXgR87W9ozEityPCVzGtQ==", - "dev": true, - "dependencies": { - "minimatch": "^3.0.3" - } - }, - "node_modules/gulp-real-favicon": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/gulp-real-favicon/-/gulp-real-favicon-0.3.2.tgz", - "integrity": "sha512-DNCv4BWcdcY12KBlZDUHZ7MSUzM6PEOdhiyLe3ClDjuzToAQf+T30X0A2zny8Jfg4pxBIrALKzbVw5nizRrEbQ==", - "dev": true, - "dependencies": { - "ansi-colors": "^1.1.0", - "fancy-log": "^1.3.2", - "plugin-error": "^1.0.1", - "rfg-api": "^0.5.0", - "through2": "^2.0.0" - } - }, - "node_modules/gulp-real-favicon/node_modules/ansi-colors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", - "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", - "dev": true, - "dependencies": { - "ansi-wrap": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-real-favicon/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/gulp-requirejs-optimize": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/gulp-requirejs-optimize/-/gulp-requirejs-optimize-1.3.0.tgz", - "integrity": "sha512-6Jc8xg2tneeNVOv1cwiUtnDxJByTA2JCuJ1MbzKCvKcASdH8Y4kjJCE8Xpw1LNnkZwN18B5+vCRf9ZmEJQB6OQ==", - "dev": true, - "dependencies": { - "chalk": "^2.3.2", - "fancy-log": "^1.3.2", - "lodash.defaults": "^4.0.1", - "plugin-error": "^1.0.1", - "requirejs": "^2.2.0", - "through2": "^2.0.1", - "vinyl": "^2.1.0", - "vinyl-sourcemaps-apply": "^0.2.1" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/gulp-requirejs-optimize/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/gulp-sass": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/gulp-sass/-/gulp-sass-5.1.0.tgz", - "integrity": "sha512-7VT0uaF+VZCmkNBglfe1b34bxn/AfcssquLKVDYnCDJ3xNBaW7cUuI3p3BQmoKcoKFrs9jdzUxyb+u+NGfL4OQ==", - "dev": true, - "dependencies": { - "lodash.clonedeep": "^4.5.0", - "picocolors": "^1.0.0", - "plugin-error": "^1.0.1", - "replace-ext": "^2.0.0", - "strip-ansi": "^6.0.1", - "vinyl-sourcemaps-apply": "^0.2.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/gulp-sourcemaps": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/gulp-sourcemaps/-/gulp-sourcemaps-3.0.0.tgz", - "integrity": "sha512-RqvUckJkuYqy4VaIH60RMal4ZtG0IbQ6PXMNkNsshEGJ9cldUPRb/YCgboYae+CLAs1HQNb4ADTKCx65HInquQ==", - "dev": true, - "dependencies": { - "@gulp-sourcemaps/identity-map": "^2.0.1", - "@gulp-sourcemaps/map-sources": "^1.0.0", - "acorn": "^6.4.1", - "convert-source-map": "^1.0.0", - "css": "^3.0.0", - "debug-fabulous": "^1.0.0", - "detect-newline": "^2.0.0", - "graceful-fs": "^4.0.0", - "source-map": "^0.6.0", - "strip-bom-string": "^1.0.0", - "through2": "^2.0.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/gulp-sourcemaps/node_modules/acorn": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", - "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/gulp-sourcemaps/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/gulp-stylelint": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/gulp-stylelint/-/gulp-stylelint-13.0.0.tgz", - "integrity": "sha512-qFWBXnYDsGy6ttzqptctMZjJhhGc0FdFE+UNPlj/5fTyuUo5mfxcc7pzN4hIJnvB79BO1WikLtdtXuC/G2AhGA==", - "dev": true, - "dependencies": { - "chalk": "^3.0.0", - "fancy-log": "^1.3.3", - "plugin-error": "^1.0.1", - "source-map": "^0.7.3", - "strip-ansi": "^6.0.0", - "through2": "^3.0.1" - }, - "engines": { - "node": ">=10.12.0" - }, - "peerDependencies": { - "stylelint": "^13.0.0" - } - }, - "node_modules/gulp-stylelint/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/gulp-stylelint/node_modules/chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/gulp-stylelint/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/gulp-stylelint/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/gulp-stylelint/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/gulp-stylelint/node_modules/source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/gulp-stylelint/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/gulp-stylelint/node_modules/through2": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz", - "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==", - "dev": true, - "dependencies": { - "inherits": "^2.0.4", - "readable-stream": "2 || 3" - } - }, - "node_modules/gulp-uglify": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/gulp-uglify/-/gulp-uglify-3.0.2.tgz", - "integrity": "sha512-gk1dhB74AkV2kzqPMQBLA3jPoIAPd/nlNzP2XMDSG8XZrqnlCiDGAqC+rZOumzFvB5zOphlFh6yr3lgcAb/OOg==", - "dev": true, - "dependencies": { - "array-each": "^1.0.1", - "extend-shallow": "^3.0.2", - "gulplog": "^1.0.0", - "has-gulplog": "^0.1.0", - "isobject": "^3.0.1", - "make-error-cause": "^1.1.1", - "safe-buffer": "^5.1.2", - "through2": "^2.0.0", - "uglify-js": "^3.0.5", - "vinyl-sourcemaps-apply": "^0.2.0" - } - }, - "node_modules/gulp-uglify/node_modules/has-gulplog": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz", - "integrity": "sha512-+F4GzLjwHNNDEAJW2DC1xXfEoPkRDmUdJ7CBYw4MpqtDwOnqdImJl7GWlpqx+Wko6//J8uKTnIe4wZSv7yCqmw==", - "dev": true, - "dependencies": { - "sparkles": "^1.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/gulp-uglify/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/gulplog": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", - "integrity": "sha512-hm6N8nrm3Y08jXie48jsC55eCZz9mnb4OirAStEk2deqeyhXU3C1otDVh+ccttMuc1sBi6RX6ZJ720hs9RCvgw==", - "dev": true, - "dependencies": { - "glogg": "^1.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/hard-rejection": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", - "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/has-gulplog": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-1.0.0.tgz", - "integrity": "sha512-3bRkTBls3EdDU9Aw9VyMjSeIfPTGZO9C/eDEr7wdnu9fP0I2Mli8eQlo+oN57Oog8rpByXFZeNXNs+pQwJF6ow==", - "dev": true, - "dependencies": { - "sparkles": "^2.0.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/has-gulplog/node_modules/sparkles": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-2.0.0.tgz", - "integrity": "sha512-rqUsosNTLY8KIT6qhuJlXzIUjYJNHTDoHmPnJwfnD7bEvSSvhUOMKuPMCsmLR3vDhyTGi0oAqAbLjgiIXnL2wQ==", - "dev": true, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", - "dependencies": { - "get-intrinsic": "^1.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", - "dev": true, - "dependencies": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", - "dev": true, - "dependencies": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values/node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values/node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values/node_modules/kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true, - "bin": { - "he": "bin/he" - } - }, - "node_modules/homedir-polyfill": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", - "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", - "dev": true, - "dependencies": { - "parse-passwd": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/html-minifier": { - "version": "3.5.21", - "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.21.tgz", - "integrity": "sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA==", - "dev": true, - "dependencies": { - "camel-case": "3.0.x", - "clean-css": "4.2.x", - "commander": "2.17.x", - "he": "1.2.x", - "param-case": "2.1.x", - "relateurl": "0.2.x", - "uglify-js": "3.4.x" - }, - "bin": { - "html-minifier": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/html-minifier/node_modules/uglify-js": { - "version": "3.4.10", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.10.tgz", - "integrity": "sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw==", - "dev": true, - "dependencies": { - "commander": "~2.19.0", - "source-map": "~0.6.1" - }, - "bin": { - "uglifyjs": "bin/uglifyjs" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/html-minifier/node_modules/uglify-js/node_modules/commander": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", - "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", - "dev": true - }, - "node_modules/html-tags": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz", - "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/htmlparser2": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", - "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", - "dev": true, - "dependencies": { - "domelementtype": "^1.3.1", - "domhandler": "^2.3.0", - "domutils": "^1.5.1", - "entities": "^1.1.1", - "inherits": "^2.0.1", - "readable-stream": "^3.1.1" - } - }, - "node_modules/htmlparser2/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dev": true, - "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/http-errors/node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", - "dev": true, - "dependencies": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/immutable": { - "version": "3.8.2", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz", - "integrity": "sha512-15gZoQ38eYjEjxkorfbcgBKBL6R7T459OuK+CpcWt7O3KF4uPCx2tD0uFETlUDIyo+1789crbMhTvQBSR5yBMg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/import-lazy": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", - "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true - }, - "node_modules/inline-source": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/inline-source/-/inline-source-8.0.2.tgz", - "integrity": "sha512-D+ZstDNX2D6N43NiwGv1FB13St2/+hveOVB4vqanv69ZGueVPnO427AO/cYFvRjYzHWmvaC3ZSuZvEdTfx71Tw==", - "dev": true, - "dependencies": { - "csso": "^5.0.5", - "htmlparser2": "^8.0.1", - "node-fetch": "^3.2.10", - "svgo": "^2.8.0", - "terser": "^5.15.0" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/inline-source/node_modules/dom-serializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", - "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", - "dev": true, - "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.2", - "entities": "^4.2.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/inline-source/node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ] - }, - "node_modules/inline-source/node_modules/domhandler": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", - "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", - "dev": true, - "dependencies": { - "domelementtype": "^2.3.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/inline-source/node_modules/domutils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", - "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", - "dev": true, - "dependencies": { - "dom-serializer": "^2.0.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/inline-source/node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "dev": true, - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/inline-source/node_modules/htmlparser2": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", - "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", - "dev": true, - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.0.1", - "entities": "^4.4.0" - } - }, - "node_modules/inquirer": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", - "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", - "dev": true, - "dependencies": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.19", - "mute-stream": "0.0.8", - "run-async": "^2.4.0", - "rxjs": "^6.6.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/inquirer/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/inquirer/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/inquirer/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/inquirer/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/inquirer/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/inquirer/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/internal-slot": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", - "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", - "dependencies": { - "get-intrinsic": "^1.2.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-absolute": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", - "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", - "dev": true, - "dependencies": { - "is-relative": "^1.0.0", - "is-windows": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-alphabetical": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", - "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-alphanumerical": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", - "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", - "dev": true, - "dependencies": { - "is-alphabetical": "^1.0.0", - "is-decimal": "^1.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-array-buffer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", - "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", - "is-typed-array": "^1.1.10" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true - }, - "node_modules/is-async-function": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", - "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dependencies": { - "has-bigints": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-core-module": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz", - "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-decimal": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", - "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-descriptor/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-extendable/node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-finalizationregistry": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", - "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-generator-function": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", - "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-hexadecimal": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", - "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", - "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-negated-glob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", - "integrity": "sha512-czXVVn/QEmgvej1f50BZ648vUI+em0xqMq2Sn+QncCLN4zj1UAxlT+kw/6ggQTOaZPd1HqKQGEqbpQVtJucWug==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-number-like": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/is-number-like/-/is-number-like-1.0.8.tgz", - "integrity": "sha512-6rZi3ezCyFcn5L71ywzz2bS5b2Igl1En3eTlZlvKjpz1n3IZLAYMbKYAIQgFmEu0GENg92ziU/faEOA/aixjbA==", - "dev": true, - "dependencies": { - "lodash.isfinite": "^3.3.2" - } - }, - "node_modules/is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-path-cwd": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-primitive": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-3.0.1.tgz", - "integrity": "sha512-GljRxhWvlCNRfZyORiH77FwdFwGcMO620o37EOYC0ORWdq+WYNVqW0w2Juzew4M+L81l6/QS3t5gkkihyRqv9w==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-promise": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", - "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", - "dev": true - }, - "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-regexp": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-2.1.0.tgz", - "integrity": "sha512-OZ4IlER3zmRIoB9AqNhEggVxqIH4ofDns5nRrPS6yQxXE1TPCUpFznBfRQmQa8uC+pXqjMnukiJBxCisIxiLGA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/is-relative": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", - "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", - "dev": true, - "dependencies": { - "is-unc-path": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-set": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", - "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", - "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", - "dev": true - }, - "node_modules/is-unc-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", - "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", - "dev": true, - "dependencies": { - "unc-path-regex": "^0.1.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==", - "dev": true - }, - "node_modules/is-valid-glob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", - "integrity": "sha512-AhiROmoEFDSsjx8hW+5sGwgKVIORcXnrlAx/R0ZSeaPw70Vw0CqkGBBhHGL58Uox2eXnU1AnvXJl1XlyedO5bA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-weakmap": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", - "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakset": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", - "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/iterator.prototype": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.0.tgz", - "integrity": "sha512-rjuhAk1AJ1fssphHD0IFV6TWL40CwRZ53FrztKx43yk2v6rguBYsY4Bj1VU4HmoMmKwZUlx7mfnhDf9cOp4YTw==", - "dev": true, - "dependencies": { - "define-properties": "^1.1.4", - "get-intrinsic": "^1.1.3", - "has-symbols": "^1.0.3", - "has-tostringtag": "^1.0.0", - "reflect.getprototypeof": "^1.0.3" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsonfile": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.1.tgz", - "integrity": "sha512-oBko6ZHlubVB5mRFkur5vgYR1UyqX+S6Y/oCfLhqNdcc2fYFlDpIoNc7AfKS1KOGcnNAkvsr0grLck9ANM815w==", - "dev": true, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/jsonminify": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/jsonminify/-/jsonminify-0.2.3.tgz", - "integrity": "sha512-xCKqFKtH9nCPqm2Uisk7GlgYMkk4FQ7rHosMcIoSBAP8KkpW8/9ditjDXCcTuIEIiyq9WR97G+9i60fhW7ibUA==", - "dev": true, - "engines": { - "node": ">=0.8.0", - "npm": ">=1.1.0" - } - }, - "node_modules/jsx-ast-utils": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz", - "integrity": "sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==", - "dev": true, - "dependencies": { - "array-includes": "^3.1.5", - "object.assign": "^4.1.3" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/known-css-properties": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.21.0.tgz", - "integrity": "sha512-sZLUnTqimCkvkgRS+kbPlYW5o8q5w1cu+uIisKpEWkj31I8mx8kNG162DwRav8Zirkva6N5uoFsm9kzK4mUXjw==", - "dev": true - }, - "node_modules/last-run": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/last-run/-/last-run-1.1.1.tgz", - "integrity": "sha512-U/VxvpX4N/rFvPzr3qG5EtLKEnNI0emvIQB3/ecEwv+8GHaUKbIB8vxv1Oai5FAF0d0r7LXHhLLe5K/yChm5GQ==", - "dev": true, - "dependencies": { - "default-resolution": "^2.0.0", - "es6-weak-map": "^2.0.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/lazystream": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", - "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", - "dev": true, - "dependencies": { - "readable-stream": "^2.0.5" - }, - "engines": { - "node": ">= 0.6.3" - } - }, - "node_modules/lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw==", - "dev": true, - "dependencies": { - "invert-kv": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/lead": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz", - "integrity": "sha512-IpSVCk9AYvLHo5ctcIXxOBpMWUe+4TKN3VPWAKUbJikkmsGp0VrSM8IttVc32D6J4WUsiPE6aEFRNmIoF/gdow==", - "dev": true, - "dependencies": { - "flush-write-stream": "^1.0.2" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/leaflet": { - "version": "1.9.4", - "resolved": "https://registry.npmjs.org/leaflet/-/leaflet-1.9.4.tgz", - "integrity": "sha512-nxS1ynzJOmOlHp+iL3FyWqK89GtNL8U8rvlMOsQdTTssxZwCXh8N2NB3GDQOL+YR3XnWyZAxwQixURb+FA74PA==" - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/liftoff": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz", - "integrity": "sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog==", - "dev": true, - "dependencies": { - "extend": "^3.0.0", - "findup-sync": "^3.0.0", - "fined": "^1.0.1", - "flagged-respawn": "^1.0.0", - "is-plain-object": "^2.0.4", - "object.map": "^1.0.0", - "rechoir": "^0.6.2", - "resolve": "^1.1.7" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/liftoff/node_modules/braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/liftoff/node_modules/braces/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/liftoff/node_modules/fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", - "dev": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/liftoff/node_modules/fill-range/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/liftoff/node_modules/findup-sync": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", - "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", - "dev": true, - "dependencies": { - "detect-file": "^1.0.0", - "is-glob": "^4.0.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/liftoff/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/liftoff/node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/liftoff/node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/liftoff/node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/liftoff/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/liftoff/node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/liftoff/node_modules/split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dev": true, - "dependencies": { - "extend-shallow": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/liftoff/node_modules/to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", - "dev": true, - "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/limiter": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz", - "integrity": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==", - "dev": true - }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true - }, - "node_modules/load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/load-json-file/node_modules/parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==", - "dev": true, - "dependencies": { - "error-ex": "^1.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/localtunnel": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/localtunnel/-/localtunnel-2.0.2.tgz", - "integrity": "sha512-n418Cn5ynvJd7m/N1d9WVJISLJF/ellZnfsLnx8WBWGzxv/ntNcFkJ1o6se5quUhCplfLGBNL5tYHiq5WF3Nug==", - "dev": true, - "dependencies": { - "axios": "0.21.4", - "debug": "4.3.2", - "openurl": "1.1.1", - "yargs": "17.1.1" - }, - "bin": { - "lt": "bin/lt.js" - }, - "engines": { - "node": ">=8.3.0" - } - }, - "node_modules/localtunnel/node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "node_modules/localtunnel/node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/localtunnel/node_modules/yargs": { - "version": "17.1.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.1.1.tgz", - "integrity": "sha512-c2k48R0PwKIqKhPMWjeiF6y2xY/gPMUlro0sgxqXpbOIohWiLNXWslsootttv7E1e73QPAMQSg5FeySbVcpsPQ==", - "dev": true, - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "node_modules/lodash.assignin": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.assignin/-/lodash.assignin-4.2.0.tgz", - "integrity": "sha512-yX/rx6d/UTVh7sSVWVSIMjfnz95evAgDFdb1ZozC35I9mSFCkmzptOzevxjgbQUsc78NR44LVHWjsoMQXy9FDg==", - "dev": true - }, - "node_modules/lodash.bind": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/lodash.bind/-/lodash.bind-4.2.1.tgz", - "integrity": "sha512-lxdsn7xxlCymgLYo1gGvVrfHmkjDiyqVv62FAeF2i5ta72BipE1SLxw8hPEPLhD4/247Ijw07UQH7Hq/chT5LA==", - "dev": true - }, - "node_modules/lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", - "dev": true - }, - "node_modules/lodash.defaults": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", - "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==", - "dev": true - }, - "node_modules/lodash.filter": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.filter/-/lodash.filter-4.6.0.tgz", - "integrity": "sha512-pXYUy7PR8BCLwX5mgJ/aNtyOvuJTdZAo9EQFUvMIYugqmJxnrYaANvTbgndOzHSCSR0wnlBBfRXJL5SbWxo3FQ==", - "dev": true - }, - "node_modules/lodash.flatten": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", - "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==", - "dev": true - }, - "node_modules/lodash.foreach": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-4.5.0.tgz", - "integrity": "sha512-aEXTF4d+m05rVOAUG3z4vZZ4xVexLKZGF0lIxuHZ1Hplpk/3B6Z1+/ICICYRLm7c41Z2xiejbkCkJoTlypoXhQ==", - "dev": true - }, - "node_modules/lodash.isfinite": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz", - "integrity": "sha512-7FGG40uhC8Mm633uKW1r58aElFlBlxCrg9JfSi3P6aYiWmfiWF0PgMd86ZUsxE5GwWPdHoS2+48bwTh2VPkIQA==", - "dev": true - }, - "node_modules/lodash.map": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz", - "integrity": "sha512-worNHGKLDetmcEYDvh2stPCrrQRkP20E4l0iIS7F8EvzMqBBi7ltvFN5m1HvTf1P7Jk1txKhvFcmYsCr8O2F1Q==", - "dev": true - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "node_modules/lodash.pick": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz", - "integrity": "sha512-hXt6Ul/5yWjfklSGvLQl8vM//l3FtyHZeuelpzK6mm99pNvN9yTDruNZPEJZD1oWrqo+izBmB7oUfWgcCX7s4Q==", - "dev": true - }, - "node_modules/lodash.reduce": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.reduce/-/lodash.reduce-4.6.0.tgz", - "integrity": "sha512-6raRe2vxCYBhpBu+B+TtNGUzah+hQjVdu3E17wfusjyrXBka2nBS8OH/gjVZ5PvHOhWmIZTYri09Z6n/QfnNMw==", - "dev": true - }, - "node_modules/lodash.reject": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.reject/-/lodash.reject-4.6.0.tgz", - "integrity": "sha512-qkTuvgEzYdyhiJBx42YPzPo71R1aEr0z79kAv7Ixg8wPFEjgRgJdUsGMG3Hf3OYSF/kHI79XhNlt+5Ar6OzwxQ==", - "dev": true - }, - "node_modules/lodash.some": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.some/-/lodash.some-4.6.0.tgz", - "integrity": "sha512-j7MJE+TuT51q9ggt4fSgVqro163BEFjAt3u97IqU+JA2DkWl80nFTrowzLpZ/BnpN7rrl0JA/593NAdd8p/scQ==", - "dev": true - }, - "node_modules/lodash.truncate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", - "dev": true - }, - "node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/log-symbols/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/log-symbols/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/log-symbols/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/log-symbols/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/log-symbols/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/log-symbols/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/longest-streak": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz", - "integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, - "node_modules/lower-case": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", - "integrity": "sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==", - "dev": true - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/lru-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", - "integrity": "sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==", - "dev": true, - "dependencies": { - "es5-ext": "~0.10.2" - } - }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true - }, - "node_modules/make-error-cause": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/make-error-cause/-/make-error-cause-1.2.2.tgz", - "integrity": "sha512-4TO2Y3HkBnis4c0dxhAgD/jprySYLACf7nwN6V0HAHDx59g12WlRpUmFy1bRHamjGUEEBrEvCq6SUpsEE2lhUg==", - "dev": true, - "dependencies": { - "make-error": "^1.2.0" - } - }, - "node_modules/make-iterator": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", - "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/make-iterator/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/map-obj": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", - "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/map-stream": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz", - "integrity": "sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g==", - "dev": true - }, - "node_modules/map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", - "dev": true, - "dependencies": { - "object-visit": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/match-stream": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/match-stream/-/match-stream-0.0.2.tgz", - "integrity": "sha512-TbN21KrvmZ4mHzKqSFeNNNYeOGNNoEE0sQjhOGlHc+W6XhV4nEhJqaQTJj106NF+NYjyJ7pXh23+OQ1d306ORw==", - "dev": true, - "dependencies": { - "buffers": "~0.1.1", - "readable-stream": "~1.0.0" - } - }, - "node_modules/match-stream/node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", - "dev": true - }, - "node_modules/match-stream/node_modules/readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "node_modules/match-stream/node_modules/string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", + "node_modules/b4a": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.4.tgz", + "integrity": "sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==", "dev": true }, - "node_modules/matchdep": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz", - "integrity": "sha512-LFgVbaHIHMqCRuCZyfCtUOq9/Lnzhi7Z0KFUE2fhD54+JN2jLh3hC02RLkqauJ3U4soU6H1J3tfj/Byk7GoEjA==", - "dev": true, - "dependencies": { - "findup-sync": "^2.0.0", - "micromatch": "^3.0.4", - "resolve": "^1.4.0", - "stack-trace": "0.0.10" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/matchdep/node_modules/braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/matchdep/node_modules/braces/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/matchdep/node_modules/fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", - "dev": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/matchdep/node_modules/fill-range/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/matchdep/node_modules/findup-sync": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", - "integrity": "sha512-vs+3unmJT45eczmcAZ6zMJtxN3l/QXeccaXQx5cu/MeJMhewVfoWZqibRkOxPnmoR59+Zy5hjabfQc6JLSah4g==", - "dev": true, - "dependencies": { - "detect-file": "^1.0.0", - "is-glob": "^3.1.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/matchdep/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/matchdep/node_modules/is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "node_modules/babel-eslint": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.1.0.tgz", + "integrity": "sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==", + "deprecated": "babel-eslint is now @babel/eslint-parser. This package will no longer receive updates.", "dev": true, "dependencies": { - "is-extglob": "^2.1.0" + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.0", + "@babel/traverse": "^7.7.0", + "@babel/types": "^7.7.0", + "eslint-visitor-keys": "^1.0.0", + "resolve": "^1.12.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=6" + }, + "peerDependencies": { + "eslint": ">= 4.12.1" } }, - "node_modules/matchdep/node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "node_modules/babel-eslint/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/matchdep/node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.5.tgz", + "integrity": "sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg==", "dev": true, "dependencies": { - "is-buffer": "^1.1.5" + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.4.2", + "semver": "^6.3.1" }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/matchdep/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/matchdep/node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/matchdep/node_modules/split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.4.tgz", + "integrity": "sha512-9l//BZZsPR+5XjyJMPtZSK4jv0BsTO1zDac2GC6ygx9WLGlcsnRd1Co0B2zT5fF5Ic6BZy+9m3HNZ3QcOeDKfg==", "dev": true, "dependencies": { - "extend-shallow": "^3.0.0" + "@babel/helper-define-polyfill-provider": "^0.4.2", + "core-js-compat": "^3.32.2" }, - "engines": { - "node": ">=0.10.0" + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/matchdep/node_modules/to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.2.tgz", + "integrity": "sha512-tAlOptU0Xj34V1Y2PNTL4Y0FOJMDB6bZmoW39FeCQIhigGLkqu3Fj6uiXpxIf6Ij274ENdYx64y6Au+ZKlb1IA==", "dev": true, "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" + "@babel/helper-define-polyfill-provider": "^0.4.2" }, - "engines": { - "node": ">=0.10.0" + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/mathml-tag-names": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz", - "integrity": "sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true }, - "node_modules/md5": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", - "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", "dev": true, - "dependencies": { - "charenc": "0.0.2", - "crypt": "0.0.2", - "is-buffer": "~1.1.6" - } + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, - "node_modules/mdast-util-from-markdown": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz", - "integrity": "sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==", + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true, - "dependencies": { - "@types/mdast": "^3.0.0", - "mdast-util-to-string": "^2.0.0", - "micromark": "~2.11.0", - "parse-entities": "^2.0.0", - "unist-util-stringify-position": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "optional": true, + "peer": true, + "engines": { + "node": ">=8" } }, - "node_modules/mdast-util-to-markdown": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.5.tgz", - "integrity": "sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ==", + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", "dev": true, "dependencies": { - "@types/unist": "^2.0.0", - "longest-streak": "^2.0.0", - "mdast-util-to-string": "^2.0.0", - "parse-entities": "^2.0.0", - "repeat-string": "^1.0.0", - "zwitch": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", - "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" } }, - "node_modules/mdn-data": { - "version": "2.0.28", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", - "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==", - "dev": true - }, - "node_modules/memoizee": { - "version": "0.4.15", - "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.15.tgz", - "integrity": "sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==", + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "dependencies": { - "d": "^1.0.1", - "es5-ext": "^0.10.53", - "es6-weak-map": "^2.0.3", - "event-emitter": "^0.3.5", - "is-promise": "^2.2.2", - "lru-queue": "^0.1.0", - "next-tick": "^1.1.0", - "timers-ext": "^0.1.7" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/meow": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", - "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dev": true, "dependencies": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize": "^1.2.0", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.18.0", - "yargs-parser": "^20.2.3" + "fill-range": "^7.0.1" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/merge-stream": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz", - "integrity": "sha512-e6RM36aegd4f+r8BZCcYXlO2P3H6xbUM6ktL2Xmf45GAOit9bI4z6/3VU7JwllVO1L7u0UDSg/EhzQ5lmMLolA==", + "node_modules/browserslist": { + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz", + "integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "dependencies": { - "readable-stream": "^2.0.1" - } - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, + "caniuse-lite": "^1.0.30001541", + "electron-to-chromium": "^1.4.535", + "node-releases": "^2.0.13", + "update-browserslist-db": "^1.0.13" + }, + "bin": { + "browserslist": "cli.js" + }, "engines": { - "node": ">= 8" - } - }, - "node_modules/metaparser": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/metaparser/-/metaparser-1.0.7.tgz", - "integrity": "sha512-9f7r6vL2F9LA7T6tvt5cwBrNOfjb7QgGpbnv5qgvCInlQyfBfJV5i+yvvm3b2667N4FF5fJrGVIsnSCTevR8zQ==", - "dev": true, - "dependencies": { - "async": "*", - "cheerio": "*", - "mkdirp": "*", - "underscore": "*" + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/micromark": { - "version": "2.11.4", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz", - "integrity": "sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==", + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", "dev": true, "funding": [ { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" }, { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" + "type": "consulting", + "url": "https://feross.org/support" } ], "dependencies": { - "debug": "^4.0.0", - "parse-entities": "^2.0.0" + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" } }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true }, - "node_modules/mime": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", - "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", + "node_modules/builtin-modules": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", + "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", "dev": true, - "bin": { - "mime": "cli.js" + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "node_modules/cac": { + "version": "6.7.14", + "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", + "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", "dev": true, "engines": { - "node": ">= 0.6" + "node": ">=8" } }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", "dependencies": { - "mime-db": "1.52.0" + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" }, - "engines": { - "node": ">= 0.6" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, "engines": { "node": ">=6" } }, - "node_modules/min-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "node_modules/caniuse-lite": { + "version": "1.0.30001546", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001546.tgz", + "integrity": "sha512-zvtSJwuQFpewSyRrI3AsftF6rM0X80mZkChIt1spBGEvRglCrjTniXvinc8JKRoqTwXAgvqTImaN9igfSMtUBw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": ">=4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "optional": true, + "peer": true, "dependencies": { - "brace-expansion": "^1.1.7" + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" }, "engines": { - "node": "*" + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" } }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true }, - "node_modules/minimist-options": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", - "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", + "node_modules/color": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", + "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", "dev": true, "dependencies": { - "arrify": "^1.0.1", - "is-plain-obj": "^1.1.0", - "kind-of": "^6.0.3" + "color-convert": "^2.0.1", + "color-string": "^1.9.0" }, "engines": { - "node": ">= 6" - } - }, - "node_modules/minimist-options/node_modules/arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "node": ">=12.5.0" } }, - "node_modules/minimist-options/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, "engines": { - "node": ">=0.10.0" + "node": ">=7.0.0" } }, - "node_modules/mitt": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mitt/-/mitt-1.2.0.tgz", - "integrity": "sha512-r6lj77KlwqLhIUku9UWYes7KJtsczvolZkzp8hbaDPPaE24OmWl5s539Mytlj22siEQKosZ26qCBgda2PKwoJw==", + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", "dev": true, "dependencies": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" } }, - "node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true }, - "node_modules/moment": { - "version": "2.29.4", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", - "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/common-tags": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", + "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", + "dev": true, "engines": { - "node": "*" + "node": ">=4.0.0" } }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, - "node_modules/mute-stdout": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz", - "integrity": "sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg==", + "node_modules/consola": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/consola/-/consola-3.2.3.tgz", + "integrity": "sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==", "dev": true, "engines": { - "node": ">= 0.10" + "node": "^14.18.0 || >=16.10.0" } }, - "node_modules/mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", "dev": true }, - "node_modules/nanoid": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "node_modules/core-js-compat": { + "version": "3.33.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.33.0.tgz", + "integrity": "sha512-0w4LcLXsVEuNkIqwjjf9rjCoPhK8uqA4tMRh4Ge26vfLtUutshn+aRJU21I9LCJlh2QQHfisNToLjw1XEJLTWw==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.cjs" + "dependencies": { + "browserslist": "^4.22.1" }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" } }, - "node_modules/nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">= 8" } }, - "node_modules/nanomatch/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "node_modules/crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "node_modules/navigo": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/navigo/-/navigo-7.1.3.tgz", - "integrity": "sha512-dFsj+a0ml09P4rtX8xzsPl/SXb15YOTes7vjDSTsifRAMJ400+M4Hb5oiI9L5fhmaILBrzp0Y0o0+DZ+f3NLfw==" + "node_modules/d3-collection": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/d3-collection/-/d3-collection-1.0.7.tgz", + "integrity": "sha512-ii0/r5f4sjKNTfh84Di+DpztYwqKhEyUlKoPrzUFfeSkWxjW49xU2QzO9qrPrNkpdI0XJkfzvmTu8V2Zylln6A==" }, - "node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "dev": true, + "node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", "engines": { - "node": ">= 0.6" + "node": ">=12" } }, - "node_modules/next-tick": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", - "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", - "dev": true - }, - "node_modules/nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true + "node_modules/d3-dispatch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", + "engines": { + "node": ">=12" + } }, - "node_modules/no-case": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", - "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", - "dev": true, + "node_modules/d3-drag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", + "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", "dependencies": { - "lower-case": "^1.1.1" + "d3-dispatch": "1 - 3", + "d3-selection": "3" + }, + "engines": { + "node": ">=12" } }, - "node_modules/node-domexception": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", - "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/jimmywarting" - }, - { - "type": "github", - "url": "https://paypal.me/jimmywarting" - } - ], + "node_modules/d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", "engines": { - "node": ">=10.5.0" + "node": ">=12" } }, - "node_modules/node-fetch": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.1.tgz", - "integrity": "sha512-cRVc/kyto/7E5shrWca1Wsea4y6tL9iYJE5FBCius3JQfb/4P4I295PfhgbJQBLTx6lATE4z+wK0rPM4VS2uow==", - "dev": true, + "node_modules/d3-force": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", + "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", "dependencies": { - "data-uri-to-buffer": "^4.0.0", - "fetch-blob": "^3.1.4", - "formdata-polyfill": "^4.0.10" + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/node-fetch" + "node": ">=12" } }, - "node_modules/node-polyglot": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/node-polyglot/-/node-polyglot-2.2.2.tgz", - "integrity": "sha512-SSQ9CjS0m19ipJltqAzPbBvl51X1Wi7seafr42Hu8wQpQCQsH1coz1R7iHO7ZaDaAf4qwpty4qyx6Tq4K86N1g==", + "node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", "dependencies": { - "for-each": "^0.3.2", - "has": "^1.0.1", - "string.prototype.trim": "^1.1.2", - "warning": "^3.0.0" + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" } }, - "node_modules/node-releases": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.12.tgz", - "integrity": "sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==", - "dev": true - }, - "node_modules/node-unzip-2": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/node-unzip-2/-/node-unzip-2-0.2.8.tgz", - "integrity": "sha512-fmJi73zTRW7RSo/1wyrKc2srKMwb3L6Ppke/7elzQ0QRt6sUjfiIcVsWdrqO5uEHAdvRKXjoySuo4HYe5BB0rw==", - "dev": true, - "dependencies": { - "binary": "~0.3.0", - "fstream": "~1.0.12", - "match-stream": "~0.0.2", - "pullstream": "~0.4.0", - "readable-stream": "~1.0.0", - "setimmediate": "~1.0.1" + "node_modules/d3-quadtree": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", + "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", + "engines": { + "node": ">=12" } }, - "node_modules/node-unzip-2/node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", - "dev": true - }, - "node_modules/node-unzip-2/node_modules/readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" + "node_modules/d3-selection": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", + "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", + "engines": { + "node": ">=12" } }, - "node_modules/node-unzip-2/node_modules/string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", - "dev": true + "node_modules/d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "engines": { + "node": ">=12" + } }, - "node_modules/normalize-package-data": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", - "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", - "dev": true, + "node_modules/d3-transition": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", + "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", "dependencies": { - "hosted-git-info": "^4.0.1", - "is-core-module": "^2.5.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" + "d3-color": "1 - 3", + "d3-dispatch": "1 - 3", + "d3-ease": "1 - 3", + "d3-interpolate": "1 - 3", + "d3-timer": "1 - 3" }, "engines": { - "node": ">=10" + "node": ">=12" + }, + "peerDependencies": { + "d3-selection": "2 - 3" } }, - "node_modules/normalize-path": { + "node_modules/d3-zoom": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, + "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", + "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "2 - 3", + "d3-transition": "2 - 3" + }, "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, - "node_modules/normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "node_modules/decode-bmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/decode-bmp/-/decode-bmp-0.2.1.tgz", + "integrity": "sha512-NiOaGe+GN0KJqi2STf24hfMkFitDUaIoUU3eKvP/wAbLe8o6FuW5n/x7MHPR0HKvBokp6MQY/j7w8lewEeVCIA==", "dev": true, + "dependencies": { + "@canvas/image-data": "^1.0.0", + "to-data-view": "^1.1.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8.6.0" } }, - "node_modules/normalize-selector": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/normalize-selector/-/normalize-selector-0.2.0.tgz", - "integrity": "sha512-dxvWdI8gw6eAvk9BlPffgEoGfM7AdijoCwOEJge3e3ulT2XLgmU7KvvxprOaCu05Q1uGRHmOhHe1r6emZoKyFw==", - "dev": true - }, - "node_modules/now-and-later": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz", - "integrity": "sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==", + "node_modules/decode-ico": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/decode-ico/-/decode-ico-0.4.1.tgz", + "integrity": "sha512-69NZfbKIzux1vBOd31al3XnMnH+2mqDhEgLdpygErm4d60N+UwA5Sq5WFjmEDQzumgB9fElojGwWG0vybVfFmA==", "dev": true, "dependencies": { - "once": "^1.3.2" + "@canvas/image-data": "^1.0.0", + "decode-bmp": "^0.2.0", + "to-data-view": "^1.1.0" }, "engines": { - "node": ">= 0.10" + "node": ">=8.6" } }, - "node_modules/nth-check": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", "dev": true, "dependencies": { - "boolbase": "^1.0.0" + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" }, "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/num2fraction": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", - "integrity": "sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg==", - "dev": true - }, - "node_modules/number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=4.0.0" } }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", "dev": true, "engines": { "node": ">=0.10.0" } }, - "node_modules/object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", - "dev": true, + "node_modules/define-data-property": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.0.tgz", + "integrity": "sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==", "dependencies": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, - "node_modules/object-copy/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dev": true, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "dependencies": { - "is-descriptor": "^0.1.0" + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/object-copy/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "node_modules/defu": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.2.tgz", + "integrity": "sha512-+uO4+qr7msjNNWKYPHqN/3+Dx3NFkmIzayk2L1MyZQlvgZb/J1A0fo410dpKrN2SnqFjt8n4JL8fDJE0wIgjFQ==", + "dev": true + }, + "node_modules/detect-libc": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz", + "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==", "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/object-copy/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, "dependencies": { - "kind-of": "^3.0.2" + "esutils": "^2.0.2" }, "engines": { - "node": ">=0.10.0" + "node": ">=6.0.0" } }, - "node_modules/object-copy/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "node_modules/ejs": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz", + "integrity": "sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==", "dev": true, "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/object-copy/node_modules/is-descriptor/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "node_modules/electron-to-chromium": { + "version": "1.4.542", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.542.tgz", + "integrity": "sha512-6+cpa00G09N3sfh2joln4VUXHquWrOFx3FLZqiVQvl45+zS9DskDBTPvob+BhvFRmTBkyDSk0vvLMMRo/qc6mQ==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", "dev": true, - "engines": { - "node": ">=0.10.0" + "dependencies": { + "once": "^1.4.0" } }, - "node_modules/object-copy/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "node_modules/enquirer": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", + "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", "dev": true, "dependencies": { - "is-buffer": "^1.1.5" + "ansi-colors": "^4.1.1", + "strip-ansi": "^6.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8.6" } }, - "node_modules/object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "node_modules/es-abstract": { + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.2.tgz", + "integrity": "sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA==", + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "arraybuffer.prototype.slice": "^1.0.2", + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-set-tostringtag": "^2.0.1", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.1", + "get-symbol-description": "^1.0.0", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.5", + "is-array-buffer": "^3.0.2", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.12", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.3", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "safe-array-concat": "^1.0.1", + "safe-regex-test": "^1.0.0", + "string.prototype.trim": "^1.2.8", + "string.prototype.trimend": "^1.0.7", + "string.prototype.trimstart": "^1.0.7", + "typed-array-buffer": "^1.0.0", + "typed-array-byte-length": "^1.0.0", + "typed-array-byte-offset": "^1.0.0", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.11" + }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "node_modules/es-iterator-helpers": { + "version": "1.0.15", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz", + "integrity": "sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==", + "dev": true, + "dependencies": { + "asynciterator.prototype": "^1.0.0", + "call-bind": "^1.0.2", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.1", + "es-set-tostringtag": "^2.0.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.2.1", + "globalthis": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.5", + "iterator.prototype": "^1.1.2", + "safe-array-concat": "^1.0.1" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", + "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "dependencies": { + "get-intrinsic": "^1.1.3", + "has": "^1.0.3", + "has-tostringtag": "^1.0.0" + }, "engines": { "node": ">= 0.4" } }, - "node_modules/object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", + "node_modules/es-shim-unscopables": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", + "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", "dev": true, "dependencies": { - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" + "has": "^1.0.3" } }, - "node_modules/object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -9542,893 +3855,811 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/object.defaults": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", - "integrity": "sha512-c/K0mw/F11k4dEUBMW8naXUuBuhxRCfG7W+yFy8EcijU/rSmazOUd1XAEEe6bC0OuXY4HUKjTJv7xbxIMqdxrA==", + "node_modules/esbuild": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", + "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", "dev": true, - "dependencies": { - "array-each": "^1.0.1", - "array-slice": "^1.0.0", - "for-own": "^1.0.0", - "isobject": "^3.0.0" + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" }, "engines": { - "node": ">=0.10.0" + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.18.20", + "@esbuild/android-arm64": "0.18.20", + "@esbuild/android-x64": "0.18.20", + "@esbuild/darwin-arm64": "0.18.20", + "@esbuild/darwin-x64": "0.18.20", + "@esbuild/freebsd-arm64": "0.18.20", + "@esbuild/freebsd-x64": "0.18.20", + "@esbuild/linux-arm": "0.18.20", + "@esbuild/linux-arm64": "0.18.20", + "@esbuild/linux-ia32": "0.18.20", + "@esbuild/linux-loong64": "0.18.20", + "@esbuild/linux-mips64el": "0.18.20", + "@esbuild/linux-ppc64": "0.18.20", + "@esbuild/linux-riscv64": "0.18.20", + "@esbuild/linux-s390x": "0.18.20", + "@esbuild/linux-x64": "0.18.20", + "@esbuild/netbsd-x64": "0.18.20", + "@esbuild/openbsd-x64": "0.18.20", + "@esbuild/sunos-x64": "0.18.20", + "@esbuild/win32-arm64": "0.18.20", + "@esbuild/win32-ia32": "0.18.20", + "@esbuild/win32-x64": "0.18.20" } }, - "node_modules/object.entries": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz", - "integrity": "sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==", + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, "engines": { - "node": ">= 0.4" + "node": ">=6" } }, - "node_modules/object.fromentries": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.6.tgz", - "integrity": "sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==", + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "7.32.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", + "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.4.3", + "@humanwhocodes/config-array": "^0.5.0", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.1.2", + "globals": "^13.6.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^6.0.9", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "bin": { + "eslint": "bin/eslint.js" }, "engines": { - "node": ">= 0.4" + "node": "^10.12.0 || >=12.0.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://opencollective.com/eslint" } }, - "node_modules/object.hasown": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.2.tgz", - "integrity": "sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==", + "node_modules/eslint-config-airbnb-es5": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb-es5/-/eslint-config-airbnb-es5-1.2.0.tgz", + "integrity": "sha512-MaOKwNpqNZIRy+3augFj5vGHJ4F1sskPjJ/Od7K3N8Vv+8pD6t73XCL18KrHrF1m58qFxPBDl1US6bswE65IbQ==", "dev": true, "dependencies": { - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "strip-json-comments": "1.0.2" } }, - "node_modules/object.map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", - "integrity": "sha512-3+mAJu2PLfnSVGHwIWubpOFLscJANBKuB/6A4CxBstc4aqwQY0FWcsppuy4jU5GSB95yES5JHSI+33AWuS4k6w==", + "node_modules/eslint-config-airbnb-es5/node_modules/strip-json-comments": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.2.tgz", + "integrity": "sha512-zRzQSDu8YVDoLt1cVFfznCS6Y0wxWphJiG6+2d9YLZQJKooieRoVa518RFGK/P7m9ZsNyDEiknOJkdPQu7exVw==", "dev": true, - "dependencies": { - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" + "bin": { + "strip-json-comments": "cli.js" }, "engines": { - "node": ">=0.10.0" + "node": ">=0.8.0" } }, - "node_modules/object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", + "node_modules/eslint-config-defaults": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-defaults/-/eslint-config-defaults-9.0.0.tgz", + "integrity": "sha512-+7YOx3HLdwG50YWpFNI/CLriyqcScVyFB7AWmR0T+6LyWhZCQrlHGYiQbniv04zACAv0W9hjIrhd8yFIMov6PQ==", "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.10.0" } }, - "node_modules/object.reduce": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.reduce/-/object.reduce-1.0.1.tgz", - "integrity": "sha512-naLhxxpUESbNkRqc35oQ2scZSJueHGQNUfMW/0U37IgN6tE2dgDWg3whf+NEliy3F/QysrO48XKUz/nGPe+AQw==", + "node_modules/eslint-config-prettier": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.0.0.tgz", + "integrity": "sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==", "dev": true, - "dependencies": { - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" + "bin": { + "eslint-config-prettier": "bin/cli.js" }, - "engines": { - "node": ">=0.10.0" + "peerDependencies": { + "eslint": ">=7.0.0" } }, - "node_modules/object.values": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", - "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", + "node_modules/eslint-plugin-react": { + "version": "7.33.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz", + "integrity": "sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "array-includes": "^3.1.6", + "array.prototype.flatmap": "^1.3.1", + "array.prototype.tosorted": "^1.1.1", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.0.12", + "estraverse": "^5.3.0", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.6", + "object.fromentries": "^2.0.6", + "object.hasown": "^1.1.2", + "object.values": "^1.1.6", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.4", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.8" }, "engines": { - "node": ">= 0.4" + "node": ">=4" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" } }, - "node_modules/on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "node_modules/eslint-plugin-react/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, "dependencies": { - "ee-first": "1.1.1" + "esutils": "^2.0.2" }, "engines": { - "node": ">= 0.8" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "dependencies": { - "wrappy": "1" + "node": ">=0.10.0" } }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.4", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", + "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", "dev": true, "dependencies": { - "mimic-fn": "^2.1.0" + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" }, - "engines": { - "node": ">=6" + "bin": { + "resolve": "bin/resolve" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/openurl": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/openurl/-/openurl-1.1.1.tgz", - "integrity": "sha512-d/gTkTb1i1GKz5k3XE3XFV/PxQ1k45zDqGP2OA7YhgsaLoqm6qRvARAZOFer1fcXritWlGBRCu/UgeS4HAnXAA==", - "dev": true - }, - "node_modules/opn": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.3.0.tgz", - "integrity": "sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==", - "dev": true, - "dependencies": { - "is-wsl": "^1.1.0" - }, - "engines": { - "node": ">=4" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "node_modules/eslint-plugin-react/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - }, - "engines": { - "node": ">= 0.8.0" + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/os-locale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g==", + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, "dependencies": { - "lcid": "^1.0.0" + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "node": ">=8.0.0" } }, - "node_modules/over": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/over/-/over-0.0.5.tgz", - "integrity": "sha512-EEc3GCT5ce2VgLYKGeomTSgQT+4wkS13Ya9XzKiskHtemWPx0YhVErn7PtiowTOsYtRlFe6FksgwFeWG1aOJdg==", + "node_modules/eslint-scope/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true, "engines": { - "node": "*" + "node": ">=4.0" } }, - "node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "node_modules/eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", "dev": true, "dependencies": { - "p-try": "^2.0.0" + "eslint-visitor-keys": "^1.1.0" }, "engines": { "node": ">=6" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/mysticatea" } }, - "node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", "dev": true, - "dependencies": { - "aggregate-error": "^3.0.0" - }, "engines": { "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "engines": { - "node": ">=6" } }, - "node_modules/param-case": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", - "integrity": "sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==", - "dev": true, - "dependencies": { - "no-case": "^2.2.0" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "node_modules/eslint/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "dependencies": { - "callsites": "^3.0.0" + "ms": "2.1.2" }, "engines": { - "node": ">=6" - } - }, - "node_modules/parse-entities": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", - "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", - "dev": true, - "dependencies": { - "character-entities": "^1.0.0", - "character-entities-legacy": "^1.0.0", - "character-reference-invalid": "^1.0.0", - "is-alphanumerical": "^1.0.0", - "is-decimal": "^1.0.0", - "is-hexadecimal": "^1.0.0" + "node": ">=6.0" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/parse-filepath": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", - "integrity": "sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==", - "dev": true, - "dependencies": { - "is-absolute": "^1.0.0", - "map-cache": "^0.2.0", - "path-root": "^0.1.1" - }, - "engines": { - "node": ">=0.8" - } + "node_modules/eslint/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "node_modules/espree": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/parse-node-version": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", - "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", "dev": true, "engines": { - "node": ">= 0.10" + "node": ">=4" } }, - "node_modules/parse-passwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==", + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, "engines": { - "node": ">= 0.8" + "node": ">=0.10" } }, - "node_modules/pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==", + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=4.0" } }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, "engines": { - "node": ">=8" + "node": ">=4.0" } }, - "node_modules/path-is-absolute": { + "node_modules/estree-walker": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true, "engines": { "node": ">=0.10.0" } }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "node_modules/expand-template": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", "dev": true, "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-fifo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", "dev": true }, - "node_modules/path-root": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", - "integrity": "sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==", + "node_modules/fast-glob": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", "dev": true, "dependencies": { - "path-root-regex": "^0.1.0" + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-root-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", - "integrity": "sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "node": ">=8.6.0" } }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "engines": { - "node": ">=8" - } + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "dependencies": { + "reusify": "^1.0.4" } }, - "node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, "engines": { - "node": ">=0.10.0" + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", + "node_modules/filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", "dev": true, - "engines": { - "node": ">=0.10.0" + "dependencies": { + "minimatch": "^5.0.1" } }, - "node_modules/pinkie-promise": { + "node_modules/filelist/node_modules/brace-expansion": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "dependencies": { - "pinkie": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" + "balanced-match": "^1.0.0" } }, - "node_modules/plugin-error": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-1.0.1.tgz", - "integrity": "sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==", + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, "dependencies": { - "ansi-colors": "^1.0.1", - "arr-diff": "^4.0.0", - "arr-union": "^3.1.0", - "extend-shallow": "^3.0.2" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">= 0.10" + "node": ">=10" } }, - "node_modules/plugin-error/node_modules/ansi-colors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", - "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, "dependencies": { - "ansi-wrap": "^0.1.0" + "to-regex-range": "^5.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/portscanner": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/portscanner/-/portscanner-2.2.0.tgz", - "integrity": "sha512-IFroCz/59Lqa2uBvzK3bKDbDDIEaAY8XJ1jFxcLWTqosrsc32//P4VuSB2vZXoHiHqOmx8B5L5hnKOxL/7FlPw==", + "node_modules/flat-cache": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.0.tgz", + "integrity": "sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==", "dev": true, "dependencies": { - "async": "^2.6.0", - "is-number-like": "^1.0.3" + "flatted": "^3.2.7", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" }, "engines": { - "node": ">=0.4", - "npm": ">=1.0.0" + "node": ">=12.0.0" } }, - "node_modules/posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } + "node_modules/flatted": { + "version": "3.2.9", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", + "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", + "dev": true }, - "node_modules/postcss": { - "version": "8.4.24", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.24.tgz", - "integrity": "sha512-M0RzbcI0sO/XJNucsGjvWU9ERWxb/ytp1w6dKtxTKgixdtQDq4rmx/g8W1hnaheq9jgwL/oyEdH5Bc4WwJKMqg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", "dependencies": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" + "is-callable": "^1.1.3" } }, - "node_modules/postcss-html": { - "version": "0.36.0", - "resolved": "https://registry.npmjs.org/postcss-html/-/postcss-html-0.36.0.tgz", - "integrity": "sha512-HeiOxGcuwID0AFsNAL0ox3mW6MHH5cstWN1Z3Y+n6H+g12ih7LHdYxWwEA/QmrebctLjo79xz9ouK3MroHwOJw==", - "dev": true, - "dependencies": { - "htmlparser2": "^3.10.0" - }, - "peerDependencies": { - "postcss": ">=5.0.0", - "postcss-syntax": ">=0.36.0" - } + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true }, - "node_modules/postcss-less": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/postcss-less/-/postcss-less-3.1.4.tgz", - "integrity": "sha512-7TvleQWNM2QLcHqvudt3VYjULVB49uiW6XzEUFmvwHzvsOEF5MwBrIXZDJQvJNFGjJQTzSzZnDoCJ8h/ljyGXA==", + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, - "dependencies": { - "postcss": "^7.0.14" - }, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=6.14.4" + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/postcss-less/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, - "node_modules/postcss-less/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, + "node_modules/function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" }, "engines": { - "node": ">=6.0.0" + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/postcss-media-query-parser": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", - "integrity": "sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==", + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", "dev": true }, - "node_modules/postcss-resolve-nested-selector": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz", - "integrity": "sha512-HvExULSwLqHLgUy1rl3ANIqCsvMS0WHss2UOsXhXnQaZ9VCc2oBvIpXrl00IUFT5ZDITME0o6oiXeiHr2SAIfw==", - "dev": true + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "node_modules/postcss-safe-parser": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-4.0.2.tgz", - "integrity": "sha512-Uw6ekxSWNLCPesSv/cmqf2bY/77z11O7jZGPax3ycZMFU/oi2DMH9i89AdHc1tRwFg/arFoEwX0IS3LCUxJh1g==", + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", "dependencies": { - "postcss": "^7.0.26" + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3" }, - "engines": { - "node": ">=6.0.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/postcss-safe-parser/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "node_modules/get-own-enumerable-property-symbols": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", + "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==", "dev": true }, - "node_modules/postcss-safe-parser/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" }, "engines": { - "node": ">=6.0.0" + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-sass": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/postcss-sass/-/postcss-sass-0.4.4.tgz", - "integrity": "sha512-BYxnVYx4mQooOhr+zer0qWbSPYnarAy8ZT7hAQtbxtgVf8gy+LSLT/hHGe35h14/pZDTw1DsxdbrwxBN++H+fg==", - "dev": true, - "dependencies": { - "gonzales-pe": "^4.3.0", - "postcss": "^7.0.21" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/postcss-sass/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "node_modules/github-from-package": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", "dev": true }, - "node_modules/postcss-sass/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": ">=6.0.0" + "node": "*" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/postcss-scss": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-2.1.1.tgz", - "integrity": "sha512-jQmGnj0hSGLd9RscFw9LyuSVAa5Bl1/KBPqG1NQw9w8ND55nY4ZEsdlVuYJvLPpV+y0nwTV5v/4rHPzZRihQbA==", + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, "dependencies": { - "postcss": "^7.0.6" + "is-glob": "^4.0.1" }, "engines": { - "node": ">=6.0.0" + "node": ">= 6" } }, - "node_modules/postcss-scss/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-scss/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "node_modules/globals": { + "version": "13.22.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.22.0.tgz", + "integrity": "sha512-H1Ddc/PbZHTDVJSnj8kWptIRSD6AM3pK+mKytuIVF4uoBV7rshFlhhvA58ceJ5wp3Er58w6zj7bykMpYXt3ETw==", "dev": true, "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "type-fest": "^0.20.2" }, "engines": { - "node": ">=6.0.0" + "node": ">=8" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/postcss-selector-parser": { - "version": "6.0.13", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", - "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", - "dev": true, + "node_modules/globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" + "define-properties": "^1.1.3" }, "engines": { - "node": ">=4" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/postcss-syntax": { - "version": "0.36.2", - "resolved": "https://registry.npmjs.org/postcss-syntax/-/postcss-syntax-0.36.2.tgz", - "integrity": "sha512-nBRg/i7E3SOHWxF3PpF5WnJM/jQ1YpY9000OaVXlAQj6Zp/kIqJxEDWIZ67tAd7NLuk7zqN4yqe9nc0oNAOs1w==", - "dev": true, - "peerDependencies": { - "postcss": ">=5.0.0" + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "dev": true }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, + "node_modules/has": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz", + "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==", "engines": { - "node": ">= 0.8.0" + "node": ">= 0.4.0" } }, - "node_modules/prettier": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz", - "integrity": "sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==", - "dev": true, - "bin": { - "prettier": "bin/prettier.cjs" - }, - "engines": { - "node": ">=14" - }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/pretty-hrtime": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", - "integrity": "sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==", + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "engines": { - "node": ">= 0.8" + "node": ">=8" } }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dependencies": { + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "node_modules/progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", "engines": { - "node": ">=0.4.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/promise-polyfill": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-8.3.0.tgz", - "integrity": "sha512-H5oELycFml5yto/atYqmjyigJoAo3+OXwolYiH7OfQuYlAqhxNvTfiNMbV9hsC6Yp83yE5r2KTVmtrG6R9i6Pg==" - }, - "node_modules/prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "dev": true, - "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/pullstream": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/pullstream/-/pullstream-0.4.1.tgz", - "integrity": "sha512-8ckaufxE74rtbwA0lD0GO2Pk/miCfje3uZtGZd/MQpxkoRIBB004aKBnhdc4Y8L7sip0cis/ekib/1lUwUwxuA==", - "dev": true, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", "dependencies": { - "over": ">= 0.0.5 < 1", - "readable-stream": "~1.0.31", - "setimmediate": ">= 1.0.2 < 2", - "slice-stream": ">= 1.0.0 < 2" + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/pullstream/node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "node_modules/ico-endec": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/ico-endec/-/ico-endec-0.1.6.tgz", + "integrity": "sha512-ZdLU38ZoED3g1j3iEyzcQj+wAkY2xfWNkymszfJPoxucIUhK7NayQ+/C4Kv0nDFMIsbtbEHldv3V8PU494/ueQ==", "dev": true }, - "node_modules/pullstream/node_modules/readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "node_modules/pullstream/node_modules/string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", + "node_modules/idb": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz", + "integrity": "sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==", "dev": true }, - "node_modules/pump": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", - "dev": true, - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/pumpify": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", - "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", - "dev": true, - "dependencies": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" - } - }, - "node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", "dev": true, "funding": [ { @@ -10445,240 +4676,141 @@ } ] }, - "node_modules/queue-tick": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", - "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==", - "dev": true - }, - "node_modules/quick-lru": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", - "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/quickselect": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/quickselect/-/quickselect-2.0.0.tgz", - "integrity": "sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==" - }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", - "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", - "dev": true, - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/rbush": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/rbush/-/rbush-3.0.1.tgz", - "integrity": "sha512-XRaVO0YecOpEuIvbhbpTrZgoiI6xBlz6hnlr6EHhd+0x9ase6EmeN+hdwwUaJvLcsFFQ8iWVF1GAK1yB0BWi0w==", - "dependencies": { - "quickselect": "^2.0.0" - } - }, - "node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "dev": true - }, - "node_modules/read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "dev": true, - "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", - "dev": true, - "dependencies": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/read-pkg-up/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", "dev": true, "engines": { - "node": ">=8" + "node": ">= 4" } }, - "node_modules/read-pkg/node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true - }, - "node_modules/read-pkg/node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/read-pkg/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "bin": { - "semver": "bin/semver" + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/read-pkg/node_modules/type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, "engines": { - "node": ">=8" + "node": ">=0.8.19" } }, - "node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "dev": true, "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "once": "^1.3.0", + "wrappy": "1" } }, - "node_modules/readable-stream/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "node_modules/internal-slot": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", + "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", "dependencies": { - "picomatch": "^2.2.1" + "get-intrinsic": "^1.2.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" }, "engines": { - "node": ">=8.10.0" + "node": ">= 0.4" } }, - "node_modules/rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", - "dev": true, + "node_modules/is-array-buffer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", + "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", "dependencies": { - "resolve": "^1.1.6" + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "is-typed-array": "^1.1.10" }, - "engines": { - "node": ">= 0.10" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/redent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", - "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "node_modules/is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "dev": true + }, + "node_modules/is-async-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", + "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", "dev": true, "dependencies": { - "indent-string": "^4.0.0", - "strip-indent": "^3.0.0" + "has-tostringtag": "^1.0.0" }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/reflect.getprototypeof": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.3.tgz", - "integrity": "sha512-TTAOZpkJ2YLxl7mVHWrNo3iDMEkYlva/kgFcXndqMgbo/AZUmmavEkdXV+hXtE4P8xdyEKRzalaFqZVuwIk/Nw==", - "dev": true, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "get-intrinsic": "^1.1.1", - "globalthis": "^1.0.3", - "which-builtin-type": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" + "has-bigints": "^1.0.1" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, + "optional": true, + "peer": true, "dependencies": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" + "binary-extensions": "^2.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz", - "integrity": "sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==", + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "functions-have-names": "^1.2.3" + "has-tostringtag": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -10687,1463 +4819,1263 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "engines": { - "node": ">=8" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/relateurl": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", - "dev": true, - "engines": { - "node": ">= 0.10" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/remark": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/remark/-/remark-13.0.0.tgz", - "integrity": "sha512-HDz1+IKGtOyWN+QgBiAT0kn+2s6ovOxHyPAFGKVE81VSzJ+mq7RwHFledEvB5F1p4iJvOah/LOKdFuzvRnNLCA==", + "node_modules/is-core-module": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", + "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", "dev": true, "dependencies": { - "remark-parse": "^9.0.0", - "remark-stringify": "^9.0.0", - "unified": "^9.1.0" + "has": "^1.0.3" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/remark-parse": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-9.0.0.tgz", - "integrity": "sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw==", - "dev": true, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", "dependencies": { - "mdast-util-from-markdown": "^0.8.0" + "has-tostringtag": "^1.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-stringify": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-9.0.1.tgz", - "integrity": "sha512-mWmNg3ZtESvZS8fv5PTvaPckdL4iNlCHTt8/e/8oN08nArHRHjNZMKzA/YW3+p7/lYqIw4nx1XsjCBo/AxNChg==", - "dev": true, - "dependencies": { - "mdast-util-to-markdown": "^0.6.0" + "engines": { + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/remove-bom-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz", - "integrity": "sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==", + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, - "dependencies": { - "is-buffer": "^1.1.5", - "is-utf8": "^0.2.1" - }, "engines": { "node": ">=0.10.0" } }, - "node_modules/remove-bom-stream": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz", - "integrity": "sha512-wigO8/O08XHb8YPzpDDT+QmRANfW6vLqxfaXm1YXhnFf3AkSLyjfG3GEFg4McZkmgL7KvCj5u2KczkvSP6NfHA==", + "node_modules/is-finalizationregistry": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", + "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", "dev": true, "dependencies": { - "remove-bom-buffer": "^3.0.0", - "safe-buffer": "^5.1.0", - "through2": "^2.0.3" + "call-bind": "^1.0.2" }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/remove-bom-stream/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==", - "dev": true - }, - "node_modules/repeat-element": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", - "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", - "dev": true, - "engines": { - "node": ">=0.10" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/replace-ext": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-2.0.0.tgz", - "integrity": "sha512-UszKE5KVK6JvyD92nzMn9cDapSk6w/CaFZ96CnmDMUqH9oowfxF/ZjRITD25H4DnOQClLA4/j7jLGXXLVKxAug==", + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, "engines": { - "node": ">= 10" + "node": ">=8" } }, - "node_modules/replace-homedir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-1.0.0.tgz", - "integrity": "sha512-CHPV/GAglbIB1tnQgaiysb8H2yCy8WQ7lcEwQ/eT+kLj0QHV8LnJW0zpqpE7RSkrMSRoa+EBoag86clf7WAgSg==", + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", "dev": true, "dependencies": { - "homedir-polyfill": "^1.0.1", - "is-absolute": "^1.0.0", - "remove-trailing-separator": "^1.1.0" + "has-tostringtag": "^1.0.0" }, "engines": { - "node": ">= 0.10" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, "engines": { "node": ">=0.10.0" } }, - "node_modules/require-from-string": { + "node_modules/is-map": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", + "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==", - "dev": true - }, - "node_modules/requirejs": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/requirejs/-/requirejs-2.3.6.tgz", - "integrity": "sha512-ipEzlWQe6RK3jkzikgCupiTbTvm4S0/CAU5GlgptkN5SO6F3u0UD0K18wy6ErDqiCyP4J4YYe1HuAShvsxePLg==", - "bin": { - "r_js": "bin/r.js", - "r.js": "bin/r.js" - }, - "engines": { - "node": ">=0.4.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/requires-port": { + "node_modules/is-module": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", "dev": true }, - "node_modules/resolve": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", - "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", - "dev": true, - "dependencies": { - "is-core-module": "^2.11.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" + "node_modules/is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/resolve-dir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", - "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==", + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", "dependencies": { - "expand-tilde": "^2.0.0", - "global-modules": "^1.0.0" + "has-tostringtag": "^1.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "node_modules/is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==", "dev": true, "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "node_modules/resolve-options": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz", - "integrity": "sha512-NYDgziiroVeDC29xq7bp/CacZERYsA9bXYd1ZmcJlF3BcrZv5pTb4NG7SjdyKDnXZ84aC4vo2u6sNKIA1LCu/A==", - "dev": true, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dependencies": { - "value-or-function": "^3.0.0" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" }, "engines": { - "node": ">= 0.10" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", - "deprecated": "https://github.com/lydell/resolve-url#deprecated", - "dev": true - }, - "node_modules/resp-modifier": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/resp-modifier/-/resp-modifier-6.0.2.tgz", - "integrity": "sha512-U1+0kWC/+4ncRFYqQWTx/3qkfE6a4B/h3XXgmXypfa0SPZ3t7cbbaFk297PjQS/yov24R18h6OZe6iZwj3NSLw==", + "node_modules/is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==", "dev": true, - "dependencies": { - "debug": "^2.2.0", - "minimatch": "^3.0.2" - }, "engines": { - "node": ">= 0.8.0" + "node": ">=0.10.0" } }, - "node_modules/resp-modifier/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/is-set": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", + "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", "dev": true, - "dependencies": { - "ms": "2.0.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/resp-modifier/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" + "call-bind": "^1.0.2" }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true, - "engines": { - "node": ">=0.12" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true, "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/rfg-api": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/rfg-api/-/rfg-api-0.5.3.tgz", - "integrity": "sha512-KQ4Vwc/LrwQ1IFBDEyJdGtn1XsII1GDowLRTtY+rAbJav9R5wwxZiyIQOcetDYKSTH551v9b+Gn4CPw9noQ0bQ==", - "dev": true, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", "dependencies": { - "axios": "^0.21.1", - "fstream": "^1.0.2", - "metaparser": "^1.0.7", - "mkdirp": "^0.5.0", - "node-unzip-2": "^0.2.7" + "has-tostringtag": "^1.0.0" }, "engines": { - "node": ">= 0.8.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", "dependencies": { - "glob": "^7.1.3" + "has-symbols": "^1.0.2" }, - "bin": { - "rimraf": "bin.js" + "engines": { + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", - "dev": true, + "node_modules/is-typed-array": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", + "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", + "dependencies": { + "which-typed-array": "^1.1.11" + }, "engines": { - "node": ">=0.12.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "node_modules/is-weakmap": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", + "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/rx": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz", - "integrity": "sha512-CiaiuN6gapkdl+cZUr67W6I8jquN4lkak3vtIsIWCl4XIPP8ffsoyN6/+PuGXnQy8Cu8W2y9Xxh31Rq4M6wUug==", - "dev": true - }, - "node_modules/rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dev": true, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", "dependencies": { - "tslib": "^1.9.0" + "call-bind": "^1.0.2" }, - "engines": { - "npm": ">=2.0.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/safe-array-concat": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.0.tgz", - "integrity": "sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ==", + "node_modules/is-weakset": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", + "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", + "dev": true, "dependencies": { "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", - "has-symbols": "^1.0.3", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">=0.4" + "get-intrinsic": "^1.1.1" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/safe-array-concat/node_modules/isarray": { + "node_modules/isarray": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true }, - "node_modules/safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", + "node_modules/iterator.prototype": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", + "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", "dev": true, "dependencies": { - "ret": "~0.1.10" + "define-properties": "^1.2.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "reflect.getprototypeof": "^1.0.4", + "set-function-name": "^2.0.1" } }, - "node_modules/safe-regex-test": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", - "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "node_modules/jake": { + "version": "10.8.7", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz", + "integrity": "sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==", + "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "is-regex": "^1.1.4" + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.4", + "minimatch": "^3.1.2" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": ">=10" } }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "node_modules/jake/node_modules/async": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", "dev": true }, - "node_modules/sass": { - "version": "1.66.1", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.66.1.tgz", - "integrity": "sha512-50c+zTsZOJVgFfTgwwEzkjA3/QACgdNsKueWPyAR0mRINIvLAStVQBbPg14iuqEQ74NPDbXzJARJ/O4SI1zftA==", + "node_modules/jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", "dev": true, "dependencies": { - "chokidar": ">=3.0.0 <4.0.0", - "immutable": "^4.0.0", - "source-map-js": ">=0.6.2 <2.0.0" + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jiti": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.20.0.tgz", + "integrity": "sha512-3TV69ZbrvV6U5DfQimop50jE9Dl6J8O1ja1dvBbMba/sZ3YBEQqJ2VZRoQPVnhlzjNtU1vaXRZVrVjU4qtm8yA==", + "dev": true, "bin": { - "sass": "sass.js" + "jiti": "bin/jiti.js" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" }, "engines": { - "node": ">=14.0.0" + "node": ">=4" } }, - "node_modules/sass/node_modules/immutable": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.0.tgz", - "integrity": "sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg==", + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "node_modules/json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "dev": true }, - "node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { - "semver": "bin/semver.js" + "json5": "lib/cli.js" }, "engines": { - "node": ">=10" + "node": ">=6" } }, - "node_modules/semver-greatest-satisfied-range": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz", - "integrity": "sha512-Ny/iyOzSSa8M5ML46IAx3iXc6tfOsYU2R4AXi2UpHk60Zrgyq6eqPj/xiOfS0rRl/iiQ/rdJkVjw/5cdUyCntQ==", + "node_modules/jsonc-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", + "dev": true + }, + "node_modules/jsonpointer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz", + "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==", "dev": true, - "dependencies": { - "sver-compat": "^1.5.0" - }, "engines": { - "node": ">= 0.10" + "node": ">=0.10.0" } }, - "node_modules/send": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", - "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", + "node_modules/jsx-ast-utils": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", "dev": true, "dependencies": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "~1.6.2", - "mime": "1.4.1", - "ms": "2.0.0", - "on-finished": "~2.3.0", - "range-parser": "~1.2.0", - "statuses": "~1.4.0" + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" }, "engines": { - "node": ">= 0.8.0" + "node": ">=4.0" } }, - "node_modules/send/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/keyv": { + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.3.tgz", + "integrity": "sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==", "dev": true, "dependencies": { - "ms": "2.0.0" + "json-buffer": "3.0.1" } }, - "node_modules/send/node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "node_modules/leaflet": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/leaflet/-/leaflet-1.9.4.tgz", + "integrity": "sha512-nxS1ynzJOmOlHp+iL3FyWqK89GtNL8U8rvlMOsQdTTssxZwCXh8N2NB3GDQOL+YR3XnWyZAxwQixURb+FA74PA==" + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", "dev": true, "engines": { - "node": ">= 0.6" + "node": ">=6" } }, - "node_modules/send/node_modules/http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" }, "engines": { - "node": ">= 0.6" + "node": ">= 0.8.0" } }, - "node_modules/send/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, - "node_modules/send/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", "dev": true }, - "node_modules/send/node_modules/setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, - "node_modules/send/node_modules/statuses": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", - "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", - "dev": true, - "engines": { - "node": ">= 0.6" - } + "node_modules/lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==", + "dev": true }, - "node_modules/serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", - "dev": true, + "node_modules/lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", + "dev": true + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", "dependencies": { - "accepts": "~1.3.4", - "batch": "0.6.1", - "debug": "2.6.9", - "escape-html": "~1.0.3", - "http-errors": "~1.6.2", - "mime-types": "~2.1.17", - "parseurl": "~1.3.2" + "js-tokens": "^3.0.0 || ^4.0.0" }, - "engines": { - "node": ">= 0.8.0" + "bin": { + "loose-envify": "cli.js" } }, - "node_modules/serve-index/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/serve-index/node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "dev": true, + "yallist": "^4.0.0" + }, "engines": { - "node": ">= 0.6" + "node": ">=10" } }, - "node_modules/serve-index/node_modules/http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "node_modules/magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", "dev": true, "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - }, - "engines": { - "node": ">= 0.6" + "sourcemap-codec": "^1.4.8" } }, - "node_modules/serve-index/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", - "dev": true - }, - "node_modules/serve-index/node_modules/ms": { + "node_modules/merge-stream": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", "dev": true }, - "node_modules/serve-index/node_modules/setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true - }, - "node_modules/serve-index/node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true, "engines": { - "node": ">= 0.6" + "node": ">= 8" } }, - "node_modules/serve-static": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", - "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", "dev": true, "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.2", - "send": "0.16.2" + "braces": "^3.0.2", + "picomatch": "^2.3.1" }, "engines": { - "node": ">= 0.8.0" + "node": ">=8.6" } }, - "node_modules/server-destroy": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/server-destroy/-/server-destroy-1.0.1.tgz", - "integrity": "sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ==", - "dev": true - }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "dev": true - }, - "node_modules/set-value": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-4.1.0.tgz", - "integrity": "sha512-zTEg4HL0RwVrqcWs3ztF+x1vkxfm0lP+MQQFPiMJTKVceBwEV0A569Ou8l9IYQG8jOZdMVI1hGsc0tmeD2o/Lw==", + "node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", "dev": true, - "funding": [ - "https://github.com/sponsors/jonschlinkert", - "https://paypal.me/jonathanschlinkert", - "https://jonschlinkert.dev/sponsor" - ], - "dependencies": { - "is-plain-object": "^2.0.4", - "is-primitive": "^3.0.1" - }, "engines": { - "node": ">=11.0" - } - }, - "node_modules/set-value/node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" + "node": ">=10" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", - "dev": true - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "dependencies": { - "shebang-regex": "^3.0.0" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=8" + "node": "*" } }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "node_modules/mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", "dev": true }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "node_modules/mlly": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.4.2.tgz", + "integrity": "sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg==", "dev": true, - "engines": { - "node": ">=8" + "dependencies": { + "acorn": "^8.10.0", + "pathe": "^1.1.1", + "pkg-types": "^1.0.3", + "ufo": "^1.3.0" } }, - "node_modules/slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "node_modules/mlly/node_modules/acorn": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" + "bin": { + "acorn": "bin/acorn" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" + "node": ">=0.4.0" } }, - "node_modules/slice-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, + "node_modules/moment": { + "version": "2.29.4", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": "*" } }, - "node_modules/slice-ansi/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/nanoid": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", "dev": true, - "dependencies": { - "color-name": "~1.1.4" + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" }, "engines": { - "node": ">=7.0.0" + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, - "node_modules/slice-ansi/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "node_modules/napi-build-utils": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", + "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==", "dev": true }, - "node_modules/slice-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slice-stream/-/slice-stream-1.0.0.tgz", - "integrity": "sha512-fJu1TYTr85OZEkT4lqcCW6oPWPIS5omPnIsB/dL7QWo2sNk03VQ6did4plhh0y3Sf0nJlq5QEUR3vMYevydn7w==", + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/navigo": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/navigo/-/navigo-7.1.3.tgz", + "integrity": "sha512-dFsj+a0ml09P4rtX8xzsPl/SXb15YOTes7vjDSTsifRAMJ400+M4Hb5oiI9L5fhmaILBrzp0Y0o0+DZ+f3NLfw==" + }, + "node_modules/node-abi": { + "version": "3.47.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.47.0.tgz", + "integrity": "sha512-2s6B2CWZM//kPgwnuI0KrYwNjfdByE25zvAaEpq9IH4zcNsarH8Ihu/UuX6XMPEogDAxkuUFeZn60pXNHAqn3A==", "dev": true, "dependencies": { - "readable-stream": "~1.0.31" + "semver": "^7.3.5" + }, + "engines": { + "node": ">=10" } }, - "node_modules/slice-stream/node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "node_modules/node-addon-api": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz", + "integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==", "dev": true }, - "node_modules/slice-stream/node_modules/readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", - "dev": true, + "node_modules/node-polyglot": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/node-polyglot/-/node-polyglot-2.2.2.tgz", + "integrity": "sha512-SSQ9CjS0m19ipJltqAzPbBvl51X1Wi7seafr42Hu8wQpQCQsH1coz1R7iHO7ZaDaAf4qwpty4qyx6Tq4K86N1g==", "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" + "for-each": "^0.3.2", + "has": "^1.0.1", + "string.prototype.trim": "^1.1.2", + "warning": "^3.0.0" } }, - "node_modules/slice-stream/node_modules/string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", + "node_modules/node-releases": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", + "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", "dev": true }, - "node_modules/snabbdom": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/snabbdom/-/snabbdom-0.7.4.tgz", - "integrity": "sha512-nnN+7uZ2NTIiu7EPMNwSDhmrYXqwlfCP/j72RdzvDPujXyvQxOW7Jl9yuLayzxMHDNWQR7FM6Pcn4wnDpKRe6Q==" - }, - "node_modules/snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true, - "dependencies": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, + "optional": true, + "peer": true, "engines": { "node": ">=0.10.0" } }, - "node_modules/snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", "dev": true, - "dependencies": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, "engines": { "node": ">=0.10.0" } }, - "node_modules/snapdragon-node/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" + "node_modules/object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dev": true, - "dependencies": { - "kind-of": "^3.2.0" - }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, - "node_modules/snapdragon-util/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, + "node_modules/object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", "dependencies": { - "is-buffer": "^1.1.5" + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/snapdragon/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/object.entries": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.7.tgz", + "integrity": "sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==", "dev": true, "dependencies": { - "ms": "2.0.0" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" } }, - "node_modules/snapdragon/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "node_modules/object.fromentries": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz", + "integrity": "sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==", "dev": true, "dependencies": { - "is-descriptor": "^0.1.0" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/snapdragon/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "node_modules/object.hasown": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.3.tgz", + "integrity": "sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==", "dev": true, "dependencies": { - "is-extendable": "^0.1.0" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/snapdragon/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "node_modules/object.values": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz", + "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==", "dev": true, "dependencies": { - "kind-of": "^3.0.2" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/snapdragon/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" + "wrappy": "1" } }, - "node_modules/snapdragon/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "node_modules/optionator": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", "dev": true, "dependencies": { - "kind-of": "^3.0.2" + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.8.0" } }, - "node_modules/snapdragon/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, "dependencies": { - "is-buffer": "^1.1.5" + "callsites": "^3.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/snapdragon/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true, - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, "engines": { "node": ">=0.10.0" } }, - "node_modules/snapdragon/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/snapdragon/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, - "node_modules/snapdragon/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } + "node_modules/pathe": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.1.tgz", + "integrity": "sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==", + "dev": true }, - "node_modules/snapdragon/node_modules/source-map-resolve": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", - "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", - "dev": true, - "dependencies": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true }, - "node_modules/socket.io": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.6.2.tgz", - "integrity": "sha512-Vp+lSks5k0dewYTfwgPT9UeGGd+ht7sCpB7p0e83VgO4X/AHYWhXITMrNk/pg8syY2bpx23ptClCQuHhqi2BgQ==", + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, - "dependencies": { - "accepts": "~1.3.4", - "base64id": "~2.0.0", - "debug": "~4.3.2", - "engine.io": "~6.4.2", - "socket.io-adapter": "~2.5.2", - "socket.io-parser": "~4.2.4" - }, "engines": { - "node": ">=10.0.0" + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/socket.io-adapter": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.2.tgz", - "integrity": "sha512-87C3LO/NOMc+eMcpcxUBebGjkpMDkNBS9tf7KJqcDsmL936EChtVva71Dw2q4tQcuVC+hAUy4an2NO/sYXmwRA==", + "node_modules/pkg-types": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.0.3.tgz", + "integrity": "sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==", "dev": true, "dependencies": { - "ws": "~8.11.0" + "jsonc-parser": "^3.2.0", + "mlly": "^1.2.0", + "pathe": "^1.1.0" } }, - "node_modules/socket.io-client": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.6.2.tgz", - "integrity": "sha512-OwWrMbbA8wSqhBAR0yoPK6EdQLERQAYjXb3A0zLpgxfM1ZGLKoxHx8gVmCHA6pcclRX5oA/zvQf7bghAS11jRA==", + "node_modules/postcss": { + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "dependencies": { - "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.2", - "engine.io-client": "~6.4.0", - "socket.io-parser": "~4.2.4" + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" }, "engines": { - "node": ">=10.0.0" + "node": "^10 || ^12 || >=14" } }, - "node_modules/socket.io-parser": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", - "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", + "node_modules/prebuild-install": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz", + "integrity": "sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==", "dev": true, "dependencies": { - "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.1" + "detect-libc": "^2.0.0", + "expand-template": "^2.0.3", + "github-from-package": "0.0.0", + "minimist": "^1.2.3", + "mkdirp-classic": "^0.5.3", + "napi-build-utils": "^1.0.1", + "node-abi": "^3.3.0", + "pump": "^3.0.0", + "rc": "^1.2.7", + "simple-get": "^4.0.0", + "tar-fs": "^2.0.0", + "tunnel-agent": "^0.6.0" + }, + "bin": { + "prebuild-install": "bin.js" }, "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/source-map-resolve": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz", - "integrity": "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==", - "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", + "node_modules/prebuild-install/node_modules/tar-fs": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", "dev": true, "dependencies": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0" + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" } }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "node_modules/prebuild-install/node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", "dev": true, "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/source-map-url": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", - "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", - "deprecated": "See https://github.com/lydell/source-map-url#deprecated", - "dev": true - }, - "node_modules/sparkles": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz", - "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==", - "dev": true, + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, "engines": { - "node": ">= 0.10" - } - }, - "node_modules/spdx-correct": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", - "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", - "dev": true, - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" + "node": ">=6" } }, - "node_modules/spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "dev": true - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true, - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" + "engines": { + "node": ">= 0.8.0" } }, - "node_modules/spdx-license-ids": { - "version": "3.0.13", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz", - "integrity": "sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==", - "dev": true - }, - "node_modules/specificity": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/specificity/-/specificity-0.4.1.tgz", - "integrity": "sha512-1klA3Gi5PD1Wv9Q0wUoOQN1IWAuPu0D1U03ThXTr0cJ20+/iq2tHSDnK7Kk/0LXJ1ztUB2/1Os0wKmfyNgUQfg==", + "node_modules/prettier": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz", + "integrity": "sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==", "dev": true, "bin": { - "specificity": "bin/specificity" - } - }, - "node_modules/split-string": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-6.1.0.tgz", - "integrity": "sha512-9UBdnmnvx2NLLd4bMs7CEKK+wSzbujVv3ONyorkP1o8M3pVJQtXDO1cN19xD1JJs6ltOrtPrkUND0HzLSinUcA==", - "dev": true, + "prettier": "bin/prettier.cjs" + }, "engines": { - "node": ">=8.6" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" } }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - }, - "node_modules/stable": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", - "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", - "deprecated": "Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility", - "dev": true - }, - "node_modules/stack-trace": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", - "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==", + "node_modules/pretty-bytes": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-6.1.1.tgz", + "integrity": "sha512-mQUvGU6aUFQ+rNvTIAcZuWGRT9a6f6Yrg9bHs4ImKF+HZCEK+plBvnAZYSIQztknZF2qnzNtr6F8s0+IuptdlQ==", "dev": true, "engines": { - "node": "*" + "node": "^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true, - "dependencies": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, "engines": { - "node": ">=0.10.0" + "node": ">=0.4.0" } }, - "node_modules/static-extend/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "node_modules/promise-polyfill": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-8.3.0.tgz", + "integrity": "sha512-H5oELycFml5yto/atYqmjyigJoAo3+OXwolYiH7OfQuYlAqhxNvTfiNMbV9hsC6Yp83yE5r2KTVmtrG6R9i6Pg==" + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", "dev": true, "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" } }, - "node_modules/static-extend/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", "dev": true, "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" + "end-of-stream": "^1.1.0", + "once": "^1.3.1" } }, - "node_modules/static-extend/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "node_modules/punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/static-extend/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/queue-tick": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", + "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==", + "dev": true + }, + "node_modules/quickselect": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/quickselect/-/quickselect-2.0.0.tgz", + "integrity": "sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==" + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dev": true, "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" + "safe-buffer": "^5.1.0" } }, - "node_modules/static-extend/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, + "node_modules/rbush": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/rbush/-/rbush-3.0.1.tgz", + "integrity": "sha512-XRaVO0YecOpEuIvbhbpTrZgoiI6xBlz6hnlr6EHhd+0x9ase6EmeN+hdwwUaJvLcsFFQ8iWVF1GAK1yB0BWi0w==", "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" + "quickselect": "^2.0.0" } }, - "node_modules/static-extend/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", "dev": true, "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" }, - "engines": { - "node": ">=0.10.0" + "bin": { + "rc": "cli.js" } }, - "node_modules/statuses": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", - "integrity": "sha512-wuTCPGlJONk/a1kqZ4fQM2+908lC7fa7nPYpTC1EhnvqLX/IICbeP1OZGDtA374trpSq68YubKUMo8oRhN46yg==", + "node_modules/rc/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", "dev": true, "engines": { - "node": ">= 0.6" + "node": ">=0.10.0" } }, - "node_modules/stream-exhaust": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz", - "integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==", - "dev": true - }, - "node_modules/stream-shift": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", - "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", "dev": true }, - "node_modules/stream-throttle": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/stream-throttle/-/stream-throttle-0.1.3.tgz", - "integrity": "sha512-889+B9vN9dq7/vLbGyuHeZ6/ctf5sNuGWsDy89uNxkFTAgzy0eK7+w5fL3KLNRTkLle7EgZGvHUphZW0Q26MnQ==", + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dev": true, "dependencies": { - "commander": "^2.2.0", - "limiter": "^1.0.5" - }, - "bin": { - "throttleproxy": "bin/throttleproxy.js" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" }, "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/stream-to-array": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/stream-to-array/-/stream-to-array-2.3.0.tgz", - "integrity": "sha512-UsZtOYEn4tWU2RGLOXr/o/xjRBftZRlG3dEWoaHr8j4GuypJ3isitGbVyjQKAuMu+xbiop8q224TjiZWc4XTZA==", - "dev": true, - "dependencies": { - "any-promise": "^1.1.0" + "node": ">= 6" } }, - "node_modules/streamx": { - "version": "2.14.0", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.14.0.tgz", - "integrity": "sha512-Xu53ZdSG4F+zVZug4JCNm7h2OkQlieUFySswcHuW00WbKmhNkAXjme7535aNEQNz7iINfC5PLNvvaGBFlpzoJA==", + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, + "optional": true, + "peer": true, "dependencies": { - "fast-fifo": "^1.1.0", - "queue-tick": "^1.0.1" + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" } }, - "node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "node_modules/reflect.getprototypeof": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz", + "integrity": "sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==", "dev": true, "dependencies": { - "safe-buffer": "~5.1.0" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "globalthis": "^1.0.3", + "which-builtin-type": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", "dev": true }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "node_modules/regenerate-unicode-properties": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", + "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", "dev": true, "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "regenerate": "^1.4.2" }, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/string.prototype.matchall": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz", - "integrity": "sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==", + "node_modules/regenerator-runtime": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", + "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==", + "dev": true + }, + "node_modules/regenerator-transform": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", + "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "get-intrinsic": "^1.1.3", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", - "regexp.prototype.flags": "^1.4.3", - "side-channel": "^1.0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "@babel/runtime": "^7.8.4" } }, - "node_modules/string.prototype.trim": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz", - "integrity": "sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==", + "node_modules/regexp.prototype.flags": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", + "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "define-properties": "^1.2.0", + "set-function-name": "^2.0.0" }, "engines": { "node": ">= 0.4" @@ -12152,593 +6084,632 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/string.prototype.trimend": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", - "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true, + "engines": { + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/mysticatea" } }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", - "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", + "node_modules/regexpu-core": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", + "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", + "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "@babel/regjsgen": "^0.8.0", + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=4" } }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "node_modules/regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", "dev": true, "dependencies": { - "ansi-regex": "^5.0.1" + "jsesc": "~0.5.0" }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==", + "node_modules/resolve": { + "version": "1.22.6", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.6.tgz", + "integrity": "sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==", "dev": true, "dependencies": { - "is-utf8": "^0.2.0" + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/strip-bom-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", - "integrity": "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==", + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "dev": true, "engines": { + "iojs": ">=1.0.0", "node": ">=0.10.0" } }, - "node_modules/strip-indent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, "dependencies": { - "min-indent": "^1.0.0" + "glob": "^7.1.3" }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" + "bin": { + "rimraf": "bin.js" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/style-search": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz", - "integrity": "sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==", - "dev": true - }, - "node_modules/stylelint": { - "version": "13.13.1", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-13.13.1.tgz", - "integrity": "sha512-Mv+BQr5XTUrKqAXmpqm6Ddli6Ief+AiPZkRsIrAoUKFuq/ElkUh9ZMYxXD0iQNZ5ADghZKLOWz1h7hTClB7zgQ==", - "dev": true, - "dependencies": { - "@stylelint/postcss-css-in-js": "^0.37.2", - "@stylelint/postcss-markdown": "^0.36.2", - "autoprefixer": "^9.8.6", - "balanced-match": "^2.0.0", - "chalk": "^4.1.1", - "cosmiconfig": "^7.0.0", - "debug": "^4.3.1", - "execall": "^2.0.0", - "fast-glob": "^3.2.5", - "fastest-levenshtein": "^1.0.12", - "file-entry-cache": "^6.0.1", - "get-stdin": "^8.0.0", - "global-modules": "^2.0.0", - "globby": "^11.0.3", - "globjoin": "^0.1.4", - "html-tags": "^3.1.0", - "ignore": "^5.1.8", - "import-lazy": "^4.0.0", - "imurmurhash": "^0.1.4", - "known-css-properties": "^0.21.0", - "lodash": "^4.17.21", - "log-symbols": "^4.1.0", - "mathml-tag-names": "^2.1.3", - "meow": "^9.0.0", - "micromatch": "^4.0.4", - "normalize-selector": "^0.2.0", - "postcss": "^7.0.35", - "postcss-html": "^0.36.0", - "postcss-less": "^3.1.4", - "postcss-media-query-parser": "^0.2.3", - "postcss-resolve-nested-selector": "^0.1.1", - "postcss-safe-parser": "^4.0.2", - "postcss-sass": "^0.4.4", - "postcss-scss": "^2.1.1", - "postcss-selector-parser": "^6.0.5", - "postcss-syntax": "^0.36.2", - "postcss-value-parser": "^4.1.0", - "resolve-from": "^5.0.0", - "slash": "^3.0.0", - "specificity": "^0.4.1", - "string-width": "^4.2.2", - "strip-ansi": "^6.0.0", - "style-search": "^0.1.0", - "sugarss": "^2.0.0", - "svg-tags": "^1.0.0", - "table": "^6.6.0", - "v8-compile-cache": "^2.3.0", - "write-file-atomic": "^3.0.3" - }, + "node_modules/rollup": { + "version": "3.29.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz", + "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==", + "dev": true, "bin": { - "stylelint": "bin/stylelint.js" + "rollup": "dist/bin/rollup" }, "engines": { - "node": ">=10.13.0" + "node": ">=14.18.0", + "npm": ">=8.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/stylelint" + "optionalDependencies": { + "fsevents": "~2.3.2" } }, - "node_modules/stylelint-config-recommended": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-5.0.0.tgz", - "integrity": "sha512-c8aubuARSu5A3vEHLBeOSJt1udOdS+1iue7BmJDTSXoCBmfEQmmWX+59vYIj3NQdJBY6a/QRv1ozVFpaB9jaqA==", + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", "dev": true, - "peerDependencies": { - "stylelint": "^13.13.0" + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" } }, - "node_modules/stylelint-config-standard": { - "version": "22.0.0", - "resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-22.0.0.tgz", - "integrity": "sha512-uQVNi87SHjqTm8+4NIP5NMAyY/arXrBgimaaT7skvRfE9u3JKXRK9KBkbr4pVmeciuCcs64kAdjlxfq6Rur7Hw==", - "dev": true, + "node_modules/safe-array-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz", + "integrity": "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==", "dependencies": { - "stylelint-config-recommended": "^5.0.0" + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" }, - "peerDependencies": { - "stylelint": "^13.13.0" + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/stylelint/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/stylelint/node_modules/autoprefixer": { - "version": "9.8.8", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.8.tgz", - "integrity": "sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==", + "node_modules/sass": { + "version": "1.68.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.68.0.tgz", + "integrity": "sha512-Lmj9lM/fef0nQswm1J2HJcEsBUba4wgNx2fea6yJHODREoMFnwRpZydBnX/RjyXw2REIwdkbqE4hrTo4qfDBUA==", "dev": true, + "optional": true, + "peer": true, "dependencies": { - "browserslist": "^4.12.0", - "caniuse-lite": "^1.0.30001109", - "normalize-range": "^0.1.2", - "num2fraction": "^1.2.2", - "picocolors": "^0.2.1", - "postcss": "^7.0.32", - "postcss-value-parser": "^4.1.0" + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" }, "bin": { - "autoprefixer": "bin/autoprefixer" + "sass": "sass.js" }, - "funding": { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/autoprefixer" + "engines": { + "node": ">=14.0.0" } }, - "node_modules/stylelint/node_modules/balanced-match": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz", - "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==", - "dev": true + "node_modules/sass/node_modules/immutable": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.4.tgz", + "integrity": "sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==", + "dev": true, + "optional": true, + "peer": true }, - "node_modules/stylelint/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" }, "engines": { "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/stylelint/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", "dev": true, "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" + "randombytes": "^2.1.0" } }, - "node_modules/stylelint/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/stylelint/node_modules/global-modules": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", - "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", - "dev": true, + "node_modules/set-function-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", + "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", "dependencies": { - "global-prefix": "^3.0.0" + "define-data-property": "^1.0.1", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.0" }, "engines": { - "node": ">=6" + "node": ">= 0.4" } }, - "node_modules/stylelint/node_modules/global-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", - "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", + "node_modules/sharp": { + "version": "0.32.6", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.32.6.tgz", + "integrity": "sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w==", "dev": true, + "hasInstallScript": true, "dependencies": { - "ini": "^1.3.5", - "kind-of": "^6.0.2", - "which": "^1.3.1" + "color": "^4.2.3", + "detect-libc": "^2.0.2", + "node-addon-api": "^6.1.0", + "prebuild-install": "^7.1.1", + "semver": "^7.5.4", + "simple-get": "^4.0.1", + "tar-fs": "^3.0.4", + "tunnel-agent": "^0.6.0" }, "engines": { - "node": ">=6" - } - }, - "node_modules/stylelint/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/stylelint/node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", - "dev": true, - "engines": { - "node": ">= 4" + "node": ">=14.15.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" } }, - "node_modules/stylelint/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "node_modules/sharp-ico": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/sharp-ico/-/sharp-ico-0.1.5.tgz", + "integrity": "sha512-a3jODQl82NPp1d5OYb0wY+oFaPk7AvyxipIowCHk7pBsZCWgbe0yAkU2OOXdoH0ENyANhyOQbs9xkAiRHcF02Q==", "dev": true, - "engines": { - "node": ">=0.10.0" + "dependencies": { + "decode-ico": "*", + "ico-endec": "*", + "sharp": "*" } }, - "node_modules/stylelint/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/stylelint/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "shebang-regex": "^3.0.0" }, "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "node": ">=8" } }, - "node_modules/stylelint/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, "engines": { "node": ">=8" } }, - "node_modules/stylelint/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", "dependencies": { - "has-flag": "^4.0.0" + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" }, - "engines": { - "node": ">=8" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/stylelint/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "node_modules/simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/simple-get": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", + "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" + "decompress-response": "^6.0.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" } }, - "node_modules/sugarss": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/sugarss/-/sugarss-2.0.0.tgz", - "integrity": "sha512-WfxjozUk0UVA4jm+U1d736AUpzSrNsQcIbyOkoE364GrtWmIrFdk5lksEupgWMD4VaT/0kVx1dobpiDumSgmJQ==", + "node_modules/simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", "dev": true, "dependencies": { - "postcss": "^7.0.2" + "is-arrayish": "^0.3.1" } }, - "node_modules/sugarss/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/sugarss/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "dev": true, "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" }, "engines": { - "node": ">=6.0.0" + "node": ">=10" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "node_modules/snabbdom": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/snabbdom/-/snabbdom-0.7.4.tgz", + "integrity": "sha512-nnN+7uZ2NTIiu7EPMNwSDhmrYXqwlfCP/j72RdzvDPujXyvQxOW7Jl9yuLayzxMHDNWQR7FM6Pcn4wnDpKRe6Q==" + }, + "node_modules/source-map": { + "version": "0.8.0-beta.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", + "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", "dev": true, "dependencies": { - "has-flag": "^3.0.0" + "whatwg-url": "^7.0.0" }, "engines": { - "node": ">=4" + "node": ">= 8" } }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", "dev": true, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=0.10.0" } }, - "node_modules/sver-compat": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/sver-compat/-/sver-compat-1.5.0.tgz", - "integrity": "sha512-aFTHfmjwizMNlNE6dsGmoAM4lHjL0CyiobWaFiXWSlD7cIxshW422Nb8KbXCmR6z+0ZEPY+daXJrDyh/vuwTyg==", + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, "dependencies": { - "es6-iterator": "^2.0.1", - "es6-symbol": "^3.1.1" + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" } }, - "node_modules/svg-tags": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", - "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==", + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "deprecated": "Please use @jridgewell/sourcemap-codec instead", + "dev": true + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", "dev": true }, - "node_modules/svgo": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", - "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", + "node_modules/streamx": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.15.1.tgz", + "integrity": "sha512-fQMzy2O/Q47rgwErk/eGeLu/roaFWV0jVsogDmrszM9uIw8L5OA+t+V93MgYlufNptfjmYR1tOMWhei/Eh7TQA==", "dev": true, "dependencies": { - "@trysound/sax": "0.2.0", - "commander": "^7.2.0", - "css-select": "^4.1.3", - "css-tree": "^1.1.3", - "csso": "^4.2.0", - "picocolors": "^1.0.0", - "stable": "^0.1.8" - }, - "bin": { - "svgo": "bin/svgo" - }, - "engines": { - "node": ">=10.13.0" + "fast-fifo": "^1.1.0", + "queue-tick": "^1.0.1" } }, - "node_modules/svgo/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, "engines": { - "node": ">= 10" + "node": ">=8" } }, - "node_modules/svgo/node_modules/css-select": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", - "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "node_modules/string.prototype.matchall": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz", + "integrity": "sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==", "dev": true, "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.0.1", - "domhandler": "^4.3.1", - "domutils": "^2.8.0", - "nth-check": "^2.0.1" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.5", + "regexp.prototype.flags": "^1.5.0", + "set-function-name": "^2.0.0", + "side-channel": "^1.0.4" }, "funding": { - "url": "https://github.com/sponsors/fb55" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/svgo/node_modules/css-tree": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", - "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", - "dev": true, + "node_modules/string.prototype.trim": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", + "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", "dependencies": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" }, "engines": { - "node": ">=8.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/svgo/node_modules/css-what": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", - "dev": true, - "engines": { - "node": ">= 6" + "node_modules/string.prototype.trimend": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", + "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", + "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" }, "funding": { - "url": "https://github.com/sponsors/fb55" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/svgo/node_modules/csso": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", - "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "node_modules/stringify-object": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", + "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", "dev": true, "dependencies": { - "css-tree": "^1.1.2" + "get-own-enumerable-property-symbols": "^3.0.0", + "is-obj": "^1.0.1", + "is-regexp": "^1.0.0" }, "engines": { - "node": ">=8.0.0" + "node": ">=4" } }, - "node_modules/svgo/node_modules/dom-serializer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" + "ansi-regex": "^5.0.1" }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + "engines": { + "node": ">=8" } }, - "node_modules/svgo/node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "node_modules/strip-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-2.0.1.tgz", + "integrity": "sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ] + "engines": { + "node": ">=10" + } }, - "node_modules/svgo/node_modules/domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, - "dependencies": { - "domelementtype": "^2.2.0" - }, "engines": { - "node": ">= 4" + "node": ">=8" }, "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/svgo/node_modules/domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" + "has-flag": "^4.0.0" }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" + "engines": { + "node": ">=8" } }, - "node_modules/svgo/node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true, + "engines": { + "node": ">= 0.4" + }, "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/svgo/node_modules/mdn-data": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", - "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", - "dev": true - }, "node_modules/table": { "version": "6.8.1", "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz", @@ -12777,52 +6748,71 @@ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true }, - "node_modules/temp-write": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/temp-write/-/temp-write-2.1.0.tgz", - "integrity": "sha512-/Du/JQStxYULERoqLIBzuGhNHQtmNmuxoSmv/Le2AStskf4TFQ/GGMvGXCMPEcbVFnkaO6jy3jhxaoH4CEI62w==", + "node_modules/tar-fs": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.4.tgz", + "integrity": "sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w==", "dev": true, "dependencies": { - "graceful-fs": "^4.1.2", - "mkdirp": "^0.5.0", - "os-tmpdir": "^1.0.0", - "pify": "^2.2.0", - "pinkie-promise": "^2.0.0", - "uuid": "^2.0.1" - }, + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^3.1.5" + } + }, + "node_modules/tar-stream": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.6.tgz", + "integrity": "sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg==", + "dev": true, + "dependencies": { + "b4a": "^1.6.4", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" + } + }, + "node_modules/temp-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", + "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", + "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/ternary-stream": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ternary-stream/-/ternary-stream-2.1.1.tgz", - "integrity": "sha512-j6ei9hxSoyGlqTmoMjOm+QNvUKDOIY6bNl4Uh1lhBvl6yjPW2iLqxDUYyfDPZknQ4KdRziFl+ec99iT4l7g0cw==", + "node_modules/tempy": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.6.0.tgz", + "integrity": "sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw==", "dev": true, "dependencies": { - "duplexify": "^3.5.0", - "fork-stream": "^0.0.4", - "merge-stream": "^1.0.0", - "through2": "^2.0.1" + "is-stream": "^2.0.0", + "temp-dir": "^2.0.0", + "type-fest": "^0.16.0", + "unique-string": "^2.0.0" }, "engines": { - "node": ">= 0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/ternary-stream/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "node_modules/tempy/node_modules/type-fest": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", + "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==", "dev": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/terser": { - "version": "5.17.7", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.17.7.tgz", - "integrity": "sha512-/bi0Zm2C6VAexlGgLlVxA0P2lru/sdLyfCVaRMfKVo9nWxbmz7f/sD8VPybPeSUJaJcwmCJis9pBIhcVcG1QcQ==", + "version": "5.21.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.21.0.tgz", + "integrity": "sha512-WtnFKrxu9kaoXuiZFSGrcAvvBqAdmKx0SFNmVNYdJamMu9yyN3I/QF0FbH4QcqJQ+y1CJnzxGIKH0cSj+FGYRw==", "dev": true, "dependencies": { "@jridgewell/source-map": "^0.3.3", @@ -12838,9 +6828,9 @@ } }, "node_modules/terser/node_modules/acorn": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", - "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -12849,77 +6839,17 @@ "node": ">=0.4.0" } }, - "node_modules/terser/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "dev": true - }, - "node_modules/through2": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", - "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", - "dev": true, - "dependencies": { - "readable-stream": "3" - } - }, - "node_modules/through2/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/time-stamp": { + "node_modules/to-data-view": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", - "integrity": "sha512-gLCeArryy2yNTRzTGKbZbloctj64jkZ57hj5zdraXue6aFgd6PmvVtEyiUU+hvU0v7q08oVv8r8ev0tRo6bvgw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/timers-ext": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz", - "integrity": "sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==", - "dev": true, - "dependencies": { - "es5-ext": "~0.10.46", - "next-tick": "1" - } - }, - "node_modules/tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "dependencies": { - "os-tmpdir": "~1.0.2" - }, - "engines": { - "node": ">=0.6.0" - } + "resolved": "https://registry.npmjs.org/to-data-view/-/to-data-view-1.1.0.tgz", + "integrity": "sha512-1eAdufMg6mwgmlojAx3QeMnzB/BTVp7Tbndi3U7ftcT2zCZadjxkkmLmd97zmaxWi+sgGcgWrokmpEoy0Dn0vQ==", + "dev": true }, "node_modules/to-fast-properties": { "version": "2.0.0", @@ -12927,46 +6857,7 @@ "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", "dev": true, "engines": { - "node": ">=4" - } - }, - "node_modules/to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-object-path/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dev": true, - "dependencies": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, "node_modules/to-regex-range": { @@ -12981,77 +6872,27 @@ "node": ">=8.0" } }, - "node_modules/to-through": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz", - "integrity": "sha512-+QIz37Ly7acM4EMdw2PRN389OneM5+d844tirkGp4dPKzI5OE72V9OsbFp+CIYJDahZ41ZV05hNtcPAQUAm9/Q==", + "node_modules/tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", "dev": true, "dependencies": { - "through2": "^2.0.3" - }, - "engines": { - "node": ">= 0.10" + "punycode": "^2.1.0" } }, - "node_modules/to-through/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", "dev": true, "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "dev": true, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/traverse": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", - "integrity": "sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==", - "dev": true, + "safe-buffer": "^5.0.1" + }, "engines": { "node": "*" } }, - "node_modules/trim-newlines": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", - "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/trough": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz", - "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/type": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", - "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", - "dev": true - }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -13065,9 +6906,9 @@ } }, "node_modules/type-fest": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", - "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, "engines": { "node": ">=10" @@ -13137,52 +6978,12 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "node_modules/ufo": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.3.1.tgz", + "integrity": "sha512-uY/99gMLIOlJPwATcMVYfqDSxUR9//AUcgZMzwfSTJPDKzA1S8mX4VLqa+fiAtveraQUBCz4FFcwVZBGbwBXIw==", "dev": true }, - "node_modules/typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "dev": true, - "dependencies": { - "is-typedarray": "^1.0.0" - } - }, - "node_modules/ua-parser-js": { - "version": "1.0.35", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.35.tgz", - "integrity": "sha512-fKnGuqmTBnIE+/KXSzCn4db8RTigUzw1AN0DmdU6hJovUTbYJKyqj+8Mt1c4VfRDnOVJnENmfYkIPZ946UrSAA==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/ua-parser-js" - }, - { - "type": "paypal", - "url": "https://paypal.me/faisalman" - } - ], - "engines": { - "node": "*" - } - }, - "node_modules/uglify-js": { - "version": "3.17.4", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", - "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", - "dev": true, - "bin": { - "uglifyjs": "bin/uglifyjs" - }, - "engines": { - "node": ">=0.8.0" - } - }, "node_modules/unbox-primitive": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", @@ -13197,238 +6998,87 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/unc-path-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", - "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/underscore": { - "version": "1.13.6", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz", - "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==", - "dev": true - }, - "node_modules/undertaker": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-1.3.0.tgz", - "integrity": "sha512-/RXwi5m/Mu3H6IHQGww3GNt1PNXlbeCuclF2QYR14L/2CHPz3DFZkvB5hZ0N/QUkiXWCACML2jXViIQEQc2MLg==", - "dev": true, - "dependencies": { - "arr-flatten": "^1.0.1", - "arr-map": "^2.0.0", - "bach": "^1.0.0", - "collection-map": "^1.0.0", - "es6-weak-map": "^2.0.1", - "fast-levenshtein": "^1.0.0", - "last-run": "^1.1.0", - "object.defaults": "^1.0.0", - "object.reduce": "^1.0.0", - "undertaker-registry": "^1.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/undertaker-registry": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/undertaker-registry/-/undertaker-registry-1.0.1.tgz", - "integrity": "sha512-UR1khWeAjugW3548EfQmL9Z7pGMlBgXteQpr1IZeZBtnkCJQJIJ1Scj0mb9wQaPvUZ9Q17XqW6TIaPchJkyfqw==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/undertaker/node_modules/fast-levenshtein": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-1.1.4.tgz", - "integrity": "sha512-Ia0sQNrMPXXkqVFt6w6M1n1oKo3NfKs+mvaV811Jwir7vAk9a6PVV9VPYf6X3BU97QiLEmuW3uXH9u87zDFfdw==", - "dev": true - }, - "node_modules/unified": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.2.tgz", - "integrity": "sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==", + "node_modules/unconfig": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/unconfig/-/unconfig-0.3.11.tgz", + "integrity": "sha512-bV/nqePAKv71v3HdVUn6UefbsDKQWRX+bJIkiSm0+twIds6WiD2bJLWWT3i214+J/B4edufZpG2w7Y63Vbwxow==", "dev": true, "dependencies": { - "bail": "^1.0.0", - "extend": "^3.0.0", - "is-buffer": "^2.0.0", - "is-plain-obj": "^2.0.0", - "trough": "^1.0.0", - "vfile": "^4.0.0" + "@antfu/utils": "^0.7.6", + "defu": "^6.1.2", + "jiti": "^1.20.0", + "mlly": "^1.4.2" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://github.com/sponsors/antfu" } }, - "node_modules/unified/node_modules/is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], "engines": { "node": ">=4" } }, - "node_modules/unified/node_modules/is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/union-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-2.0.1.tgz", - "integrity": "sha512-NmcRHHhUy1qWmp6yYWsaURV2qwfS24TmTtO9S9x0L41wCNNVBQFD3toOzO0cd8SsNrFhbw/O0iYO5uffXGYocw==", - "dev": true, - "dependencies": { - "get-value": "^3.0.1", - "set-value": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/union-value/node_modules/get-value": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-3.0.1.tgz", - "integrity": "sha512-mKZj9JLQrwMBtj5wxi6MH8Z5eSKaERpAwjg43dPtlGI1ZVEgH/qC7T8/6R2OBSUA+zzHBZgICsVJaEIV2tKTDA==", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/unist-util-find-all-after": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/unist-util-find-all-after/-/unist-util-find-all-after-3.0.2.tgz", - "integrity": "sha512-xaTC/AGZ0rIM2gM28YVRAFPIZpzbpDtU3dRmp7EXlNVA8ziQc4hY3H7BHXM1J49nEmiqc3svnqMReW+PGqbZKQ==", - "dev": true, - "dependencies": { - "unist-util-is": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-is": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", - "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-stringify-position": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", - "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", "dev": true, "dependencies": { - "@types/unist": "^2.0.2" + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true, "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "dev": true, - "engines": { - "node": ">= 0.8" + "node": ">=4" } }, - "node_modules/unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", "dev": true, - "dependencies": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/unset-value/node_modules/has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", "dev": true, - "dependencies": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", + "node_modules/unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", "dev": true, "dependencies": { - "isarray": "1.0.0" + "crypto-random-string": "^2.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/unset-value/node_modules/has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==", + "node_modules/upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=4", + "yarn": "*" } }, "node_modules/update-browserslist-db": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", - "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", "dev": true, "funding": [ { @@ -13455,12 +7105,6 @@ "browserslist": ">= 4.21.0" } }, - "node_modules/upper-case": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", - "integrity": "sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==", - "dev": true - }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -13470,254 +7114,119 @@ "punycode": "^2.1.0" } }, - "node_modules/urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==", - "deprecated": "Please see https://github.com/lydell/urix#deprecated", - "dev": true - }, - "node_modules/use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "dev": true }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "dev": true, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/uuid": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", - "integrity": "sha512-FULf7fayPdpASncVy4DLh3xydlXEJJpvIELjYjNeQWYUZ9pclcpvCZSr2gkmN2FrrGcI7G/cJsIEwk5/8vfXpg==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "dev": true - }, "node_modules/v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz", + "integrity": "sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==", "dev": true }, - "node_modules/v8flags": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz", - "integrity": "sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==", + "node_modules/vite": { + "version": "4.4.11", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.4.11.tgz", + "integrity": "sha512-ksNZJlkcU9b0lBwAGZGGaZHCMqHsc8OpgtoYhsQ4/I2v5cnpmmmqe5pM4nv/4Hn6G/2GhTdj0DhZh2e+Er1q5A==", "dev": true, "dependencies": { - "homedir-polyfill": "^1.0.1" + "esbuild": "^0.18.10", + "postcss": "^8.4.27", + "rollup": "^3.27.1" + }, + "bin": { + "vite": "bin/vite.js" }, "engines": { - "node": ">= 0.10" - } - }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "node_modules/value-or-function": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz", - "integrity": "sha512-jdBB2FrWvQC/pnPtIqcLsMaQgjhdb6B7tk1MMyTKapox+tQZbdRP4uLxu/JY0t7fbfDCUMnuelzEYv5GsxHhdg==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/vfile": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", - "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==", - "dev": true, - "dependencies": { - "@types/unist": "^2.0.0", - "is-buffer": "^2.0.0", - "unist-util-stringify-position": "^2.0.0", - "vfile-message": "^2.0.0" + "node": "^14.18.0 || >=16.0.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/vfile-message": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", - "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", - "dev": true, - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^2.0.0" + "url": "https://github.com/vitejs/vite?sponsor=1" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/vfile/node_modules/is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "@types/node": ">= 14", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" + "less": { + "optional": true }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "engines": { - "node": ">=4" + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } } }, - "node_modules/vinyl": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.1.tgz", - "integrity": "sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==", + "node_modules/vite-plugin-pwa": { + "version": "0.16.5", + "resolved": "https://registry.npmjs.org/vite-plugin-pwa/-/vite-plugin-pwa-0.16.5.tgz", + "integrity": "sha512-Ahol4dwhMP2UHPQXkllSlXbihOaDFnvBIDPmAxoSZ1EObBUJGP4CMRyCyAVkIHjd6/H+//vH0DM2ON+XxHr81g==", "dev": true, "dependencies": { - "clone": "^2.1.1", - "clone-buffer": "^1.0.0", - "clone-stats": "^1.0.0", - "cloneable-readable": "^1.0.0", - "remove-trailing-separator": "^1.0.1", - "replace-ext": "^1.0.0" + "debug": "^4.3.4", + "fast-glob": "^3.3.1", + "pretty-bytes": "^6.1.1", + "workbox-build": "^7.0.0", + "workbox-window": "^7.0.0" }, "engines": { - "node": ">= 0.10" - } - }, - "node_modules/vinyl-fs": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz", - "integrity": "sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==", - "dev": true, - "dependencies": { - "fs-mkdirp-stream": "^1.0.0", - "glob-stream": "^6.1.0", - "graceful-fs": "^4.0.0", - "is-valid-glob": "^1.0.0", - "lazystream": "^1.0.0", - "lead": "^1.0.0", - "object.assign": "^4.0.4", - "pumpify": "^1.3.5", - "readable-stream": "^2.3.3", - "remove-bom-buffer": "^3.0.0", - "remove-bom-stream": "^1.2.0", - "resolve-options": "^1.1.0", - "through2": "^2.0.0", - "to-through": "^2.0.0", - "value-or-function": "^3.0.0", - "vinyl": "^2.0.0", - "vinyl-sourcemap": "^1.1.0" + "node": ">=16.0.0" }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/vinyl-fs/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/vinyl-sourcemap": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz", - "integrity": "sha512-NiibMgt6VJGJmyw7vtzhctDcfKch4e4n9TBeoWlirb7FMg9/1Ov9k+A5ZRAtywBpRPiyECvQRQllYM8dECegVA==", - "dev": true, - "dependencies": { - "append-buffer": "^1.0.2", - "convert-source-map": "^1.5.0", - "graceful-fs": "^4.1.6", - "normalize-path": "^2.1.1", - "now-and-later": "^2.0.0", - "remove-bom-buffer": "^3.0.0", - "vinyl": "^2.0.0" + "funding": { + "url": "https://github.com/sponsors/antfu" }, - "engines": { - "node": ">= 0.10" + "peerDependencies": { + "vite": "^3.1.0 || ^4.0.0", + "workbox-build": "^7.0.0", + "workbox-window": "^7.0.0" } }, - "node_modules/vinyl-sourcemap/node_modules/normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "node_modules/vite-plugin-pwa/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "dependencies": { - "remove-trailing-separator": "^1.0.1" + "ms": "2.1.2" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/vinyl-sourcemaps-apply": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz", - "integrity": "sha512-+oDh3KYZBoZC8hfocrbrxbLUeaYtQK7J5WU5Br9VqWqmCll3tFJqKp97GC9GmMsVIL0qnx2DgEDVxdo5EZ5sSw==", - "dev": true, - "dependencies": { - "source-map": "^0.5.1" - } - }, - "node_modules/vinyl-sourcemaps-apply/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/vinyl/node_modules/replace-ext": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz", - "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==", - "dev": true, - "engines": { - "node": ">= 0.10" - } + "node_modules/vite-plugin-pwa/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true }, "node_modules/warning": { "version": "3.0.0", @@ -13727,13 +7236,21 @@ "loose-envify": "^1.0.0" } }, - "node_modules/web-streams-polyfill": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", - "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==", + "node_modules/webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true + }, + "node_modules/whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", "dev": true, - "engines": { - "node": ">= 8" + "dependencies": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" } }, "node_modules/which": { @@ -13792,12 +7309,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/which-builtin-type/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true - }, "node_modules/which-collection": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", @@ -13813,12 +7324,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/which-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", - "integrity": "sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ==", - "dev": true - }, "node_modules/which-typed-array": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", @@ -13837,203 +7342,399 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/word-wrap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "node_modules/workbox-background-sync": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-7.0.0.tgz", + "integrity": "sha512-S+m1+84gjdueM+jIKZ+I0Lx0BDHkk5Nu6a3kTVxP4fdj3gKouRNmhO8H290ybnJTOPfBDtTMXSQA/QLTvr7PeA==", "dev": true, - "engines": { - "node": ">=0.10.0" + "dependencies": { + "idb": "^7.0.1", + "workbox-core": "7.0.0" } }, - "node_modules/wrap-ansi": { + "node_modules/workbox-broadcast-update": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-7.0.0.tgz", + "integrity": "sha512-oUuh4jzZrLySOo0tC0WoKiSg90bVAcnE98uW7F8GFiSOXnhogfNDGZelPJa+6KpGBO5+Qelv04Hqx2UD+BJqNQ==", "dev": true, "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "workbox-core": "7.0.0" + } + }, + "node_modules/workbox-build": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-7.0.0.tgz", + "integrity": "sha512-CttE7WCYW9sZC+nUYhQg3WzzGPr4IHmrPnjKiu3AMXsiNQKx+l4hHl63WTrnicLmKEKHScWDH8xsGBdrYgtBzg==", + "dev": true, + "dependencies": { + "@apideck/better-ajv-errors": "^0.3.1", + "@babel/core": "^7.11.1", + "@babel/preset-env": "^7.11.0", + "@babel/runtime": "^7.11.2", + "@rollup/plugin-babel": "^5.2.0", + "@rollup/plugin-node-resolve": "^11.2.1", + "@rollup/plugin-replace": "^2.4.1", + "@surma/rollup-plugin-off-main-thread": "^2.2.3", + "ajv": "^8.6.0", + "common-tags": "^1.8.0", + "fast-json-stable-stringify": "^2.1.0", + "fs-extra": "^9.0.1", + "glob": "^7.1.6", + "lodash": "^4.17.20", + "pretty-bytes": "^5.3.0", + "rollup": "^2.43.1", + "rollup-plugin-terser": "^7.0.0", + "source-map": "^0.8.0-beta.0", + "stringify-object": "^3.3.0", + "strip-comments": "^2.0.1", + "tempy": "^0.6.0", + "upath": "^1.2.0", + "workbox-background-sync": "7.0.0", + "workbox-broadcast-update": "7.0.0", + "workbox-cacheable-response": "7.0.0", + "workbox-core": "7.0.0", + "workbox-expiration": "7.0.0", + "workbox-google-analytics": "7.0.0", + "workbox-navigation-preload": "7.0.0", + "workbox-precaching": "7.0.0", + "workbox-range-requests": "7.0.0", + "workbox-recipes": "7.0.0", + "workbox-routing": "7.0.0", + "workbox-strategies": "7.0.0", + "workbox-streams": "7.0.0", + "workbox-sw": "7.0.0", + "workbox-window": "7.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/workbox-build/node_modules/@apideck/better-ajv-errors": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.6.tgz", + "integrity": "sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA==", + "dev": true, + "dependencies": { + "json-schema": "^0.4.0", + "jsonpointer": "^5.0.0", + "leven": "^3.1.0" }, "engines": { "node": ">=10" }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "peerDependencies": { + "ajv": ">=8" } }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/workbox-build/node_modules/@rollup/plugin-babel": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz", + "integrity": "sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==", "dev": true, "dependencies": { - "color-convert": "^2.0.1" + "@babel/helper-module-imports": "^7.10.4", + "@rollup/pluginutils": "^3.1.0" }, "engines": { - "node": ">=8" + "node": ">= 10.0.0" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "peerDependencies": { + "@babel/core": "^7.0.0", + "@types/babel__core": "^7.1.9", + "rollup": "^1.20.0||^2.0.0" + }, + "peerDependenciesMeta": { + "@types/babel__core": { + "optional": true + } } }, - "node_modules/wrap-ansi/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/workbox-build/node_modules/@rollup/plugin-node-resolve": { + "version": "11.2.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz", + "integrity": "sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==", "dev": true, "dependencies": { - "color-name": "~1.1.4" + "@rollup/pluginutils": "^3.1.0", + "@types/resolve": "1.17.1", + "builtin-modules": "^3.1.0", + "deepmerge": "^4.2.2", + "is-module": "^1.0.0", + "resolve": "^1.19.0" }, "engines": { - "node": ">=7.0.0" + "node": ">= 10.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" } }, - "node_modules/wrap-ansi/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "node_modules/workbox-build/node_modules/@rollup/plugin-replace": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz", + "integrity": "sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^3.1.0", + "magic-string": "^0.25.7" + }, + "peerDependencies": { + "rollup": "^1.20.0 || ^2.0.0" + } }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true + "node_modules/workbox-build/node_modules/@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "dependencies": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" + } }, - "node_modules/write": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", - "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + "node_modules/workbox-build/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/workbox-build/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", "dev": true, "dependencies": { - "mkdirp": "^0.5.1" + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" }, "engines": { - "node": ">=4" + "node": ">=10" } }, - "node_modules/write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "node_modules/workbox-build/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/workbox-build/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dev": true, "dependencies": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/workbox-build/node_modules/pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/ws": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", - "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", + "node_modules/workbox-build/node_modules/rollup": { + "version": "2.79.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", + "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==", "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, "engines": { "node": ">=10.0.0" }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/workbox-build/node_modules/rollup-plugin-terser": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", + "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", + "deprecated": "This package has been deprecated and is no longer maintained. Please use @rollup/plugin-terser", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.10.4", + "jest-worker": "^26.2.1", + "serialize-javascript": "^4.0.0", + "terser": "^5.0.0" }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } + "peerDependencies": { + "rollup": "^2.0.0" } }, - "node_modules/xmlhttprequest-ssl": { + "node_modules/workbox-build/node_modules/universalify": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz", - "integrity": "sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", "dev": true, "engines": { - "node": ">=0.4.0" + "node": ">= 10.0.0" } }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "node_modules/workbox-cacheable-response": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-7.0.0.tgz", + "integrity": "sha512-0lrtyGHn/LH8kKAJVOQfSu3/80WDc9Ma8ng0p2i/5HuUndGttH+mGMSvOskjOdFImLs2XZIimErp7tSOPmu/6g==", "dev": true, - "engines": { - "node": ">=0.4" + "dependencies": { + "workbox-core": "7.0.0" } }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "node_modules/workbox-core": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-7.0.0.tgz", + "integrity": "sha512-81JkAAZtfVP8darBpfRTovHg8DGAVrKFgHpOArZbdFd78VqHr5Iw65f2guwjE2NlCFbPFDoez3D3/6ZvhI/rwQ==", + "dev": true + }, + "node_modules/workbox-expiration": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-7.0.0.tgz", + "integrity": "sha512-MLK+fogW+pC3IWU9SFE+FRStvDVutwJMR5if1g7oBJx3qwmO69BNoJQVaMXq41R0gg3MzxVfwOGKx3i9P6sOLQ==", "dev": true, - "engines": { - "node": ">=10" + "dependencies": { + "idb": "^7.0.1", + "workbox-core": "7.0.0" } }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "node_modules/workbox-google-analytics": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-7.0.0.tgz", + "integrity": "sha512-MEYM1JTn/qiC3DbpvP2BVhyIH+dV/5BjHk756u9VbwuAhu0QHyKscTnisQuz21lfRpOwiS9z4XdqeVAKol0bzg==", + "dev": true, + "dependencies": { + "workbox-background-sync": "7.0.0", + "workbox-core": "7.0.0", + "workbox-routing": "7.0.0", + "workbox-strategies": "7.0.0" + } }, - "node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "node_modules/workbox-navigation-preload": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-7.0.0.tgz", + "integrity": "sha512-juWCSrxo/fiMz3RsvDspeSLGmbgC0U9tKqcUPZBCf35s64wlaLXyn2KdHHXVQrb2cqF7I0Hc9siQalainmnXJA==", "dev": true, - "engines": { - "node": ">= 6" + "dependencies": { + "workbox-core": "7.0.0" } }, - "node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "node_modules/workbox-precaching": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-7.0.0.tgz", + "integrity": "sha512-EC0vol623LJqTJo1mkhD9DZmMP604vHqni3EohhQVwhJlTgyKyOkMrZNy5/QHfOby+39xqC01gv4LjOm4HSfnA==", "dev": true, "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" + "workbox-core": "7.0.0", + "workbox-routing": "7.0.0", + "workbox-strategies": "7.0.0" } }, - "node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "node_modules/workbox-range-requests": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-7.0.0.tgz", + "integrity": "sha512-SxAzoVl9j/zRU9OT5+IQs7pbJBOUOlriB8Gn9YMvi38BNZRbM+RvkujHMo8FOe9IWrqqwYgDFBfv6sk76I1yaQ==", "dev": true, - "engines": { - "node": ">=10" + "dependencies": { + "workbox-core": "7.0.0" } }, - "node_modules/yargs/node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "node_modules/workbox-recipes": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/workbox-recipes/-/workbox-recipes-7.0.0.tgz", + "integrity": "sha512-DntcK9wuG3rYQOONWC0PejxYYIDHyWWZB/ueTbOUDQgefaeIj1kJ7pdP3LZV2lfrj8XXXBWt+JDRSw1lLLOnww==", "dev": true, - "engines": { - "node": ">=12" + "dependencies": { + "workbox-cacheable-response": "7.0.0", + "workbox-core": "7.0.0", + "workbox-expiration": "7.0.0", + "workbox-precaching": "7.0.0", + "workbox-routing": "7.0.0", + "workbox-strategies": "7.0.0" } }, - "node_modules/zwitch": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", - "integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==", + "node_modules/workbox-routing": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-7.0.0.tgz", + "integrity": "sha512-8YxLr3xvqidnbVeGyRGkaV4YdlKkn5qZ1LfEePW3dq+ydE73hUUJJuLmGEykW3fMX8x8mNdL0XrWgotcuZjIvA==", "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "dependencies": { + "workbox-core": "7.0.0" + } + }, + "node_modules/workbox-strategies": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-7.0.0.tgz", + "integrity": "sha512-dg3qJU7tR/Gcd/XXOOo7x9QoCI9nk74JopaJaYAQ+ugLi57gPsXycVdBnYbayVj34m6Y8ppPwIuecrzkpBVwbA==", + "dev": true, + "dependencies": { + "workbox-core": "7.0.0" + } + }, + "node_modules/workbox-streams": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-7.0.0.tgz", + "integrity": "sha512-moVsh+5to//l6IERWceYKGiftc+prNnqOp2sgALJJFbnNVpTXzKISlTIsrWY+ogMqt+x1oMazIdHj25kBSq/HQ==", + "dev": true, + "dependencies": { + "workbox-core": "7.0.0", + "workbox-routing": "7.0.0" + } + }, + "node_modules/workbox-sw": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-7.0.0.tgz", + "integrity": "sha512-SWfEouQfjRiZ7GNABzHUKUyj8pCoe+RwjfOIajcx6J5mtgKkN+t8UToHnpaJL5UVVOf5YhJh+OHhbVNIHe+LVA==", + "dev": true + }, + "node_modules/workbox-window": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-7.0.0.tgz", + "integrity": "sha512-j7P/bsAWE/a7sxqTzXo3P2ALb1reTfZdvVp6OJ/uLr/C2kZAMvjeWGm8V4htQhor7DOvYg0sSbFN2+flT5U0qA==", + "dev": true, + "dependencies": { + "@types/trusted-types": "^2.0.2", + "workbox-core": "7.0.0" } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true } } } diff --git a/package.json b/package.json index 7163d39c..f43e8b15 100644 --- a/package.json +++ b/package.json @@ -10,33 +10,16 @@ "url": "https://github.com/freifunk/meshviewer/issues" }, "devDependencies": { - "babel-eslint": "^10.0.1", - "browser-sync": "^2.27.4", - "del": "^6.0.0", + "@vite-pwa/assets-generator": "^0.0.10", + "babel-eslint": "^10.1.0", "eslint": "^7.31.0", "eslint-config-airbnb-es5": "^1.2.0", "eslint-config-defaults": "^9.0.0", "eslint-config-prettier": "^9.0.0", "eslint-plugin-react": "^7.33.2", - "gulp": "^4.0.1", - "gulp-autoprefixer": "^8.0.0", - "gulp-cache-bust": "^1.4.0", - "gulp-cli": "^2.3.0", - "gulp-environments": "^1.0.1", - "gulp-eslint": "^6.0.0", - "gulp-htmlmin": "^5.0.1", - "gulp-inject": "^5.0.2", - "gulp-inline-source": "^4.0.0", - "gulp-jsonminify": "^1.1.0", - "gulp-load-plugins": "^2.0.7", - "gulp-real-favicon": "^0.3.2", - "gulp-requirejs-optimize": "^1.3.0", - "gulp-sass": "^5.0.0", - "gulp-sourcemaps": "^3.0.0", - "gulp-stylelint": "^13.0.0", - "gulp-uglify": "^3.0.2", "prettier": "3.0.3", - "sass": "^1.66.1" + "vite": "^4.4.9", + "vite-plugin-pwa": "^0.16.5" }, "eslintConfig": { "env": { @@ -47,10 +30,10 @@ } }, "dependencies": { - "almond": "^0.3.3", "d3-collection": "^1.0.7", "d3-drag": "^3.0.0", "d3-force": "^3.0.0", + "d3-interpolate": "^3.0.1", "d3-selection": "^3.0.0", "d3-zoom": "^3.0.0", "leaflet": "^1.7.1", @@ -59,40 +42,19 @@ "node-polyglot": "2.2.2", "promise-polyfill": "^8.2.0", "rbush": "^3.0.1", - "requirejs": "^2.3.6", "snabbdom": "^0.7.4" }, - "overrides": { - "gulp": { - "glob-watcher": "^6.0.0" - }, - "gulp-cache-bust": { - "nth-check": "^2.1.1" - }, - "gulp-inject": { - "set-value": "^4.1.0" - }, - "gulp-inline-source": { - "inline-source": "^8.0.0", - "nth-check": "^2.1.1" - }, - "vinyl-fs": { - "glob-stream": "^8.0.0" - } - }, - "optionalDependencies": { - "fsevents": "^2.3.3" - }, "scripts": { - "gulp": "./node_modules/gulp-cli/bin/gulp.js", - "gulp-ci": "gulp ci", - "serve": "gulp serve", + "dev": "vite", + "build": "vite build", + "preview": "vite preview", "lint": "npm run lint:prettier && npm run lint:eslint", "lint:eslint": "./node_modules/.bin/eslint .", "lint:prettier": "./node_modules/.bin/prettier --check .", "lint:fix": "npm run lint:fix:prettier && npm run lint:fix:eslint", "lint:fix:eslint": "./node_modules/.bin/eslint --fix .", - "lint:fix:prettier": "./node_modules/.bin/prettier --log-level warn --write ." + "lint:fix:prettier": "./node_modules/.bin/prettier --log-level warn --write .", + "generate-pwa-assets": "pwa-assets-generator --preset minimal assets/logo.svg" }, "browserslist": [ "> 1% in DE" diff --git a/polyfill.js b/polyfill.js deleted file mode 100644 index 89bde421..00000000 --- a/polyfill.js +++ /dev/null @@ -1,33 +0,0 @@ -"use strict"; -// Polyfills for (old) firefox 75 -// From https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/ -if (typeof Object.assign !== "function") { - Object.assign = function (target) { - // .length of function is 2 - if (target === null) { - // TypeError if undefined or null - throw new TypeError("Cannot convert undefined or null to object"); - } - - var to = Object(target); - - for (var index = 1; index < arguments.length; index++) { - var nextSource = arguments[index]; - - if (nextSource !== null) { - // Skip over if undefined or null - for (var nextKey in nextSource) { - // Avoid bugs when hasOwnProperty is shadowed - if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) { - to[nextKey] = nextSource[nextKey]; - } - } - } - } - return to; - }; -} - -if ("serviceWorker" in navigator) { - navigator.serviceWorker.register("service-worker.js"); -} diff --git a/public/apple-touch-icon-180x180.png b/public/apple-touch-icon-180x180.png new file mode 100644 index 0000000000000000000000000000000000000000..11ac845b7d0d27154d0d80500aae3a38fdb4a9be GIT binary patch literal 1548 zcmV+n2J`ueP)^v5sz^YGlExaPjj_}+#3=&Stl(5xd^##~C}q&(4U z5}*J8010qNS#tmY1Lyz%1Ly&@ds1rv00n$WL_t(|+U;E1va28rE!WCT+yDRBW8I=4 zL2V01I+OLXXY6ddj3FT_p|=|Xfj}S-2m}IwKp+qZ1OkCTAP@)y0)apv3V~`SgkYNf z3}eOk-9u{i6P)!u0@pv_81lY_Xx-S9-&08Sdz@Qm9r%Wn!2^hfIkSbNnZk%(c(=P6 zl@AzZjeh=89S2cb@cY2U7YSiz$SDv2b(Mq=IN+zWXJ;_blgRR%4KI)nD7fg2~EPX(FGBj~+`g7nP(cZ&{CU&dq9un9r z*qQ7^UhT)BVciC(C4|x{VcP7vruA;|a+7{{Nv}mXUCVM-CyDzUsKAi7kj`6rwd#Ds zFB9ykEdIB3U-o7|-V zAu6k;q0*USog;0kuDE^LhRG4kh#Z9sX?-1MD6wrwz@*or_*%tIz%)S8tQD1UO%xFk zh%{?Qg@#!Jq(w`*D9Ab?9c+=gS=Kquv#oi9-ER|e z9+f;xV%BXo2!n_*3kPoH{b-Z34TIda@XD(;*XBi7zFWe!ZQ0N^SDLGKJv!a_yCVVh zI(UNu+8qHNM>%WV<+gWub;g@I^(EJaOS_#V+NY}f#jBHKy(9h1t`WU&mb6{-Y=2!fK-%qZO5$GK<)m#s9H<~AD%JO4r=Yub{4$@c z?KVyaoq{W4-YAY|leJ1>a?mNb&O6LYAb92?uT4MbFXucDP&_h3d=h_#0-k!6HN;)# z%)Zq2rY1d@SRT#P;=$ZvP}Z*7w^g}$HZ!vuO}h<&PGem^2DhL@?06%>N8AtOT9K@T zFgiyQ(zFu8wgZ@F{Rke;+^%1L;q+#XwToWLRmP4xtbSzr z8=ID#{2AAG${(1`81uG0QD8^L=7KF_MWWmY%`iExI&x-k-+XB7DfIci=s=4Z+N3R4 zFhG&+ywK>4E#eNeF0~3xas&uIy6~QA#A4IZLjD0vGSi&{9qK*RNNnyT%N!NaK(lgw zi#gGBQH|79q!}>VsPmy|iO=?we{9FDc^UVBrn$`t(&QBB&7iF*l*%Dj*s-)%jodl+ zFwx)><%JsO3?MkKd6kvE28zMyL(S4*HtzjDxF+oyZ5%; zTU{(!&eKgq^FYW%IuiOndi6m(B2lA=~c`?nj y2m}IwKp+qZ1OkCTAP@)y0)apv5C{aKef$G`=WC_Z{ZZ8b0000Report Bug | Map data (c) OpenStreetMap contributor" + } + } + ], + "fixedCenter": [ + [50.5099, 8.1393], + [49.9282, 9.3164] + ], + "siteNames": [ + { "site": "dom0-gw", "name": "Default" }, + { "site": "dom1-gw", "name": "Event" }, + { "site": "dom10-gw", "name": "FFM Süd/Neu-Isenburg (Gateway)" }, + { "site": "dom11-gw", "name": "FFM Süd-Ost/Offenbach (Gateway)" }, + { "site": "dom12-gw", "name": "Main-Kinzig 1 (Gateway)" }, + { "site": "dom13-gw", "name": "Hochtaunus (Gateway)" }, + { "site": "dom14-gw", "name": "Landkreis Offenbach (Gateway)" }, + { "site": "dom15-gw", "name": "Main-Kinzig 2 (Gateway)" }, + { "site": "dom16-gw", "name": "Kelsterbach (Gateway)" }, + { "site": "dom17-gw", "name": "Main-Taunus (Gateway)" }, + { "site": "dom2-gw", "name": "Single Domain" }, + { "site": "dom3-gw", "name": "Wetterau (Gateway)" }, + { "site": "dom4-gw", "name": "FFM Innenstadt (Gateway)" }, + { "site": "dom5-gw", "name": "FFM Ost (Gateway)" }, + { "site": "dom6-gw", "name": "FFM Nordost (Gateway)" }, + { "site": "dom7-gw", "name": "FFM Nordwest (Gateway)" }, + { "site": "dom8-gw", "name": "FFM West (Gateway)" }, + { "site": "dom9-gw", "name": "FFM Nord (Gateway)" }, + { "site": "ffffm_35510", "name": "35510 Butzbach" }, + { "site": "ffffm_35519", "name": "35519 Rockenberg" }, + { "site": "ffffm_60311", "name": "60311 Frankfurt am Main" }, + { "site": "ffffm_60313", "name": "60313 Frankfurt am Main" }, + { "site": "ffffm_60314", "name": "60314 Frankfurt am Main" }, + { "site": "ffffm_60316", "name": "60316 Frankfurt am Main" }, + { "site": "ffffm_60318", "name": "60318 Frankfurt am Main" }, + { "site": "ffffm_60320", "name": "60320 Frankfurt am Main" }, + { "site": "ffffm_60322", "name": "60322 Frankfurt am Main" }, + { "site": "ffffm_60323", "name": "60323 Frankfurt am Main" }, + { "site": "ffffm_60325", "name": "60325 Frankfurt am Main" }, + { "site": "ffffm_60326", "name": "60326 Frankfurt am Main" }, + { "site": "ffffm_60327", "name": "60327 Frankfurt am Main" }, + { "site": "ffffm_60329", "name": "60329 Frankfurt am Main" }, + { "site": "ffffm_60385", "name": "60385 Frankfurt am Main" }, + { "site": "ffffm_60386", "name": "60386 Frankfurt am Main" }, + { "site": "ffffm_60388", "name": "60388 Frankfurt am Main" }, + { "site": "ffffm_60389", "name": "60389 Frankfurt am Main" }, + { "site": "ffffm_60431", "name": "60431 Frankfurt am Main" }, + { "site": "ffffm_60433", "name": "60433 Frankfurt am Main" }, + { "site": "ffffm_60435", "name": "60435 Frankfurt am Main" }, + { "site": "ffffm_60437", "name": "60437 Frankfurt am Main" }, + { "site": "ffffm_60438", "name": "60438 Frankfurt am Main" }, + { "site": "ffffm_60439", "name": "60439 Frankfurt am Main" }, + { "site": "ffffm_60486", "name": "60486 Frankfurt am Main" }, + { "site": "ffffm_60487", "name": "60487 Frankfurt am Main" }, + { "site": "ffffm_60488", "name": "60488 Frankfurt am Main" }, + { "site": "ffffm_60489", "name": "60489 Frankfurt am Main" }, + { "site": "ffffm_60528", "name": "60528 Frankfurt am Main" }, + { "site": "ffffm_60529", "name": "60529 Frankfurt am Main" }, + { "site": "ffffm_60549", "name": "60549 Frankfurt am Main" }, + { "site": "ffffm_60594", "name": "60594 Frankfurt am Main" }, + { "site": "ffffm_60596", "name": "60596 Frankfurt am Main" }, + { "site": "ffffm_60598", "name": "60598 Frankfurt am Main" }, + { "site": "ffffm_60599", "name": "60599 Frankfurt am Main" }, + { "site": "ffffm_61118", "name": "61118 Bad Vilbel" }, + { "site": "ffffm_61130", "name": "61130 Nidderau" }, + { "site": "ffffm_61137", "name": "61137 Schöneck" }, + { "site": "ffffm_61138", "name": "61138 Niederdorfelden" }, + { "site": "ffffm_61169", "name": "61169 Friedberg (Hessen)" }, + { "site": "ffffm_61184", "name": "61184 Karben" }, + { "site": "ffffm_61191", "name": "61191 Rosbach v.d. Höhe" }, + { "site": "ffffm_61194", "name": "61194 Niddatal" }, + { "site": "ffffm_61197", "name": "61197 Florstadt" }, + { "site": "ffffm_61200", "name": "61200 Wölfersheim" }, + { "site": "ffffm_61203", "name": "61203 Reichelsheim (Wetterau)" }, + { "site": "ffffm_61206", "name": "61206 Wöllstadt" }, + { "site": "ffffm_61209", "name": "61209 Echzell" }, + { "site": "ffffm_61231", "name": "61231 Bad Nauheim" }, + { "site": "ffffm_61239", "name": "61239 Ober-Mörlen" }, + { "site": "ffffm_61250", "name": "61250 Usingen" }, + { "site": "ffffm_61267", "name": "61267 Neu-Anspach" }, + { "site": "ffffm_61273", "name": "61273 Wehrheim" }, + { "site": "ffffm_61276", "name": "61276 Weilrod" }, + { "site": "ffffm_61279", "name": "61279 Grävenwiesbach" }, + { "site": "ffffm_61348", "name": "61348 Bad Homburg v.d. Höhe" }, + { "site": "ffffm_61350", "name": "61350 Bad Homburg v.d. Höhe" }, + { "site": "ffffm_61352", "name": "61352 Bad Homburg v.d. Höhe" }, + { "site": "ffffm_61381", "name": "61381 Friedrichsdorf" }, + { "site": "ffffm_61389", "name": "61389 Schmitten" }, + { "site": "ffffm_61440", "name": "61440 Oberursel (Taunus)" }, + { "site": "ffffm_61449", "name": "61449 Steinbach (Taunus)" }, + { "site": "ffffm_61462", "name": "61462 Königstein im Taunus" }, + { "site": "ffffm_61476", "name": "61476 Kronberg im Taunus" }, + { "site": "ffffm_61479", "name": "61479 Glashütten" }, + { "site": "ffffm_63065", "name": "63065 Offenbach am Main" }, + { "site": "ffffm_63067", "name": "63067 Offenbach am Main" }, + { "site": "ffffm_63069", "name": "63069 Offenbach am Main" }, + { "site": "ffffm_63071", "name": "63071 Offenbach am Main" }, + { "site": "ffffm_63073", "name": "63073 Offenbach am Main" }, + { "site": "ffffm_63075", "name": "63075 Offenbach am Main" }, + { "site": "ffffm_63150", "name": "63150 Heusenstamm" }, + { "site": "ffffm_63165", "name": "63165 Mühlheim am Main" }, + { "site": "ffffm_63179", "name": "63179 Obertshausen" }, + { "site": "ffffm_63263", "name": "63263 Neu-Isenburg" }, + { "site": "ffffm_63450", "name": "63450 Hanau" }, + { "site": "ffffm_63452", "name": "63452 Hanau" }, + { "site": "ffffm_63454", "name": "63454 Hanau" }, + { "site": "ffffm_63456", "name": "63456 Hanau" }, + { "site": "ffffm_63457", "name": "63457 Hanau" }, + { "site": "ffffm_63477", "name": "63477 Maintal" }, + { "site": "ffffm_63486", "name": "63486 Bruchköbel" }, + { "site": "ffffm_63505", "name": "63505 Langenselbold" }, + { "site": "ffffm_63512", "name": "63512 Hainburg" }, + { "site": "ffffm_63517", "name": "63517 Rodenbach" }, + { "site": "ffffm_63526", "name": "63526 Erlensee" }, + { "site": "ffffm_63538", "name": "63538 Großkrotzenburg" }, + { "site": "ffffm_63543", "name": "63543 Neuberg" }, + { "site": "ffffm_63546", "name": "63546 Hammersbach" }, + { "site": "ffffm_63549", "name": "63549 Ronneburg" }, + { "site": "ffffm_63571", "name": "63571 Gelnhausen" }, + { "site": "ffffm_63579", "name": "63579 Freigericht" }, + { "site": "ffffm_63584", "name": "63584 Gründau" }, + { "site": "ffffm_63589", "name": "63589 Linsengericht" }, + { "site": "ffffm_63594", "name": "63594 Hasselroth" }, + { "site": "ffffm_63599", "name": "63599 Biebergemünd" }, + { "site": "ffffm_63607", "name": "63607 Wächtersbach" }, + { "site": "ffffm_63619", "name": "63619 Bad Orb" }, + { "site": "ffffm_63628", "name": "63628 Bad Soden-Salmünster" }, + { "site": "ffffm_63633", "name": "63633 Birstein" }, + { "site": "ffffm_63636", "name": "63636 Brachttal" }, + { "site": "ffffm_63637", "name": "63637 Jossgrund" }, + { "site": "ffffm_63639", "name": "63639 Flörsbachtal" }, + { "site": "ffffm_63654", "name": "63654 Büdingen" }, + { "site": "ffffm_63667", "name": "63667 Nidda" }, + { "site": "ffffm_63674", "name": "63674 Altenstadt" }, + { "site": "ffffm_63683", "name": "63683 Ortenberg" }, + { "site": "ffffm_63691", "name": "63691 Ranstadt" }, + { "site": "ffffm_63694", "name": "63694 Limeshain" }, + { "site": "ffffm_63695", "name": "63695 Glauburg" }, + { "site": "ffffm_63699", "name": "63699 Kefenrod" }, + { "site": "ffffm_65451", "name": "65451 Kelsterbach" }, + { "site": "ffffm_65719", "name": "65719 Hofheim am Taunus" }, + { "site": "ffffm_65760", "name": "65760 Eschborn" }, + { "site": "ffffm_65779", "name": "65779 Kelkheim" }, + { "site": "ffffm_65795", "name": "65795 Hattersheim" }, + { "site": "ffffm_65812", "name": "65812 Bad Soden am Taunus" }, + { "site": "ffffm_65817", "name": "65817 Eppstein" }, + { "site": "ffffm_65824", "name": "65824 Schwalbach am Taunus" }, + { "site": "ffffm_65830", "name": "65830 Kriftel" }, + { "site": "ffffm_65835", "name": "65835 Liederbach am Taunus" }, + { "site": "ffffm_65843", "name": "65843 Sulzbach (Taunus)" }, + { "site": "ffffm_65929", "name": "65929 Frankfurt am Main" }, + { "site": "ffffm_65931", "name": "65931 Frankfurt am Main" }, + { "site": "ffffm_65933", "name": "65933 Frankfurt am Main" }, + { "site": "ffffm_65934", "name": "65934 Frankfurt am Main" }, + { "site": "ffffm_65936", "name": "65936 Frankfurt am Main" }, + { "site": "ffffm_default", "name": "Default" }, + { "site": "ffffm_event", "name": "Event" }, + { "site": "ffffm_singledomain", "name": "Single Domain" } + ], + "domainNames": [ + { "site": "legacybat_11s", "name": "Legacy BATMAN (Single Domain)" }, + { "domain": "dom0-gw", "name": "Default" }, + { "domain": "dom1-gw", "name": "Event" }, + { "domain": "dom10-gw", "name": "FFM Süd/Neu-Isenburg (Gateway)" }, + { "domain": "dom11-gw", "name": "FFM Süd-Ost/Offenbach (Gateway)" }, + { "domain": "dom12-gw", "name": "Main-Kinzig 1 (Gateway)" }, + { "domain": "dom13-gw", "name": "Hochtaunus (Gateway)" }, + { "domain": "dom14-gw", "name": "Landkreis Offenbach (Gateway)" }, + { "domain": "dom15-gw", "name": "Main-Kinzig 2 (Gateway)" }, + { "domain": "dom16-gw", "name": "Kelsterbach (Gateway)" }, + { "domain": "dom17-gw", "name": "Main-Taunus (Gateway)" }, + { "domain": "dom2-gw", "name": "Single Domain" }, + { "domain": "dom3-gw", "name": "Wetterau (Gateway)" }, + { "domain": "dom4-gw", "name": "FFM Innenstadt (Gateway)" }, + { "domain": "dom5-gw", "name": "FFM Ost (Gateway)" }, + { "domain": "dom6-gw", "name": "FFM Nordost (Gateway)" }, + { "domain": "dom7-gw", "name": "FFM Nordwest (Gateway)" }, + { "domain": "dom8-gw", "name": "FFM West (Gateway)" }, + { "domain": "dom9-gw", "name": "FFM Nord (Gateway)" }, + { "domain": "ffffm_35510", "name": "35510 Butzbach" }, + { "domain": "ffffm_35519", "name": "35519 Rockenberg" }, + { "domain": "ffffm_60311", "name": "60311 Frankfurt am Main" }, + { "domain": "ffffm_60313", "name": "60313 Frankfurt am Main" }, + { "domain": "ffffm_60314", "name": "60314 Frankfurt am Main" }, + { "domain": "ffffm_60316", "name": "60316 Frankfurt am Main" }, + { "domain": "ffffm_60318", "name": "60318 Frankfurt am Main" }, + { "domain": "ffffm_60320", "name": "60320 Frankfurt am Main" }, + { "domain": "ffffm_60322", "name": "60322 Frankfurt am Main" }, + { "domain": "ffffm_60323", "name": "60323 Frankfurt am Main" }, + { "domain": "ffffm_60325", "name": "60325 Frankfurt am Main" }, + { "domain": "ffffm_60326", "name": "60326 Frankfurt am Main" }, + { "domain": "ffffm_60327", "name": "60327 Frankfurt am Main" }, + { "domain": "ffffm_60329", "name": "60329 Frankfurt am Main" }, + { "domain": "ffffm_60385", "name": "60385 Frankfurt am Main" }, + { "domain": "ffffm_60386", "name": "60386 Frankfurt am Main" }, + { "domain": "ffffm_60388", "name": "60388 Frankfurt am Main" }, + { "domain": "ffffm_60389", "name": "60389 Frankfurt am Main" }, + { "domain": "ffffm_60431", "name": "60431 Frankfurt am Main" }, + { "domain": "ffffm_60433", "name": "60433 Frankfurt am Main" }, + { "domain": "ffffm_60435", "name": "60435 Frankfurt am Main" }, + { "domain": "ffffm_60437", "name": "60437 Frankfurt am Main" }, + { "domain": "ffffm_60438", "name": "60438 Frankfurt am Main" }, + { "domain": "ffffm_60439", "name": "60439 Frankfurt am Main" }, + { "domain": "ffffm_60486", "name": "60486 Frankfurt am Main" }, + { "domain": "ffffm_60487", "name": "60487 Frankfurt am Main" }, + { "domain": "ffffm_60488", "name": "60488 Frankfurt am Main" }, + { "domain": "ffffm_60489", "name": "60489 Frankfurt am Main" }, + { "domain": "ffffm_60528", "name": "60528 Frankfurt am Main" }, + { "domain": "ffffm_60529", "name": "60529 Frankfurt am Main" }, + { "domain": "ffffm_60549", "name": "60549 Frankfurt am Main" }, + { "domain": "ffffm_60594", "name": "60594 Frankfurt am Main" }, + { "domain": "ffffm_60596", "name": "60596 Frankfurt am Main" }, + { "domain": "ffffm_60598", "name": "60598 Frankfurt am Main" }, + { "domain": "ffffm_60599", "name": "60599 Frankfurt am Main" }, + { "domain": "ffffm_61118", "name": "61118 Bad Vilbel" }, + { "domain": "ffffm_61130", "name": "61130 Nidderau" }, + { "domain": "ffffm_61137", "name": "61137 Schöneck" }, + { "domain": "ffffm_61138", "name": "61138 Niederdorfelden" }, + { "domain": "ffffm_61169", "name": "61169 Friedberg (Hessen)" }, + { "domain": "ffffm_61184", "name": "61184 Karben" }, + { "domain": "ffffm_61191", "name": "61191 Rosbach v.d. Höhe" }, + { "domain": "ffffm_61194", "name": "61194 Niddatal" }, + { "domain": "ffffm_61197", "name": "61197 Florstadt" }, + { "domain": "ffffm_61200", "name": "61200 Wölfersheim" }, + { "domain": "ffffm_61203", "name": "61203 Reichelsheim (Wetterau)" }, + { "domain": "ffffm_61206", "name": "61206 Wöllstadt" }, + { "domain": "ffffm_61209", "name": "61209 Echzell" }, + { "domain": "ffffm_61231", "name": "61231 Bad Nauheim" }, + { "domain": "ffffm_61239", "name": "61239 Ober-Mörlen" }, + { "domain": "ffffm_61250", "name": "61250 Usingen" }, + { "domain": "ffffm_61267", "name": "61267 Neu-Anspach" }, + { "domain": "ffffm_61273", "name": "61273 Wehrheim" }, + { "domain": "ffffm_61276", "name": "61276 Weilrod" }, + { "domain": "ffffm_61279", "name": "61279 Grävenwiesbach" }, + { "domain": "ffffm_61348", "name": "61348 Bad Homburg v.d. Höhe" }, + { "domain": "ffffm_61350", "name": "61350 Bad Homburg v.d. Höhe" }, + { "domain": "ffffm_61352", "name": "61352 Bad Homburg v.d. Höhe" }, + { "domain": "ffffm_61381", "name": "61381 Friedrichsdorf" }, + { "domain": "ffffm_61389", "name": "61389 Schmitten" }, + { "domain": "ffffm_61440", "name": "61440 Oberursel (Taunus)" }, + { "domain": "ffffm_61449", "name": "61449 Steinbach (Taunus)" }, + { "domain": "ffffm_61462", "name": "61462 Königstein im Taunus" }, + { "domain": "ffffm_61476", "name": "61476 Kronberg im Taunus" }, + { "domain": "ffffm_61479", "name": "61479 Glashütten" }, + { "domain": "ffffm_63065", "name": "63065 Offenbach am Main" }, + { "domain": "ffffm_63067", "name": "63067 Offenbach am Main" }, + { "domain": "ffffm_63069", "name": "63069 Offenbach am Main" }, + { "domain": "ffffm_63071", "name": "63071 Offenbach am Main" }, + { "domain": "ffffm_63073", "name": "63073 Offenbach am Main" }, + { "domain": "ffffm_63075", "name": "63075 Offenbach am Main" }, + { "domain": "ffffm_63150", "name": "63150 Heusenstamm" }, + { "domain": "ffffm_63165", "name": "63165 Mühlheim am Main" }, + { "domain": "ffffm_63179", "name": "63179 Obertshausen" }, + { "domain": "ffffm_63263", "name": "63263 Neu-Isenburg" }, + { "domain": "ffffm_63450", "name": "63450 Hanau" }, + { "domain": "ffffm_63452", "name": "63452 Hanau" }, + { "domain": "ffffm_63454", "name": "63454 Hanau" }, + { "domain": "ffffm_63456", "name": "63456 Hanau" }, + { "domain": "ffffm_63457", "name": "63457 Hanau" }, + { "domain": "ffffm_63477", "name": "63477 Maintal" }, + { "domain": "ffffm_63486", "name": "63486 Bruchköbel" }, + { "domain": "ffffm_63505", "name": "63505 Langenselbold" }, + { "domain": "ffffm_63512", "name": "63512 Hainburg" }, + { "domain": "ffffm_63517", "name": "63517 Rodenbach" }, + { "domain": "ffffm_63526", "name": "63526 Erlensee" }, + { "domain": "ffffm_63538", "name": "63538 Großkrotzenburg" }, + { "domain": "ffffm_63543", "name": "63543 Neuberg" }, + { "domain": "ffffm_63546", "name": "63546 Hammersbach" }, + { "domain": "ffffm_63549", "name": "63549 Ronneburg" }, + { "domain": "ffffm_63571", "name": "63571 Gelnhausen" }, + { "domain": "ffffm_63579", "name": "63579 Freigericht" }, + { "domain": "ffffm_63584", "name": "63584 Gründau" }, + { "domain": "ffffm_63589", "name": "63589 Linsengericht" }, + { "domain": "ffffm_63594", "name": "63594 Hasselroth" }, + { "domain": "ffffm_63599", "name": "63599 Biebergemünd" }, + { "domain": "ffffm_63607", "name": "63607 Wächtersbach" }, + { "domain": "ffffm_63619", "name": "63619 Bad Orb" }, + { "domain": "ffffm_63628", "name": "63628 Bad Soden-Salmünster" }, + { "domain": "ffffm_63633", "name": "63633 Birstein" }, + { "domain": "ffffm_63636", "name": "63636 Brachttal" }, + { "domain": "ffffm_63637", "name": "63637 Jossgrund" }, + { "domain": "ffffm_63639", "name": "63639 Flörsbachtal" }, + { "domain": "ffffm_63654", "name": "63654 Büdingen" }, + { "domain": "ffffm_63667", "name": "63667 Nidda" }, + { "domain": "ffffm_63674", "name": "63674 Altenstadt" }, + { "domain": "ffffm_63683", "name": "63683 Ortenberg" }, + { "domain": "ffffm_63691", "name": "63691 Ranstadt" }, + { "domain": "ffffm_63694", "name": "63694 Limeshain" }, + { "domain": "ffffm_63695", "name": "63695 Glauburg" }, + { "domain": "ffffm_63699", "name": "63699 Kefenrod" }, + { "domain": "ffffm_65451", "name": "65451 Kelsterbach" }, + { "domain": "ffffm_65719", "name": "65719 Hofheim am Taunus" }, + { "domain": "ffffm_65760", "name": "65760 Eschborn" }, + { "domain": "ffffm_65779", "name": "65779 Kelkheim" }, + { "domain": "ffffm_65795", "name": "65795 Hattersheim" }, + { "domain": "ffffm_65812", "name": "65812 Bad Soden am Taunus" }, + { "domain": "ffffm_65817", "name": "65817 Eppstein" }, + { "domain": "ffffm_65824", "name": "65824 Schwalbach am Taunus" }, + { "domain": "ffffm_65830", "name": "65830 Kriftel" }, + { "domain": "ffffm_65835", "name": "65835 Liederbach am Taunus" }, + { "domain": "ffffm_65843", "name": "65843 Sulzbach (Taunus)" }, + { "domain": "ffffm_65929", "name": "65929 Frankfurt am Main" }, + { "domain": "ffffm_65931", "name": "65931 Frankfurt am Main" }, + { "domain": "ffffm_65933", "name": "65933 Frankfurt am Main" }, + { "domain": "ffffm_65934", "name": "65934 Frankfurt am Main" }, + { "domain": "ffffm_65936", "name": "65936 Frankfurt am Main" }, + { "domain": "ffffm_default", "name": "Default" }, + { "domain": "ffffm_event", "name": "Event" }, + { "domain": "ffffm_singledomain", "name": "Single Domain" } + ], + "nodeInfos": [ + { + "name": "Clientstatistik", + "href": "https://freifunk.fail/d/000000002/nodes-details?var-name={NODE_CUSTOM}&from=now-7d&to=now-1m", + "image": "https://freifunk.fail/render/d-solo/000000003/node-details-for-map?panelId=7&var-id={NODE_ID}&from=now-7d&to=now-1m&width=600&height=300&theme=light&tz=Europe%2FBerlin&_t={TIME}", + "title": "Knoten {NODE_ID} ({NODE_NAME})" + }, + { + "name": "Traffic", + "href": "https://freifunk.fail/d/000000002/nodes-details?var-name={NODE_CUSTOM}&from=now-7d&to=now-1m", + "image": "https://freifunk.fail/render/d-solo/000000003/node-details-for-map?panelId=1&var-id={NODE_ID}&from=now-7d&to=now-1m&width=600&height=300&theme=light&tz=Europe%2FBerlin&_t={TIME}", + "title": "Knoten {NODE_ID} ({NODE_NAME})" + }, + { + "name": "Uptime", + "href": "https://freifunk.fail/d/000000002/nodes-details?var-name={NODE_CUSTOM}&from=now-7d&to=now-1m", + "image": "https://freifunk.fail/render/d-solo/000000003/node-details-for-map?panelId=5&var-id={NODE_ID}&from=now-7d&to=now-1m&width=600&height=300&theme=light&tz=Europe%2FBerlin&_t={TIME}", + "title": "Knoten {NODE_ID} ({NODE_NAME})" + }, + { + "name": "CPU Auslastung", + "href": "https://freifunk.fail/d/000000002/nodes-details?var-name={NODE_CUSTOM}&from=now-7d&to=now-1m", + "image": "https://freifunk.fail/render/d-solo/000000003/node-details-for-map?panelId=2&var-id={NODE_ID}&from=now-7d&to=now-1m&width=600&height=300&theme=light&tz=Europe%2FBerlin&_t={TIME}", + "title": "Knoten {NODE_ID} ({NODE_NAME})" + }, + { + "name": "Neighbours", + "href": "https://freifunk.fail/d/000000002/nodes-details?var-name={NODE_CUSTOM}&from=now-7d&to=now-1m", + "image": "https://freifunk.fail/render/d-solo/000000003/node-details-for-map?panelId=4&var-id={NODE_ID}&from=now-7d&to=now-1m&width=600&height=300&theme=light&tz=Europe%2FBerlin&_t={TIME}", + "title": "Knoten {NODE_ID} ({NODE_NAME})" + } + ], + "globalInfos": [ + { + "name": "Wochenstatistik", + "href": "https://freifunk.fail/d/000000002/deck?from=now-7d&to=now-1m", + "image": "https://freifunk.fail/render/d-solo/000000003/deck?&panelId=11&from=now-7d&to=now-1m&width=600&height=300&theme=light&tz=Europe%2FBerlin&_t={TIME}", + "title": "Bild der Wochenstatistik" + } + ], + "node_custom": "/[^.*]/ig", + "deprecation_enabled": true, + "deprecation_text": "Warnung: Dieser Knoten ist veraltet und wird seit dem 30. September 2020 nicht mehr unterstützt. Mehr Infos unter supportende.ffm.freifunk.net. Wenn du der Eigentümer des Gerätes bist, bitten wir dich, das Gerät dringend zu ersetzen, um weiterhin am Netz teilnehmen zu können.", + "hwImg": "https://map.aachen.freifunk.net/router-images/{MODEL_NORMALIZED}.svg" +} diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..f8a375778f52ccda62765f5ede7774102c175bdc GIT binary patch literal 1420 zcmV;71#|iU0096206;(h009690Coic02TlM0EtjeM-2)Z3IG5A4M|8uQUCw|KmY&$ zKnMl^0063Kaozv`010qNS#tmY1Lyz%1Ly&@ds1rv00k&XL_t(|oaI`*lG88{-kO>x zu&JGvDisC8_-K`anwjfzCC`v2pd@|r1UVXpgpTALm=u(dG&IMoEIG2YvLxHd=I)A} zyK$6w_uKznL3w)z&zXRm0d4|r2Dk~h8Q>=1W`LW3n*nYDZU(psxEbIk;AUWGy1yx3 zEOH?hnV2myF_(XHA@KQ=2Vjv+ri)x07y0DDC2_>hpDX|i)HW%&MVXjCIRF;Y%x!He z^UuV}v5HL01_R*dr#CO9&q=?VjD5a#KH(?1CEN;ma?glu^V}rw1%M1Tq}fUIXO{w^ zq5VwkeeabZWMXf-0(2JMM%4AS)rA098Cso2gO!VIX8;_ZLu5%`YiDQ>02+!AB5+oi zmRfcJKxzLZXeQ>`?37y=8WH=@?;SVAtHXLUJ#31bE^gBRAZP)YCY!uLy7nhy6GfY8 zHz-xXh9VUDuo*pQ`ulzK8v#kQ#(AvUS;~=TyO^A?{fIbYSjc4Tvm_K)3coIvhfT55 z|94l2-wGPqH_kyn3ve|Y`n+NKhQOG*v=#K?N4ceZE+aqwwX&6wEg%&D<>#k#fgoU}>q6xO!q<22 z|22j7(7IUC(R?`J%S%m!GzchsP;i5OeR*vQ@9itD8i4Zl4t{)i`_UEDR-1zhUtSUbTR0S)st>9XSv5wrJB-dYSAa_hUpGF6e}~T7!SPW8aHt!dieh^H znD5}Ts-LK`N2uy!1fW=^YSXov(bRMq6xPiq#V&QK1Q!P&a^Qi2__6~Eu7%fi!|5Gy z4b|hbfDH!5VrL3(3S7HPV!(uR3y+$#`~D$ffSxBxFbsfGXNqu6;nkLQ?-W1*H?aNN zHzsoiDjm`#oJH_zG}fr$v7oW*0P4F`9e@C0BSl4db^fMH1}KLHKy`rRmXGpm{M<8ybmnkM+q;-< zP*0lNmYB8%b$+Zi)lmR}M{w_8Q5PEOMf8F+prKRns?wUNakV6Ia=F*SsvQ9BdJ&ca zt|=2}Ta#Y@nQBMS_Cj+3qQQ&}U|wrz=eKo$0-dgzQ05phpOeC?{O-#F!`uaOMsePI z1K?k2N%PSgpS;gy2pIsKUO%m5jj{$~Q|&HJ=jX(qq+TmbtwF zu=z3gb|%sur2>7^f;JcGib;wKr1S#`R$!;=xuSiHyMpHek@E$09d6s@5|q;ssv_qc zV|O}B`7;!FO-4m{RaH&h)H3XRzBdSDHA-KPB>^bCJ9oOo*5N9 z??XU6R87TH-TkXdUy1B_mJ?S8K>3UaxEbIk;AViEfSUns0&WJl3Ah>HCg5g(n}C}E aZu$>RyI~EdN8eNc0000u#FbtQ%rGM6II*Ep$T&^yim!Dwi&A0r9xAz{l?4fki}dbg!8!tkYw z`bkh#38e6arCWh;*k`00qr+OI*!?b1AUfWlelQPk`JG=Cg*X$3(l-1-Jgk*XpKpkP zqzX@)1s$q+pow4bUAC?r8g){{AvOpykxj=^k2s>iu&i4;r#Jup-F*N&e7yI`^JsQh z8?pRlBKKz5>+jAVt``w>d-{YDt1lU#A|^C?QsZH*&r{SX{pF`f6s!EkE+orRWp;=N z<$VV9bjbxHUcF7_>AW4TkT;Go{F)P#1DS(pO+cm8zC}b}dmymO>|B}f>8STb)Vup3 z8{36Y!Abz7r0FKZIE(2EN~DU7Pu!4va>HSPfn`^mnoYZj$7Il3A~xUCsJ#eoQ(4>a zq6&X+b6-Y+Ux^4q zE<5KHSOjnf$4YXH^|3UEU|cL#q%1~1Znl6ee~9s{m-4AaAON3Ses@GLa3}J5Vzs+Z zf|Fg0N!OtM*d8}X)dD{gBrUGF+GUnyd}0EFVQV_Y}&Y!ZKiwHB7kT zcPYnFyw}npvLkA+erCmh>rmC+nn6(=^jl}%yhT$$Y5%-;ck`>{Yr2|G66n2}a0QW( z0%o0T?b48%E-zzO#*vhjp^A-XlA?KWs_c_7s)VXn$bimKn+A_oh3~?3IhqN~aZzvW ztIq7S9YzCf#*N)*&-Co8-nw?K#|UKpz&-qOgUrF+;dkR&Vt)I73*M45=`J9IuAfE= z9H8&3$H~QS#O90Kkx*<8U2k`EG3{+oW63P%K5;jf$lsGeH+^0c!s|4O| zKQBu)(BskH!Ya*ZK}IcA8=K#+%ePRH&<$=>Vl{G-UWeN;;VC1SmDLsh3B28zI<2MX zajNRN#0+9Z0~N7uSrT^%)L;EaezRohV(cA6&8L4_ZI2G7y7=Z2R)dau+1dl7t4C~i z$a`fF9|RL2PE_U8ZDlsz1xVeHI)=FG?z}2^0N{p)pbZlImg;QB-fGZJfd?C<1&Qy% z%QuvqqOHsmDzRR-VU#uMHxVT=Ia-f)+7EE)Aw>+CN5JkWiuNhwlSYL0JsmU)x`2xK zHdXf)t#FRriiI}9CBkJaK0^+ug${}^j_3q1;l}~wJOlwgp+U<;*zxI67ap-R?19PA z4D=ux%UJ9!eau&XQ3_;H+CM>OP-K2WAo=OmAjb~bP_Ttl;bimrT0e%rp^itMyluyC z#0|=_k5(m7-0|)%h)L2-^!3KwhVdKip`v$29(a>LsvTd(0jXdhwyuWkpa|eBB;aS* zE!>|`#at!+(Vb*I@-4KPh4k0e2-X}zW4KT5vJZHs^f85d} z1#h7}V>2wz{VhO*qmAOSLeaxcV8VuA1Q1(qSQR4304JTCil z2w+MyThprd?yNDx(0HGpJP|hJM)+Vv@Nbo*6+G;~_%IVu=HC<+^x223(?ipfb?&xc znSfcwH(mQvnU>>jmSnwyPructL2-4C&=hgOjlJW87NAYNTfrE7N?*IwwGqtPfHjRK zt!)jgjB+7Iae{^uG*Z3Uc+f;#EgjKO=*bZ5Dg?aO&Dlsrd#GkbSMHIHIN_zAm__j$ zjfIm^VBCgqAw%>hKqUMB0)C;>X+ZTmd;&t95&Cn2-TIlaPy&Yr18xjSoLuZC@aiwe zcHf%gzUB&$wq5O_^zAt5QLL1@A*TcRo7Jed-D zydhv@JHE(K(Grx>g@2hE+RsTBU+f`r!->}(mhad2*+HsOm$uu%%X{LUY3OH`b>OCq zJRb&T=+y^ZHKw~qOV7Rl#z}4KoUqh?udI_QyK7#G%4P0X7fkguMvhNU7q?WZlP;Nx zILtNM_BXHD?T0-t`MOHS+RV^jfv?N(3q8MUWLxN!8W%`}ZI*M!>WG|+e4e6LFD4`` z{R$70N}(4l*$zv|GF#xa4dFC~CYDsI=+!4W{}R8+cTHnV-KUhG75ac1nG z9(c4f@6$(E_nUY1hgci_6XZ<6-;nD-+1d&7IwS*gMsS^(x8K++G^!gKnRr zsv(q8DXn;O)Vk6hxim&z;$HiL#f7gX@uD?X#>``TdIuhXX6*6Aho={dx?3WR)5uf2 z`vVF&vOLSj_M}n&q$o2+On5iGpZ8q6RiD20FsDT^E>^v-hu)95-kf{(BPO|e)N)RI zO5V+&sXBkOseIw_Zp?Koec4ao{)0a65Y2E`7x%UEed+x5U+>q=yyoO2Ns%J-gN%~q zUK{Vpx$hMNdh+F~QEioordgS2W)Ddhd%UJ2+greaKbvcA`8+-jUcn|lbVrtd+{}*4 zIM9btFhCs*M{&CESR-fPort8-U5vFpSw*HNOS{sltsJ#cU0pjeakEoGfFgMHU-z-4 zOEzuFa?=L+4<+i-m%_D6HQSl{^b)9(o(o=Q4*W;KOu1>0g0s7-?sVblxi^2E(jilR zx=#@+;$#MCbJ#|K@=A@n{w2;oDTH-&2jzUN$sYV1S0J9kr3dT4rP2#G&1kVogn=Ef zoRsdDG)M#}rb~_`pHDw!#t;LF3$o*WU!*sWpn|)L70J;}wUjCox5%tDiCb~aAKLfA zSD>?%ri|@B0lpSRd-(ghwbOUPb1wmdI+K(9FSpSQiKdxztTG1g|hley$$J&no zO&S4Q<~GVy7qLUpKuz}^=z3(l?7kkdB!j*LpZM*sW~{9U=y6Zz_JZ`^FjN zT26k0)Q~ZNXQ8HZIHcF(`91IgqTaiZy#Lt9LEh==$!+A`lcSewgw%9AKcqR}R{R!U z4jj7C>3fN~y1R4<@lt7Pz2259qR;;^zD*_F3fi3rJ%&_qgRx{s{Fi}mlBST(<0?3?bj`X=Bw zH5-!7V-lmF3og?;J*f)Y2ucbj9y&2b;DvBN`Um1dkkoq(fit$?_^GSxtioa&)kL0s z55m?C8a~xJGw;A=evX(}MtRC(;z(FbDy-u%|Y_upgJr(W{Tr%aU3 ztKFa~iN`k$8F~bdjZd)O)3T?FZST&u*U81DJ1p?^IwE{1%cCl*l~nB!4-pl8VQ!uG z!p=QLRbdu-?FyvD=my@qss$S@rr84Gkhf;e*={?VF^65MeT`3Mjwbe>xw~p?lT>bs zrd8~^cJ1`#M4{Oj6AOEjIjKp*F$7mt6AUYV@y-k@>-fhQGt)_rIC)}VhtC;9=l5@G zrId;s8Me`g2ffM6fgjP;z7v6q@U7?!JwnIyiH36A2zv%fCJwk?(r0FoKjg<$aO0M{ z*c45+WLe`vT-N?fx75sUav6q9#di-Mfym=R*~|9$7mvrx_uMNe0>kFj--T~$KI@y> zA5iZo76~3{>!)@9Y!7yu?$t@oI~#1&wno;SdwP3Jv1nH3U5i^-+dQL}2lQSWh!9_D{V`6t!U=F!(9nUv`<9Wac3qejA>2oyqdOxDU6&P+sr#@I@5MUc&$Vp~w`mX^NA)R|?+_Y$4TRLzb_3Z75k{{?#S(OIZm* q^Ne~iy`vV#p5XuAKk9$`_HW=vPgg2un3<*iS6Z5$Fex+givJ&_nlLT^ literal 0 HcmV?d00001 diff --git a/public/pwa-192x192.png b/public/pwa-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..20676e53510d6f945cc992d212234f6b02cbb2a3 GIT binary patch literal 2062 zcmY+FdpOe#8^?cJ!!}_RlJR20P*R#w*_h_A*l6a=qEZeitQ_jaFq(Q$a;oI;M93kh z(UY1(M2QX~8IncL$DED5oOHu#L?-sqq)`R~^S2&?7f>4TfT5Q#G!L-Y4|4Lt@ zQtSYv+4Wz!EdxgP{_@#$9v*3R-oC&BES(tuuw(4+f;cy+egGihOCl0zq5Nt0$uxoL z&ZGU>W#OXQfoJxTBfGVf$Bqy8bSCnCp&d=xwS75+7;z~@toNt?T_*OZr7$SkQIh&H zG@}Uhv6e$X`QFPALmGR1Ug}M}F z=$)`F=|&b`waq}5?H~SBENV%TDV88dObsw8bV^BvQ99)t=%3d-cOkf`Kldp(b#=4P zqrMe5cH{KdaD6M@9u{sz$Bc6?`5?$X3bfmLLUk3mwj7!xKpVF}Ol?N;XA_!3ZkWqz zlF++a1slgb@2MLo!Ig{HAP)=xjmVoSZSJ(u;s^*hjrX8AEm^=-E{?s2c-J9UABMQ9 z(>du1BH=4Oh!+kniZ$gw@S%I_|HX}VSTb#@KQ!KL8$>5POAAzGJ;czyen6VS)Ru@^ z3rd7WO`1ao;~@B<(~n9wt+q?3fYV4OtAt4s)L%5nbX97wh#Hn)cj_OjX_buKh*HfC zluJH4>F)3RD{M*`>}Lb3g&#FJpA@rF8M84f%oy)WnyXY#kEP3FhwS|qCnZwr`~(QT zw5g|##XO+}>~R+euESSkb^r(+>HN8_{oNhn-7BwZ`PQ>4no7Vz!#%C%%bSSHdnKFb zG=G$-?w0d%M8@oGZ5C!P@%g-DLt80Uns)sT!$OeedRXQfIFK4sF04xKPfz#Gt6A%j zpa-UiN*ga)UgIwqd(Er#zX>X&aV&aM%zx|k8_cWxK1_WwmL6qNYHB&Om2?l z4Z;3_0zy?Do4_ERfbcVE#YBmKV1{1fZK|HjgaE8B*<6Iylb*{oiuqD|eS7C4Wc~oZ z(1H9VTOZ>45T{Olw1^35f43FZD@r+ia(Ivskd4kGWlIGhAwh}BQ`MW(cRVQ6g6W&Z zz8@Ll(OkuNSei&L`nzK8HsuJB9rv4;jHyU5-}tsN&%uq$TiC?b{?O17+UePnQ(KKL zqcEZU%hVf}x!v&$|NCc3uArF1p3GR_r96{_Bt@d`vbk(2%U+}i-tvg3a-7qp8oN-9 zSEjyI=yr>_Fx2{E&n&iji6E}61zig9M84|O2bn}r%o4rq-(XQgbZ{~l;~pIhXqJ>( zpVo$E>WIQKK7DhXJtm}5c%z04620Ik$`EM4k+bIf6JLXv;l*bnk0N%Ia~K2ld*L9a zCIA;O!;-(=5sP#=(qWDy7u@@{8r3vwbN!KR4UA|JJu)1IH+mN`PTnZq!mG^*ifGt=*Q82!jNjH3r<|s46>B@kRe9+> zVd>75?@<+Z&8tcFp@F!zUw<-EAwhqB#HtwQKXEV@?_7n`vFCS}pM=}zy1#v`#Cq*3elG!O zkuE+(WtHG7opY`w-QpP~^VW59-=<<0pJv<&mO?&2#kp)Q__&XrkXu zE?4Sxrya#7Y$9`3lbb_$=cX@hP1U&Py^PB;s{Bx;K4YuFUl4)VK#EuhQUxSR?>+e*zxV!zw{v&Sy}NhLxw|tvcV-hT%+4R+5aR#<;D8aqzzP6h z`z{PX!S|u%ne69%khU>+kP@C z$jZzbQ2gqa|KL(z(Yt!#{WUa+;1CD^@W1~}@a-+DYXBgiV`QLf6Z&i3X)tQGmP7qg z#va6O-aqoKD?#`;HO*)Tt^ zyW+zcZ1#m!mnkhfu7Jou}<|r;ui0d$brF#TQjE%Y*<-ZRs8b?l=BoCDoqfu{$ObdEmF<2u=jpJtPp# zN`@irX$z2wvdoQPMQ9^aC?dIFIdx&^=d< zk`&mNMqw+y!nz_PL3W-~ZXeU&Bv{}gu%Q@ngoe%^2BTXRq~{Q365xH=0FD(x8r6u6 zruGjtK|8}nrRy2(-oW05!TRpE;{xD48(Vi=%oml^*Qg@bZ?*!t*LEU5AkZ+z>0315 z^vD`KgoPA#z9XqZm7AmJgyrRV)(D$savr%(!JTB2*xY>ID4ZR%(-fwF-z&V9eO2E6 zG7$Xpg`6_a>pFA{ z0Fh%Cd_PbZ{84`RzKlZh)4Hy)5koydzNVABvcVpbe2gl5_jvQ%yz&B{YLO$k!*q-l z@K^&I@6eI+1%X&QBd8QF?C6u*$m}R2^W&qg&71c@W}agRf>I4m7pgjY2F(8|QB}ZV zkQSVZGWLd>6_7=J&(S<)1RyR)_yq#hcE87ULif|-tySKl>b>49E^QK)W`bBc`Hj0q zxkD=l(HD#w_Zb@d$5Ea#AWikpCgXpv@sSF!eJ2HX!$JbkB2@>1R@ZQ5KN-;m7S?1R1Bvp5$1+MqObs8)%p&ockYmP9_|x>MR7Z#K+s(YYx#m5t${70zhTH`Q;Y zRdR2+GL;R)=EYl{bLj0{urZt!ANcZ$04h(9n0)Ff5XwC2|0HzGKXll%1|da>_@(v0~2!i_riDDo^}{b%mu3&0H(a&0f3kpm69E&_S51@8t^&_=;s@+ zD;F%wvJ{oYCo?}CrVctbISOWJ!^#YS?TeU7vby@4OKoa)F5%V)?59Hd7;LIKP%HD? z&#ti1nad|GZmKJCSH4{7uoAKFq7vVf)IcM!qhNnSOvX*kGulDH;8BgQR1%jH-kT@- zoyruq;t3F$yyquiudeA{2&+-%UeI2ddRTgU@AgZ+qM)FjQ*51IaHKLbPn%{Zfp8OQ z8G&jMc!TSr<9pB2tP?>-z^&U)6ky*+^H+EEOclk8RT?thTnjxzaV1m)gB|oA3Q~bK z`FWldV!^%v35_3*4ApBUo6i<%xEuFrLtFKccii_q+uZ|LONP3|H`Zj_zpYr` z&EKq_RqN4H)dR{GDjS<`ZWhX(*A2h(R$=OzV(TSs!oyLPkcYx{vurziXTP}Qjc%Vm zc4WPmYFNi^)?C%&-JtTv$MFV$k{89b<#FH{kZ+FCd}CSN3K%{-??2ZZuTgQl)yW%D zo<_V^yBwAV?=yie!Z*M6U8hgQjlD9pg68#4UA&0Xw|kiycB7xosJ8eD{G3^Mxut9SFL^{G@=ti3WCGT2RaQ zXy!I`I7K14c~F*QQV1D$6+vZoX;eOiOSSL_h+qu?-1cC(61sU&z5N=+_+&zh5)#FW zrLoqvw(wngnt}W2!arKzo=L!!>HhM&s`w~?Ys015+&W(p#xsYD0-HF%G*;nVa2SE# zq0oO@R^owTil-}}3=*M7n58FZ>e}M?s2=VYR%zJ z!!`F6pef8&h@+!SG3CLvOq6Bf4dzO`2>%?#52=+*Q8{v=9d>-bx(i4NG04+VR+`zE zUq(ops7KzCpfVY*_|8oqUp52*>a~@#-(Frc=Q_6&QUkl^vHHpi*eFZ_ou(-z`;}&> zVn=qDcM~1)CM@;DOVA}pAq=F%42E`P4SK4IH-K4ce8%*u$B)F^m zO@eD|@s0>}t&k0=wV=0uHX=2f$t?=(UM5nDnB4nKcHb#whQPsMiV&Plrg>w`1L&v7 ziD3Pp<477yPNawkt!n@qF2@AoOX-wkkO1Wosp-ry(S6bb$l*oTeU2d_^&t~NMpZT@ z^F5kbt@o6-F!?tqFA%su1p0BOM3zdAZksJ?>t8nmHr_>kcUgkUu-!lSfL(Fjh0=BC zn~rTeKp#VK%nPNip8OOuMSw1IfVE#-bR*gODS>CG`JLM~Qx*p+AroGr8}unD<{j*3 zZ=)kZ#+G~^rIJB#L`$g{Aw*(A+0fbgz+-za5S^_HJa#0Z(b;(5@ze&a%U_3`$8a#K zlGPRnIM}+RajGZ*4wr~nutuLI%Vg(4=5m2gKBh*ZF}J8?<8I^deJox&Jr17>rsDe~Yb2X|v_fO(Ql9?2`Ana*HQD;j@#* zx*&@O>s^=IYULF@f_UfjJzFTu(KZ%U84Fm>E4x=@9G=S5=uV&WHa&Mc;VPz7*4JfRcQu=VgAP5p z%jY}_Tq1+0rm)ufwibi$L-i;$@i1OOHA;q&+GPEz!`l2@-`9-k0GZc%Pd|QC z;oiGnSp%__c$f$(&6lTWeA_l9jyPDwKfYLJ9?e}V26|EMfKsFYSnHh#WV)`rJni>g zTD9jOn}E(`7&ylO(`j79qvp{^NIeD?XTcLFl|V%igo-_HO;YZ;1HzU0Zw?acIFXT9 zDl-u~aR}e0L~PEbjc}|DJXNb}VRw^_+UorqXT!!{pAuy~TwbS1cW@B(Mft=pys7c0NSG-*27J|7}}zb6N?wNsaH5vd5|N(=2x=K%$z zBSwaI`gp#z>Q-UcX@B<`U-^-}f*f8aJvpoaG|(3r3mbXO41qA&vyW8Mls7&IUcjg0 z*r$#uw&a)g(_du*5-v6#{5go-z)$3-I@G3;0JDu>jVS^fuL4*xd_32kj09dolmGdB zbrt7dFi~%D*&ixu;#ObXrz#;O7DoI|pT`JLx5e`*&k<{wHQdg>_Swa_nL=h)Bx+gN ze6N~-SA(Yno-X7b7i$>negB$qPo;rbLw|J+CMHVy=ug>$5TLEt_+HoHq6CmF=R@In z(pDO~1{8qyq8|{F7}F->;0E}yZ94+ZocG}Q&S_Hs3vC+YybWzIpu1jyJaH6+WI4m zH!X!J^t@?ww*E2?82Gx715RFF&_y8I$hyq*#;o)c@zms2a~Dg`flNv~RhOa6K-yk< zCk;auP^@p*1)h1HjY@-HqEndqhf2{Y3|G@VuXx(@6cXfJYGN`ig+B@k^?h6L_jhDQ z3@1n}6Nv9pGA|;$tVKsc`L-&%H{{Xh(9R3!4mleHqiXIr~At;x03LMOSdXxIl&{$X5TbQd;uC48|8{qXpuft#$Cu(Z3Ek?DI@G1H|QBIW~SrI`(@E`rpxIc8^j zr@7{Naj7Z4mAe;Y`bq~Exix6puNJ`7&Cq8bxBp~3bBUM0}IciRW?JWT5?-M@tYnE4NOW~$slTkF@?5xI!GkI9c? zkKB%{y^o6CQL^bz1WxPF+tQ`X7=_WwX+QbFF=AekEbvgR=SnckVP%78%1ieX&)|mN z9$=qk*MwTQ`rLEeWjNj*ue9Rt`H0ItM>-y1re`%94bZ$JB{vvzcW z^<_g48x-yB{2d-z(Sl&?_wNR>ee;1w#wBdpRL=}PN$|6jcA>{4tsb0(SpD>ArbKbWq+B?4zt4)C! zJ|8|#aIdz|hYl;&zDXZtQ#ynm7Y#mJ$_7^B`qUiOz;kGtx4P9eS0naF@`=Cj9TeUQ zLCSwKU;UWY(%k4IgV7g;8uO-u~3=i3h^~LD-Gc^Y z2W;R%6r_xLq~UUL-0b&M19ODFH&t0hT~DWZ8qs(1 z8BO~&n$v>D$d+Dkt362Ud@-Jmd@-hIp+Y@G&`JN3Sfq)r{C1FFcqg>EU2w$A)BbP% z$;gX*#PdLH$?_Qovv3`5dDRge^PeKJDk-UMlYH&+a(t%<8E=s*#`rX{Os~*HVwrnx zAIlv+Xwx23C8>^BKbtb)1_G;l_R5P{uy2b5ryBx{D%_ZbZOJnJA;Ys(NUg_{QlpV( z)66%qB`E(c*IN~mk;zIUZfS+k%jSsnPC@i?A zv~)8jYAw9N0xNzBr;q)t71$meE`EAEv4!%A^D`wS#`|@0&#YUmr_#0(B{0ZCuv+Nk z)9iBj}kj)EN;UbrdYRTt3CJ@%k>#khMa5U}G1&j$)9{*?ulD-G4AZzb$U>|YhTRM=FL zwfR13>gg=ca6dBY`r-Djj3$7gGL^f52x!0qm}_)g$mH8-boS%hrKkWK=j-@Z8hOBO zHBQP)t-sOlfhg zB3G>@c|@%uSG`S4ts_^hB3P{=SFIvg^TjW%BUkjsF7(GP^~Wyq!!Pv4 zFZ9PQzDiEWTu7}WSoFs)T000(rQchCf}2kgnqM5 zf*xk!(8Ea{+!Oh=N_->0m#>l^jSzjZ4qpP`dG0o>{=_~Wt-JIvTtU*20M{J>P(`8< za0}1x?Bv7_AcJ?sZ;McX6v3sS+g^hWTSuyT{vk!7(djPBnsWpQkrh2 zD+3G4%z4=_Af)HqlG{};mvVQ5_TG#(>C*>&g95@w`y@ku5w@=gAHT_8(3cN;*Po!M$7vcO zLjP3133_A925aCrJ=M3t^n4Dkd?cscaB?qQ^eX7icE7c&9PrSP@wu_;C2upRMgDurQ% zsgS$fLJZYNDM-KoC&lau1eP%Zhjue<^tv9a>i|!ad0mirZq|XyR%qU{#`t~KkhBw^ zV!h#+jjXmN?JZ<5JK3?w(zLr`=TIjrOB}1i*@`nG#7k>cdSHFEafEUl*lD|;>lqd3 zw2E{gHa9vy<%d0&tT~|WuG(Fl%X#fk&0Ap|?y-{1Pk!=J{sHueKY%-dd({8{002ov JPDHLkV1g;>oXh|K literal 0 HcmV?d00001 diff --git a/scss/mixins/_font.scss b/scss/mixins/_font.scss index eea7584d..d3a8479d 100644 --- a/scss/mixins/_font.scss +++ b/scss/mixins/_font.scss @@ -1,5 +1,3 @@ -$font-path: "fonts" !default; - @mixin load-font($name, $type, $weight, $style, $alias: "") { @if $alias == "" { $alias: $name; @@ -12,8 +10,8 @@ $font-path: "fonts" !default; src: local("#{$name} #{$type}"), local("#{$name}-#{$type}"), - url("#{$font-path}/#{$name}-#{$type}.woff2") format("woff2"), - url("#{$font-path}/#{$name}-#{$type}.woff") format("woff"), - url("#{$font-path}/#{$name}-#{$type}.ttf") format("truetype"); + url("@fonts/#{$name}-#{$type}.woff2") format("woff2"), + url("@fonts/#{$name}-#{$type}.woff") format("woff"), + url("@fonts/#{$name}-#{$type}.ttf") format("truetype"); } } diff --git a/scss/modules/font/_font.scss b/scss/modules/font/_font.scss index 4dcf2ed0..412eb0d5 100644 --- a/scss/modules/font/_font.scss +++ b/scss/modules/font/_font.scss @@ -1,5 +1,3 @@ -$font-path: "fonts"; - @if $use-included-font == 1 { @include load-font("Assistant", "Light", 300, normal); @include load-font("Assistant", "Bold", 700, normal); diff --git a/service-worker.js b/service-worker.js deleted file mode 100644 index 00a6c5c7..00000000 --- a/service-worker.js +++ /dev/null @@ -1,23 +0,0 @@ -self.addEventListener("install", function (event) { - var offlineRequest = new Request("offline.html"); - event.waitUntil( - fetch(offlineRequest).then(function (response) { - return caches.open("offline").then(function (cache) { - return cache.put(offlineRequest, response); - }); - }), - ); -}); - -self.addEventListener("fetch", function (event) { - var request = event.request; - if (request.method === "GET") { - event.respondWith( - fetch(request).catch(function () { - return caches.open("offline").then(function (cache) { - return cache.match("offline.html"); - }); - }), - ); - } -}); diff --git a/vite.config.js b/vite.config.js new file mode 100644 index 00000000..0737008f --- /dev/null +++ b/vite.config.js @@ -0,0 +1,55 @@ +import { resolve } from "path"; +import { defineConfig } from "vite"; +import { VitePWA } from "vite-plugin-pwa"; + +export default defineConfig({ + resolve: { + alias: { + "@fonts": resolve(__dirname, "assets/fonts"), + }, + }, + build: { + outDir: "build", + sourcemap: true, + rollupOptions: { + input: { + index: resolve(__dirname, "index.html"), + offline: resolve(__dirname, "offline.html"), + }, + }, + }, + plugins: [ + new VitePWA({ + workbox: { + globPatterns: ["**/*.{js,css,html,ico,png,svg,ttf,woff,woff2}"], + }, + manifest: { + name: "Meshviewer", + short_name: "Meshviewer", + description: + "Meshviewer is an online visualization app to represent nodes and links on a map for Freifunk open mesh network.", + theme_color: "#ffffff", + icons: [ + { + src: "pwa-64x64.png", + sizes: "64x64", + type: "image/png", + }, + { + src: "pwa-192x192.png", + sizes: "192x192", + type: "image/png", + }, + { + src: "pwa-512x512.png", + sizes: "512x512", + type: "image/png", + }, + ], + }, + devOptions: { + enabled: true, + }, + }), + ], +});