From b9252c864f074f38c47c17de0de6a63ae365eadb Mon Sep 17 00:00:00 2001
From: Xaver Maierhofer <xmaierhofer@1drop.de>
Date: Mon, 27 Mar 2017 21:34:02 +0200
Subject: [PATCH] [TASK] Add favicon generator (incl. app tiles) and logo

---
 assets/favicon/android-chrome-192x192.png | Bin 0 -> 3843 bytes
 assets/favicon/android-chrome-512x512.png | Bin 0 -> 9440 bytes
 assets/favicon/apple-touch-icon.png       | Bin 0 -> 2825 bytes
 assets/favicon/browserconfig.xml          |  12 ++
 assets/favicon/favicon-16x16.png          | Bin 0 -> 624 bytes
 assets/favicon/favicon-32x32.png          | Bin 0 -> 1025 bytes
 assets/favicon/favicon.ico                | Bin 0 -> 15086 bytes
 assets/favicon/manifest.json              |  18 +++
 assets/favicon/mstile-144x144.png         | Bin 0 -> 3016 bytes
 assets/favicon/mstile-150x150.png         | Bin 0 -> 2656 bytes
 assets/favicon/mstile-310x150.png         | Bin 0 -> 2689 bytes
 assets/favicon/mstile-310x310.png         | Bin 0 -> 4983 bytes
 assets/favicon/mstile-70x70.png           | Bin 0 -> 2185 bytes
 assets/favicon/safari-pinned-tab.svg      | 134 ++++++++++++++++++++
 assets/faviconData.json                   |   1 +
 assets/logo.svg                           |   7 +
 gulp/config.js                            |   1 +
 gulp/tasks/copy.js                        |   2 +
 gulp/tasks/favicon.js                     |  65 ++++++++++
 gulp/tasks/html.js                        |   2 +
 gulpfile.js                               |   4 +
 html/index.html                           |   3 +-
 package.json                              |   1 +
 scss/modules/_loader.scss                 |  16 +--
 yarn.lock                                 | 148 ++++++++++++++++++++--
 25 files changed, 395 insertions(+), 19 deletions(-)
 create mode 100644 assets/favicon/android-chrome-192x192.png
 create mode 100644 assets/favicon/android-chrome-512x512.png
 create mode 100644 assets/favicon/apple-touch-icon.png
 create mode 100644 assets/favicon/browserconfig.xml
 create mode 100644 assets/favicon/favicon-16x16.png
 create mode 100644 assets/favicon/favicon-32x32.png
 create mode 100644 assets/favicon/favicon.ico
 create mode 100644 assets/favicon/manifest.json
 create mode 100644 assets/favicon/mstile-144x144.png
 create mode 100644 assets/favicon/mstile-150x150.png
 create mode 100644 assets/favicon/mstile-310x150.png
 create mode 100644 assets/favicon/mstile-310x310.png
 create mode 100644 assets/favicon/mstile-70x70.png
 create mode 100644 assets/favicon/safari-pinned-tab.svg
 create mode 100644 assets/faviconData.json
 create mode 100644 assets/logo.svg
 create mode 100644 gulp/tasks/favicon.js

diff --git a/assets/favicon/android-chrome-192x192.png b/assets/favicon/android-chrome-192x192.png
new file mode 100644
index 0000000000000000000000000000000000000000..c8aed28b7a53c4ed039761a59a4024fdcfcb9927
GIT binary patch
literal 3843
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

literal 0
HcmV?d00001

diff --git a/assets/favicon/android-chrome-512x512.png b/assets/favicon/android-chrome-512x512.png
new file mode 100644
index 0000000000000000000000000000000000000000..c046f0b8159297368bfb3db79a73828aac88bffd
GIT binary patch
literal 9440
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
Y!z*#Yl21;iQ$f!4boFyt=akR{0QYB^QUCw|

literal 0
HcmV?d00001

diff --git a/assets/favicon/apple-touch-icon.png b/assets/favicon/apple-touch-icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..90b6db1b7aa63168e14ac96600517a3013b6e23f
GIT binary patch
literal 2825
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

literal 0
HcmV?d00001

