From 411a32039ff7c2a77804da5ee4908fc1ec88b10d Mon Sep 17 00:00:00 2001 From: Mateusz Skoczek Date: Tue, 5 Mar 2024 17:01:00 +0100 Subject: [PATCH 1/2] about page added --- .../Strings/en-US/AboutViewResources.resw | 123 ++++++++++++++++++ .../Strings/en-US/BaseViewResources.resw | 3 + .../About/AboutViewModel.cs | 13 ++ .../BaseViewModel.cs | 7 + .../VDownload.Core.Views/About/AboutView.xaml | 15 +++ .../About/AboutView.xaml.cs | 32 +++++ .../VDownload.Core.Views.csproj | 4 + .../ViewModelToViewConverter.cs | 3 + .../StringResourcesService.cs | 3 + VDownload/Assets/BaseView/AboutDark.png | Bin 0 -> 18949 bytes VDownload/Assets/BaseView/AboutLight.png | Bin 0 -> 45105 bytes .../Dictionaries/Images/ImagesBaseView.xaml | 2 + VDownload/VDownload.csproj | 6 + 13 files changed, 211 insertions(+) create mode 100644 VDownload.Core/VDownload.Core.Strings/Strings/en-US/AboutViewResources.resw create mode 100644 VDownload.Core/VDownload.Core.ViewModels/About/AboutViewModel.cs create mode 100644 VDownload.Core/VDownload.Core.Views/About/AboutView.xaml create mode 100644 VDownload.Core/VDownload.Core.Views/About/AboutView.xaml.cs create mode 100644 VDownload/Assets/BaseView/AboutDark.png create mode 100644 VDownload/Assets/BaseView/AboutLight.png diff --git a/VDownload.Core/VDownload.Core.Strings/Strings/en-US/AboutViewResources.resw b/VDownload.Core/VDownload.Core.Strings/Strings/en-US/AboutViewResources.resw new file mode 100644 index 0000000..76fc78a --- /dev/null +++ b/VDownload.Core/VDownload.Core.Strings/Strings/en-US/AboutViewResources.resw @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ss + + \ No newline at end of file diff --git a/VDownload.Core/VDownload.Core.Strings/Strings/en-US/BaseViewResources.resw b/VDownload.Core/VDownload.Core.Strings/Strings/en-US/BaseViewResources.resw index df0e3fa..3df704d 100644 --- a/VDownload.Core/VDownload.Core.Strings/Strings/en-US/BaseViewResources.resw +++ b/VDownload.Core/VDownload.Core.Strings/Strings/en-US/BaseViewResources.resw @@ -117,6 +117,9 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + About + Authentication diff --git a/VDownload.Core/VDownload.Core.ViewModels/About/AboutViewModel.cs b/VDownload.Core/VDownload.Core.ViewModels/About/AboutViewModel.cs new file mode 100644 index 0000000..bf3bcce --- /dev/null +++ b/VDownload.Core/VDownload.Core.ViewModels/About/AboutViewModel.cs @@ -0,0 +1,13 @@ +using CommunityToolkit.Mvvm.ComponentModel; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace VDownload.Core.ViewModels.About +{ + public class AboutViewModel : ObservableObject + { + } +} diff --git a/VDownload.Core/VDownload.Core.ViewModels/BaseViewModel.cs b/VDownload.Core/VDownload.Core.ViewModels/BaseViewModel.cs index 0e1986b..8ec282b 100644 --- a/VDownload.Core/VDownload.Core.ViewModels/BaseViewModel.cs +++ b/VDownload.Core/VDownload.Core.ViewModels/BaseViewModel.cs @@ -12,6 +12,7 @@ using VDownload.Core.ViewModels.Settings; using VDownload.Services.UI.DictionaryResources; using VDownload.Services.UI.StringResources; using SimpleToolkit.UI.Models; +using VDownload.Core.ViewModels.About; namespace VDownload.Core.ViewModels { @@ -72,6 +73,12 @@ namespace VDownload.Core.ViewModels ( new ObservableCollection { + new NavigationViewItem() + { + Name = _stringResourcesService.BaseViewResources.Get("AboutNavigationViewItem"), + IconSource = _dictionaryResourcesService.Get("ImageBaseViewAbout"), + ViewModel = typeof(AboutViewModel), + }, new NavigationViewItem() { Name = _stringResourcesService.BaseViewResources.Get("AuthenticationNavigationViewItem"), diff --git a/VDownload.Core/VDownload.Core.Views/About/AboutView.xaml b/VDownload.Core/VDownload.Core.Views/About/AboutView.xaml new file mode 100644 index 0000000..5b1847d --- /dev/null +++ b/VDownload.Core/VDownload.Core.Views/About/AboutView.xaml @@ -0,0 +1,15 @@ + + + + + + + diff --git a/VDownload.Core/VDownload.Core.Views/About/AboutView.xaml.cs b/VDownload.Core/VDownload.Core.Views/About/AboutView.xaml.cs new file mode 100644 index 0000000..1fbcd3e --- /dev/null +++ b/VDownload.Core/VDownload.Core.Views/About/AboutView.xaml.cs @@ -0,0 +1,32 @@ +using Microsoft.UI.Xaml; +using Microsoft.UI.Xaml.Controls; +using Microsoft.UI.Xaml.Controls.Primitives; +using Microsoft.UI.Xaml.Data; +using Microsoft.UI.Xaml.Input; +using Microsoft.UI.Xaml.Media; +using Microsoft.UI.Xaml.Navigation; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Runtime.InteropServices.WindowsRuntime; +using VDownload.Core.ViewModels.About; +using VDownload.Core.ViewModels.Home; +using Windows.Foundation; +using Windows.Foundation.Collections; + +namespace VDownload.Core.Views.About +{ + public sealed partial class AboutView : Page + { + #region CONSTRUCTORS + + public AboutView(AboutViewModel viewModel) + { + this.InitializeComponent(); + this.DataContext = viewModel; + } + + #endregion + } +} diff --git a/VDownload.Core/VDownload.Core.Views/VDownload.Core.Views.csproj b/VDownload.Core/VDownload.Core.Views/VDownload.Core.Views.csproj index c840d2b..376e829 100644 --- a/VDownload.Core/VDownload.Core.Views/VDownload.Core.Views.csproj +++ b/VDownload.Core/VDownload.Core.Views/VDownload.Core.Views.csproj @@ -9,6 +9,7 @@ false + @@ -31,6 +32,9 @@ + + MSBuild:Compile + MSBuild:Compile diff --git a/VDownload.Core/VDownload.Core.Views/ViewModelToViewConverter.cs b/VDownload.Core/VDownload.Core.Views/ViewModelToViewConverter.cs index 7ce906b..c001505 100644 --- a/VDownload.Core/VDownload.Core.Views/ViewModelToViewConverter.cs +++ b/VDownload.Core/VDownload.Core.Views/ViewModelToViewConverter.cs @@ -2,9 +2,11 @@ using System; using System.Collections.Generic; using System.Linq; +using VDownload.Core.ViewModels.About; using VDownload.Core.ViewModels.Authentication; using VDownload.Core.ViewModels.Home; using VDownload.Core.ViewModels.Settings; +using VDownload.Core.Views.About; using VDownload.Core.Views.Authentication; using VDownload.Core.Views.Home; using VDownload.Core.Views.Settings; @@ -22,6 +24,7 @@ namespace VDownload.Core.Views { typeof(HomeVideoViewModel), typeof(HomeVideoView) }, { typeof(HomePlaylistViewModel), typeof(HomePlaylistView) }, { typeof(SettingsViewModel), typeof(SettingsView) }, + { typeof(AboutViewModel), typeof(AboutView) }, { typeof(AuthenticationViewModel), typeof(AuthenticationView) } }; diff --git a/VDownload.Services/VDownload.Services.UI/VDownload.Services.UI.StringResources/StringResourcesService.cs b/VDownload.Services/VDownload.Services.UI/VDownload.Services.UI.StringResources/StringResourcesService.cs index 0748449..d131d62 100644 --- a/VDownload.Services/VDownload.Services.UI/VDownload.Services.UI.StringResources/StringResourcesService.cs +++ b/VDownload.Services/VDownload.Services.UI/VDownload.Services.UI.StringResources/StringResourcesService.cs @@ -17,6 +17,7 @@ namespace VDownload.Services.UI.StringResources StringResources DialogButtonsResources { get; } StringResources SettingsViewResources { get; } StringResources FilenameTemplateResources { get; } + StringResources AboutViewResources { get; } } @@ -45,6 +46,7 @@ namespace VDownload.Services.UI.StringResources public StringResources DialogButtonsResources { get; protected set; } public StringResources SettingsViewResources { get; protected set; } public StringResources FilenameTemplateResources { get; protected set; } + public StringResources AboutViewResources { get; protected set; } #endregion @@ -68,6 +70,7 @@ namespace VDownload.Services.UI.StringResources DialogButtonsResources = BuildResource("DialogButtonsResources"); SettingsViewResources = BuildResource("SettingsViewResources"); FilenameTemplateResources = BuildResource("FilenameTemplateResources"); + AboutViewResources = BuildResource("AboutViewResources"); } #endregion diff --git a/VDownload/Assets/BaseView/AboutDark.png b/VDownload/Assets/BaseView/AboutDark.png new file mode 100644 index 0000000000000000000000000000000000000000..a3e8957d8ffd310430783fdea7da7f8eb14978eb GIT binary patch literal 18949 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 U7<<1GPkhjPH=nsxF1+;r2kGPSfdBvi literal 0 HcmV?d00001 diff --git a/VDownload/Assets/BaseView/AboutLight.png b/VDownload/Assets/BaseView/AboutLight.png new file mode 100644 index 0000000000000000000000000000000000000000..5f5802eaa647442ea127c2f2da29d8d869b7e052 GIT binary patch literal 45105 zcmXtfbzIZi8}J#3T!n#G45ZX65`utIf`p2wG!h#~4W+vV(o=LOsOXR!AtJTGC;=HY z?-Zm_932-a9i_~H^n3Wd@B4=z_4_>MoTuxYJvKGIj@&P_9{_;VyK&VF04|l?KY#6o zUrNvXxBvhm#$89pR8L3egkONKi@TRI08%d^UufQ-UlRG~U~Zs$Ms)tfx92(PgSvSa zlFuA@f5lzqEfW*)w*kPHIVJo&SFSLxOFJUDTwlztw+ff1k?E zlzes|K1nNiBh?a_bT|0|sZeN|hb!f9mrVvEED^iZ>L7T=T}F-4D{_6m!HrX#f1gh; z%;DoXcT3sK(8*o<$Hei#&0_(rQ>1$@?jVqb&qcKV9N%2*lkGOF)5{S*aJPIRVc&^& zJVCdrw<5iUGX-cnyteL|(YeTuNWvJ?{qw04^+;RWRi#k=cO!^v*+H$(MOsbFrBd## zDz4}MqY%KuTTkdPv5DL&Xb+lWO2optD-GjRgJo=5Mw|E^V-H%~j5*K6&C9 zIoRK@%5Er)v}@-87?hXwf|a+8H+sR;+j8Oj>Kt|3>!~;CubmTT14@1dq8PDt-7&A4Ja|-2bchNFAg9}IZM)<38?ev z#%@LsqpCw|ODfJj_S_iU`~4%sgv3KSUOG9;Ll#a#0*t>KT+op)Y!Ont*mG9(>}p}M zOutl#hnwG+8H;tDQOnS6;{s)&N-7B8Gg{49n5{rpE!p;MMm6;{^otjFx8Wsb*BGIU z)tQQ!RafPC?frljw!0~>%$ZeBH`L;2*>b=V(>PFjiF8%=Uc4|WB+D*SF(r_^q@tuH zZ}AVnB<~VkdAr}|mU}1$OB?A9AqSg@<@cmpX1k(XgL+BbOP1Q-XHAIQK=ANWBY-jV z883hEqA|;zSfuZs)(hyWfuMt_Ue>3b-Rpv6SgxWY! zwW9pAOSviQv)@4tK(pu>*aIXODCCB%2j<^z?{XZKXFG+nTv7c}{6N7SvW&~CuAi{{ z6|+7#GaZHOG{U&sjr&=BKE_a;iQ4LB+Az*cBS3OovjiwhttLg~s0WpdkcaHuF-+V3 zo}Zh`owu=)piF9ar-v1Huzsoy*P`68*&f1q_dZi|)`N9o0y{nDv&m5;B|wYlh2+f8 z7f9jgSfyfGeF)usDoYtBENtw&qmNy;Z8WnhglIDgg8-=XB_qRcYn7?Lc04_!seuN< zKQ{46nFSUFD2KM9c|g0SfPf0?To6uA@l-uuV|fIVRTBC%(kPeJjx4Ph-`$A1t0m9j zoC(Wi<)J1AB0T6~6SjDgNST=^L6frHf4yY<8kBDkv;c6u3Nq;(0RMh(var z5<A4qiVyr-Q& z+`!tLMpzx}R}#4r6tFV82lqG^0u7d`8M)*;LPBZbQu}CE*Zp;3SlT3hWf8+YK=yAa zDJvmvRD!ovQmB=^Ja?)JSs3LP^-8^HT_2kZ#q{knWb$LVH}t<1%@i{E0YsLS#oNR1XE0)?i&sE?a| ztG572Q5Y2v^=jRV?*s=f)UkpK5MAe(jtqHaC8br1gTUuK7t*L})#7+51$__L zzp6`~`M5c0ohwM?EOVFhb_>X|*b2uc5daMjjSq*cw8L6pZLwZei3FgKK=HA9zeZs; zFb?Z;fEvR)0-(=Vm;Dp(G9y41eYppx>*tLP&`D%%F`OZSwh2Ut>hnRCrXKJANnKOX z=b#K@xOPsN>#Nt!r5#8hdEG&`dDNvZZ{UZZ2A9xdB3fuixT$;TS6N9o1eB zq;f$PJMQa{T`f(DRxJ3ywfS$%Q78j*80q%l%6C^6^SQY>ZR=NM2LOebF3K3Xp-SCO z4G0QD^))*!F;iv(Or`;DXNAFB2wZysvG&4E4ePu~Evoe%+n+oPARFvkc9AeDutQ+* z-UoX1A=U0!4E^M#?$Tg19~f{;K`nVf(Y_V|hPxZ*w^A7XjCiunOHMG;nZ|g`(6%^w zh8y%=f-CiE>ciaFubBfLo^WffO49mOb~8REc2{W#8(5ygxTNbJfw5!1=+II29KyAK%Vx06FG zqHQ9L)PR*fU$po} z1SlwW`C5Hkt6>bbA!t`%#KoLkJj?G3RoLiQB>@zOl+v;BvN+Zx1V@-?Auw8A=9*RO zqs$Z20Qk%dBV{g(TiBI|053TxOO^gCWVq{gf=9?M^kX_5zg?kzT@4IaK%Tr{Q1GuL_c63i>v}L3*gj(%FpPVJNSjd+=gW|ztMbw6QvsajVrvXL>#)h(!!K5sk zEtIh;H#pL@#t;@x&p0Z>4Qj4Jc5Esf*uo4Jc>$`xN*t|HJf@MOZVp9t6jIbTeVNft zzFvz4z`za5e$VVCo4@45Rizbkl&xq^lrv;Vbhs{6!E4BrKIFEUEIr&XZ7 z4QtzlP`=x`SZJpmd{2#VgZ>4~8ex<>#S|`dqL9XH8}ij{)Ic-zOw1-9Y1@_k7Qdy0 z0L}C3Oi{*8QI{zn?ich6!BQPE+A@I^$`3kT36odR(H5B$5ioh@HIIT8H+rWotfD&< z;7G=l?QCYeK0-lEq8?1<}}?MfFA*FJnWidi4^TtwLE2mlN{W8~+ zr(r2wNGLtQazDTs1q86$m@K$H5^|ECfR_NYP4(LKEv8Z)NEL%R>Ye<_jLw7mmYEuR zyZJ?3kp>dk%@VY!x@dL*gPsJdteX*UCJwXZrMYNRkn&X9)xvFsSPld<=tS~(Q6uFL zNNl-!46{7n>!&}vNtI7Qjz`5NE0<65xcwHKm#-|XGS#yD%_-y$8K$1#@-76 zvYJqec{Mt0Z6RazaXmEvB!(;*;}$LGlr!A4FTdhW(Y_2)C$Owl%NEqI)IL~3XwXG( zHWWIR_n=9_FS#(ktjqV6{i%kw)Ig%f1OQ-I6-d^mj1l%q(q2P)twy>>3M`{7779cF z$X#B*%Tva!N1+wOE4J>%OlZCeGs3=uy~&fI6leijC5HfyC(mhMWg6o7r*FH`-2)bD z_ctuENycq9>VT&$&ItFg+=d;_@SQO|0dUsXNH#x1hMXrpD%3{nR9CD{4B7p8W8xCCzu)c3H4-ZBQU~(mX zfDx(=sfi+12+5IsC68(vE4vRJ5R+hpv#IvP{yV~%zk4RnLL*~VXeD4=M-B9KixI(G zwJy7Z`G)DZ_Rn7c_p!2A{ax5)tT#KaK8vrci{Ahyrbu#A(P9DI*AUlB9xvSGg=lqe zk6&Vgkp0?PM0z@eJkud{cW9Cqi$nlt>1)ofDC9VoUzm6F5gljX%1V!JJUVpyl#vkt`P~RcE8`-0SejcQ zzCMnxBi)%%Nm@noLpKHaBlkvw!q$%lhN&yu5s1K9`}|JF%s?ef z6scS?B(!DIsGsQpT5(-9HJ|#LnnQJ3?1#O=T9xWXB`Jvk8;WogI;CWC$$_;*@ox8M z!EXA7Shpzti1Q%UW{23#jgL}>f){7c_Oo0;<>ES1o}`_&VaP3b_NftOUd*zALX9^A zr^+j+zmEj8p52TxQVi?}_Hui&Sdld!#uHs_psH+v$R7K$l~mAly=reWww%%N}ATNWw?^k#ns|Pi&1~MjSlBh zeE&2e`O9e-Q&p$i&ta~@^Uu|~(kCt%U*ta0{t#)@7Pwog*9Puv-uFm4-}!cW%d0nV zsdip*b>pICjim(U#Rc2HcAE$cZ*_^i-Ig)xBVf%nfA`F=S~FoG-76ujkHnO@~1a;0&`fTqz1>LeJLyG{TPAKfimjy%+q#d?Ta^)^WNIc z`Gk#?I5G-mLow!=)|#d3^=6>AE#`nir$B>tVN}h8vNjIsABAlmaq{Ubb@1Gje5hzV ztfZvQU&v=W*S{salCk%lGMU^|8dXQtSHro(%F{5HTc!9*eVrMYE2r$8L6c>Y@W;xq z^tdjfs>V{5Jm)>^hCTZ}Qvm8f0CJW-Zz}4rmEJ9n>9R!1$eB3EjDMP&ER&NFO3#Qb zP73eZ3dAuObEKUl29fr%M-b$Hj1fY)L*G!Sl=Hmsk=^b&O;p2*sPr$8b^6=30?aOU zR2;XEFE&Q)$9#d6cB0QLQ=UA#(Q!X*ITznNJtT9k8+F7=DTL{Y4i+2g0bDNhrwn28 zI9U$OhcR5=5_9;XO6XT2)HgJW%3vEb$iY$1ka-7i^fV1 z(Zpexl=v(M)06$1LkdHBU!+IBe%icUWoC_GdJX!W_?&)i_HTw}$2rW)F-FgS^*5w( zdf#$5Q@PhX8V$EfWNBvyYI0gbud@I1IDYzG5o?QS9k?2e zI}KGRn|Br_r|oyJGQpfF9y}h{8P}mGY;4RmV6ma1q}E@|96{@0&WxBgeGXsFZ zn*)6FaF17dnRgi1h11itEe>Mtjn?M84-I1fWWo|#V8MW)NcKI$RW<;f zA@9#fs3RNA*guVX9H_&tVsbL{LaRiqZrNDGLL=+1Z)_~7pna&V4#TpKW(ngy!mdX) zKavz(D3*Un;bvohnGkD=c?t=OYs1$I)E`OgT%oZ|g@Svn{sHU}rfnWL5)%tBv4dTkHimn}5(?9XUy&cZOi}8pvUK*cWDi=i^f`s~gwRI|F6u99FhyRgrbp zJ!T9e;pLvxbK&R&cefy|;tAzojQ>_)7>ex=NxI)GQFfrZ*xq_8ik`ni`}VHPF`*-o z#BYf{v+okNcPt};oHfw%d(V-Urwj*llZ{=e2rU9y+01YwW0<@l!zJ5xbt0az(_eOm zMb_siyBzpRXP0-K&UjdEP}ZlJ+%T-q8i`^WH_h1j9_Tz+sE7I7_A_HIGV9<1>lI4Y z*PibYH|Ru3+Q0AW!~FS zbTf}v;WUFx+R+q;TF`v%&H7ENp00T1m_Vl6L0CvHy<1xFUQz z0q@fBSsx+1Fwcx+*pPdZI583;rkZ){NgmqMxThkJRE9}$wZ*}AmZ}z|#oHPVhdAe6mG3KVH)asYk}_N)Bwyv? zuFY6xEbLSE4v=C0H;d+$<{p8h~w5v6mK>{yky^$N2kmmN;iDqpuk9ROuN z_)6@*{-mxyYeUSjGw~0PI>6L{gd+9sCfPfbnC}0hMkaSFD=CiK+ZBm}j$ChY3!F_H z_o3{a3-YE1Tl<>rKcQ-X>560el3iuEHZuZ+t6l!IFgGAA{|wYjR1MEshM4mGQS+rl zoeEEeBFPuBEzY73{_%Avc}DIs+n;JD zL{u1lRx);L;q@U?r0|!fO7;IWIH@N#Ealy-KGwztTvDD7-@cDmgq6;*a%VOg$({A+ zMyA=8e$~?iZXhvI4Wp3xXp=6re8PyR-5uwWs)zFWcfQt$U5X@rq0832UQfYqIXC6Q zrZ@+txo;6StH=QglUk!cJ=P!UBPw<72)ML22(9qcSDGo%8&M676HY7{*h&38P(INa zlj1ZUPg(7(rKLehk3i3^NZJFU1&tr!vqe&Xga50X(p-0G6B8c zrDK((+BJO;_J#NbE6s-Wl8DbO^J}K;c1E5)ViLy7Nj47y4!O?XF)lGK+%B152Leo) zF1rl&6L&he(oVt|Xk94Y4A6q^8q#YB_Bt=DKeaJGFflsEfy$@%NSi9#1+^>bnG27z z+`ePJItcgLmI~WdbnYaR0mxmUIYD!*U6H-VO_!t1l(hpnqpQ?djq0$bOK%J zVqj)LZP}SIn57865oT|IRM`#X`D2rpb(=GGNLiNN&Yw7G_Xnt9#@PH>zO;L@ZFNG+ zpzODpmEHG=tJgAiM?@*Yi*PWRY?^j>)h9P@<~t?t6il2Re>A#IKUKp8{05@_?V+{VYNaB z0yE*At#jWgV?24s4(qBT0-Gp1lB#8YXw-`r({_yg@XL`dd&W`Cpc|7OZds|F!wAgK zd~aD>XZ4Nq`5E@3pMUPft%YSInKL2hsz)VN2t_W5b+Q9q0f zDBD+Eyxqt7&@hx@1p8H&&)&WNz4V_lVxaI!!0X*8$>i>%=lS6eXFSQ8NLP^RUQ=qH zV*b^c8W>PTp5O&Fi(L#=4UJDPT`bvM83BA?vp7;{?AyEdEP|nXSK*?Q6en$6)FN{- z=W@Q%@e)3jCkUL4-z9p=E3)Rr)bJwZla=eV zKTwx_Lq`z!EEmsT6z@$bMYkMl1T>cmq;znifVPJDu_J zK!JZ(lYhQ^txPsFK%q-jA`q#T?d1OO6VIjF1{r~~6gz-ht9E8@&a27yCN-@@@Y0G0 ztHV-aK^noR-*JLYep1a7TgKyX4yu)J zp@&@QGZkBeV2q?i|GV1u2Qwsm%)Q|A76_blMI;@ebA0A{Pgn6|)R)`4ndPrgA7ewVy#4NGKJcuM55gv_~3J8@_E*a#DY? z@lv4owl&*B)h~@^JJRDNG=m z;6n3Z>>E6&FCky*>qg_GeSm2smRMzI)o7(j`?&|W^fZvoHTl~fOgoTDcujyrYaDZY z^o{fVfGGNeW#iv_fy-b8?1*$%xZRaU(My;+R-+3nl|F$Bt*XYN)n7nEK5O#-9cT6UL01(I?Iv z6*F%GOEWoPORZd5a8c7v;^cVAqK6enS?Wq@7giwobQhC(Ja9-2(DL7TvrV$3ojC%G zu^~DKaUaW~*{4(;tiMGRs1Nz=0RvwAl*WlQv*Zg$Ex3<81F~;8g^Y>8lSz4PSfuc{ zujd6gmLPhQ(dhoLv6rVi9x^nM*TIp0PY%Xj7vb9j6kI~c#w#Pz2C4Dn4WT&DQJ_Q4 zrna^n)EcQTbj%G0aQIDs=u{M_hmF?x8@J|n7h6Om%ie?u$wv_0XHhi+-aVJKlPlp< za$Bq1P+n;+oP{4B7~W*w{_6f3oWRJ-daH1$~9KU0|uA3U5fc0dWl%wnt`*k;mi zAY8gQ$uc8*obLtdv1RbW5UfsFFPgn={hw`;<|e|W*^x2r6IDT5yMg7V!%M=M1?xx} zt6bKP;&oT%Z`|K?A=q+a*4whu`}M`QT;9PUnyWSYwb#SbJVXPiU>`6URLcBE^`bQ` zqLEscvlre7&f8>utF=C&kYW)l1m4=KG;fiX!m^UN+8#3Q;g8XRHXbrHRF$n?)z=L%6gUA! zV8NncG_Xq6RIYH*F%@B0a1lLAO>5u-!N*5Vx8rGM*)-}k`!VBJ+{%YUM ztY#DhKIdUAJz@S}M4#b;Xl^@9QRFNqEkd2FUg5|k`K0ZLKJBjs+sF$>Ml<8XLMvCk zeBA>ujgggMm)Jx2q+kVy6|xq=`z??di^C_S+p9fa>p0Eu#~%eCerkYOkVSXSVhwtP z(|IuGy)C!uh)ErRTGlYj!D;4;1-r;L*1L|t?cAZ}pSNX`We}&R$vd@S_stYcP?phF z4X>z%a1LqZl%neO&;on4ns6s-1S_}Hnam9Y9Ie^-2$lpZg@>GrJPW6lA9P48&4PA~ z88-ef&FPP}kN)|DwIFOb9Zp~O1;#QDbM=JYuCS<9gOQ5ll9>E4<5yIoQDC-N-x zgDe@6fbh!o2n?O*S*G@^nBsH6;xC-;%De}*(K)fR+nJGwl!jBQ50hjAjh1!|CoKDl z&VG!)W;yk}(T$mt1*%?INC0}BnwaFQS!b~T9rmGJxW?;SKW0v`o~xpUh2VJ8uxNo) zbC;45`l(Ii)&8>o_`C;fnx9@*k?gmSSI7WB@Ug2UIQ zvFe+sCc87fC*A1TEUfmcLtc1IQX*+sii@^6Kv7pN<@z*}`8y<{u>%1xo5_~)rKmLS zPcBm|#tL45He+qSMI^>~U859cIY~i-zawU2=c09j_#$y;W(s({ZVFa>(fKKa#ECow zfXmlWvTy29xO$2A6wZjHulo1klZZlSr%>h13#iBso0n8h$*VpADqZrb^YPy${vi?s zmfPTUe{p%eV|Qqv?BG{Lo-A)cgjZ^;rOc>?lR$tG+fe5(0Q!CuF)U}075i!_>dgl@ z-Z^tyrcm8KNleW%weSZ372#B zFB>+m2=qxU(Y`P(Drt>g0*2({Xw*8f4@>ab6;jtt^#(VAbM!|7=h!z8k>eecu< z4;dYJti(_sLz~$2Y44OIqY=-mP!e3c-5y)(b;;Q6f-MYusS)iYG_eK3g+pcdQ@;q0 z)?p7!%PVC(;G0|SWTrAj{)bo_$$r5+nslH2 zCs-$tWtNB0y6`Y{tv-2M+Q_JHshttC8#!_1>ZM_R>`=I0R8H9SDqHDPemU`(_Fs&^ zm-pCzEZCoz2X}Y7S(l&Vk8SdBn8t{%cz(YgX$uE^Ki}Y=;=CWp&b8?=g7N#H$-VR@ zt)}wp&1oBcm&Wfa`^rb5{LYb`Yt^>2IRrH5@N?RZ9s&$X_SN09=Ua__;i<9Pnt*63%dS0NEq^&=X3eTj*)VZ3FZMZ`Yj zueURQw9z_8tQv~f6(O0RFTew9&3*)jGiA+ZBU94%OCE>n0GgFTKg7f69`G z&d%(sbWQ*U{z@pJC}$Ih)1Hj|bWW?kcK*{rt*_zM>HkpkW|2iyvYEmx3E$tX4X@K6np(v=rYaYHD`slJyZ-m&ykTlvT~^Xq>HGXTW8Vx z`)2O{H)C(7X>!bM;O)lW40tyQ;{nG}i)>1knRl*;;*uPL#5C7O6t}-%AP1Xtm?Y+9 zJdDN)2tHq{yN(nIGAUN*V6kI@QQtt7W6_S5{y7$fB4!f_FDPMV^}ou_@!-x&4V_h) ze;@Y33|?2k2UI&c>FHmU8I!%x=z&DLG(%u^Mz*8+BFfinFXrj^r-0z1B*q&WNr;lpvo1aco}4)Vwk*JqKE*VGgW8RZEF$o0&PFa@JjI(?yF6O%lcw z+M)2Sk&$K*-)feV4#K6Sk&&nM$3?5jTMDi_^>c0}L^0cdbWwP}LX-_Eo1LS|TI19~ zz`XoI`+PTXEuwL#%{29FdlF`5vuV)WzpsH3Rtw+Vfm6$mJ!awURjPGJVREM(5A83_ zx3`jf{aw_2$<+$bmT-UHLN$D>_sy>)g}uuGla=AvEdJWGt_|Vpf8csS@-!p7W5-2( z7FBm_zk=KjlkT0*`sHCmhrm<>jOa@I89(ZW6>z`q=JQvjb^Tz-;UQfLI>DqyC#?&; z{*9k_t@8KehO{u}7!>_;iH+u>)>~G)S~^x4&i=s^gWq5uLFq!p{R(*W>Ceu__MPUp@?^1mUd11;YlZ*t??%p4$5~VYMGh60 z7G%MmYg4eN_Dy0FnC(cSgrW__-Kr>*1dAMCf!)FDSfZsqcGOl=O|W>gCkcm%lW(2r zGT-5m@Y%$Z-6KKY${H*_&*Y`54WlGcHqsye$fEDxT%XL?Rwmo`^?Zdn;y>3&GPNwM z*sLR?LC9Et=ZzW7>0&X}(TCRNHEm+I4G*hfc6T0kJ>QS!_gkY+4K+>(OC7hWOsR40 zwuQ_i%Zn$BR0CTF+pQUVc-q~&ha+vb^C!f;T-qf`lR_vagWR zZ6}SX5b5>vd*X|6k#Wf0FolF*Cg&|OeeBf&t?e|Mr?vU)?L=ek$cjQLbm!pBGDi~z zYgay)#F3nJuc`#Ij+ZQwL$Tb=xF6LI4?g*KpSwp_dOZ1h{%*J^Q;V|D^zeE1asFK- zTgVxgxB6Z7RCblEjp&ar&?iz=`HN8LzFoFrKfc7~Rhna~`Cq5C^VqFJURjH3Ger1= zFwp0tMc|qBpl~~Sjef^7?UHS?V-P$uiY6asa3D(2*Je912~lqiqSe(7N5bYTvSA1AHL`e5IFg)&Dt;G8@AIW`g!|cF&d#&FIoj^b4|)8~ z=Wg}h)kj^}+EVmKMeM`M*Xz&tiD~PmntlI+JBgW(VxrU)*HCoS9>aYFuT4^#3dKrz z6(>W;HD{pz(+F$ERTb*`(k}mclS;@5XSg~_xu`uuFQp2Zt7G) zjQQsRdNl)0u9Nv__~$Onq+z=$D)lcL^v-9$MXt$^YgjkBhn+;~E+V=2YsO*i!mRY& z8+DpEtS2e!Ic6OXILYWU^r_0*fy<&6k+nnm($|*K@d5*l#n69&z>oi!mB`qQ^FIBS zt3Fl@tq&?7;?73>Nuy3{zdP*u|CzMJU_a^T8M@&B)zQ~7obX~8g&!6>zGmHzmB0o8Er7>2G{;n=NvEQI2A!F_j& zA3+Js^Q_^tPoL#N-eF}(OY1bjNEF&6xE4y-utBn;^H&G9C3DGQm^vaEPmhu4&bCOf z#DCtPGudsBRt0vWwYR0_4e4v%HTb==k}o;>7LJnVmd}0~U^UMB@<0p;8w<&_rDs|) zWKP?~M0(NpME1$M`q)&nCqp&l4OGf*w*s#|{%>-9GUQ6)R#j5BzKwcn^vuD?JaC>; z^8fT8Xm?Aqhv339+TYH{^hGk zrLeHdp}yUema6G$+1>VI@J{e0wr3knmTE`$&}y$~Ax_%O?4GowJkyff<;<{`3v}rm z=H0$ITggDl!ROn!v>Io&J8SCZY^NM6&oQAh&;KqqZatwdfgFyW-Ss_ylyr+eEwj<= zfo0R+>mV!Jl>yrbIMB>1QbUnR1qHhSgk~gHn5Cxb>J(93XiwA{er-e96Tf&Gh9Jkc z@M=GI*UJ19$9=!kHLRqs{orG$F@ETm-z^rhwS`3>DHt7hbKQ{L6Tu0i4UOu3GgCt~ z#3@3Kw5YWz6R-5jN+UWsf5ytrO!I%QIN;kyEW22#v6-pDI4;F`C+G%N$9TW+9Td8S z`T=TY;F8Jt6ftj~LcZX~iW2Q46XB8EPEWgUkO;3g{X~-lmF(7)g!n5jjQqfNR|zO;C3@F$hpFo_VlcxwpD#uraPBLyGo!g31-3(mi3Nghb32ZbOKitr zQM9o8E+OOI20MW~ZWJSc`|;Kpo4&Rx#oCji+KZXPALiV<@GiiT%>$*A|Fd>VmCWPv zb1X87u9aa^#|u)=Z*+HF?)=!2RH>1ofQ)Lvh&tQPf7y#^6JcC%P#YhJs8jEn2DF!J z$km@WXY%B{B?c)B-M!53%P&N30NU?&p6r{eOWEzQ=r&(%+sr!Bg#rOxU$)qR) zf%zx~*J3{_i$&geR}WG#rP!um3U^0A3CUOZQErz%aHHbxd6k$ z1(I*ALjr}nJkNlbw|qOsFR1j@@FWLLkNt!hwmQevjbyNFeIO!zX3=tSaI%%hwomq< zH#v}(c5`}%T8v0Fm3RNc(X|!kUqM|rN)ZJD%ss2jo72}r17Dv084%-Zv1VTt(=LSD z_nWxbYml5m-2|zZU~+h8l5nPJp~B_df~}p?e@~f*e{^T>A-6Y z9gR~@&S)0}2Uz>oPwSWI*;|U{^5*`c?q&?ygU~Q`p9fE#)%kYPbyctVXgqwddpXK< z!E*Gv^fgCatQ}h~Z{Sa?vPzd2BZMrPbo)@0m8gXsbZEopr^pHLapA|S?SVg8R9nRrQ*f>-EG>* zvz?vZX;Bv~N=^43`I1TYtX!pAE$>ZH0s<~AOvBahk2_T>cMgNZ*|UqEb6b_I@3nKN ze?B2>1jEEP0#vUod2B&U^H-=tbsz_(V%|1$QcN>_v%w(!p&tetgHTD=XgiIByw+~8 zzE0KHQGj7;%RB7^2~~?#KRw0qF;Bmz624e9P6bE45)}2ii4ldoI9I`i`FFE2{I}b( zaS99nOQ;iH>wrxUd-|^~ay(-5sx(MF00%)n7nC0T`1KUFn+$yf?ZH6g;`ZA*Gs6a9 zGPi|;X`D^9?LL)H+Ncc}M>lV=t(~Ee>hr_io;S?YBpqg4f5`!xGAvdPK5$44YbP}b zqbB}!QPVJZ)j}|FW}F3y)7yje@bpTOdWSPFZI3l7@?Xs`rO;Of>wWTfeFj_MQ&UH# z9U9)|TWbNs`z7RFGUv+Qe2te#F6x_$kd6etF4i^zDm$t*le+<>zAF zWBmL?gcW1To`}adDe77MC9YKc;LWu_gHbb+ByAt}?hxhY9piDwWRVDnY>uC zq3KHYiS}HIl+Z1^K6|Zb@Nknro&>1c40xGt=jXE5W)xgHjFt#35LBNyeQad)p>=9` zt!uW)GRHZkrSu=sK^ju~L7Y|g6jR(&_w&9GNww3hqOZZLN6LDQNmEyEDlM7o*~{V6 z(#qB90&~C4$JJab+IQ(})8Raq6p_>^)eqp(Nt@fcm(lgIt-T*<5s`8#MGOD_LZqAr zA4O88PHN{~4Dm7wsBag>-PZc%8YKCw$zNLWc(;<9y8lSpdoyiNI299hEo9|x=`ISN zK|o6O=gbQoLr!kl=P>I2^{silm(EE_4lcR|xh8n)8T+MinsyMko-BU&<)3n%e)kq3 zbFU$*Mb|%27BJUz;Ca#Y?aq9c&L!%}{Zga~w5Z9=+DS)=?ecL3pYLt3{8D`U2p4!L z@^UI)d?W64uZpCaM9f)#@G4F*G2(2i{!OKYNj>}1`0KSY>y)hIsnfUJ#_C>w-SaA| z=4#O(_lEcy*EwL?aaeEr25;xaXI`pIep-1g*+e2VO)xz;oFFMti#`Mng?D3(2m-pF zdHPSQNynVN157{O(`zJ7nZo^}CD;7V@urrq6;|Ha7j|@0|7AM(%DOM5yfO7ayjy@1 zd>qM~5{2g`oK`d7<&5jRz7?DLeuyeBx%ONTNPTzJ?YXEe$pQ9GVnvHmQPQ z$e8yM)bW?sdxIrH^LH+Bn)YbvsWfk=M+Qa{*m~8EIB>VS^a896gFOc=2#N&T!POJC zA2@g9^gH{u{C6q%oqN+`<#SYd=ifj%Qn{7;W6#^i;yX2hFGKYLA_(Nf;zPQXi^c)^ zgo{@ZmoD$fsN7v5Ynvk~^ZJOtH9piil>EMPzb`ZJFBdO~9hKd!Z|!dV_Dt*A z?e8T=L$mi?x+$EvnJ<_goxN7w7~8XYjL0ondoDS)YF=0`E6XWX3Njd~CwEAvRP$nt zun5N`Wf`cKn2l#W`P>AN6fu((=EjrG8r`D7ilQHZg-|i1qmN&$+RJi)xS_16qXj$O zM#L4P>1pvq={T&)_gO}d-KHT5cLNq*sLS^hxvr{g|kZrHV^mT ztqi^p4fntMcNuXK5`C)prI$@9HBsv@u|Pbue6G%VNiQHz5Yl<>AB<|tV}QG6`(ldo zwp(9~GMA|`4@O0=5hphkz`d~qD5YVZNDsPvkw11rWThD%B-TO-l!S)2) zDF4Il5Pm39e56Y2!`p6OOiqVhK|9!{#CJLvRVdfjHINe$T z?fUFZ500LOY;PCuYFA4__S_d9rdfII`PS~bYeW`?5CR>EZ$0_1)ZmAIf$y)zpE`_G zeecvm1xcdkwHM)h(6yWEa%j`}`;>ZU``{#z&Tnej4#QlBb!nCR>8 ztumV<-XysfsOy)v(hm_q5W}~nxbp~hM&gQ{w2FygK;vA6+S22}bP&|<45L8aKj2la ziuf8%FrD>Hyd`AfVNl*cL?AWf)Ei2;RBQARP9VC{ATIo|C%oo#tufTjfUo2r%v^>p zew>TO_0RiCjF+$VI|Ysrr(B>U9nJL`|G|&dS?vKqBSv~!Quvw8h`pJ&da0&f+gAx} zN=v?%(Xzt_aEaemilZL~xxKd|SgB$Y=te+SZT|z&8W~js8LOvjZ}NiQG}o&=;n@NR zpy_8$;D4N>)*0d<@HBeIRibtTJMa=FV7-7CDe(RAlCxi~&iZVfUKR{oVc!PC(UOA( zhm1l42r@QXGd9`fYe)JW0>_R+m255V`}@Kw=;2hASW|@dl0ZyQay+ZK(vb{aS>w2cO^;pL(1Ws$+i*WRDj&y;< znz8425ZRY9J{9Kq3~KWCAXabNn785ALn&oM527bI+vgY2r+mORZHi5)$+u0PItWh= zjF!4TcDDu!yq0Hj=5a~r9ijRk=J6kA3=%~a!#vxf4Fpy9$8A%lCT{~=z4;y^ zwSSO4$9ryiH1E*e;32!F*B6Jwqoh|phqriJWrq$DC9d9F}GX7o2v+bgy+Xe!6ed{v8 z=0lI#xXH5EIY5)E{)o~jSquI9NlR~{p<24yqG3gL`w`&sTfQFsedHJX4FO2~ysfvm zY@bs!DP3Y~d$x06^VrT=x3*}LfF?nJxwd4qtb8u0S(OlRi5Dp38tHAD@*26%9IY-H z(QsShOS;;fvqC3a|NmP67gzxvzAc#9{c(Hm zSy9(oCj>@{+x2JrrKRIT8a~9RN%$+c1+OL1bagGpzq*WnpLFIXX83NZPW~&N5|04* z09QiI;~eXzm+#Ha0*sG?NkF+^`mfjG*HJqXHc~1MDb+p!UqhPYIY4Skg2dV*=Hf#fec2QDkxpSrJkQK2pMG}Y2V zDE1FU&?^4Kt^Q*qVnZk<{~x~IGoZ<(X&An&oTDJeTa+eXi4>(HAXPnx80o$DCLw^7 zfOM22C{+W}LPtUgE%YvmfCvE*LN6jcRDpni;I~&e_wzjOpO0T;cdyymnc3Ny+1Xu> zNgW(<=NwXxy<7Eh?<%rBj=W!4jr+`7`0M<2$K0V?!m zb(e-$FGO+OJHh~+uYa^VSGvt}T86W6LkcRX??==$`^Iobb?eqXzD^pHMFgw<$Xne< zasrcvzpnclQ2FZNR^x&X)?*ibpMc^9;t*U+3g-fDwcoXRQlA#xU-#VF9vcJV0vexz z=@;`}6tk+o3rkeg9dYd>;BNeYu^v-aL`| zQwz&es{*C-8#7h9{)$w_=r4*I3@?4p4XpnMHDFIVM1KWbe*k7L5eUmfLmw(C{^v*x z&|IotW>iOnBx+q|@OOD?O^&1+@*sfaU?<|~9Wu*xO=^7MWRM*Pm*iR0Oi09Dtw~Ip zhsaG=zn<(E{H)IPuS$3rGkq_samOakycr{z>-D zK#BIKlM^_!`uf6xWFH|}4VsUYRAlV^@WZ~tKZAce*x*#G@t696WFyFjv9%5AC^eB$JRv19CMz0Qbjxk zHMl;(g2nm~mW$~LSE)$5684wJ$&UFWK><$!H$?<43Ym9>+tdWI|IRS@KKjf(#^m}* zXg=j7B8S`C6Kj7>>PEW*QZIU8hx4JEEw&@ZPpW-_XQyiuX9uO5r^dWD!}V=FrLR0= zP$^01u+=?@>*tzh<6Wj8)YlnLfg3x3yMvID3a*RejGvyTk1OMn^)E;bD6X2=92iZr zF+SN5yW-bLyxdOhZ4>Wp^E`VD>Mi=59+O_=D{7!yR^cM_>zasZ)$=L+2u%=nw_vTm z>XUdOikW}lglJ6!bB^(cfhxJ+Ww1dBl6{8Lz{Chy5Adr=ed5NNwmsA3>zx)^7YWyP zOwA(9|5EV2on$+_;#Lzz%CUdkri$7-cNYG%A{zG zj%XtfOhAX;b5(s}JOef*lZ*0Q7zcGV*ii#pEmyi!+-g`J`d(_kjN~-Q=P{wM;^vg{ zz^(#VDM15N&6W1sFEh&hW0I?4)vNnj@V4{R8V8U_25G#;{XwpJJ2vt0Keq=|kx_0@ z9Z3&CJb+yhY_Z<5x1=`KSV3@p1)~p^ZeHAtw-?Yx-7Gsj9 z>f^Q&5x{1rRnj2^|59-1e(1KQCEEiU2$8-{JWbgVc>}V$phr&&H&Mo~rxlfd+*8(- zX#652;N*^d2V?{SZgDh^w+4N-0Ft?ysb%&ac1|WO+g~~u91;PT)&lF9C*-TytGhh6 z^prKx^4EgpB=R~`gF$6b+`K4C=1P0sQ~)*`tnJ@S;@!`rL=uj83TLgkkQ-T+~s-%p>5~*l%PZ! z&L(ohpudtH?+oKuK3g1vW>zrVrHK!Yv(mUa2)ZLWhW={@vPIMtcZH4PRr(3by!H`m5xqXIf zVR5SP{~MOHJE4AB$FoyzN71FA7jP{WVAl;wc#1Tsh_wCB^sOz<1QlRdVY&>F?4k)r zWv_v4NGSa(x9GfV6q6#->zdTf_AX8N`CE4AR1kx-P5ZaMxI9GK1qDMo+sEpuui2D{ z-l^`oNw)KFf6V?5k7q~Li(OPA?wHKw6$rq#J6u6$`fB>FNUZpJ*W*4|8ti4%ZT&B| z!!`#5acthfo^H|5+p*f%L@cJ{l=3UUnAUc>ZPo&ke&*!@AAwO}hVFq>0%*Qg{Y85D z>y@&+!KLV8o*G43520hR)5cc3j&H{%bHhnB8i{>KN-`_Vxr(&o7 zm}^Ui1;gO})=E}|`x0@oOYm<>45{2@RBIzd&pP?pbZL-M#VQov7>lah?E%9yX^ zfMcHakej#;YNv0gsp%Mf0sTq`H(0w_@RMcIP*)@H!$)zvqUL+*25X zVOdQ7YY*Kojumue@XCH5hqDt<(_C5V+I5gqtox_`b{pVTS%|HGv|G zqG6)ztePl2>Nc>-K$CqyW91f&uVDyv-{VNxQt%{n2^xC?%+vEHp;VuH7dzi8jUqE*~p@qVrmZ$BIE9n=Dh zLXn50e8CroB3T6}#iW2#f8f?>#c4sLF)tAX@&bT-<)JnA(AOpE7Q?TA-_WNMV7P|i zs$Tbs7eWw{G`(|afP3gt2=;=wgPTapECpfT{_d^NOStv7v+*y|-{#nU5fS`k6-Fv! z-uM_nR-^%X@=wuQJcucp%rgt&2g~2#-^23!vD&zp z7;oDR@`6EyHo70P^>^c=jFwsL8Pl&E$Rc2=fxYc15Tz3oi7ihr(j*QEFx!^cAHp9_ zobIsVUEn*tbEUvbX1?%z>)(94Q=E|i=`WY2&Dfi3fH_d?>*_=Vh(8eZASVkV)rN2h1bJsz8w%O8X zlhB)eg%?S5(11ag&~b;7Z?1N^Hu~DGq)ay=2sWmlb+8K9QJMw_l9RsKeqSWEOgxzV z4=0YT)3Y+x8xg$XH+G$Y0|fq>f8ND9wrF&jA=Pl*%$-%RjnA!}3nLbiqnzhpHkM`8 zYXOgUp564JY8Z*rZR!&E6*Re^g-X)jzLkcfEBy4W_3qxM>R1x8pL<9U=2TEd!9zC} ztav7`tu_{e^gOfCzL7}W`3U!nI_!CaD9|qXQKRbssm8JuGpCJCy*z?FxJx7LhFuyd zsf%sv99%3ofNi8L^FiKa-FB)u40|tQrk-fT#ZCxEMHyAkI^dAKMc zjXh@cdWc(ynYcWfSaZD{=_W8opb^iYq&Pf1nTOj@s*^{pYwC!8d&NbsRhW_nx5ggI z5yYlbdO`(&XCVo)wSn5YU!~Qn(b01rcajVIykowghhobQzgRgaYnnPUnrK6t($Iya z5QJBFM)KlNxK&Vv=@Kh3Ned z+c53$1tzw~tElYM2CJLf<+dppp=5Cim;_<(?`w>+>O{>_w~9Bb2z z4$K=wcVoal$`Q!Gs*T&*70dN-z03lXvDVg1Kue-u*m|=W}tgOE?(j6?+75+4XIHNyf@L>^|AwOeo4$u7v7(bH zx$d$gaR!jHK}3$H*cdCUhI%4)449IkrblvOJ~^m1JpWpVn$qdwY1~i$eXoH|!c{Q?9?Og~)jRz7wN{1L?-Pf*|S{qUuOpVJl4l(OyKyre(TFD>hkO30yWMlwe zdwz&{NB+XVW9p`3(qo?^L5kHv?E*jq`u!!& z&m$ubej~WlN-OD#y_Po}_j?hJ$pPTPCl4Vi|D#sCRqwZ>(D2qj2rK3x&SvFrrh^hXjv!ZF z;{K!Orj9*kzZ*VehvvMHZ6_|N2v$@2xlu&CVqPMm?OKhE^f@S~W;A|!&x#iWDTCp* zVWb#ay)JPumqXSHV1aqX%jv3t6+%d=Nue(Rg z|FN5VT4$*i8r-kw{rAb|DKm5K#xf~n%}j7eC1bEai8yo%mYWzrHR)j7v~Y43_ScLD zIE_}<`@S!05Iv}aT?CrE^V@cetOEVURs`aA8Vks!t@hTC6LZFanb9nOlmJn&LDC|& zUXlLvR{sM15r}i~07SAiK7SFD*j6r8Gs{jm$^b2`d_w#-r4QetbDdIwzWwkJskn%> zA+2yF=M8SQ7IEVGk3!MnucsT3XP8?Jdh<5+)Oy_@V(ajo*mabDna%f*l=L$>|1D_|RGov+OW zn5frAzV11kh3>5KNi2GQ09jnVMDGMYda&&f+Z&U7E#%sEEW#e>FdvdlnUCj!pqG%u zKu6o9qtHX|hCkv+jvx-zU{`7=SLYEA)&Ss>EdylCe4m554!CY>A1vw`pE>P;y~J<{ zN{`ACGYIQif8vI<2IOd{5NLM-B#23ffM5E3@^a~L4 zOP@%+`pkA)0Sw8km(-UDN+(W1ciyGkI64Q^qaJ8!Cm^AZkTQ@z$p~qD$N?^$DUeXeDHK|BhP|0_|6FklfczP!Rag@mbFYkGV}wzPY8T7~N^ zJ&>@?0TEF32$0hSkTcO0D2}o?-xyh#_5vfvrI?|n^^xT10FhYHsR&i&9>*W-N1(Nk zNH(w&^uloaRs!*yA3$;axs>)3}VYHyK{8+?&uN{SZ`43){ zS2E8!-l|t?(}*4%?SO)$J;W<`B^coUp^$V!o^8AwQ0^x|YAnbE?IrhFwc_8y-vSjU zUQwXR^lz1Wjq&kpgD|rME1D~Q##B`xE|Z-f{)&Fm>}+hQGO)*O4ZjN5o_-M-x6h_!+*Q)gu6#}4i()q4HPhF z(MouSPHQVMVqcsv1h%F@nVW}1#gcWaog7{Q{;DslEU!gt^I19V8e{4_8YN=gdx>T@ z{~?VtS|U2U0<9q7<3NV~w}v~5Y!$5jUN8GJ)z8vEaGm~bZy!(eYxBN_;$KX=U1 zHM+y5a-yt-ak?=`y-yiTK!^d(a-a`AUZ4;(U|7&h0@1MJb35Y3jK*hAnl%+$rf@u4 z1-OHUXh^2e7=VBq)8Dn%?s(XOzf0rWD4NS4oE3M1j~4r&^bGZtejo)?dJYapIatu5 z~7yjR-`e-&90XkLfwg0zW36MUH|G`)C{}*3giPP|! z`(O6|moR{nKm$BeafGFZh6NzgvcRF-^uM5?yayH%;F(?o;~e3MLB9z;BtK^&;9O-p z!g$((Mz9hkAS0!Q|CevZ+%f35|2AJhqlO9w3)-|i0JI>O0$`TC+Jc>cbeM)iVAJxS#e$+S^rKEj@l$6PvCVF%Rc-8 z`#nIHG2tpkaRy<|CGbySW>ZyIP7i+^2RaAv@B`5E;14s8LJegPdTd-eM6wO{z%7X7 zA)uNi$eKD2PmQKhu!D15B-TwIAc1b6Ar&`fd4(6SCYYv0q~;%iwVZEP0m&Kr5-b_u z8^MD7!kGia2v#Ya^wI6#c4LWtdL36efC&rM1mGNba;K5kKgA`5sUE@^g6ksyg<`}1 zg#y+QczI!;(F&uH*kWhl5vpc?^0$~&FCE`|7q~C56aX#48m=lP!2tVQkf-gsp+K}p z0$6G=cd+7CaG8O`o*Gx5C7;jLU-#kP7CQ!-#?io*rXg~sHqnP)(dFaWD~D~tPrGEI zw>@^bly3&Cq2Q07eN07Q1UtGtjzP%%hd*MU3YCwFZhRZkT zFM(D;wyrvy6Dh=cfLsJ$H~gWpI*)cVnEEuN+`qK-euPA)==(o!D>s{(XX*l6r2jc7BDODi8-f8Nu{aV z4XGfc?$X2HtnFESb1Wx!~0gr_*4v;4`A#-3~ONV_^sDa+zmr7^xE2SD^paHq?;M1<)kSEc%e7eqhnJ?~l?V=G!QN$$R)l zz|aNSI@$Dd-i%_XL3H5rk!#}~(x=hks@EOtRS;Tw7MD4ZY!klpFfpP59OnhFCpQu2 zta!l$t?J&2_q{HWgEirK=ce)!p3W?CDavvKOAA6gb3d&>q|~~V8MVIS#upU%OhgsGUNt2E{CdPt~U6Zp!SV!)iD zR*S*=C%{9OT6tmClWB(@Pp~1-cX;R1)XM$)16tj2h^nQ9bFXP&SF#Q+fx|0+e8t#n)@0e%brKUw3!k1wSfX@R!XBKwCr&n2#MDOg29YZ|r z?KEjIDA$ewNsmB6mrBYM;g3rmfk5BQIhzj4Fp}f0P&E!<9Z_x~!~ zGFwUiS(P5fIH;(H*td~_keS_m+kTk~#L|7b)I=}SMtB0~OgsoPQBrS*kvusPrXPvG z@c9RSuzK+KiRv%|Clkm12h3FdWZQZ1$nwE@t<=MCR@*!XXE_kPF()O@e)t9tVEz<{ zf-zpJaZXSNK`syb%_M$Bc+ICp$0k%u{S(xaliPyLt_`?FMf?l(qbu?Zvx1a@%S$P# zC^}o@z8FnCbdHEAYJB}7DUx=vEx7dU;f&hYrav2dGtO$mttM`|ie}z!coqHeaCf#O z?UqP1U5W|_8}3gVgFH6JsUj-$MO+)$l79o+osS?kU!xbE8M}uqVBcz3^Rq**sH_X@ z#FcTkCmv48VePEGf_YqGo6t|5xt(tluUwE@L&pL3EUAV2aI`XaaOvcsz^-}liStSL zesX~iJc3Z?U;zkqPWegRHBYh8#_GBW+FozZK(2rYxd&xV22<_*7v#~li>LxYzEJE^ zn)m1>U$-ObkKZIKH}(X;*Q0<)g9kj0oX)I1m05E%cl*GM36`%9u5s_p=)1WpAj}j0 z9cl2NLzEJ5XR^6l?7Hb@PSN<)iL%AIf7JMjWx~bt4Dl_x^>a&U)8~biyd450zrj6DSiJ&tmg#2Cm#hx z9z!-*`|u1z3%3++dmfEsPm+P;o>M?78=(VC$8Cq~VK?I24}OJWhwI8FXlKA;*0(UY zWntC={OYwDYY;V0*k=)nsk;m7t}j6^2hGd!m6>;+gP6ROY&+i}*pCj#{_u>qC%huU z`6Pti_!`D#!O|uBP+x1HlnFQSVExq+gB~ae`tET}TrOcc?0LWsum@0R_>Ci+rEc!u z{edu2Qe)EHw(3hU;eKu%J&w}S?LTN8d}>EV{iT2muMO>I7jj{n#LNrEf6s$?0&Z5x=#?EkDUVn1~3UTxL#_N<=-g%q$S3xN=%HfC{u53HG|FmJ6tJ3&r0u? zR?L7cCFSJk(xq$g7n`r!%`m1n!{}JaW_Oi%YTBjv9Im&&MmnEA0o~jdOO{>&hJcfl zL_32O@8T!KggMwYLbcAGWL92~oWz^aMr3uu(R9G(c($Ert(6#S50e(X9e^C9`1N@o zHCt2ei%pA5*lXX(7v12#A?S|o4J#_jmN}a86zH_jW~?kohy}%rvN9kF!%LWsAg$Wo zTbyDIj|X8}Fr=sPFVhPckj@v$!I3`RrG_{R%@Yce|MIjCGs(-PLLA~!N4gcjQz__- zjC{KT!1TMO{9tals^nk!%h#^JV5FDMU*UB++!iEY(H>EsMbE=3dR`RlgJX=bj`w$h zvIOA;<-6<~>Q&^{;r{jAy=zkH^tO?H+1t}BjYzPpRB*R%w7?KOzMPIJ06U;pSLxd{ z(Zlv-656GJqCtXRz567<4yP6U#Iy}oCZ@o>@!@U&HcNC+0+`7i-4r8OcCuBuYp%6V zX7Vl+Aws!_q$n}+C>gQu##LfkN(k@#!@+oiO#V0id{+g2qsksc&-2EOT8Syk$du!O2 zRFi5SG4VqB;?&aq*lOLZOyFY5hUujF(lq7%L8JR(DW#Px36fLXT}|x*3P9+upq5?V z+}$+QaU$2bRO|QP@cDz81M-B|3iDDlEx;ul${B;7t@j;xcwl{FY|t+EN$&|qU(z3{@V7%_@?|IZsiFd~SpC^1*_QPmyiPX3Bsh#b1 z%HECr=pxf>^Q}jLt2Nsl454zcGA)SXSZCQ~DR@|{ZXH7?wWnIp#EmeYLFTkd@I6f) z1n*anC;V3AG~rp*bp0zXA@H}Uzo+=YBpHP^i|g%a`_@Qi_y{VYf@kb{+y7}E^|dE> zX#5=3{gpkjvMRq_na2r|-+>K#{uhccQfJlsYXi04?5Ou6e!Ozmthw%DqB)PQq{|!W zRj8!N#CNWP?JU$3X6~z=?|eP1#`8X=0o9E9HANVrnwd9@Oa!iQXmEf8Z~*Ycn1Ct? z9PB0Z^%amOy7syc4zj)}Hh`+8hhM{4LUosy3%9O{kLc&<*0IsSwBJ<*>4$nDN{!^2SvcM8znXbFRT*7U*>J1*5-jZQ zE~?FSG`A?Oqu2e>7nXwJaWSFWowDK*-MR7>ei0wQgFc5}2XlaWgNxuYd{93ub$YI_ zwT;&#$LAl~QeeB5i((Xs_+UJ{5Smye&{(HGL8z2en;lmo)Pa@XZdUYc=lST?BTY+w z^|iq)v*U_nYQFpI3|&$c2hLuSr>(_3a>az>3T=otM!8i<#3x?vfYCdSXuXD>Tda{e zG*5c))NkYCSwHaJdrxP7yiVd^<5Zd;JxTPP)0fQc0ww{!OmwEPW7m~mVU(fsL*X{LPj-g`fbX`9U^8%N@L zp5SS-k+c?gPngXGbq1FtJ~1K7rMDkX6g$OEIF?@=eiVv}B*}7JguC7nVu9US#qTopjr)`f|*wkD1 z*0Mr)J6y=XnS%n}`;$LIwjH|)Me4i1skZh!8qM`7p>==b#~SF~X2sXd`sb{7T1ZOJ z2#b2wS_Xv^>;x6swc#;hkP1mDUnbm=NkV5&_qSa4?P(TIbU==D{}Z;zI{hlJO$P2< zkP5};NpY{bbOCxqwc3#hkvW<>6EwjUoHM+_@d+YiGk|#NjjENv(2i4C-tT5n(}0uCVOM~UkCxiF~D|YoN>Ui%@y`qR&|GYa8#oKo-znjfCi)c@^ zf$7@xx9|O=BHI=0B8OE0##*e97nqI!ZS?u*iOs zHTqV=@GbT?IDJN%QO6$}s=pU*sdIn8oqcK{YB68C^o_TQyyh4LvPbZIOXh- zN()6NluvZm<+aV~TJOJall|i9{DipR+&b|HoqHx%4V<7gxmr9%1jHo{z1!8Qhy=tf z05o|faUKu2`*pSZ2U20OT)*5 z9Ia?V716HBHr`vU#+2no2pJ#dE#&b2X`U}{MIZIKlDtZ@h`47Mfx^Zy-u#ZYi+l%k z>2~YnyezTyH7vOn|8X{v)1%K4+f5w?4?8I7=CFoml{!%`(m0Hem8=tQo82SJv>qs{ zWDvcPRJJKskJMOG9E_poo^91EOG9Z!js(h)XT9x-cSTRa#Wzlb2^yOshPiY`URvr% z=oKe?5E9Mq<(M!Y>mI!LMmhgjzRSy_P(YY=Pa*Dz#rU$Zzj!2x=&epo=lgZVk!MrM z^~IN;X#M?48ji6`{TFlEH^1OFNgER60rv6brY9yQW97S1ywJB(hw|!eS2cSp9Wof+!zRDZKaRQpt4q&C`V`-?$cT=XbLbvdWyOvNYnF z?8N|`F@Ks&m$Ri@m@?0`=n^rY>EnT+sT2#rv0AWn++Qe8`gZQFw*OnZJ@9BECUT_5 z+l%^_2o$75Bi%}URc#u}{khE$gJzLQqcU-UyqQ_(FQ~KjwF*l3P0r0UrpT=s`(?5q|6>wVV?{h2tmTLrX&+w zzx9AVi;4|N9ei78`s()VZM`}6-mG$UsxeLXoTti=$E{ehH}ds`J_yzFMv}@111tks z2f_`FG-*>DP4|goxxdIoaKA9gY+83GurFSRJ#txdID7ZqA&4K(Q1&7bUt1}w7iQv3 z-?oC6Wwu!+vZx;^muRe2;n0#(14wjH7Q@#&icCvxucWa}WL2nA2WS8ieKf-dgp#oD z4Bnc1_MD`&;*#HJ+Zo+&MqZ_bBjQ@z0n5u`2w4|? zFq`+a&hAoLTK9A12*b2MZ;5U|&@2%Pa?G z1!vzsN-^LVedb(q(&Fo(fEgO;`{zqPV9LUnH9PKhne{>afGTgFnE7$B2EUkkGp@%T2yb~@ksKDta%4vtqsG(L$3FTZSWO3zRv~Csb z<~ok#Iu$tU`aARlfBD4jm**4Da{qRmxs?i7-J8hcGQU-U658%|Kpk`k*{#(tMX=P# z=)D6+K_IAFOFi$*`Q}_xJvnpwV;s9TeC)wIj~I4fp!+jL;1tAN@~8#aB5@s@WF#4L zPXwi;8_m?*6h*or{XzBP{Ic#o5tfc`r_5gAX9tH0ch323{OTRol`{aMk|F(e@(wS= zvhm^kq8(&#hEBgtf8>Q#-?$mz%7sVzbCt?5rV>+IuPM&Xr;f0Q3<%SjImWNNW<1w2 zKM)eClXkx4Je{QeW*)`7McBtHFO?t0`oidMK%7(Kuko|$KS&#IWXgBn`rThGpv*GR zojTGqc&HAI7k$X_`D2PAyO>E1wp8I+x23^)Hy)kUbItS1n)|f#76uyNayzLLt18+X z4|isF@`oy6`~X?pPp zZ3N8PxZ%8AKa90z#CTo4`CrX%Hh6c*zNvq3PvXg|@Twnl;zyeUO08u>@iEzN!;dsR zvBoPl<%z^RpekyDlXjkmP;TW;F1>P66ajboab7ujy1dZUfNE})@DHQDmsi#wO%JNg z3_)kJMs*&mzC4;LA2`^$0w+-?W%XC9DH9)s|MV&hP=(czN?$LyS|%*3x3B&_5b2w0 z57MH<2*(J$_l`6rm(h$%i8d;m*}KY6UT)$U+49|T-l9|v9B%d>$};Frj_{7=ZJ%?u zNlMcGF?&;7@}*0v@t#qQr21%RqISrrVMxB!6p-OfEQqK|P6rgXzfz3J00TQItHW(SnB#DuI% zqA8oF)5^6lWOYHU3nl^pD_cAV{D8-{D~244yEnn5g3hBQjxi*Qw%ItTcRsIKxG`Dl zj0_Bp09b;(jD9hUTWT79_Cn9#s9T`EzcJ`6i*f?iG8SF?-pwoW_{mtxYDe zMRM8;ORa#0S^_+Q612VY58_$4XI@aOM9{1waaCQl;0+Q;Q>7J2eouZ5X8ap(nn0S2 ztC8*V_Z3B0&5N9MO|ORuShvmg4{7WJgl2*$&#fSfGbUG_)mSp0fHuA<0YN9P3?(nAH<)t5~ZM}wYk4^lM2 z*UI^GVV2&H(1K|$Izs20r|bDAB94?u-|U@j+g1c&kLtVB|A?q`nd_S~H?MygG%*Xr zwzcBzwkf*a@qa=$R&CC9M!LL!g3eb~`Z!ep*`A>zrvZpOr#iq*xI0z}$;||iQ5ST6 z%l7O~W2mGg)o@IkKF0kXCW<94+VoL}%LuTa0yR}WE0UMv4l1FN|C}j|Vs0M&B_I#( zj?nw`l>8?-Dl;LrScgt`QIY7kG-wjANSFYqE`3>JX{rPyeV#nH=H{(8aE;8|0yUi) zs@%=FDV{T5)!S#{$%ZTYu|;VHc#Oy@0075HA%?Aavg8~Pi(~ZHf8`Cdh8)n)j*4`SKd@Qj#@Z@uc44fCi+c>^qR#-JcD$hy$lEcoH z)o08d=-j>FLYuEWo5d)pQ-U7Qjk~)ephH<$hKI0S~(E1n|d%Xgd9k8Fe*z=ojGRl zwSwsL4?viHw9;tRs198bz^4re@NQaKW@i`EoUB+;w42QM6gf~sCNW?jyKmk_WgU7- zENW0^(*aqks4S*Ph@a|dVL8@8_kMa&j2smr4RxSRn-_3J6~_8$UB1L41_3hqXm3vhBEPi;Fx zcn7@B0dV~FcXQN{fnjg~BAYzuzt_~7$NcuEr*|KpP^Z2Z-l-L)I|m7~2Tn@Y4N;jx z7$C97ILgt1q4t4u^qA^QadN2tEtSSbqh-75VwIS%SC`C$`k%j~h|~#yTE{s&1d;VmqzLqdx#%j7oS49`P`7^mVF8nS`3? zmkj;KDm*V!#6x7zsf&8{yK4q7r0o`F&jA=olp2QB36t{0#gOcYvAk@k^MeEfU2|GhaSI_g9VLZRc<*y2WOO-Y$jR#BMXZTo~po(12<4}RJ%H0=?ub=1f zu&je}2BV0SYpce)roapaY3CSAih}p+Dy; zjbzFv&r+%GPfY8}Ctq(gZ*ZzYdi|?4w@q_*wG}w+toJD4@-`Rnf`tJ+C3F_&m-P4V zQnRJ1IRhLP?1#G3P6X+$m1O&hZRdt-niqKrFIjq?>A1QOuETt@J_LgFI-J0B#PW@Q zOM1o&?i&ZzZ@L_7LYW=w_A;;4z=f|^4MvBzJ!xI|M3HPM5e7PfxC`tc1KWYTmA*B_ zMGiu6+<}Yn6didEJVx23`@3Q@@K_MJeEVyK1D7U$#JhZuRX>$Ulv0z?O)CVE{^vgy zC`DvOVA>|vcw#m}lv=j)i_DkJ3JX1rcYjOe3>&13tvw%eAXl+*Zc8it19c{v<}>Qk zgVAIj>mf^ofb&sJodt#ClLzjToOj>VW!zRvLQGLfAslC` z&b55Fl|BjOS;GgEh0pyi_Q_rRL*k>WsuQMxC-jXSMBQBY(% z-%P0~X3Ts}2xm8gQ(KzWtMxH2_ejt4Bf;Y%{s#WV>rcxcW7L|%BLUn&>8gS*x3rqa z)Kdz9zmmh`8S331=1i013|{qA>hS#hI>T#73)W7SHoP5Z#+ZZs`L4~ zS@H~j|B0Xb43SQtokVvLxyJz|nADM<^EU5K_qo;5H-2Xqk1^zA16QlW0X!awxn1*$ z`k!X5*_$ZTJRRJ)VrqGHHxfWP?ejqT{u zhKmFlmV@5X$UnH}>d3W}l}v+MUd~S@C~Yu#9%rX&?!RQY@O2{}9CMtVsHIr%NZ6fS z{7N~ChiRbhJ^fWK#<#77Fhy`ueY#+H^;vtZH|Fng4&n=NMXss;J$RtHV}(9}6~Vk0 zx=xV6n*}edd@f3enwl2{=+mDDuhz{|E&=Tdd4y9qz$o+W!L_|v<@ntJw3K<@u4hG> z1E}OL@y~auy=^kMTP0g4yVJ_tTj@pJL8)uREfR3z$?gZYo!AMC&KB(&-lO{Ed$>$-x)2vL@JIPm1J@?2)+#c5 z%3+WZU#{j;R~9cc9(3shwSZ?w47r{q;mBDkV5{EZ9%mdLpD&~%lXRw}+S$+N+`&mYsE&iajHg}BJAy1+SJ?(=IQramiUeVX`Vx{mjnuw(3=i_1J=&%qn9>6BwI ze`Y_L=5OoDgj-Ge*GX4PYcmy`Kcd`K#5wZ#6@9o<4v-fb8)utR*f^#7`)m}b;8K3W z?;JRjaXyB+CxK>6r(H%uv`^kP@K=Hny1r9G*(X=ryGvCfvwwt4-c&G*>@}1rnD&>% zY;WNKy-H45~mfRfPeUP6>9)NYset=tk!Xo;{&_`X!@|7kt>bXp|)HdZ-Z zl;?Uv-#(raLnbM{$DRgG?{E0vsYT*wp|o^P+J-fc_(eP4BHrrjO_6gzty|wN0F31>Q3<$a{Ed8mF*76uj%pi&N7#tfNEx`rvtY-)vj3Aey7($uv=raw8fq&CdQq4DJjkl0g& z_aW|G#hk}zRn$2gEr>ftaQ9;&5OO7TMv}MzvtIS<7Q33iEdnNuvuzSYAX)xRp-|>g zO1;N{uK2t~epk(}NjB;OA*63OHv#;T#oGahE(>1Gqn$LF2<*B*R+3MNJnvc{I$b5pzqWv|bO z)Q+)zOKf-BbE7JgvopV4U#ctrR)YgfxA@N)g1o`<)l)?uS}Cq%WTu6b)77JP-xigB z?|TDyo&}uR{uR=iU}^{(F*-i6&uso1JpNQ@cI~7Ef4`1PyYg!?8L*^E72I6Fl5H;` zTR1m<-_*20&b}VHTCPm>=K790NBLCG26RHJl`7_+J(h|;sY57x?UO77oKDW3us%-1 zCAU({79dmPWZp2eA3pq#bm6WcXi!(D!@Q#b8vK6kwE^U)ez;-s)unAgN)nK}6+FH0 z`DoOWv`oe)7**yMHm>t#^quOVpqY6hBCzj&qC`R4r0yPk;flRU*^0V^m!k&>fQz#|b zzdz&~-#9w^iI410C{uiISL;j7qin&#M*v~NA2-E^{O0r+A8Mcbh8oMNBECijV^phn=nL%ZI5~y@` zYIg7!A?Sz+QZ zaJ7M4JE-P(H~IJ5IHH-Elf4mmcP^)2SE%zOV}&2p7=ONr;`228wNdNtJ@6VT7=`+l z!>vo7l1v5kIV_EibcQn5@#fhU^b+f@JM2Pz~-; z2evnmJ90^pPXH#5T4U7eGxk;PCgg52LV3i@SJ6o&Qd;pqXWT$fP@4OvP>GAC%G+H~ zX9fp>vBn_Jwy2C?E&(!h3@$Skc9opb?=ayi^b~D?W=D$1KLm|XC#goKfjYE%6iRup z=qw%#7M41`);^G;b&e`V4%CxmKGCtH%upwJ`~U0cx&xZJzW)tFiV9Rgs0?YT1r$WA zEP;p%u`(1PgB_%Tge`^hV zQJ!bo=in#$9L4ErV~!TV4;+rNdhk_72;3jrrSNSo#>~BgPEf9u`37p2az0%y_9iOf zdtOcZ1Mqz~6D>vL*y+g5xp{P@NQM7gr((4-$iaC%~&nKsuFyQ*V}6J6KEiMrvX-Ql|&buI?6IRWi(f_oE; zAtxy&zNmC#X!_;{;6@V=rJLIeZtLgV(Otd(O<4aFU%g! zpu+qWimn+%S{W%7W)&Ld@yZ}h8>wYH?$bYS#7gn`jk#@>5H9Y0HV}-mNLymK4(M+=q7H~SnzjoX5o>8tfN73O| zC%q1*<6djA&fv8g@0K~pAQwV~ zn_KiVaCzH}9MdZz??LM#514G>o?R5E%{lP4Q`{+X4nNY^UqTTlJqGy^nhd`Lr=iCe zek%?Q7QhEAG^OYl&@o+!$ho>A2ldFgPHaPXvBx{mRuC~4$4jJmQ=}Yr!73BMl*}ZS zbBpjCMaN+mAbHC&Hacn@*q5Quv^q+V6lMKQYDOgqY&^Rxg%x&04c_bRN*O(4SS6re^fCDHQP!`B>OeX}B{L1M;u{zjYJOrK zE4>e;7T$N~^u0hr29wEl5FOjc#v0)J^^kJCcKEvw+Nc3^6z~4cEc0|a_t}mIXn!L2&lPLy%4J$yk=S&TY zd5zSYzT5e9(J9K4q}t4W=o5N2+T|z-&i{xIinI6F6QMP~q;7t=_M-Xb|=ZXM}Y znS=(Je%T;yv(9uvXxkN%<1o>GU6OQOmeIJNQ8rWG=!)&TE(vB{Pb0Iep@Hn7IKmw| z1WD*kW*n{=X6_m&M_v@^0)44K`-V25P4eSLdib!oen^z#=BNC!vlr9xLF^U701OSs z4HtY>Z7prJZ^I283BV8~#*DMi1z;YxUbJAj6WuxnVEQB94hj95LN&~#M)3+tcknev zii9pnz%XBECwQo;F9FSuN~E9Rz^)s(i_z$O(+&W^VNNB98$J_8+g+3bmEF^b^dOG>CnZGiQ@;|3ozF!^6s5_3 z2|SPqTTehbs)~={o1RbRcC#0~wu|#G)Zr+JEjN{Y)f^@U4YmP}XTv&vPSdc@lxI3@ zu#Luq#{S-SYHI?p!NB(3+`s~D4a=qX-*~4Kk;Ee1;$`$3vFCm=6GqO4? z)}c7si0Ci`gI461f(^1Ud}1_Fiv}Ii82A^uN_j}KtuG*Iuj8#|Xf}o$!aGopD}&0; zqf8k^1%|JINzmo<;{2z+R~e=7ighH-x~=qb0@wi(>bQt^yR=d+J|rv`c6@W@yXC6Ctnsq8yCbo zbgONDTI8tCKqq!M1GDb%B%!JFrVrN{pOo zB?(9&QpYr-&j5WwVE^Zbx3^vs09nj7?81<)U=M29F+L4ieeDYa#DH+$|N45BP;w&0 zUSQI%3h+Ii$m*f<1AomqAkb%H6Ap;G{8SoUztbsqGlNBsYqLJd0_IXHGJD8w;N@Hg zlFC@Hi3Ie71!l3M76j}|7@B3|8GgW!V&^Y4bZJ-~IuTPgtyWQ&wF0=h92~Ynm_mtn zrcntzrmq}W_OTV*k&)sOpO=&lIUze3b6G-|celdXV4059o;q~G%~`b3hlNh^wtd`z zZ{;-mq>D;~pn!-eT@c(A=+a<*=OUw}G?eL~FYu&BJ7D^Gae@?7F`slJ`(ndWsu%C1 zD$HjZ#LKZ_D@R4|wxw74;mX`<|JST>tj1HTU59bB1;ZB`<54dQ z;utCkwq-?Xy8W&O@B3H)gXf{C= zPiuKvE&8f`CC1`I9l~S`IeN%T0i8Fr__nS*qT2=4&kpYH*os=B0(aQJ=tf7BYqM{!S&|rM zKpL?yQ00F(Ljh_1Dab8Gv3Izp>!TgasS@`C+kaNFesf-xsD=c$YX&1pXn{&*_U7d0 zw^T5^`;L*pQT5c+u4y!T;Pc0|Sxe0KyRDkRS2#G4m%uuo=6C&kvut-$S>pj&VDw^A z=0dx9O>L>k8|8+AX~E9fyJFSm$+mA$bKdks)>wiVr?(ZgU4+aUG9~E(=7*-q?By1rVT9s!P-lH z*fre$YUenlEY9v~g!*h&g$f2181^?QT>FCLjC;JmA1f3-GM^Un-=^eFvR3-CNyIuT za1kTNHiKx-&nam11JKEHV|w@xXGBKGVs3s2b`(5B{p~^4X*j#`{W5p_!v5_Z9ecg$j`)6 z6s3V7+7EH|4F~`5I)<@uMyvx(k}=DJXLgdcufJG_=N+_%Ii(=k`LY$Qj@O*EM@ls? z^n|?9#i`ew^+7!LIg+M30owqhj{L#b!xCxzr&T5!YKpZ<-bVO5P6}u8VhnCSaJe#7 zXxRBHvzfuuxRG(JnCjfzuMJ#mz2u33>xQZ~uW8xy6HT5>=VV(E@)&yZ(tO0(MQ!wR zW2Y3ZYL7JQuAFf;btAwYbXa=H({ED{bzQ{hEp1OIRnQoJc6OZ^YAJS6MoMjx`Q*VG zAKj*LV^65BV3T3N8cY%=+9_x8bw$yFQL;LGOx%WXdf@+f0-8X{5-sni_oi=<>w}dHvHyb@Z|%1^U<2=_g|aS+c`G$!)=ZiSay3Pxx1lgBma#@ zo)-|TjkO@$?{lGzMc{R+zZ%ijf?EIGD!H=`HjDQwQ z!RH3F8L?vCcg$<=-btDpudcPG%%Y7lOI;E(Q}O6wrbTDJ8vkJLu*A#@HRZ6NNgD-y z(_-WKf&b1mr*vN+sI-W=-sT}U;JcccQ7{&*_)|`h!F=EM5^Wj+by#PT8Vp*+Mtv%h z`l)z%iw1fV^U?XWXLPyT*l#JF>I?tY6YTWv9I0bbEd?y}&Rc-bYSq*aS|l_)8+B38 zm!5@Sixy!uo4I<5bXEg|1-7Vi3@-`WwZrD0Qlt#Gskxox4jH+8wFx;nN`lr*3v~1F5jrB2tU32^>w`WOpc2CZ{jvXRmw&xs=sb0?SuPeIdCX`BI|-6 zLvqIlt2$GQ{@|Z`i%bx^<=mpEzC! zwVl*mF~z|eWOn^aO7~%W9!pPA#=l%0YZse@rpeSDS)!-5dp^i<#nuSr?7^~~m;6tu zIZO+7ELN*n{8o~3W=>wCYs`^4>o@JL%qNj+1#a{^Fbl=(?zR#=w)-W~Ny-fq+7Y-* zTR+-C!#qfD`|Eg96p=XE8_>&Ck=MJk!}s_OB$pofRI-OyR(LAy(Rx1>Hy z;o%b(E~?pM>qgJ2@-c*yV-==zS#R>7dM%lH#78CsMPIJ*D`GAs*YrbwV4@_v~ z;pizx^*E$}_494Li2re((S&TFF|Hhk{$Dl)?YuDVaY*V?FyYd-J+dbmU33Fe(8 z=H4U7YRNG|98qM)W1G;fggILThHd=Wzijh`yOT4qCo9dkVSKYOJpwj`2z;z52__qH zQQ`ZTzE1Rz|CHz_f4tbLcE%q4yH)i&M4nv!JcJc1j;L{g(wMve7lZ0){Io%=j8+&Iuk4;^3 zdzHG1U3&G0X1JzL<7%!C#yjJ(JYCBQ7v!7$SeC17gqvbFTGZqk?zQge<`^aUK4AxS zvg-e!ynIiMp!B~o$u~V?1LGVKf^76UK+>A2P$wyF~L8B6mGKP4E49&51N+HqWe zDTO^bFwERZ+UH*yYq~cp>{?SrNbh^o9(X0hI4yk1-+y?qHk!3e*h!c7F-XhF(}kPs zfYA-h;1hzkt<$I06T}~PA(F}Y%Wu)y03Dm~Zw(!q7ONE;6PIsFsd;XT>26<6B#Ic~ zRZ*3VrdR8H){X4M%ItsNH?Dn9jy_)Ir||b!+|py!pQSFo3x3?>%W|(hqsljT@E1#Z zpN3>H;l=>8W8Yr2>UO~dMO`tK4DqD*S;>W;nmj~jpliG{!4|1tu0I`+Q2e)111P>u zXS`Ff-n*1JG6x$u@{Fm#&Or&Hw)@Nt%kU;tfGogR9)IWBH9`GWrmW(l!jJrXvzl6K zuTR~PZ=s*KUGyCK&90xfCB1-kne^@cn;0hMHpU6&GJ0hJ|N4lt$OR(tdZqSo!H%vZ zGyWbmH_>Uzg)O(Eq>)itPTW}qFh)$2<-U_kStV!ZZg_>j;KkW)KV7q?sPnco9j<~J zX|~Z(8F=1T+j3J!dZs?TOf$=x);3 zPSf#O*~RA^YoG>uRje!}ibK!F%B@!XxmD{@X|6S_j4+IaERqZe$j)ta-w(k2jU7w^ z{FWR)EK74M9+nu6Nyn=*C+*c7CypJ3wONL-F3>%GpEKzZpeW5>EN|1~=bF_D$IwRT zNG2&|yEbrzH?;xh_|bb{WgK4lKG%ldIzs}pkh6knbmM>_W`({t3+O;6{WtUjykdv} zCn&K32FgngNCrd1)8gqX**XZ8cXj(fJWPoWWlK6Ec)3OUXyJ%pG+lVWO@6#v^re=(af z7ebsnwlw6;j{q=z`~QngjcTc*cZc;RV*asSG7Tp1dS~{`0Aw`gO4C zCx|-xL|VVO{s-~SMl+)o+NEGI;L2ksV+}T+3F}ROce)aZwia>+Ej(a?0bzfZzW$y> zE`ZPTlssr_p?6SAsEuPFJ9SNNYx1*U^{dV@GegM7^qca4Xr4}3V!OM?SgL|$E4a$d zKznQ%70+ujfm=1)SFnigL55l|`c1INM$)^pNGM~LFr+92^nLV7CfyrqO|9X;3+2+> z2xx~k2>a2CkYGm_$6=P@9CNt^!!_9&IHwE^-*m?+1vt>F(Lod=s61Q&H4fMOueWWNPa(ehKqE9`@h=N~DM z2c$!;?hQ>;oS+HXPsiYVgqeR)C#XkG!@tb>+rx2*yw*)!+BKVAjzX?or)) z70fvHBr(QA70hqd%EUJ}BBxa(XHP2^GsVI3hp+II=b|~(aYl?k`4rB}o2aHKPp4Qlksr*Qc8R(m{W?g;IhZW-28}(0m`miJd1H!iLsT z)atG{fbRHLGi`(^NXq`RaOCr`;@UXD09uYCk61mIy2ADW~{BCt|35w2Na)97%eL{Sb1092;W;3z_2Tsbj~>_3%rvd)10b2 z1aHp1ige}K?FU?kbb`9yd`{#kSurtEJgfsj*D~hh4x3#6s0V4Wxw?ktq=uxJ0J;<; zNM@b`bOIcy z`06+kgl`%na$>O$pr0@nFY@u~>69b5Ko)2~6~Qgx*keoVuWi^-9>X!eC=s*_+dEes zl@cXrmIcESwA!$O@#s^OCUOI8K9z1{XAnmaG@`Q_7}5i{>^Fpfl705rdg@j0Yhv8W zG;i-%uDy4z&TjA%BnUTjh_&xEk+bm;B|U(d6nc!~qeSnGjm}O9ni>>IK4+xKw9@|C z@n_}HY5?DUJNe3tmgAMA^ZTAW=O6Wi6&fJvEqe=m8Ac7m9v|$sr|2tfA8Jgi9c*%`u`3&Uahk zs&+~9UDv_{4_a9^>sQ412O<6VqbASFT}9JKjB*r3Oy5k8**L5XCkRlG1}r_eJy;EM zMrjO-5>q3oA2BvebpvlNz2s&1azCiWK>zH&=#5m*AUhf_)Kl;YefrA8P-+wK2eziZ z?n0O-4X~Vz(dq%j$aI3oRhI{AujU^~0|%(5LB)q!M5OZD>@7xCf&}S)cE9!!xNw7x z4h+eA>yKAXFv<_lmLo@!-^$Z+*8dPBKw*7=x~XvG?@&N$g}fy-s*PwLTSDkaWatABx|n@7A+r5F%2$VX1GWgGd&ls6ccD{G zl>qtxLwqXPFU<>undbn^jd}o)nZk%(uY?WED122<=^X#t=%tt%p-sWR-y^)@VG(8; zWFG&T6h6E(CHJ1!vuHJ<*{q|A);kBJn7N}x3~W^~t0v#!u|L)i{i*u1BI$NOU}vj& zVZfE5D<1&g4z7CO z>XYkVlH%_&9r^xGmS*5i z*fu~%r%HXQdm|mDWx=B_7@#Oi{iNnJ@f0RSTpkh0oO!AIUx+}2vRZXJ3fGUSSikB~ z+6B1(LdF5Yf-;h<5*4*?RQp8w)TT4#E`3-=iQr>=zCAQ7IPR=q#}N#e&xRx+T~Y0$ zPeevgM6J3#r^AEeMC69*nZ6lx{FO=6i0D}INcyaiw`(p=^&VRV(K= zUZ0hw=A5;!HOO9RG>RS3{@M6Y-A1*&V{YB8^}M?~0cmT4gQ6*6<)dsBA<`GRUY4E< zt3VjkEPAN9vR(dHUulpQ;^FG%=yuU|EWdC*5i3gVLh^}m9fQu|%1qNU=xZO397>K~7ruWh8X mcXTD6>hpaAlMvo)f-8UDUOIL6od!%^0)JTAo#C7!-TXfQEL9i) literal 0 HcmV?d00001 diff --git a/VDownload/Dictionaries/Images/ImagesBaseView.xaml b/VDownload/Dictionaries/Images/ImagesBaseView.xaml index 1555d1c..1509708 100644 --- a/VDownload/Dictionaries/Images/ImagesBaseView.xaml +++ b/VDownload/Dictionaries/Images/ImagesBaseView.xaml @@ -6,10 +6,12 @@ /Assets/BaseView/AuthenticationDark.png /Assets/BaseView/HomeDark.png + /Assets/BaseView/AboutDark.png /Assets/BaseView/AuthenticationLight.png /Assets/BaseView/HomeLight.png + /Assets/BaseView/AboutLight.png diff --git a/VDownload/VDownload.csproj b/VDownload/VDownload.csproj index a171dc6..c24c481 100644 --- a/VDownload/VDownload.csproj +++ b/VDownload/VDownload.csproj @@ -197,6 +197,12 @@ + + Always + + + Always + Always From ab1c6de8e32eb5bda279624bee46e1c081524c9d Mon Sep 17 00:00:00 2001 From: Mateusz Skoczek Date: Wed, 6 Mar 2024 01:26:43 +0100 Subject: [PATCH 2/2] about page finished --- .../Strings/en-US/AboutViewResources.resw | 19 +- .../About/AboutViewModel.cs | 77 +++- .../About/Helpers/PersonViewModel.cs | 34 ++ .../VDownload.Core.Views/About/AboutView.xaml | 82 +++- .../CommonConfiguration.cs | 3 + .../Models/About.cs | 24 ++ .../Models/Language.cs | 18 + .../Models/Person.cs | 18 + VDownload/App.xaml.cs | 4 + VDownload/Package.appxmanifest | 6 +- VDownload/VDownload.csproj | 404 +++++++++--------- VDownload/configuration.json | 21 + 12 files changed, 505 insertions(+), 205 deletions(-) create mode 100644 VDownload.Core/VDownload.Core.ViewModels/About/Helpers/PersonViewModel.cs create mode 100644 VDownload.Services/VDownload.Services.Data/VDownload.Services.Data.Configuration/Models/About.cs create mode 100644 VDownload.Services/VDownload.Services.Data/VDownload.Services.Data.Configuration/Models/Language.cs create mode 100644 VDownload.Services/VDownload.Services.Data/VDownload.Services.Data.Configuration/Models/Person.cs diff --git a/VDownload.Core/VDownload.Core.Strings/Strings/en-US/AboutViewResources.resw b/VDownload.Core/VDownload.Core.Strings/Strings/en-US/AboutViewResources.resw index 76fc78a..f4bd306 100644 --- a/VDownload.Core/VDownload.Core.Strings/Strings/en-US/AboutViewResources.resw +++ b/VDownload.Core/VDownload.Core.Strings/Strings/en-US/AboutViewResources.resw @@ -117,7 +117,22 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - ss + + Developers + + + Donation + + + More + + + Repository + + + Self-built version + + + Translation (English (US)) \ No newline at end of file diff --git a/VDownload.Core/VDownload.Core.ViewModels/About/AboutViewModel.cs b/VDownload.Core/VDownload.Core.ViewModels/About/AboutViewModel.cs index bf3bcce..938ad57 100644 --- a/VDownload.Core/VDownload.Core.ViewModels/About/AboutViewModel.cs +++ b/VDownload.Core/VDownload.Core.ViewModels/About/AboutViewModel.cs @@ -1,13 +1,88 @@ using CommunityToolkit.Mvvm.ComponentModel; +using CommunityToolkit.Mvvm.Input; +using Microsoft.UI.Xaml; using System; using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Diagnostics; using System.Linq; +using System.Reflection; using System.Text; using System.Threading.Tasks; +using VDownload.Core.ViewModels.About.Helpers; +using VDownload.Services.Data.Configuration; +using VDownload.Services.Data.Configuration.Models; +using VDownload.Services.UI.StringResources; +using Windows.System.UserProfile; namespace VDownload.Core.ViewModels.About { - public class AboutViewModel : ObservableObject + public partial class AboutViewModel : ObservableObject { + #region SERVICES + + protected readonly IStringResourcesService _stringResourcesService; + protected readonly IConfigurationService _configurationService; + + #endregion + + + + #region PROPERTIES + + [ObservableProperty] + protected string _version; + + [ObservableProperty] + protected ObservableCollection _developers; + + [ObservableProperty] + protected ObservableCollection _translators; + + [ObservableProperty] + protected Uri _repositoryUrl; + + [ObservableProperty] + protected Uri _donationUrl; + + #endregion + + + + #region CONSTRUCTORS + + public AboutViewModel(IStringResourcesService stringResourcesService, IConfigurationService configurationService) + { + _stringResourcesService = stringResourcesService; + _configurationService = configurationService; + + string version = Assembly.GetEntryAssembly().GetCustomAttribute()?.InformationalVersion; + if (version == "0.0.0") + { + version = _stringResourcesService.AboutViewResources.Get("SelfbuiltVersion"); + } + _version = version; + + _developers = new ObservableCollection(_configurationService.Common.About.Developers.Select(x => new PersonViewModel(x.Name, x.Url))); + + _repositoryUrl = new Uri(_configurationService.Common.About.RepositoryUrl); + _donationUrl = new Uri(_configurationService.Common.About.DonationUrl); + } + + #endregion + + + + #region COMMANDS + + [RelayCommand] + public void Navigation() + { + string languageCode = "en-US"; + Language language = _configurationService.Common.About.Translation.FirstOrDefault(x => x.Code == languageCode); + Translators = new ObservableCollection(language.Translators.Select(x => new PersonViewModel(x.Name, x.Url))); + } + + #endregion } } diff --git a/VDownload.Core/VDownload.Core.ViewModels/About/Helpers/PersonViewModel.cs b/VDownload.Core/VDownload.Core.ViewModels/About/Helpers/PersonViewModel.cs new file mode 100644 index 0000000..979fcc1 --- /dev/null +++ b/VDownload.Core/VDownload.Core.ViewModels/About/Helpers/PersonViewModel.cs @@ -0,0 +1,34 @@ +using CommunityToolkit.Mvvm.ComponentModel; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace VDownload.Core.ViewModels.About.Helpers +{ + public partial class PersonViewModel : ObservableObject + { + #region PROPERTIES + + [ObservableProperty] + protected string _name; + + [ObservableProperty] + protected Uri _url; + + #endregion + + + + #region CONSTRUCTORS + + public PersonViewModel(string name, string url) + { + _name = name; + _url = new Uri(url); + } + + #endregion + } +} diff --git a/VDownload.Core/VDownload.Core.Views/About/AboutView.xaml b/VDownload.Core/VDownload.Core.Views/About/AboutView.xaml index 5b1847d..67ed693 100644 --- a/VDownload.Core/VDownload.Core.Views/About/AboutView.xaml +++ b/VDownload.Core/VDownload.Core.Views/About/AboutView.xaml @@ -6,10 +6,88 @@ xmlns:local="using:VDownload.Core.Views.About" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" + xmlns:i="using:Microsoft.Xaml.Interactivity" + xmlns:ic="using:Microsoft.Xaml.Interactions.Core" mc:Ignorable="d" Background="Transparent"> - + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/VDownload.Services/VDownload.Services.Data/VDownload.Services.Data.Configuration/CommonConfiguration.cs b/VDownload.Services/VDownload.Services.Data/VDownload.Services.Data.Configuration/CommonConfiguration.cs index c3001d5..831dba5 100644 --- a/VDownload.Services/VDownload.Services.Data/VDownload.Services.Data.Configuration/CommonConfiguration.cs +++ b/VDownload.Services/VDownload.Services.Data/VDownload.Services.Data.Configuration/CommonConfiguration.cs @@ -6,6 +6,9 @@ namespace VDownload.Services.Data.Configuration { public class CommonConfiguration { + [ConfigurationKeyName("about")] + public About About { get; set; } + [ConfigurationKeyName("filename_templates")] public IEnumerable FilenameTemplates { get; set; } diff --git a/VDownload.Services/VDownload.Services.Data/VDownload.Services.Data.Configuration/Models/About.cs b/VDownload.Services/VDownload.Services.Data/VDownload.Services.Data.Configuration/Models/About.cs new file mode 100644 index 0000000..594f411 --- /dev/null +++ b/VDownload.Services/VDownload.Services.Data/VDownload.Services.Data.Configuration/Models/About.cs @@ -0,0 +1,24 @@ +using Microsoft.Extensions.Configuration; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace VDownload.Services.Data.Configuration.Models +{ + public class About + { + [ConfigurationKeyName("repository_url")] + public string RepositoryUrl { get; set; } + + [ConfigurationKeyName("donation_url")] + public string DonationUrl { get; set; } + + [ConfigurationKeyName("developers")] + public IEnumerable Developers { get; set; } + + [ConfigurationKeyName("translation")] + public IEnumerable Translation { get; set; } + } +} diff --git a/VDownload.Services/VDownload.Services.Data/VDownload.Services.Data.Configuration/Models/Language.cs b/VDownload.Services/VDownload.Services.Data/VDownload.Services.Data.Configuration/Models/Language.cs new file mode 100644 index 0000000..bd507af --- /dev/null +++ b/VDownload.Services/VDownload.Services.Data/VDownload.Services.Data.Configuration/Models/Language.cs @@ -0,0 +1,18 @@ +using Microsoft.Extensions.Configuration; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace VDownload.Services.Data.Configuration.Models +{ + public class Language + { + [ConfigurationKeyName("code")] + public string Code { get; set; } + + [ConfigurationKeyName("translators")] + public IEnumerable Translators { get; set; } + } +} diff --git a/VDownload.Services/VDownload.Services.Data/VDownload.Services.Data.Configuration/Models/Person.cs b/VDownload.Services/VDownload.Services.Data/VDownload.Services.Data.Configuration/Models/Person.cs new file mode 100644 index 0000000..19058db --- /dev/null +++ b/VDownload.Services/VDownload.Services.Data/VDownload.Services.Data.Configuration/Models/Person.cs @@ -0,0 +1,18 @@ +using Microsoft.Extensions.Configuration; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace VDownload.Services.Data.Configuration.Models +{ + public class Person + { + [ConfigurationKeyName("name")] + public string Name { get; set; } + + [ConfigurationKeyName("url")] + public string Url { get; set; } + } +} diff --git a/VDownload/App.xaml.cs b/VDownload/App.xaml.cs index 9d90d35..1ae468d 100644 --- a/VDownload/App.xaml.cs +++ b/VDownload/App.xaml.cs @@ -7,10 +7,12 @@ using System.Net.Http; using System.Threading.Tasks; using VDownload.Core.Tasks; using VDownload.Core.ViewModels; +using VDownload.Core.ViewModels.About; using VDownload.Core.ViewModels.Authentication; using VDownload.Core.ViewModels.Home; using VDownload.Core.ViewModels.Settings; using VDownload.Core.Views; +using VDownload.Core.Views.About; using VDownload.Core.Views.Authentication; using VDownload.Core.Views.Home; using VDownload.Core.Views.Settings; @@ -145,6 +147,7 @@ namespace VDownload protected void BuildPresentation(IServiceCollection services) { // ViewModels + services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); @@ -154,6 +157,7 @@ namespace VDownload services.AddSingleton(); // Views + services.AddTransient(); services.AddTransient(); services.AddTransient(); services.AddTransient(); diff --git a/VDownload/Package.appxmanifest b/VDownload/Package.appxmanifest index 9268db1..858c5db 100644 --- a/VDownload/Package.appxmanifest +++ b/VDownload/Package.appxmanifest @@ -8,15 +8,15 @@ IgnorableNamespaces="uap rescap"> + Version="0.0.0.0" /> VDownload - mateusz + Mateusz Skoczek Assets\Logo\StoreLogo.png diff --git a/VDownload/VDownload.csproj b/VDownload/VDownload.csproj index c24c481..c52bd40 100644 --- a/VDownload/VDownload.csproj +++ b/VDownload/VDownload.csproj @@ -1,202 +1,212 @@ - - - WinExe - net8.0-windows10.0.19041.0 - 10.0.17763.0 - VDownload - app.manifest - x86;x64;ARM64 - win10-x86;win10-x64;win10-arm64 - win10-$(Platform).pubxml - true - true - true - true - false - Assets\Logo\Logo.ico - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + WinExe + net8.0-windows10.0.19041.0 + 10.0.17763.0 + VDownload + app.manifest + x86;x64;ARM64 + win10-x86;win10-x64;win10-arm64 + win10-$(Platform).pubxml + true + true + true + true + false + Assets\Logo\Logo.ico + LICENSE + True + 0.0.0 + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + True + \ + + + + + + + + + + + + + + + + + + + + + + + + Always diff --git a/VDownload/configuration.json b/VDownload/configuration.json index 1f953b2..3d9223b 100644 --- a/VDownload/configuration.json +++ b/VDownload/configuration.json @@ -1,5 +1,26 @@ { "common": { + "about": { + "repository_url": "https://github.com/mateuszskoczek/VDownload", + "donation_url": "https://paypal.me/mateuszskoczek", + "developers": [ + { + "name": "Mateusz Skoczek", + "url": "https://github.com/mateuszskoczek" + } + ], + "translation": [ + { + "code": "en-US", + "translators": [ + { + "name": "Mateusz Skoczek", + "url": "https://github.com/mateuszskoczek" + } + ] + } + ] + }, "filename_templates": [ { "name": "id",