From b0cd8d6506ded5cdcc92d8ce3221487836ca3f2c Mon Sep 17 00:00:00 2001 From: Nyall Dawson Date: Tue, 17 Nov 2020 13:23:29 +1000 Subject: [PATCH] Add arrow symbol layer test (cherry picked from commit 07d3a82f2bd298326d3904ca9582df0dc2baa4c4) --- tests/src/python/test_qgsarrowsymbollayer.py | 47 +++++++++++++++++- .../expected_arrow_opacityddcolor.png | Bin 0 -> 641520 bytes 2 files changed, 45 insertions(+), 2 deletions(-) create mode 100644 tests/testdata/control_images/symbol_arrow/expected_arrow_opacityddcolor/expected_arrow_opacityddcolor.png diff --git a/tests/src/python/test_qgsarrowsymbollayer.py b/tests/src/python/test_qgsarrowsymbollayer.py index 555eace83801..4fb598f60cc0 100644 --- a/tests/src/python/test_qgsarrowsymbollayer.py +++ b/tests/src/python/test_qgsarrowsymbollayer.py @@ -25,7 +25,7 @@ import os -from qgis.PyQt.QtCore import QSize +from qgis.PyQt.QtCore import QSize, QDir from qgis.PyQt.QtGui import QColor from qgis.core import ( @@ -38,7 +38,8 @@ QgsArrowSymbolLayer, QgsMultiRenderChecker, QgsProperty, - QgsSymbolLayer + QgsSymbolLayer, + QgsMapSettings ) from qgis.testing import start_app, unittest @@ -54,6 +55,8 @@ class TestQgsArrowSymbolLayer(unittest.TestCase): def setUp(self): + self.report = "

Python QgsArrowSymbolLayer Tests

