From 489a55a886344f6c607f10a7a2806e6da86e1768 Mon Sep 17 00:00:00 2001 From: f4exb Date: Sun, 28 Oct 2018 01:38:58 +0200 Subject: [PATCH] Scope: implemented trigger holdoff --- debian/changelog | 3 +- doc/img/ChAnalyzerNG_plugin_scope3.png | Bin 15070 -> 17076 bytes doc/img/ChAnalyzerNG_plugin_scope3.xcf | Bin 84899 -> 103271 bytes plugins/channelrx/chanalyzer/readme.md | 22 ++++++++---- sdrgui/dsp/scopevis.h | 28 +++++++++------ sdrgui/gui/glscopegui.cpp | 13 +++++++ sdrgui/gui/glscopegui.h | 1 + sdrgui/gui/glscopegui.ui | 48 +++++++++++++++++++++++++ 8 files changed, 97 insertions(+), 18 deletions(-) diff --git a/debian/changelog b/debian/changelog index 21a540f07..b84f7bfb6 100644 --- a/debian/changelog +++ b/debian/changelog @@ -3,8 +3,9 @@ sdrangel (4.2.4-1) unstable; urgency=medium * LimeSDR: use LimeSuite 18.10.0 for builds * DSD demod: use 1 dB steps for squelch * Scope: fixed some trigger issues. Fixes issue #233 + * Scope: implemented trigger holdoff. May fix more trigger issues. - -- Edouard Griffiths, F4EXB Wed, 24 Oct 2018 21:14:18 +0200 + -- Edouard Griffiths, F4EXB Sat, 27 Oct 2018 21:14:18 +0200 sdrangel (4.2.3-1) unstable; urgency=medium diff --git a/doc/img/ChAnalyzerNG_plugin_scope3.png b/doc/img/ChAnalyzerNG_plugin_scope3.png index 87781e7d6c919a6f6fb7f35783beb489e932406a..09b8e1af24fcecea97b8c6b7c82562587023767f 100644 GIT binary patch literal 17076 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 HG6?)%N*k*I literal 15070 zcmd73byQVd_$_=mbfOPDBdH33phCgFqcG6G z_soGDBk%*wL{3@~a(nkDqcJxYe1hp9qwNfVU=!c{MS>)ykb@7=U0x_WM_)jOl5#!H z#o>PeKB91WuH_A!ohAUG&Q|J{QML4$_> zcMlYT9Pr;Ql1Tmm@c(Z40zts(|GPy6V)TF2Yj{Wl(Al4OaPDA!)acW>#kYe`Wa`x9 zPTjaYsBZL*aSi>qd)*S`7{{MtlLKOtrxOfn#NjmoMQKIl5>)~h9(7a0J0W@TJ^pm) zuaOXy1J1AIJiU~Tus(ScZIQ$%?JqZtcAd7}jm>Oi09;A14)dII*k=RwdE;IH{C1r0 zhT<#lR0^)m4>v>4pkMw0uV-s0kRPPC3q2=^zSN+b#U}=%=kWv$`VgX|!FS;r?e>x{ zx~|)2!%Xp{-$*KBIaVt-4C*wu*>-8npmb!)h4{Hb=@7`KKg!I{E-UBe;e-xCFaOZ0W$jso4b^ZfD~)_9wgld-@6jZounly=_crmq=o^N zl1Kj&fy}TJ@CX%gx`Oy#=P%w>&h-7q|Fop_pO*A>!i}t11<K5gVk1~RDD(ipHF=ikjAKOc-Df!7<>&1u2uuc(W8OzXPi8Y(%TDL)@F<&PRw$`0b3dS$Q8 z%|Yvdjje|$oyBjBXX+V2JrMGz%xY=HZJA1(NRZ{sz&%rD z2E6kl7I?g0+Jc;?uGp2J{l{6vChnq_weQ*hzM%cAvkAd|4Gdu$1#R(ZUyJYxc!3W= z_ALJpw#_DhR@j3wD^qq`Hx=?u9PavHzeU-|sr0&0VPWpN0cNKa>%c7(VvihOre~Fe#MPXe!_1jPe;mx zzPrV8(+8*Lm2RHuSUac)2vj}Td*y+s)kbur`yVj+bD(P}N=76(CcjGGI(mEFu&Y16 zKKe*Nnm??BE*1Uwn%H5RES^P$SkZSWaeyd>&e3H&vK?o>_yzn2oqso#|2Lv}J-$*m zP6xa6y|n>SF)G@hq-fBd9op%^j!jpEOj2pGgvFoyn%<1aL21yBduTjf$WlRuc3H0s zp_m7VfLMg}ElM@b@!X&DF5&jaGk7bIwRhv9Js!UbeAY_num-RGL{4c*N!rDH<`kv- z)8cuNN!JcHdL{%WGiIqlZ@$2=qpPfB`b?YQkTDW(>algr$yQ$fV%D0>e5|zpwY9gf z-*4>bg_bwg+#V?m&)^QiNJNGhInpf9C?AOTEuXT(h-eI3a9b z`PYylcMW_$tB_olrlzT0I(9QUK$#C#M8sklnd3VqszIa%4z91XX+qD>_Ki-;r0MHs z+|QOFkY(GiVe4PuKVpYuC`a*_i5+ZI63P6WF}Xb`lwF9<4`9vHe7Bc`Z!9pQ4WXuA zA-8GwBXN&bP3L2NUvV|7VsbnApPwZu*d&jLB)<2@#crR??%FzuKi||m5M=snCb>-d zuHea`rFBt4vLSjfXnk1Nbjy&j@al1mZ>k^0`B}O@em``_{_y&0lnmY$1X||tp|~^b z*LBtSwZ?tOd`SJ2=NVbk*#pNb{|CfZr}6V*15hVUNR=yM^%~JG?|7jPyQ;vO9VHHn zL^;IrZ_Axv&iC-0L&v#zFCZurL0PMc>fM0##;@+&x9Z(pgIui+1Z7?~PG9L1m{R~m zs^U|KIM;LP^gA@ArL`%$?SyW=ih>^sh){=#u`J>-w({$ng}!fwh@HjB$_vF*F9c5%0FVKW2nhvg?yT6Hx}B&A0SL+ z6*YWl^!I($UWP>J?tTk&7nmS8?q24UEb6>OILtyKzMu-nLJ58`^q3KaqQV3TvLbEW zD2#lFsBbQDFF)7w><~LTo2NfWTtfah<;Q7?7}jJVzVtxv4eI7NJbgD%gI@!}!pDuS z7YuYB@63S!_qKY50J_#~CY@>bZ76z0Fbt~O#uIyOCOWxP_-aqtWt+z8sPVfjEb^*; zr2fgER^8xR60Jr&0#5{XkEt(tCe0I$w`M;h_d z52@?WKiM84dM=hRr2v1mYXw*NACkX0BbEA+LEg;vONQ92?=l4r}1fzLF%_JlxM<{R3HRr=G{D&~u zQ=!z|hv^Nd|GZgJ;V2fdvv=7pol$#2sG;wa?yB2?PU!JQ%xVy7ZT=pg!HRTP^s<+! zF&Tgk7MyVwa6qEN^rpDu&3P?R9Vq**LU44=NCA2%i?Q6_b5i8umV{ui@xMQ}*9Z zsn)uZXn3E0PwVDeZ)~P#mT;gur3N^C*4#Oepb1tK(|M zpu)5tp@$`1^{opzc3{{v(1Pe{UAdXuuih#7p4Gx2rKFII;SD36L}gvwEj3EnY$BrY zuPsiR!?C?9@n+zH_-E{%?Z52{xnEvYTcBV4+qd~;i;n|aE&jV7_gL99-`K!>Ocafk z*O^(ry%$MKSNJAQ+b8GKxkPo)jw|-+M;Mld8w0btV;(5d$O_@5zBZ5 zb+-(MgQ7NViX4+Q_5-c-3^gY7+;H*_XsmIvOe`$?l;ag0)a$~Iizql!$SC;`2sb6J zGTT(`r`Z#v_Ld;@C6?elG=12Hn?7mIG5hi4UV`?=cdpr7NQ4l((`iptVbjG4ya|qv z>D#|7U`b>J#1E?|F)?!?)JA43P8Dz8qExdp;MY9fZ4MK8wLjlNefsY20I^hYjQgFq z>F%l1q=#&t8;oHqz@40UP{d1*o1E3Ow8%fk#v;9(ty-RrHgI#}dqfh0d+9v+T_lGk zrs9JXqdYUQi>H28dQ9(fvsiR3+!=`e?W9yQWh7HNFS-7DocHms|`{du?Is zNn?~v3L=rqruUI@ZN>Q(&p1yv_p~5S1>nOQuF9+=tXy2~LXAIu$VxtcE}r{aoS>aH zz_W37|t+NONlX#Z+vQ{t6%FH&gCrcbS2(} zjxU|mGF}>9#!0wfuxMFsMjqSYx`U!N;j2>4FDrXYB%uaJJ|c_Q+|02(1;f}Q#C#Tb zm5qD!^$?k}ZMO<_(zJ)6P^tjf3?kLA-=BX0T!4^UO}N9?%vN=v!Fe*J3n zyI3C#)b{gETUn3;qV2;+bYI=N+vRA+JZ^9*zoKo)*1?kB2OuCOJc&s(wG}6R5!oyW zy^eD}XDyabO|Ji(3~spKWdl&-7_fZ$ENh5fK%lnAV0M*uhB5*zke=JJ{qK`UzKQs- zWHt)ddEY}0Kx#Lj-(Lu&3z5xk{d2NKb!{j;ET^E*fs8K#36~5kFX!2wt{cug?l$a) zyK=uSP*Jybk#jPZeQ0DuF3(4fJ7`s=x><981Q*R)fIME%M9 zJT49zGK#o=k7?l0xJy0n?Wv}^x^~F>eKe;!>Xw$4>5SjDj|^vXmi5Ow!@{oK*CShw z9=wK!T9=%qVs$jd+HOaxZ;$xOFiY>*@vhIPn^lQ0`Qd+Y=XANeNYdj(pHFvpdQ3oW z#DWrmI?uq!ct5s>(r0c6ZX_#sw_#V}6N@DI0n$`Oi^SIg%IBUL ztZF%3#IIX0R70S}t8J!%)f&M{W}Z{RfwPS>ss^h<%n3#IF(=ewzSHJ|WxOYQb96_m zeG+D74esvF z<>eu^Cn_9ot~|DAqEvzuhH?DMX^eORbu_iBXs<<8+bo|7kv!$`W9H=Sck*B6kd>8f zXlh_lNP3G-`vw9jwVM%QH?Z+qNAj}miE%TZ)o5x`z_fW~FkTHtETBFV&Ia*M`)xq? zBci>jHFFnc7+YdbfN?x>kyI;sE5d0)A3e={|31=ijzWbFbBxUXwDW-R&DDi~*J|U z%1yJ!UjsYW(@}E3_QNRI8K3FIJcYX&7p2N1?-1>o^dU(9kGuKPdu~ zk}a6IH7l0=uL4aj94bDXD6ty>fG_c!`tO3!@lEz-8x^Y_NKYnu=wAHcdr%tTVLZja z@FnNs&xMX#^{t}b4|oPX0SXd;bP#Z=`6NQAc%!4E+~n=>n5?CX5wZJWA3n5ST^w=j zp`xR=ner?&UG7$}CyRKLulNtd&<0#zo^?%BSg5G02XpFwhd?;>YW)KPp;rs|euyv6 z-&3ZzjNi82A)_gec7-|1sd^tSNnJr&t)8KoxUy!Qy;pw0kNeZ)Bl}%)%oWE5&Y=Lr zlAoA+n!r?4R0c;kymJ&qj|U~jtE>}N_->PuD5r!kPj_NIehgeo_oIcB`d)iBTpjkV z4`w2R_nThm+0>E@ehUcGJxAWd{i*|5OWlQmNo}wb5wvf%@*04h&3DoHz11l~gIt|2 zMUe}+SOysdH&&ZIrKGX4ShZc*n)-y`TMf2-9~PFhy0vCqRaJ$7g>^V!+qStegUiCe z0G+9Km#(p!A)und7AJ7HI5bNUcE>}L?V$EA$jd9;ym;catu-<- zLjUMdZ@GNIs89+mgx#=-nmHEJ=km0pm#Y~EfJl*U&0?~B(`$_zSI<-lY_jyuT}55Pl3(FPWAMX=4`q~;LRItM%4R~yEjcUwZji-Jb4Q@-1Dd_44b+v&P>zTX}?S|;{x9URpYQeYgb zE-Wlq{w}6T^ZoO>+muHpTNMQrwZ)X@J`)p)qod>c?-DwXgb25Q#>?RwHJH+-C$nl`q86D6288oL_|c~Hsjn7#9K__Qu97a@9UG_c)#xx%X5}kOxHS+ zi+b0pQ_guGMf6oKDuCX8xPv2gb@ked)#QVNF1oC*Us3Aa_d?{EB|JTan3d8#fY>%Q zH#eEAe0@G2gr8JJJesr&S;oM(pgKkKY@}t2`>~OsqNVk@ub_N6F-YDEG#F<0(q!sT ze(KlO2{&bgTUV(DTO43Po0pO#rJL!}bx-<8wWHFz=xZ$wpMjxTpKTPD0toA>?le&j zWZC0aod{E&OaRCf6cp?Ri#wTgaI1cp`kc5|xAO(bSZ- ze&ShxtZ{^yF=Sb(t<-Rz{Ec;U3>Y9x&muH*{^HK;BbJQOJY{u*^=<=%s^atK&so{n zo=Hiey?ggA`qQVkA3orGpoLN9Dy4S@Afr>yRMb|c4Gt>f(1}v(6p=PxpHcy|LywRO z`t?h-1RDh;3=!ZtpfkvY-Ppf<`^LVvvbt*08_#jqmAk23Tr^Pwoanh`H(rWF%q(vi zZSLs!_{*0s^a;J0!yEJ%&@Wk8DtdZ9>D;)O<77d&XJ`}tOih`h!jBqzF2**F0DTZU1w; z5g-0Q$Zb1Jn$Cx$K%?lHv9WQM=IsvZ=+C`6MuJ+OOSj%a+knYZovbt&CZc5V@y^X~ zNru-a$itPHOArWEe1GSHf}wC7zNOYJ7y{c1uRAUfaAXLf5mHgTZ}PcZq`N&whd8Eut(o(s%FN7EE*M>( zYZg;XC(X4FkBpQuF=4nHWT0bG1RSA&ki?pL`97^7{5L_y5pFb|%2OVS}LP1sth+geWq=oLuNgKWxgn&f})Jdhs zCW3C;-R)^A#MG4K|JfZ#ZhVf8}Ht|d!J!meEsQSbK85gw6u}A z>AsX;(!kVV1w$_`E`TnUe)C3vi3sz@j~~hai^j*bM#jdT6=^U&e2B?E<3cPeCzpH= zL$B5$a~QWJZq~E-7(=hz6caQT5VCpCR)%=c{?8`^Mj)HwclPiKG)p=GDYI{lZk-Hn zodD(pdZq&qod{2m!OInAA6VIm*a>ogR92ZdY-q!U4>{m;)8+Q&`i}JB%&`mS2TN}* zcWRPTrGv|H7wvZOf)w8`36Iq^;<#^*2OKPQWoeceSOP7QMXXor3|oDnQ*A%D8(-;n zb73KJdv(;^({pgXw;Fw4g4^@h60)d_WaxYGpxSN*3nJig$TU`{9dvuW=Lcp2{ANr2 zUK2K?_GC==vF+qjk<;;45dS*oHHIfoh>2Mg+gExM9($eI(4t=WXJpV@R_Rc~JV{(# zT_b9AgQ0=+=U0dxvD>SPY?dlL&MqK)N^K^1sD<5rW^MKL_jdv{T;_RV1wl+!S(jN1 z(B@8kWZYpNtbXWWK{dSL!cC5&1qO1g#BlG(w)d~z7I+#`ghu@fE@)dh0q?IX=%t#}^*x92MfhS2KmYaRki+Vri}Wc$w6U~H-n zzs*3R8$YGI>y_oxB=e%J2>#i>?Eo-+r-GiC|3r-Bzf6vcr^k>{PzY9Id#EJY7b;YNnV5}@ZLrbHy_X~1ea?sf@bHit>x*E4Z^q7y`&l8ydeBNTzkTOwUouC@K)P5In9;-T zPV_`%aoKDh`oqg#a$NUWSkOVTGfI6x1fpW^kGxb`0K-VDzqi=&zU<9`Ny6mEtpDb? zey4h>)M4S-_DucnjTa3KRkn#y1=O&}qHo_8B}GgV^f;v*9JsLqujGi=fIL*!YVsBY za^$fQ0@BqVljPWB-XzhVD1hsQ@+a{{Ec1OqK?=Zuz?M1RGQ54~cfDm8PaA-ViFr2? zBv`0mkb&ZQ|H7IJF&1XFGgTuEN|-di8xP3hjx$&D6_1e1`e32%0w`UFs;o5&()5VJ zQKYg6?-X^@%^zz3v>zyWu|Rlhq!$zvNT{i)Wz~4fG7$mDW_bLV5IoU+(<^_}YI$X4 zVYis5CWpm+1|;@TKN#cwj0AwJ&hCk9X*BluYWHW{ausF?S;0}i#o;4ca5gT;<` z_(H1tY&Z~?)ZiWC_3m7>KF2B|huw@2f53?%2kpe57VPftufAXeP6|N6`xsCwE32fd z7$8Dfzq@Rh95u$WC`~pH8FMKl%9~fDjc*Z-Yr!6q<7l{c8l>(5<>ut%6rG%m4NrkA z+525m`TqIoOJCX+(Gx9;+8rc8-(4Ib_gQHEJ_LTUVggiSiNOp}MlriY&&86$HgeK# z%y-)z4kT2tM>XYVNh7|yiVFkCUx~=u6R-iz8dwV(jkQY(!#CQtK zYs^-d^satwnIHT)D`}cOWGShkL2B1{qVa)7m=qK+Qb6|s=R=qfLMXVpK9r@LuND>+ zCH?$4>a%ChM8@QrANcX7B!;no0T2GF_aBSpa5a6(|b(m4R9xfMEQ5q((uoK}lCulqeP?FF!v3C_@zYpHC8cR-6v3 zvLZ11LG=y(zbBR@dArC3b_7{GDKY)d2rJ8dcI0V7E98O!vH@;s$-3KgX=gK8i3y6> zij`}i*>&s)6=h{xUn;?Ze;at=g2??WZfO@WP^&oGrIBlGdamU{bc;6ygUpVVK>Q_6;)!VolbAxR#_ik+qvUO)Ch-a zb4*%Rl-HU)B^xsTRUazvynlBQzYLOOyn*r3sK zAx_i4xP_o@JyLkrUo~G6sOOI#Ki;7O4z0*|jglP=HEq`wg*d@DV|3DT_(DjS%vUwG zq7Vr$0P>*FBP?AZj1E8mMwrAg2o4GP;=I-$uZy9SDztLU@vItc$!*mSRlF4IFmd<^ zIZocUZ{_dIljWJ$U4(jfFhR*m1IoB#VHu{6<`GH^ak92K8@tCTf`dGi5#wdA(Ept6 zMfqO;F$Tg+Mqa+sTU1n(c0la5A$x5E@CF7Lj;~*tQbc_wiSn*@YUcKrW0hJ#r5mqn z*8*G-_LgEmv8YR3Q8hZZV2naRz%#J2VsJGc6G=rQrGViC!>)fQN)N zGVGu_Zqw??4g$pY%2n6U_+mR%9bbmLGaB34`b>`Uv^w;WDpC+i>mdVAnihI4C z)+SIsQgP;&aUdpHJVI_m(6d+l6>*%+bS)v6_70$d09}}!+*p@1hWz{~ z5Aaw#Q+fV9S5qlPSl!KpUNNGoz^U4Nk#|nR`?tQkabFTI-pZ?@h4&hU4<~>mJRl8W_GQ#; z7S3!bpW34hQtYAV7B0m!y!LTAI^#I0?gPXO&>B!nk>@rptq3_X8V(|oM!3|t4XxKH zUk#K#Sh>aP$cRTJ4ZnSLhSht>514 z-BQZCWor~T?$3*-4}f(a1fY~sY5IwKBqYm&=Npnuor%sIn*9mWKGvnpv1J&=DnN4& z40O%61eG~1NxAGy-UHqls?p`w`ocmS7R3|wYSZ|@gO8AZhqdJNV_kDNEXf`fzaD42U?^b)T)*Mc^v zBp+=?i+&$4zgC^o1I1J!Gj&p+4FI~LqM~vq%7ZeZdBqQW9(<>|hlYk~T{eh7fnwsZ z*B(y%na2$4nS_MO%a=jN$H!=5=MG=QRaJ?AKnohmlIHiy$=1CL7q5t|_jS>| zgt_mg^sNB82h#!v?vUg9;QgpVi;+B)_~w}^S})a?F9F5`fU;NPb|&TNYa$eJ1nAbC zLi?JVo0XFT%-=irV6Wi_4-1|FKK#zD40&*Syw*>+a1!D3`qm3Kp6i_5hQ+@ ztN7f&fEKX$HeR=w`>x)d8?e|OUh93qV?K~Jv+YWSgSI`_Oy@r1su`pkg!HtQqxME3 zUyXr*Eh0t!kNpG_PN$=WeeD1)gFr#CLLG} zK=-q@cDZ(uFek>Pn7laJ^;bUE6|Cq3`Lq)$PYMmIIj4${0*(`$GhxbhppU|v zkB5f{7+LYOpYV#h!sidfZZDL2gOMO_w#&M>?WP4vXc!#;@yG9-9QJa(I$Z9-?UV-H z{a@E9SpT-*)E?{|A6DkeogMd6WETPpwt{?9gf z0ElN$C|Xrff(kvau+ZkX0(dAOamqeKC`gi6CJ9A>)NY--y>VwH!2(}*<+irA_W8}_ z-i&9{Sc)_EEai5ale6Wm4HLW${uh*-iXlSY+p2A+AdtJLS5%BNqXETvYq5Skd%Av|lUeN6 ziCPm)5eq1XfoXyO7OslEene&EQ>F(GG8-BidOS_G5F-Yuv*l**do>U2cb-6r^8Kf; zsZ?^^j8lZsyHbFP12v>LusR(8%r5*k^s7qFso2^8_Q6-xho{>UL1AGSp<_#y^>qMq zY&q@w<|SohFwFZ?!rR*=_3E5Z0dar;EcGZSAt4!=ulC6r!U$^d2cFt(ReD#;NP#{P5EBQ1ywmoKkD?Q!1+U@)tOml< z;LQT6oR^6(qrL4bU{4qjqS)9?@zlhCV)Cw!;IR>C6Cgst^Z@Xlx<`nb!`z<*i~#P} zznF6G$PVz-8!)nsZ2d!%Z#K?^Ha0eZg!`7wKMM-M4F0dx-QW9Oh1&vRIyg88d;h)- z$W*KSPY~EgGDM}x&i;I z=$DHr%;(RsI51+ryY0ODfa56Nf3o$P@#)i%vXk+Nrdd0XOL@h`cWwp&@MC};nr0&q zFm6Q=x!P|7N))UlqUOjanw;DMi3oxSm|_a2tbAv*W0p@vV!rr4i0$FF9%BbH>3uS) z+5O|kGi_~(o8w$DW1xHoH`-}$PrOPiQVBhBY>^hV?11zDPDz#UZtb&7e|ijHshb!R ztH7OBz55cM>YBoEP|)ImrZxec8p9rbscUl$hz6L8cibZdL?(!99dqp`N(NvIGn82g zh=`ydl)x$z!OF^t#vZ>$qAml$`ueTVcLR6+)_adMDt~Y^DkjvlUwHn?QJ@0R*pcb^ ziwGw6{rHCQS!>qdK@Q3BRh!lU%4kN{SjigW-ux=*qX7=xYI@)d0T81P!Kbs+z5$Ct z3m|v!a-G*w-5EqgsKdj?(a@iT|o!|iw7Dzu2 z=-PQ=~X49JPzQ8{M^ba)o}0mnUz!seeMQmKp^F|w7zhzQ-|_Y zi@-Je+kNQWvdpw!)2d|>M;YxY##d4cQ4B8NKZDroPlJK=82Z>A0vehKz-rG3P=MZh zN={tLo15ylo*6m_Si91GZnnG-ls9)aB7lOz&MD_SCoG=4Z|Vwoo!j=HUIV?Ne;<8e z4$D7FPIPyu@bbJ#wBc|PElo{Mem^~}CtOfAH|jmtsNS!D3i3xH62YMmbO;hdo&!5A9n`dffHj#4PP79WoK%1GEnRQUfu2Xf2q=5cl zYTUDn^IT*LGI$?d%9>a3W9FlQj1~!wXHj2l46w{=P{Z56I1H!S#+-l!6lUbc+0BXp z(YBw7PYwX{Wr5WqivgX4iRGTygYj2UAj;>#L;;^Br_Uv2C!Z-sM!=0i@Hm+q4{?C z$2~HBEA(*|IB?uR1&Um5S3vwhO*hq$+B%dLzB+4tBLHcr86(!rKjtay9?STqu@isX z`bjnKvfC!D_WKi=LS3ft@o@{@hT{ zhdHkK)t)xvRi{oM?C zxAi735-b_1Rj~V=Y^p{W@Il?1V(@RlUhE7TOL4R~+0kX-AiNC?mB>~VXVxp=45Y73 zF?flr=p|IXcP;kwbz$vt%};UkY}KAt`hU9ig|ro(5$kDsK{CAMn}}b(&TPs zAxwpf&T(9Cm5D!vrinBkH79%t;OBP{jkcU^F`AI;+_r{us&}af*c=kI*6u+Sq-bbVM7WZplru6ewL5i( zEti9!#fkpzln2i%6lP_`x6_{#!Q)0YW;AU#4^8ugd#z-auUiZl=0^A;B@_uf3VrUG zGS&x@m4`K4P)CNXdlEsINs)n}_xFnNi!H~v%c{TE72SV33qh;@52s1yU5X@^4SGcc zZU<2?kHGJOYuQZxvSGdnG3sASA1Dyv>Zn& zfxrN`SoOwS+UvLA6o$A`nRicQY_k6z&rHH>P@)0Y%hD$DPgCo9a%||GRkjL+o!O8B zBEi;{h*E9byKU2dFK;kqk|T#gXAr3-Ocx3W>lD=D3`wj3omyut`J&DhW525znre^U zDg;qa@V{z9gj^sF=4u=N9;IQ;aBU=f;}Ct`Eraw`b!zG2WE<=1H90pEO>Op*41Ne| zg1;?#fL}3MWQwu&_jjOsR@$&#^t5ZrXjFaOvFzsa{f_V_AtK0E7sOj;DybdPQG|%K z0cbPFyc^h70d}SMyB<}DeaGC$< z?r)Cn;7hZ=a|z!wjmPy+){-{bbb5^O=A30df@J;$Dz`AMz;TxS>g#r@#iPz(gd9JT z5?c5`a`9|}n2Au0@ZZ5gt$bAnUu_QfB)#otH}H5q@yx#%A6eWTYP$#Zyrs};M2f~l zG^}aG7n?*OAXS&mVmOx6Vpwt>ZnnsFih-kionGndvtIe8Pd z3O-d$VKoIuO1zKB9HB9xa|ewguq*!grUd`tsep|dgWlo9)I}%5f3rsA(Z^#_x}9CL zT@N&YRQ!g0lzp&KiAwV^feggID->E1iR{#0QNZCb825hh=wmp1!4YoABFdFW&#Clt zzft6bibd3q50h1Bh+FBp)A`@d@~)ATQ=Xgg@9#fa+$uXOm)Gln(=QxkA`WYis?f+! z*fNI7<+~*gPs0X?!cUxztYdr54o7lQcUD$Kf~B1PeM%ku`X&yUt%Me7G1$C{Q1B%< zzp_2pW0^&XTm`oWxp{Mniq(;XDWI8R9bEKeFCGq0`EV(b;pz7c``N7ZT#5dZ-V-NB zVgVok*Ja?*&>cqqh3f$OS+cn~w`j9vwth-##LXW8?%M|lOO%`jWK&z?#OP3(Tio$F zqV*@FZ_a8@ypkyA3x0zqTbmanFUYcD9 zeRIGVpItD{$PI6Ne4sK$>!VR?VK)d92;4lX5&Q>Ek^d;7#G50nVIif`=BXfuDk1N2p{sU5 zSo+I9=ylKrAX)W4S*%dQVo$m+x@j$j!dhY~7=uoZi-__gqq||aB`BRIwA1~YOAJ&$ zVK+(TM`7pm1IAJR>%l(om>)xyA}SRwR45{!H)fAN|HT*vh7w*@-0qY~&n@PzyQ74= zzroQ0qqKkU5!#A)dLTXTiL vEETr=6W8GT|A86)?>cAr|KF*}8@j^phzJ@9MYlc)$PRccmG z4gniV4J`_SkmwzHii#*UP>K{u-SYmwZ(iBAn@uH&_`hBF<;{H4=gl{7zHjDzZ_-sFJrp^-5ZQlCeiGCg5Za?qqXQzj4%u?5z4 z?!1L5$pLd`rc9a8&cE%%Nl7zPX3hy{%P&E5CM6~W1a}JNKR1ppN>Do_O>~n~4G$>U zK}jE(J1Ze+%8W??UDUEbTIda#=)st84sOR4#+s%x*0McgrtcXG{ySr$ow0jgVr*wryuw$Q&~hvjo_mB>MtCt*sZ=1Ybn9`in0G)IF#uQQ1JJmTfLe;1BKRq8Tv&6R z+h6Cdt#jAWx$ElOx515kz23$3PQX_e)>v_O!u2l2O@o=nWPM!afi^Gsk$FKW2@8|w zfW#|*qb<<_0;vswxIYtT&VX-Z!i>49FKF(RN0S4(gsMYIj>D<)J)1SnJ*-3c@1 zO-V?Zk}x-5A;0}82{R_m$H)!{Or8-mpJ$kuFgH19!jw75N%N-6oDq;RZw}JA4sC6` zz|o^?s2I{k8>ciXr_P@{Z_31l0V&B7=fRse^O2zGGbbbmOjtN0VfvILg~UgqR<+4f zP&W)@UNLIB^7EoTq@Q|2asRw9fcQ_Ld37LPs^Jm~GvCdO9NtXWXw5KZFe9_CGJBi7 zLHAM>* zd(muuaoq+))QJ8}sfiq?HWN@4+3gbKg<4zIZdjdRmZNwxdj?9dWH3foTgGCZsX{IU zd1FQfHA$|N+W5QC5n&R19Nw&`&}NtH)D>4HFUfAF7D(ug9LYdFS9)QV-EQG@>s2H} zk4WedJ37eOYlGKdx7mK=`N>gu2{!vVs;81F@2cH;^#*ES(}-wx5wDOO2R(w^Ww%R^ z7t6ETiZ0!-s>#uII~rlZ#6nk_{TH6ALM{UNcbl$OYA2veq(I4@mDW7Xk|jxL;B!lw z{_4ew+C7#d{Y1S{pL*#Rv`UTwiWl{i`>;ae7f*NphQh4%r5Dj#aw1=5E18&IUpo71 z{^x(MrIn#Z=VjYILZ7?jlXu(J{O1LSmmoi8?I;~_A^J1h^{-uMZX+65-qU~U zT&GFgchUkaK8D5->SIjm>#2{A`@06+Kv3g_IoEUl{ivf2u3akosmtwIQcFy_+S8jR z-P+L)C(prDH?E6F>{~-~GZn>u?&ju>Y9OZZRN1Xn8S_r9&3MSY2OI+MFlulL_|Z9@ z-`jYcAl&cYz;^&1ihdGf{&+U{{{`p_^arAWallL<6?g&20Nw@;0slr1&0wq!o-cLo z27-XTKqT-GFdg_Cumsouya^ltJ_gPJmjN4=I(31&fgqqSWA$+3>W>Ac0eFDcUkt1R zwgLM9w5$GU;38l_`)UKtfDS-!AOaW*OamSR76a>mZPX8`c#?TgMjzC@&gz=GIKgP{ zjR%4rek_&ZNrLi$noq0(rTx5VfHksHexFmnuoH|YJo1#NWIFq){<{s-7Hq$ z+(`$0wN!T}R1fha#M9tfHS){xZcDQdU_tCQ$)4u8)KMnlvZ|$q2eDL^<_ynhE0f#0 zxQr|H23G#+Ja$vDMn)MS+06t}?qhvmxhAY64A+b*lJw z==qe~sd&Dij4HhydLAdYT*j?^JA#-xy|_+0d@f4$$He41n;5fLst1+sgS(mhk1+#; zc@{3Oi-ZBVwvyej>_eIw`nQsIzXWss;B(S?DkNsW%iixY2)Ql1gjz6Zzdps=mx}gCtfjOl1x^ z)fZx-O{1z(st+r&YGe{ZeOTc&yUn6RlqrJU!t@kxR$#T~Igz|r{%>}ynDx;hkJ}B* zswY7h%#(a2#5ACClshN|&J;*mY7#{*g*5G522n4mhULJ=0pb1liR_$g3`xs}bVZls zkRl_;kYgvRkZsebg=yI*PGo0;U5ZX*pHRrCVm7+uSdI%t$gwbe9CXP?Imetx=#qUo z$C(RF$VQjwQ=$WoocI!p=J20yU{00<3KaKjfYzVY)j(6u&Xl)+_o&(kbTY*gA z1n@O*0Vu*lz#q5^XbfOPbNv)h&$ z<|N%{_lV9_t174-(YadyJ=YEN2R|QxWNZnjrMRnO?;8uC68FB_BJ3`uY^qoJ_rAN` zIwG`s(xUqJzFQg5NA%N)(5;%vB$d{x4f#vl`_3P=0h{0%<~1ZYnn`Y?-D180o?-Sj z+c#iikLcPSc-{tc#=50zGq4j*ArR&=up_(1Y}UNBSW((qvo73+HmQ;823`iGP$;&H zG<~Wy>-3xAwVBO%i+oguqYUi&Zp>J>a?M6;xbrNO9dE}*xLiGjd;=S2t2bhIK4arL zUI~bg%1M9{Ho|RNt#+f`UO=&R8V1O%7QU%mM5Q7?RWe|k)MB^h{a7ULqib8$1-e~q zbj;_4>NYjH0g4FdB?N3y+jucLl3=%=CQRj>#`lbm2bt%MatXZ7k;y-^-%N+ zj_q){<_ej%!?E+OwG{oL91AG_Zg{?7*c)f_POl9_BV<_=z2w*r??e4{y#rdK2C9-Z z`Yd$o@Mg8zzb?J313tAHw^^8jn^a$lDu z$jLA0RcW~k8Jpr~F1gT969WztskN7LM$MmD7*xAnk2j=4T96_;)26tY+I$V$9!i^) zAlejf^2mv61z)WU(CS)Q$+{cybq!70R22WYldMf@AY*M-$Zox4-DW>ddJP1kfCqqy z06)Ft*za$91Ug>m{@Oy{*Y*Zu?eHLK*BH15=nf19;(!UjJm4R|3g9(h2XF-VFYps% z?LPoM1%3doGuFWXGz0>HuE0Pb7Dxo<08awTfLDQcfe(OBfggbDjCC|H*6C~D0#L+Q zXMf->pgqtF7zR85Oa&eVo&(kbTY*gA1n@O*0VqP-{eioH_CPP{FOOthjy|Y|m4W#l zCm78QF^%5?xWA@S8VPB1FiMCEe@RzLgOzPllB`>iWZje`YrRXBtQ#njbt{F#8z|R` z`-|OumgcJp1BJk5wC&Rv#5C>s(aB!YzG&7^uaE^iA_OhN;W!z_Of-}6FDa|FCC%I z&UsJsqa)I?vybx9C^b6by&UXIqa%23=m>0$AES=oessjKY~+WI;C{%h$0$8IB8N7g zE!m7^=XmGX zdP)+Q*8ME3o@_#JkL^?`htP`-XFa~c>rbPA1YkO_5O~@-UdZ>1gicE(12SyDo4y5CrrEBB>vWiAR4n5vXn>))7Ld9;F|@Y>T7QNRxv!Iv8_s zLbgO84fPAsVF}qjtszOS?NO?7AqLD!YXiE>ij_V5+6G0S7=cNt(26K-oWD_S6TwXzt>Es!6^Z>m9$aHd4ZDXdi_rM&ed!0#;bY( zrxO6mSpY|vL#d&<)G%4gplKlZ3;4GZP0>`~;5@pLUV(>8Ro0XiR#`m;#QYkYI$3Bb zdW-<7i2MtOj)H#rP5yA`9Acrzh=nd9b~=DKu`YUy`=G79Z!dr;`o6D#Ux7l#hWY__ z0_}hT#)jPk!~l;o77+p9ZSsg|0Ny5#SPbB8@`!D~J|G)74O|2)j18|1Gy^&Sy@3eE zqOj2(H5zylcndFjHNJK|o(1l6s2^o><=fq1U>-n76s76P({Fhs@*jmbm~S8)+n@(V=u% zPEG^az?jyP6c9$FR4#>F50S<~Z*q;RbR#+%x(Ks7U4tfZ7^**RLvu&wfNK}J`a5#H zMMDW`G$2l?;<22j0j--mum+^F&@T0=NN3TZ=0_$=yX6i#^mG~jt~al0{LVZ`0yN4k zbpVt#K*|@c=V5OyfcLyfM!Z#o&0g3}A{8f1EzVO8pNCYHjG}KayVF@{GY07>XrlHR zAkQvtbQU)gw_XhlG5vf*?$lbB8Op8pA*P?x$Ss$9b2{f+Wr%fP>Qt-Ez3NOX>oYF> z@iVAL|8WcIKY|0W{9`qw{}A#}7Rl=F^dEl#y>j}G;9E!kQFBK^;@s#z;#~9}aa{l5 z=12&HYdR5P&xPhmuM&WiXv31&X8#R>qw|4~ynMUe_G5v1a-Y-yc=5u96Cij8{CB5A z{x~&K$nciEUAlpbdYl8^&t+>bfOBNl;eZ&$nbz1?Ky1J+msC`#?`y2syHC@*s zdL4tCGbBiMA{&+qPGnK{>5h<~`%dI|<=FR8?oOvj@{Zud$X1-|AcKGU^oGU#}UE3)4`{H4*OYNvDcS*P7BA2P9JB-6d2zyED zS}e@=F}F}O-oWfjP&B&vkA93$9rHgV-KtY zwgLNqY~VCwW48idF!msX@dr-=-vieedq@Bp04;$oz`ei-AOV;SJOR7}yaH?o-Um(s z-!nGu9pD?r#^YVZgj2wI0QE}5gDO?hbaRRGdY<1?bRA{47W~qar ztie)txSl_o=TMn+k8YO9D$ATzn@*lCl=(xw(A>hC2|0+*0@P&Ltu>$gnr6ijF6q*h z7+0+3VWOX3$errv!%$|m4io+SL~bgRhKZ=GsH*n1Reo--Xg$1`I$dh>r#hQ*O^Tl~ z*;ePQRn>XB&Vn9I%&nk_X^LeTDMJLnE1+ipE;Y5*7UrNVymRAL5z`%XS49l1rAzw8 z!|&=h9(vw7dYIr&-MVz`(X$84T!eJ(*}Y3wIJ$HX4e8#ksx3t(UqIK;PraR9j3v{7 zd-^G~iS@|SIR*zlIbf`CXmkwz4aFkO7~{ok@Os7AheDVmuMkrZ9XV=5bWDs&h_*+O zI6KNgiQyE>sF>(c5J%-yMbRS$L`BC4F>*Hcs2F361-V4?7!Yh@glJ1dbj&dB_h*)f znCJnD+Zu&va=N?$G0{QZ} zns@Kb%-p3=Ykt z4JUZBytb5Upvlyd6YwTd3sY-eh(9wR52FdUsC8i*iY3!=1G<^KL8hQW)DuC}Hmx;i zn+flcJKp|O--1=IFb>&l{m(_;FR6>xswx^=vvZ_>_y|XYG+N$D>Am)~+P)*r)Df-! zvDTrc*DCl#Pd#ZNs-;$ewH8{U=9;@sdZ(?g=}ig3or7v?bp;==uw2@QEoqfXo&5U6 z{HzW~r4||yuU^$J_}!@UTmK=wsVg?mxU)~4yVC5o9y%gkal%oVnOfs;Cx#rj_S^1( z=q9;hYEL*{smJhXh}&V4NYh2oT&{f@BDg29J=TrLy4p<_QBnNoi@#JJ{nWFC{EZ`- zGj5Y#Lh0NatkpC0sc+*ZWHtlNw^WC%}#!~zNJSL`l16LWFf#@@^ zaG4PR1Oo$r7+^dw3rGWA1kAuYKo;;H;4E;Jv6&304+JnaJA$#f&}GkE1grx71)yGY zj{;u+=YTxM=J^1(116vcFa#J4OavYV76Ge(e*wFIqrexyIUo;h^Z{-MOh6A{2rwF$ z2s{id0#>17RWGF0O<*lz0-RusfoSFycR?qB_?d{WgE15F-9m|PLVO*JCd79OIX+Y@ z&C>!%x6)kFF0zW{PS9mmsOWO~PE>sWYaRowkA{+(N%TNDekS5;D5;r5SK^xxUjyiF zn@MyzeluFiw}drJdz#~N$4#n9T2}oi0Y6l$dZeuUSz5Iof(a;LyyHf><%5dRo%t)( zZvaDiZutfIRsp?*jyGFmD&>_p5NR;p9Q3^1!X%ehIVP-5d% z^i;pZKX%3}Yeub1xa%zJQQzDu>Kjs_2!K~WXaFuXwbmDgp)5N8;cl(p9CWP9xeS0U zO>U;NTbvS*4Ydl00+eE z41-z7fFx~(h|SHB%HPa{_z3%>>z1uE%U{8SI>&5ZMI!Ke#bhXCSHxJK_OfbG6o)v- zSg2sOW^9zd#_5id2OFVlm%<{d8Nw?!dzxWhNBOSP@DxidFJhqjXG6>e+PO5qY(Y9s3yHcAX%9*zSQoYoEn zq1JZkDpl#4VkkzAlK;6rN)A4zDMzC{jmr99s}$~RBT z7bS5@zD6mQ$c8v{*vHCiiT+pi3-7-$&krJ;*zNa4f{t@)C z7S-yte#W_oN_WQ0uP9GcUwmhtmD?geDQk+Gs+(K?9Qo^K zGsirqb1Cy-s^5eEd$W&6+P?Lq?T`RkmiPd)KB?xlrO*jw+zz-~TjJI5%1PTHw~n-3 zb1$u=lSEBFowS|aK_;oR^xoumNT6QKhipQ~;-}`smk;P;6-0#z$Fp`x{ul;6C1`~} zNRLD~>17pi!t`U7T`E%CJO-Jz@Reg|P76kqQG&GxeExE);^ujf?F%1@Y{eLmja`%M z*cle^j2x&VeH0S4!CN1i6Lq9FJcx=qX657@R^0s4k*FBG+d+0b$w}rZDYopkeuOtg zP#chuhw9{!iHbVni-^RM(zj@q92>P=CN0%_e~|iWUgRlC z7YsVTb&<3l{VylRry);C!!>V3Wz!HEV>L8?P*MEnZvIdi0ui3;E=SYLrq4ad*b2y+ zD;fg}fmuKr z@FHLa-T|_J{{Ux!tBfsYKz$$p2nGfKF~E3W7LW$K2$+F)fGprYz**ob`hn5!re)K* zDXfvy!3ib5$Z#8EO~lVZd>u+YX^Z&vQAebKOxYl<18r|LKxxW_#&T9#J<#P*UD1uT zdVIIsR|;VcU{kTgSE)nf_&JEL0r5*bD2({L`U98`$-_Npu1IrSj5oPs-s9%)9#!vF z2CG_G7GEkV@#dCxxZ8B(Gdo3U%mg4wbmZ9@h! zBZ39{ylL2HQ+9_lu+2tJ!CZ)4-VE&d%F(Rwn2ls#Qr<|$Cb4;gerH+TN5(fVl_*HE zk+v976-Ofd&N3<{Z!D|dwk%jfpYBx3ggA=LW&Or7J}+5BCMe{MWgOp!cum{Qw5^<< zOZ&fP@mWaJ7k>I)Z7?X?F+T zZo9NNc#b|HedUX0t8uKyr5R|t>dn6*i7#FGeSdFV66iLzP!|;SL2cEDdB01U9ca(^ zkd6rPS=lqr)l*-Qnp1Z)hv^Po27{%2e9xF(+K_X_;QJSC8Q;)Ts-{_!K zsG?$d4;ub8G__Gt{O4|JYpez`wkBJ4>&5alzccpF{y+pU27tKzPddSlpBitig|T(D zfo4Dlpf_Xd7Xr@$YXF=)S-%%J4txdt3KTN7!4J3-Xb1EJh648kQ-FoQv%nf)3$T|l zb3S9Qpbf8J4tWLh$t##cUI_o&I9>qyD!ibXaj^$FI0(8RyUS4Gq-Yr(cB1ANh_ct*9MS# zk(Y$LbTCTD1OAF#<-D+@zk@_#Zj0a!l8W^%;t~BP%4MEWZSDsuJXBr&`c>2WRk5I~ zsXSa4u2oQOg9?tZijK+Zi|@=cseZ8xZK>2)uPAR+eSAH?HiJw{ZK+vqs%~!mbL6j| z&7j;UHsh)DVXEH<&+Ow7n{Pd_Sqz|MNlmRSZ=fs^kFhSoVp#ssnv&ck2UbdK7H=J~ zx#qTvH_=&l`eAvgip`t;$|)Lc6TN(@+cNfsL2%m2bzB9>pZgtGE;o|6>CNz2Lq(j! zacFztFMQ9JBu{MMVk;OojXN(noV3R*i>CQ@>xHXY0xuM7!$&LSF!|(k9`--o?HQwT z*s!Hg3I=iWhRTdIJrRqhR;Bm-MUNTL+dRb)f@r;92!ThJNqf+P6i0 zFKyJ(a6is9*ZB(uzICbS?CQI;YN*Qz`C9fn-69ROnwmzaEc&^dMz9;J{$A(f-ywRU zz3lZ>jJ=DU+jpaY2Y`vd965z5qHe)E-&@`S4g#Mrwsi?(+lB+!b>5Z&JPte$tOwoz z_5(SAL7k>xS-aGAqUI6&|9n|Zc zslcPabHG|)E077C0KNt;07Z;#_Xq9*+5^3SVZZ~xRNztIIbbcY703im0AB+afFiWr zAGix>5A>pbsIZ7ycPeWF(~)|VyiG%5BI4&Dz78dC#~?llEl7iGm|orT$Is z6t}DR-Kqi+u)-sxD$Be{k+vNkI;GvU8Eh&GES})o-e2w(^L;x1I>xJ%E-yHMMr#kFrVzLx>?*>Cc zP`nT$M`dJS<4N;dH)hZm3I#JHN3$36GaGeRe}(RPExr?sYT6}2Mm6*B zwz29F?A9E`gKCn%uJ};R0vupgy{P6^dXd=Sw^C$OQ`ua`cCN34nqmXlk6%$k9^`s0 z*WNBf)NQ;X^0FMqlgAe7{64Ix*_Fqg341>F(h;yZJh?DPuC1I01mRXU9#a}1lOWp~ z4&!LKJ{sN|o?qBeX_y+#UceitdZ~f3+mAQ0bazEX;qEl#YHB*6vgqed6s{)+(cj(J zA*G)x;$m2_-LEkAeh|`x%gWc3U*iGGYoUy&nFqRn(i~%MA3xITBHLw}j z4IBeb0q22y#`gIFO@TH*2oMg80VV+p7&~BM?BM6X&p<9?hrEF%Kx;q*P_ILyfMj4k z@HDUz*aYkZJ_J4oeg<+G%kl=A0IdNL2m?j|$-sQzX<#L=3D^mI2z(Cw4CJEy-ar$e zHT6Te1f9AQoOWVqm&y5id|1kB-{&Kf>WHt~Z6$ZfYg#!zmcMtV!Pq;!b*o)y&}OCG z4!S&iE4uuTUEPhj_}d=uRXTt;B`(S3`0Ysab^V~U=_W86f~-44f;<1U?^-^rcox01>#k&ny1B_*fT&lTjB%ldQOu0~9qu3V=vKDVX% zt?!w7#)c^7HcQg4PV}>WN6v4WQe!>9!X+1)& z|6%RLw+G3%j8{On03z1Z+Vpvpg|(F1wP{_@vF*U?X^`Uy*@=H}9>*_HEve{16Q)}HAt!SDFp9XK152NK|fP62-%=Biynf5)D37mO*_q@04 zHJB$SQ{_S?+ObP864u+*Dsa>8wmsW<NGh9``lbTT>3qESJhC@D) zmT(V}2T12trwPZfl~VRb-|p39_-7Ko6LJ+UwO0c3du5!p-1v0yos6odR=Y8?rBQQO zmQEa|>Cs`Jyc=;+P0f;27X5qyb=FqT#NeE?`a6aVWBTbO_+vO;r; z@1tpqeFU}1M~fLdF%-BTm;yi}aN=2D4X_1(lz-wl@D=bYP{>%eA8;qo4(JIC1?~r? z01JU<8T)q|AOye@>fd94Nx%Xi9as%)26h9-fK$MEAfK`S_ySFVHb4jv4vYaN0Skb1 zU^TEA*bN*5P66kEe6-USXbQ9eLV$2!3@`~;0Hjktlqtd2S;88}VD|+OVqlrB+OBuA zR4OYIWdTAa%Br@jQkDs20fGr-RohiA3sMXJ(tSJ5T(|MLq8*qHC8wbV)pAA2x0*!$ zN7sizY}BKS`rum=)jH;@o2N?7U*_r5THi9Xv08Zzb@+qwm**0tjn&HIXyYH0Kh0l_ zO-dW9Wfno({@{FRIik*(>O7iS>x^f1bDh2PGaI@8$29~u+x}|NFmw%|WmiqDow3ei z698Yp3!tC6cE-WR%4rz7-Z~nFnmbSa*;?LtPMhhU;S4PQHN{^jaz4X(SVX|?kDvkX z0b6AA(LQ`Dl@5Aa8RRVq;-TG^f3`@rHbzIDtp(ih7C)dKGP569o_8~mYkiu=)omauhAL2x#aK2x2~NRM$Rn(%=AYd`Kr6CSYM2;!Nd zqU-N@J>~<_ju|e(vTA zReOryFE;a7PO|nF|7PsFAAu`?g|V~9<1D?if}bjrpE||Zsq>6|`7g%4N(SZwPXjA~ zO~6jzL*R4ZXCRlcuf2gLKx;q*!hlggGB6)_8d%BLH>lqk$nj?&$De_`e`Xu756A{i z0~Y}cW8c;WngJbv-arH}7MKP+1}p~F0o#CmKsIn1xCmI#w%R~5paakwhyca{(}2f- z#lSjX8?X<^22N8i6qCm4?1e@sltX|CyYd5H)TXpKNDBx#NLy|wU*kr4tfjotLb*U{ z#8pT`HsuCYA&u3Mx&jrcI>qfOr_Djya#vezBGS^b2W8i$UGpx?pUcvHDo}N5rjm{8 z3hIB^@49+)=?e^y3g7684h%`@sTGxxu z(Jow2Y!3hb9_~6T7{M7HRJsqUMW*Z$K+B7oS|eiZRpPESts5(~Yu)A6ktu8LfcE#l z(S5^DksnD!|A999>8H?sXh%glg6G&oK1FOUB#haiOPR)_s6+JQCg~mWl@i&!4 zKjLLqosl;W;eURDd_zA~wxhT|ea6^tuy6HS1TY4`{_Afuo#XusS?K4BjGf0`>3Qsx zp2uG4dF+**$6o3AHNX~NFK`_A3iuT$Wb79|;7*_&&=VL6+z(6v76Q*QcJUYh8S^4! z%!~PqT|yf!fsrn?0YZRqU<@z`SOBC0tAWkHZr~Vj3OEnsGj`b*XbQ9eLV$2!3@`~; z0Hgz}fz7~f;23ZUI1l8b?Y=-$pbZd0{or=}P}dJ8?rw8}(cA{?cNR^h&l)>B5iNx9av-`jm}|9@YxRiu5c zt2;Mo$tq-J#$aW~Zq=o8=BZS_a46?0H})&bGgX&P&&Qo{M3~wlKTG~7?y6~SzBS6z z&u;E!Ky`jh^&8@ueca3@PR~Er*~cSSR$8tknY@Z*%YImwZh(XPahzpvQ0W#6P!wo4RR_7-g|lf+)7 z{=HKyx_5ZYke=dQJlgG|_1@`A*BaJZS3NdTyo1vki`POXuU@lm#ggY=e0j~9CkBbP zb9y83O7Fj~UA^#$j6M6dJU{=1Rm-BpCOo8}SQzs6wJ(m(IwBkq4hu($mOQ*_dAQhE z2`rer_Qm-}KgfDtct0=e(1F8S=dN7bQ*6XT8;BS0UA=nT(SrvMWn~>Ycwm3#`{qR} zlax?{XbbyY#NWb!qPJKuea$0>4(&g1&~Pvp5%=ysGH3ORA)>!n)O*M2@179_o}+V` z!lmm{-_P8)-?%?_U*_IDyE5N=c4ZWj{&iAtBu1uy>_x2aXb0b|-^&Up4hOd2o=e|7$Gq-2$-9w4qdF#WJRWrr9 zqV2J4UES>G4CidpK+#M5C1&k&d-i5M*|F2SEX3dO_FHdcJ-T{scd@o;O+7V4mqzUa zq#3gI#Z3neb?G;t%Z|()?;y#Whf`Kg?vBb?7at!$ZEq2`ia(rPkW0-*Hq{Sqj=%5HFFN{+1RJo%3YLX>z2$_D_4f1BwOai zGs2mo6y6UF#0w+WEPdwC?yQ4*-=J8pZ{Iz0<$}&)L!N0vvFOQF^Z$8Zo3KsTDs0Jr zefz-&mapvJO$)v>XxXYc>kq&8=IgI-c_(xC123-pYiH&5Hxhq~TE6n>Sz8Z%c<}Jf zRWp~bObJp(Rbw$XeDTWF&(2L*n3A?qSZV!hPBW^RSFI-cg8rSA@!M3) z4T(ygId^h=Xy^;?kb&adWrUyVk+A&R)XL94jM8b)WL6kTfy_-)YqnXddcZgzZW{5E9%3|D@eG3SBO`E9`b*{=Nd;H;5l z@muKJdC$1;+tgV@%i_0$dCAWFwsP()D#?}K?wdE$ncv3EdPv7_$+Huk_$_YMte!f4 z>o;?DqJ!V!X3mP#@mtu;St(Oxep@+i)~wMEe!Ft-)LC<;Cybl^;1rD1NIkoSj+lfN)4gWW<0gby@LR~>VZ)*yCVqS7{^3Kyd+GRX@UZAH4t|Rqf=8(KeCt0fdbXb5qQeIF zaPV8`&|#yU_$@lDk9&R_Ff>Zxw>w%Zs8I0oY^fhjGl<4vRmk|;jZj9 zJgj$F?AB{olq=rg;xD&fYh7akYW4F-oAyE!?iyRsjs$;ia zL&Bma$n3TvB0Q{*j@^0=4!bXMc=WiTkr81-LiOy{qtD>5up!}LLYTE*7nR-a5c5KM z_wCm^B)Ib2mg@gHJ{)R*wh>>sl2^(8$||`Ftz2tLPb!;qF6##Do^G zh{0I@q*OzwXzShIcFuS2 z@U>jRPqYgBHi`cB?#C-347wr4|C%E1|LMM-d$-VnPmc6mk{BpjPycut#pZ2WE57!Y zD9-&1;c_`QB1Dt;%gCN$)X#IohrS!o4*J;#Cc~#G48*=d@)Li(TB%Fnf-c;JydtrQinS}LUC&`6Jy1{h(M#aKSnd>6I8uMRCh}sIsL?Z>)C=vrXdl{`sX?@Ataj zBwqS*tSG+9L&R8X4^ix5nl{F343dD@^RyhWf#zMSHih z#*($$`c1DHUn^xa*-YCudTmrAxC|!@woPw&z13VSeK_?HJ;UiwKb$bUg6=7EJhg7w zqr0)YI$Ye$PBzmZo{2ntxr`?;YTKR>UJ+#tsNnXV0rjUIP^tb|63tOe>~BhCaGO#M z14O}O>)ZuerJ~uhCim_l_7sH&EmJ3U>L!MYhOyQerY_{T-#Wc@D^sY+FvdEqb>D%Z z0}Z3CQ(F%R3k@^GStqx?H#{`l5Nn+%$BD5{XicevXv<&YJ5okPi3y{-b*8*q+d6g@ zQw0m3EU6;>U+cfI|68|4Rl1`(5r1e^lv^aU;15x6erviak4xih3%^6b$}`eixlf(t z2cxfivl@xbOx9MW>G%7}_pFhrnPk0)r=YKV>lzK@{;8vVteviBI2coxppADnw4iD@f)<2xOl|Le@ zwr#IjS39+Bqji}{-?q1`X49XwZQZTGPHm(6s&89_HLRxEri@Fr9BSykT%U&Z9~6iloL%+txzdw`fX`TGI=&P=1la06Z^gIIX^ zm!E#k8jtmG{@P!ET`$rySPd({IyvO2+y})jN@Q9%Ln3%{m)N_X*vXmroELY-F zUy2d&E=1c~JGBgRkzvoLa>t6XiCV1O%NNgIIP_Q1k)7PLrSvAc*3pabIQot!(t51; zEpkU8^{3E*W@XPk_S|F6xgI|L^YXE}j=&}ygz?I(BlxO9TSc^hIRCq>3lZfD7ss_# zMT>z5mvteceBt5R)2c<-MNv_Qs9F(-=Gud~MYvVuS`N#%N&H#>l?WnetB@8ZHNtmF z1gJw0L0gvmMZCx}z7e5ZM3Kwt>M|uj{9V?BC<+niAe@#hEydquJ&2+XfffUDy|RoE z=9SWof#T&8n|A-(EQ%|>IrZgGluHT>b#c~G{O!aRG31BXeph>meR@%yXN*;rYAwYZ zCuWJ_2QzwndT7xwJY=xW()G9jNvDZo)@(5(`Q=~7QBqxhYoYxjL~%cqN?jalgBD?0 zX!vJmPVehSp}NklFRM0`6G8E5x~d*-u0@qDIN zlW4N5aX@iNmMcd7J#3t+@@EpjE zJ%xMcI)#Fw3dJ#%cHaqqx64c+^aKOw4#vla#`EA(R4CK zmsLGN6t#>&yymi?H_56PsAkkXOLa9*8=Oig6g66?vXr-BDG!<^r!*A{6%~$JhGS6= z{X5?}RCS@Zi@!M3JIc~txu~jobtQhg_^YPuQ5N~iMcG+YR^`rukFTi>Eta)~x9>pi z*905iFz(kDJ-*@GuL&+n`Vtq{kUN~D2h`e0E(t`qUVcDFX>v&`XZfKUqUz;^uBu;= z5H!Cc6QmmN9P+v!1y?C!zmO%>~L+!OLl->y16Sq||cJ9O?U+>>UR7 z+Bqf)Mg;0*QlA2(3?88@*-c|Y+$8ywd3OLnG3OLoR31_Oh15ve=aLx_u zQj_RuaS~nzpf%ae|Gic3ajNhXPT~oJaRjZ2e146+iYwW*qaU43Q{Pu^3%BxOy_Xqo z_2i!VeoKwMU`>UUbZ}37`ycHJtb=&?X%&X?w!rR8cn-FXp1Ti-1I7a>PVt1m=b6y% z3={gm$k@Oqm=HCR2@hOlLc;ebx##Qe~Ehuk-)N4IWbcQLo;&;@k<_u2UV5O{A49-VdMXioNrhmS0Q zy!-p$IY-|=ayTXB@CW-3W54ct&rwGY9DILBaPZI%_GMy`DqJYKY`bvb5FK*M>rY2_ zWo39>@%nv-4(>m)xm*7M;_L74!OI`E_^bG92@%JIP&`>FUPrtZIv?kG_hk+3+9e`u z&u%56AYNOYwLhmf@*Mry*LzM*MgiLK!P?@r0qe71>;B;3nX?Y>-@Qwh=-WP`h(xCz z79X@xBIT?g*4wp3OW4kRyY~ot3Nkj{+_ZnkPUB8thZXOjxTMNMEx%mAYw0BxsfQ8^ zdMrBl&O6)ReMfl5La(j3NfiJ2nSG}oL_m>xPO+$4+~K$1dRur~c*{bstzhf6u&*e_ z{?Zp4x|VMJo;mcU;Z5NU3%#m>u%bC%p89gSc&BLTG(U+|5I6rYWQAj4qsF5=Dng4H;EuloF!4l#t1B zb>a#qQ<}+f#yHFUubS`2l~a@$lSX=tv~608zlD=1-lUPnk(Nc*u0M|}rzr90yti%F z7W^%oNbx4d8e;8#lLT14eHczoL{z!q-lkfjjUN$rP9ntG=AM%blI_R2v4WNcPfp$) zUMaQ2B2)5+5sBA@>$ajo{LLFZVni|(mpnokk^lCGU)t?wKimy>AyH8tbQ7HuC&qin z+i)(^o07-G#3l(zwgcPo*ATx)s#^_ql(@)hX-|`UNR*{dPUlH{0n~z6De6@WF6V1kG}iJq^?0cdcyEJ!wVBA zqUKT}PL4Cg=Ry zS>ZvQcqeunHO_xr{wSP96+3fx0e34Y=x*m;S$8BBul5e>#B0kh7rGAnfm4$yxBV_2uV~fDT!xzB78~d z%9Sb8uHnVraGt0XHlhR*q7BixS0+cV-jcbZS5Ocy**$CNV@Ge_JtPQ?CE65~$s8`F z1xZmpQH2MGcMS^S@-vvuiT$3pOPh4;M|mYi`a~8D?@3wHpqMnWj-C%GfsPL;LBepK z;r6arZP9?87+XhUM`NsIF@|caQO8$ubVHE6J0Gd~=t6A%KePU8m(FCp;lzr3?084e zjfIejds0W{HO_&ySwC>@o#VoR7%<-Bpfi9n0=#C7vHT=SyHrjC1s}V5gr*AXLO4~{ zmB)=dRZNJkqvyG&uU&gy$8$Ka2(GH5=dZX;>*I9%MKLr6a=36?C`98Jhl_`l#wRo% zm&_A*`(GRL&f}kNpw;CYXr2cGdRb<5&jZ2pK)@r!^FZ)C5U_&rJP zf=5D-rThOu2|-aC;XTuCTxC>C?3!ZX>L6dSTfB85v_QUM_c6AqCc2KMtB+_OJgVC$ z8!BTmXB;S(guZ(Q9MoiE>pfav@v$WH{X6WFE;kMAHUgbi;aEe$1_`TxiUBQ zfwSqcKC$*ShrABiS3|zEK>>txwDq!eJ<^SjjeYoZY~s~PvFoMSglkh{%@Wf6`g74o zBk``Jed{5^A^TQRAIa%x^X2Ei9^5eEu}@C@w`jzo>=7gGmqsl5c*KaY(ufgP=8PC~ z;*}A#Mp$+nJh)?o_XrzC2uh=!mt!$Vb$w3E7%65^c1%n>F2`eHMoTdaTMg~UOpxN;ft=L`}-fg%I+8cPVv!Zx#4}*gux<*(@H-mc{ zJg)0FD`{OY0Jvr))o`4jL-Gs}&k*qp5zj1A`B_AL*t8by-A(mPvOX}lGwkNrB3@Wo zf2HjOGR9*K?wKUE6s_G~cqzSp`sJ5ifC?7cby3ug3BY!sX=QrD^h+yA6Fqf|%&_BH>4!2|nXHIp>zFuBO1 zT7QyurhBL7^JtUf_8%}F$lJd!bC0Y@$Dv*2RlV6ioZH`zYjano`=(o#+O3O`OwN6B z+`fJLh5f?5Jfu^U>IU_=Z~v?D;=3EPl-Ad!pVEDl@+OVkn`z94~w}D!#s-8`9jNsN0c>zx;Ro+oa{& zMR7v)>8d z*}mP0Jig?4B#$_-B{XY(&@7=Zq7CIH} zyd2MvUij9*FKyBmME#Z5B{34m9(KqEIc2qcL-7W3On-CtCz53Q0OR(u647xUg4FSi z#axQE<>blZyO)CruJBk1!yU&YxEfv_(hZdXGd@B+H^I+KG*Maacg}j)xxwp+be6&< zTQ*ZzmA?=P6h?>Wvy61L^YW-Sz8GC>EJX*Q9Jtf{Z-jZM|`YV#jxtEvQDW!Fh z^i{l%QeHW^ow~-lVBr%_3r|~*NXKxoEm{Ct0k3qqxt+4HUn6ec1=o*C;&O32CCxke z?Ws>c{lael@2A42wv#V|^d--uoZOy*W?R=tpP&=Y%jwF=?L6UsrBz7yi;}Qh+@69P zWSML$O4JgT!0i;#`ihi|;UE`K0=K8c8{!L>ZaQw2oAaeSXZzd-v2;`pJ6m&@b1=lDK>wE_!fN%`gl zDV-5Dk4JUS@f6kiiS%%wcVIq`RxXb36X+Xg>0~Wzk7RQ0<>h!vX&o#pZ51MUVC>=y6oR`y;ljC{9W70e%{6$GvE{^Ym8)ONw7IxMWmca28 z(fX8>iQym@Py)yI2{Z&2PD$TmkrEK~S6&zQ9N#A}aMGijB+2pu#_eS#VsVZ~w1jQj z)<4=4OmKzAa?A0=K>3`3igUcodU!n)tXGWVotagA!h_@We64W2dg=&ffXc8tR9kG| zSOxHzBbe4x*qf~_+Eb?2o1UAJBp*piB457jx>aDTF?XBml+5 zsRd)6+?};^{S=&Hy2fX`X=7B1VNB5@o3f5g8zYPh~m%o{C?=4J5|hEau!Up;D-7LBT^gx-QdRk_vaNS~_l&AP4aT-f`BA(($-j z+9@dSxIz%Vl2*pSMJJ<_XqE{!%XpajQcp`E6ck(01G;$F%f_3K-lES)>!;F+k-pkd z4WE&gPbKNgkv`gyDJ^QOb(Qon)L`nVDIqp*&iu#I(%zM%57UG++mrf}P;x4~+y^70 zv9bU8=8KajKeyXIJt>^D{d6ng&B(=p_kp+vT!X3+>851dJ$EysH*B51A?4-E_@f3cM_P1%cr69p&9LpM>x^Lgx%l|su;0WR;ws`!85ryN4 zW5!1)E>3NrJET=VLOY}dmerlbsy|LUi^X|aJ9C9+y?i7Ic{#tvP2BBF(Va{2Oc|aj zgU@@ODMLM<>6tS4g1|Fn@LAcj%D{ulv&!(SGWaRiN~|)}?S>%!0fF00c-O4d4+zwk zppPx(0|JilVivmb0Rajv-QqhwAV8IKL8-x9BeHIINSYKjdui; zWc^OipD4*@8akBzWg?Dl&AiX~*@z-A?U7C_ zYz*(I=mP?`ZB!$;3@82pf!p3H zYdGNp0-oXIFv$4l98Q><@Bx9c#uI%&pk8-%xRme#0m`J54+z{AQPzOM2LwC=>d!o& z)CV4Hf~X%5DA_KaYS+Ky7^=DbVlk9*Zo;Z)3$ebF6@1t@b+UrrVj%ZxW}I4taldB9 zsYN(XubFYWDI2MVgyOaXtF~=UR`Ag_CoA}9o0Ap%KUv$Htl*<IHYY3i)!Q~z z8;wtqmZ6RAE*f<98u4D5!(Jn{s}w^^dCDn`*w4ZY4ikNDMQ+s zxWAIhkW2KC6FfIo)s=Z}tXuQE9*(_*I99J7xEZtf;QTU7>#Ks;D`g5|&BSK9C44in zxntoDk3;H$$01^B>Xpe?AJ7r$V`mCQJHJt%2miY6<8^;fhc3-h_RU7Mqqewxyqvp^%BC6O%{y zj<78`iNE$_EoL&lzHWQ|B>t8~oIo!cBwqTx=+Z{G>=U#slA;<$*^@MHVr0Wedtyo6 zgy9W`+Y@+~(Mf*$c_+1V3E3u6dYVscih&|Be=8phP8GsL z&)xFeE#f>6Z)wa_WxSQ@JsuxKGQ{AsJ<11>1p4ri`az@>aH}6g8V0xet)bR%3jluJ zM0)`sf9-(@Nz*3HnK^&P1o)T_;02%vR!ebHG(W|S3u~@(Q?V4EezgJBO`kPV-F0>D z+u){r)t@gMYP`mZ+o%RIVKIHf2|umM_&m~LeCp`MK|nMx7MKLgb&4lE5Bl@dfX9Hv zz&c#U4%i0l1G0hBz(v5qgcoW9&43O-Zy*8~3rqtZ0~Q18fNj7&AR9Oh zTm&p=du^Z@&;jU8{g7JU36jTO!Tw-rEY$%||K03(a`YwjtCVWYVmf&I73`0@8UII* zfhWN3;qu%k48XOO>}FR-03A8=0JvoHTFB%ozcZ33I1WDkX~c zI7n5pAbM$!gL+C@ii1JJl&M^u*@-OwgqPsfY9KJ-rFKkMju~uu2!PprIcE3eW97(7 zJYiWECM*+yo2k(|e0waJ?!2Q5OKmw2qOaZ0?_#oc0`M^TpZ@?44)4;R9 z65u6ZC9nqA0K5Wh0=58e0^5O|z+T`0@ILS%a2)s;I0<|XdCn*{eW4VW}>PCabi{GM|sKIO&ncixcjEY`Tqgy C3a1PJ delta 10614 zcmb{2d3+RQn!xd=)42$jfK0d|5QcC_2oW&I2pNzNh(Hizf~})L*x)Jn~*fHz+e#Nl4WpJWROU%?yCL0Ro$I#)|o$Mw?3aQ)ce-a z@AFo@PrX%e{e$qL+^}~BT6*qCe%@k>6Nz|0q}e!;U#%7CFi@oP<03t8iS%A7lH68g z$YqhyABl{!i9G$2$P|yr?59QMtP!z2De`77ksQ0o>N6tw?~AOvD6(ad$PS0d{;MK~ z8;O)BiJZJgn1nharLLg9TJ0xs5Ed`e_=h!yHA)z&;n!sC=T)#>gx$NFnt6kVh4A-E(5A@7 zjMdiYj6@8;@ZkL#Fq9gwy+L23U>v4kF5bd>*nnLq##vm$&mvJ_Xo=2Zlc>I|{8gmk z%Xk9}@`gol;waAGDsGE3vZ4h#p*J4ESUiiD@doTD5@|xhX?hr^a0Mirdl>uoG($%a z*gb>#@W*4Aj2E#8tFR6`a2Tg>1-Ix03z|7U>)OrY{A*NfL?fc$Vi^ggw|!Nw7wj{e zXV@cSm)S?R_sqAQFSoc?jWw%iwOXjg?d}_Hp%Sip7$)jo4^x9m z4L7SW+G@VKQK#veu|*AvC~@BoC`L-{ceR1r!#RUn^SJy6s0xdwedVpNSr|;UKQY*Y z&RHE?tO+QF(hPT{tI~gn8gv$;!L`Oo&9YXfLb_vwM7q>tBt=hgv1SMpt)$#iuDNU+ zQdR0Ice%>TkExwqq#H&@giAZ7&PK7eysX%z0=VNU|Bv0f%gSBl#umbN5&qGDBB6YC ztjtyB-yY7%JY{PF%2t=Vyll6>!p0%{kMZmN8cs<$u=shvR-!LIR=TFR%y$UUx-6=> z=8u}is*-YASzh+J5s?{mic38^Vs-7a>~`68pQ-%QPU`HlQ||F5CpzMRoKtsxs#x2T z!+gUxl)T5y;2uwle0AOoMURyIzDs!HJ|F6r{aaP)A%uJNn?Y5C*|2Ak{%%mEadTXF zMLm83(uq-fdnJDbRC0Xtp(peeL6!VY2mSipRdIS{P!(PFN&2rsTaGxR@AYp`dCItH ze&{aIz8^9xtNIsSuB$w~thGIRe6*3VYUAFvcWc$q7Cp)wLV+18`W2B5WUvlR&;|^> z4kQ4z`1WhHP^483c#yW*hJ!ePi}(?mNb4rJ4?Qsuqc9OOu@E_Atkwl0ZRTS+@~{Q_ z!PBeF*Z2W$k+zM{4n6QNM&L=jfcaRCJZ!;!k^BCP&De)BoX2;l6=@%ZHt0^qYTqAe zn1Jc{1OA9VV>9-l4CnD3YROogEzV_aJ_xt8v@h;!~S@pIq!*WYIaoMyeGC( za9u3f_8-oBtWwRChDlAHsCkE)`*6EDw0w2rQ}j-KtZHRVcAletdeVRyi_Kw9nHb3q z%DIk0<1lZrz)|2YGXKbDuH-LAs4_Dp-()A82^Y=ap>0ln!i;jhM0m@LC$<+dtx>It za4=#WT0t{z$H1~!ebXOOa-C+?v^w<*q+m4)!$`?))q=p3T%~!cE*lwFZBQARKveb& zC{_j+HQnRiYRs#&zxm6=<`g_>`+_vJ@?8O0l)XACXz)%mkbRq@j?5xt7_3jaoxWQen)UUhd> zOa08Y$Mlm%t0lE-)qN zc^qGY35{BO`*q<3q)RF?kcliTK`u684@yvh>!=dx8i8oWR@W}9Bq0?UBHfr6bxXlG zOu<~dh4-)lyHJd?xQ3rax`&}9I-@UAFb-2NS0sKUp27?)zzXDJt0YVO0al1C{sL~m zLxhbHgLn+UNIZoZSb!DC$5v8IaRk|A&7iCh>ukH;Yn(lEu$l)=kLz{B?54m3)9Z`i zx?X?tO@uYEJt#)BFYzOnFsTDSeeiPV4!fjQ>u*Z;|U zhWo`kvr$19lNo|=(Zu?h3}Kp68np+FHrUiIzQX_Kx|)#?1am6Yg!=WnW+nD#Q)0Xm z5!z?IF8KzYdQUPhg>Qg)a|3(&UY6>Iqj?$rmGT5%eo)u+Upaw#rSn}TUsKJpebM+| z8FPtCLya+ScRbk8*5^0oo#-3HYOwd=g<{|(d=Ca`vK8LPq;J2zzZdDtt6kq^SPQ;h z^!*g&_zK^nPUOLcXp8$%E0RQ_Ng5;4uOkx0Ui)B-tsn0i{YWhRc-QE61-xrKWI;2q z-$RKazv0WqZyv@}kpbk00py4QnaIKt2_J`ncta@*dx5_u(2hnm8 z+%JDL2^CLvL7}D4Q?Qz2&DlekggG>G8W1phxRcMrJqHEG6Pr8C5o!}YxfF zu?EK0)LUhAz-9WR{-aH(R7YfAtht!Y%bfoSuM(2BRrSr5fLi~Q<<2nuR%&GGEqy3G zQJ+Z&ut=Y$0-UF>zkAC$Jzi~zXP#poV>8nc2i?{is!a{`pYA@$!vlgXA;yIW`k{Y( z%>Vi!|L^!4SEPPtaJFy8#4FTr{npTkp||v5{uY?2PTQ_JVOu~asDxJ?@%rW3%dbax zU!hhS)0_?rMemZrrxLaJG8%_V%BOsXorTvxQW(uXqYH!g8+ue^=owtaZIM*6V`>X@ zLT@}GGORfUVmkO9yVYXig6a#@Uuu-7+Rt;`XUA6Fhyj<5X=T| zO(RN0Mv<*Xk*!9NtwvSgI;up{BM^-)NJ1(ykjXSBJ&Tnk$i+tNK?y2w9aTgefoOC= z5>k|fT<&bY`J6HBnKfH9c+}8HASDV}X zRp!X%5JnicqVHo4r*v~lcb#`M^Sb64-7IHmbv< zs=Q?PF&{@g!EN-dC@nzN$N) z=m&a4_Bf~~b2eY4yHanb8sAP=&nAEE9lfopZL6ORsJ(MU|FnB#_k96rgdZC0wyBHu zQ9uge8*%c%%A2bm4ETz}`_@cdb)xwjyzGRZ)3g0$4*57SyxT7Q@2vvrLUm8=D1Qi{ zQZw@N>L0cy`d_n}8E3Pfm=Q-er^xt4*a}{pp4f!FU=TlX4&S0$WI`lbp)226CiG)v7{+5N z=3y!RgiY8h^5haY!DMaXHXH;En|KjFLKB(P1oxpQ24WN@VkQT zBQzpxg8R@D12GB{F%t`sg92H^F^$`ShNw48$l*#7rzi4hpbMWCk<78E%o8jnED~K*MH^ zz>|0Z^RXOx*n<6V;cNT=x5%tUXontn7$fNNSx@2x%*S%%VGH)dg|G1g-1I^tw4=+P zaK>3OvxuSTH_x}!hRFags= zUh5_@|65dxEQmxabOjAtFbv}{74xtZf5Im0MJdkVTU3iIj6^GRML!Iqrx%XLRLsLt z{0W<|7o|9dZ&6JzM52}R>1A7^;ui55V=Mu^yeK)iZc)0k_xr1@wl}Yu^?|+o7Oz7& zJW6w(1rv=NdM}4jtQOyXi~2g#?+EixPn_EOD$-Ij!48H zJVq}soy^LMScFwrhaEVKQzFZGr(510+&aq%VtG0yfrc%&VI>N&9fxodmv9rh$cm|z=JACL4 ztb1p%bNU7?#AaV?R{MHT-OqLgYd*JA{_`Lq=QEJ={}{aAyCm~>{{vruME>3ek@uei zW8wWb@h<*?kMTMFivL2TNNyr4ncFo;sFfC z7<#&|^W=x~qT&jfTN+D1PZz!#TvzzEbH>NvR@-`RBeewf^!iUkwlGiK@)-C!wq+XT z2JctIEmy=XS9C?>FAk9nlQ0W5tVAKU;}A~b5^h2l`JgGn`z$3D`F=7yp0T>Ayws{5?UtvG<= zxPTk*h!i(Q4B{~WBk>eHT|9%81z3T6Y!xZ#AX3U@Eaftma=A;7;ta0hw#YFnTA&kp z;}ML-vv?VAz>Xp~aTI586}Jh_iWcZZPnY$^BN&Tk@iN|k9Yt{BD9+$2Zqw5(i@vRh ziaQ=|c3xmdALprVEZ&Yj-rd>co7@oFNlu{_Uk9o*ee!$$$5IBK1sC&6Zt*YgdLaJi zZIM$}k<;9br@0$Xb2pymZamH1czOp8;}ovomdF_knxP{SF$n5`cxEyyFJci^VV%eq zm%x?$f-70k6kO?w1SBIJlQ0W5tVAKU;}A~b5^h2lIoA~Jk$_~RV-jXTJrK{WL?O20 z5KiI}ZbB#Wrf81@BttzATRZ=LZAE08PzPP7Zb1tgkDmPUoGH(B7%}rq>>C(dq6DVE5*`+|B2Hk z25*TahQEKkRV>{f#s^|axKAv7`(Tb(`Ypt}*vxzEfa!ad##-{H+8)U?e<9#vTOQ%8 z!}wQ*Vat$yhPAc6jt<(0z~6eUIh_cU#&F zv826-xp)-|un1hdw70PWtH5X7v^B`bI&8p);Nqt3z%IHj?GsiG;4q58w~4glIEAzL z5*Kg<*YMxCfm`?)HSo|#3&PL<#64CC+w Pp2B2I*%QCo(%9. Trigger level adjustment +

