From 4828f95ebb766540c90bce7bc7df476743a7e17f Mon Sep 17 00:00:00 2001 From: Rene Schwarz Date: Fri, 6 Aug 2021 12:35:46 +0200 Subject: [PATCH] Issue #5 --- .../DesignTimeBuild/.dtbcache.v2 | Bin 99042 -> 99042 bytes .vs/Server Dashboard/v16/.suo | Bin 273408 -> 273920 bytes Server Dashboard Socket/EchoServer.cs | 3 + Server Dashboard/App.xaml | 1 - .../AttachedProperty/BaseAttachedProperty.cs | 5 + .../AttachedProperty/HyperlinkProperties.cs | 3 +- .../CRUD Popup/CreateModulePopup.xaml | 208 +++--------------- .../DoubleRoundProgressBar.xaml | 84 +------ .../DoubleRoundProgressBar.xaml.cs | 10 + .../HalfRoundProgressBar.xaml | 48 +--- .../HalfRoundProgressBar.xaml.cs | 9 +- .../LoadingIndicator/LoadingIndicator.xaml | 52 +---- .../Controls/ServerModules/ServerModule.xaml | 130 ++--------- .../DashboardModules/DashboardModule.cs | 15 ++ .../DashboardModules/NewModuleInformation.cs | 9 + .../DashboardModules/ServerInformation.cs | 14 ++ Server Dashboard/Database/DatabaseHandler.cs | 77 ++++++- Server Dashboard/Interfaces/IHavePassword.cs | 3 + Server Dashboard/Interfaces/IWindowHelper.cs | 3 + Server Dashboard/LoginWindow.xaml | 192 +++------------- .../Security/SecureStringHelpers.cs | 7 + .../ValueConverter/ValueToAngleConverter.cs | 3 + .../ViewModels/BaseViewModel/BaseViewModel.cs | 4 + .../Dashboard/DashboardModuleViewModel.cs | 15 +- .../Dashboard/DashboardViewModel.cs | 42 +++- .../ViewModels/Login/LoginViewModel.cs | 81 +++++-- .../ViewModels/RelayCommand/RelayCommand.cs | 2 +- .../DashboardPages/MainDashboardPage.xaml | 32 +-- Server Dashboard/Views/DashboardWindow.xaml | 109 ++------- .../Debug/netcoreapp3.1/Server Dashboard.dll | Bin 1114112 -> 1111552 bytes .../Debug/netcoreapp3.1/Server Dashboard.pdb | Bin 27596 -> 27160 bytes .../obj/Debug/netcoreapp3.1/App.baml | Bin 12743 -> 12743 bytes .../obj/Debug/netcoreapp3.1/App.g.cs | 2 +- .../obj/Debug/netcoreapp3.1/App.g.i.cs | 2 +- .../CRUD Popup/CreateModulePopup.baml | Bin 8324 -> 7844 bytes .../CRUD Popup/CreateModulePopup.g.cs | 14 +- .../CRUD Popup/CreateModulePopup.g.i.cs | 14 +- .../DoubleRoundProgressBar.baml | Bin 3000 -> 2884 bytes .../DoubleRoundProgressBar.g.cs | 8 +- .../DoubleRoundProgressBar.g.i.cs | 8 +- .../HalfRoundProgressBar.baml | Bin 2415 -> 2363 bytes .../HalfRoundProgressBar.g.cs | 8 +- .../HalfRoundProgressBar.g.i.cs | 8 +- .../LoadingIndicator/LoadingIndicator.baml | Bin 2544 -> 2464 bytes .../LoadingIndicator/LoadingIndicator.g.cs | 2 +- .../LoadingIndicator/LoadingIndicator.g.i.cs | 2 +- .../obj/Debug/netcoreapp3.1/LoginWindow.baml | Bin 8515 -> 8063 bytes .../obj/Debug/netcoreapp3.1/LoginWindow.g.cs | 8 +- .../Debug/netcoreapp3.1/LoginWindow.g.i.cs | 8 +- ...er Dashboard.csprojAssemblyReference.cache | Bin 424 -> 151700 bytes .../Debug/netcoreapp3.1/Server Dashboard.dll | Bin 1114112 -> 1111552 bytes .../Server Dashboard.g.resources | Bin 1078156 -> 1076740 bytes .../Debug/netcoreapp3.1/Server Dashboard.pdb | Bin 27596 -> 27160 bytes .../DashboardPages/MainDashboardPage.baml | Bin 3300 -> 3328 bytes .../DashboardPages/MainDashboardPage.g.cs | 26 ++- .../DashboardPages/MainDashboardPage.g.i.cs | 26 ++- .../netcoreapp3.1/Views/DashboardWindow.baml | Bin 8834 -> 8570 bytes .../netcoreapp3.1/Views/DashboardWindow.g.cs | 4 +- .../Views/DashboardWindow.g.i.cs | 4 +- 59 files changed, 476 insertions(+), 829 deletions(-) diff --git a/.vs/Server Dashboard/DesignTimeBuild/.dtbcache.v2 b/.vs/Server Dashboard/DesignTimeBuild/.dtbcache.v2 index 5836e70052641ad7bc52bd5f2647f788837e2cc0..0982798169d8edccf7f8a692a4d6f6e8aa72459d 100644 GIT binary patch delta 79 zcmV~$yA^;S3;@7q!#of|K9#dTAbU{IyNu6$sI9HN+bir9uIEey#RxSg;bGNSj7f)Z e)UH&;kzX%ZyB5b delta 79 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 delta 19475 zcmeHv2V50L*Y`cM_g+DY7X_q=fQX2QRK-TOD`2ltKu}Rcq!>+9uH9e>Fv{3sz}S;0 zdZVjJG*>}m)F>Kz>?N@)5$wu$X7_?vlE)|SllN=y{`lXWJv(z|=A4Mwrkf$`5f8AgP&~IlG(q%JC^8kcm-|gCkrHm;s` zsg3jeGqv@3Q*B&Im1;A>G*=s!*xyxK0G929_}gmZtv5yn{LIzngy@Xms;I6ue*aCi zaT-?}KXY|)wefW2@ou%%w8@EIru(L5SIBKuM8nN|Xj!WgQ$7~?WZ`8gG;}q&h|IWj z@L)bgBvcn-u7_Mp2kPMNZpw4<`COS>wGVR#(FyKRMh&WwA)A)FN0~Y!iBG`F+Uis157h@=h-we7 z)Va1l3%Qfip)bvtjH^awSE|X3hu$W78AIBy;-k@K%F*=WYvU8$6V?*~VR@CcR*8Z9gJzOl)fWpwP6mg#Ef{7UMHJ zb=Wf2twvQh#G)sA>z?|kN$&b+n!Vmzr(LfFHg*Fz zvcet2mFZ6kmTb@|;>*tdCRpm0HIIkfe(CT%&FB|tCb6$yjUm*c<^3|joM!Zoq~Qkx zh^a#NwCR1IBh9Thuc%4b#XvA;F^7dVPW!{U{d{0+RMwdreUk1Db9c{NaJKtz*OJyG zA6neAdAMRQ)vU4BWsMkz6E@sTF$^n7tX2_Cx5WPN-VLu#EwhYL!3d}P@}O}D~K zNq9M?S|*bf*y*Q8z=Kw_@S*;Jmdady(J}BFBNb|HIA);Amd{rVBAaL1fYTQf_J3@< zb#;?3k{{G)`yfoSrnLLlxwmh`P9JY$@xrNt9ZgwpMZ0~X+w3+GlzjcC+D6NC4xK&0 zCwPgsB>7KGoKL!56_N>`Uoe4Gr|SY0O5+5gK$GMLbxLu zBfOAH9aS?-wZc>rv(}j6YgSuC2c$HDZuncbZ6sbtA)*o85j_w+5xo$-5q%JS5&aPT z5d#nd5rYszk%K*?;%{r?G`vnnWY8nQjf^re#ao_R+|kI|AORdv?sWX%uBQA6$DadS z9DJC;d|E!Z!lXZvxaEci1GUgy7ads$xi;ZuFc?X(h{^&q-9}QbuFU2zp+!gVVPxe- z-FnqiDMs?rd@AYEdqv@ciujoJ#Sx@KGCx?3ow6a*4g@#W#a0<0YF(9D$c;JZw6q7b z*lW6S=Jx#BUu!-~%<;8b=xH_7eDR~amF1u>PNdpY%N4OekIeC;`6Dmp`q{DGyT|~h z1*O)k2p{C!f-**9a02z76-J$WjcLqGcN!gF40C8X?*-)bzxJv_U-+($f=@ zho^a^$q71SW@9Pmbj%sTN)o_|USDiO3ukErA3smJHez_LQ-t*VuQU)Pu??XaPCbqI zWU3NOnNx`=e}sEgBbsnU;59#J#hOb_7XtD-9Da0nX*)7 zBC-)Vh+G6kEI=$oVC|d{EF#H&rHI1HVA5M65!rMyx@s zMXW=tM|_F+3h^~!17ahh5U~ld8KFabgV=)DiVzXo5Ze*oBECa>kJy3OiTDAbN9+QH zonkj8iV(b$d+@v$@gw3lTCb5`=5b7&K%7LJLYzjNLHvq1i#UfkkGO!ih`5BfjJSfh zinxa0oc&Qrc&fOG*Zh3PaOUZ|n66YTzvc&jIF^AzttjUVa$@V$ePJkJhj(7`G~zi5 zu_9`_(~`N7H%_vQ5k?l#6QXY~8kG7Ou^sc}ggaM0|JXY1A%I5+Ad=vM^IH4Mz%}FWk0f1x<(pi!Ok=y5K&$sz1n`juNMcv*E3p zLSl_;!gHN=RYlE-ce~fwvLoh{-4&xm{ket>pCN~;q4|hE3GsS7uD#snn2gV@2H1Pu z>T#anl{KwBOPrltQos8kTfJA(o?o2Gy+#hZ78^Be-5is& zDl99ATjx;CyofnVG)}H}CN4Xm%Ic?1^WWNE>yvbS)Vz$ZpTLp!>W5m#=aAzMH;z zr%uoAr#_Edy`hU80S+%gklX zWlYl>7%UC$C{)+kSkeaVe4&7^>r7JsCamHXsl)WCLT$X^uJZHu^bep>?K)Q7tk3Bt0sfvX zC$^7GN=x96gy!g|g*FRjDH+5~y4}Ll-&ek!DRIu8hSoPeL~43_wvg#_C3;k6!CtN> z(97&2j z;XUgExHaU(!Nep!AZgCPCe@~k_819rN?#m4b4$p|Z|__$nfsBOxlgB-KAVdBk00d} zUzW`xPFm^m3uAz4TPWH1KLl5uyY>`btxlmS8`Ms9F5mb%G%&fq^bhYosvA8zC(bvT zG_&+z+z>0PUOfVePDl&p`VD>HKRqlqC)Eb0o9nktdsMpMp4#!imrFYxtu;t>O}lEy z&~dZcfA_<~db^KEvS~m1+rK}C9Q^ngl1En#%CBMXw1iYNRfZ)dB{XDHnvgbC!-`ud zRBP@?9sSSH$btUUGr&@VWBD~D(46hwnjU8?UL!J#A<&3VNQJshaz;|W!!>zYK`;3R z2rWmX=YCtlO5BtwG<04RJ8Y};VfseOkhiLOlPj-EawI4`@%szzlfzZOA2#w@^*)gb zwG(D{F{4jur+;_3Gm(}%ERKh+LIm=UuSdD|X!+VXn%ZEEmBxegq)jiG3oAO3>I=HA zW8gM)h9i`&m|2zwMtS>1nes@;PiH-3y!)57UB(V*Ka~>Mu>=S5L*yi z5!(^l5Z@ubMeIQErJdeC8YnO4p1(NQ{eskEhC3(ldzfL?{Fk`ggXy%&AJjcLSOYd63xP~-W8xpikI_y&=2iRnsrjvPk9mhRT=(Tg{V22K zF2}vYRFWzBO@&bncILajRqhu_QoqXex zi}~f78Cc+M=(@IU*Mx7MV5Sc?wn`X2?%35;n2rzaKV!sE|GhtA`rJL=EkB(9HG5z! zzp!f$sB6hLGt2czAO3v)!pohvj_^dDCyI){d$j80#&k>%>Y=z1J9OS{6XaiSTC!cu zzUjkx*)DrBH?~t3thZ^6nS3+rUjL}>`lyH4(&$Tp02@{x=9!+Inb@h`(wkrKbYl51 z^^KE7b9nl4|B|Pp4&1SQh82J5b5k*Tb)Q~)uxzv56OGRQVKSdL!dTNQw$Qh6?KMb` zTJ^=0-{)TJGau>CzI(ECdi~4M&%>~AT;9C)1$7JRUN!RzGwE}(c*wpb$&)ctt+2^1 zpA5|z<&Ehlsg_$^ugA@3hH2E4qFR~;pR_WHRg6|7C_YrsK_|Uw*OUIH?Ygz^#r4V$ zdhldA3vq`#bv#{qj!8{7_;(W`V@D^ru#m=J!)zLZr?f(`j*TG@gK5e<53sC`>NFmB z6FYiG9kUVk;!NIDOd9ie1M}HU+A1&J zt*BrzMQBxH?8=FSv;<3L*%CaNwk3?TPF92}(i9UE$%>&Ep5^fwe&p?k5bu+{6^dub z$JNKD`B48jzl5f7{((MC{hMPd&~I2m)1m%8K7N6*em*`e0vafGv(WWqI;$up!E8r3 z?BG8iu`yl1l-0TgEufJ3w1){SezLYeuOQM)%Uu;FE z^<<(X32KJgJ7<-;^EgC;9^~;GP9zIz9FVLBHmDnIAl3lO~gI%Fa}gSbYsja zHjpey&n##IvD1Z|(gV#t6~e}5kcKR31My;CZXi9uL+rkm^oKVW%BG-mD>(z~$RHBL zCZ$0*bIKy7DjwcwC7vG++dxzmkRL(xUk*h;A~tfRc)a)GT75ySzR>>9;`)Ej;=1|F zGYj%-WBTG&2<}A(-FAYmbO`>gr`p?2BM$KU3< zTXz~6!!&xNtTT%-fz~jL)_OEYC7BqN#OCy3g%Qnsu7(lR>+xb057tknr7zMroy8b| zQpJOb*;4-dwMktX^~^`bW6ha{TxO~yUWOe}LVuP$5Ug1<6*`03nxImR#yj(QQL1?m z$}-JB1<7>Ev$-&anm_*#QZOAU$04yy9VvrqES4EYElNX}R8 zRqT(gDidjG*p(a^Ze=ewREM(Pv(nJtHpO~#b>vSX7bB=yHsk8O@KZgoE!Y^2`y$ML7d z_gW(D!J!M6zgayQQz^RUqjb%UF%{or>P&iO2BsVuEV_O#z8p&g4tg?j(rzu%K7Y3T z^JfLKF_nB`*ys~(T`?8-Wa;y6k!kG8OQ_5DDDW^svIbkzdXovyz>8m|n3^@9^~nR% zS7J)e7o=w%72s5(IPy0Bd9v;nP*)xFC@uJrz>+P%#cQ)wXi=wnE3m*!`famMn=ZrD zHr~(HLKPFNPJR5?$$fRYv7K1PXuTjpO7@or z8E-&}F?VoYtNi1-FiPT5tG}8%G}b*+k`mMVBqp$3i4e`alZE!|cpkX$pO0AjGuaa9 zm1hHO3^lbi)MU(kBJ7XxHmMHnv1>uE)s%uo8i4UG>2Bu-yI;Gj2|+R!mU=hKu?7cr z%LZ!6LMfK}=3;9QO5^^TP(x-}fW|-JrSX3Jc~zfD#us~n#O<~a4>Fe%%*g@lS$lhE zTB)i`d#HaA8he98P@9ep(Am(<4u(37FY}79n^&X?d68EfP@BsfAl$;l zS3UE!{;~TGue5bf?onhtgSNsoT@1{5hon{*mm$TtT&hAID!fijS3^GaLrhp!s_H|p z=v3ycBa!S}4zyxpbfl-6?;%F$s;uHD7PJVBUi`^m6*Gu2TF{k7uQiLA1J6XO6gUpz z@ih1jn9~bl%nFSX^lK_|AS5t{e|+`vmpiHqIPbXIo9 zvMbIIW)TZflEB663|I`cJoFm8!;R^PlMvBr#o3x{$^gjBnMl;t5*sptb%}#Lc?$(&5ohcc zSn(TSkpjM@5Y-p5#EYxI9$4*fp|SZ#$d+@K{5&P|Sqm;;zQsp43~X0Nu%W@fkJWv0 z{X<}}wS|G=t+n7u$Od4r4ra4%UxAxA%SiZD1vlAP3tu5LQSoSKcM~717cdZ-gS$z0d;4R-rSiNawcM zSjm`!K4=_8poQVC>Wg<$UN=spEH(S#jk&;IL1ITv!;n|LEJGi#AB&kuq9sq3U3!S} z%?}Xn!+i#qfN}587+u&pG`4((TwQVPPq5E=g{FyADDrj_ImV2d*MI`iZ#sWPyR3CCcXT z6m(A7ve=2xKN#pKPAGdCb6K~S;QUTkLpH%zqs{zZaXMbP8rXC^?xW@X zmeavb^G3)S-rv-E%NCwlv)4s%I%yV{k%{hGrK!1<#OnqVJ^R zeOHY`n(URtVXCnC)MJHFqzxwfJWdTabsaxQ+4zp!g< zTkc`KkM|Ps*WSx3$L*CLBXxMur&xh3HrbD{_K~l+luxwJwtLvAOJxqD?8=nFBSgdF zdy z)6do*scLSM<@sM#QGah9xG) zrR)`wYMx-2Ganqt(gs-@+j9P|rULg2mCKl}Aq-&X6b^>Z*oO_Fl^Xauvy2^a1IyZc zsp0DxmQ(-_uqdKe0o=1@ZgA?skXj4eODD-#lsl}K74{!73IU1U+@F? zFg7%T574SiJSt(}&xdFgoex!+uHvBu1Ajj5sl3c?AK zyhe-y)Pb#s$YnsI2jd)57`~(GhMU!~7f1oq9wCnG@?r8E4zbX^go)?z1y&G?k0C42 zGdLj3pzRA=v7N_=8lG0w@5%B@NGoyQ2@;43?uX;yGfPsReH08${@wj%i=n7G`Eb>L zhzTO9BxZw=3q22=>1^lv*!8vl8#ati<0bg<0OV+WMdx@RO1{-^k zYmKtymq-uhvL8p4(*?niUYs3>N}k`MxH{ZXNhJOy~WG@{!TVK=an zbHX9G%-QVVuQj`=ys)v~^ImPCF^Otyy*&~hSB?A;%augFszBaiDie%1y3-=S7x1gbg?5_@2u>@?8=261YgDp%G>=PkG6{#ZO?*# z8FF3;avZs8m4yN_>mLms&lRZ8czcHL0h|9twAk3YwJ_h+6<;-_< z-uGjWhnOEf2Jw+U20`U?!op7t%90djNZTR3+P5K!|HNJbjAw@(gdfOOX)i*{oa_Z9 zn`kDO+r}$m@!PssMI0gx->4gb=VV2^B8iPH#yGU|cu#gC4~B7fsnL7vJWN);dzZoF zPj?624BwZ!VdSvtMKzY)TzF?R-w-Z*zv%qaKaY+#d1qYv0-JpU{-H4T@9aIp)o)u2 z42{oae-^U-0(f}32>wo_7e~Vz5!-i~1AiH@O%pL}d!PK1(Nz(nt3l*HzOQXx zhg3a2{vjis6?710G2CaY&FU{AKmQ#|o1vwBoZ9&<W8ZSw5#qY?`vrLUO!5=~U*W3Oz@j_)E(B(IU(t)c8q7j3%^ zU(sCyL;2TIRs2M44P^*n+8aX18ojZSQ0?}Rt)@!!H*;2z5T-X%PG^e_33lS(n#wqQ z@EL)8J9l1)h&MxkhRoAbeQ8s^HB_hCmq}q*sTF>YSy7N;q$JTW$p?AUGe+J`5eCoMnzXleP_CLV54CwBF0xc8^P)cO3QAn|D< z(SL%Uv9}JDy!0UqT=B(P_w92>f&EON?Z`iqK)x@YN^@+a6 z)wXqWf^|U??Hz9}Q9h!DbFFBHITNVfJiug7*D$ksM-9Kc>D$$ZPr=YBxlVbVCXL75b z3gq9C(3{_thddSVeQ0enB~`9%^OglpyU+8cTCbRY`6YJlx{%NS`RlBz@7&Vye?z3= zcfjM(iW;p*QnZ}fw)pgR)uyhR>@`oEMjyB}(Br3W#}+1;2A>FQcxOm)9-R_7joF+b z<}BqbQBxbQ5qyX+=O==vsJG=~)cJlJ+HAYIuJg97u-aZJD-{RL&0H_->v^lj(@h+* z_;LzPBs#q!6ie55|9{y+@n5!By!kno5xr<`g)`UgZE5Wq8;mnJN!3SsGvj|po!#w} z)}pnO@+QWk))04grb3v`lI)cW-WdLGh#}qC;>~|o^S<5Osz$}Iu}Yk-(#yc|Dwg!d Us-;`B%^h&r!tY2|dnn2O0?}C1`Tzg` diff --git a/Server Dashboard Socket/EchoServer.cs b/Server Dashboard Socket/EchoServer.cs index 906621a..0d5fade 100644 --- a/Server Dashboard Socket/EchoServer.cs +++ b/Server Dashboard Socket/EchoServer.cs @@ -4,6 +4,9 @@ using System.Net.Sockets; using System.Threading.Tasks; namespace Server_Dashboard_Socket { + /// + /// Basic echo server to test the socket connection + /// public class EchoServer { public void Start(int port = 9565) { IPEndPoint endPoint = new IPEndPoint(IPAddress.Loopback, port); diff --git a/Server Dashboard/App.xaml b/Server Dashboard/App.xaml index 689ca61..cf4f5d7 100644 --- a/Server Dashboard/App.xaml +++ b/Server Dashboard/App.xaml @@ -356,6 +356,5 @@ - diff --git a/Server Dashboard/AttachedProperty/BaseAttachedProperty.cs b/Server Dashboard/AttachedProperty/BaseAttachedProperty.cs index 55ae5e3..1046070 100644 --- a/Server Dashboard/AttachedProperty/BaseAttachedProperty.cs +++ b/Server Dashboard/AttachedProperty/BaseAttachedProperty.cs @@ -4,6 +4,11 @@ using System.Text; using System.Windows; namespace Server_Dashboard { + /// + /// Attached property base class + /// + /// + /// public abstract class BaseAttachedProperty where Parent : BaseAttachedProperty, new() { public event Action ValueChanged = (sender, e) => { }; diff --git a/Server Dashboard/AttachedProperty/HyperlinkProperties.cs b/Server Dashboard/AttachedProperty/HyperlinkProperties.cs index 3e442c2..47d27c6 100644 --- a/Server Dashboard/AttachedProperty/HyperlinkProperties.cs +++ b/Server Dashboard/AttachedProperty/HyperlinkProperties.cs @@ -5,8 +5,7 @@ using System.Text; using System.Windows; using System.Windows.Documents; -namespace Server_Dashboard - { +namespace Server_Dashboard { public static class HyperlinkExtensions { public static bool GetIsExternal(DependencyObject obj) { return (bool)obj.GetValue(IsExternalProperty); diff --git a/Server Dashboard/Controls/Dashboard/CRUD Popup/CreateModulePopup.xaml b/Server Dashboard/Controls/Dashboard/CRUD Popup/CreateModulePopup.xaml index cfb80fe..2cadfe9 100644 --- a/Server Dashboard/Controls/Dashboard/CRUD Popup/CreateModulePopup.xaml +++ b/Server Dashboard/Controls/Dashboard/CRUD Popup/CreateModulePopup.xaml @@ -6,19 +6,12 @@ xmlns:local="clr-namespace:Server_Dashboard.Views.DashboardPages.ModuleCRUD" xmlns:root="clr-namespace:Server_Dashboard" xmlns:i="http://schemas.microsoft.com/xaml/behaviors" d:DataContext="{d:DesignInstance Type=root:DashboardModuleViewModel}" - mc:Ignorable="d" - ResizeMode="NoResize" - Height="700" - Width="500" - d:WindowStyle="None" - > + mc:Ignorable="d" ResizeMode="NoResize" Height="700" Width="500" d:WindowStyle="None"> - + + @@ -27,10 +20,8 @@ - + + @@ -40,19 +31,8 @@ - - - + @@ -76,192 +52,98 @@ + - + - + - - + + + - + - + - + - + + - + - + - - + + + - + - + - - + + + - + @@ -270,38 +152,16 @@ - - + + - - - - - + + + - + @@ -97,48 +74,19 @@ - - + - + - - - + + + @@ -146,17 +94,8 @@ - - + @@ -166,35 +105,14 @@ - + - + - + - + @@ -203,29 +121,11 @@ - -