\n" + self.iface = get_iface() lines_shp = os.path.join(TEST_DATA_DIR, 'lines.shp') @@ -72,6 +75,9 @@ def setUp(self): def tearDown(self): QgsProject.instance().removeAllMapLayers() + report_file_path = "%s/qgistest.html" % QDir.tempPath() + with open(report_file_path, 'a') as report_file: + report_file.write(self.report) def test_1(self): sym = self.lines_layer.renderer().symbol() @@ -160,6 +166,43 @@ def testColors(self): self.assertEqual(sym_layer.subSymbol().color(), QColor(250, 150, 200)) self.assertEqual(sym_layer.color(), QColor(250, 150, 200)) + def testOpacityWithDataDefinedColor(self): + line_shp = os.path.join(TEST_DATA_DIR, 'lines.shp') + line_layer = QgsVectorLayer(line_shp, 'Lines', 'ogr') + self.assertTrue(line_layer.isValid()) + + sym = QgsLineSymbol() + sym_layer = QgsArrowSymbolLayer.create({'arrow_width': '7', 'head_length': '6', 'head_thickness': '8', 'head_type': '0', 'arrow_type': '0', 'is_repeated': '0', 'is_curved': '0'}) + fill_sym = QgsFillSymbol.createSimple({'color': '#8bcfff', 'outline_color': '#000000', 'outline_style': 'solid', 'outline_width': '1'}) + fill_sym.symbolLayer(0).setDataDefinedProperty(QgsSymbolLayer.PropertyFillColor, QgsProperty.fromExpression( + "if(Name='Arterial', 'red', 'green')")) + fill_sym.symbolLayer(0).setDataDefinedProperty(QgsSymbolLayer.PropertyStrokeColor, QgsProperty.fromExpression( + "if(Name='Arterial', 'magenta', 'blue')")) + + sym_layer.setSubSymbol(fill_sym) + sym.changeSymbolLayer(0, sym_layer) + + # set opacity on both the symbol and subsymbol, to test that they get combined + fill_sym.setOpacity(0.5) + sym.setOpacity(0.5) + + line_layer.setRenderer(QgsSingleSymbolRenderer(sym)) + + ms = QgsMapSettings() + ms.setOutputSize(QSize(400, 400)) + ms.setOutputDpi(96) + ms.setExtent(QgsRectangle(-118.5, 19.0, -81.4, 50.4)) + ms.setLayers([line_layer]) + + # Test rendering + renderchecker = QgsMultiRenderChecker() + renderchecker.setMapSettings(ms) + renderchecker.setControlPathPrefix('symbol_arrow') + renderchecker.setControlName('expected_arrow_opacityddcolor') + res = renderchecker.runTest('expected_arrow_opacityddcolor') + self.report += renderchecker.report() + self.assertTrue(res) + if __name__ == '__main__': unittest.main() diff --git a/tests/testdata/control_images/symbol_arrow/expected_arrow_opacityddcolor/expected_arrow_opacityddcolor.png b/tests/testdata/control_images/symbol_arrow/expected_arrow_opacityddcolor/expected_arrow_opacityddcolor.png new file mode 100644 index 0000000000000000000000000000000000000000..784c9fcffb1fc95431b6ac559f4516fe6633a119 GIT binary patch literal 641520 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☆O)>a1$1b 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 N6@nTO$`)85zxogV;=kzR0+@5YOaIWdMTJtw z1fhSosE{qU8jCO z8Udz9dXddTJ~%d_s=~F}KyZCp>9#_$<#V&SS|QV-xVZIMtHHh_Wi$oj?>qbCLz5B8 zNh>K)x-&u-anzTrL{Kqro0^mNAFtrGavyHL>c0+8SNRZ_P zMxk`|BVW|{lZk^_Tuct)xW^3Boo{}Mbl@9fjnFzc_uXSlD00RJnq zQV{J97ABv5{>5i&(I~Vv$xpxlL=z56Mzt9nS+y{y*M(!(qH%K`jKVol|5cxh9&h~! znCLoABN9M_1V6MAW*f6a*VQap|Gj+g3~)cQ&)Z0+V%0F(s3KjfjyeMmdPO8?nk*qO zOYOm|Ao{sjspx7pkrVvJ$_Xx^(L1O&_I?Hv;Vbe$y?4fQFQD&?q+*;ohtJ>PTCIaL z(eq$YvK9rxlXn6mHM>}3jwsJotgA2o_$z~!U4<;3;9wUFr zEHcn6S@M)~mh-%C+mOGVe^erQ6p^rvp&LzO*nDJJlUTM{WFBx9bqb^u=0Ki!^{p`r z+zphygZqglNgTZ_7MTZ}{FXrwm^vUMB(3o>WPJ(*=@Jyq0w}9iAml*cgVP8{OzvL; ziR2Y@BvQHG2qdh;3W)?~FIy*qJywXOXl>L(MJpux3`zu46f9@2CU=Y%gi3_It!0U6 zn}}i(Dif0jjDdaU+b_W;dv5Z8NlAYAk4X&-b7@W^fq@YEt30);sf6rY6WdiSP}ZhE z$VNSHd-M<*2vt1r+$IP&27<;Ehw{5ng1KKx^Y3 zt}-f0EhbgcVmw3z^N|^c;;*4Zko&s~`44~lul{o)R*wK@|E7f^BJP_|O%`NOIs{rP$o2JtyP2^UmaJCeC`pFvf-TWh6afbTc3WfjD4!=N z0rY=vAZ}KfadxT}iG%9qzH%bVlJ*vq2rG>XXp6`JH-;9ghW}^CI<2j{wxS%FZ~=**!{v}tqP=$A1ViM6B7YR zm9OMm9RI)&h{UxLV z(M|z|RpJH}F#p&m+|+)6q>I$SjC&LjW9i6}9=G)>5L}%T2O%#rWtnjh`Z*~qWNh0` zLGm##SSg!h=s(+y0P;K}iaCa1Uqmc~fpxYgoK+kvq*Twq3IY9eUagQ>v0UbMo#rD* z@n^CPx#CIT&F)oHB&!sY0{jdqz=&Zm2=344kgfGIC^M!2w@h4woGHiu07cm*?vXVm z@C?u|A?}g-+kfKsM0#@pdf-^QGO0OrA`|ey_ni3*9|$sU5KY7Q>31ezMIR!~!)dY} zW;nENvV{mZEe@HbMKOW(8Lz`wB!^7rM5{xmUPLXD8PQzsW~TWFtP;|TH^9qenvbA6 z9oboxay3s$+C4tzLx=$h%kU&1O$qprm=Giaqm-@P`#42pp)3$e8;5b~=x z1GrJN5O9+i@LnXHW?ZR8joMB7F`H7;^sq!;wTdF(AP|Cq%oc}!PZ)nl1&6D( zR+`=28a-fk77{qrB5@$z*w_B%BiW}P8aH?VEUgT*({;2;F)6_4#+Uw(DZn)-j=E78 z38ny}g(69?tQbhuqzI2Zw*`9e*RDW#p-yjH!@`Kq%PjDr^2k2VTQ>oD*lgBLO-?ER zlKV4-PDK%L5MZqc<(3cLV(GM&PWNxO6_T%NTx2@*R=;)&a|P3U1ev3Bfp?mZfZZZ? z3MGP?wp9zWtMZSmwuw!6Q@l(8M%zShxnyD>WOf`WccntT`yw3$Qj0n}s!bE--1KS}=eyyv0YZ$1KXrh6j?GJ=@MJZ%k~D|M`pVl90e z7s)x_>g%QBY(6q$lEu8&$+n3ZwoOFfovtnN%;)gO zbl_FWMpz(D9EAQx3R8PmA*2{Epd&WI-0S%3Z;^jpH{|}bMi$+rWfj+?$5<=^paz#H zxYOJ&uY`OFla*D@%>I0;6|&g-vx>d3;5hZMRXfI(tEPihFl5~AtY%+y^O1?K2?kJQ zr;3`kvPs=_5{3qCkFv=@i|1ap5elSH1AQp2;@&jb3Ao}2P(Km4cv^vGO*xp6Q% zs3U)xX>>FVSsj{$d&^rX8Hxe69V79+%Kb*bX>quSz&eq9&muvKyOLTYoBfbs;Lbc} zt3p<@d!bN1G-R!&`3Q&_mq8i7*??GQw-L&Or{cJ@ZW(-MpYcr#JZT29VA8B1^MQdX z`WFM4lp#N(RT8;az29@%YtZ$Vhd>w=%pMe;1-)Q&b^B1Qjuwa2*?&5;NTLT;c2-{N zMV5Et7QJT-17!NmKZFwL^c}IN;@Nk^115v}Cd&;xOo1lpPB>84!!ZorX^A51A#{aw zE!-2w$7gt~;P2yShtrC&4VHSCb-G^%EH_CMSZ-d;esF@$E0!1FTMWVy315bgx_4@V zR3u_cytLRe4Ndg@dq$?Xi+6KX)R+mW;8X9|kZM=5V+c8!UL77bY8{ zK-eviO2BDC#VcG^6PQWSBTtRDhM392r^wWTn+@cvtYB5Se+aNXB!!+1MuDKFgDk#@ z6DW`we~qkukD*2+dxlIO>~A;x#8j<^?HZ~3hwye?ap8oVT1db_@=YG&L-hQO@mkOl zVT_d(;`c!|MuG5VRM5XVbnU|+{YPLJfRd8wXZYiLSBvlQ%DV#om!9Pa7FpkSt;=QH z2e#|Hnq}Be*Y?(axIHN_?N_W~j)`M4-mJ6Vv02TZ^%4C>D@(Ap)D%*ho z`wmf|?0gLdgQJId?=cOfn6*VJ_kO~|?YOEb&hpdGzxZsUGz#qvMy&D=2V4b5byyA5 zFs6XRe(ijAzT*#&?`>^lwy~^@&bDUz_tqc2ZxYgwVz{dQh5|ZGzWIJz_PzqK+WxV$@Q_3<-k}mP zY6!2$Q*u{jvlPfEl%ZUx?kAt1O}^%+!&=`ha$n<*rfX~_0#qI`_+7J?ZV996Fkihk zOpLK3q*%=;#uPz>J$oLMT=h0MqNd11HX!hRk;v>+zRvYV5nZPuDOS_cXrgKiyxwIkNOIuWnpZX-x$ZO{ z*)`F2!yA7d7N=p++Ajv4oJEQ%kVT@Y`?~W81kv9n018*1CnSDvSn5@eR8c50k2qEc z_n`z@^B}qYZOI#NI#_`{wiZhwMe7-S;~?Netw8t+U*0iM1#-u3=wdGC@Zb4wFq_g` zfbnQ1>=uX70DN1JdHCR+qd68yp_-CLt7a^ciqc3s@NCs9vxI1skcOikiCet!P9qXn zCR6z27kAwV2P{KWnJfcU-RGS~AdXZ$mYS19%W83m)|hj$@6jS*aGjEO8jHMH(y#tb z-<{34IPy4AiPR%j^N}2QQJAt7Otblj)v|Rn&UC)BPz5p{e!BHNM1X}N1urM7l4~*6E`$wRV+%B%fh>6A--7aYoplQf zf>jmBf`HWB+%E(=Z4Ldq=E4`@#&V-8m0BTp>p5ceG}C>_1~i*%u>0=Zkyt6t5D5C|cK(}$pGz#BzyJz!cI)Ba+5)=k<$C>b<=U z%RTGclEk=&T|2rCg@Il$j*vOvw_0E?EDRHdgCJ6aDDrp zjL~PDeF_>Ua>pYxBM&7~i^j!`rX#-6e04^nkGh<1Re>xASKaG9K_Cv71SN`wB9ui0 z*0~>Y!n+X{Db`ZbY}cfiL3UP=->BRL1jq$QX}jD~-UEdvWZ7;ka}fNq$V@O*AP%bf zstC-00Gq6PkVzHrf_RZ_4fAMgxPTURjup~I05n(DSjY^wW}`O=rmfR+H5(Fp_u71D zd1oi<9Cfke=wgpv3hBoeDXKsgiKg!B-XVYqq{K0SbRnwlG*>Ty1AZ3y&+32U!LVEa zwMb?`bn~}iH@oDwR@{v3Qr-1BYDj8G0bU%luLm?dGbP_lqYU#~^N&N`?y(CjRO!`A+T=VIp@m$+de1XEY26Uiavw}mcN zrMWJNE-GKaClOGn?0l1u!x9!MZlyz6eg&$?IE1 zU=tAVgGVofD&%rL0Jl~|s3!Ve|& z)+G;6u%@zI2m~`oyf|Zf)~3YXyfjv7@u-9WzB$>2;FfzUUML`+`SWxaw1UL37K=h* zB%~gVN{i`&wlw{1sU%S)&p%`kvfy!1q6%bDNa}v>H3BhIA78yfUtDlzWy;910S{8E zQ4%VEc_oG-!y*b6jTI6+kOFE?swD*RLHMe&9SC?3-sr?V-Z^oPIvP}sZbrpmxDQr_ zqcr&0k(SSA6hT zgoFRQ!nV2{E2LssA&iA=kQEa7uYZ6U?@DPhIPY6fomk+k3rGuB4JQXnLIT!pOYFsrx}J%%E%UIZ9e z&tAGrt%y-3$kJMbGT~KmKZUEHS|sbe#WNi}2KS>sj~Ga`Ya4!Pi zj>W-ZLq`}4w-kn@G+31A2z!#Se>+`OwHTJ(8Y<2z%YXg!^DjPAEwX%^^$7O_fgn0} z`SHt^GFu#mq*f_Q4be`2q%k)FG)to3g=cUi53?kR;K+uVC39cnUEDz+ix~j42m>Ke z69^$$R@s;#!At-Vaj)@Ny%!O;O^rqf=@WKDyp5_;a>!G2(Bxo;t96SikagbyJ^r0S zAc5%m)oVuAccs>NYohCmP#^@!F+~bU(Tar*5gb8|rUpkg_W5xmE06vwO7!fFcxqPR zhd<{xIk%k?hk~GAsuqjGyD908ckn1o{ym`{LCp zqw70}uD>(vi^)f2)9SE)-Dy7?D}*Up$n(vkblq4XOwsyy{>c5b=c4P6K>)X8?@JVb zAovl;q{N>?PL?e!88;Deu&mV)5wAyLJrQxXJFK9_h)Tmm#Mj}Ua!z*4t16H&0O{9? zz%&Sefz`A%ETlY8B1tJ$(^C5X+dH=y*|M^Zue#r>y8HCGIWq{vNr)yAoDdYEFlI=c z2OwtVJOPOh#xW)$@CYY9aKbZ?@CNY(qi|yM#h@|4_@ZJWL{VW965w!V=3MC0*Sd7w z{l2wpS9jOxOI7vWRcqJ&t&{HRuFKkM{nk$Z&$qtyec!G`d~F01c3inGfg*B5YixyV zV};DJJ}2J$>)-momltprp!7(ORwYbI93kb0Z&-(gZcS;1#YvC228bL=l`4CrN(5wZ z`NW+krX1!kh)I}q={uGLYLbbuzMT*;*|1`w=W~M+6D*Qw+)`S$P*WA;;A47Kvgzno$%-&zK?LAc3OnTc;(mD{smsosxhKIlkGGEsXTE(PS6Q z=~RoPB|#%c$2>3SftSN3(37>;dxu;lal>9}m=I@pRYXJ2-KsNuMb;{!x)=8H(?0~} zC!hytG;Cd4DdXjXuRl2o8}?qA|GRI6Xi8r_ou!QgTJ!S^>ywS^UV)J9=LhD|3q$kd zU1FKuTpjUHZU{(NcMtu>n!q^wVop4xA}Gy(vM>5j)e2FeYP6q7VUe!gGL!9gnqvgC zK**u|A7XG6&*9hzFE<$9iqp3*NynUZNz$z2*y^3M6C~oJ)>4g2fs*=i0SJb0tm=C zaCiv;Jxs7ev#`2!JY}fYlC#(?vbQXS*K-kjB#RL$Liy83_2+U1Di+kiH zWkn{Hw`C1`?WDwr1RILwTOpbr7%OD%rQ(Bg5ST+iKL6XDZ@P9CV2+vd5eO`SK=qn; zQBA_AO(WKWY}O*VGI3JtElz3$$(X)QCoqSYoZb=7LI47%6R2Jp+JuV*DRGz-CrML^ zp%0FgqdWamvpws_i})7F{u6^=WHyAndkz8!$Q;o42n1#!;FmZ|CcGq!>R7h{hqH8Y z!F$tLi5EF;g-A7{ZLE+BsPXb;2_PVsCCKL?Fa?3?=E$+`Z(~VW!=M{hNYF&-?;-*S z$VG&B9RdLm(8P-w$;_HfmrN#^m+d8~X)0eqwi8x}IM<~R1y)Fqfa&Wg0`U@%k9_az z-{CC4Q#S!mES|t*#CknUi$sq4>Pap2i*yecKUc084+8NLlX$EtvvibzRyQ<~`nx2- zh6%}*s6LV5AlQ>r)*{&$oz5CrBv0^*IC@8{z_4!JxqBNGS%HOQ3eg~tmZXd2HOZAN zIZq0inmwA;k`jkOx5^DKrElGuB7L(j+gq3-K~ttbC4hi%A3$J%1gt3{*DGm0cxjCg z_OecxA{x3b&Jj!zi<@r&6F@)$21<7jIFCR{ERa-2$_%C|CY{Wf!+P3i=z7rY=!lj& zM6g1F=1YGbf#C04$OcW|L(l)~9%li9rs_a{S~*I+>*^Fakw`1xv88hoG%|9I)Z17j z0pq2+5dp-6TLA(KCg7JiENZ}r2uf3HiojjY}McBOp3)wMevSz@bL1t3}f5*r)ggftd*) zATuN50}u$7KtW3!<|GMYx@5{LeXtra3s>(&ZsOIa#P9r|c^oPz)Y zG6yt10)Ze2_=y*_Pn$PO9vfT17h3nnT=T7vW2dt&V}-O^#yt9ILb4D0SKu)&1Q3w8 ztTgjuk>$wLX-jkPS&B{l@DFbMFU9v-db*e*S++DG={p zg~vD$KtSTK%FNMu0%>u3lxjnhN@S#>Vb%0|@;~}H6E8mdzRrhdISVlMi_B<|4Eo0G zig4WfpM-hy^`vR;B}{M7F}uw-&0%lfic7ESJbDHg5COy_Adqwefy)x8Ui0$4mq!un zbxj2yQp;$($T7djMHY!}cWvEIn4kVv!aSC(t4=Fn+P%8js{hP9*#D7f_nRi4u8MO$ zVUqk+32D{b>o%NlSoh}1h#=rR0j;l|N{eHCST!lFZn&?frIJQV+J@283ejz|x>zCQ z+!Z;Ul{6c_B*BQsbnCDo7RSSc*%#ltI^T!#uhrQ#2XdmT(`$~0wO)`9O1t(BO(Z#f znjco3z^yxXZ}T69RbOT17a0PQbkS5N${IF93R_nw))bM@bv>fh=xkdj%#IWmQHMu; z$C&#+6i3JZCe8jRyiK*{>VIO+&iHl8X=iYmrS-Wl(LK=l+cRI3dV1sm?807 zb7t%?0rjryAMsLV-R!p>nZ|b37XQ!^hhenpO)*6zlJP*UrGY6s4^!gk5Q{@R?b>?% zwg|_TX^OyT1uJd&O3&_r?c6WQZwXT?+_cYM{pF!8QeuDMTPz45AhB3xCK(k1xq|$G zE)V65Y)%42N~Yau$j=%1qaBWW+P6YfMAQnYe=J+m9{Bg zYg@}@`(DXfD%Jc|TY^zf1e9u*q5Rq(J^z(i&H`NKT6{JP0*FZ%ROu4}mmr{-7&YLc zB#w%9uVEVET@Oo4beKmL$zzi=DO2xk$##`@ST~g(nDS=Fls4NYmGP{RPBUe#q?F`l zspMs_iJ{pPON16b0tiU_)|?qTPM{(s4u5e^A`UY(vnx&#O`J6l4|Y;K?qM{wNGey` zrY^a&www3uCG2z84<*%a*CdiBue z!@b8^)^J0TT5Z|?@mFLkDXg~kY}5K(bX!X+Rh?z=wD#n1 zOju*2U-t-bBFnusVMGux)lKh@aw#i$e5Ex)JelR=Rtu*rTUBR?hdSAJN7lz$;fDA~ z65cuBjNb!~aU+0$#BIfyZzKp5D#jj>)slu;`QN@~UR2-1GFyEsYkKXZDWoeVFWYOH z9di8!)`wYt?S(IJ7C`)GGzdVzNdh&A715@Sb#05VNbH49`8JRoEc*||=^>}IY9;SD z@8)yzD}O;wp%tH}SpN8|H8YJEfr@Tv$!VveY-#D%QBz_?{J4!pPesK;%PW?}Kcj`; z^$4<-V5G&H00I*4^=I}D6G)4n!7pp5QQ%tEuqkzN7u|FVt1fxylVWaE#SfzG>e~>H zMX!U4*F!*DTouLyff0e)DEnejBG$EqSx{tj$)_IFiLPl+D!FSmt*}}i>aU?e00H41 zfPljUic;1vogIn;yJFI*tSxKU3#qK(X&Bmad{>Y0YCigkM5Akb$mVlcAE&X3;&Z>V z_p2Wa>MQ_a62&`!F~^2Lzo)5tz1&r$%!Zw}=FnP56V33C^VW(t#V3N<#<}tY)aTIH^@O9f?^zv#Q95=_e%Kpy?H_SXI}&!&lV5vpd3j6L zie6EWE6*B=f`kn|V*Mi^5nC{ZyLtq)o~+j8*m-CqkkAtjttYFZp;>f~r&_PxXg!s) zDhwhAk8`Him0-ebO)>|Uy?P)c=YAO1qt9p(KtQ6oZj5>b2xvW7-KN@;8XX#Mp-t<_ zYK@Lockk3x>x-CnUxee}QQpR(tmQ}bK;#IorhTVD;5dOL3dkov_nB9MIty@oO8g9g z=n&9!?kXY&+cM@+ZP{jfM-nSaZQ1_Wsn!=Y!~F+&8;eqr$oO zqxd#E^!~7Gg`^|(ZQK2()SGSEkZ=tP*QQ?VY*7TId?YGil`qs{>AP=w=Xh&Uk}x6v zHf|1$j+q95vj`v{XOTJM`IrCXi{Ixgz!`9OdTIh1-hJ~|hNiji6-sZn(vp&Q&3)3x&)DEAc<6?8kIFnr3cnpvD;uGD%pZ`I^$VfJzwk>1z9gXW07f5kWo~;O9&Z@ zV+0To#} z!c~(>W~I`VluDFb^E3!dLjVDphSF-h=euA1*xzv$U^Uj#&O*1qO0or3n%DyKEf%{4 z)-9TBS|U3}`PubIv1h5MPo-hH;#BELN?uLNt1XpC%W+<*+AcMBDNksT@NG&0h{=?o zcpC&U-?8;w!mcHY9tsM{J23;kU5FR z_hSf1eAk|t$Ap00_7eYlX>D}!OZ@42@=FEfuwhI=bfhXrjXA;_lN%zyX(Av2!lWw* zM1g?DrsOs3q)|cAWH(zWn)6% z$KU_0Kj$n!Ocp!d(?m?-z5dJ|0uX?}+yoGixzX`K2tWV=@g{(P#C!djJp>>Cf%ysC zx^wq7Dl$JmJ_!K`Kp@rx5Rh0eKa+>RsRZu-)qCE}S%6c~@Z?zp5R1R$^s0tm=5sB=vSKmY}Q|V3I)gYw!G0gwFyXCX)-w?+}0h1RyXK0R&_!OuPvK z5P$##CJ7)QlSKF(0uX=z1g0W@fJ}vnH$eab5P-lW0R&`{2){!B0uX?}R0Mnh`S^SO z@tFvp1(<5Cya@sjfB*zSBH)WjNZr#d1Rwwb2&^gr1Y}iLmU%${0uTt900I&+V7i9@ z1R$`o1a95Adm9y5+2v(o5P$##!X*%G0r`*L{N&$r79iX^gx(~}xKS%4+M=duuhK;Q%rlfaSEAp{@*fp`!=K;p5^%n||+fI#2`5Rkx;(jf#O0D*WA zKtSTL&dd@55P(471Q3wGk*<7)AAdFd4bB3r{4z5^2+T$RF`11Q?}h*bAOL|80R)6w z0Rj+!00ibDfPl<}jSoQp0uX=z0>V820SG_<0&@{SK<2{6hoVW~zyI@<-{UMmG}n$% zyG{Txaeajt9|Rx(0Y?cSAdW5!!-4<=AmBOy1jO|fVtf#Q00bN*fPgrOXy&vjB0w3*4VSV&eW9F+vDH00K@DKtP;a76t_Y2tdGn z0tkrvYs3g4009U%NdN(Ha#S1T-f*!1Rwwb2p}Nb0}y}!1RyXM0R&_&Ynp_gAOHafI7$EkadcrA76c#w0oMs2Ag-?v