9. Trigger holdoff

+ +Use this button to control the trigger holdoff in a number of samples from 1 to 12. + +The above level condition is counted for a number of samples and if it is has been true for the holdoff number of samples the condition is declared true. A similar count is used for the false condition (below level). + +When the condition is declared true the counter of false conditions is reset and accordingly when the condition is declared false the counter of true conditions is reset. + +A value above 1 helps eliminating false triggers when small spikes appear on the leading or falling edge of a larger pulse. A value of 1 (minimum) means that the holdoff is not active. + +

10. Trigger level adjustment

This pair of sliders let you adjust the trigger level, The level appears on the left of the sliders. @@ -406,26 +416,26 @@ The bottom slider is a fine adjustment. Each step moves the trigger level by an - MagDB: 0.01 dB - Phi, dPhi: 20.0E-6 -

10: Trigger delay

+

11: Trigger delay

The actual trigger top can be moved forward by a number of samples. This pair of slider lets you adjust this delay. The delay in time units appears at the left of the sliders and the amount of samples as a tooltip The top slider is a coarse adjustment. Each step moves the delay by a trace length. The bottom slider is a fine adjustment. Each step moves the delay by 20 samples -

11. Pre-trigger delay

+

12. Pre-trigger delay

The trace can start an amount of time before the trigger top. This pair of sliders let you adjust this amount of time which is displayed at the left of the sliders. The corresponding number of samples appear as a tooltip. The top slider is a coarse adjustment. Each step moves the delay by a hundreth of the trace length. The bottom slider is a fine adjustment. Each step moves the delay by 20 samples. -

