From 68f927c2f19b9567b79d07115c775e2225731c21 Mon Sep 17 00:00:00 2001 From: luxick Date: Tue, 1 Aug 2017 19:53:35 +0200 Subject: [PATCH] Add application icon. --- cardvault/application.py | 26 ++++++++------------------ cardvault/gui/mainwindow.glade | 2 +- cardvault/handlers.py | 6 +++--- cardvault/resources/cardvault.desktop | 6 +++--- cardvault/resources/cardvault.png | Bin 0 -> 18393 bytes cardvault/search.py | 9 ++------- setup.py | 2 +- 7 files changed, 18 insertions(+), 33 deletions(-) create mode 100644 cardvault/resources/cardvault.png diff --git a/cardvault/application.py b/cardvault/application.py index b8a4bd6..cde81ce 100644 --- a/cardvault/application.py +++ b/cardvault/application.py @@ -1,25 +1,15 @@ -import sys -try: - import gi - gi.require_version('Gtk', '3.0') - from gi.repository import Gtk, GObject, Pango, GdkPixbuf -except ImportError as ex: - print("Couldn't import GTK dependencies. Make sure you " - "installed the PyGTK package and %s module." % ex.name) - sys.exit(-1) - +import gi import os import copy import re import mtgsdk import time +from gi.repository import Gtk, GObject, Pango from typing import Type, Dict, List - from cardvault import handlers from cardvault import util from cardvault import database - - +gi.require_version('Gtk', '3.0') class Application: @@ -131,8 +121,8 @@ class Application: text_label.set_line_wrap(True) text_label.set_halign(Gtk.Align.END) color = self.config['legality_colors'][legality["legality"]] - date_label.set_markup("" + legality["format"] + ":" + "") - text_label.set_markup("" + legality["legality"] + "") + date_label.set_markup("" + legality["format"] + ":" + "") + text_label.set_markup("" + legality["legality"] + "") grid.attach(date_label, 0, rows + 2, 1, 1) grid.attach(text_label, 1, rows + 2, 1, 1) @@ -185,7 +175,7 @@ class Application: dialog.destroy() def show_name_enter_dialog(self, title: str, value: str) -> str: - dialog = self.ui.get_object("nameEnterDialog") # type: Gtk.Dialog + dialog = self.ui.get_object("nameEnterDialog") # type: Gtk.Dialog dialog.set_transient_for(self.ui.get_object("mainWindow")) label = self.ui.get_object("nameEnterLabel") label.set_text(title) @@ -225,7 +215,7 @@ class Application: self.tags = self.db.tag_get_all() self.wants = self.db.wants_get_all() end = time.time() - util.log("Finished in {}s".format(str(round(end-start, 3))), util.LogLevel.Info) + util.log("Finished in {}s".format(str(round(end - start, 3))), util.LogLevel.Info) self.push_status("All data loaded.") def set_online(self, status: bool): @@ -398,7 +388,7 @@ class Application: util.log("Done", util.LogLevel.Info) def get_all_sets(self) -> dict: - if not self.is_online (): + if not self.is_online(): l = self.db.set_get_all() out = {} for s in l: diff --git a/cardvault/gui/mainwindow.glade b/cardvault/gui/mainwindow.glade index c558fb8..6abcc85 100644 --- a/cardvault/gui/mainwindow.glade +++ b/cardvault/gui/mainwindow.glade @@ -8,7 +8,7 @@ Card Vault 900 700 - application-x-executable + ../resources/cardvault.png diff --git a/cardvault/handlers.py b/cardvault/handlers.py index a9449b6..9cdaf10 100644 --- a/cardvault/handlers.py +++ b/cardvault/handlers.py @@ -12,9 +12,9 @@ from gi.repository import Gtk, GObject from cardvault import util, application from mtgsdk import Card, MtgException -from search import SearchHandlers -from library import LibraryHandlers -from wants import WantsHandlers +from cardvault.search import SearchHandlers +from cardvault.library import LibraryHandlers +from cardvault.wants import WantsHandlers class Handlers(SearchHandlers, LibraryHandlers, WantsHandlers): diff --git a/cardvault/resources/cardvault.desktop b/cardvault/resources/cardvault.desktop index 30c8938..3668438 100644 --- a/cardvault/resources/cardvault.desktop +++ b/cardvault/resources/cardvault.desktop @@ -2,7 +2,7 @@ Version=0.5 Type=Application Name=Card Vault -Comment=Oraganize and plan your MTG card collection +Comment=Organize and plan your MTG card collection TryExec=cardvault -Exec=cardvault %F -Icon=application-x-executable +Exec=cardvault +Icon=cardvault diff --git a/cardvault/resources/cardvault.png b/cardvault/resources/cardvault.png new file mode 100644 index 0000000000000000000000000000000000000000..e3f5f7001dad6726920fbb141b263b3e479c3e87 GIT binary patch literal 18393 zcmdtKc|6qL`#(HLill`kA(ez|*~&Jh5VCJsN7+J_lARePdE3j&|T>5Qq_Y$p|`h5csj>KTHCC9DJaoc^gEd|H*7BNCe(F>~+V&8w6rIN&m+HN_%@6 zc$4L+maaO>^dW}hr%!E)6+Z%j&VjUU-!$Xk(gA#Z>EqYvDf-KejYZs1**D z{KIS*F~D=y=gV=v4n=l8*wL>G-<>obzq6MtJoNk=-vO>e>30qbzB+KnQ=ztYXop03 zESYknyR2Y^5P%fsc&>nK=-(+NgkYMsr`&W73BEX{_W#TOqQq|q@aLO4lpo+ z+T)L@{d4RF=+o|TpwWRtpcF8mtmhyG(5&Vm!P|$&hQN3~|h$UixqZKfMPTcwjw4Al*m0 z=LWA5-#(JKFkf|b1YRm>)!8GHBT|$+xtz#OOO6cY`t`FVj5|1EeebI69WxEq@H{UQ zR?XZyccU)l-ZR=%dl70VdRIf~i$Pz$!%LEbG3Dx5k}^?}eFP3GIf##7;oxr+nGMJg z?&|K;4lgz7?9AWE(%Cp8Vkm|vO^m!P{a)Le;WBXy27}9f6Uy6jjOmzrL2tx5OMLyp zWa6T!LM5w#2t#Hr7BeA1_|Rkgtm^;=zp_8WPYcP5XxXlj>gL_n7a%SE=yNc6XcfUF zK&3$n<`0aT?O6XVbLy0@OHbN#qVlNTBaY0<2A0ePb!~!9`otX9le?GpAKO$pP-)aJ zK@8zD!aou*oZSlWv=GfJ6*8%{nR(q<5$3qnPTX zE&Y&hoON@T5d+;+#4AiH*~<BS3%e1!$-#=b;$GSC&u_@SZ-QXKgHo*b21cZ@je` zb8)E7y?g!e<%k|oi!DQ^W9}rc#WsC?l>KwCJX-no(U0W&Sa0NAI#=Z^qd=zj$KNQ8 zk0CgYD=-Igo%<*TN}uo_ra%AdXDkB8RcVBiHv@@^5_3sob1eIB>!#q?pK9M~dS=ah z2+R6OH8Qq^W52alb;V)HO%NmO&$iRtR69=uU(jeT;r5VDJUtA)G$}{$u4|< zI>w*zb2^lku}dEp80@;=C?2doUHZF2?Et5D2#|qZQ>0rcKbh{h|Ke7Ik74nJP(Q?h}|W~+}mFT+sFPzP{tb;DX8@x2jf2jG3U(a zI&uQkt(Mv{tt7+qyT6J<%JyYRJm*14maU%Tzf#X{R*Ep*=wiB|+VN+=ZS(IL4Fbok zU;deFRQC|4GV2}C>5_JWkkp^G-wlx01YNF+A^a6ysBF)6AT+`4E<@;FEq@(K(N{eT zN?fOfD~ECIF9{bMcM_ycV~Dx`XHwal$`za3-@@>Ub_d1iYuO^^#t-<4-?~o${~un4 zwlME6gcOVs6vnnM`abml=#Pk2GT%|qA5}yUl}>^FXq*G@CjpZBtv7z``W!3h&#>-O z^$z}5W48ZlT*vr#A=_}rL84|ypud;;@&DT>8D@_Ij&c8CmUzHd?wh`{{{g`1?T@$R z0^kVu4S@qM{C{{U^^v|AIry>qAUm)9SIWIe(BA>2(5`W{lf{tEWs+7hy2UOD*^yes z3l6YbfYcIyTX`XZpLPh}rn2WSjCa2aV+X2hs-!8JP4Gp&$-s+YSsm@+PE6BdPC*b} z(%Fm=4{RQ9Hy%n=7e5ye~>^iWKbMkLdCG-+5Vs>?)1H zfQQSbqJ$Pjv$&2y@w=8t$j{bvt6Xx z`gnxgOh+J%ac^+LRo-G4&G1br+LK~HH@Vt_5elpUS+BCYT-!>PWkb4Nr!~!(x@I)o zoAy^rB&T$WnM@8BV*?_z3Q+zl8jH`MJ|1J4;`*xDle{CBWrizOzWwy_|G78sa-OdD zMqt0s&Z^I7sVABiyJVDO>!OFR1wA|CEN;^GVFaEPjY%%828LhaJ|^vIFW!(=_OJ*1qec z+j4ytrQ>gSxKx%Kz3!Q^_Z7Q79BH)IH|>uTU;06MUZcE`>Faqf$NEyAzsPaVY+DVw ziGi^ko+td>BLs3Rdg6^ID($&S%FSdAxjIwtVdOOl?%uLNZ5!GIAD6xHj%vzc#|Jlx zaSWVwRr0SDx3?htez+(uHKGiCZdEmUncV!?;4d3>sf1J4tO(kEmd|&5S?=3=op{XC zyqYqLHvbm#Vn1N#(InE~ouXIOteW=4o`{kv@b3E3 z_szHbO<2vPsb($WqqL3Z#3AHi&=H9xb7JEXcG1=1oe4f($;Q1Wp0DnorHn;^D@SDe zYzw_5sh;iuoA=#GLm{rPX$y8=KPhT=<-gla=`vu$1+98PO->SEy;vDs4_gFR;Y4J? zxkJ6Gn+J3uPjc&P-G@ie9BvefpD1{V_aF~!i@O&y0Q&SZ8#>>L2$|bZ#Okh_Om2-` zQ2LcMAbKLY#ButnT%T2GT}MW~W;yYhq5`;MHwR@$k73*dF^FwtmW7xt%}iW%zIwCq zn1?DuxY~WWew$pp>IPR?-EyEx$f##B&w@R900P9o&<4QUBnwD#M!F7kRSX=jpy-&& z$<9tCURNutn8&@XsMAE|7Od^Y+WOCV5W^W~>7H%!C}`!5Iz_u5ArFg;Q=+L=U$K5^ zrEkM(;DdjfPX5Z_Hubn*X#-LIqu-ICT?TMHN+$pZy<~2g!5!ziXn|YoR3Im3Z{$Au z=J~5CVdL(iDz0w^Rgi2{4TnSDb#1GM}i- znGeYNgg{j{&zMT*9lQ$c!|Bn3@RfU|2?SlmH8Pu=eb?*2t$G2s%$)R%yRde$W>yqR zhzFky&6@*^*dcw#6Ee^{-%*|W$@?N;=a^^s=_bjQXf9J`DrO6Nb}D0c35-0|U`G|y=lJ1Y-3;r} z%6GOzUAb2mq$*|jf*whXNH-U*>1r`m@7k#80fRi@&IcPb{ZrlxnzFV_SVGN z^sP9KqJXLUUr(c?HQwL8ha!&TkqER9y`pE(bSPCRxu>|X7lu4*SG}9$Z8EB898bk| zEdAJ2-j@X7Ut;=}0XWQx%Z;R(F~wyjq!FGhv?hC~-}v&`5q;XSas3P%(!@0rlJInf z_p7<8)#YXT+7Z|B=Xr{&Dzwr!>Jc&-JFTtco+2Q)B#3IEt^~-uDgAa`fLL0LuzWk# z3g$f8vl9}slSs?N*is!WFt9}$qV8c4xry5J))W{}0d=)QHe};TJD$ORE6iy0w*zzR zLU?a!DdIzD`3^Q=GBOuAH)V%0WwgC-m<2!7E>+bD?A-N4sMt-^xyGtw32T;4e5T*D z^#X)d2YXGD`Pc#1L*Q+~@&{Gw1&nHPYF&F**B`Ch!d7HIdNgF!o_i^4qCCh^_b6Dq zE3KXtv28YR+XxrDQkCZ2+m*si`4oWnlcEPPPuZmVeK7Q*;(WS*=|#i&_LX;LkxT#7 zc-$*lwKj!mtqreYxzr_oD${3Es0`Sb2JC|?wqTleCyqBE4)Gtgn4 zN53NjmUYnu*cOV9Y?XC6-%@*l6f~No%jyZ3D51F4CikJT^k+7zz1sWRCd<^V4-$L7 z8je1sCM1=Xn=b!gW(`;4q6U;aT_JM2u1O2q+X6utyM6~q4h>NQCD8Uq>AP_pqPC_N z%;&<@#+zKKnh6!_=<+@mm~At3{HffBnuFQ2wnVfd)t$R2VC{Y{M=$0&-tQbp>SH11 zbT7)iMsKeHX6TOJ3gHi6t5mzMKiN>bphVkdP}%vC6G0~C^T?Q*4juc4H_JBo^|!8d z(mPkH@f3mCXwVk-es*FmFKL0vJSnluBKP$zu6L4}WpFPfeU-G`CNP+|L-ly-+-E8m z_2tB~aki{1_wui#J^f;*@grCkN*fQJ!)t#g?>FM0cucX+z_dpSif?L8SngZJdN4UG za3*6ylVU#Gnm?Zjq9kpvcAaA8;po5_8?0l&GY@h1pMLwUY ziOGO;&&#>i@;S7+1<9=f3`WuSMkt$OOo6&E%F;VdF_L%_<~yT)lYw>LhqkwuxVoa> z<4{&vuXrc!pSDlpUm4wzBo^}1W>?iJOfF^&zsA|VLn0WZB}r^RP18YUYQdkE=JQ!& zE>0i8e({0XUqt;}9`_8^f;EzaPuep#n#ERO7gH2aIGEW+2UyLAEOu4kFvAfGTyfa zmMmzr{&mfvQxe{v$*r&dkypWgfNm|uiy-uLS!LjQBFO%Ov!)Mo?x_?ZrL8)e=WT%f znzWzuCR?L!yEn!8PgPhr@?hbNnLFqB%D!CsASVtZe{@mFg`f5T|KfU-24M0?{x z!GX}LF+kn6q#!yKHA+LDt_><1Hh7ezmA8eLgc|ji*Tam)Qioq{j>Q;@%h=kKL!AO2+Xw4`4%XgN#YZA7|%o99J-w7nmu91=1Q&VK>^j>##X zT>aW8{`i`)h5CcX;z0xir>@C;+Z34H*9&KlfKpIy1UDcfbh>g~^j9q3MD5gMkN1jMlFpD$z_V-9a^!mgbd z81ZoSohrvG|8;p zlglV5pH$ka>W8WEDb?r^*O!0P_0^oPGR0J8B<_&n`fN9qD#3tSOTAF zJ~&=hk9V@!DWge@um9NUb@f>tUmH#Y1ywMb$kjZYk}eper#AGG2QIcA6Rj#Z%k1}0 z#OM3fo@3dbWPDH*wPC$s!&N=oqfvv%m5&QhT!~TWWQ$mk+&?zxAos*7tbaE)ow$18 zU3>|Ty-6pIuo^9C6zG+?fTDdx!px0sdaPwTnGOvXhYM%u!m_~h0`!ve^$lC)TWpmN zBHwxJu9<%zHDlm&JI*pLldxGraWOj!>0l32dGqb;w4LH1u1MiU$t`D~Y>V!)kZ8mP z=$P;hi^Iy2N@E|QZEBbE*I{M35l{L?!4-GA;W%bmb@$%Thq`EVy_X0j94Kh*ypmsP zQf#~2Y@UA1?y_4WaYw!Q;5KV!LrCr~u5i=Wig%nKRoCMb%ta07oj`}wv(uXA?gUJG z-N5lut}nnpGID~xzm6hly}oBX#G#~?b?4%%lk)JsC9FV*@v;Ey<6MVPC(dWx2W0{o z{q##iC$8)CegfZEe+r)s%=ol*3alsqNZ(DtA-;A6YvU1X==Jhl+p)9#^i8c8 zUSFDo8B25NN%Y%l5MK22hK1G$TbIV{=4^E(I<~U9&&a*%k!jAOMoam#iG28GfwkuI z*Ur9h`G;tX;zn0`r6v$!pEXGLozA(dn1_U}&7L{4AcmMdv$T#*N0FZ$1#di6&z7$B zIP}5H_Hu5Gqox~BLue4c9L9o2W~me?ntM6>Miky9|?0Nd*jzE9nXG7q0ctYxy z@3{3CX|eM4z3`EEkkre_g=}I~&gfJzLe+|02FJW~W!SQ0iS!RNWGv4zfRgMO5YxQA zoK_KHo32!I-A^*K+AMPXV6}wuSv>MCen-v7J^In?qoVqotm^H)?e;O8ky_P54hW|% zGr7i6FNc^zTNvUt%{Md7X~1u-Z$}&H;`BNzzK-W_4-5FUD96Zj#m* zGtofp&F`Q`-xsXJ@03HRH+VCw^IqA*8A}OrKq;I;b4Z0vJ}s&@OzVaFhkvg05wENk z-`ts!?Y)oZ=wzjznB)Q#D4=dF21|xtYWK@vD}pM)6NF8Q+L(Z+>pKW)cU`|L?gjVg zuCuiOa%y^>>aKO-jkST0kgvi-w7H9u6 zB8f|AcQB3HjfFxgL7Gm=?$jKz_4;hVH38A~peC3MT?=l4iMHl&C%C3L zCR95D(&%0z9--hqHFHCJF2MFq$$En($B$s$HoiSR^I&uRDN5l?SK%%3w&KTF)Ov1rj!)Ls8+`r% znW;~1%3}_zr_C8Iq38!c0(j&(&-TF_CT~27o7HXfjcz?L0#dQiFFlMY!9Z~^^icCq zs%fafW%~N)ZNnoUt(W-s{qm-^naPT%pL8_*qaouV_}SwrGJXDo3+52&hrsQX;@$qr zjYZ+7XmhX(IRnJ~hOzOLYg&O=+Fd)U{cex^o6BQ6dG`h_@O~G8l=@}`<~yX_=uN8$ zns9v5dr~fNcVwAKW{>KH)_>X)-(0lRe&;8WRVrad4ye>;zHY$}ifaAyA zmG#9DNgD1%9!tdYCewF7(ONvsUbG;YqttBh@mf5U?;FFdR^9{GA5s~P0%-H-VIz2uNUSKM!3iGs105kgdGb2)+A1AAdXPgeFweF`)y{YhB-`2o9T zu}_vI53{u+(*j97592HD#&xOVIqX1QedIDcp~S_-__Fnw7zip@F#+=p`01IzyRbND z3WsW_1Z^K64Saf-&59RT-5^3;)-ms?zXVwNz;+CuRPd4wtI9f`qT5SE1BYK;I9?XC zB3KsiGycgTJ+l0+fQL4c6c?lFhptPz9x27DBvdxT4ynXai>W%F;psd&Qth;pYtlrtdheN!ynt$lagZoE0ec9+fX(ydeP}P@pcVIS$=o z4G;4J-?;YX+MSOr=P2mL525&l%a~xUD21O@j*{UpovkpPk+j7X|vplL{rJoQuwb!pQpg-fssXr9!iuXJ|YS&V>o`mPL)Nyrbvv$nv z9nMdoF~m!%Ty~6zQi?B2Hlnn`L1*P?pXl@J1Lk);AbIydsI=%@NLk~wsN;}`GjOK@ zA1VWr>gCHUP8I^&@rp!MKdyz$;TzoE-*aTUuuw9l(>bqYYMSeiW*_(%UD>tJEH4w= z!p(BQh{jjrwT+q10(JT$JM)z_V3eK$ly=o|u*gpKz8hC;yQA&6%~8AndV`&yeJiBR zg87}Smr?gmemz_7Hb0YW zM#0zgiLHh7+5^y8>iI7GV38OjTJ{_3A6|(8O3d61D*j z!&hcDZNodr9hoissZ*1ZlW!G@oT-ZpMb5R2E61?w9>B>`m=V}5WQ^77C7#VfB@oxA z*Y|OU++qIotJ0KTC$eGvC1h~`GnwlpYqThi&2t+|p`G?lEPVun4>x&#emq3gy1 zMiPmW%a`i4mGBBzH8w+#A-CHDf;AF&mXa681qpsfJx7&nN5$vzGHi@Su74yq;rkyxZtYtkez;fq1lPjjCs|fUNqX;Z=B5`W-84P`WJ(zYARui;y)MkSi zFLs9A6nmEb{~0WQ zVcE)=)MLVre4VVt(dp1$2hq4DdNT4pb?qRi7hFid$D>NUr2H$p3h_@Ks-DoLh24$nEVOw(tnuU}gA=nAfqF96Nm8w!qZALV?I2 zutl1$x<01XeBPry@=}c1lvlF#@LM48Y(yet4_4xdKC(2|BZ|TJ)~` z!u(YiqW#qLYwD9vv(aC2y`C~AN~)ec4{R+U!2n_nIan`T&GD_E#_V7>FLd4kbZx13 z^fH22C5ZLDF84uxF^q;)l{`%@npwm%V`WlbBS4FiCspWKXYux!`Tbs2 z&4^nE0EvJl+Y~`063qk=;(O_!&#(Wf0oPjbSt(q1ruqz7qGg*b!kausWZN&Ryc%+W zZTN~SO@9cZQjo#h5AqHMin&I7x?2o8q5zamM+1Y~5kKX~$2BhUzXEo$6fI=)eFLy^ z7LLZZ9BGO_{gbyo^_lmy!Q;;QZS$ITBFt3>onInZ{b$t$jIRa$tg7n$7FxdhSx9@t zpQ~zq=thUfyawToW-skk2Y1|2Nu=(aB2v2YeeQ}Nk4Gx(6Jux)7V=dokSiL#w4CCv$IFxqs+>$J;_?&9mMH?MwK%Mt(1iWzJUnR=2!v>{6XLY~W$sPwogI_iV6k}WBcZW}PacfYASRd3huf#X ze$iL(35DeAX)Xa5#~ePjIb7{l@bVxjU4~{6{idk6hMEaJ8TayOuZ437)N=WzUU7&D z<(tZxm7XNRT4?)eK#ST0!UJmJ)8Dt9i${bo3QDI=}K6w*%2`=(*EYi8eeL5j5#;}Cj44nU!&#EWT{+wIc zlf|sCQXqe@S8To$9OJhxAe$ardg*j8_?{R@0)cwm3{7o;62mu}YSsdbaOLjW*FQ2! zId>h85-L7=KMgogA556lQ(Q==s_?A_VqfodQ+-+B)4)BsQ{f#tQh? zDX4s}z-0uR%s0z;IeFcvd&G)I{@fUQt+XTT1FtY}n0tKVZ~2mLl_5DX31VX|+4}bB z@)|40o3wE!x9u6nt5aF1lwgSpbxnbSUxI6!%VSkKMJ-vCO&p&{%|;=U-Og82Xt(1f zIeD7BVF`Vo+fQst)6SIvBP}2GoJcdRths9rB0s;n__VFD(*Fsmbl``OW?`NCcFJ>o z;GmR+Li2MEw6$rdg|EkkjufLpB3LCS6F;k-pH*${%;KNm#f^Qn)#plr05K^UZlXmJ zqBYuBWtgiXL|ZRq$?3oU2ou&Rz6-5KP;pAt9^QZ87Vw9>3D zHej8vvLLMdFnUeNdrNBhwT+7G3Lvk~vvQ!!Gs(ZNVrh>zo}?xz%9o3^8sG1db96ddj(Aa6|k@!fV<*1l!t7WJ;a zW(4`_BvE=2Q(^*9z=8*6+0;AU`O)qP&v({*N z5M3iB7^-b7E-T{YNX;#3uK`4VtUUh_q$(=p_NCd~?87d_wp52+DVQ~!`*%&khDRQ- z#l2zgKFXdn@yhrzrhOfbj-%nB?P8?%iw-5OaXpuHgZ+zrC2LgH6hC2o%);sYk8ZYb&WiHahwG%#W^V&)W=vnd zN9OSsIrp#KqTVY;DKp&wJSJpMuNRix!5wwy{g>gdvj+Y#R!3O;Fd&xt6WDcaiadD3 zV64eYn3Gi`qx8*V2j-u$1A;$%7&YQaDp(8cNOL%k`*Akm;rANDnA|>GaKE0 zbaOC6OKC~^2g|V)-7v^piW_vT-5YbmtA4 z-LL)5MzLr>;)Wic_1h4~lni#X7C7u$o%&$Gi-gX+0`pcBig?tYMwz|@Ys;$|cw*^Go1by}iVj}Zl>nuk}MFA~S zayuZrNH~`IYZ-Z2B?@uvq^aE1OD1N>faNsPZs)2kcqBi@M3uV3ic|U?0$OVnI~Piq zS_h@yq4#h1&3nsaCZ9k9_1xqkP{LO74$3s^okH=kW31um$*F<}Pn2zVFqHFtR(&vI zsC4(yZMPk7{UHe5YK-4e)^9c|@#?JL99qh_nVGMEJ~~m~keXr?zSUW!TR|=(V*P?4 z#Rz$ujbc}4#!qQ1YXbxfHR|(y{i&PfRcGu?F3` z8}Rc}sUU+++|xcs}#t19iWtebSJ!-eO2>|vNh&L(F|JNJQa017LB!p!#A`bE(bHvAWcYPCo1 zRB>1>4SR$ZwLm8~b3B)3M)^v>WRkYe>XZm($MiC%L+JpMf=$Ivc}f{?^A0Sh8Ok5o zZZh#b_lZ9nLRy0)8G43S1o0+L74K8OHxB7M#rj0k41o;LhU_ggTx3UGynHtDVP=7w^@o=u^5|iG zvFI}X(%fzC3_}1VAw}!D)_iZ%v1dbF>v8K2!xm5KYlFoE`T^S~N4(@jQ)5qPEolVO z(~s+Z5aVPtXjp)nD&h*Ih^TxAd*I=@`Sf!gSMlgQr9ny)unUg%!cN5XcXw(e=3W1C z$68Xgb}4N?OuAEFlK38SW!l3tf`08d-mfQGo4Kd1UP)`L z_JebP;kA*4XLoIXq}6hI%K^%MEZq0!oNRAsR)MNE_Oy8JX_tlgCFg;mB$o`8RTeL`1H|I!(tyann?;9A@7-29+OS>3EW8PByqKuOcw@8=yQTkdiOJClhJ_!MHycJ&!ioCy15kO@N=ij_8|^}uMu`JolQMTG z0wfKHv6~tx;2*f}{I;Z+l%Ehcs3uWC6pL%=>L|MHQ#O7|LWH=9iYe&utiLLS&&hSB zN>Z&QE=*vqch4eL`rRB@>yDR;KL(~`N=fo4P2%SN{E5qjqA?;F|jk@YUCia|Tv+Mrp#W%bvL z9H9zDW^;isJ>?xq^feU`FeFV06f3p#xS*eS452?vW(Aj-Vh%g=Q zF-}}b6beDSt!@TRpdG})i+A6Ka0c$RA&pH#e6(r})+T{|r$X3(3k;4VI{M+X_3(Os zAUPjW{HiahJgwQZb&Cf`i)y>r!e1OMEv`S9j*p8@;^|Fx&^~PsBoXnGzr5!MZvki! zu$R)ogUb8&tjz%0=eZdMy4pGB?;^o6H`uHfFvOhZw>$8Wd~>UP2YTDohmeOj0jMm* z?_r0G{x`@`>x+M`4aFjA*QO>u0N36^4V*vsnC0$zqIo6Ac4Lhb%|B$_Hm;^`=Cg4I zEQYMMZA0}{l;oEqt)S|#EYyK*8wQ3|RR9j-XXj`f7P$GQMDF{TZ6z!B6Xx`d5fu7! zj&1nFdPlH6tp|lBUocC0nA~3Ys(&%7q#1xYodYf_vNN0M!GI2_J6Z;K+{LjV57VsM z6-OjEgH1;}2nyUVz4GRN=5AO9uN)2p$_OJtNH&fd`+>CW_Q83!YKxnslZkVtdt`)> z0crz3Qr4(DfrOUccCH(=gO~|7Zx8|}I#k1#;|pEduQbuTF$OlqVXSp(uNyjkA$3d4 zmQuk}jmVv&zy%}yx*76Pc}c<7RuzH1WgcQq;cL*oIuI*;W~qPKowmCkh<3xQG!l93 zx4!B_4I}vc8V7|w;xV0to}*?e0n0$JGXicKumAFvIJfVwXJ_;Ff_!#3sG1}F@P`YQ z;TH@k1Tf5U$f?gq5!6Wi%(0AyQEI#M@j@g~R?CnHxg|GDWWWG2J;j@Wj*lWBPFFa0 zn5pcRtRJQ6L~id`zni(1PRr82{N|3L3$>tWel@VafM!m#zS#!tTly9IQp0V%-Vnjx zAOPIND9Nmgs)F8e%MlPqrr0=WhW+H}{Dh-(wZT6xDB?V)a6b;->}bL&H?89_2G>qW zcC9P4FVwND4cjYF&jNR}>1jdF>R3YgiV88e{YNb6GaUcm>Zp|l+&nC1HL3=WDbN$K zwYyA~!M%qAcZ6sqyY`qPMcyg^l@?0!u|?2w8Ch zqn}@hGn7aa)0$nFdT+r&o@FETGq$sR95vP3Z^6cg@_!KY+}h z=Wv~Zr$gK{ty`1nd8O~BHnXA$Ei_7oDN98==vfer%i$u-f~;38-AlUA-7g{Y7w zN5MJ0KSPJGZ9})`P3R}-;Y2u>XJLU33PolE@N>akqBfoLK5H0ClWGuQy_!5%rM=CV z6Y09RQLuCpyc_$K_6^)6nUb)w;TdD-x#v4cSnV%z#+~YohW-R@3(nBPkwPG0<$LZP zblbe7Mu}NMScy5+$bC&I@`G;bkam!hx%0y5#dk%` zD;p?&;94^jZ5xNKvX`ObXr{>Y%M1WVqg3HHDo>dXf(&j~$D-p2~6E) z5~br=sVT5e0gKHZlay9Tx7p$#oth(_Wu{p_-CB+dFSJ64&!~8~-@-zbt+}tvYGbr& zzNBrf(K=;?=JNHvrWm{nD2=p@Bzbbg^_6pjU}TtN1Cj}kbICqOz-@@c0AS!k%z}UT zBaI!(%5r6M1px3ct@Lc&3E}AOL#FqCqLr@MrSKA*>Hq|b^hR{McVgQV-2LJ%)CLpY*m{8=Jmw^q{ zyThZRZ%QR573@R0w7rj7l~??r29-7M2u^M%_Eb~Coq7U~!0D>bI7_~&u5svJ#(7^S_-O&*RI5i{RjWZ^eRvx;>e5p$H@>xXa_RefQx(1j z;F`xuCCE2+*>6~0*Z5Y?)9T)|0v|V{sWHa z`~mxQx!S!?v|VQJAE564J#EXW5p;Z^+k}QVY!%|VxafJgtM6Hmn98-_L>tP7Mb{M7 zTfk6kfWiVuU)i^O-QE>gF*Qvtt*;qDaQy7-TcT)8#qbRjT^~J8ocbmrwx&7$KFP() z2w8Wmwdp9jq`2G`NDPWSJq#O*Enh#hw*6lCN~{p&_GP!{6ItO0tiTN8Tm3Sy{&YVb zJlVGoo@|?D_gx)8mhVLd)_9H_hEbpaSq5EUH?m&AHO!`42U1+^AEV{<_V5u^zPqQ( zl0C~DDAPTME3aNn*wFBJD!ZvcCC-#PnzLleO0`XEm@fi1?F z#D-n}y%sZ@Kw>n4@ryX9=(qfWjcO}554oX{iT2OCS)SF)iZ*l_;Xs8`rHhfY6 zl4l+G&%VI{N2zp3O&-oM;vnH?g~Vu0f%)PubCksphn3-`4&$=~>B{iuzRLI)8FhP3 ztHIk^?E=89W&X2dSb?JOi#ub@56+-#P{)4WrNv<+G$?$8y5R&sf7;S&yi&h7J~J$#5UVYTLlrKC1&JGUIQ@Z8^C$or z-<=L$S{+=4+hp_T#1BqaK&t?QHfYR08Ua(kT&=xBD6}6s2;f&qOg|?3cYg!k0qCmf zX-{00zALUCo!0!Y4$B97>2$V64XrDF4VBxx%}3AE=!qPFZteg;!E}^79sUyIT;}V3 zFUN*A1Av8xr-jTNw)7tyEB1KkyH>UaQeT~S`fTMeCGb+!0-H(C!Gn})q&Rx0{^?@%r&aQOY>ba`bjczun#NioVfW=BJc z`d#zl9l+JS0upn*&5MwtW`1`l`6m4z`YxiJKI7-J{U-PyZ5OQY2WKC_I_l9tW^B7^ ziK16;G4RUMu&uB`06wsf>(&@XIm1aiD}$tDzd{ev6*|^8&3h}7H9RNkOCqcKc`oT8 z0Il?7>_g?PuyN9tTb3|d`k9sSK0pOU0>F}fCQtK4jW)O;%xrc}mesEb7rVO*0f5*d zm#>UMy!l1-kJA8PJAjo-Xo}m-)5q?0<0`w4Y`eXyvSG3b8h-E6R8tYMk|z_=3<2Uj zPy|W#3QS$|4_Q?j9&NsrkW^S^4j_R|6{-t;EfFVt2vO#vB8H=xx81`|_^@v_ew*W9 z0zfs6$!p642A*&rGK7>Qju z|8h>4KuSjYBItXRPLM44_anf-|D~gRW&UrP3BX5k`1d(sCeUx12_4T3@LT>TriubT zKNh0*$7}&6iP+V6sKL^o}#QrPtx;+}W>mBDdFpn+(zCd`Q$IIEmX1!$=QNE;a%kfpvM0)$>* zK31$yN`h63*=3y1_}q^xPVPR&m`Bh z+$D{%ht}vrY8xNi4=N$(R3m3uLD|6!2PIXwSq%=2GFx&LnbAEF!= zpuNI-e+i&p0_b3rf7y5c_m|8ubT-mHPmy04u<76Q%b))fF>YUpzd3UM>&s6+pYQW1 z0hRnOtiRuc!uwPYmj45DkNdx71Ms%~uonW5{VP~Oeq9iBH#Yn5e|rB?atI`3enkYf?)jH)ng7Z;R=6$UKxm~wW7^;TTBA)_ zJ}ZVD2c4+?+XH8Y?(i{Cx4OK=U*e`Q;Fpq0g+MWywZY5LiOnGik+yxL&7qCJMVvRXVPnWVKdg-S%Nbn|65<2CDL{|@y#T#cv)i1EpBUuwMwL&!<23&ZKw3tHWQNrlfxxgsJ^Kgw4n zLnwbl2*+O8Q|K3oBEnn8U=~0h)u*fbDu=M0XX5|N>}4NB!`0?zZz@g4N2DO^`g#uh zdp0?{_tgjI=ti|Szn_voz%Gkce}$iaZ#Fcba1s|!BLX~Ui4u^csLHvaI^9c1$KM=sCS@=u&(xG3tKY8JP8F^42uSEKL&ETc z#89nfyQEYqAcaLTR2ky5TLu;Kf3IJcikcfV21OXzL_Y%l_IspKgwSFh9Eg=ewvNz%WmgfYqLsbp5>lXteeX5U5DwWW&8;r0=dMQAg5s_2mm=Fzc^fYoa&GM zb<+0oX)%yv6{}SErhJ7{CH$2$j!&K2>s}55)>~UNL-dY6vb8IUtAZ6VZZlloVLSzq zjqjQh{6a3g2+)O1K<5s8Q_g=AaSYFd_ZzBGX4RH?4*U{E#AcWWaK3Rmz#)ib!S|`e zZ(f$_JH)Tn%Yj7%P0blTOgpapB1NEAVMnk=5)W2!Vbs;{ah7>g`fPkl^H zDw?}#*K;P|WZEIwoQ=&=?u7KFv)oVbIV}%eg+3!1GG-9e2H#$gf-;7-KC|0X3?Lrq z%Q>J7J^>#;YX7aFRJsq0op9KEBx|@u>~Nb0cm-UC6l=P9SMmdrLUF>pxh~$P=Oo;Q z@$p3YF=eaCixaYJt-_#dXAd2$pY!p^0iJS3IBCi0%AUmv-~q{~fEp9@C$d)l8Bq#9tjQC+aE{)Q zBb`(os$qgrj1rfA$e-v$t-MMoi&1*|ir5j15Y6x`8e7cNfJj`2n1f1!*ou zvMnEPv82!~XD+q=R3ut~@rICVvB%Z-vF@9v~*>7I(tz}y}-OpHpyOh zYwl~P$FehmMB^;EJ2B3iz-ZCrrdPv?sF~iwT$;Y)KSJn3eiAUkrX`L){qO+j14RA7 zV2pa}$#AUnBG%K2`^f0&EK28>1fyj}3&}6R2uA#l6;_6J2(*wHb!o1)7lV5O>U;Pc zD-fq8bBaU3|HaXK|LRA}jKr+dc=rT<=(S5qA;LXHKJZ^}H*q-v(n z{Qb?$YVs}8s*_|mu$b>=j85XokRjzb?vV%7Ak6CesH~0*{4S9^yE(DTnSWqjC6mo&%;WrkyDyw$U+WGZ1uvQBHc(t{FqqgQ9_c0yPpEbiBZxXq4pcNd zc&TF&;5y1OsLxjRRpnvFHdz`R2g52;1yj}ZE-!W4FR3*_LA>&1qphxA}zb7o92geDvvqSdcj}FCAS}QfPn8W z`N9gCxpLs~b_@AdFOaZi9~MmGz;j5`7)2x)&H-OqQVKfvRqdFw0KLrx(7Ci@*+ePY zF}&ofnG^p{%@2Y8xpW(U^WRo|EYd(LpsstUCM)peZ(jrc$Gne81MBi%4}W`cES5!@ zg|7Y^C-)z=rwTHHVh;fi1GX4(2qb&q_ADS7%YPp9?bR_|KypgZ|CevAam=G}2&<{3 Wd8gpEfG^