diff --git a/assets/favicon/browserconfig.xml b/assets/favicon/browserconfig.xml
new file mode 100644
index 0000000..153c99b
--- /dev/null
+++ b/assets/favicon/browserconfig.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<browserconfig>
+    <msapplication>
+        <tile>
+            <square70x70logo src="./mstile-70x70.png"/>
+            <square150x150logo src="./mstile-150x150.png"/>
+            <square310x310logo src="./mstile-310x310.png"/>
+            <wide310x150logo src="./mstile-310x150.png"/>
+            <TileColor>#dc0067</TileColor>
+        </tile>
+    </msapplication>
+</browserconfig>
diff --git a/assets/favicon/favicon-16x16.png b/assets/favicon/favicon-16x16.png
new file mode 100644
index 0000000000000000000000000000000000000000..62c4991721c848828b3aff24fb7ee1a9e4763320
GIT binary patch
literal 624
zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4rT@h1`S>QU<L*TmUKs7M+SzC{oH>NSs54@
z7>k44ofy`glX=O&z_2mEC&bk!vv9p!I2<h%iCZrlexu8Jy=?e8>4^1m;VXn<*2{%|
zJFWHgl-36M@b$6?#c*BUPHTNTr}_DqHe6)AO!yY<kS`~+znswidP?idN$oGkwZC7`
z+#nzR^`!Qzbw&u4a^YXkXdUqO{c=Kkopi+YX1m??{-2KMyxwT^^_2Gey?S3yY2Tk_
zak<LzNT}EAjYd<iZQx~KV6ZL;@(X5ISGv-Kbqb@LfGAJ5*Bt9J%Q&=i4(!(D*wnT;
zxZX`#vA?ugaF*rO`SaBKh0KaJw(LmVbmZt{qfK*tsvmENVqjp{?CIhdB5}F4|F}?-
zgMdqV;!Oq}g-MGW7A2i~_}~7_QXlctJ4<}8m+Y5ns9&7;=G!Ujx0w|jszF~WUpa;Z
zJ;*vPlX)X+S=J#bMt+g=?}eAizeqGS^SK)H!0we%aglxe2^aQXtDaw<Y`RzS%i-=v
zVp-l-p3aW<alIn*EmT9Cd9&ipoc_W+r^C(I6*NAG#+tmHB*?BRWuX(Ekh%7$q4(5A
z#?6d}91id6OFJ^{$fDnuUiA0NKWE@RWB5R15(5K6cvVP5Nl;?BLP1e}T4qkFLP=#o
zszPQ#NiqXN#hk~VcsL5fG&D~6pFZRHG>Cy&nOiTJTUc4xd$I_#u!2j2$>9`c<;@`q
rr*B+2apcSqnIr6{8$1?x=`p+#7cBYYWIC0Bfq}u()z4*}Q$iB}RVxAe

literal 0
HcmV?d00001

diff --git a/assets/favicon/favicon-32x32.png b/assets/favicon/favicon-32x32.png
new file mode 100644
index 0000000000000000000000000000000000000000..a4907a616ae55408133fba77bbb67f06ad6f2f2a
GIT binary patch
literal 1025
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4rT@h2A3sW#~2tGSkfJR9T^xl_H+M9WMyDr
zU@Q)DcVbv~PUa;810zR(Pl&5eX5o6d@GaUQ>t(}1NDfBIg|C+jUnc`1*CPpjzo_x$
zxb}Lv@GmE{5Bm9lq>yC4oB&Bd1R-n)xn35e9$6g1{(Kaq{>usNFDJCWp40-7r?jBX
zkPH8MQtRtUEr?2}IUqrZV(qUdK@5oA54-h09n|@HQu|nx2SokXliH8wnBVEMf+*Nw
z5qP24X|J>2{i&8)v_tMr1c|@dY<MKh3u5w%qW_@`3=Cl<L4Lsu5gaRYc!mD`{w{K%
zR`qc&%lU&F826;i{_tAh)Sc!a$)7Bn>z>6;FES6>q2RpN>#*!~y9IX^%6h06O)cfp
zerJ)h>r2MVKkIY)U2TmdPJY&U_~%Ibb5o}D{oxD@jF&uJ978Nl9}T`<w%CD3_SKmH
zU-sah-opOs&geHPerC6=|NXa*JdkSs`iZ5@8No|)wO@KMACRuIlAZne)9a6)c5Ah4
zJ3r^a(zYKmwwq&(!!{Q52s6iso~Re@nZw4gMP0To^W^7HpCw@rcg?8wXinc;T+cAW
zfUWqpm%g6p+WEV6s%OO77zubN%#L7NaAWs=uA;W1bph*lFPHMtE0dkF?1J*sZ&sxS
zMxShUl%I>epghlg)r_DgENfWrR_^w^P;aem{Dw&?cf%zsO+{ATk3mw$nx^uf{<!4#
zRwnJY(~mq}(Y{-S=Wzc0m6uL`+PD9<>+A*7|2&Ah_+RtpvgcJc@0yb?XvQ4j-oAT{
zYpu|=ZIf5W6)-A9o68%|5%ZfjW&W*iN&l`*U$Tv9LG|a?<~K67{`>sn%Jc{6s#g}>
z(yNg;lJYQy$yh~7CHvEb)y3JWo|8WAeehtS$MLg!W?tfOo^3QiIo)adG{^1hUptFd
z3AwnbO>fosESR)v;;DO?n)CZ+{fsb5eX@Mn+oA-k6Wf$!L$17*5#GLfik{UJK87&K
z1E2EDu1#I0IXgHtYwJFTn`Smi^%}~S-`6dExAWUf_Q2FxxlLRb5B~BO+i020e_Mo`
z<@+>!kw1*A)&{?}pUFyRU|<NZ3W+EQN-S3>D9TUE%t=)!sVqoU$Sf#HW?-n8^Y{}F
zM`4(T#wq{PXFQ(<F)%B0>m_pwD+_y17GV}vaA`0(oWiWUIYi;~jVmXPoH-(Mg#C1b
e#{w@shF9W(C7+y3r!p`wFnGH9xvX<aXaWF*ThZ45

literal 0
HcmV?d00001

diff --git a/assets/favicon/favicon.ico b/assets/favicon/favicon.ico
new file mode 100644
index 0000000000000000000000000000000000000000..fc79f4e7f678499e464a7417d10912b1a1dea57c
GIT binary patch
literal 15086
zcmZQzU}RusFfaho3Jfb$85qnM7#I{3pnL%ahI^_E3<3fWeg+EzLz@``g9ZZwg8>5r
zLjnUtoB;$>K*T5>4S~@Rz!d^+g=d)~l-II2blqUYrDiaSM<}mVjZj`&5uv<xd4$s1
zwGql|Cr2o+bq4umFuE7nO%cj#JtLIYUX4&*`yUOzk5FFQ7NNYB6Iney*r0HWP+TJt
zp}1BqLU}D8E;}QX)|y2que}X*_tyxewI?H#*Y1u`Ui%U%_A5eZZ2>O*$l{>1r+4xz
z2c>B*LUD~=g!0;1&@g=zp}h7`g!0-%Y~dK8ymlefoglXtfcy$l2ldxks2nJ6q>$Z;
z&elKnMOy#F*B<@jU-s!A|I!TNqpKl?4|V%RsJ+PP;a7z6+FDS&Ae$4RycXm?kUCJ9
zqofn4pZ`WEuLbG#MAnDQ28BD+?cel|e>tmv{0oSl1rkSAM~Dql4-I#ad%lA6A|(BS
z!Ve?{O3${)=0qs31*rqc%|aFjv7z}FBoFdK7)T5o)<6D5NdNekYx>8(Y|%gQl~4cp
zmnBfX5H|I=#3Gc}N+G3XP`UtzC)6Dvw}aeSfvg{{9+d7C*NC9Wf#M6K2NeE+$a2VR
zP?`t3{rH!=`p3UiLfyUvB#x|(5F1<uDy@A6O*^$P^<Z&CI%$K6gJ@{^0t#Oc29=$l
z{HzMfvq*Uu<Ofh3W`gnuNFO@ZKmNr6n)cu8pZNMm|M-`1bT#<+AakMRHz>YA_ML_1
zK~S84!V%;?5Kcrk2U<RX(mqHJ2)~bjgaIhbL3|huV}r_qKu{h>HV4FprX5%P<6oYG
z@-Rq@5C)Z1P<L*E<};8zFbpaKL1iP%4WRM_qZ|Rp52Vh5`5mMm<X2ER01ESdw73AN
z1IHC8&mp@J#MeLmWtKiDEuHw91x-(&G!?6V;;RZs9;O}~=1OZpWge^y`40^{P<X=9
zJIE~{405|OOfNbO3Qur8ftUx1uP{)40;vPp2@Rv=NckOPCMbMBep3ah17T=ho~3`{
z>wj=Mg3u5)C|*Ei?6EJ>&~g$v%t7G=a<?tqEs(MYWPT<noq)`z1VhaQr5#Wjg2gGw
zAGbmI#kJs^mj3ZCtB~9c$_Jpb^c#xUk<Z5iZFhcv=2MV<P&m|r>RU?ON333uJrT-l
zLFo#Vr$P3E@Gtwe8;{}c1f?HHSp>=tAPh=F*P!w8-@fA}SP!(Ww*}<`ko_PU6yG2=
ztuZK0!R43I+Gn8fG}`kXlurJG)Bf=<7U=ftAOE5YuHR04{SQ*>mUDI{C@f&=K=}h&
z4}$8EEK<u~m^q}-pzs2vW&8FU2cTj5NB_jvEL>)Q%2jav49OQgAUA@`El~RdRR4kU
z2&@jrV-7C!$rT5eIUqMd?AOI*4yauOjvtuXBcG3h;{=r6AoT_)oq_6eP&;H5J<<{=
z4!~^&h?^dQ(g9BQ!`d1UwV--p71Zybw%=WSh<}>(kADHxgFU#+p|&_U-9p?1DsNnI
znGda}L2d)(lO@REtAG59A2co?{yOoMZX+g8yFuk7$X%c^6r;}pPV1n$4dhP<#>gk&
z`s3IaX^>i6VL%IUa2^D;{UPoGmHVJJs4mDIAPh=V;B*3NTc7y)-(=J4w=TsOFv=)e
zxQ!SyL1n2=;K8G&>t8|2P)J?`r2|lZW(zdWg32av+36E_@E^FJt+-Z>81reV2Gq`o
zP+kja3;YMU3lz5SdJGaDFh7CP)?JU(llPG7UQn9>-u|GaJF%G!s(--Y2<!VRtvv}!
z7oa)-+9!AqF7H8U3)HVX@l^%dmIAfMKy@$(9|F}O*vzM;7})Kg@fMidmDip{b_Y1!
zgW5xoG7+UO22uy@mxJ67!r=BkE!_($=b>#lPH@{7GDZMuH-hZH3JO<b`$6i#?YSeL
zkAwVzEC*tP+wG9C4v>Bj2DSBZwvj=4$iX0YfZPTh(*m_UL1`9*VQo;5y(s-^kUb!M
z_}mXt1I{~;z6Z$tAPnjY1cLNJ<vBrR1K6*MYeZn;AUR@jgz{QYUjSq-$b57R62}^5
z(7FoLuLqSwe#mtdvfa>h2<opx;u6yT1C959Fescr;RCV<lxINWX+-CDu)h)GTcAD>
zsGI?r3F?D^`~vEuVf5*s<vqylAPj2Dfc${7yoaVo(3mAGPC@3w*dTk5F{s^+HO!F1
z1;hsROQ2;P$UIPZut4(wsE-B;FOVG=V=MZ{zr;ez9Z=gJ)NTfqLzN&iabc*rpzsBm
z33D$fd_ex13>_PU$$`WP#sf6XgUq@Lif5SJ;CO+=Ge{0)Oa`Pz|M(Y>yFqRS)x)6v
zFsNM=3zEZ!!F^cRm=q{qAk}Xm`=Raug&WA;$@t6y$$|SPkn-^nsLTV2fiQ|a%4;)0
zV#pX&-hjp+pkomre}MYL7;PeCJs>u8j1c6um&o>k<Ukml-<8*b!XBjN5l9RlhK@~x
z(hf*HDBXklzhTh01c|)_l}*^p0OeO`J^;6au&F^71C=dE<FTM}4#U4_YJMT>$Hs=H
zNzhm@$gLm@N`D{>W4D3aiA^s#V({@#(0Cx0adXi4EmD2|l^8pq=?;{yKxG)n?H~*)
z(?Ihb7-2+=nYh%Tl@}OemJ!NpLE|f+@d{A*9l~V}x;Q9|!Fd)k*WnDRQ$TTvu8vYZ
z)DBSCfZPY7L1ms4Gz>xWETB37BnL{<C}W9~+D$F}&~bZ^`#|o5#WkqRhlzp8AJDiK
zczl{#_EO6na2kiqw}8SQ<W`VBAQ)0+gX$itrdw*c9cB(FZGzG$G%i444XVEiKxHZ@
zEyL7}(xV|T8UjN%1pb2o0|S`)kDLAoR=~h;pdQ3vU}&iS|NoCY1B0CX<NrV885rd4
z5B~qa528>0|9Boke?HE@z$gD0%x_@-`Tqbv1H*yFpZ^==85sUQs9@u(XJGjM!+^ma
zWbZ%52lXKOKl6vrVEXuvhftaaN;5#|k6`-o$NymZ;X?@hfB`}uV1Ss@#sfC@Kfj$k
zNZmhqdwvl8z}~(cL?5WPKg`a+@V}u>{sA)s!~c18_dhT)F#MORlmGDnLjU~1!0^AP
z{{Kf1-2kNz{{Iga|NsC0kB^Y>`UBGU|NsAgAoD=MGan)jaSuoUHy^Z4OM!ub!2x-l
zmcY<WPs7>e(7r<gw2u)Lp|n<*UjB_xUJF{&aWF!8?Y{`+wZFkw2|VTpN<LI^MuhTO
zg$U)fArZ=JJ<$CY0kP{xg!0;!2<5eQ5z1?O!ER7q+l$R|{S#k7edap76JNb_E_`Rf
zrUqFIY^U<tJ8=I&?1PUhL@2NQ9HG1x<bPg}K9Kt&l-Hh%PzJBJ0gHjeLD+QtD=z)x
zUpDI>|FTB^_?J_laTJg^E*zn}mKSRFiwNblMG?wtr$POOyoTT{*e+<CgVTc2+UsC9
zK*eC@>mUCjpnv?!LH*-j>Yy~<u?lFogX~@jG9z4Vy?TW5S};G@avL*9EJA7R9H^UC
zMkudMhsFmeE&Pa3TDv4dd95i-El9oo@h{HMFaY^q0wjhFL&Fgir=Ylf3^p4Px5)mN
zg4zR82eKCwA0W5vfw~Li-d>Q~VfH}7VYB{;uci9Ozl4C&g5JrmvLJboTcPO)6sI8b
zKyeSUAH)WwZ;-htX&V|(ptJ`{qoxr`YdN4|=@H6nuRzld$ebdOzo2Ol<bTk(Hw<4k
zIPft8nukGg3JSkDAa{dsgz{QY{tf}@2f3423{DS_^+{kq1X*uCX}I^p75(F1enR5`
zloqDwpZNM3B<2-$^iKpN{ea354p1HeVPfsWr4C$9D6O62Qgr^a{_!s$KTiSW2bg+L
z9Dv+lvg!46@9@K>AaPLs0Ob|E6JO`R;s+#7E(Y0WxbMSWkUgL{KsE>DN042hFaX)7
zfBef7{o`LQ>!0}A1r^UhR!<HaYR7J{{l~vx%;D)D|FQsNKh*9VD1SG!tOy{-PINs`
z|A4|D#Xq3%&^z(<9vDOOg8uO@{QAeg1c34^$nEH6k;Av1df(A#*ZVKfFaV`J(E6lM
zXnFMCcEX(_q^5CV-2pNeR91k}IM@x4bO_1^U~Dtx-osG+O`!A-D!1TeJhA5EQwJ^&
zAY~<Jer^*e96;p{D7-=G3zYuB`5aQefYpG?Uwmc~l7p6IykLJr>JCsD1~0!r`2ku6
z!0Q2Mc>yXv!D>NnB4iIXd02i2*F%u{5L9*^L^cmv4ujG+O4<gy7Zz5KdejsY7SJ|8
z6v%9l->}&W5`+2ywB8j|7l3F`9RRXF3M3E0ApOvK@Us5#FCaId<VSFPA?h1Y*$u*=
zFaeF1fXZi3-GoxVgUkhCs5?RS)k5n6P`v=EpWtm0sNWBQ%6zE(At1fT7^)Xk=Y#A7
z)gz!b00@KH7a;TC^&pBqNL>MPD`=Yq11P*Al-Irm)zvU{VE;qvKal@7<0@aFZ4OX4
z+QIZf%>&gZk6~iSG?F|h%s}A;s!Kucg@->#J*Z64KmJ7p6c!*pI)?fmlwPlZ(gaK%
zN&G)d44nqY0i+%S*$Z+jI4;oD5#oc&3vk#euLajhAoZX$906$)V)Z{r4G2Tip(#i`
zD7-;pq+)3M6BPcSI0v->K<OVAo>=3bR6Fpg2e}*C_5$T0P?`c^yy+jGdF04}+yDwg
zXd4I=1}JSxa?BjnL!A%+jUpi9=Kufy3;zG#Zu#-Qy5-mZ#sWY8sW;gEVgD~9@&EsU
z=Kud6KDYn>`GNia&yVc?e}4Y||Ig$9|9@cq|NpV!|NqA;{{Q2zssAHy$N2Z$e#yV*
z?QQ<Z|F`*P|KH~S|Nk@p|Nnmw*)9+pG)@5;mH;)#85uw%0|NuWULEOvk5E`65TU%*
zAwqerCh58vKxOcP2<5d4p#3BGe6!xEZ=n9DJi3_?%4>t6WiMz52BiOFgwk5M2*tJa
z5z1@JLF)BReihL>`E`!|i7zD}J`97^LD~`J5z1><MoX^Xftm%{e*>B;JP@J0wlG3@
zt*GAVZ=U+czBKEf_-Y9<53Co|R!~|CnvVggZ;O#x&I&cd2r91$Hcx5oCWoeLEe3}_
z9o0Meb-mHv58DGAckKYV(a&c;XuY}xNFU5y$TY~zAgk@(rfXkb1-U`*)K@l;J4`pc
z+GKF}Q>xy{ul=B~LDqxL);<574`eUM?I1Z&IDo=K@8nk>5L^HF7mRQPse@rqoH|!t
z0@(+0{~VB8yu%L9#pPz0K9Jj?;m{2V2h$C&eDqI#ooqezo)L%-#iB6v$TY~#2<5dP
zeV{l1#f2!ypJ4x<{3-&n8!8WKgMrk6<~ZQ#B|>?v1t?CT>0>3xEg=7b{0;Lj)DDo@
zpg7KoP+ofg<_1ulBc;PakT@vpL2(aagD_M-$bL<*Kb6*=1&PBjR9+KgH%ttjj!<3;
zvKN$oKp16j1G-vle301@%4<R4X#`?pQ$vavWXzL+LH;)bL+w`v2EK<33?Jkf82(OY
kVEB8Vf#Hul1H(^$28PFp3=FT!7#N;^1C0TL#z!F-067(uoB#j-

literal 0
HcmV?d00001

diff --git a/assets/favicon/manifest.json b/assets/favicon/manifest.json
new file mode 100644
index 0000000..e7e10e0
--- /dev/null
+++ b/assets/favicon/manifest.json
@@ -0,0 +1,18 @@
+{
+    "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",
+    "display": "standalone"
+}
diff --git a/assets/favicon/mstile-144x144.png b/assets/favicon/mstile-144x144.png
new file mode 100644
index 0000000000000000000000000000000000000000..4be7a27f4a4c890813442f097f81c2255dd1db2a
GIT binary patch
literal 3016
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

literal 0
HcmV?d00001

diff --git a/assets/favicon/mstile-150x150.png b/assets/favicon/mstile-150x150.png
new file mode 100644
index 0000000000000000000000000000000000000000..2ea0c5f70deb25f11ab96618c536004ada7b771c
GIT binary patch
literal 2656
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

literal 0
HcmV?d00001

diff --git a/assets/favicon/mstile-310x150.png b/assets/favicon/mstile-310x150.png
new file mode 100644
index 0000000000000000000000000000000000000000..b4bcb75b1ab56206e143675c1ce3e2e21554a688
GIT binary patch
literal 2689
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

literal 0
HcmV?d00001

diff --git a/assets/favicon/mstile-310x310.png b/assets/favicon/mstile-310x310.png
new file mode 100644
index 0000000000000000000000000000000000000000..b2a9f3917b3f7e438e3497a865cea0770aeaedb4
GIT binary patch
literal 4983
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

literal 0
HcmV?d00001

diff --git a/assets/favicon/mstile-70x70.png b/assets/favicon/mstile-70x70.png
new file mode 100644
index 0000000000000000000000000000000000000000..82ea8764334d79bc9b92fd380ff32034a5332049
GIT binary patch
literal 2185
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
B2R#4)

literal 0
HcmV?d00001

diff --git a/assets/favicon/safari-pinned-tab.svg b/assets/favicon/safari-pinned-tab.svg
new file mode 100644
index 0000000..a732bc7
--- /dev/null
+++ b/assets/favicon/safari-pinned-tab.svg
@@ -0,0 +1,134 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
+ "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
+ width="16.000000pt" height="16.000000pt" viewBox="0 0 16.000000 16.000000"
+ preserveAspectRatio="xMidYMid meet">
+<metadata>
+Created by potrace 1.11, written by Peter Selinger 2001-2013
+</metadata>
+<g transform="translate(0.000000,16.000000) scale(0.001600,-0.001600)"
+fill="#000000" stroke="none">
+<path d="M8658 8875 c-2 -2 -27 -6 -55 -10 -29 -3 -66 -10 -83 -15 -16 -5 -30
+-7 -30 -5 0 3 -12 0 -27 -6 -16 -6 -37 -12 -48 -15 -41 -7 -255 -105 -255
+-116 0 -5 -5 -8 -11 -8 -22 0 -145 -96 -225 -175 -153 -151 -286 -382 -319
+-554 -2 -9 -7 -34 -13 -56 -5 -22 -10 -47 -10 -55 0 -8 -3 -31 -6 -50 -21
+-106 -5 -303 36 -460 20 -79 28 -100 72 -190 14 -30 26 -60 26 -66 0 -6 -43
+-51 -96 -100 -53 -49 -123 -114 -155 -144 -81 -76 -139 -129 -259 -240 -57
+-52 -115 -106 -130 -120 -15 -14 -68 -63 -119 -110 -51 -47 -114 -105 -141
+-130 -46 -44 -204 -190 -265 -245 -16 -16 -62 -58 -101 -94 -39 -36 -110 -102
+-158 -146 -48 -44 -119 -110 -158 -146 l-71 -66 -71 46 c-39 26 -107 64 -151
+85 -44 21 -88 42 -97 47 -10 5 -22 9 -27 9 -5 0 -22 5 -38 12 -38 15 -38 15
+-118 33 -114 27 -119 27 -147 28 -16 0 -29 3 -29 6 -4 19 -3 704 1 710 3 4 32
+20 65 36 118 56 235 206 274 350 14 50 14 168 1 215 -5 19 -10 38 -10 43 0 16
+-54 114 -84 152 -57 74 -170 157 -239 176 -23 7 -49 15 -57 17 -8 3 -55 7
+-104 8 -78 2 -101 -2 -170 -27 -44 -16 -82 -32 -85 -37 -3 -4 -24 -19 -46 -34
+-119 -81 -204 -232 -210 -374 -9 -198 112 -406 288 -492 l67 -33 -2 -356 -3
+-356 -25 -4 c-58 -8 -78 -12 -143 -27 -69 -16 -258 -83 -267 -95 -3 -3 -29
+-17 -57 -30 -29 -14 -53 -28 -53 -32 0 -3 -10 -9 -21 -12 -17 -5 -33 5 -68 42
+-47 50 -305 321 -376 396 -38 40 -200 212 -415 438 -52 55 -112 118 -132 139
+-21 21 -38 41 -38 44 0 3 18 35 40 71 123 205 166 485 108 708 -6 22 -11 45
+-13 50 -25 109 -132 290 -229 387 -56 58 -124 118 -131 118 -2 0 -32 17 -66
+38 -64 38 -167 84 -203 89 -11 2 -25 8 -31 13 -7 5 -14 8 -17 5 -2 -3 -19 0
+-37 5 -34 10 -155 23 -201 23 -39 -1 -152 -12 -178 -18 -12 -3 -30 -7 -40 -9
+-56 -13 -78 -19 -87 -25 -5 -3 -12 -6 -15 -7 -52 -10 -182 -84 -271 -155 -85
+-67 -219 -225 -219 -258 0 -6 -4 -11 -8 -11 -9 0 -81 -162 -84 -190 0 -3 -4
+-15 -9 -27 -5 -13 -11 -44 -15 -70 -3 -27 -8 -51 -11 -56 -9 -16 -4 -236 7
+-277 6 -23 12 -52 14 -64 10 -90 95 -269 174 -368 66 -83 160 -169 223 -204
+19 -10 36 -22 39 -25 3 -4 33 -20 67 -37 142 -69 286 -100 439 -97 107 3 157
+10 236 35 l59 18 47 -47 c26 -27 108 -112 182 -191 165 -175 256 -271 335
+-354 33 -34 123 -129 200 -211 77 -81 163 -172 190 -200 28 -28 63 -66 79 -83
+l29 -31 -39 -58 c-21 -32 -36 -58 -34 -58 3 0 -5 -13 -16 -30 -47 -66 -120
+-267 -143 -390 -30 -162 -32 -383 -4 -510 14 -65 9 -85 -22 -103 -16 -9 -32
+-20 -35 -23 -3 -3 -27 -16 -55 -29 -27 -13 -57 -29 -65 -35 -8 -7 -46 -29 -85
+-50 -38 -21 -132 -73 -208 -116 -75 -44 -142 -79 -147 -79 -6 0 -10 -4 -10 -9
+0 -5 -9 -13 -21 -16 -21 -7 -256 -140 -276 -157 -7 -6 -13 -7 -13 -3 0 4 -7 2
+-15 -5 -8 -6 -29 -20 -47 -29 -18 -10 -76 -42 -129 -73 -52 -30 -102 -58 -110
+-62 -8 -4 -23 -12 -34 -19 -18 -11 -104 -60 -195 -110 -132 -73 -519 -292
+-536 -303 -18 -11 -24 -10 -40 4 -139 124 -315 211 -505 250 -99 21 -304 27
+-363 11 -17 -4 -44 -10 -61 -13 -60 -10 -118 -27 -146 -42 -16 -8 -29 -12 -29
+-9 0 7 -182 -88 -221 -117 -178 -126 -321 -316 -392 -518 -58 -167 -66 -232
+-57 -495 1 -26 36 -172 54 -221 12 -35 68 -153 101 -212 7 -13 21 -33 31 -45
+11 -12 31 -38 45 -57 124 -165 362 -318 570 -366 13 -3 42 -10 64 -15 22 -5
+112 -8 200 -8 153 1 258 14 302 37 11 6 23 9 26 6 3 -3 22 3 44 14 21 11 41
+20 46 21 26 3 191 100 245 144 32 26 149 144 176 177 28 35 101 151 119 190
+35 78 56 130 51 130 -2 0 0 9 6 21 6 11 20 64 30 117 27 138 25 309 -5 437
+-18 77 -19 73 18 92 20 10 107 58 194 107 170 96 247 140 351 198 37 21 78 44
+92 50 14 7 27 15 30 19 3 4 32 21 65 38 33 17 67 35 75 41 39 24 191 110 196
+110 2 0 21 10 42 23 34 22 121 70 202 113 19 11 37 22 38 27 2 4 7 7 12 7 4 0
+50 24 101 53 101 57 129 73 344 193 77 43 142 80 145 84 3 3 18 11 34 18 28
+13 31 11 55 -20 60 -80 274 -278 300 -278 6 0 11 -3 11 -7 0 -5 22 -20 49 -35
+l49 -28 -70 -162 c-38 -90 -75 -176 -83 -193 -7 -16 -21 -49 -30 -72 -10 -26
+-24 -43 -34 -43 -104 -3 -177 -17 -226 -43 -11 -6 -22 -11 -25 -12 -16 -1
+-102 -60 -141 -97 -104 -98 -152 -211 -151 -353 0 -55 6 -106 16 -132 8 -24
+13 -43 11 -43 -3 0 11 -30 31 -67 33 -63 173 -216 192 -211 4 1 21 -6 39 -15
+81 -43 212 -56 316 -32 62 14 130 37 137 46 3 3 20 14 38 23 32 16 109 88 142
+131 24 31 66 124 76 170 13 54 10 187 -6 247 -18 68 -54 150 -82 183 -9 11
+-28 34 -42 50 -14 17 -26 33 -26 36 0 5 70 172 90 214 8 17 30 70 35 85 1 3 8
+19 15 35 7 17 14 32 15 35 3 14 44 100 48 100 2 0 26 -6 53 -14 27 -8 65 -17
+84 -21 19 -3 49 -8 65 -11 43 -8 368 -13 380 -6 10 6 15 7 80 16 40 5 80 13
+80 16 0 1 9 3 20 5 23 4 43 10 65 17 8 3 44 16 80 28 124 43 264 125 394 229
+97 79 94 77 111 66 230 -156 583 -391 593 -393 6 -2 12 -8 12 -13 0 -5 6 -9
+14 -9 8 0 16 -3 18 -7 4 -11 428 -293 439 -293 5 0 9 -4 9 -10 0 -5 6 -10 14
+-10 8 0 16 -3 18 -7 2 -5 40 -33 85 -63 66 -44 81 -59 77 -75 -35 -142 -11
+-350 59 -524 31 -77 104 -201 119 -201 4 0 8 -6 8 -13 0 -22 119 -130 203
+-185 74 -48 218 -112 252 -112 9 0 24 -4 34 -9 38 -21 229 -31 337 -19 107 13
+311 91 364 140 10 10 23 18 28 18 13 0 152 138 187 185 17 22 36 46 43 53 6 7
+12 20 12 28 0 8 4 14 8 14 5 0 21 28 37 62 39 88 43 97 56 148 18 67 21 82 23
+113 0 15 3 27 6 27 14 0 -1 226 -21 305 -23 89 -94 258 -120 286 -8 8 -23 27
+-33 43 -24 38 -63 82 -106 120 -19 17 -44 41 -57 53 -13 12 -23 20 -23 17 0
+-3 -15 6 -32 19 -75 57 -242 126 -347 143 -99 17 -270 12 -356 -10 -11 -3 -40
+-10 -64 -16 -65 -16 -166 -66 -254 -127 l-77 -53 -110 75 c-61 41 -115 75
+-119 75 -5 0 -11 3 -13 8 -1 4 -57 43 -123 87 -66 43 -124 83 -130 87 -5 5
+-80 54 -165 110 -85 56 -157 105 -160 108 -3 3 -17 11 -32 19 -16 8 -28 18
+-28 23 0 4 -4 8 -9 8 -12 0 -105 61 -109 72 -2 4 -9 8 -16 8 -7 0 -21 8 -32
+18 -10 10 -53 39 -94 65 -42 26 -88 58 -103 70 l-27 22 24 70 c33 96 58 194
+65 256 1 4 22 5 49 3 228 -14 552 -32 603 -33 21 -1 29 -10 47 -54 27 -66 87
+-159 95 -150 4 3 7 1 7 -6 0 -7 10 -22 23 -32 285 -250 712 -132 823 226 40
+127 16 291 -59 410 -35 55 -91 115 -107 115 -5 0 -10 4 -10 9 0 13 -141 81
+-177 86 -15 2 -28 5 -28 6 0 1 -37 3 -83 4 -75 3 -143 -6 -182 -22 -8 -3 -24
+-8 -34 -10 -11 -2 -26 -9 -34 -15 -15 -13 -47 -32 -72 -44 -35 -17 -102 -103
+-156 -199 -12 -22 -9 -21 -179 -10 -60 4 -141 8 -180 10 -284 14 -321 17 -329
+26 -2 2 -7 27 -10 54 -3 28 -8 61 -11 75 -3 14 -8 39 -11 55 -17 95 -71 247
+-125 351 l-37 71 77 70 c42 39 90 83 106 98 17 15 60 55 96 89 36 33 112 104
+169 156 57 52 119 110 139 129 20 18 78 72 130 120 52 47 110 101 130 120 20
+18 76 70 125 115 99 91 121 112 267 247 57 53 118 109 134 124 17 15 77 70
+134 123 130 121 123 115 142 129 13 11 23 8 58 -17 22 -17 41 -27 41 -24 0 4
+7 1 15 -6 29 -24 165 -85 235 -105 138 -40 236 -53 380 -50 127 3 170 6 230
+21 14 3 32 7 40 8 8 1 40 11 70 21 30 11 57 20 60 21 111 31 304 153 415 262
+68 66 135 140 135 148 0 2 15 25 34 51 88 125 170 339 193 508 10 75 8 277 -3
+345 -35 202 -111 382 -232 545 -38 51 -163 180 -216 223 -118 95 -318 197
+-448 228 -116 28 -172 35 -290 38 -75 2 -138 2 -140 1z m252 -530 c6 -3 23 -9
+38 -11 34 -6 178 -77 215 -107 65 -51 167 -159 167 -177 0 -6 5 -10 10 -10 6
+0 10 -5 10 -11 0 -6 9 -23 20 -38 21 -31 66 -159 76 -217 4 -22 6 -68 6 -104
+-1 -215 -80 -384 -249 -530 -65 -57 -207 -123 -289 -135 -16 -2 -40 -7 -54
+-10 -53 -12 -246 -5 -271 11 -5 3 -18 7 -29 9 -43 8 -148 61 -202 102 -61 46
+-137 128 -159 172 -8 14 -16 28 -19 31 -20 20 -71 150 -85 216 -4 16 -8 68
+-11 117 -4 76 0 119 20 213 14 68 97 205 165 274 99 102 252 185 375 204 22 4
+42 8 44 11 7 6 210 -3 222 -10z m-6085 -700 c81 -23 147 -73 225 -171 45 -56
+79 -182 74 -273 -10 -173 -154 -338 -336 -385 -133 -34 -294 12 -397 114 -94
+92 -145 267 -117 400 11 49 61 150 90 181 72 77 173 134 259 145 23 4 43 8 45
+9 7 7 110 -6 157 -20z m2460 -451 c121 -44 166 -200 88 -303 -27 -35 -113 -80
+-148 -76 -123 12 -187 76 -191 192 -3 56 0 67 29 110 18 26 47 55 65 65 17 10
+32 16 32 13 0 -2 10 0 23 5 23 9 68 7 102 -6z m101 -1942 c206 -43 423 -197
+543 -387 37 -58 78 -138 87 -170 40 -135 46 -174 46 -270 0 -99 -16 -213 -34
+-248 -5 -10 -11 -27 -13 -39 -6 -28 -64 -145 -99 -198 -44 -66 -152 -170 -231
+-220 -37 -25 -71 -45 -74 -45 -3 0 -11 -3 -17 -7 -21 -14 -120 -50 -148 -55
+-16 -3 -41 -9 -55 -15 -45 -17 -258 -19 -346 -2 -44 8 -89 19 -100 23 -11 5
+-39 16 -63 25 -23 9 -60 27 -82 41 -22 14 -42 25 -45 25 -20 0 -173 152 -219
+218 -77 110 -128 239 -150 380 -33 206 11 406 127 576 46 69 177 201 207 211
+11 4 20 10 20 14 0 5 45 31 100 60 55 28 100 48 100 46 0 -3 10 0 23 7 70 38
+301 54 423 30z m2468 -770 c136 -67 150 -259 26 -337 -157 -99 -340 41 -291
+222 12 44 70 105 116 121 41 15 114 12 149 -6z m621 -1765 c103 -32 206 -108
+221 -164 3 -13 10 -23 14 -23 4 0 15 -28 25 -62 17 -59 22 -142 12 -198 -4
+-24 -7 -33 -33 -96 -15 -40 -79 -110 -124 -139 -102 -63 -217 -77 -324 -40
+-155 54 -255 188 -258 345 -3 221 165 392 382 387 30 0 69 -5 85 -10z m-7234
+-36 c66 -21 163 -78 209 -123 39 -38 85 -92 93 -108 4 -8 16 -29 26 -47 11
+-17 29 -62 41 -100 25 -79 26 -208 3 -282 -8 -25 -16 -50 -17 -56 -14 -52 -74
+-142 -132 -198 -26 -26 -51 -47 -55 -47 -4 0 -14 -6 -21 -13 -13 -13 -114 -59
+-157 -72 -57 -17 -181 -24 -239 -14 -87 15 -182 54 -228 92 -99 81 -163 175
+-203 298 -22 68 -29 180 -15 256 18 104 100 236 191 307 45 36 151 98 173 102
+3 0 12 3 20 7 70 29 215 28 311 -2z m3111 -269 c15 -6 39 -21 53 -34 133 -115
+49 -343 -126 -341 -136 2 -226 130 -182 260 34 100 154 154 255 115z"/>
+</g>
+</svg>
diff --git a/assets/faviconData.json b/assets/faviconData.json
new file mode 100644
index 0000000..d4b60d2
--- /dev/null
+++ b/assets/faviconData.json
@@ -0,0 +1 @@
+{"result":{"status":"success"},"favicon":{"package_url":"https://realfavicongenerator.net/files/03dc81277d21a8ed4bb836b4c05ada2ee75b9e3c/favicons.zip","files_urls":["https://realfavicongenerator.net/files/03dc81277d21a8ed4bb836b4c05ada2ee75b9e3c/package_files/android-chrome-192x192.png","https://realfavicongenerator.net/files/03dc81277d21a8ed4bb836b4c05ada2ee75b9e3c/package_files/android-chrome-512x512.png","https://realfavicongenerator.net/files/03dc81277d21a8ed4bb836b4c05ada2ee75b9e3c/package_files/apple-touch-icon.png","https://realfavicongenerator.net/files/03dc81277d21a8ed4bb836b4c05ada2ee75b9e3c/package_files/browserconfig.xml","https://realfavicongenerator.net/files/03dc81277d21a8ed4bb836b4c05ada2ee75b9e3c/package_files/favicon-16x16.png","https://realfavicongenerator.net/files/03dc81277d21a8ed4bb836b4c05ada2ee75b9e3c/package_files/favicon-32x32.png","https://realfavicongenerator.net/files/03dc81277d21a8ed4bb836b4c05ada2ee75b9e3c/package_files/favicon.ico","https://realfavicongenerator.net/files/03dc81277d21a8ed4bb836b4c05ada2ee75b9e3c/package_files/manifest.json","https://realfavicongenerator.net/files/03dc81277d21a8ed4bb836b4c05ada2ee75b9e3c/package_files/mstile-144x144.png","https://realfavicongenerator.net/files/03dc81277d21a8ed4bb836b4c05ada2ee75b9e3c/package_files/mstile-150x150.png","https://realfavicongenerator.net/files/03dc81277d21a8ed4bb836b4c05ada2ee75b9e3c/package_files/mstile-310x150.png","https://realfavicongenerator.net/files/03dc81277d21a8ed4bb836b4c05ada2ee75b9e3c/package_files/mstile-310x310.png","https://realfavicongenerator.net/files/03dc81277d21a8ed4bb836b4c05ada2ee75b9e3c/package_files/mstile-70x70.png","https://realfavicongenerator.net/files/03dc81277d21a8ed4bb836b4c05ada2ee75b9e3c/package_files/safari-pinned-tab.svg"],"html_code":"<link rel=\"apple-touch-icon\" sizes=\"180x180\" href=\"./apple-touch-icon.png\">\n<link rel=\"icon\" type=\"image/png\" href=\"./favicon-32x32.png\" sizes=\"32x32\">\n<link rel=\"icon\" type=\"image/png\" href=\"./favicon-16x16.png\" sizes=\"16x16\">\n<link rel=\"manifest\" href=\"./manifest.json\">\n<link rel=\"mask-icon\" href=\"./safari-pinned-tab.svg\" color=\"#dc0067\">\n<link rel=\"shortcut icon\" href=\"./favicon.ico\">\n<meta name=\"apple-mobile-web-app-title\" content=\"Meshviewer\">\n<meta name=\"application-name\" content=\"Meshviewer\">\n<meta name=\"msapplication-TileColor\" content=\"#dc0067\">\n<meta name=\"msapplication-TileImage\" content=\"./mstile-144x144.png\">\n<meta name=\"msapplication-config\" content=\"./browserconfig.xml\">\n<meta name=\"theme-color\" content=\"#dc0067\">","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/03dc81277d21a8ed4bb836b4c05ada2ee75b9e3c/favicon_preview.png","version":"0.14"}
diff --git a/assets/logo.svg b/assets/logo.svg
new file mode 100644
index 0000000..b8d9c32
--- /dev/null
+++ b/assets/logo.svg
@@ -0,0 +1,7 @@
+<svg xmlns="http://www.w3.org/2000/svg" data-name="Ebene 1" viewBox="0 0 125 97.5" width="125" height="97.5">
+  <title>
+    Meshviewer
+  </title>
+  <path d="m 41.426847,11.807177 a 11.89,11.89 0 1 0 -7.75,20.919993 12,12 0 0 0 4,-0.7 l 15.81,16.66 a 13.45,13.45 0 0 1 5.08,-4.82 l -15.25,-16.07 a 11.9,11.9 0 0 0 -1.89,-15.989993 z m -11.25,13.119993 a 5.41,5.41 0 1 1 3.5,1.29 5.35,5.35 0 0 1 -3.5,-1.29 z m 20.86,33.55 -28.39,16 c -0.24,-0.23 -0.49,-0.46 -0.75,-0.67 a 13.38,13.38 0 1 0 4.45,6.62 l 28.13,-15.85 a 14,14 0 0 1 -3.44,-6.1 z m -32.12,30.06 a 6.86,6.86 0 1 1 1.45,-5 6.85,6.85 0 0 1 -1.45,5 z M 119.4569,3.8671829 A 15.09,15.09 0 0 0 96.456847,22.64717 l -23.44,21.69 a 13.58,13.58 0 0 1 4.75,5.14 l 23.390033,-21.61 A 15.1,15.1 0 0 0 119.4569,3.8671829 Z m -3.3,17.0599871 a 8.62,8.62 0 1 1 2,-6.26 8.6,8.6 0 0 1 -2,6.31 z m -4.05,52.4 a 11.23,11.23 0 0 0 -14.690053,0.07 l -18.76,-12.53 a 13.56,13.56 0 0 1 -3.9,5.81 l 19.1,12.74 a 11.24,11.24 0 1 0 18.280053,-6.09 z m -3.72,11.62 a 4.74,4.74 0 0 1 -3.61,1.65 4.74,4.74 0 0 1 -3.59001,-7.82 4.74,4.74 0 0 1 3.61001,-1.65 4.67,4.67 0 0 1 3.06,1.14 4.75,4.75 0 0 1 0.53,6.68 z" fill="#ad2358"/>
+  <path fill="#f4c72f" d="m 101.52068,52.899268 a 6.2809967,6.2864323 0 0 0 -8.861411,0.190195 6.2109856,6.2163606 0 0 0 -1.310208,2.102151 L 82.787703,54.711122 A 17.502777,17.517924 0 0 0 67.185227,38.51455 v -8.939146 a 6.3810126,6.3865347 0 1 0 -3.820606,0 v 8.949156 a 17.552785,17.567976 0 0 0 -6.781076,32.753514 l -2.5204,5.896032 a 6.3810126,6.3865347 0 1 0 3.510557,1.521557 l 2.5204,-5.966104 A 17.512779,17.527935 0 0 0 82.637679,58.545045 l 8.491348,0.470482 A 6.2709951,6.276422 0 1 0 101.53068,52.899268 Z M 54.513216,85.602731 a 2.4403873,2.4424992 0 0 1 -2.000317,0 2.4103825,2.4124684 0 0 1 -1.230196,-1.161189 2.4403873,2.4424992 0 0 1 3.160502,-3.3234 2.4103825,2.4124684 0 0 1 1.230195,1.161188 2.4503888,2.4525094 0 0 1 -1.130179,3.323401 z M 63.384624,22.01767 a 2.4403873,2.4424992 0 0 1 1.860295,-0.85087 2.4103825,2.4124684 0 0 1 1.590252,0.590604 2.4403873,2.4424992 0 0 1 -1.590252,4.304404 2.4103825,2.4124684 0 0 1 -1.590252,-0.590604 2.4503888,2.4525094 0 0 1 -0.230037,-3.453534 z m 9.881568,40.86181 a 10.591681,10.600847 0 1 1 2.510398,-7.697876 10.571678,10.580826 0 0 1 -2.480393,7.697876 z m 25.654071,-3.753841 a 2.4403873,2.4424992 0 0 1 -4.200667,-1.831874 2.4103825,2.4124684 0 0 1 0.670107,-1.551588 2.4403873,2.4424992 0 0 1 4.200666,1.831875 2.4103825,2.4124684 0 0 1 -0.640101,1.551587 z"/>
+</svg>
diff --git a/gulp/config.js b/gulp/config.js
index 15413cb..f34cd8e 100644
--- a/gulp/config.js
+++ b/gulp/config.js
@@ -3,6 +3,7 @@ module.exports = function () {
 
   return {
     build: build,
+    faviconData: 'assets/faviconData.json',
     src: {
       sass: 'scss/**/*.scss',
       javascript: ['app.js', 'lib/**/*.js'],
diff --git a/gulp/tasks/copy.js b/gulp/tasks/copy.js
index ee2fb4c..b01325a 100644
--- a/gulp/tasks/copy.js
+++ b/gulp/tasks/copy.js
@@ -2,6 +2,8 @@ module.exports = function (gulp, plugins, config) {
   return function copy() {
     gulp.src(['html/*.html', 'assets/favicon/*'])
       .pipe(gulp.dest(config.build));
+    gulp.src(['assets/logo.svg'])
+      .pipe(gulp.dest(config.build));
     gulp.src('node_modules/promise-polyfill/promise.js')
       .pipe(gulp.dest(config.build + '/vendor'));
     return gulp.src(['assets/fonts/*', 'assets/icons/fonts/*'])
diff --git a/gulp/tasks/favicon.js b/gulp/tasks/favicon.js
new file mode 100644
index 0000000..cabe0f6
--- /dev/null
+++ b/gulp/tasks/favicon.js
@@ -0,0 +1,65 @@
+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: '#000000',
+          margin: '14%',
+          assets: {
+            ios6AndPriorIcons: false,
+            ios7AndLaterIcons: false,
+            precomposedIcons: false,
+            declareOnlyDefaultIcon: true
+          },
+          appName: 'Meshviewer'
+        },
+        desktopBrowser: {},
+        windows: {
+          pictureAspect: 'noChange',
+          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: 'notSet',
+            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
index e675513..4994e6d 100644
--- a/gulp/tasks/html.js
+++ b/gulp/tasks/html.js
@@ -1,3 +1,4 @@
+const fs = require('fs');
 module.exports = function (gulp, plugins, config, env) {
   return function html() {
     return gulp.src(env.production() ? config.build + '/*.html' : 'html/*.html')
@@ -13,6 +14,7 @@ module.exports = function (gulp, plugins, config, env) {
         }
       }))
       .pipe(env.production(plugins.kyhInlineSource({ compress: false })))
+      .pipe(plugins.realFavicon.injectFaviconMarkups(JSON.parse(fs.readFileSync(config.faviconData)).favicon.html_code))
       .pipe(plugins.cacheBust({
         type: 'timestamp'
       }))
diff --git a/gulpfile.js b/gulpfile.js
index b8d0d8d..e217c8f 100644
--- a/gulpfile.js
+++ b/gulpfile.js
@@ -14,6 +14,10 @@ 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(
diff --git a/html/index.html b/html/index.html
index 57d4051..b44227d 100644
--- a/html/index.html
+++ b/html/index.html
@@ -15,7 +15,8 @@
 <div class="loader">
   <p>
     Lade<br />
-    <span class="spinner"></span><br />
+    <img inline src="logo.svg" class="spinner" />
+    <br />
     Karten &amp; Knoten...
   </p>
   <noscript>
diff --git a/package.json b/package.json
index 962f110..3d23d94 100644
--- a/package.json
+++ b/package.json
@@ -25,6 +25,7 @@
     "gulp-jsonminify": "^1.0.0",
     "gulp-kyh-inline-source": "^3.0.2",
     "gulp-load-plugins": "^1.5.0",
+    "gulp-real-favicon": "^0.2.2",
     "gulp-requirejs-optimize": "^1.2.0",
     "gulp-sass": "^3.1.0",
     "gulp-sass-lint": "^1.3.2",
diff --git a/scss/modules/_loader.scss b/scss/modules/_loader.scss
index b628d49..a780a85 100644
--- a/scss/modules/_loader.scss
+++ b/scss/modules/_loader.scss
@@ -7,17 +7,17 @@
 }
 
 .spinner {
-  animation: .6s spinner ease-in-out infinite alternate;
-  border-bottom: 2px solid $color-primary;
-  border-radius: 50%;
-  display: inline-block;
-  height: 64px;
-  margin-top: 10px;
-  width: 64px;
+  path {
+    &:first-of-type {
+      animation: 1s spinner ease-in-out infinite alternate;
+      opacity: 1;
+    }
+  }
 }
 
 @keyframes spinner {
   to {
-    transform: rotate(360deg);
+    filter: grayscale(.8);
+    opacity: .2;
   }
 }
diff --git a/yarn.lock b/yarn.lock
index afce416..430f766 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -239,7 +239,7 @@ async-settle@^1.0.0:
   dependencies:
     async-done "^1.2.2"
 
-async@1.5.2:
+async@*, async@1.5.2:
   version "1.5.2"
   resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a"
 
@@ -381,6 +381,13 @@ binary-extensions@^1.0.0:
   version "1.8.0"
   resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.8.0.tgz#48ec8d16df4377eae5fa5884682480af4d95c774"
 
+binary@~0.3.0:
+  version "0.3.0"
+  resolved "https://registry.yarnpkg.com/binary/-/binary-0.3.0.tgz#9f60553bc5ce8c3386f3b553cff47462adecaa79"
+  dependencies:
+    buffers "~0.1.1"
+    chainsaw "~0.1.0"
+
 blob@0.0.4:
   version "0.0.4"
   resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.4.tgz#bcf13052ca54463f30f9fc7e95b9a47630a94921"
@@ -503,6 +510,10 @@ buffer-shims@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51"
 
+buffers@~0.1.1:
+  version "0.1.1"
+  resolved "https://registry.yarnpkg.com/buffers/-/buffers-0.1.1.tgz#b24579c3bed4d6d396aeee6d9a8ae7f5482ab7bb"
+
 bufferstreams@^1.1.0, bufferstreams@^1.1.1:
   version "1.1.1"
   resolved "https://registry.yarnpkg.com/bufferstreams/-/bufferstreams-1.1.1.tgz#0161373060ac5988eff99058731114f6e195d51e"
@@ -583,6 +594,12 @@ center-align@^0.1.1:
     align-text "^0.1.3"
     lazy-cache "^1.0.3"
 
+chainsaw@~0.1.0:
+  version "0.1.0"
+  resolved "https://registry.yarnpkg.com/chainsaw/-/chainsaw-0.1.0.tgz#5eab50b28afe58074d0d58291388828b5e5fbc98"
+  dependencies:
+    traverse ">=0.3.0 <0.4"
+
 chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3:
   version "1.1.3"
   resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
@@ -597,7 +614,7 @@ charenc@~0.0.1:
   version "0.0.2"
   resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667"
 
-cheerio@^0.19.0:
+cheerio@*, cheerio@^0.19.0:
   version "0.19.0"
   resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-0.19.0.tgz#772e7015f2ee29965096d71ea4175b75ab354925"
   dependencies:
@@ -1716,6 +1733,15 @@ fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2:
     mkdirp ">=0.5 0"
     rimraf "2"
 
+fstream@~0.1.21:
+  version "0.1.31"
+  resolved "https://registry.yarnpkg.com/fstream/-/fstream-0.1.31.tgz#7337f058fbbbbefa8c9f561a28cab0849202c988"
+  dependencies:
+    graceful-fs "~3.0.2"
+    inherits "~2.0.0"
+    mkdirp "0.5"
+    rimraf "2"
+
 function-bind@^1.0.2, function-bind@^1.1.0:
   version "1.1.0"
   resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.0.tgz#16176714c801798e4e8f2cf7f7529467bb4a5771"
@@ -1898,6 +1924,12 @@ graceful-fs@4.X, graceful-fs@^4.0.0, graceful-fs@^4.1.2, graceful-fs@^4.1.6, gra
   version "4.1.11"
   resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658"
 
+graceful-fs@~3.0.2:
+  version "3.0.11"
+  resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-3.0.11.tgz#7613c778a1afea62f25c630a086d7f3acbbdd818"
+  dependencies:
+    natives "^1.1.0"
+
 "graceful-readlink@>= 1.0.0":
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725"
@@ -2036,6 +2068,14 @@ gulp-match@^1.0.3:
   dependencies:
     minimatch "^3.0.3"
 
+gulp-real-favicon@^0.2.2:
+  version "0.2.2"
+  resolved "https://registry.yarnpkg.com/gulp-real-favicon/-/gulp-real-favicon-0.2.2.tgz#050c9f68e55ef48a51e3e18eb86299a364391195"
+  dependencies:
+    gulp-util "^3.0.7"
+    rfg-api "^0.3.0"
+    through2 "^2.0.0"
+
 gulp-requirejs-optimize@^1.2.0:
   version "1.2.0"
   resolved "https://registry.yarnpkg.com/gulp-requirejs-optimize/-/gulp-requirejs-optimize-1.2.0.tgz#70c3f15ac17acbf22ce0c507e83d434365ca530b"
@@ -3011,6 +3051,13 @@ map-stream@^0.1.0, map-stream@~0.1.0:
   version "0.1.0"
   resolved "https://registry.yarnpkg.com/map-stream/-/map-stream-0.1.0.tgz#e56aa94c4c8055a16404a0674b78f215f7c8e194"
 
+match-stream@~0.0.2:
+  version "0.0.2"
+  resolved "https://registry.yarnpkg.com/match-stream/-/match-stream-0.0.2.tgz#99eb050093b34dffade421b9ac0b410a9cfa17cf"
+  dependencies:
+    buffers "~0.1.1"
+    readable-stream "~1.0.0"
+
 matchdep@^1.0.0:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/matchdep/-/matchdep-1.0.1.tgz#a57a33804491fbae208aba8f68380437abc2dca5"
@@ -3053,6 +3100,15 @@ merge@^1.2.0:
   version "1.2.0"
   resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.0.tgz#7531e39d4949c281a66b8c5a6e0265e8b05894da"
 
+metaparser@^1.0.7:
+  version "1.0.7"
+  resolved "https://registry.yarnpkg.com/metaparser/-/metaparser-1.0.7.tgz#c0699a6686a07a8bce1ac06b62e9462c2e66aaca"
+  dependencies:
+    async "*"
+    cheerio "*"
+    mkdirp "*"
+    underscore "*"
+
 micromatch@2.3.11, micromatch@^2.1.5, micromatch@^2.3.7, micromatch@^2.3.8:
   version "2.3.11"
   resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565"
@@ -3113,16 +3169,16 @@ minimist@^1.1.0, minimist@^1.1.3, minimist@^1.2.0:
   version "1.2.0"
   resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
 
-mkdirp@0.3.0:
-  version "0.3.0"
-  resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.3.0.tgz#1bbf5ab1ba827af23575143490426455f481fe1e"
-
-"mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.1:
+mkdirp@*, mkdirp@0.5, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.1:
   version "0.5.1"
   resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
   dependencies:
     minimist "0.0.8"
 
+mkdirp@0.3.0:
+  version "0.3.0"
+  resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.3.0.tgz#1bbf5ab1ba827af23575143490426455f481fe1e"
+
 moment@^2.17.1:
   version "2.18.1"
   resolved "https://registry.yarnpkg.com/moment/-/moment-2.18.1.tgz#c36193dd3ce1c2eed2adb7c802dbbc77a81b1c0f"
@@ -3153,6 +3209,10 @@ nan@^2.3.0, nan@^2.3.2:
   version "2.5.1"
   resolved "https://registry.yarnpkg.com/nan/-/nan-2.5.1.tgz#d5b01691253326a97a2bbee9e61c55d8d60351e2"
 
+natives@^1.1.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/natives/-/natives-1.1.0.tgz#e9ff841418a6b2ec7a495e939984f78f163e6e31"
+
 natural-compare@^1.4.0:
   version "1.4.0"
   resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
@@ -3222,6 +3282,13 @@ node-pre-gyp@^0.6.29:
     tar "^2.2.1"
     tar-pack "^3.4.0"
 
+node-rest-client@^1.4.1:
+  version "1.8.0"
+  resolved "https://registry.yarnpkg.com/node-rest-client/-/node-rest-client-1.8.0.tgz#8d3c566b817e27394cb7273783a41caefe3e5955"
+  dependencies:
+    debug "~2.2.0"
+    xml2js ">=0.2.4"
+
 node-sass@^4.2.0:
   version "4.5.1"
   resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.5.1.tgz#e8e119fe3c8213ad7e56ca618dd231e9e8b30f5b"
@@ -3442,6 +3509,10 @@ osenv@0, osenv@^0.1.4:
     os-homedir "^1.0.0"
     os-tmpdir "^1.0.0"
 
+"over@>= 0.0.5 < 1":
+  version "0.0.5"
+  resolved "https://registry.yarnpkg.com/over/-/over-0.0.5.tgz#f29852e70fd7e25f360e013a8ec44c82aedb5708"
+
 param-case@2.1.x:
   version "2.1.1"
   resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247"
@@ -3617,6 +3688,15 @@ pseudomap@^1.0.1:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
 
+pullstream@~0.4.0:
+  version "0.4.1"
+  resolved "https://registry.yarnpkg.com/pullstream/-/pullstream-0.4.1.tgz#d6fb3bf5aed697e831150eb1002c25a3f8ae1314"
+  dependencies:
+    over ">= 0.0.5 < 1"
+    readable-stream "~1.0.31"
+    setimmediate ">= 1.0.2 < 2"
+    slice-stream ">= 1.0.0 < 2"
+
 punycode@^1.4.1:
   version "1.4.1"
   resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
@@ -3695,7 +3775,7 @@ readable-stream@1.1, readable-stream@~1.1.9:
     isarray "0.0.1"
     string_decoder "~0.10.x"
 
-"readable-stream@>=1.0.33-1 <1.1.0-0":
+"readable-stream@>=1.0.33-1 <1.1.0-0", readable-stream@~1.0.0, readable-stream@~1.0.31:
   version "1.0.34"
   resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c"
   dependencies:
@@ -3904,6 +3984,16 @@ restore-cursor@^1.0.1:
     exit-hook "^1.0.0"
     onetime "^1.0.0"
 
+rfg-api@^0.3.0:
+  version "0.3.0"
+  resolved "https://registry.yarnpkg.com/rfg-api/-/rfg-api-0.3.0.tgz#42745648547f254f35d70edccf7cd3f465d9390a"
+  dependencies:
+    fstream "^1.0.2"
+    metaparser "^1.0.7"
+    mkdirp "^0.5.0"
+    node-rest-client "^1.4.1"
+    unzip2 "^0.2.5"
+
 right-align@^0.1.1:
   version "0.1.3"
   resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef"
@@ -3960,7 +4050,7 @@ sass-lint@^1.10.2:
     path-is-absolute "^1.0.0"
     util "^0.10.3"
 
-sax@~1.2.1:
+sax@>=0.6.0, sax@~1.2.1:
   version "1.2.2"
   resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.2.tgz#fd8631a23bc7826bef5d871bdb87378c95647828"
 
@@ -4043,6 +4133,10 @@ set-value@^0.4.3:
     is-plain-object "^2.0.1"
     to-object-path "^0.3.0"
 
+"setimmediate@>= 1.0.2 < 2", setimmediate@~1.0.1:
+  version "1.0.5"
+  resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285"
+
 setprototypeof@1.0.2:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.2.tgz#81a552141ec104b88e89ce383103ad5c66564d08"
@@ -4067,6 +4161,12 @@ slice-ansi@0.0.4:
   version "0.0.4"
   resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35"
 
+"slice-stream@>= 1.0.0 < 2":
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/slice-stream/-/slice-stream-1.0.0.tgz#5b33bd66f013b1a7f86460b03d463dec39ad3ea0"
+  dependencies:
+    readable-stream "~1.0.31"
+
 sntp@1.x.x:
   version "1.0.9"
   resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198"
@@ -4442,6 +4542,10 @@ tough-cookie@~2.3.0:
   dependencies:
     punycode "^1.4.1"
 
+"traverse@>=0.3.0 <0.4":
+  version "0.3.9"
+  resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.3.9.tgz#717b8f220cc0bb7b44e40514c22b2e8bbc70d8b9"
+
 trim-newlines@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613"
@@ -4507,7 +4611,7 @@ unc-path-regex@^0.1.0:
   version "0.1.2"
   resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa"
 
-underscore@1.7.x:
+underscore@*, underscore@1.7.x:
   version "1.7.0"
   resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.7.0.tgz#6bbaf0877500d36be34ecaa584e0db9fef035209"
 
@@ -4549,6 +4653,17 @@ unpipe@~1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
 
+unzip2@^0.2.5:
+  version "0.2.5"
+  resolved "https://registry.yarnpkg.com/unzip2/-/unzip2-0.2.5.tgz#4ef7a579a78c15c51f550f6a053db194149c8992"
+  dependencies:
+    binary "~0.3.0"
+    fstream "~0.1.21"
+    match-stream "~0.0.2"
+    pullstream "~0.4.0"
+    readable-stream "~1.0.0"
+    setimmediate "~1.0.1"
+
 upper-case@^1.1.1:
   version "1.1.3"
   resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598"
@@ -4774,6 +4889,19 @@ xml-char-classes@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/xml-char-classes/-/xml-char-classes-1.0.0.tgz#64657848a20ffc5df583a42ad8a277b4512bbc4d"
 
+xml2js@>=0.2.4:
+  version "0.4.17"
+  resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.17.tgz#17be93eaae3f3b779359c795b419705a8817e868"
+  dependencies:
+    sax ">=0.6.0"
+    xmlbuilder "^4.1.0"
+
+xmlbuilder@^4.1.0:
+  version "4.2.1"
+  resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-4.2.1.tgz#aa58a3041a066f90eaa16c2f5389ff19f3f461a5"
+  dependencies:
+    lodash "^4.0.0"
+
 xmlhttprequest-ssl@1.5.3:
   version "1.5.3"
   resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.3.tgz#185a888c04eca46c3e4070d99f7b49de3528992d"
-- 
GitLab