12. Trigger line color

+

13. Trigger line color

This area shows the current trigger line color. When clicking on it a color chooser dialog appears that lets you change the color of the current trigger line color. This line appears when the selected trace projection matches the trigger projection. -

13. One-shot trigger

+

14. One-shot trigger

This button toggles a one shot trigger. When the (final) trigger is raised only one trace is processed until the button is released. -

14. Freerun

+

15. Freerun

When active the triggers are disabled and traces are processed continuously. This is the default at plugin start time. diff --git a/sdrgui/dsp/scopevis.h b/sdrgui/dsp/scopevis.h index 2d6084e79..45742b5cd 100644 --- a/sdrgui/dsp/scopevis.h +++ b/sdrgui/dsp/scopevis.h @@ -105,6 +105,7 @@ public: int m_triggerLevelFine; bool m_triggerPositiveEdge; //!< Trigger on the positive edge (else negative) bool m_triggerBothEdges; //!< Trigger on both edges (else only one) + uint32_t m_triggerHoldoff; //!< Trigger holdoff in number of samples uint32_t m_triggerDelay; //!< Delay before the trigger is kicked off in number of samples (trigger delay) double m_triggerDelayMult; //!< Trigger delay as a multiplier of trace length int m_triggerDelayCoarse; @@ -123,6 +124,7 @@ public: m_triggerLevelFine(0), m_triggerPositiveEdge(true), m_triggerBothEdges(false), + m_triggerHoldoff(1), m_triggerDelay(0), m_triggerDelayMult(0.0), m_triggerDelayCoarse(0), @@ -572,13 +574,18 @@ private: bool m_prevCondition; //!< Condition (above threshold) at previous sample uint32_t m_triggerDelayCount; //!< Counter of samples for delay uint32_t m_triggerCounter; //!< Counter of trigger occurences + uint32_t m_trues; //!< Count of true conditions for holdoff processing + uint32_t m_falses; //!< Count of false conditions for holdoff processing + TriggerCondition(const TriggerData& triggerData) : m_projector(Projector::ProjectionReal), m_triggerData(triggerData), m_prevCondition(false), m_triggerDelayCount(0), - m_triggerCounter(0) + m_triggerCounter(0), + m_trues(0), + m_falses(0) { } @@ -607,6 +614,8 @@ private: m_prevCondition = false; m_triggerDelayCount = 0; m_triggerCounter = 0; + m_trues = 0; + m_falses = 0; } void operator=(const TriggerCondition& other) @@ -1021,7 +1030,7 @@ private: class TriggerComparator { public: - TriggerComparator() : m_level(0), m_reset(true), m_holdoff(2), m_trues(0), m_falses(0) + TriggerComparator() : m_level(0), m_reset(true) { computeLevels(); } @@ -1046,20 +1055,20 @@ private: if (condition) { - if (m_trues < m_holdoff) { + if (triggerCondition.m_trues < triggerCondition.m_triggerData.m_triggerHoldoff) { condition = false; - m_trues++; + triggerCondition.m_trues++; } else { - m_falses = 0; + triggerCondition.m_falses = 0; } } else { - if (m_falses < m_holdoff) { + if (triggerCondition.m_falses < triggerCondition.m_triggerData.m_triggerHoldoff) { condition = true; - m_falses++; + triggerCondition.m_falses++; } else { - m_trues = 0; + triggerCondition.m_trues = 0; } } @@ -1106,9 +1115,6 @@ private: Real m_levelPowerDB; Real m_levelPowerLin; bool m_reset; - uint32_t m_holdoff; - uint32_t m_trues; - uint32_t m_falses; }; GLScope* m_glScope; diff --git a/sdrgui/gui/glscopegui.cpp b/sdrgui/gui/glscopegui.cpp index b4fe97e64..2ffca3cdb 100644 --- a/sdrgui/gui/glscopegui.cpp +++ b/sdrgui/gui/glscopegui.cpp @@ -220,6 +220,7 @@ QByteArray GLScopeGUI::serialize() const s.writeFloat(218 + 16*i, triggerData.m_triggerColorR); s.writeFloat(219 + 16*i, triggerData.m_triggerColorG); s.writeFloat(220 + 16*i, triggerData.m_triggerColorB); + s.writeU32(221 + 16*i, triggerData.m_triggerHoldoff); } return s.final(); @@ -402,6 +403,9 @@ bool GLScopeGUI::deserialize(const QByteArray& data) d.readFloat(219 + 16*iTrigger, &g, 1.0f); d.readFloat(220 + 16*iTrigger, &b, 1.0f); m_focusedTriggerColor.setRgbF(r, g, b); + d.readU32(221 + 16*iTrigger, &uintValue, 1); + ui->trigHoldoff->setValue(uintValue); + ui->trigHoldoffText->setText(tr("%1").arg(uintValue)); fillTriggerData(triggerData); @@ -895,6 +899,12 @@ void GLScopeGUI::on_trigBoth_toggled(bool checked) changeCurrentTrigger(); } +void GLScopeGUI::on_trigHoldoff_valueChanged(int value) +{ + ui->trigHoldoffText->setText(tr("%1").arg(value)); + changeCurrentTrigger(); +} + void GLScopeGUI::on_trigLevelCoarse_valueChanged(int value __attribute__((unused))) { setTrigLevelDisplay(); @@ -1338,6 +1348,7 @@ void GLScopeGUI::fillTriggerData(ScopeVis::TriggerData& triggerData) triggerData.m_triggerLevelFine = ui->trigLevelFine->value(); triggerData.m_triggerPositiveEdge = ui->trigPos->isChecked(); triggerData.m_triggerBothEdges = ui->trigBoth->isChecked(); + triggerData.m_triggerHoldoff = ui->trigHoldoff->value(); triggerData.m_triggerRepeat = ui->trigCount->value(); triggerData.m_triggerDelayMult = ui->trigDelayCoarse->value() + ui->trigDelayFine->value() / (ScopeVis::m_traceChunkSize / 10.0); triggerData.m_triggerDelay = (int) (m_traceLenMult * ScopeVis::m_traceChunkSize * triggerData.m_triggerDelayMult); @@ -1405,6 +1416,8 @@ void GLScopeGUI::setTriggerUI(const ScopeVis::TriggerData& triggerData) } } + ui->trigHoldoffText->setText(tr("%1").arg(triggerData.m_triggerHoldoff)); + ui->trigLevelCoarse->setValue(triggerData.m_triggerLevelCoarse); ui->trigLevelFine->setValue(triggerData.m_triggerLevelFine); setTrigLevelDisplay(); diff --git a/sdrgui/gui/glscopegui.h b/sdrgui/gui/glscopegui.h index c5d181f35..de6687807 100644 --- a/sdrgui/gui/glscopegui.h +++ b/sdrgui/gui/glscopegui.h @@ -227,6 +227,7 @@ private slots: void on_trigPos_toggled(bool checked); void on_trigNeg_toggled(bool checked); void on_trigBoth_toggled(bool checked); + void on_trigHoldoff_valueChanged(int value); void on_trigLevelCoarse_valueChanged(int value); void on_trigLevelFine_valueChanged(int value); void on_trigDelayCoarse_valueChanged(int value); diff --git a/sdrgui/gui/glscopegui.ui b/sdrgui/gui/glscopegui.ui index 04a336824..bcc06e97e 100644 --- a/sdrgui/gui/glscopegui.ui +++ b/sdrgui/gui/glscopegui.ui @@ -1558,6 +1558,54 @@ kS/s + + + + H: + + + + + + + + 24 + 24 + + + + Trigger holdoff in number of samples + + + 1 + + + 12 + + + 1 + + + + + + + + 15 + 0 + + + + Number of samples for holdoff + + + 10 + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + +