From 4bf209a52561b64ccd4ce260fb4810b0cf06343d Mon Sep 17 00:00:00 2001 From: dismine Date: Fri, 14 Feb 2014 13:29:04 +0200 Subject: [PATCH] Fixed issue #5. --HG-- branch : develop --- share/resources/icon.qrc | 9 + share/resources/icon/config.png | Bin 0 -> 13744 bytes share/resources/icon/flags/cs.png | Bin 0 -> 818 bytes share/resources/icon/flags/de.png | Bin 0 -> 509 bytes share/resources/icon/flags/en.png | Bin 0 -> 562 bytes share/resources/icon/flags/fr.png | Bin 0 -> 851 bytes share/resources/icon/flags/he_IL.png | Bin 0 -> 637 bytes share/resources/icon/flags/ru.png | Bin 0 -> 520 bytes share/resources/icon/flags/uk.png | Bin 0 -> 509 bytes share/resources/icon/pattern_config.png | Bin 0 -> 64326 bytes src/dialogs/configdialog.cpp | 146 ++++++++++++ src/dialogs/configdialog.h | 59 +++++ src/dialogs/dialogs.h | 1 + src/dialogs/dialogs.pri | 8 +- src/dialogs/pages.cpp | 295 ++++++++++++++++++++++++ src/dialogs/pages.h | 68 ++++++ src/main.cpp | 39 ++-- src/mainwindow.cpp | 53 ++++- src/mainwindow.h | 6 + src/mainwindow.ui | 15 +- 20 files changed, 667 insertions(+), 32 deletions(-) create mode 100644 share/resources/icon/config.png create mode 100644 share/resources/icon/flags/cs.png create mode 100644 share/resources/icon/flags/de.png create mode 100644 share/resources/icon/flags/en.png create mode 100644 share/resources/icon/flags/fr.png create mode 100644 share/resources/icon/flags/he_IL.png create mode 100644 share/resources/icon/flags/ru.png create mode 100644 share/resources/icon/flags/uk.png create mode 100644 share/resources/icon/pattern_config.png create mode 100644 src/dialogs/configdialog.cpp create mode 100644 src/dialogs/configdialog.h create mode 100644 src/dialogs/pages.cpp create mode 100644 src/dialogs/pages.h diff --git a/share/resources/icon.qrc b/share/resources/icon.qrc index 5188b15ad..504b28697 100644 --- a/share/resources/icon.qrc +++ b/share/resources/icon.qrc @@ -41,5 +41,14 @@ icon/32x32/splinePath_cut_point.png icon/32x32/union.png icon/32x32/arc_cut.png + icon/config.png + icon/pattern_config.png + icon/flags/cs.png + icon/flags/de.png + icon/flags/en.png + icon/flags/fr.png + icon/flags/he_IL.png + icon/flags/ru.png + icon/flags/uk.png diff --git a/share/resources/icon/config.png b/share/resources/icon/config.png new file mode 100644 index 0000000000000000000000000000000000000000..fffe949eb67bf9ba6df8183be9978f6ceae8ecef GIT binary patch literal 13744 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 D#o72~ literal 0 HcmV?d00001 diff --git a/share/resources/icon/flags/cs.png b/share/resources/icon/flags/cs.png new file mode 100644 index 0000000000000000000000000000000000000000..73ac44241a8ec888d139e5da300d4166aed34bd9 GIT binary patch literal 818 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM3?#3wJbQ|PfhjJ)C&U%V{r~?z10y3c%59!= z`t14Z*RS8Yb?eTZJNNG0yMO=w<;#~1Ln^1PI{4t(n?Ha4{Qdj)A1e6y^XJ#EU(cO8 z$8Vlg*ta&db;Z^rS0T!N|Ni~s$B)mSKOZ@Agx@SFtz}ts?c(UVB^`_QzW@9cs0L^t zP{F59pAH{B%x{($R5~lDY;I8bd>~3{S#j?ABcKVte*FSk@%{Vv4<9}pI&_HNEWtB( zibviI&-|HSG;7Yr<6pmh2dV)Y1ylxf%-gqb4;(naZ<=7A+Gn3O(LQaGeflK3^vOWC z-Fx!#8yEnU0quSL`t|<(`}s}dO=H?kV!KS@dVt6@zSk~o;<|n3zJLMH{XnZ<1tL1%aV*+7-X(NeC(((dKb9+lD_Rhq8F)3mIQ%PAj|Q$8%K zv`1EHmHGmO&1UmG>O)-N}8^ye?UR?u$uNUE&XFUhR5`bj~kdCH#FTP zDYsQzW`?l1yS~>9dDTVo%1h*xm&q$HmsegPuQE?oajujc%ap_;z!b(_666=mz`(*I zpkkn?+86~Cs_}Gj4AGdlb%G<`Ap;(k@*Zu0rGNe}{1R21QLu8VN6ZIZNLdYz6$t#^J~uc%OMk=r5koh z)z(F&i1*9cyR3DI^wcyo*WaqF_f2+k+2I#mFOobrF+90>ZWvWp+&>ak(u6{1- HoD!MC&U%V{r~?z10y3cQo{yn zYimnNN@{9qnwy(DIy$<#x_Wwg`uh4NOqjsL#FUYd5f&B}4g)}un3x!UfByg&0E)P~ zySpKQ158YBZEe5W*nGFK`C()8)5c~$6Vq#B<4;CLUyY2u0g<8MUM8j&8X6ze)jzAN ze*vT2Oia&IRo|(r0|h^-tAA2c+r`B6P*n7lsOVc!(RZSv??pv-OksMkP4LBD!B_hQ zU+))qb3kC*B&NHYd7tj$d9jD*)n4AMlbCL9;CQ^9`!f$92M*87`T zA8%)UvV-;M4%W>RSg)>OzrB&;;dX(?yTqRDm43Qc=Gi{^XZsbN?N{6}jc4a{fxWW@ z56l%jG+*%W0>L8-1b<}Swgv_$dr6RAFarY%kARASqH1FlP$M0LW0qeq&H=bYSj;Cp~kM#*BfZ$}O(tSMBvR{3C~>Xg(2_RMZJ zPs*1oWfipFdTS6+F!|@^>yr&YgSr?%f9hHMMi+&VBv*_2H zeF_nO#ml>O>(-k$Z$5tf_}Q~(&!0aBiof9C*t~f&FdTrs2Z}#=@&u^?J{d!3+#6 zJOU~PimHuKK%pW}7sn8d^IIprDYq5YyRm)6azC!AYfweHNOD=mBed=_OroEKGd&AS$8JA* literal 0 HcmV?d00001 diff --git a/share/resources/icon/flags/fr.png b/share/resources/icon/flags/fr.png new file mode 100644 index 0000000000000000000000000000000000000000..f27f41143d610efa5b680fec0e2ee82de147cf96 GIT binary patch literal 851 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM3?#3wJbQ|PfoX1lPlzj!`~Uxc21Z6?q?RyE zEpdig(k!*)*=osi)Kcc&zkmO7sL!QPpNk^D1bd$d@=}YNRJ-(a$-+}L%g;5h zxzw@#O4r7#|6t(z@&0?w7gKKTezQZqBsBfu2mx^%>I-h4t(Y?>!LScQCx~ z5K#H&#>!8Pl^+@_-!)Xc>S^6!qQ&G~7t^=Lzhh58=RPpn|M&0TPcZIqF$*)cvH$%^+pf8W~H}vsS2QuTsxmt)8>`%aj>cCo*88 zktUNvrE2Oz^~~k!Su54ESE^;L`t<43v#7wQ(Sc8*10O~O+zRtuZwOK*8aYEWW}ay5 z0uYK@`2PL-hdxdZe4Ot4INkMey5i}u&QOENzFaVDnqb6i!N|D+Kom9a&6_v(J?!p! z*xm84yX9_s+0|w(P?=pBZ_p&3kQqE-vv|X1zk2oRj;qyeSF7vJmgk);RvUm6aQO9e z1Wx4)n$8(Kog;Y0ix)3$Ihx;eG{50!cGbb`jGf6UpfcMMR_`8Gzlp5=Q&|0{vIb0j z`t<2_JCkd6##il(FWMTNvNBkqug+>;%I?#{;Wt4bbedSyEa|wpGV$}C!NAP`x0`;h z*Ss9AxLTjHGdW>nw8Bu6$E{kxvsTc%LC~j3(5G3@w*`of967Sn-fV}x*>-!gt#)Rc zY)#i$8?Uu6Xis<>08F6lB|(0{3=Awh0xAZIs*O=Vp*T+$#}JK)S0^~~H7M|~q%WMu z!~XBTM{VO*1`fjt!;cT<-I{6QE4HuyP?L%$@03(y)vXNgHlEq7DP9qKMOxXH^}h&D zlh(EA_U}}ap7d3}buu(DImXZG+v;!VQ1M`nO*Hr6HGNqin;1M@{an^LB{Ts5JeqlR literal 0 HcmV?d00001 diff --git a/share/resources/icon/flags/he_IL.png b/share/resources/icon/flags/he_IL.png new file mode 100644 index 0000000000000000000000000000000000000000..8a8d4a8f82b93845a2535d94ad76f08bd269483a GIT binary patch literal 637 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM3?#3wJbQ|PfpKksPlzj!`~Uxc21Z6?bouh- z>({T}x^?T$ojdpL-MfGP{<(AKzJC4s^XJb$fByXa`}ZFzVAAc&Xg?EHbvnHIY>A#aNxk( zw{L-l1Eqfa_yLrixcpB4vOD|t?|=RJ^`}ptfKuPU07&;Qy;a(GF{$Zn-;$eOzJA-g zckhcAFM!5={`~n17;N1C$iL*+)0ZEfz5EbRa%}y+hr4(0e)jCyyLaz^%07Pl2sCiR zz6btAN1wiU_w42Sfa0U;_TJyMYuCev4`01{1#}5e<@@*Vfpqnhb8%HieF_f6RvoRH zd~U~%9SG-@JMA)vH%;-@XmB`tjq(Kt}=%0g?~^ zv~K6loj?x)!v`32hYuer-vuAnK^&gTQP?> zCs0B3$-J(Oit8S>dW%dpdv{hWTKGh3-_?4l?@!Hk%bW}gFx(;^A@Wmw-l31Nfd~CA mB`>&YgSr?%ltC|J=EAU%!6+`Sa(WKY#xI{re9U96562^XJb$e*F0T`!_`P z@ZrOsK79g;K-3>Pbm+r}58uCk2b%Ef*Ds(lCZ+?nwr_20zS`J)x3T$QWAl@VX}_`Y zYa^piMn+$ajJ_Efeq&R1T|J)n&Yp00i_>zopr0Fe6Rpa1{> literal 0 HcmV?d00001 diff --git a/share/resources/icon/flags/uk.png b/share/resources/icon/flags/uk.png new file mode 100644 index 0000000000000000000000000000000000000000..e46611fac09ff4d655e183773899402ddae10512 GIT binary patch literal 509 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM3?#3wJbQ|Pfzda>C&U%V{r~?z10y3cQd8Tg zrnXg0ZM&M<4mGu1YHGXH)YjJ4-YY4&UsLnAx%pW~$MdeP=RG|y`ubi>nDBy$XU$X`axHgK`f}$Ui!J{*VkIoovStz}AvHZ?u3VT*6 z>|3q4f3@O)HHxNtlS6?4%3c!W7tFxG!Xuz!ps3my1r&<#ba4#P2)^3u$k(92!&0tY z@Zf*_(*+xEEm58D;OLR&;yEX`9rzw#lu@#n?c0$<3Tp~gu2nwRs5&L}fIYLD&6D!w wN?8T%x852A6ioiP`TFETsTY=-JvsQ8>Ay|zopr07~fK+yDRo literal 0 HcmV?d00001 diff --git a/share/resources/icon/pattern_config.png b/share/resources/icon/pattern_config.png new file mode 100644 index 0000000000000000000000000000000000000000..4f5fb8004a8dfeef5c71b1599e2c0cbe96c7470c GIT binary patch literal 64326 zcmX6@1yEdTvs@s--Q7L7JHZ_S!QI{61HoN`ySux)YjAgWck<5tUlq$1#n#!~@67ac z_jK3~c?kqqTv!kYgdim;ssuc*|M!4~1b*XbPWuB-F!qufP9P8*+J6r)P+A5y2n4HO zAtLhQhq;}zos+qpJ+YLC2(i7RovDSj2?*rAn)%aA`R55H|I_BZuuQ05qKusq1~jpf zaD*Rv93?FY46<}6N$v`UVlRrA*cZH!oKT49Xun7dMLPI!*k!1FlDz1E{Lt{Rw;iv1 ztHq9|!^zLaC4r-gyUhA&s2*teBuQ39c0c%1VM3JcfZ>6moqdMy{;=fsAY|xzV-lwi zGBD7yFCX7G(jKTT5SaTM95kp$F1?2dKja_Msc@<`m|q}Rk8>QC4749Q=(}gMa1rRc zIGA5%3gu5w&KHpWxRK!==m$MWpX%4)9LO*8In@gcq?Jg50hSX7B1SU_6$P2|f-0s} z!^J@AOdxbqnE`IlGChb%O3hRfRMQOVnL>uE13|-sm=r^UXh2`QK>8zOWbUBAR1muO zts39Ww<_c#THvHo>-bv9xyAgopy?f;)YKRVsi&l{zM*p%fE%QJXXx`t#bNPhL)yNZ z0D*GiFo17+_u)Q;ST!}p5#5BSM}OK4`H$4laPRYAy4?Od2(;tuJNrq;SdZ(+3+ZR` znMZN?#atII$K@%)v<~TeBPi!&Rqf9Hzq1j`jcr|7IoRJ{mL3q+G8j|y`84a(>rwl# ze(~jde|p&N+9mgA(ean~^1R(QaW7klKOGMfXt;hDBk|r0_wSuxj&wlEuvMKFeNPe9 zAzCyo@{XmDG)y?2W{~3VKjYmkx;F@cEp||ir2v>$9DRw75yYbm6|%Z>&+ZclblYy% zJ5LP_;b$JOGwt^8O7KG>hXUkhDi!Yl0_lp9GboSM3l2krK%zPRv^7F__r2J3J&^dl zU)Ou#-t{>Gg~ZR`RhxsBj0*z)svKk6z7_Lqh4ULr=^i0w#`2{tCoOm=8U6E8Kj$M*jDO{OY zMUvo_-w~WUL|eQqj&}sa^7}owLxMTczfO^V9==hewS*HlP&^NA#@LxTEe10uea5i? zmp_st_h_cv9BDO1KxCMy=NKD`b-l$QZ)Ll))` zbxAt1MbsEHMr5y0kpWI})G!eis@7O=soDbNzo>u3|Jo{%ozRu0vq|ETC5)~bTh&2v zC(;pr8wuLa-0$CK-N)M}xz&QrH2m&R@ceU^T4~Hu8s`A{fb9U%B!xvtB|lARqa;@u zg*`@7xH7j%sai3l1dYulje9ZxQ%a_=GVjkEt~r+ZlSTEha~sOWA42)$8MVLTClbfW z#}M~!@Cd;e0mGqY)HvzbP}pWTZrIf+vPC#^5jexjOq|STDMzVDsdg&rv`w_$7;$5; zf299V{=uVVR4y$mD%&iBQ@K+aSB@#w{pnLBuEP3ruM}oJsa&Nj^T*jwyq{*Jyd@!J zW+isYf(5=BA7PLh{j&WEA_a;$wR(FUL&R`KIQ8yyBvuIJ!7l#n1C+IsE8ecO?I|Aw z?GgNCrMcW9tkSG%^-6b%rh-s=DGtvW&hjuv)WyknzTunbS2Vjcctvcot;{CcR%J=a zN$Ta2<%;DJXPq2X7sZ)Honq}8Z~llv!_rjRR1#(}Q(rTWey;r7D26S@l;h`lsA4Fy zD#Xie7j^5lExt_2>eBVglC>+|^yoZ##rI+SQ2wxaEq;)ISBI>JCx={vpTg!FWOuOR zBVZg}yHOO;>HjWLXz<4%c_%Qgb(SxGK|D$vDbiv{dyjn2X2@nJpAwRigi=QCRPHiO zNv^esrifRTS9W-EVlr=XF_k@?pLvPpDE%mXDSfM1U(;QauBoJ{#YC!ZU$aQ#vZ=#1 zNRwNmP+dh+r(V1=vyx)5y|TR+rMOi-LB2d|(X7AbrfIaPv>B)7U>S0)s>!Cw$H2@G z%dB~@s{b;fGr_0LC+dSA3L#_#v7A7Yz}Kn45uHbsXESXo<5JLP@IL8;(M)|Bd3u?3 zuL*6OX22rzXZoCk8J1bAQ@~wlM3~I)afW08hIG84jgiiMY3BzAogL4=51Hxp>3tU^ zYt@$=mll^H>)8`**)&-itWGoiBO=?12eX23*?*XC%(<+1^6!W|C_d#zZiTTKRY$eIlQOZ=@lm%kY z58va(87PB8gNS}#c&ea~Ahlq@X!}rg+*#&icDLDe5vMKDSJ5QV&2%$n1@3BkX?9wH zG6qY&Rn9iHHo+kVQ;mrQ^-OgsYZ-iQ2HGkPTkEc^_lvub-OOFMJuj>j#t|KRkKC!g z`=DaXQU+8yo}}-xq4Hdb*Fwm&C76*Ew`gt@(XbwU1bt?tjI$iGq01uLw1o1vlC*N3 z@#k?J>>lKUtc7$3t$|dfu^qAqvK#3SHUuYS6-KLe-g>sF`+8hK+G2m1ljMyqKsT zTZ`q)xXS)_f!c?<6W>%AETcwGpnlj{VaZ*`=isphyNB`hTd*o*1z$^e6RpjHLivSS za+Pl7m))ofDpjUIsmK_x089tq#2OJ&1{O?iaihAd z>`>^?yZ?S6v?8(*vLLASxxRe0{>!q*E$41_UE&EcC}8?C?jZ(A_1aM1 z5MkG-J1ev9z3SUVuiLsC!BzeilES_>@h|Fs<}bAmKWB>H5^xd{{(XT+xqCNarC$U1 zCb5yEk{k%+NdW@+1%N;=|A6Nc5XglI1Ul6Rfp}6tAS}Chy+Lsh=-NR_R7lx<^}N#~ z!`Q^--@h)eiv^udH-+ggrimUV_%lD)fE;34ePj$}_*w6$ly~$fO6gs~FspS^Ddit% z_Ft3z6v4nuwjfPYd@gL-+S{!3EA9LdiOV-%u_5*$5f27?IAXyH1Rke| zw1yX%k=(35!Wf^R3BRXx(o=EU3-0j4By>^WdrUu_|#>u+Lj zVgo8q!HN(N?oxUQfOoa4-*xov>tzOMFGb~^QQ$_|;zND ziJbYAr#YXv&8-08$7J(&+N!T`(8$u$b{bh*@KyhRw%z^Gl$?=QD4Qlis2_|WBSkrekHtCM79YfJe zSl>`Z+NQpMwALH;i5kD5j4u)-tZYo5&S7NfVjpg(Dj0AsIbYH8I)%(!jX1O3p2j_!SAqyUr zek6J^EHMWF=N_0$H#!pjMcVK8z}}6`-rk;?d760r3VHT4TFfvrfb>lq(uJt;rRvT}fI->u(o4>v?Ip7<4dV1<~>Po1n zJf5$JkjC{q`H)KqtEhwzk}gei zX?`Sc-nm+n^I0Yp!3ww9;}{>nz$jkK>298QK8^`p)8s^G)4}808XC?&NediE*t+2{ zwI5#0KELIgw%6f2Y`bi+S>t3+m*e5#!N$Q6iYK>T6JK(H4FWG!h8?dPF=mmKlOq}D zJM_TLf~vxUW^JkRsz3x9R&RXA)P`^cqIGcpDd2C036zRoL4`cEyoF6;4Z_x{O#S;8 zd0#A72P7Qs03mP{C5!Qb9|t{lkH*fHg(Mx|)QB1@4q>It+QyOUWzN(zgi8;#Hg4kc z7HhU}6*vF8eZ{TbMDPgKNNgJYO&5^{*pZQuv7^S+m=P^ic=M~;Si=t2d`Q!G_V^*v zg};w_M!XF*p99g{L92VvAUm> zr}~Ze79vOK?)!s~n~t)jxMo?!O_^7Xj6xjiP>CG+3}33UwuEAD0tPvIbcGdl`0sE9 z1xQyL5A=n{Hj1?Z?MhQIn`yEU42WD)nB<<8!2@uYxjqO>xpd9Bp__j*d<9ZFB==WXYdyDT*FMgRD9so+jEyfp;B%>*&qN8 zvr4y+qfAWj`TGz>Mtd({5fcu*4&Vw!v^gWa2V4T9f&ND#d_@Lnrfw5IN;&DQkC33! z@yQs8w7T;L!AY$|h(1)A~smyO!{Jm4;@hi%dq$8jER7d+BAgxg*=2sD+L$_J)SL z@i#X&GGhm~X|uDl)}6X$`ucuVRaH<^e0LM|)>yH|$}0aWF{11cxbrEA+kE|Yq^`id z-(|nAxFqA}*W29~gAMdG5N==iN|nO{EAsQmxP?e`R8+KesCKAIlxZh$CXi!>Y5qtz zdt?c1l-1c>xt1-IX^h3-{E-eSEu{f!Gsz^^0yj+bw>n)g-8fsiob23woCKjpdD$sJ zai;64*iDLb;p#+Fv0h4gvLj6(|=3pMV-9yoBhpJsO7N$kfLs{^@(ZA&v#?kOWz`tu)QKcWG%jiC*jY;=*L9O6UDqLNFGe(_QzK zXk?V&4(L8Or+69tG(=`O_Tr+V#nC#TxX;&`8Se!qgT*=(g&p~w1u^gYM!)iDXB9b+`ido!VKMG~1ndUBfrN5>WME%|P9ZZb(d73v`0s!Pc()jo}<{yYE4oGtQ z4<8WSM{n*~STAokBEN~duJX%RvY?{(0>7H6sECAaBnJqRyy&k$QoQx@Qc_Vd;uEIc zxfkwN(x{|auhf05<_c_l0uy*Zf-B`~Prn?FfA;--;+`YJ@?&z>i|1=8n%3hDI)olW zZ4QsHr#actJ;Pr4w6&r0pjb;)aH$+=DJqSi`)92>yi|P20TcRwZb4bota{%mHsd)lKJw717bfgyPBGws>bGMGaKv z(3Mpv2?b}c18XPjNoI{{UmF8(^2kZX9nEX<#9eAA##y4#a)QJ2wmk?JEM4p^EiE_h z@9$e1HEj-_ot@+wH49nT#cI_DlrP~ps-1^$MaFY+N@K+w`(UVYsO26nHzIb*d-*N+ zC8S_Ksigezv(VpTM1>`iO#Ys*WgYFbF@&R%rNToppCZ6a-qsoQ(2c|X zN;c7`?3m4~tcT`K7&QH$Fsqf39_K^d4ice~?2J1xn zg=+QJ?cccWiJqOdvhwm-D%9wUiDt}ZPtdD;?+|A2_# zk_k&YXh4J#JRY-Hn9*Jue9~4HGw>u;;EB@*kn5rQojced$MY?UgNwZ9DPUbDj+|Vh zH`%yu#kw4GNr*BbSF(!&30R7(uIFDhaE~(%h6%K0!$@JoNT?Mtcv;D z+2|ux+y{fRSg~%E(HaNPDO`xbaXl_NsA1drS5R3~O*U+D{VqDnDkgJ9aw2A#E{g-X zeCZXCT-z`zmWZ`i>?9A{_|gIq8B2`iuKLhhEbbA^m+D=gYyHIiy8 zD7&uatT{@RY4;s%O3H9?wL5i-%gZB*vpg-YDHuJ%!pw-^XtJkcFIzoJ$npv#o;`-s z!(L&EPaAr~_)&&keDJr1Yxyl3SM>$5yK9tbD{F1qy@2ydPAQTCFlN>~kgCA|`?yWM zR#Re*&9D?cRom>_yEBtqLebvL;tK!Xz#|y>R~dR(oKLi zDbDr{*JcRGqi$$y4BC!4Yip^J0p?wEbFy4IM{XHv*9mY6{|bIc&%vGwS;h`5;9g}%d zysmtbxj%APY2rqWYpgtgQK$+Rl^EMsqiX3B-7P3lDJwVIb<7nn6~%6~7^~Zov6;mU z@BA>kva;eiNlWy3Em3QeE}Z+F4pT&Ne&*PEZAhXhKR@7Nt(nL{w-?SLlrg1OEc<@8 z#X8PDf>UR%p+=nad%*D#%UI+)_2~=WG!pp=X*L`>V_N$~brcHaHEZs3Djxf?b1$QP zrym{Mk5Z2MKhh>*jhZ@uKwHF!7;K!In+s^vj54g1Y}FpBqche(B(WA->XR!PG(5g> zhqFl#t`WArM;3nKGoBW?;iDV2;U~f9b3ig?EUYVaMFr$*}_D6lFxCZbE+A!cxR zNcpDDC)qBjL^a@q&>hy`H^ruW7^3Y57k`qE3=d3j&qoRTe1A^eN z9N#XQ>#bK3Q0FuB-!_RGjP+0tC8h>f6Kigpks6HRE@s~`6ZGO zzI(+REs{TrU7=e3t$g8BdX5ch$!`5#eys_hh5#&DuTjQHBHQ6aTcin%U`5PsZ4vct z=f%=lor0xvy_!mND$Ub#IUq zSmOmRn6uDcLO?{D%U5Qr9cMrH%&hHfZ#}Ln1ZEcBG@M_WJN`N`Qskha5FR3|{P^}Y zzp;Y2ny8Qb&=b00<*t{S8kUHN2%X01j5%BE!H3sa9i3zAdL)GKOlRKHPv`iU$jA;G z-zzCjI8moxaz9|Nu81;wVIX__?OU<3D6@_XG*s1jVL*Y~mTb7#!6-^Dk62+gvU8$} zMmtgKcFS)UKO!u^e)d6Zt;F!blyogxQTvNvu;B z>BVDq3q_`I#wAmfM~pTdW=2#6p|Gvf5vQLiw0Wc<&yVg$mpLN$8v>O1{MnnH+Blwg z)U+iBI9USu{$h~}L3-QDz#SiInCMJ$(MZYdr~SOkd5_nt5dV)P)5Qz&j_=pQZv7Cm zPaiW@Y`9T9JqxDDW3Nu5#w_snrT0zc4OSQPSg#o!&KZ4G1mu-pEC#72L9c4a!jRsR#~;9*aCUXAGw6pzF){JqvRdkaJKPb) z=H@Lx;SMXZfKq%~k;lH0)55`5{i&0f{l^Na`oj zgB?ejuCCgEle>5ROGfg!GS~d=DyFX6*Gx+?K9cT=lW&}*bO{_OO}@DQhoUHClz4z; zA*y>?XoY`S8Q^~$B0U0-C_whLtK7c>V&M;-0 z=zU^oJ1^qH_9HF^N~K*;q;(XgE|lm^3f{Vr@M$?gg}e4(!Nnn@)0M&euO zV@-#DeEM#J)F>P_#odbI7k%Ubw7jR6S87(4ZKs_hHg}kp)f&ge#RX7c{-*U|S8w9Z zdY_73Tn=@i2;Vr;p4;r7NR`tvn}LsZeO7h$*PIP7BCNjs8IxXXYA5o(J&6fsatDBJ zV)rOO4mIOYM@J`jHWUwUDGCS5Z@Gc={_Ol5{*G*|seeYry+Jx3hmf?bDkMu7pJBIk z`tW=BQSsTUkfNxAO8G)fG$kU{jVHk{*ive(qG%W8W&iT>GJL?8X}z)7_bC^hqN1XdloaSK8J#5&ll>gTrGUKebIR1o<2!fQ zczAGEzZ#;ke7a*Ay1fNwtN`molvIcm#mw6~Bg-QKNq+@Ir(WY17l&e4t1h!7DzI%w z6E0k-YUJ#E->1#s)*LFCM}8BdBi_$|)8Y(nZuU`yY=3N?A|0RCy7g z=2hSRNGD1I=B&86GUQim+KlP zcrrecuRbG^#kFa!pwHzuMPZc1uqDei4p*x^2?dj8iqD-F0Re%mt4R=Tq-f9UH3iJL z3o;v>!4K&(V&ru0ILVpKP5I$%Vt_YtI~~SK7mge_0;Q!)u`R!NCiJt2vhjAuGb&Dr zxgZ)RSg3C%fKMZCcCR)y#Q$hllOa`|6#C)7uSADNEfqJ@^Z^G$*#^B#$9b?lu7kvQ zOI#JTg^R7WRs~N*Nl5X!k+?3FzvnIvgUI`<#-i4h9vC^?*Mv)s%-J{;dHYAA3Q~Ft zj`WFi&KSM-T`Xgk)R~?^1Dwinn()5OPOq(%xj82@bTBMp>3P=AS?ml0Y*yqP&(5j& z`T13EfnNrNN*dhU+#XT@nj1LHu_2Aj1s0#4oCqyF)NB@%(X#8oiU=5x*Uz%=_~iKo za6QP)@%3m)@Rvaw4MN7?%HBuKyYREs0FxJ2{QfEI2=wV z7?OG^H$gsr`(2z-X#(cLmF*don9ne;L@$5pH|9dr&9Ed%>V1YWi zkX8x%pT_t^X>w?CoHO$|pZgv;6D$jslT(-gd7?j^jej^>(jyVhpr%o+XliOgUWvd> zh5pFn-t3JOo^Q;1QE5oxw^{ZjGkyDo+hS^~YVL4&J%$rgp92+AjH zENL4vK$%iygMn`1BQ)FW@E}i+T3uUHL=TeX@i)1G(xW{%1yZDW&vUMm|LQ5I>r#o^#KRcE9!y`L%8By&X;s4>Gge2f!=zZhM(;_|U8ugyK% zmOt+26t-@!jbf_HRm%s^MwybshxZEVFIeMms96V|K5D)ix?YlUw2VZU>h0dtM^x5x zhA~ka=+7ctw%MwuAe`ye3)8ABnSS3PjSR(Oo-dFtRDwZ}CN@xQ2r9&}X6fyV8Qybt zc4ji0!e>c^->8gb1kA}mLzO@MQg!_wpgJL(okL1P_`^h1*7FV-2ERAnU<&2v}CR`?g= zEs1#aSZ(qZ5z1r#^2M|JN3-v`3Y9$mHf~1PLgp2CxM>x{5CAm{Bqk>}PaiA5u`?h01Aw`-!9g+jI3{qzi z6HD`9P>B{DCLB!Ff+ahfFv@FKn>t5&A)u3i>QGVxpamc&e>XP?r#R6Bsf7RLd~{>h zF$`E?WscW(c5s!79aHnQ9BX36{hm8T6--nl7(LE9Q$i0C&lmc8hfPR$xXvDNLmRZ+ zX|Ka3#}m3lQLr4=)rq_s;r`@Wh)2SqNvm2IK_R;q$x6wwi4 zn%~r|SE1tMfFDwX!*tfp>-5%{WfN>}4Bd_;!-_1ecyFsf8Rp_VGdnB9l3Dh;dD}5 zsFF(fM0iq&DGab2T^r=K*z@TKhL-Tf8b+7+QL}MS$FYmKQUYb*Y2;)w`W$qSP>1^I zss-EC$g(D1k>Hl@>@`tl4ky#Axh@*!bg9(kW;a{0@C)G;ey*`M*>1G4%rx4Uq??dS z<>lv-t!L~uL_1RC8_e|f2{}LnN~D!qkr4EJiwsT*fu%7E(d)z3UNSK^HxG`3$ui(0 z1UylB{)c&{eYEdlY~+~UfYK{nI#VuRnEC!2e>Q6;F2A^uTnas6kO>@l$0_j*d*Kur z5~mZZQIr0D8Q_tdo13vhL}KblN4=(ayLKYfg7H-7S4Sfw&=Ht)J?OgY4xtvf`Y3I5 zI}3b*@A2y_;yY*LG&!kKeZ*$YK~Th+jhZGqeL?I0o^4f|E{knTcHT_VC^t4Xfan@B z8MHAics|xuHGn+(!e>60kd%3?n{c-FfQw4|M|CWG5zwbQkP&D8&=Jp?T3TAr)LhYM zw!{X0eb1*T4EpF9$R#?7N3Jy(6i7tY5Ta2+&YzSCQUHSs6D9p(<=Bc3kWK*QnHqp) z)~IX$q^%amg6cmt^gb#sJZ5x^#Kqp7mX_#8}*kPTQprcbNnptw1$NA!nHOR?rf*;mtM-x;Q6kI|hF9?<`4u zUPU3Yuhjgy9sHvl&@@T!&i$WLOfVlH*O)?_^C`Wh9XgS5@PS44We z4p`=Vi!Yt149^R+Y_g14rcJ@y_1aYqJCvKPp>7);NGF(F${RcpVWvk6QDRW9A-4XG zE>3Bicx?`@Z_be}D=RzUcfJ?S5uk^CL67#{8{h%%pdad~)S!!z2_owv^pQpX^B=Fi zN`S`5Z_S|2XTwDRoK4_F+0rLtX-GyTVuZVXcxYFu!o?oBXIM6d|24G1U!JEG>p`V? z$1ZvKnmz5?m34%|%0}BrYGY%AKFJepGq<%VUuqmeNLMh{h)Aa>jYCM7CG>$xD34!v zqaA&7sZ9v_;1QA-J@dE055_yQMOZPs#VZY+?WwTmB4LIcfE_%&Bc}`N{Zr$zqYyxoG7q=2DTG`qq(>^wBfcjIWX`= z@89dv=+WIoCT}t@z?~=KH8( zuYl_~^kpsk)lS##WH9pF8@`-JT9s7_o2SYu2y)wlw&7mKSTI&B*#u?_E)Noh^Z3WL zvA5pvaDTsuDz3U~f-J3ErFH&`ly|ZJA(loPva9t<&*?&WTxX7T{Fw19D)ZPNtXZ`W z%DeJ$~Q_7^8~i3!wljaC6&x^W{Qt1~6qJTTswD^1GDV#rno6T*Ar41x2Pj zD?dL$k}(iV5cZS7mQO^sFZju)X&5%VXYfjl&DGv?X=rcH^!_2_)*f<{0vN;nX{lz8 z*wtPo(wv%O*#l3LJg(jpWVF`OBv+{^_Q?PG z_9lX@=7*a1!i>ui%K5j+W-RFBS{z1NRkApq{D*OYYP!q!e8+3j+%&pzYQM6PmZVm_ z!m>d_l!tOc2^=9^`4*C!-y>*0c$$w6WF~FhtQUhX@xj{l0jTASpdE%_R>kmkj6u!tv25TGuoh+zU zp~a~3?#Fn)D;5|JKoS@!EzZIvg!OMSynYWd`)@d;QHl8z<)~IC$WlVI24KPv16WPf z2_2Uw>vIEiFR$T_*8a*aVd&Ga1HQO~1fX}OE^R3#f*^JXq38hHvO z*Jk}aibUb`(L8L%v1R9s0g(j1Avo{({u!XfcQqAl3t&o-Mf^P4&JGH{we?z2adC(Q zp$GYUXWzCjV;W^8awQ!{{Rpe5I*yzy|8zb;eH>dOuik(_M@|`Sp^}Ao3(m&GET;k-69ebHoru%%k@S&7g*k#^6E$JMEbdGh%WiN{j*jLAkCBUqzjc6r~nw?0}`ezrP|a z`HNecsRI&op}$W0&>cIxNIx6iNPP4+89&Inn0>f*s||$}i%ICF>znHj_3}CGlImrD z&U@ZCAB;hErqDgj_Tvl7V%={)E76aSk9(Y~@qbbR7JOGoQOQIqYlu#}Yn*JcUk-17 ze|8)u&>p}!;t&z(Rh+#RT)h=yt#0pYKrVgxRC4B5qy2-kiZ%OF5<9r8EO#f2N!CFr{I*4BzeQ@zHEdPPuUN6blCv-LJWQ$Uc)q6uyMb@36$-`d!a6UaVV zG0Qe_cjrn}L=!uZE~oi<%mABpc#cQ(2cHXtlw0S%UfOL$Di^D+)3bh4H&haFAIPOYCbe`8Y zQK(lSMIlf~EiFZS#z@{NljRa1ClxQNh>U5xZvM`g6}!hp!syUs+ytEq1Zj{nzP@k} z#>@dSV>6>f)=z)3SksfF&r6JmDpL7fmW?g4P5{_do-J0spQ?2O0w8Pqan0_iSnz`; zhVK>{5O_#L#xPQGX4+L(vrOsBRcHc3{lm%MmG-ai@+}8r3vdc9#q)asVNRU{{<_S4 zl+mxXd5Z}N2{~d?zwUiE2`qtwLgJtqzs6$N=%MPWFFhdVgbx}5hJNtg?2xp>7NTn` z{@C`HG8*A^!0WlcX9Gy)0DHQn0ltpI^#)H^N+8NlbB?p)He6=nZgvYv@pyFdM9jB- zxGt(z$#|@nb+}Wf=a#B~z{o&f506|2dT%N)m&o{klo3DA*yX@b>f6pmtMx$Z?kkhKoAR8unwFAf9 zC!HmC6gFrm0*DK14w+6urd?q549x{CI-$l!i-1O!IwVA?M;&i#MU^}rM3q-oRucZD zOJ-u`2L?>NqR_34_ONhVuagb_T7f1_ZYc{YVH&N`u_bc<9Ianc#CAJ58uRrAvVa0P zD&PBc|GMj%jrYMfz1$V+I+rt5Kp9}^c{BU?`20u7oTj)#rl#a&=g0w{_Z79h`9j}$ z8o9gcNcZz#F8e_6^FjRbc~&7skV%pulOh+#d<45LJUG&hTQXXLPKix$o`U07Vm?*h zMA)c>z}+8(yUDAK2^twJ)|cg<-sjVs18=&nG^25RPwTJz^4cEwf*ntYiBrC|_mi%! zy&)u6%xMYb8s+&pgn*wvJZW)7JUC=j4{;V{*n^W3a)P7b(b+TWpI@Y^{Y@97%psGo zikB0^jv!08aJx|Ve}$jtQ**>y@6cdY9U55>Mng88lA(w^7-1^~q^uA0h$*recN2}K zNT^gA6y83sz@*iZD0^T8#W67G-9s-{F``yKC|MVbP@%iFVyq|nSJO;fWy#o?BJ=AO zEw2Yzc$8@3mzyULORX%`M6yX!4(oLLe!&Z}>}*n60Kba35@kT_$f}OEt2M}L#EQe4 zSbT{HP6DrUCE$Jcn7%7fDQ9)0+nJqTyaJjGaCec$>wsYb`zIJK2>ir3ZFE%1SOb7< zsD38*_nTpjE^qGc*M;gDx(MJuj~8phtBqDC$H)3Fw+D0@b%C0d;-$)lD|IF$jJ2xe zwe~yST`!Y%Kt^_@)rsoFnYg*h^T85;Kmg?75fNF~*&lu{8nK+fS9>m$Kd&xz4GmYl z@!EbYRo?)ABv~tP>a`x2GQ8D~yPs)ojjdICasIlC?#|Vvi)Dddod@|`SdZ^=F}VA3 zVO8o@=bN*9e0P3|hr4kD^p@usNpYUT)^3kp$I ztCp9vx~J@gz0cm|0Jh)G7?USU^irCeM8VRO1ODGpt|ptGrOJ>Pz(B?5K!m0-(XbtJ zWMUYptFW&RPZ21CrxP9nq)7PKJnjRNgF^8f`K~y0I1t`rW7oHomBSLDY3=lS0-xE~ zAi&HL3*`dX6^HG5sLdKc6K1xyrirH%{rcwy$m+YpNu!I^#ti#DnCC8{5&PyJN+hCp!d0GyV^Etu7CgTrp4LzEGY{z^P2xAvV8dEqmvsq$c8vz z*WtKE(HSzdn|hL5ktkl409I@|FJuz@0=1Tl`D@Xg*Kt}h=y(4*yAFC!6G0NAUf*l> zM~1&LE^nR|*)_O7=X2Ne_4V}{<`mvDw%-{Sb@+Q9UIs`WD7MN<`t^J8T2$})k`S~` z9q_-H`wCzx>83`(^BHtsTfb{*;kCP6A$m;!5a;!HZqOf$P@z#D3`DSjm;}I#u$tE$ z;nZ|oFkZZ~5)=f09kIGcUm24#T1h6k)cxb5QuUI@dF`+}5U@PHygZzhAUb$Gs|KPf zQvz?+iynP|&+z^&hACR@L%*+WV08{Z$RA#%hVd z_hnq~7N|;2e77N7hOT!O+xJB|?-Lol-3PC#{k5%@RL|PTJ+1*wf-UeAlu+IKM8RY6 z&1^yZTCML%;4_0&>F`KM3F8OAZu>+$K(ySKW6d3LTM;&fl9}um-~L7%m$9Jn{S#C{ zxO&ebw*^fW78^V717sQcdH-IFVAdwSi`Tq3w6Wm6Q9c`Mez-z9)xG?#yye4&y7z*T@N z#920uEibDdWBe>d2UM5IWEy+N?VoD$R9V!BL1D+!_m?|>vL}w40Kg!E`T1X+?hZ!$ zhYeSrOYMF8zks|ZYl9eITx4cu?mKex@ba4ZaWU>opTbDLkY2T1Zdi}U+-)BgbDibg zS$HA}wth%VEd1rWu3US*XTREoP}2_J=NTQJ=7##qb8|^2SMJZ~F;a$JL(LXeWTn)M z_e|U3Ca=Nx+CUl*5R(%;ka|yy0d(D+Gl^&;)BK1W_yr` z!cOZO+-KL-uE*N}L=e~cPX&GoXsi{iTOYxcUUm}=#J8cqi6`rW9dq^4GFl*W8LX*# zKY(_@(gz3g^851A7JoRmvolk(a%fILkYEh@KSfQ4$qiWfqX&-X%e7?6=)V7j2k}Gn zK5vu%JNT!LBYu$eW(W5K!Pb2dr^BL#S*_t9EO3A#HB{-7EWip)qy<{v(=*LmfM`sw zdq&2Y_37!!X+cHJVZ&t!&{A01_FysmkJxyew#E;q3;(e=?{g!fJvlp1w19ws4ENoz z{W}j-dKednZq`&;XiI*gj2`nCjZ$S&!kB~!)Bltf-*N9N4w5OIgpq!TNTHeDq-jE{ z(-8{?2j(M;_$c~rC#FR>wVs$((U<(v`g+z1|J9~U?q#}2ES3<~{IBLhxY3LKd2)G* z`H^LWjm^y=Or83kT+#i&noy(LmtUkmKjYWu%l*THfd(eP3bdUj*#TQ2ySA1YHb{76 z!C5D{P$v1WHAiYj29Q5yVrh#ptse!5J+K@GlE7%d4wR&Vmx&2^eoZsp;XlN;WFG>2 znBA5V=G7+PMQ}1Cd52HJ!HKT@;FHBg)Y@;K-3Q;cI>O{$m=`mhVVAU>5Vl_4qs~t= zr*X>FZhASj`?op{CcSSC)44A&&bTfI_FCU01or~bQ~|M>l9e@d6Og*CsVxz4w#@D( zPEF%+OQ+uUXKs5tzsZmr!y91`Ld7x82dDqOgm!db68pn?gNkU4; zCd|xnxN$P2&~q5+jQv+Is)a42Hz|4ryu&0%;?G?#-H4dhe`L>W~@sP~f^BQrC|wJG6iyOWSpq|nKknB^A0mfNtlg#&Yr%2;egkl--r z-oA1iewbS9lyLTNwgf98IyOAZ+t3KEvPXi*Co%i;zL@Xxc@JQ_jt>iJA!u|iI#dax zGb<~jfEMNF=Lgnl9Cn)%F~8o8fFV8f@w7Ef-@GmiMB?r3VSGP=J{4$x79;>PPQc?laXI+l%^>iE97YFy0|PbXI=|6%M=FrKac zR0cPwLcR7k5K;>{-)IP9o#G0p_P+eq@o{1IpY6-&y#uH1z7w?WFiddVhT3!zT0*ue z^Q@hfokFe2kc^|=5PEWQ0+CpNKTK6`INkPyMI(vRrR#uIB$1m4gUm6IxIa5h6cm#wX zNJ`J6K-~eLQd{3|$2}IxbqCp(v>|%RRKTv8f%=!m2kICwq2MSfDFL@F!(~z9zoCHf zP4)Wd*XL1&;}}hW5>43xEs#rg3^fm59}k0H0kR6l^(##GHg0-A!_~W9KDKTa%l#QMQ8%#ggFf<#L$LnH^ z5vG&ll*8QVwn<+9kE64Win8mX_$w%=l+ulKh;%c6(p}OG4k_J@NJ*D839(%mH` zQW8TCDGc3wm+vpvQgFdM&%O7YeSUl2n8t!?{|!?I@|JL>|Bb`tFh!2rtTq z?FFum_+FPF~&+d~LvteRuelvMYK*UEZ+zyg<6}QNvD2 zX~XR`9K*BpmSnF^;C#`83Q(>r(*y+NO*-lMuAuAOk-WrlhWrNt57;IK< ztKUgCZ`mbZ3`=ym55M+=#dTOw2(|TS_&=9R_gJ8@ypG1Euhd~us_z>&G&)V zEWo)Ni{BBE<&kSm3OH6FcE4=}!Se-|?VTMn6O&h|E`-k<-V9&0V!sQ>NnTfIsEc%H z?uimO4IOM=x}~f(H1s`^xF5LD9QL%Cmo~bocKZQuieF1+%@GjoT>U5N?>Sk2(T5OK zX{I}d-@9Q9qob)VFh~fyo5|uPsV6x%{sI*eaUH^$1Qc9J&TmwIAG!Iebf2=?7KR_B zF-1fc$aj*XRE*9ZdV4ofMA@c!d%b?vOS{oOPWJ&#To5(?YlqnEjD8CI$Xf7eUTh?&?GC`;Ey%TJUPKB%QZ#$>$xign#K_jRhMvjdRpbQCjBzq zBBsvwDD!Qim2oDWTn-VgV5hDBhp)$0#AqSn)I0(&yL2sr)Qfw7^QiIu?z&h@J}{J) z3p}7q*WYrW59PPbdWmcp*q02@bLH7PaQU=^@g)7r*^4)Js%|LB18*&H?oW;Hdxw=p z61B71l8;A)aY}m+ZXQbU7-1JB*{AJb2;2CtX?M2Tk4)Rxj~4;+VLQLwH08&5E{5+j5%$#7}-Ew^?B9~^E1(yp()`I9Yi`QiQRVdUb{9?BFtK82xRW%N= z1ahh{vvfx*!P6j-rG7ChN`8-j2KE6LX>oMrp154sPcjqaf`Bikpz!$3iQueQa;otc z{2^V)<*dZlp?s3D?Mu~!+%kRsHMZQHRv-u}JfA!$9;p}+_NWuOuOgZzzI)cK+*h$F@v0JJDbh&WHAPV~ zD=Mit9Wj6O?B)#^h5PS(Sa(Z7ud_4R)-4>bw~DhV{*uD}n|W8!es0js!HZ0v%IotY z8J|;Unx)HKq*2e|*}l#x>8Z_=u{o8CEO4H7GA1dhl}vZc#63L`@r6H`!@P*`N1Z8A zWxvA-ZO=#dmHqF~OK_u!h>J6yEBs8dQLGmed@*Fi2p97~qkOh`~r4u~wRt*yY{Iy*}Y zsDqWSL~8!3n!I!*k-1(cJue#g?C_hhtoi2-w+5SGtdJP6B93g#$bD@W~`eGsQjFSB!O{@ z`UA=QTk`&AUPYj2)Q8ZU->DTp;Vf};mpScpZUFL^XaV4*qrZ1q zjftEa0F4Gz^qICa{xSf1DAwxg=#9o(99oqYqxw@Sc2Z4F1btGfo=2M{B|)7b8$@Ti z&gFZW>~NG*;Y(Og`_A5oD%v8E-_VOdpV9|~TWlmWj4J1K{C7Uhb^ZG@Ui^Mb*K;Gn zG5rqn3UA(8_4slFGHFG06uvkUEH`&|H11hCEU9=^{AZfTcyqk|617r-xO_AU3a5yC z!!1%B3p@zXTx?*o@f?dhEIUxL&be_8Hkxwg&=f@QD;8=+?WH?;XiEmS8=p)xfm#u# zCDS^ZYhcmMQFmjfKIS$STi$9 zKEA?uJpiXRoCR&?!GIKd*AS(R2rEV0O6I1m=wCiZLs8c>)iG|?Um$Us7KUtD0b2_d zyU*OP=dq^4YEAYnD-iR6^#TB&$kkro>v{MlKz1x`Y$AL`$3W-MJJWW?OUSD8Vw$X? zWqrE4#u3ICgr`+z{WrLL7Y~N00zA9>zXg&V zrU>XCq=+iCBwDDA)wIX#`)_ML+qqy^)CVCxye~R#o^QG_8!yI>E^5}uT1l`R=n>eEzGMc!&mUXdW3SkP*I>XQDe zGDXg|^TJH01eLOjr>S|w2?{J}eMxjScRWhP?#q7I%k8&@CuYZydWP$_Na!;e%_;)= z76ZWsaw*`Ig(zW!zNll9Q+ua%NKay%P%O)-NGnk-*w++-9c|ej%-xt4aj??&VVw;1 zPpg#cU)+yq^Sa{}FFpE65`53LStxNEUJbJ#T}kItWPhF?o@{0*YNSV=YmV@?Q5J63 zf0;=LGv`M-y{*m`!{NV%zU0janp(A}X$mrZ6+l{f>tdL%&irR5s(+0R_Zcvl0+29k zqkhTzHPuB2x&S!yAI_kQ>H4spL(4A}cKRs43|Ka{d>zlk}ogb?Lg1m)0ySIEl9p{SXJ zz_Vm#_W=y!;u3doaF7iaNYz@O_@pJ%j2^@A6*7As;(=>tLUTF?$EgqS4_OSpyYnB~ zaAwkcxsSkK$$uLY78V9iR%EF6x%-8nfxulJ?XOF;s!FL1efDJS(ZJD+!$)Hr?-P51 zkCYuw)bkqpq3{FBC1+{Ln1FcChVPWl;Bt-bn9cxiKNY@Nq<2_Gr@G>CfLyZPtr-T4 zUEQ~2$poAzh@LdnAJ(?tb4>qpk{9+k&R6jd^@NO~mp8}UB@J^X3SE;Dl(($A-K+-u zv-r(x4K-W$OHp(n5^KFATymS!H1O(E7;I#bR$Tj>k`KfuSoV z+^Uu_rED8FqKr`KueYE zUE)tH95<}RV5F(8A|78$-iUGr9SkyNKknce`6qF@A#y;SUs7T|arP+q>AG!NgB5zi zi&igcDV@7|R(+UPqq^g>v6-pK&aO)rW`c;HjFXVV(rW>~Q&M&BC`-zK1onVUAQJOW zR(VADc`V7;4!_vArm_slSPp1Aeqa6G4R+OAF?%uazU63D;c|C(sk=$RSn7O;K(P>O zr#viKezNLF;Gh2$^Y7tg4qcWUC4Sww{hXscWi}mOl!LZ23Z5NvK3nh5*G4`hLHo?V zm53_J6Q+4M{OAgm#XnYm+(l(gr;<=VYM2%U;uFifY}<=h>ha^B%Rj^4>n_IuyKmGa z>Ghr#87pjlv~8tue4nM-Ax9QBfqiXARB0x+BH&RPlrhHcbA3CEOseHcN44EN-%UrP zg+-&y#uLl)f!5By2w(gWSV~zM(6u5T=SCpuFzm z_u9D@%au@wJH+A>MPl}1Cy1qfAof)91h$X2(qzfVpyhi4WrqcHoTQCf$ zysx)M+!7?s_rkFtJ{F_OQ z*;YFL6I&WF7gGXJrGSBBs|jWIijAcV>ONJprEumug{COl#tT@mp*2^%f{e|-PUZuN zPVq?sgPFcFB`5{?yvaltUUAB>ER1CHgEL)rX=J8;6yq-SQ6;xl#{C34k}75ONU4w6=Ib-!&inhkR9yN+y@6`ae!J&nugR(1h+(kERN6e><7)7RJ z?a5;kVRC8ah?Csgty1G#oTbZAk7`i(l((Mg;f6m3!3m^PSL0!`EneJHZLHgx3TdN# z#PNpm&#+2qgO=c7*-?1Ad+Qg8+EpK+!4cMGO_cNQ`f(ta$X5{nf(_rjK#_-t8>`tD9AH`#1OwCz2ro#?2wPsocI>RyulAD`2J#>6e3h_Pg^@RO;x%Yd9)&t8urtK{N@6s}z()w~pDHZU4^y z=>hdTnUL{9Mvj_6$Bcy3_xI*%!puumR?Fwx`$H<4;zTYX2Yv@Wmwo(gfpl^JkQ|3a zzI&ZL4CQKYU-1z7F3|O>9)Yos_uI=%J$B0v@3FTj9bjp=UI8XD$5vKR`IQWI08;o+ zBw-NxZD(&)A>j`#tY+MjAV?(pfV_PD`fe(LE`&5myhdzC$^!njn*)|Ycz?hD+Pa4m zKUy#UIV^UP1C?4|v-iu#8-Pz-q_F!2PE>J@>Uv8_QqfFJDSNr%muME$*_yj)Q~m3qb7(rj z9fjCE%f7krvD%$VC7*J4PB|l81T>AWP-gJG#B&UyH$8BrRHm|f5tJJ95#Q+jca{M@W z!36lBt*pK{H$t@4@Zawt5vYD*nVo47xnIHbqPaOkuZ%CqoHDC`WJ&-KeJchvVjJ|z zLdZS_+-JZX0g?hRv0{-G_g59be`W;GOAw84IaT4`3;3;}U88d$_r2N95F(?2X#S;v ztJB@a>wnF_;{L!07`V@ww}4^tW|-K;BW(kxC%_02pu(17VMc?~(b4hW+M1N;RSu5x zrmiJ2i0bA)v@6gmzfCp=+NC-QT%>)qpu#W9qvcpH#@GwOJHOsa<;jjCf+QZ+&gy7} z-`BGWA)%v9Cu0{o=k{xU*|!jh@_v$()=-a|Ng3Un)f!JYLbO}T!Jjq@gU|(@sFG;) zv0H*BgYS#A&{Xb7d%!mQ@(9%a4wMbCexZ^xLu*WYq?nkP&Nsi`dRnWPC!F1}sm}?7 zG9VMoUki9RlB9j_6~5m&h1_(+ZVQ!%UHx(QZT_^Ui8{8qHSnfPesBg=(_;N?l$3Lf z4xxZL$+A~v!>7yDPpgBn?n!q)qW83zlw#Jruwy<@ld&XQ=CR0;lf~%QJ)XCrM9z?f zb^;(kjD-Uu2XSnGL_d{9W0X@Du&()=j`xk}c^j{bPA)mpk^Lvz{e37wN56X!K7++l zZEfwtgbP?sQjGlt*Vgb(&OP3vMVJ#GiO zmEd_k;)vb&3Wdn<%BJq$g0j90nG0eRYaK-iBOQbrL`Zi-=c)x4Tql)UPP$UmNlE%y ziAbo(q-`85fl#7x{Djhbi<%9BfB-!RMD75u@f3v#R1p zT=T1Q^s>h1FrH+FO#BirvGj1czNm>hxTJ6;9zoChWDFR24%EYjM9Xin5hzK|SpiCh zHbgR|uc=8Og{>nF^rHv3cP`Qxc|@`gxy~nvLd2e7{9mU}cerJ_&Q(Vzt zKVF2^_*Ri$whynzl{Rx~^IFvS>UWAx1C-Oj=eqW$UkPrqJ4zv&E?+wb<|w^j0g+v7 zXL%eG1zgU|mUJRNDzCknx#JCRKjk$zD=76m9Axym>?NYE3>GH4plOVYQZ@#O6vJ|Sceo@ZOwZj-i>^@0C+vu>>o0oChdEzVEixBoo6_8Spq4)cWTi>F+c znNDaA2PKGu_~3{{(yf0QcoEru=$m#Hf>FHZ%e05B!U*M2>f>C55AKqe38maae1teH zbAci^5#ALQUffjvp($|3P&9ZA1aJpB{jXA-e%*Xl(WOeT8NA7F#fuFKV~?r9rdUpQluJVhPJS-p@P z{iWb-izJDri`;kDl3K3fGoFZoV@n555rtU&&MdL^NDYR*?ZVbnkCwFx5(-Mw0~mDy zBO|ji(Z$5M!`hPZU8W+7vZV|eyU?|w(Ovbi*LEYK(so6>?P6QSWjlnZ%6Y=<#yjy0 zisBnyU}xry9sYH+M}v|!O>zPk^Ox}u+rm*ND?SJ4AN85WrFz9g;v97 zTpHFK`6aeXmlAiIefO4-W6KJ{vlF98aYUtqaw z3QqX^k*o9*hN!)$a%{^AgbDUJ4D_~QA+**5JsmS&tQpc-)OZ)aF^;5E+ND@bcKswb zfJ?;VlUktmS4*T}_18KYp!d5tillgUb-I-l$&2-p%1Wav4S)OiZBzv3?h6ss`Li7h zT*18e{KErj5TtF|zu8wRBGr*1-OYm*)fX@vSqYeVV=>Kn+)a6;__;T) z1TxJOHC@sE9!Ol@%a%?&{WI_|^Oi6J6H_pJHNNRJew^?rZ_?G34zO7dGosC1<9i_t zA~q0w07kYCma}H~En7vv?QSEok4(44lM_(?4W^lTNIVnyvoo z^!_Zl%3`mTuP*p@L!m`YO@QxeQ(A`jx=qEygCCsy+$IL5o&j4^liWB;3gG88`@KzW ze6^~r3({4#B@;r9(Fawceow$Qci|T*ZO4oHvz05lZ#RA5tkBS(RUa9*ZA0A;rfgU zL-W0(0meLM5HmO11+4o1$lO<@*9CNlolay8R+4AH0_{qlY(05v8xc-fU|m zSza4+P`lEwXgY)3!*{%dHcH_?HgT%~x5dg|hwF(dzK?!RUgn(44j_<_z$G{Q~@RjsoyfVb)p*B6&^4)y_$WSYW1B) zH1>$7*Z&2oVXm9O%SG~E-Oq-!zg`jCrq6y9|E1~K@b***yFX0|VeAQ$0SE+WXSgk} zz98uS6(5cR>;!T)`+=!?oj+rw^U%?=O{mQ>NifcQPDAq)pA$>w*ZWAmbBbTx;lDd< zgYaNV5YeXa;Eu?FDX?rC0V6zsI0m9>u<7?y&hs#%a90n<{J&c}Bw&7l<8gn4U^N;K z%Mm(p&!4URAe? z!*i-D^zyr1kGOi9hJ9xDnIl&U{;1~WGBzYOJT{zhz9At5q2SpT{3D-VhV~4uv#nt8VBl( z!xfx>R9B%G5G(2Nh0>8G_N6xr1q$K~Os!mlU&CDqW?C*s44iri0PE)h;`V~qk3b~F zLv?G#BVJo+#i{LRX?fl*C9=3zv|;iXI`I-Xul`Sw18M?r+c`!NPpR_4kb5z~bJG06 z2Y5d3i6c_ar)Op!gf$ZGuEdD;e5U7s5XBJ2u<#k(GOA^b%o6tSSDgGAPW07!_4*4( z_ltd+4(jVw3xwl_^W`U^7b7dVToyFny& z(r$wR?b3N<{yqVV47NFJd`DB^fBL%dXy`QvkYF`#%dD#-jt&jC=Iiz$h$ZV;lYaaY ziS$DqJGR!^bi2m}wtml^{rvc@ z&91@ziDvDD8~X5%Zy%pO#~sumXLc+zz1wVbKAcEF-k6|eumfrcR|vXOtG@OQ-NHrAZ!;Yd2?`j77%h z%aJ%}>p_n2$X<2&E@bd?fC%fh$3o1Y)5YD`;N%1T{!6PDFY3+!ECS$_Uh@>gzRyoE zh)GGG?FOEDX8{*=C_%u$hJf)TG>EZuCj zn>da_mOM}OA0!sbgQZp=_lNVhA)~?WNeDk5w5ag~`rzi>^#Nk~VBz!Hi%mup1657I zbxipLNf~{zTD`U%CwShE`||6NmQE z;)q7s5qOQfHWv5tCUdg>{F86w0v2{r+U`qGyKQ-K(hu)_!+(!K)Oy2OejA{T{DX%x znJiarJ1CyanjV`oXzO`ox^!FaahOn}QeaeOmcffZNS`z=*T?HTC*UL@mE;HMU%$Ji zL}bmhh2h1DC2=c5LQ-ItH04bv&Ua^j&mD&YZsUaS5i@&~Zem>W_(6C!^Q z3zSQn{*{V7cbTc+t6uFn)^Ymn1*!HYQ$Ik7Qba^K{^7s`*cuQ-SS2V}gENs;Q`QGw zluh5iDPSi|zA9##of3K-6Uoiz%kEzFPG3l-1{;>Qc12h>zYg|bOa*O_XxLo~EazMM z;4BC140|~OfY>PzOZnvqjibC{RLM2UUpqH2O$R(OQPVB-!p)zOVNhKLkjVmpDCVdx z^Hz9ap`xOiT6V1rQ7CiP1V9w1w`x4m z)UF!{T1-<^FVmXfd9$7vk;x1!Wy9OPcgNY5fKom=Kj()03?Fr;sCjwgTdVp_&rR^4 z<#_h+FaL3AGv#Wse!#$kx+!{66m9~>E#^b^TRud%ImV%yq86-#5xHFLBu zEaEe8$3pC#8xZ?VY(UjgtP^Nm<%pKnZ7NSxF630=Hi0p5qyHJ;YKS4L%cza2x%^CG z@VJ&U$niHdFb~@aNkhEGAYyb#f{hp|726A{M zX`E&m*@p1IiMX^h3P=_bVq##HV9)&cYS?)zNwP{45^I)EO8H7ngOxHitdI5Eo_DJ< z7#=3c)BjS5*2z?#SVI?UNix2@(f?Y&m#BV3Tpl^~>%+{)uj!m;QOc9^_2kljb;jX? z*Gn$ENGQ&{dz1?x+m7}fZiMgse1uymbp3CF4i0FcAx&mVyE z!faoZb9jIlyVry+t6^I*K)%kDVr%@4rOO*vr+OC9^y{&ZJreDvi%*D-jqfkB4ZNnZ z)oeC(y%$~$Yh$i@b?elcy22&9?Bb)&^ITv!>aTb)tuClP&Y=$WCk7=%eX{$1+XM zD_YcQ%N#j2HeCO1i@R^#;NpwG)lYMWs;Bt4ENxuTyE@dLfOVR{TdN8OWhW)pZjO4= z`XP?mfWar0Jx+1k%Od^P=myB30G0?=EJ?MRpegkp*OVa5O?tUpU`Yi7ZZN-lpuGXR z3p@}E8c#$?XLUXaZo4LcLqze)c0-Wnag@yvW1<|`1Lth{Zd!l}0U+Mr+b2i zz;w9wz>ZDXnA|+@2sn_#{{ZyL1;)^3sq++IkM+I3h685(H*n?yp7xO^ST-OZ2Txfb zFpSDy0P+KPbiot!dMXY9L+F;%GKYL0q#4k5u@7I!ls@q)`a>H*9C4jIhL{7oE@)&k zscV_U?+`%}Bz~h4-Ag~b^QNy-r(BgV3w93%bc&zcAF04@oBx@=%nq@VbH z_4(@)y??dL127Pj31$fVsJEU!0D7w&HFp>w%{Ukjv}lg`!4qQSY~pO%u@7}YvYxkA8h*d5#MK?}dw z5u1c1$@Njd77t&ki28}`j*0~SJzV?BK-E*WFWDt=WR6b<#ew3}iT%d~HMX~l?kJ_c z^h^k1Y<%meTM+B;#7$@{DUR-m=F~fN4!iLEX6bjzHR}z$Jgivrv1+_;SPH^RkA%mh z;VL0XNM9;Bb?~)w_2W>Yk(9%9H)oP3Qq1bW^jC91jhE#!yXc+**lR1;XOBZn=@aFQfK4K-mQHE%!J=k( zvjWTbwhV$Z(a_N!AkS`35z5#P^X>x6oM4mdD`I*+B^_i@BL}qQFzG%sw3s!st>?Sh zO9Q|aGzf+V4@@z5jDV}Powu;EdaCOrOGmH-j6I-{y||ibSN8JdZt(IJ`a4*#28J6~ zo7h}ibh>UwUXZ(gI8GB%M3unI28P@H2(f!FHvit?M&SEw04(1Fczm(R@33jk?n4r4 zdWclH;ch$N=HTcU3%GMxLdJMF?i3d~kMPa}+jOIx05rO=`_LNzIiBUQPcR5MI63>4pZ!u{Xe}`cO@)f~=muX>s z;!*VHi<}ah0bReV?ZPK!{0F&tt#C1vOUJ&SpTG-}v^ZpJYj-FHG#{(eE@&;X3>EHXr}dk4DF&j;z0( zg0{o`GCgm&u9}5stIhG+TaLpXPF?zkAp@$2Auu4IXle?&owAfnnWCX3L}81JY!|Yw z&ciPRlC~+Vq=iGovr05KT3n_NFWG$)9PSbQRxx4!pQ0IbDCq}8tz}(C^!mMf($vE20g$}Fj~v-5?_ z7n-G9Oj`V=t7dP{y($?Hr5(h%nCi(U;WLQRKDxdHNf8c9T7DYKWkrXpd{s-ni z{w|FM14b`dJv&(iZCT0Hpt#6JbKUQg#fQ@7TqIz#6(8w}CgTUTt_HAx=4w5@0BCfr ziA}%W9!oO|@MfT;T+3(oW3KQT`FOEsDK;z&zf=~zS;2AHubpv*`<*)hBgyeZYw z@v$Cww$e3Bd0u#1u>OH^L#8$rkdbUuk!YVCiQv6Bt3P+{wyekjC)a3TZ_BmF!8Zdo zkUsJ-aRv)|^?^0m|I4jsB1cwIa#UB}8VxMfYNgr|9CC5pa6lbYI<4W2|KJ#(3b9V7 zn-ofm8nViH3)HEtQw^8&MOs?dI_rjHGP7UpyPNUmB$`^P1VF-tbltRpTNPw;#(VIY zJ3zZ|MD5%FH!te%Y-1p%X*7tj8%sWmY|RaZ{Qxt7>Ex%nkeJp_S<@X}*HcQp)4`12}b zBtdDziqDR&Ut-d1Z=oqeK4)OP%@2?umFE3~z?jp~S2m{3qO!Jh;%__uxL>SF{TY{w|;NpF+0mX#<@S?RMu<$l z*5Ll$bB)Y+tS>s&dB^&r&Uk4&m4CwBFDXUEJ=*Pl&#B1R572&zlQZ}CB}uBJmGv4x3A^pY-dv*d7g0-8xwlq#?`%gSsOi>nJ6~;EeE> zXF9Cct)M_Ao<%cx%)#}W|ZOYHrXzD`I@ID&Akca6BJSEGa> zLNt1@#vK6eeCzIBdDUj1OJdE)Hk@U4*x;hOtVdJnQjgCXx%lu&`Z_^u58HV zp9)|s1bs*{+jHj_Nt(_+Ed9CKk3vYXXiW7tBKg7&fWW%k8tD}#}9%W zyL?^jFH^XGL~tY~iRXp;9Q==osqPox@w;2ENOo6l4?uY>AQpalAaH#;{1^``XvyVovZUbKN)7{Syco^kWv>vUKRKgHTL_Dc$Vl-e^aphx_U#K4zEr0fGOa? zcrZpH-YieZP_Bcb@7Tb3yL4+mz5C|Q-v4Sc+j-@Zy|4#CnD!olLYPUMF{TNHfZ{yzllm_{qRE*ix$A&lB-_c#@Xzv^cJ|*vIklMxGWKw5z9O8onpKK(-O-9F z*5UoC&WOm({AcFJ(a;Qeaf$IrCtRLp)9%p!kuallD0E-g1 zUZ7?z&%pSl|ARYft!Es%BV%pQUfU^k#Q7coED3Y~e*{KE5S#`QA|DwvZw{aTWn4N3M|ZPGc67Uz{zrSxIhY+1Q{}*bw#kJ_dk#;m`axR##B@4 zfxM+!5C6oLk_Yl1!MB0*96)9BEP(8k(X3_x>%_JV*UKBDI*CuBSkn(8G=ApFTp z@7=K-i>CyY7Zi`*_unz_>;9hedT{bSL@Z2|YNHEro&u}vBi&^1lphsqM0NdfP3;b6 zqMk`M2L)}zOWF4=|9}s^$hEd|w^6xO^V@s$2*>W=!Zv z12xm4pht$>LT7duW2c8L$!5tcRbYXG!=Js?Q|gQT$0~s-y{xlQ?4#ze@cy9BcP0=r z?^vh-RvwAw6!z>dbm7M_18=?H?es>6^PRmA^CgDdVkpIVMYjJVAvRxrTF9bWU4AoGs)MDNZuePZ{NAiagATr zt+Ojh(ET5Cydq!YF{0fB#51spiN?Jz(o%TTOkeQ%V4PiP)ld}HuyYJSv36b5|(U2IN|X-XCwhtf0e4{ z_9rZgH?OEzY+hze7DRlP=OL#EdyK{1eO0C}_w$Xp$x^s2DJkRBQcwlMAoRCqn~XjJ z(l<{UML7H;2X#c&WO~Q5NH!wyU_QR7d|q5ZivQhPn8r==)2fOm`AmboNg{`u26E2} ziJ4)awLNrrQY|L`^{cg_jT8jKFyq{Hll0Z`_d(uiD8(}Rz-{f2ig+z>V+Mm5mt$4f z8~Mi1a^(#-U5L(&qMq681c<3pYCWvC=p=Bi~vTbhpY_{ z*}EnX6&w4Y<>aV7ja&kC7>Gs%a~U_(S5WXV+W!6dOiGQIoE(fam4&wHjLxc4oCoPs z94|Lg)~-bhvs|$A^76pup7;>?+HzJ~(OU;@lWZ2ezc~hrnYt-iJ|FZTz^yyN5C6qn z_+#bfc&z`pMb)F11Jf5?2te16-(dX)+|F1Soi}O6k0HRfJ*+XE9!Tbrl(8@dnOA6~GQ#MJ1gM%cA5UG?Kuv3p5Z467SYjNmGQfvR|!S3e} zObyFejDFKnvD*ZG$M>v+x*#P8ge=V04MI`$^i))EfTKPzFtAcXqDGD;{%Llkz*nh1 zc#E&wBN<-`l{_4@V61Ob>-}FL*K9zgC(;aDP8PK-sD@50yFUm8V->z{Oc9s!-V5-E zzf(W|ty?g?%UbrXbsZSR9Yq6X-fE(74+LBtymNlT>xhkhj+EG4fe zn3BE>;ucouK1merEd3_y#@ZaQ#wSklS)y|n{q-8Tt#@>;&p^7uWD--V9i+82bg3?C zgE3pCH$2gX>TNQ2kvjI^aBhjnK$ZRKq6=}^bmb0qIFxWocDas6-?sy40J-_p%q%Lu z^k_^DiI1<+nW6-l>q+K?tX?F9v3oJKg=&I}ezbdQJk+xO297HB@^^Ds@vuJR5LfAB zf}rRwxtHbIrJCSXdI)?`#ozEq785h`QC{bgdZ+)hg535Fxd*E+5>h{@0z2NLk1bQR ztVXHjyJc+*HTl)h&^KgV99Z2Zwzg5AlUWlmCF;nPiUb$xEH-<5NM``YqP5)BKKmCC z4-CXS@S@2jfLkR{!F!aa%A{JR)veys(eaiE>iQt8h5)`*vy{*g7=03y3qe?74syn( z_V7QD;sYe$qvP!Vw{{#rbeFL-*1>53V>=QG3M^fsRmlVJB^oRMGfoAT5g6jZ5Kjn~ zih2D)|0T+^5bn;@7q623{+4{1(+*S_jvd+XyByUaE3(MhxUxr~AVrcJAnG6x4TzO* zzH@vb1fk?$AP6+au*RR?ce%gT=6c<(z{V!*U5Bf|dG(fKpDBXiMJ^d=a}pMw5%2=kkaQ<=(hdMW2Y>5>N+jPJv4j4BqFlt**4tM z#)*d3RGC5F#Knm@V(xlwf!4%b&6c6F+%QA7&+iT~ zN>yon>n`ehD@;Q6_siUDbfAL1qSRTT<03OIGkPpb?JDwS*{Ay_PFF%A7Br8daH3nx zcNxv-=h;S4goJ({O^O^hFE5Gx07j|1VRpxTE^!fbueV-O#jDSK^#o+!lR{jN-9 z(F`yAyR}F1&0cUz4+Z|7Nl|;2pKs`IZKjdMs{3Q*eJZaw*S<7j2Xp5^zsB=|^ za9i!wxB|b8r4^7UrywCXlL=NplJF;zz&jidm4nUdb@F*{>HmzfEsqRr#L#KG(YU&f zu{2qdTfa(9+}0P@l&iEGd)o8+k0LsL)}Z(^o{$2&)nOB_K*D_UCn;O+zxt9$sjDq4 zi*q6I@xlZOeuQvOyQH!GB%SRoBj?vPJwHQNBgccE#@*abXf+yag6RSc2!{Rg{Z(J& zH7#}uK$t+-1pC)#)8Pj)*XOyYlKu#P0n>f8k+(B$IKu+reYc-akp`()=)x~hz7Eq- z#;!GC1HUB*#u?a32LQhZqTG=|r!!6bJs>xzlIk(k!qzW8srFPm_v+d6J z?+jm47Fr|+iMG-!I372PoBfN5u|d}65z9MOk~_E?5md^A&NjJ46=vT)L$vMj{_sNz z0#wxdA%kO6iR|*U;vm254Y-voLrvqEX0_)=q!HDo{e}JOu=%k+IDBQF;a%^|;W9_( zrM(p473@Ni-JVAXnV(? z!)KgEr#oyV(G;x2nL%rFI__C@XV_=acJvmqJW7!Ou*^T=0U>jBqu2}#g#&dPTRZ>E zp-_B7Z4%1ABd9pGh-rPXw=&8WP}eWPt0r2$vgUDraGCgOLqD6cuEU!7R~~&dt`0@d z_Rf5-bt@Qfx^y2qRhrDkI*E$?`B-+L^s{BsLyF2n=SPS`flIhZ*az7OdI-ZYYNn60xR4Q)&(!l<7j% z?s9R17{5zu&7(md+wA%W|FN%A&^u7{OCnY!VdxEG+OMOg`c?pr@);B=3nef2T9&PC z5E*r)S!VTuk^T7Z=k0eRhKh1dpVC zz|&KF#|gi{8!L)7hVn?m(+jGANIhL)Om+6t4Gg_ml2C-y=>kB4%Cq<}AO^4`J%5+H3gq%8o~o>YbO@SGfZ~B2eyz!V7CtpS9ZDw$+9aT> z0pz!5%?TU^j4)p=u!8>B)S~_r3#pO>spoD|9o48p5|3ZY4p@PE2V_K#UV_!831jS+ znX9oBhF|oxJ9T4aFRw-#cY-*4IS{;-IQU<&ZS*Ap#cWs5mmr~%ev-vm89e%DIF`DE z0M!Cf>#F8T#IdrPKl>6=Tah%*EU+dj zE+H-9nAtr=#kA*Z%HO?;lKz7j?v@KxnJf)rd2g5Qnec8ZA+6bwfQ%1|JHCFP?mP&; zaH;Z3Ki2bnwVyh8DlGBYY;n8$`FRfi(Pq&bvjvt@?>e!J2(>-5SN8sg-9BEoAB_js z>lokJ$0^KtMq5LR1J|xzWi&)QTXMQtFN`%Q7A0ywbUda!S2x#S z5u==!((~q}VUo{vdA$r(HhUW4nit6^vaG=Hs-h46zQ27o#b8#7>WoPCN_HZql{qf? zp>)Sung&fWD|blt-19pfuY%*yezMaYzklDo$PHvKmAT#PMnvRh9Ye)VW3Ks2;Bxbo zYVl2ijmRw{Gyl3mT9k6Fnsju*sSlCt^r^Y%AKszg-|{6Q4ba(E<70gA2DQYhoXm+a z&@f7;+tI7?D4WUW<6R3_TnqXxZjho(H|xdKIrj1l%d1U#!&TbYerIBr4ueq=z>lZ% z*rnxQpSBP#*?Kf=ugif?EcYeBrDOGUa`rH`Q(fq!WZ4{O*DJMQ+Z}-UaqQ6qK`1^x zBp|D(1&qyua;4zJaI7o@GIyAaZh?y0Cd2n?9<;}**{JWMY~%^3!PRux4Y=rj7kQb$ zp;E;D?j5kzA1>4~r9j-*gMbwqjLyNM4Q7o494m0DKt-hV%PDnu8>~yIQWXH}1#2f8 zc&GtB?X(R9dODuU0$plkQrbD-_J(lt3;`01#mMKB(0tqc+d0k~2GjNb)^6Xt3ofkUab;LO!8DLKSb;_}tny&s;FyXsID}V$~8pN7h9T zR1n~Ir{_%3h32fbz#i> zGF3sj0wbyIF-_YsBW9|u-z5q&$5vjvTmGqET;()b{csm>`2hGS+{Lax%A&wHrukRG zlmFF|pnlaKfs=kw?`(}T&E+{?!T$ZM5eeFkuSh1CNLbXV%z+h{15XR$_%o1!svxs{ zCgOm=|6Yh|{x=-Q%tij5ojs6oVH$^fi7#Z=qsLgGRzNQAZ@xA&RxlP7RUU`~&eUxkv?&e1WmQF5tUm%n zyJZE3m9e=VDcU;y0Sr>XPC$o=K40K{{7mX|A&ZO?f1|2gEq90?g<~?0B}0}dq21M0 zDd#aZ@V>ZirIn0Xr#xTZ&>H7r=waFNM0`*+YIK^92go0eO}q}?v9x!R`5t};OHoq| zsUh4Us+-E5(P(yo%Ai>1#OY}PKGsTX>Pm4rL8jG&aM`%M{P*&?gn0cjG_i7&p(>n| z_;K1Yt@W=wk|L4cPxPKJSKCeEMpSdbBOAOV;{ELkW|{Nk?W>xL|M9mPM#~k5=l%WU z664W*c$*qUx8GKjdb+&5E0wny-8H(}5 zr;9IKTwD$ttujpeqs|^rM7tu4eBKsrY05b*+SNOO(T@c)#;jYaFi$!Iws%%C=TY8B z#QnnO@;r8qPM67oB|c4t#L`Zq$7!RpW$;uyKj(~Q{a3o}D_F<%k>&LG`Hl%Qc;T2| zJxdKKM`_6M&33%y7A5**>z&cPVL5P0`$QA8-|+kFeIUy{P;_}j$?8Ax->T>Hx}eXK zY_)qUiS-JD)EtmvwxB#rest<$2d)C+yw`Eon){F;9Y_H#qb#{BxvJ#|E)fBC)rjlO zr#uHgp@DIZTz$jwZ+XwXm6P}57E>+^$t69;-!m$7GBXQ6uT~BA zgufBoBP<*O_G5jKRtu|jEpPYWzWCfKJ?&A6h9R{{%Cg2owo?RszU_yZJ8Q;=w`Sfd z!T((t#EB-^7Q7C5=<@fWvBRfVj;eM%eF>(TI1jy+hND#dZ4$C=F}>5s!(-R;?f#-n z@~n%z4t<0Ct{Fu51O!gBj7w+ZBuq@vj=NvlyJ0JL(`eB_@KH@T&DYrxLp;YuTXy~( z&_~*tfz9`FyyNp1(f-I;tsGB`O_E+q#M#jgNXAXUR0a`9GEXtUw`rM7&h|%QQvZ8_i!SbDb9y~ z@>t(Kbg**svdn)B+OXU92 zKKoISzq*h08WA7i3NYtz&-sNX_G$E8F427c`9C5O7 z%{IT!^7R22*e&4`Pl$NQ^f_Z<_$tQC1;$eLU+tgKZX4IbYnLazrM%X>x$7|}#%NJqzIaq6#MKQJqsD~i1#H3{ioEug;NncZastKS^CcD8 zy0qVxG^hWuuU_7tK$wKj@x23svQh<%eB^QL z0)DcG7yZ{Wbvr-X3PC?Q9+JdPB{a~T+{W<~TJc!3vQqkx4OhFx133V*1i!4Dm;#(g`%~ddPQ z^5T=X;_r6R?`hXxoSmJ2o*dA9C9F|n0Iyl=3B&1e`m@1THc`}PdsDXC^wnnQ!|J!`#4a6Hz2~0r@F6yf`1a5-VgX*!p)~d`&kYlU5<0Dh2-d z=W_B0$(^L6xf&N!r{9r8Lo4i} zO&SA_Yy^MJr*^lT_MtdtVB$&h@o3jYQW7q#^Lm>#IcXLBIt-dvRi{P>2%ZVTm6&sV zAY5c(Z>|{V+TbL6?&-hTpKVQ&&hklkzTa=(4rgN91eCN7KL6sMkjckHPr>XjS>9EipUIS5nV z@osO=CnZ)MTUuHY4O-)|r`qH8RJMfzF=xWyW~y%6w9VO|vR_=LU{S+HI8%(;-%HtqC|QVt8blXHhb(UW|ZD={}L17?!}jM~*N_bKu&_Xw_>p#w#DYqW#!fu4Tb7hWLuFn7PgTx2Ds z`-NxCJXHbJRWni*r6K%MHyd-N$u7J8s6FC!o zYLT_zpXNgC%VqX8@aF?`g&%j`G}gb85bM%1M-TI)9l6MYAXB8zi3K!Pm!Ec{P;M?P zEj;$4AL-S-N$T{SUN_S|!?$0putD$qACU_Sd8}qI+a+<;Z{5O#7eHC+jID$)DqV8y{^+xX;g{_HeDW+zRRDMGchB@NFa7+g{l2+< zn63R04OX~x#ZquZKowXS2v?;Zwy1DX@@jPD(-O)O3f&oIQYdH<^HeCs3v|;cohn0X z?a{H2LM6V{P@p14#RI=s<>$$l$6o(lQ7@B;;hn=Dso_c{40}0>ii!fnhmffPII}le z0HYZ``{q->24_vVK5IGJzFMz-1#hSAH+l1I#(Zo{F{z$Y^1H!9k=?GP3A~5WD)M9koT8btUUlZ^6NZPQPRra z#U?kV2Vupb>_pE|oRy3IJ9JnO2 zcL2~}Bkgn9I^^jP0&w&zBme#}%FCnt-(OJxmQ3Z33*~1+*&f`cd3jSdbU&vRs>8CZ zUy6OLP^ML*FHj*Q-JR#S8qHa?shz8_#whtx{_pmH4?d~;javu`Ys1&>5DYF(HBuQ8 zi_hTx7OW$>v7_v&K~6@-Lh_G!i}d*Gk4*&(~0+Pd@ij ztc^QzO7DoZdxf%}CuVQwv!8i2cpb*8(3ubek2p9}^CtII^v3?8=%=-!Z%@!8%hpdy zB1MSjg#Ivn6B&%JP<6qYg06suiI`*fTEJ<~(A|Lv>lIXDS#pR!K>iyIj{YLW;QRRX zdOk$>z{C4`|6S&nh+%3HP6}+8G9^7Wye4f)j%(VtK0Kr5s19e zotoDX{^)$DiG5no=C%4VUlds#R?}o)&vf2@v8exvg~_NO-3r6v zuODp}JAP1)S)U5ydOWeqc@_rLrS4>x6J@+mq@{hA%L`bOKwn^34xLh0K3n^avEfN7 zdee#Vf6X18$k}VZ<6XZft(FbEhlTRTH_zMc4+J8Y#mbc+VB_gR`8gpqRR?z81C3AP zUTy?Tv~6$CYU-L2*Igl^5dTqgIinaItFlWge4z{JEf&n!FK)^Dj%Dx!xw z$NVNes}am;s;auOgmp=~{wRSML)Mm4aWK^z&VCrob_8cVK@B|C&`3o6GG38-{5R_c zJKsh(T?8J>2ZqvMAE5lSrTlC5K&KWUoH?&1xQ-U@%C*!th%kFjxg#B?*{?onB%!$! zlOgQ$q8+&k02~oIsgTtJ9pfX{m?c8m#VhIOu3~eYHV&+J==_BwacUE?ytN@A8_QE0 zGxV$|dRfjp7Nj-1p7Rsdm{v|%)6*Z{YKNeY+tmIl=i%JE{re9=U7a{}r2^PR>zx57 z4Voi*XNpcHGBOQmOG|G37pebvSkmxxcff#8M^vgUvj)u7jAZwlqMO4;H#lBTl!@P{ zv#ZZ+liByyljL2yd6tz%dU|NRmP7lqDt^_k>+ssItvy^fYz$>@ww^p9-Iryoby+I1 z8>wrT9*I#X~^lwKjkP}zQVvo_A*Po*c}U9I=Sji*M|5NF%7+P8bP@vHye5GqZ% z-_;9K;gl$s+e5GpIGNtJ$UwCOEw#(X;bIog}?6G?XbtNeHb{nqe> zN$AG_cTDJBz~&DH!@i_e-cQkXg@0{0L`1^lp(({FCQGq|M6t|CJY1bTy!5}a^zS2hI(|N%nQe(X6HnEwR`diZ z;lY^vO(F7XN7zjaaMmeOeZT%nN$5^W{6a7fp~qWmGVLjoY-YmLB#NEel1z>$B*8~t z8cQlMOu zZC%41m|Gau{v??@{VgEi5YZHW@e2JdMHKO$KN5#?0)v(!P@=N-C!KxNf)Mk4VeaYa zx3c6PmRu!L73FmMhp8j zT$d@@J2-K1RC~rrRwRr<%t~eegalEh_`+j#yjDF*RP?Sq8_4xbxP336Wc9AAfF|7IXQaqi8d zJEfao>w$^DjfO0l;RL-`P#_wvQW?}uH=U}DE=a#hrF1dMwx~NvAGM%Ow9G1(6`;Kb zST+kw%jfB>tt|pY=8Qq2J?qi+J8Ae^9}&FCLkl8VZ}RL6wfn~nFzB4YESg+W7_9Pt z_5)`+oq=gzL33yC(8t|4NKAss#zg0>t$Z@wB9EfW!>O42@zP*lBr(5;=y0rQe`-ov zzRDlWV3Ed_-kk1`n-LbHE#H%SMCV4*9u$dnLeJT}l^VylVHa}Ll*-Y8y-m5=D+9^) z!UO)dna>?I_k@t9CqQCvZv&C8@}9RP_Md8@xN?f`_4mE8CZ4)cJJiO=7&?sgFar{ouSVTTdR*% zYg*6U%?;OWuRO*sXVu;mSJ~a$Cu!L%-EEgUZAL<7TC-QpW{*oBZibCUW8tv~^!dfG z7jc>Du0o2C!(I(dCb0S>gk$af7b^LWzDVDUgetK>PzVb?+>qoeQIUU zbOX}1&CbJ92wZi!&nggc!Z0M@u|5npR<+f^6F@N}db9Rj6eh!N>rJ?mnqMQbPRlTP zx0dd;NJtQDoMH#Lx^{U?@9YyjvW*=A!)zE(2UgQ5%;wD={Iz<==V!uNoy0lvMZM3x z*>n2zz55ub%ATH;^>TPj zBl6x-;t^QHn^YYZ-3#HN160v4MJX*EU3J#5)i+qL@bM6suT20uSM+I9bO&ae0|q;N zul<6S(;zkpxk11%>;}#YK=}_L^$G?4WhZc($!z0}8g9;CIUX?hq@uoi@T$>e0U0h; zbv+k7kD*>9{Xq4{yJ)|+t1jj1JPih)K=}@nu&2%r3KF-S>b%ll{TJ-;j{V1Eq-q)W za}inOyXUmO9rKilS-YyN$<@9zP`Cs+8jwFds+p|BOO9%ifK5+P5h(E+A+~2qE6KAH zYQIrPoUO=V8IK^c?Gq(FmKOu1PezOu@)PyHEN)-3Tsal+I>PJwjqar1KP*X4BV%Ia z_Mu|vd2k9Xu=de_|mK<`}keL&i$3txa?C zkQ4ed*G(zq{Y7fuK>k%qbK=TJ!rU%QY5JzpH=5YvpUWofm|e~g7f+MXG2QX$w@t#8 zLNyFXv_36r+VoIPR;gvJ+hdoC6H%*B_w)o-QvP7Ez)xeI`f#OxW82bYNLeDmYSeX! zJm>ymcx>_*p{Dr-6;*u8dZg&^s_)t75ms(~AD>wH@|LJ0Z`O?}a4aj2q0UvUA(imSDPJZ>b)@RfEYe(5Lo6#08h}HNGVOudR>;#T;_2M zPzij%2!fGP@)wUdg@s3-?~I-!l3TWDZ09+Wj=VBI2XpDo_r0b?{Q&+5kPPtyS6W+N zf21l#45HBP*|y^-$Zc~tNwvdw@B;Pyr zQ^$@p(qmh$3^BU<=@?Xf5PM$CtLOUoA5F*bEfwZ(*T>+jb7VD4-da8sf(%h~nbWHFJ6*4ARHiZ*XnmxZI{q((4=5 zy1i#x>UZO{-8v^ON0<)sNH|%-g4TU`AY>YLQBXE~@B8;JdS0KhqC_ZlbSP9toO)eX z^TR65Yix5=Y3?cp9Ln|(OTC*`{0Nk4{RV%w%o#>Tn+@$3vU3txYXWi9=&qvlcbo)j zREcts#Tmc$6*8_=lZx3X0wa>wI|NBO`eja?h{@~QB|TL#aa#cTLmnF19q2y$YJVJR zx`Uq->mIdwGrGE7?SCz4vVMAWvOMfuItnVlSQIutd|r`jM370s%jdes&?m)PQMF`d zZ~r=9x-o-J77n*^=AEn}nR1&&+{Nucf?aN=9^Px@qfSh^a0$8m3de$u#BcU4iNbod z;=0eZHgd!C;e1IPRRnhR+k#vdEw&*&EL>V!}o4zeBSclgF4XSGC6d7Ee8h ziaEpfOzs9Y$PqmAdorcxu1h- z$&K1QGFtoBs=^$q2`U6GS;5uo>RsEajay0rpr$-Lv@OiCwJ2|DVla31vQQo|yV5M_ z1!whUFx!Xw#Q*s|6*zfj^c)KQS~*TC@;ZSaT#!lx)6AD@M!+7_pc_cZvheie|Ih(J zEI4e(zxT|MGMYeYzp_;Lpm`;fELY$hNBiTo(07}(fa}APCRdrHyGubXUAa8h|ZT*{5c>mM3+>J4Y1c3xW>-JY8p|-h$U#+ zqZy=v|6WJ?wMSTV^35Eh#LrM_32d(!EU$m$N-0Iy_W9b23dMEb#o5J3G_;Sm`3}1? zU%}I|c_ZdE8+O?2Z6s2X)Jx~Jg?G&AGH~WBTkR>BHd2R0?0)pP_J42#Ds6J65(Czz zEym-Ar&fui?&@-X*7CcvdY9EN(PslW{l$w+LRCxDuU&qfSBLiEdyRhFBk4L~jk!MX z5W`CRG3m~t8%4c37<(e%+G=joNMmEKFj}d)PU!A{TL0FhUVu-0jgCTuKP@1C`Pg|q zO0_Th0Y!>{w8t>WYd9w{-E8_db~8ofw5Oq0x6A%$Ip+r6ew_fdrUEn79)F->Xa;tU zftk;+($h{7Ta49cyj;;_m&;p~*ftztXq@v+K1Y%5cs(!opMgKYE$xatLg|0JSb5_M zP@9N?DN0I8K#zNt?0@TTRlf-9N&%5n`s81Mw}N~K233KXr)MfPDloH*jEt;#lCIvb z7_+w4#9S)DNPK&jUa%mvp6kaSM@~G#OY^ybk5wl?`ZcAc1(AQrt+%H(^n*l5-*6PX zm=7KN14us$@7>Vh(m{nlmrwk7!G6b^(=-{z-2w{)`-Xj57*5v_>?9q*{K;q468!qJ zvorO$CCC=HV`2FX5?51N4UVV1kMzehEwj9}sK33q}YQ z2T9goPFAY<*?=tQ^0*S|GE-Z*9s8BZE3Cy(?fcPKq>XV)^KH;j)0pw+Os9#B^Ibdt zW&Nb*nO~rC5o(TN{v|YsT5TM~mejumphd7Z*JGgYzr65AWq`oM}$3{_HL%lYE(q0-0umfNZ&g)T&DV zxn;I_OKmzZ*Z?Xd;l5K^kw}9poxv@%Yp2Jl61C!l9Gz~LXk+bZr;Hc(zts^JJgN9z z>1t1Z6$Fp${Wmb`IXeU#~Kf;(#?rO^!=$LZr;F+)_z6`}tv)h%5wHgm3=? zqQccp*niFhh+!zou+Gl$ZgLjWBsCJ8qDR>@%oZyPoWriQn95)NT|bMsP|(PBb#=jk z$-C`pTP9#Qi#aq@-`p3d$)X%;mcXLgw@;pqPZ~fx%{+K9hVTU@ol?dc_>^{TA^sxe z9=%L376oUq&!(K~@A<8HeX?$7%IAiB8Fv^ zFD3$vSlOO5y#2t{DtfNZio_LhaOnkKVDjwc09%BEU1(3=!;7gKmZ_>7M^F zwLDBaY~_|1ihG*zl0Dz_H?9X0&$aveOG$F+T-wUD^-QGQ+=VR;^n9R2jI>}RkPkrh zN!rEW00mtib>y8GbLH2Xrd>ZmH{0ASdEENf<|y0mung0YtPojWq2Kik($<~$ybxDf z>xXMkCYO}Jb?2N?FZ^OG!zK6m9)%g13NM%b#p3#`|7L5;b^9ZaoSa+%=QE`J{(7!# zc-ZeD@o@PI(Pq3LpR;Yy*`UFnDZxNE>;nD*x!#zbpC+L+J)Fa4k3@E-cdEhsPd6?{u{ zOE>QQb}rp{6ymrl6@FBmMZFaaO&dkE7AEr!+WCTJDHuP$ySqCN0BXcMwgXj$qRFQU z_4Y&i@650CR_`>++U{&b&cc*o(+b$C6=nz4)YOE>&UG7FY;6(yi~g;eVx;>ug59 zM&FssF!`Z2*C4MeDkwiN>7Tr@zwJ6&@^DE-^QI#8pW94QCNtjbi-a*@=Z%3YW8b}& z?0Vj;K|6T=tqMLp1~x{j_FQEUUVn{EKfRYoyeZG+^!E`aMQz*780o zlex6)lU%f!?4;W4=#;)_8l)r9jy$&R9nvWt>} z8Y|W!jvAS%s)AD9vUO@#kH+`Mo6W~ocSK9VV1DMV_Z%W|pCq|;nWSS~v79iluB))* z^H#QVBUmYrOtGn*u-6-SWU;aOjon+XyoA9RhZBpQLgJ+5u)9=U&2YK=wZnMEK=1)_lVYyk_U&)`cyguG z{mcf8CSQhvu|KL3tVP22$cRjv0$D6Wx}fctJpjI+FyLx{24MJng*kg*n-^m@w?ts9 zT(z*a4%-C^30Q<7QLG7{d}%+uC+%#Mm~pGdn_O@fqU%>@E0*o6ttSfuMix%uCLu_S z_z{2p{2}xu$+nDJpYc{7r3anYjKQn{pkx*oGk~uyCvuXp!u5eb$}@KXaJ{#S?09>@zmiyIb zw9FN$K3;t(tB=-n_ymRzv;)f>t4q#gy-v~c<*g~V3#hBD2biy-U4fB$Ri=D)_$71) zPAQJs8%G%f2idpYmhwFfwluN?;Rdf3mQ$wTJs-glS>8v%K*`J=qfT0i!#c>LL^!o7 zTPKEZK1-#3a)H!)UeethIvahr<&u2~Q(US3*Oa5$*4JLzd>0Fy0;zVNh+YK!M^ULC zLjKJ#Vf^X?BMwf>GsbgF`{Rh^E!)YXqB}@&9`@U)CCRjlE4Q_*EFQq)-JlDP{YM|< z{DKBg%?8SdN3Xvg*W>(tf;B3kjW}pWJGLjBJrqkD!B3)`cx{eU6&KSzXt4SNTs%>pO#&3q{Pi`drPC&x}0?2kxHu=f|+p>{o zXz3!6#!@{j<$n3iL*1})+v2BhzGo|I_MC!T=W5@3cbI#)8$)#DsD3r-pvmW-diMXD z46bWLC6c2G-$`?!yN(Yndmr(qt1JjXWJRut#DvWmxCFC~7V9T%Y6*!-ou41Ct6g@L z%7CS1gv0H+>k5Z z#h@`E;zzmYJzP`R1jn$b_ec#Jz+qoNLzfIofjMeA8 zeg?Y%r@`%V3wKZWlF^8i6ffc1V#-zD8`d_@6Py-kvfuZ|d;hp{Kf3@rOVYK{lbih! zIDXU*nwrF)xw59B{{5gg#>S!MXk~w|jsGo>@6;)SFc%Nsg3RnX3M*fi;&9X?f)o)V ziGU4Z%?jbqkcf$)m&K&L5Kp%FlF*-pT&!fMnB#?|=@~eui1a5$rA{UeGuC6SOQ>DO ze++00^b=Cj)8&w4znxF3}o-CWRL>|T2()asU^ z4(?+#tm|ahEi$vPplM@X^VV2;i!NSf!M{QuKXSi4BYSr8Y9$rDG8OIfzf(ThsrNgm z*VfivgXMz(OZzhOTqn43FRmI6&OvOEG)SElm8{g>a(LQtXaH0+hD147gE2)Zs%Ej+ zDTOv-%bKAmyOhmvhqcn%E7?lHQCN?G>NN-16(p-Sp8icG9c4!92@rRiztP)|yN&ct z>|1b0UIwIArk>wV$g{!hzZ@?L6t?RL4}WkeBC=f9QQYQm zyll@4{a8MG0Dr){!|yKe_UdFc`^C4yjM%{(S{4XUt8-#v3!nB-VjHSl15}{(z9$h&o~s5e+q+L_tM~TbOx7zOFB-YC@N`n1V(RB=oY!+V7X})caz)h@Sp30A}{?g<` zhC^d;-`OC|*L|0IIm=qa9u@jA_nuGhp1}26iY9OV(RD{$pzO%Sj)Bi!^b;NE`%6-F z_SPCcYAQ2-@>Sgnj72mnKbhI8j`B!S9jotszMMOj}v#~h{+cEf~znHDIyJwNjc+jcU z-R^nNuOpZxb95e{TBD=Epv-zYg9mD^@ zJ&J_C3&zob@kwD%Ezkyoo8KCw>_JAI$7D#@$yISB8|t2XJUxjD65LJf#%%g0za_R- z27ODmXm zHT$i-&b)`QlLvIs%k$l{OFjQ+t=26#mR}3jg|ksYVJyx~w~PDNyEC}?iE2cfX6m?T zD(I0vx-JS?0KN-5I5Oa*_~H_&o86nuU=~KXc$!O0Hh5}!`mCE#RQc6GN0Tke6of;l z$eDLBbg?(qR-@Fyfp`)PSB6g&+W3$*eEX&S z?&RiB>nX{bv@!ElwnxVPTknSTTZlA2hz5D$d%jMBxR|(y$+I?xUxNeebcv^R4(g^f z7?T4OG7Q!6fO>t?rd;Whv`zk#Ym+b(m5M5@gonkdWe2ysC#Uc36bm_CR2zo?{EAvWOe%;-!qnv$)GQIRt!s zN}X~`;*n29L$33eSZ=Sq73*vlI>I(X!t(yp_(6jpE=Izn=7t8|52fbio+^ntIPP&B!J3d2L|IkYA^dm>;* zJMY7#jnb;8pFgZZ{F0Ja9Pbs_Vz>ly2V zA(Nh?LR_GaNHm@eA-MXwwwCq`9wl5>uTxV~jlKH)0CQR#p_U zIX?>)bXI?k(^qV_3NdPcRY8@b6;HEAX{<<(-kG~gm3@Cp(t3?QtI1+28~4B?ETFvS}x?v6J2tQF;8EP{gf|sc2tmv4|ZxB zGvzD6Ctontj0ImCUFDe~M_%Zst2S-^YG~70ArBD5u zbmy!e!*R5_d>bNirYH2U2Q2c{*}dB|erK7_7@EiI5bwWGPbj1<^>bNc7EXV1t*=9w z0&l1+cEqoubelyMGod!_w(d2%Mx7!79=Y;kE?`yJsHBppCE{t|!1)-`OGlbRj~}Z^ zz|{NcLNkC`L7X}D4_e2J_3*vr&+q11cQTrq3?8KNB{)J?DIbJe0*F~Xnd~fa)MSKE zg!WA(3tXGUAjqa#lUv~y(~>1YKjR3I)HP{{>SroR@?|i)`mUI}TtzIRZOmtp{wWPD&tHw`z>NQhjY77pA^ZL^%J)tk{ylVSB#qa2L6 znbqiVE3Cg`^F<9iw|3rGB`OMDpG}wh<85zi>)Y9~?4tBLNBOS2$LV6v;8ehYK&x&S z_W$j5GSev&X>Fxlo_g zl2s6R9{^(_@}>=fqb$_fOJFntw6XjvH+{Tk!MrU2V4e)UfQx-at*m>cgEmOF=RA;AGcw>=e*-rhPgP9xJzn$1eI_pL-)0~y;c+;x;(8akiZ;9rMjfV;g^CN-)tXdMreLWB zq;^AF9oc-22n;lr!OG=YyF(@A;1Nz*baXGXezxj&@TKu_?Bq1c=%M~$r8O|vlm}NLF%FvubFGH z#yDC~CtoD@DXq5BXh?9IvD`{!eJ{ET@Cd1Pk|YMg9f^?Eq$S*685S>Sc<8;T#iOaP z5s>tvD-%N!aC}2|7fzIa92PPxYvi5~amhd$e;>d5L?!-O?7etkFa37xsL^SC0b4?c{X9gy@1%9dDjwY7~ zh)yrW1unc^L>*vU~&=VfbaaR+QF6 zk}#;D&P9ZCNw<*8*}X5OC0mj*c$|gn4Q%H~Z_u3zwY}q;^uBP&O#cA|&xcbWOXHpV z`0mH0QV~}NDyYx;>+C=uBo{^UH*kwS{HDO@jwY9W12&-+y^R+gJj3Y+dz@Ur0~pwh z{%gx~8~J=!^3bFF0LHrNsi@v1fcAU2?AN4MlqXz{K`I1bZ_VVH&lv}Goy8U^kEnO_ z;lNS}OSrXNtYfKuOFR>#&!+w+uKVm{2iF4~f!ve}~hPO+UfD=qPx)lT~GJs|6n zD|o@?8NVOQ;A`3J`}etWK6XmZs%e*Z)<`59GDjcWE+FvxQtEC0Am_;`bM54Q3}hDu zel)TfuZ*IS|eFtHyOtwoEX#K1)5WHWdV^wy;_L^E+{9d-Pzyk%Yo0J@f9d7pD ze~X0K;Rpzl4d0Sn=f0b!cXX zLoPcpl@=;8#mS|l$dx`8NDD0;VKbq@lnS?7?2nN?k-kW~FcHgm7pl?_)eWi&*wlEv zK+D5H%ZUEx)fBj3xYxg3+ zU_b_)hxi2OwYwAZ3hmxL6kR{iWj#L-z+&KcEC^EdQY>w4nHP8Ev)iRm)vq-QGzxR9 zQz(j1URDQ*h;l)|^Ki@AHQCMDL>78iJd)t}we=LWK5Mi+Qz>MAp1+IT?D^>t$jox5 z{8`eID|tQ$@DHQ?a-yP{L&`6xNa#M>?03?a9h*L`sjHbxHTqTXx`h(Fbh}rewijGd zF0M9Q)a&~0@84)5``+6imoioHJm4RU&EH9@^`!~G>)c&ny+v+77_Rc6 zn$|4VfE{nMWhKdZY;g{+pm&qreoHJzW!`o++C10#3e?W+wNqoQ<|BU_c&MJ$~Le*WDY`Qhtdw8RZ?HiB7{ppi8uVtUP!V&Kw*Sj zkoq;11j#q#fE2U>q=*!1H3P3m{vIJ z`OmP^(FcjvkI1=VCP4%FA0%Y{q&2t)P*2$mGs;ekSa7CHtRTsukE}}k!3-mpt^P!^ z53f21N6hPBe$m!{TO#^kkaaptBJ7oLdyDgKQ66{mC2)^)uqd)~GzMgp%H*<6R93++ zS21^WK+qRok@>`Embl4wUZQWEyFa$rqwqyRyWE=}KW;|)Fg8y!uWc2p4i$aZxGFJC zU4iK!c3}fiAmiBHHvc`%2s(avE7a!BJ^CjYe3b0zH01v-4euvtIaa~xJuDI&7=OB+ z9=-WpA0&2IfK#|?^jNbbhb3BlR6Z{;m0DKnKfcL;?E;iWaJ@G=Q5|j5)y}MYx`rEI z@Ntx{hT+gP9DA~j6Ajd<3J1}2UcAY@uV1SS_z}*xP@2+Q^GqxOK+nsTZs(?Cdf|OY{ zrjD8)kKFamj_fnUE31e|Ip+#VTUU1@t6xO9VV@I#!oYyE$GzV83qHWf)O;vqe|tv( zoS@{$@1(}3Q!AHkfd+-Erfv4X&aI%9yujQ3g(X~99g7e|uj0{g+06h{A!T3*wN#j0 z*+X6}fXp4|v32_5zw=w4mrU0Yz3A;R-2uN6a#iTf#DCQN8>n7j!ggl3@K6XgooQ6Dy^0w|Pl8EHKO5)UT^?m_qd!n@<&^%qr z6_LT5OZref-RG{aKP$40o)a)Lx^8*}-@I&}lnUh(m!d%FCpCS}!g5?3A!#Pon;O8Q zWEN+ZWQ?#aqN~-8Hy4SBTQu{Bmm!36s$bmx`|539UtRU*dr5^KiWB=YMCBUA(^?FT z995IO*vPXJKl<4JjUVw?UkD%=gNCM?S}c(4?iahb?rX$Z+U)8f_pXV9t<5S89;6%^ItAL)hKCZ*seVml z!=i>;!p`K&v7!lVr4^&(BZN8o7Z8iKeqse6G#Lxyhwl7{im#~3b+8lWe9q&^&~y} zb&RJqjGH}a(IK*jm6NkwkWba}?_>GU9p_?Q<8#0(u)MtX9A?%zi6wpW@>6BdXxD@7 zjIukyEn^kbxq4f-=F*m+ga^??JFICbL zm=iZ%yn7V4*_!dlsuvIe*H*QW3v;S zhx}g06aPa${whseu>Vtz1mj%VIoUK3sj4XMO7z{Ei<)_luVJGcOem{nwHDP&W$M>L zB>lOQwj9ES#s_9m#lDh^dGRWkF@e;w@#Mc^p?E_^xd&tgP7UA5YQnz9P={4&1hNG1 zp;gfLQT1rT8NY5-o(Y>3nm4f%O6|eM)BDv!^E%>}M6QV}Hi`sLv17;DtD=0Ib*bwS zr-8%kkGZsB{6OU_LV>o;L4hNe8F2` zl~#oqhzZ8D=1oM(yxpnKrvD*VHCS?~Cs29x1JN=7afi&; zn9Ey)KFx!{gLqC1qV;o-@WbAiYiIhdE!>z@NXkUDW(g>W8}H_|aCmF9bgHM#Y$%nN zqN-k;HGb8l%}aG&{-ZWuHyRDXOx4o}dk1$@QdYjIj}<|Sv6vCmddBV7d6TtuwSOMW zhEiq^%=ms}z{Tv9kVVSjajjuNfw(von7Daj>CrRGuQjlW>xR-($X(bDA04cYnnsGt zrA{KR&}q>=rt8)F9V1|N<(wjJC@9v)DBO(wM?U{k+nn~_DHJsZ-n$;Zrt z&y8#_g<6mM^SbH$gFl>o7mNg|XK|Iyz;c8fY;)?ZTrjZURB2}HXK zrlh2-fiUS!G!VWzeEE{N-j?RY4n96Gq{yPb?u#f%g|4>=KH#bu@rmcm zQN?m_x%8hVBWk8#a(g#~b-Abg8M={<0g;yO zE~TZryCsH@Zs`UA=@>!;MY@#q1A)7}{DT?J?6cqXuJtSvtho;z{Uijc5n?s$+^?zy zjKz}Ub+?)3dnTARAIH8NE!47RhCx{Lc}`tr`0QIcKU}NFk1`muj00d z^Y5xC$=lKu)R2K^(O6z=9JQ~yF@;%A@2 z0k5F}uD0p;LpLMMF-Z8r!N2OUvm|#7L<%lWIB(>-3q5h$=yW;GKP+sH)SXE)?_r~L_99vRu>gj^+fwPzP-hvYA)$nH4W}dbxH;r-o zd_nMIG6Z*K5HEmt(@KQn37|Gf9zqy9DgM9R^NcTRJ0fgTzb+b_*|97g=LIzi75tcF(GoL;w6Qz;U-f}V8dS^8V`bO*rM)Z>!l z@U~Wy)Wr$#!SYLXEmItndd83C;AY+4mB?4I?}wq4pZq6Piw!Bv;I^*>qbX7`?O;I! z)B9OY48B4_8eeRJK*J~XK~b|EdP7zdCej#b2HVZl|w)h z7?n!`g*6Aa7+t0@@~*-EO@T<`gCX^}p@E^HpKPbWosqAG#A4(u(>zS6Y(58T*u8J1 z%IjX_>?hUR;Pfe;-Y_+u{sb^6;7_f{FYCY5?He+9>ODJR0J_@W8@DH6U^t}M9Gh#K zfk32&4LvFbGNC}Z8v%js|3+A)27$sS0Z!qpYtbkq-;Y5(nzaIj@)3;0!qwvOt-#I7 zxwOWuAKTt=TG#yUFZoWHP2cTx|9)b_2Fm!emgb(?Lv3I6SvR6_`XtUKE)UPBSNdCa zKN7yA>82(lmdBwzY4N`+i5t;2)?|5dtoV|WTY|`tCN!Mssw#2^poCGY2`$VS5BRl{8si*z!E5JgPVYW*4z1Ehx?SDgP!o$Bi~( zR0DpHS@I1l>rL5Q4beC+=Sv^=dn46<%t=te2y(Ws&HR`}z?cdg#umcaJf!hdKuIT? z8K&06Iq9I7t$SpZmY_W7z~OHt_iCQ5q%YUt(-QrHlCkytl zR=9V3%35@GjHH?8RhUH_6jw~~D9X2F>_ONCS>>-XsH1Yr1+4t-v| zg@BH*&?i8Wn*gNQP_(6ksY@}^NEr^HJm6(Xwbp&<|BpxE`Q!_BNY?B09BQP)B)ul*?sDAC3Q3a*|n(m~Q$FnFQqx7~=~OIrj(Mf2kun z9T)+anaHQRqnZ|xL4$92Wr4%}@MfWBf^o>Dyh;^rwkS+PEZOkw_uf}k3@2^)9@)cM zk|W9ezm)8Y=`aGAIOHn02sbY=%NwtvE(V^HIy|wVf1WCR>a4#lfZumsBhA!q=3p0p ze{axj>_{VbrM+#lMWsJZi`59(%ofP~l95m;C1cquJ3u)oMnBJ#b@i4VhLN^i-V|zE zT7GGji9gy$EAqjR5rC|MrpU#I-pAJmi2^$h$O%u(R1>skx22pG^yc#7cnm33bUE9O z11k`4DZWikNcaj2R?pjAx}|!AEQ^o9oR-y)agmslvZgDL%W#4!PvPO>C6Z*dIgFD_ zUX=V^e6h}i2T(+AwHx4_;QPoeE}s3Ay~j&l#CRjk6CQz;YOWS*)w5jAl!{lVeV?Re zmw3t-5GcGTsbZVAW>E&ce3$;+o8-d^>dR^LhpG*M3HJhq?YpP5Y9t;N%||g-)TQ

f+9NFw1HrKCDCWx8-XD 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 literal 0 HcmV?d00001 diff --git a/src/dialogs/configdialog.cpp b/src/dialogs/configdialog.cpp new file mode 100644 index 000000000..1cfdb228b --- /dev/null +++ b/src/dialogs/configdialog.cpp @@ -0,0 +1,146 @@ +/************************************************************************ + ** + ** @file configdialog.cpp + ** @author Roman Telezhinsky + ** @date 12 2, 2014 + ** + ** @brief + ** @copyright + ** This source code is part of the Valentine project, a pattern making + ** program, whose allow create and modeling patterns of clothing. + ** Copyright (C) 2013 Valentina project + ** All Rights Reserved. + ** + ** Valentina is free software: you can redistribute it and/or modify + ** it under the terms of the GNU General Public License as published by + ** the Free Software Foundation, either version 3 of the License, or + ** (at your option) any later version. + ** + ** Valentina is distributed in the hope that it will be useful, + ** but WITHOUT ANY WARRANTY; without even the implied warranty of + ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + ** GNU General Public License for more details. + ** + ** You should have received a copy of the GNU General Public License + ** along with Valentina. If not, see . + ** + *************************************************************************/ + +#include "configdialog.h" + +ConfigDialog::ConfigDialog(QWidget *parent) : + QDialog(parent), contentsWidget(0), pagesWidget(0), configurationPage(0), patternPage(0) +{ + contentsWidget = new QListWidget; + Q_CHECK_PTR(contentsWidget); + contentsWidget->setViewMode(QListView::IconMode); + contentsWidget->setIconSize(QSize(96, 84)); + contentsWidget->setMovement(QListView::Static); + contentsWidget->setMaximumWidth(128); + contentsWidget->setMinimumHeight(250); + contentsWidget->setSpacing(12); + + pagesWidget = new QStackedWidget; + Q_CHECK_PTR(pagesWidget); + configurationPage = new ConfigurationPage(); + Q_CHECK_PTR(configurationPage); + pagesWidget->addWidget(configurationPage); + patternPage = new PatternPage(); + Q_CHECK_PTR(patternPage); + pagesWidget->addWidget(patternPage); + + QPushButton *applyButton = new QPushButton(tr("Apply")); + Q_CHECK_PTR(applyButton); + QPushButton *canselButton = new QPushButton(tr("&Cancel")); + Q_CHECK_PTR(canselButton); + QPushButton *okButton = new QPushButton(tr("&Ok")); + Q_CHECK_PTR(okButton); + + createIcons(); + contentsWidget->setCurrentRow(0); + + connect(canselButton, &QPushButton::clicked, this, &ConfigDialog::close); + connect(applyButton, &QPushButton::clicked, this, &ConfigDialog::Apply); + connect(okButton, &QPushButton::clicked, this, &ConfigDialog::Ok); + + QHBoxLayout *horizontalLayout = new QHBoxLayout; + Q_CHECK_PTR(horizontalLayout); + horizontalLayout->addWidget(contentsWidget); + horizontalLayout->addWidget(pagesWidget, 1); + + QHBoxLayout *buttonsLayout = new QHBoxLayout; + Q_CHECK_PTR(buttonsLayout); + buttonsLayout->addStretch(1); + buttonsLayout->addWidget(applyButton); + buttonsLayout->addWidget(canselButton); + buttonsLayout->addWidget(okButton); + + QVBoxLayout *mainLayout = new QVBoxLayout; + Q_CHECK_PTR(mainLayout); + mainLayout->addLayout(horizontalLayout); + mainLayout->addStretch(1); + mainLayout->addSpacing(12); + mainLayout->addLayout(buttonsLayout); + setLayout(mainLayout); + + setWindowTitle(tr("Config Dialog")); +} + +void ConfigDialog::changePage(QListWidgetItem *current, QListWidgetItem *previous) +{ + if (current == false) + { + current = previous; + } + pagesWidget->setCurrentIndex(contentsWidget->row(current)); +} + +void ConfigDialog::closeEvent(QCloseEvent *event) +{ + if (result() == QDialog::Accepted) + { + done(QDialog::Accepted); + } + event->accept(); +} + +void ConfigDialog::createIcons() +{ + QListWidgetItem *configButton = new QListWidgetItem(contentsWidget); + Q_CHECK_PTR(configButton); + configButton->setIcon(QIcon("://icon/config.png")); + configButton->setText(tr("Configuration")); + configButton->setTextAlignment(Qt::AlignHCenter); + configButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); + + QListWidgetItem *patternButton = new QListWidgetItem(contentsWidget); + Q_CHECK_PTR(patternButton); + patternButton->setIcon(QIcon("://icon/pattern_config.png")); + patternButton->setText(tr("Pattern")); + patternButton->setTextAlignment(Qt::AlignHCenter); + patternButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); + + connect(contentsWidget, &QListWidget::currentItemChanged, this, &ConfigDialog::changePage); +} + +void ConfigDialog::Apply() +{ + switch(contentsWidget->currentRow()) + { + case(0): + configurationPage->Apply(); + break; + case(1): + patternPage->Apply(); + break; + default: + break; + } + setResult(QDialog::Accepted); +} + +void ConfigDialog::Ok() +{ + Apply(); + done(QDialog::Accepted); +} diff --git a/src/dialogs/configdialog.h b/src/dialogs/configdialog.h new file mode 100644 index 000000000..9acc653aa --- /dev/null +++ b/src/dialogs/configdialog.h @@ -0,0 +1,59 @@ +/************************************************************************ + ** + ** @file configdialog.h + ** @author Roman Telezhinsky + ** @date 12 2, 2014 + ** + ** @brief + ** @copyright + ** This source code is part of the Valentine project, a pattern making + ** program, whose allow create and modeling patterns of clothing. + ** Copyright (C) 2013 Valentina project + ** All Rights Reserved. + ** + ** Valentina is free software: you can redistribute it and/or modify + ** it under the terms of the GNU General Public License as published by + ** the Free Software Foundation, either version 3 of the License, or + ** (at your option) any later version. + ** + ** Valentina is distributed in the hope that it will be useful, + ** but WITHOUT ANY WARRANTY; without even the implied warranty of + ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + ** GNU General Public License for more details. + ** + ** You should have received a copy of the GNU General Public License + ** along with Valentina. If not, see . + ** + *************************************************************************/ + +#ifndef CONFIGDIALOG_H +#define CONFIGDIALOG_H + +#include +#include +#include "pages.h" + +class QListWidgetItem; +class QStackedWidget; + +class ConfigDialog : public QDialog +{ + Q_OBJECT +public: + explicit ConfigDialog(QWidget *parent = 0); +public slots: + void changePage(QListWidgetItem *current, QListWidgetItem *previous); +protected: + virtual void closeEvent(QCloseEvent *event); +private: + Q_DISABLE_COPY(ConfigDialog) + QListWidget *contentsWidget; + QStackedWidget *pagesWidget; + ConfigurationPage *configurationPage; + PatternPage *patternPage; + void createIcons(); + void Apply(); + void Ok(); +}; + +#endif // CONFIGDIALOG_H diff --git a/src/dialogs/dialogs.h b/src/dialogs/dialogs.h index 9cdc7c318..ace57ca71 100644 --- a/src/dialogs/dialogs.h +++ b/src/dialogs/dialogs.h @@ -51,5 +51,6 @@ #include "dialoguniondetails.h" #include "dialogtriangle.h" #include "dialogpointofintersection.h" +#include "configdialog.h" #endif // DIALOGS_H diff --git a/src/dialogs/dialogs.pri b/src/dialogs/dialogs.pri index 291077001..747b7005a 100644 --- a/src/dialogs/dialogs.pri +++ b/src/dialogs/dialogs.pri @@ -22,7 +22,9 @@ HEADERS += \ src/dialogs/dialogcutspline.h \ src/dialogs/dialogcutsplinepath.h \ src/dialogs/dialoguniondetails.h \ - src/dialogs/dialogcutarc.h + src/dialogs/dialogcutarc.h \ + src/dialogs/configdialog.h \ + src/dialogs/pages.h SOURCES += \ src/dialogs/dialogtriangle.cpp \ @@ -47,7 +49,9 @@ SOURCES += \ src/dialogs/dialogcutspline.cpp \ src/dialogs/dialogcutsplinepath.cpp \ src/dialogs/dialoguniondetails.cpp \ - src/dialogs/dialogcutarc.cpp + src/dialogs/dialogcutarc.cpp \ + src/dialogs/configdialog.cpp \ + src/dialogs/pages.cpp FORMS += \ src/dialogs/dialogtriangle.ui \ diff --git a/src/dialogs/pages.cpp b/src/dialogs/pages.cpp new file mode 100644 index 000000000..92fb7f6d4 --- /dev/null +++ b/src/dialogs/pages.cpp @@ -0,0 +1,295 @@ +/************************************************************************ + ** + ** @file pages.cpp + ** @author Roman Telezhinsky + ** @date 12 2, 2014 + ** + ** @brief + ** @copyright + ** This source code is part of the Valentine project, a pattern making + ** program, whose allow create and modeling patterns of clothing. + ** Copyright (C) 2013 Valentina project + ** All Rights Reserved. + ** + ** Valentina is free software: you can redistribute it and/or modify + ** it under the terms of the GNU General Public License as published by + ** the Free Software Foundation, either version 3 of the License, or + ** (at your option) any later version. + ** + ** Valentina is distributed in the hope that it will be useful, + ** but WITHOUT ANY WARRANTY; without even the implied warranty of + ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + ** GNU General Public License for more details. + ** + ** You should have received a copy of the GNU General Public License + ** along with Valentina. If not, see . + ** + *************************************************************************/ + +#include "pages.h" +#include //for user name + +ConfigurationPage::ConfigurationPage(QWidget *parent): + QWidget(parent), autoSaveCheck(0), autoTime(0), langCombo(0), osOptionCheck(0), langChanged(false) +{ + QGroupBox *saveGroup = SaveGroup(); + QGroupBox *langGroup = LangGroup(); + + QVBoxLayout *mainLayout = new QVBoxLayout; + mainLayout->addWidget(saveGroup); + mainLayout->addWidget(langGroup); + mainLayout->addStretch(1); + setLayout(mainLayout); +} + +void ConfigurationPage::Apply() +{ + QSettings settings(QSettings::IniFormat, QSettings::UserScope, QApplication::organizationName(), + QApplication::applicationName()); + settings.setValue("configuration/autosave/state", autoSaveCheck->isChecked()); + settings.setValue("configuration/autosave/time", autoTime->value()); + //settings.setValue("configuration/osSeparator", osOptionCheck->isChecked()); + if (langChanged) + { + QString locale = qvariant_cast(langCombo->itemData(langCombo->currentIndex())); + settings.setValue("configuration/locale", locale); + langChanged = false; + QString text = QString(tr("Setup user interface language updated and will be used the next time start") + " " + + QApplication::applicationName()); + QMessageBox::information(this, QApplication::applicationName(), text); + } +} + +void ConfigurationPage::LangChenged() +{ + langChanged = true; +} + +QGroupBox *ConfigurationPage::SaveGroup() +{ + QSettings settings(QSettings::IniFormat, QSettings::UserScope, QApplication::organizationName(), + QApplication::applicationName()); + + QGroupBox *saveGroup = new QGroupBox(tr("Save")); + Q_CHECK_PTR(saveGroup); + + autoSaveCheck = new QCheckBox(tr("Auto-save modified pattern")); + Q_CHECK_PTR(autoSaveCheck); + bool autoSaveValue = settings.value("configuration/autosave/state", 1).toBool(); + autoSaveCheck->setChecked(autoSaveValue); + + QLabel *intervalLabel = new QLabel(tr("Interval:")); + Q_CHECK_PTR(intervalLabel); + + autoTime = new QSpinBox(); + Q_CHECK_PTR(autoTime); + bool ok = true; + qint32 autoTimeValue = settings.value("configuration/autosave/time", 5).toInt(&ok); + if (ok == false) + { + autoTimeValue = 5; + } + autoTime->setValue(autoTimeValue); + autoTime->setSuffix(tr("min")); + + QHBoxLayout *autosaveLayout = new QHBoxLayout; + Q_CHECK_PTR(autosaveLayout); + autosaveLayout->addWidget(autoSaveCheck); + autosaveLayout->addWidget(intervalLabel); + autosaveLayout->addWidget(autoTime); + + QVBoxLayout *saveLayout = new QVBoxLayout; + Q_CHECK_PTR(saveLayout); + saveLayout->addLayout(autosaveLayout); + saveGroup->setLayout(saveLayout); + return saveGroup; +} + +QGroupBox *ConfigurationPage::LangGroup() +{ + QSettings settings(QSettings::IniFormat, QSettings::UserScope, QApplication::organizationName(), + QApplication::applicationName()); + + QGroupBox *langGroup = new QGroupBox(tr("Language")); + Q_CHECK_PTR(langGroup); + + QLabel *guiLabel = new QLabel(tr("GUI language")); + Q_CHECK_PTR(guiLabel); + + langCombo = new QComboBox; + Q_CHECK_PTR(langCombo); + + // format systems language + QString defaultLocale = QLocale::system().name(); // e.g. "de_DE" + defaultLocale.truncate(defaultLocale.lastIndexOf('_')); // e.g. "de" + QString checkedLocale = settings.value("configuration/locale", defaultLocale).toString(); + + QString m_langPath = QApplication::applicationDirPath(); + m_langPath.append("/translations"); + QDir dir(m_langPath); + QStringList fileNames = dir.entryList(QStringList("valentina_*.qm")); + + for (int i = 0; i < fileNames.size(); ++i) + { + // get locale extracted by filename + QString locale; + locale = fileNames[i]; // "valentina_de.qm" + locale.truncate(locale.lastIndexOf('.')); // "valentina_de" + locale.remove(0, locale.indexOf('_') + 1); // "de" + + QString lang = QLocale(locale).nativeLanguageName(); + QIcon ico(QString("%1/%2.png").arg("://icon/flags").arg(locale)); + + langCombo->addItem(ico, lang, locale); + } + // set default translators and language checked + qint32 index = langCombo->findData(checkedLocale); + if (index != -1) + { + langCombo->setCurrentIndex(index); + } + connect(langCombo, static_cast(&QComboBox::currentIndexChanged), this, + &ConfigurationPage::LangChenged); + + QHBoxLayout *guiLangLayout = new QHBoxLayout; + Q_CHECK_PTR(guiLangLayout); + guiLangLayout->addWidget(guiLabel); + guiLangLayout->addWidget(langCombo); + + QLabel *separatorLabel = new QLabel(tr("Decimal separator parts")); + Q_CHECK_PTR(separatorLabel); + + osOptionCheck = new QCheckBox(tr("With OS options (.)")); + Q_CHECK_PTR(osOptionCheck); + //bool osOptionValue = settings.value("configuration/osSeparator", 1).toBool(); + //osOptionCheck->setChecked(osOptionValue); + osOptionCheck->setEnabled(false); + + QHBoxLayout *separatorLayout = new QHBoxLayout; + Q_CHECK_PTR(separatorLayout); + separatorLayout->addWidget(separatorLabel); + separatorLayout->addWidget(osOptionCheck); + + QVBoxLayout *langLayout = new QVBoxLayout; + Q_CHECK_PTR(langLayout); + langLayout->addLayout(guiLangLayout); + langLayout->addLayout(separatorLayout); + langGroup->setLayout(langLayout); + return langGroup; +} + + +PatternPage::PatternPage(QWidget *parent): + QWidget(parent), userName(0), graphOutputCheck(0), undoneCount(0) +{ + QGroupBox *userGroup = UserGroup(); + QGroupBox *graphOutputGroup = GraphOutputGroup(); + QGroupBox *undoneGroup = UndoneGroup(); + + QVBoxLayout *mainLayout = new QVBoxLayout; + mainLayout->addWidget(userGroup); + mainLayout->addWidget(graphOutputGroup); + mainLayout->addWidget(undoneGroup); + mainLayout->addStretch(1); + setLayout(mainLayout); +} + +void PatternPage::Apply() +{ + QSettings settings(QSettings::IniFormat, QSettings::UserScope, QApplication::organizationName(), + QApplication::applicationName()); + settings.setValue("pattern/user", userName->text()); + //settings.setValue("pattern/graphicalOutput", graphOutputCheck->isChecked()); + settings.setValue("pattern/undone", undoneCount->value()); +} + +QGroupBox *PatternPage::UserGroup() +{ + QSettings settings(QSettings::IniFormat, QSettings::UserScope, QApplication::organizationName(), + QApplication::applicationName()); + + QGroupBox *userGroup = new QGroupBox(tr("User")); + Q_CHECK_PTR(userGroup); + + QLabel *nameLabel = new QLabel(tr("User name")); + Q_CHECK_PTR(nameLabel); + + userName = new QLineEdit; + Q_CHECK_PTR(userName); +#ifdef Q_OS_WIN32 + QString user = settings.value("pattern/user", getenv("USERNAME")).toString(&ok); +#else + QString user = settings.value("pattern/user", getenv("USER")).toString(); +#endif + userName->setText(user); + + QHBoxLayout *nameLayout = new QHBoxLayout; + Q_CHECK_PTR(nameLayout); + nameLayout->addWidget(nameLabel); + nameLayout->addWidget(userName); + + QVBoxLayout *userLayout = new QVBoxLayout; + Q_CHECK_PTR(userLayout); + userLayout->addLayout(nameLayout); + userGroup->setLayout(userLayout); + return userGroup; +} + +QGroupBox *PatternPage::GraphOutputGroup() +{ +// QSettings settings(QSettings::IniFormat, QSettings::UserScope, QApplication::organizationName(), +// QApplication::applicationName()); + + QGroupBox *graphOutputGroup = new QGroupBox(tr("Graphical output")); + Q_CHECK_PTR(graphOutputGroup); + + graphOutputCheck = new QCheckBox(tr("Use antialiasing")); + Q_CHECK_PTR(graphOutputCheck); + //bool graphOutputValue = settings.value("pattern/graphicalOutput", 1).toBool(); + //graphOutputCheck->setChecked(graphOutputValue); + graphOutputCheck->setEnabled(false); + + QHBoxLayout *graphLayout = new QHBoxLayout; + Q_CHECK_PTR(graphLayout); + graphLayout->addWidget(graphOutputCheck); + + QVBoxLayout *graphOutputLayout = new QVBoxLayout; + Q_CHECK_PTR(graphOutputLayout); + graphOutputLayout->addLayout(graphLayout); + graphOutputGroup->setLayout(graphOutputLayout); + return graphOutputGroup; +} + +QGroupBox *PatternPage::UndoneGroup() +{ + // QSettings settings(QSettings::IniFormat, QSettings::UserScope, QApplication::organizationName(), + // QApplication::applicationName()); + + QGroupBox *undoneGroup = new QGroupBox(tr("Undone")); + Q_CHECK_PTR(undoneGroup); + + QLabel *undoneLabel = new QLabel(tr("Count steps")); + Q_CHECK_PTR(undoneLabel); + + undoneCount = new QSpinBox; + Q_CHECK_PTR(undoneCount); +// bool ok = true; +// qint32 count = settings.value("pattern/undone", 100).toInt(&ok); +// if (ok == false) +// { +// count = 100; +// } +// undoneCount->setValue(count); + undoneCount->setEnabled(false); + + QHBoxLayout *countLayout = new QHBoxLayout; + Q_CHECK_PTR(countLayout); + countLayout->addWidget(undoneLabel); + countLayout->addWidget(undoneCount); + + QVBoxLayout *undoneLayout = new QVBoxLayout; + Q_CHECK_PTR(undoneLayout); + undoneLayout->addLayout(countLayout); + undoneGroup->setLayout(undoneLayout); + return undoneGroup; +} diff --git a/src/dialogs/pages.h b/src/dialogs/pages.h new file mode 100644 index 000000000..3c28df093 --- /dev/null +++ b/src/dialogs/pages.h @@ -0,0 +1,68 @@ +/************************************************************************ + ** + ** @file pages.h + ** @author Roman Telezhinsky + ** @date 12 2, 2014 + ** + ** @brief + ** @copyright + ** This source code is part of the Valentine project, a pattern making + ** program, whose allow create and modeling patterns of clothing. + ** Copyright (C) 2013 Valentina project + ** All Rights Reserved. + ** + ** Valentina is free software: you can redistribute it and/or modify + ** it under the terms of the GNU General Public License as published by + ** the Free Software Foundation, either version 3 of the License, or + ** (at your option) any later version. + ** + ** Valentina is distributed in the hope that it will be useful, + ** but WITHOUT ANY WARRANTY; without even the implied warranty of + ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + ** GNU General Public License for more details. + ** + ** You should have received a copy of the GNU General Public License + ** along with Valentina. If not, see . + ** + *************************************************************************/ + +#ifndef PAGES_H +#define PAGES_H + +#include + +class ConfigurationPage : public QWidget +{ + Q_OBJECT +public: + ConfigurationPage(QWidget *parent = 0); + void Apply(); +public slots: + void LangChenged(); +private: + Q_DISABLE_COPY(ConfigurationPage) + QCheckBox *autoSaveCheck; + QSpinBox *autoTime; + QComboBox *langCombo; + QCheckBox *osOptionCheck; + bool langChanged; + QGroupBox *SaveGroup(); + QGroupBox *LangGroup(); +}; + +class PatternPage : public QWidget +{ +public: + PatternPage(QWidget *parent = 0); + void Apply(); +private: + Q_DISABLE_COPY(PatternPage) + QLineEdit *userName; + QCheckBox *graphOutputCheck; + QSpinBox *undoneCount; + QGroupBox *UserGroup(); + QGroupBox *GraphOutputGroup(); + QGroupBox *UndoneGroup(); +}; + +#endif // PAGES_H diff --git a/src/main.cpp b/src/main.cpp index 84cf80822..6cb211d25 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -67,28 +67,33 @@ int main(int argc, char *argv[]) qInstallMessageHandler(myMessageOutput); VApplication app(argc, argv); - - QTranslator qtTranslator; - qtTranslator.load("qt_" + QLocale::system().name(), QLibraryInfo::location(QLibraryInfo::TranslationsPath)); - app.installTranslator(&qtTranslator); - - QTranslator appTranslator; -#ifdef Q_OS_WIN32 - appTranslator.load("valentina_" + QLocale::system().name(), "."); -#else - #ifdef QT_DEBUG - appTranslator.load("valentina_" + QLocale::system().name(), "."); - #else - appTranslator.load("valentina_" + QLocale::system().name(), "/usr/share/valentina/translations"); - #endif -#endif - app.installTranslator(&appTranslator); - app.setApplicationDisplayName("Valentina"); app.setApplicationName("Valentina"); app.setOrganizationName("ValentinaTeam"); app.setOrganizationDomain("valentinaproject.bitbucket.org"); + QSettings settings(QSettings::IniFormat, QSettings::UserScope, QApplication::organizationName(), + QApplication::applicationName()); + QString defaultLocale = QLocale::system().name(); // e.g. "de_DE" + defaultLocale.truncate(defaultLocale.lastIndexOf('_')); // e.g. "de" + QString checkedLocale = settings.value("configuration/locale", defaultLocale).toString(); + + QTranslator qtTranslator; + qtTranslator.load("qt_" + checkedLocale, QLibraryInfo::location(QLibraryInfo::TranslationsPath)); + app.installTranslator(&qtTranslator); + + QTranslator appTranslator; +#ifdef Q_OS_WIN32 + appTranslator.load("valentina_" + checkedLocale, "./translations"); +#else + #ifdef QT_DEBUG + appTranslator.load("valentina_" + checkedLocale, "./translations"); + #else + appTranslator.load("valentina_" + checkedLocale, "/usr/share/valentina/translations"); + #endif +#endif + app.installTranslator(&appTranslator); + MainWindow w; w.setWindowState(w.windowState() ^ Qt::WindowMaximized); app.setWindowIcon(QIcon(":/icon/64x64/icon64x64.png")); diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index e2fcd4b09..764c93072 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -79,7 +79,8 @@ MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent), ui(new Ui::MainWindow), pattern(0), doc(0), tool(Tool::ArrowTool), currentScene(0), sceneDraw(0), sceneDetails(0), mouseCoordinate(0), helpLabel(0), view(0), isInitialized(false), dialogTable(0), dialogTool(0), dialogHistory(0), comboBoxDraws(0), curFile(QString()), mode(Draw::Calculation), - currentDrawIndex(0), currentToolBoxIndex(0), drawMode(true), recentFileActs{0,0,0,0,0}, separatorAct(0) + currentDrawIndex(0), currentToolBoxIndex(0), drawMode(true), recentFileActs{0,0,0,0,0}, separatorAct(0), + autoSaveTimer(0) { CreateActions(); CreateMenus(); @@ -131,11 +132,7 @@ MainWindow::MainWindow(QWidget *parent) doc->CreateEmptyFile(); connect(doc, &VDomDocument::patternChanged, this, &MainWindow::PatternWasModified); - //Autosaving file each 5 minutes - QTimer *timer = new QTimer(this); - timer->setTimerType(Qt::VeryCoarseTimer); - connect(timer, &QTimer::timeout, this, &MainWindow::AutoSavePattern); - timer->start(300000); + InitAutoSave(); ui->toolBox->setCurrentIndex(0); @@ -513,11 +510,13 @@ void MainWindow::ClosedDialogCutArc(int result) void MainWindow::About() { + QDate date = QLocale(QLocale::C).toDate(QString(__DATE__).simplified(), QLatin1String("MMM d yyyy")); + QString fullName = QString("Valentina %1").arg(APP_VERSION); QString qtBase(tr("Based on Qt %2 (32 bit)").arg(QT_VERSION_STR)); - QString buildOn(tr("Built on %3 at %4").arg(__DATE__).arg(__TIME__)); - QString about = QString(tr("

%1

%2

%3

%4")).arg(fullName).arg(qtBase).arg( - buildOn).arg(WARRANTY); + QString buildOn(tr("Built on %3 at %4").arg(date.toString()).arg(__TIME__)); + QString about = QString(tr("

%1

%2

%3

%4")).arg(fullName).arg(qtBase).arg(buildOn) + .arg(WARRANTY); QMessageBox::about(this, tr("About Valentina"), about); } @@ -969,6 +968,15 @@ void MainWindow::Open() } } +void MainWindow::Options() +{ + ConfigDialog dlg(this); + if (dlg.exec() == QDialog::Accepted) + { + InitAutoSave(); + } +} + void MainWindow::Clear() { setCurrentFile(""); @@ -1393,6 +1401,7 @@ void MainWindow::CreateActions() connect(ui->actionAbout_Qt, &QAction::triggered, this, &MainWindow::AboutQt); connect(ui->actionAbout_Valentina, &QAction::triggered, this, &MainWindow::About); connect(ui->actionExit, &QAction::triggered, this, &MainWindow::close); + connect(ui->actionOptions, &QAction::triggered, this, &MainWindow::Options); //Actions for recent files loaded by a main window application. for (int i = 0; i < MaxRecentFiles; ++i) @@ -1404,6 +1413,32 @@ void MainWindow::CreateActions() } } +void MainWindow::InitAutoSave() +{ + //Autosaving file each 5 minutes + delete autoSaveTimer; + autoSaveTimer = 0; + + QSettings settings(QSettings::IniFormat, QSettings::UserScope, QApplication::organizationName(), + QApplication::applicationName()); + bool autoSave = settings.value("configuration/autosave/state", 1).toBool(); + if (autoSave) + { + bool ok = true; + qint32 autoTime = settings.value("configuration/autosave/time", 5).toInt(&ok); + if (ok == false) + { + autoTime = 5; + } + + autoSaveTimer = new QTimer(this); + Q_CHECK_PTR(autoSaveTimer); + autoSaveTimer->setTimerType(Qt::VeryCoarseTimer); + connect(autoSaveTimer, &QTimer::timeout, this, &MainWindow::AutoSavePattern); + autoSaveTimer->start(autoTime*60000); + } +} + MainWindow::~MainWindow() { CancelTool(); diff --git a/src/mainwindow.h b/src/mainwindow.h index a98ad4366..c37f23667 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -100,6 +100,10 @@ public slots: * @brief Open ask user select pattern file. */ void Open(); + /** + * @brief Options config dialog. + */ + void Options(); /** * @brief NewPattern create new empty pattern. */ @@ -460,6 +464,7 @@ private: enum { MaxRecentFiles = 5 }; QAction *recentFileActs[MaxRecentFiles]; QAction *separatorAct; + QTimer *autoSaveTimer; /** * @brief ToolBarOption enable option toolbar. */ @@ -564,6 +569,7 @@ private: void UpdateRecentFileActions(); void CreateMenus(); void CreateActions(); + void InitAutoSave(); }; #endif // MAINWINDOW_H diff --git a/src/mainwindow.ui b/src/mainwindow.ui index 214dbddf7..5d5d63a7d 100644 --- a/src/mainwindow.ui +++ b/src/mainwindow.ui @@ -47,7 +47,7 @@ 0 0 - 150 + 144 150 @@ -302,7 +302,7 @@ 0 0 - 150 + 100 58 @@ -378,7 +378,7 @@ 0 0 - 150 + 100 104 @@ -579,7 +579,7 @@ 0 0 - 150 + 100 58 @@ -694,6 +694,8 @@ + + @@ -986,6 +988,11 @@ Ctrl+Q + + + Options... + +