From acb5e94c4036ff2bb170ce56ad91e3c52ef86ae7 Mon Sep 17 00:00:00 2001 From: f4exb Date: Wed, 10 Jul 2019 22:02:34 +0200 Subject: [PATCH] FileSource channel plugin: updated documentation --- Readme.md | 6 +- doc/img/FileSource_plugin.png | Bin 0 -> 32127 bytes doc/img/FileSource_plugin.xcf | Bin 0 -> 115674 bytes plugins/channeltx/filesource/readme.md | 136 +++++++++++++++++-------- 4 files changed, 101 insertions(+), 41 deletions(-) create mode 100644 doc/img/FileSource_plugin.png create mode 100644 doc/img/FileSource_plugin.xcf diff --git a/Readme.md b/Readme.md index 0cc37b83c..d640bed8b 100644 --- a/Readme.md +++ b/Readme.md @@ -183,6 +183,10 @@ The software is installed in `/usr/bin` for executables and `/usr/lib/sdrangel`

Windows

-The `.7z` file is a [7Zip](https://www.7-zip.org/) archive of the complete binary distribution that expands to the `sdrangel` directory. You can install it anywhere you like and double click on `sdrangel.exe` to start. +The `.exe` file is a self extracting installation program. Just click on it and follow instructions on the successive panels. + +The installation program creates a menu entry that can be invoked like any other Windows program. + +Note that the archive can be opened, inspected and extracted using [7Zip](https://www.7-zip.org/). ⚠ Windows distribution is provided as a by product thanks to the Qt toolchain. The platform of choice to run SDRangel is definitely Linux and very little support can be given for this Windows distribution. diff --git a/doc/img/FileSource_plugin.png b/doc/img/FileSource_plugin.png new file mode 100644 index 0000000000000000000000000000000000000000..bcf8ac1782c1c9a41ec12b5de7f80ae4aeb26bbf GIT binary patch literal 32127 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 W+puo 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 X(4mqH9yV;1enI@HjA)*)?(6>oEB#Y` literal 0 HcmV?d00001 diff --git a/doc/img/FileSource_plugin.xcf b/doc/img/FileSource_plugin.xcf new file mode 100644 index 0000000000000000000000000000000000000000..fe4573097d73edaf6a06140b1b9a0a88acdaf54c GIT binary patch literal 115674 zcmeEP2VfLM_n*sMLJ3_EP>>i&#DkbXSONwNpz?tT303$|DWP`(6>JwoMdhUTmJ{?- zKtw)@B!C1#DG4GX0wP6ffDjTw>fPS{e{b9EUM_`z0skKdzwFGL_GWfw-n@OYvqOfB z8tXSPda&Q%VIv1I#tavMF>uhYDqt|+&jUc&wlf(c;8z_m0WE+BWjDpEf%tWBtuh4J z1`Qk4f5@PqA>)P(1c@Qsz#5F7Flpo19xCETxI2PK_2er*5fVWWrmHCD<3agryZObdE#^sotj!$wCB z9W_Opb7gj_Q+3+)&DPJjb3J~aT=O7 zgR$0&80+v6W06lX_Tps5Uh-lrx)ozXhcY%cl(E-4G4>A9OnH|vYbIl}aZeVnWNdjV zV_$Y*?CX|{Z92_Z{5y>O@Ec=$Mlp7_nO3&mVv3{?fhm_G{eS4_5{z#GeoTQYR3Ava*{ZmXqDMFzO5xhkoS&#qFzcSJ1dC zYTT9KrhIV~J7F13n6?8xB-4p6>VQ>nl{(;rK@%qgjqE>Z&^VC9O5AKfG(Uf;i$Ct$ z;4!1&>(+ntc*Peqe%PCX5Ug}HDUL{$?&a8F69#x9<{KpW4S@ylXu z2Ad;x`64wjh|49SZK+B`G0SYR%N8wKZnJ5KV0jT0V{_6)DM_Z{vRFgSM5UHZM+ULe zM5;G)#@bA_yjaE-l0&Sc(I%7OGcbMuF=B}IM%GG8)kUj4C%`Ado8{&5PQl60P&b`M zr_%wKQGhQ=@DiL(@XDt;1(V?9iERYrCODmTF(8WLd{a2A2A5&H7~~i#yo3tym;cNcl=Vo~-e8{^ZwMc|1(_J%d>7i(krIO&B9|v+ zh@gJwDagLMs#_4)=p^h6Em!L`etW(k$2aIXX!_OSMXG_yVuBR5MhHd}eOTr!WLXwj zW|ddN(9d?$t-ustFNGRql3JV`g#KY*ISfWyE!AOkI91Rek$144mkfNnrEFdmo! z%mG#c8-QKFVa6(guZocE6+Z?blPjT_D?#p8ehv5lm*EBa}nV z@`a|fgcu*trOEB7zvU{Gpf6cuhd2{Qj)B=MUJ1-XSE3o1Ao~UKN5oiIjDWw0qq_e` z(>AtMWG)o1e@XpNn~vNT-_ESD0GEp5_b{WHMoCY(g~T{pvkELkaK^YULGt?I@9A4q zkWzws$s#)z-%k43l4ed{^tIB2Pad;q0HKiqd`Hp)zezwJ(Zv`vNERf!6{SJe2E+V_ zUP|KL08z(ClzS5Q%|I`i78rIfX@Q}Qn>1_D3|e4VlNL=IH-V#Z)8=7KL+`W}STzsr zML*?+Vo6l3l0;Hy)gB@Lb5U5Hi-0B*85J27g$1OubCgdMmb-v6G)la7lHUL^2Qkyv3W{<6%`*_{v>^}HrV8RqDK0-;^WS%5$sxDi@w2tJf) zXY@%Wi4XINDgz(1kH{!flrxf+)*T`v(T&`QsGUeuDhz!j>bZFMM4K8e0Xrsu}Q#eEkShjuW;J2#0$sB3ZM8IMfR3i0GaBW==o4RMI8 zgrbEu$H!Cc#K`c*A+q8v1JM{47o+hzw#09ts*ADFR`GG0MK9_e2bPVLT^!Xh-bJA# zL{aLATE{;Z2%iYlx_&@FU?A8p8wj=lXJ{Z@$^<$Cs8WI6%oJFjIRXMDFKPuZ4XsXuN>|eySIhs*lL1lo**3AY-i;+=)S`(BsGl^;5h7f%Qc%Y7-D>qI9^olp7_{ z5h*4Sm3pC;fyL7`al79ayalMXigu?}HKnl6G+~OSiCT{mTB!k&0#}alza2-_wTc@W zpq21?e&T=ZHQk74fa*Ex&^FrSAigeibR+sOyW!9C#(Y%Azl8VEV%qc=FzcNDD$%7C zqA4GCY)7j}v2_74LT@#oq^hE*p_P*CkY_f}vICD`m0!(jl1r;9)@*`DvnzmafOvg) zO+4bLg?Y0U=E_=60#5^-fmeXhz`MY7U^(y&@ICM|a0*BToQ&131Uv#f2|NvS23`S1 z1MdRUf#twA!1ut+G%&`agc3rVPx*MY zgg}&_fiVyzln~l{$_FYXK;J7H)0FhivVwY{xh^5b8+2*b`@2+x!t<3l&~qlTEAgJd znnYF5pyYSgsLO})w6ITchfzX2d@4$Qca3TuN`7hyfuN`;`Q0_Dc_{fQB{U}G&llPx zlt1nnyND!gK}8oiV>r(!{bwV_z1}i%Foa!4PS; z3(hoZD%l_it07NKaNzHq$(vn1!Sc)<5OAm z^Yl2fu@ppq0|rTMtx6g20e1Od=TxKT0PNDCpAsGje_(&$RbVnO3-}CJ59|aE0e=DM zj6H4ussfJ!je#~m7ob1zDli$C1$+jq2X+F7fWLrr#u^xas*F7`kFkcefhPd))vyE5 z8yE&m0zL*70jq#GU>|TCxD4c?4&{K_z!OxHyS`kx+smc@59OCT${N@n)Se^LNP76`QvHxA-7UOL(*%ivWBFF zsh0+KSq-bo6b@9D6b2p$8D zsZ})G>8{O>jx=n0)aVd;FAuMmljqNg`AI5;SOV|7h$W_?J7lFf9ceeQ>CvUFz*Lo| z*-+`L*-7aZgq@L2J}>2_sLfEGvesaCGDcbjFWQ7uGHrLv;5A%nm5Jw);1hu+*|$G2 zDG^*ccO`iz!P1q4weX@OuOz1%F*hc0|NcZGI(8ue8Y2lcO~f8hy*C?PUwIf7@5yJ?JKas!vL~k$Lb<1BeCI0XwKB_qC@|Zi73$sxuy8W}&(c`Pa&~ zw$9e)XYpyxEL2JoO3}cWgj{a}+Put3VkxABpd_dz4PvU3`qTh5lP{7M6#)9()S_aT zq@5+i5GQ&LMYg5ZN|1JNV)hVsa*8b|(vmC^O;caZj!uNByF2AHuDyx0&+yjnWBz`i z>{V2*7N5>&@dVa52^1B#cVCTaK1!ZqDdN3NxH~%}i>px=wUg4v!%j-7S82k1{_sV= zDotp1ang=X{7RseHT9!}r6v5wqAWZ*^r)2ufnGALtm(a@m4!T6T01$zccZ=Nr_sv7 zk4Yqj7M@Ig4?8)rx2sE(yaf}BP1?!{n*(-OO4~H?E}FcT(}x)%4YYR>3WmHD)0^e~ z3mZM4=Th)_=C9j+cXd!mKDp*@$Vw`Qwn8SLCtc5$MSDRe3`482DbtO{Z;7X-(WZqOv_8HJ?LCFHOx*Jc%766~Xd6lr zGz#qk#fHCvDQFIPC#c6=plA+%+USYqPZwQ5iinL6Y8y@l*BE zpr)SaD>g&_a1|oO$9s?+u07--0OPCDx!$C*xF^Bek&D+*N6H_BF;!bABRI#Z_B*K* z(EU8oG2XP9xD0w2bHxfMsiG=w*eoqsB~PUuWfhb@<=5r~$)#0P+l<7^`vU>UyAE&b z!`tFb$+qo*UcgXbBJdHg5cmq%0_+8j0m(oPW6zWYY5@&^=0JO(7cdl<2z&%A1ik{c z0DBqx*D)X&$YHE~S)dls0B8=h2i^zf0-pmLf!)Awzb1kXZ`)WmZm~ZW!({_ zJk*cmY-ufYDx)kc6g)0;%%GP{DG$AOl=9Lum3G9^Tl{I1@{XhQw2nBDsQ^*wS)RFCy&EP zc=-?(N+OeRX3QBi8>G9a%h%0dx*8^3;)c>o2Gc94IC(}Q<};W|oXcb~n8G%z))cCj zy7|(hy)=9EKC&t%{zwg@H=6Dv8|06~3Ft1nDOoJ{t=_+1W8*}-{HQTWM~3BwOr0u@F=%QKT4>9EnK@YAihO*swRrfWo9yXcg6s5>{(6!~>8-``(1DN_3ss zbdQ*$VmAFT5u79?N=2hNWTWw|nN733p8xtx)``Xb9yC(urY)%p-Drq%B~fH#ic$(2 zWb@T8JY3fNm9S6^mQ+AIMerBCa3hvsdENmlgr06>+})R`W1SqJGN5R;Vt^xa4&KC+ zOP4~BQ@NlO!W=g;tfwba+-Ts$>s*c-5uATCDaf}{v#*66YLLcyYNI-*H+Byq>uHUN z`_prd&!hKIrS>SPQc9crOKq;Evgqf@dJ5%E`9)%%C;hZaX%zN+zW6dQ40uf+9(91R zsFT1ofM={rMW8Ma1hfJ=0WSlifOmjTfn~s2U^{RCI0;+>c*eR`1nL4oKr5gVW8HC@ zT#pMtCSyIlff_&nzyZ$z1A%vdPl08?T3|bH05}O;19eRG0foX(_is zxfnOaJd{-sn&^<<>UFzTvv5uRmU1XD2_b6j)XFkKvQwMhEGrFwfUn= z@yQMj0V9>R5vxM_ta_<X+b{CW?DpMEl}_v_^GxJQ;xllG6MknW+^{G<)1SFnWD zYkmf2jwAD$xm(dNbg|ys1?5i&Kbt=x(`K@bJeBpvHTn$!LoEHUaequ*qpc@e_X54ks zeQPM%&G>m*h{}X7 z`$|-eTJtTPOY@b=UBMwG)oGegPc5x!h{~d$r)dcKf%1E4ljPFsG%p>&sn~e`EE@5m z8|%Yg{*1Ag*8@9&LjZK5m(v-01$xjcRe?u=#y}gO3(y~U6_^an0zL!Q13Q63z+XT* zV|@)kRp3#eG0=vw{`-LAz-1tpu>s`(@HOBGpaswY=nV`5CIKG(-bfm&hx z=1=S5TBI6a+kTABMe~vCu;yCw{G`k^_x;j*eS7VpZC_9KK)FK}@1IwT>#Z>IOKcL|Wra~(L`U5c2~Z#Y7B`tv@E)B(x{y&PKc!@r74_=_%Bo$b zbI4o%TwyM&isDkj6q^Tqbl_g3$$ErzYKMG&hhncOEKHGf`fJhO48Y>K^d?Lyi+-N8 z3}vt*c-X^YES=?KSUA4911tGhgpH*KBlsy=$Z+I0ye0tpaGY#8{9nL}z!2aKU@EWx z_!9UI*aI8|E&O!VimJbH zgT~4sSyb{rK)u8le=8<%HY?SwMw?A(cH4gudv9Hb3y?ozh4`ozTMeK6Ihu-*e zIGItq=T7_}92n2g?ZkscD3{vEDcq!%bDgDlM51cH-zI)m&MDZ7j95UXbQEJg2Hbdc z(>1AnY1DWcB^2)&X&OYUgck3_5WGDVeJJPha@Vo>E)5Nh`ZhJ{aqTgUieiR_t(%+G zv+QHra5}!C=}1}{P7@iALl;rI2QvT4ANG~-1U2VooGq5`9K~Iz8p38_Z-{#se}FbZ zI;ILO^94ByN#-c5xI);>dL&P(-3Mw7&>pUn87PgLAZmli4}l4KqH_f z@B;7>FcNqhumVeguYqkq67VOG0yyw>oeDr5pb^j#cma3`7zw=1*xNV&FL=07ZMi8^WR+(kGwxMcP_HU*pbDzQ*0+UQ)hF z>+lZCWHb%^l-r5sw9J!83eEBb`GcdX;U!)Ij!Ni2-(idFfCi^eukrBWyJj7*d?T+R zDkrj2k1o=O+C)O6vokGVdx)QIlcIf;kU%$lWlZ_heW}5vGEZ$L!5nMT>K_64yv~?K8}=3 zV?6fH(V-qviCHmmTh?zx`b{zcUw<>v2^_>P6c8#V?mMcXS|`*nJ~$9H6oDGn4=@Bc z0t4z(8l0lR*B6hbs81Qfn}wq?9;+jNbBzf2c-rGs$vWa!*oa~Xa1zB1N*!Vmq+FcJ z5#aZDAP%>vFO!^);X7@1dtnb$X<74x4d${9z7@u3h>l+z6{zZEbAHxR57~)oFPq~ii<&68W-bxFZBQm~ ztswYosQhEs@mX+t%2qtKRpL@3e|0rGq2W)$BPtR5BCF(N7&U&!`@&jHv027VEi2&7 zXTF(+h@(DmM&%f_a<~)iwx_3l*A~qrF{ZSH{z@%|FKIsr(~GKo&|I#5Njszk4f}gR zVX8xnNWb?*Q=Nuo%vbMsVa$36I0<0i8vT?ieSr6KJ_rKve$EG-fR}+$z&pUFz%pPh zupKx6oCK}`JYyeL1nL4oKpJCH>jS+2E0Dn0M^k_~08WVfct7A|>=T&hKN$=_d7HKq z0AJJo0@A@7n%7ztcob+1v;n#R{ef43$-pe&GhjWilWKBbVRCDOiU(OpR3#nqe_E^& zvrxQv#M2=E2g2ldfrzJpG2dstqP1@5Hw0Z8Zbeyx8iKV1Is`Dv zVrZ?n<2CL;#jPIv=ZbgFrqO?;4W^-dUwdmR)>Z$lHN?yJ%{Don=F4m4^W6@lLpZf# zIa0JjSvk_O)Qit88jnKV-XM#~H|p@vE?iAMd zn`i;8u(8O|^S8^ea_Dwi_$K@lESQSUWq_DB`8D?=abH^Nt=cGSGvG;urkzI*0i;@c z0X49mDwYb}{N7QaOYf+S>ATTH^iyspnr-?qiKNh`CzC%IA2~6KfDU$(j-8Oc`2`Iu zRooQGV_i>%xGcOqm3Jmnd4~!bnDnhNGLwnnu)^h?xT%Cgd&Gek1_8%rh$rd8?8D=W z10o?^$?H4ogT{4*fOIkMWu6&_fT@=YQ2gMb3KKnUJl#Hkphd#;%bwgqlwaB7c z@T5nob%RDG1Sg@UBEZUC&1n|MVQV733xLBdP*v>R%))^adlM4yS0*_23xEBP9k+Cg%xazw<=2udb>RQBWsgXK1-vukqV8M8`LHMFefMTD&McIT9r58X*{g z3N>>UGAN4-vY@f6RK8vcRcVr%DU|Mq<{!(xvAefgalQ75T|Z*#qP5WGG;&I7R;04% z=V?}?8B_kvriYLCDOx5f$z~sAY_SEH1}xBr&w++GX9KVcI1HQvG8mg{1Rek$144mk zfNnrEFdmo!%mG$1Hg7g#^PwTmhlV&G8sdCti1VQ#&OZeF#n?g=xd^7kMZrJ>5DD}J z#sJ`J(F`CKSO@F?4g#lv>wo~BD+Bd_U?2jB1o{GFs4joI1b2V1u9fEGb`Sr%{qE&s zmE$Xf>X3gg9aiM|&SNjbER;40X*DR`PDZ4qdLlhm*yUny;6sd14qV6=8k7k!KA=m( zQ@>DG&ZWQgs}G9A04>qk3pme!(yHet&{+p)mSO>E#p=eC?pX-X?eBDNa_c>z9{Po+ zzM`k;`y0K7gnWwCkopGK_B-Ds@qH%L_fB`3!aJYTP4(SZ?9;?f#S%1+{@f0n?%BE!kUk z%JSX-acJ@j^CPiXO6wBwBXTyB=V@J13-l6cYhm|}wpMz(O_z>CbJ0(^omjdp{ZJw) zw59XOPpkW2eEiZV0+zs7n~x1EYyeJg+UE%s#s(wSa@$hbX^4ew%7zo-uxS&ELUI~n zozlis99F*EW+USjHj#=uK*>o*EyTvgh-4gGPr2g35y<$m_af1W)AEwM(vb{`lBe~7Q64)iNy99UQ#Mez07mWDISEGLg!U+H1O<1rlanIA z$>XEfJu-1S!|sJekk!{V_RLtR(ODId}!XwM9INZQ7blBQ}c>?MqjYcabK@G(n-M z<`KkI-S_h;cKbB8;X7k03h$@+`>-}Gxh-BlqwluHx7OfOfn4+H`i0T7Y00hR8bU^t z3M_;SnCd0y77dsMX%|J&i~72m*8%<9Ky$^No_~tU&(r)=RGK>(?q0rcLg{HLRMwr) zR+{;dXe+I?1wASK81S^VfGw$H+Dfx~M_Va9+tMmOG#C9e+R7??14sPHv{lcN&!q$4 zu<&%U%A|@*eV8v`vN5_$Hrb+0CyQ5XO?JD0_n_$PJkbKgGaM@?Iqmdrn4}$uL1H$F zWP!84WeFN_t9U#j5>tva6_6sH+3$_K#Of!Y0qi zpE5Il>aOxrQf;akjf&Em@u)2Nd7AMakb>y%*ViStR-0N|nXyexnKs+ZCCd;2 zN`q*AQ;u=L7qF0%j)d)g%k7JoEr_*AK`5S1PvK*yiHT9}^4M4#&P$OBE6}KxMp}xK z7=mi-)cG7~u!PAvv&+fD>E-14bJ{e#eCR!PJ*GJwY54LOY-Ex>&XFgdsG@w_4Awe@ zgy>E_FXg6aQlsc#K{|||Ol9QdGo(}drP8#Db5RzzDpav#FsZ0?&U_R{6@0?kr7^mB zv#SVaE@vNkx2$^}{9ZJQnr&9))e)5+>~R|QIfV#YUL#?*>cywFZv3J8+yb$4@q>4Q zE7a(IT6jZ^1B2mGu+Q%+uOVeupOkbX^Wd8b-#wu~R=CN0ZP>u4L4LCVmU23C7;XGR zx?A2fD5Wcv4S(3^R|QR6A%XN1*g0A&ZdfNIx2lhj{~sDR#D-O~3isRO$zMrq2bW%f z^u@CENa;#tOOOSdJ z`6ahN*^*oBN&nEejWkWG?N8*kREoqWyIf66{Y48Y+;h_wrSw#~uk={{KPWv-{TO~e zfC+${#Y1_?ZNRmh?8b%F(YVWN+`bxj1&zC+#*K%`l&`p9@MX9?ttTi>iIkqE_m0w2 zdM3EtE74r^(4vkukc!*bJ|JgjeG zkPo8Snc{=R$KlLUy|7oM!V;(P8=Nq^D6z2+&JxOyiH|IC@a4FC;ub%t2+vNfw%{_e zp$7OAa3ZlL9+JO~EVn4a!}6jsdT0o+NL9TwsHvW^ zVl&fH@VZlnYY*v2Fs)TO*PFS~_{D4JG!boDoH<#WZr51VDh7(5o`Ri?+9ZX0ORDdP zX5~_vpXA}=d48h#O#bcllN?%oXK!m9y^GVH4kGMeBYpTj%!~Ulf9?Z)UrXQx;3Z%r z@HSutmI7Y`+khnCPsS3VcO1aHd;s|#s1Kkq4m=BV2L=KYfcJs9z~{h5U^nm^a2~kH z*v}@QI#3^I3OoyR2L=KYfcJs9z~{h5U^nm^a2~jcx|pag_k_Mf3;jEVG7a#KpNj$#DsTjC8ksqs587t!kluT4yas2gxFqLc+{5=SK=s~++3 zaxsQ2Ip3{by~%aXVwrg77C9{Yn|L}@G5)_|)~JSjvZDS}#T*YKB0-cY^&TM~?DIA(ealyKbA`VT2_Tu&Y*JrX$EcQo2X+Z<6tRK7g^YyL`Ds1l*1`3qmDUTBQo0V{-_DgoOfU&6^0{K)}o)-uVFIR|fy$$2AP zxu6xo9F+hA(a99mhf=)G<)~g5h(4MWzVWNjb^6y9&$)Q!4j^I72Q{w>(Fiju+dn?9%?*w2X|9uqj4)7_k3|I?n z2Mz!y8T;d3jQxp9|M?8i4TuJi@1IkEIRKuN{J80U3;)Gy)F*j{%{;Ge9>W z8W;~u0po2&nc=5MB>)-0EUDT|8tKs*{*Go-b$e7Z^ zop_6`i61REN^8aUCdzslAl*=WG>mI?*-hrc5~TODrN@56TU*XjM1)095aC}iqgp+IG|!_tZgxFJC$I^K_W|G(G?5V zoH_zlG(PBc@_``w!$9~nXc-N=!D4<{NuO}*gHX|13|!lj?i z>?%XQPrh;J%?e;bQ9_*yNy|IztI_hZrp|9&tKth6gyAX?8sm$CRqO323{<_SnsL`j z*Oo<8&-i&-h*}D&SZ;kvD5@)!iffI%ml~nUk{{eWcH(RRs;zKk=dPT11XWl3&Tr{- zldsegp-;O}N~(x9p{`q6(-M_MKTp$=@)!%j=l&35=?)G#m&e$ZuYip}fW&F?IpMBpP}A%J|7w*Y&AV?Z*H!`S7rKrNsF z&>UzF^a6$g6M>I_g}_(97GN)M3`hoYz-L*Y7SI4_4zve)0Yia_z(>GBs>?mEh|-e9 z=NDGj_NWdsN_u0bFZf6u>R~_sUhvTU~6Ql(>d&g70;-W`3mE zJw&!Ct&3)cgqZ3v_5^wv*H4})s>|2=ere{^w}-a9JhiFP;ufz%w?889FWU8s_FGkY zZa2Pr`h)-;vMVW_})<( zN^jp^$`UjY{WMBL$~uXp&{B4g-?i`0o8{%=r5@>IJS?}9@Zl%CHbl!}C<|CRV>K-L zXj339kV|@n!9+ZVT{?|J@6#@(T^stq+CH3{kx0ektP1BM9HNfxc9JhQCUO7%M9Bx1 z62Y3d>#rnNZ|0*Md7*KFsp6k^VPbhtyp<%J2Y2e?*+fmLr6`|HR^musOD;Vh+ED&} zv0|~xPbukwzA<&H(wZ`;Ec$txGL+{I2)@2XjHO%9Ur%H#yDu;Tctanawt%s;FM;oX zJ-|`m5|GVUI?76~$ykOjV>boHGO;B&vmOu(L;#Th^35CrSb!NoEU*sP0UQKQ1J?n8 zv8>8KJs=o}03w0Dz!<;+%m8A6b-)hbAaEME4hZ1AGEff)1|on+s>@wp(EEhmt+OM% zVj%ob`rSD@f=U;a6`XW__fPh_(_8ckK088eb;g?Gd5R0SyEU(%^x87WZSk6ldydkR z;8StCTlNY{uPuYzV(H>NXDo~~CT|u->XLeCDr-r_+x~c`?^((7^JWU?YE_hqQ8g`I zAKv+S#(mj*yUXxfO@F_9z1sATP+JV|K^=fR7Jv1dgfwmu6cQHHI3y^fdDG@x^S(`+ zgiUN7)}-(F=y78vJUMps5Q>QTqEyrxdcsM-x05#=`Oq0|LCM{>q6 z!?w?WwE#{Nrk@g?i_@zsiYIkIY$MF53`W9wrI*u8_jx$56NM>k# zm>Hfq%?zF2fPooV3_`x+jxxiW^_k(rYRoY23NzRc@3Ujf@bze51v9L}TRrPPz}r~6 zu;pw7OvN{uVQT__I9t=e4;I_o{D1+(Rh!z5CZF#WS_pZyn;iJ4TmSO?s|@gst~xNU z_U9k{dz!U^mEUs`?}hLuf3!Yg&8fY&r_~CAw~z~hbtO2%i*L<)Y)IDNVd zsl4g?Q`1k(MLx-2B&Vhmr$Th}SYcdr^q4_P4td|Ft%?~KZIsxRij|Z9aA~$R=?^4N zKNoMEDJOqh7#eL-xgNMEDLr%d1f_JmF=Z6ezm`hB7H73CcFweVS(A^R`eM4Aezfpf zbo3jeq~g7!9q;~pK}jtYo-L)$%uF|=^Epe9JZtukSF)w#hUm0oTL-<7`JR+MdfcLD zujpKhFr54bt1gG+4c7A3+$BoFya~T$Ui}PZ-Jqt69+$mlc=Xuar}Tx(HQ#k^mi6nO zQFP|?ODn7*>)Lz#-Y++@(sz1p^BMcEU%&7<8ZGnNtLb8!|0s5vUAtYKCWm;k{v>s? z-Bv4Npqn8^U8{qFDp`31Qm5RFP6<-Se&PM_LQ^Y&uPtybIdnRX8?w0EV&@PpNb;S* zCv2Q&;6p#dFM{J za}w7)&2{*B6X(NawM*f+wNtsU_S^$X%zx!j%$$Ews_SF%_sDbYxfUzVUQB5FR5E`i zHs{(`$oZYb&-R?1!Eu(ee|^69J?_2JXaAatlDs(n>pb)fKJRO|^HyJ-@$WEXacu69 z*4!66xS`iL?!Z*yY@%Zz*W2-Q2YY|+gWSpCj&9uZyOG|=`3NTNmu7EmzjkB8^W2#! z9M_3&sY!N$BXR&mjp;oRPNVuh*nRG~){|8H(e_T(3T zewKUoI#PRcj*G%YT+YAzL+Z_I>pE~xtvGx3*M8j7CvFV-Fgt0jsdg;%_zr=70 zE?hV}LrOX_XCxQMIjN2L)8oJj-R@v6C;a-W+~DjEG9iS^8+ZEBsn<}7)UELM(Uyj)k&xL5sNQWzgNqE~>+{bIn2 z3VnFbfS!tbSdV}n!zxw&MZdJND7ws_Za4rDJ6@B%8Id1qBCHmm5US0Ece9?8~wyssXI#=)T+TmQ? z)!0=N{Y#GG%DE5fV(60l!HMo&R&MQ5t&4r*_up^qV(L<0Z0sA)*_nFf%FXQGqN+t1 z;(el|s5ij&YAIvtJ!q=HLD-khuh<$@M~*`Em!nWG5$iuN(mN7yBI`s_HWiO@E^*hR*;HEwM)$a$18qjaNwFQJ(z-zth*Lko`ork?2 zve)kSqMxaviJzB5Ggs1V(<7#w+T;CACJ-P_K`_nRDT>p%rn;uw+SWScCviI0ltkh* z3FJH?Cy_W!GUXGeCWDDj;T>L%+_8Q4nee}o6yHsrN(r^{R7@CYGMe%#Jm{9rB~Qg< zdU>j*%aF<|H|@lkZ)+f*I-0BTwCvznNIgG;AlsS=ZiV ztvq#4THgBSpL<%M(K5UKc1CRT*^)e+>FPB(#FJ^R)X!#`Oo&19bS65KgMuoVcmz_f zoQYlu(i3&U>o{v$TUq(qR#Bc>b@CKGjXZ^~81mFgcoRE&8W^3+PB|2E{Q6|-Im zr~RiYPDo~qG{B~J^8 z?Ma?e)FR|5MJY<2N{ubaQ^_sK)BJ8po)TS^r=mxdrw>*t&syM(qzB8_bIH?6kK~u9 z64HPeCq7o+8Lyo-#?EvQ~_*%|v<1bn+BFjXZ^~ z81j@ATb_zBZ$q9kjP=`*r>tc1l#-QPp0eAMrNV@vW>a!c|wzgv>0L|5gh=#k`UMC}N{ zdtjA8zJqHHF%7jCT3b*4Jl*=$rPP!i)}_L9t2KF}_4*GtHd?o*-~4ldb;0q}^nIUN z>sU`7UO6ZGTkFEiua#ISr)OGM-&|}x^oRBIFQ3jj|2>|@@$0YSLF4&f4yuvjt=5Bw ztk#)x76?nN*3B1?mHohstrrmO`kv!zwDnf&v3+=?$S)V@$!10h#k;!wTgoo^(9cVR z8CGlRMr+EqR_o7)t=3t~XAASKe%6y`zMqr*jdfAhs+s&})-QM|##hoH8d zJj$gH_V2W{V<9v={ zbU1y}{(W<9{fcdCFvW=xx(o{B9^q16J<^x%D@)XDczH#28nkN+}e@pG!psPo=-dg{|F1e7=97jlyT-KqZ_Tc<9{u@1Lh| zZtGTrJJWar@8}#YwpFJA+RF?5Mc==B22tbo45g+<_qA4is7~!Fwa|4eU9(&J&1Pw zgRj+S-A$&|pFn%(8wvCf;r#Cu@9>zeClN1s@!a}Cd6VfxAJdU;STxv7rpo53!b2uM z)5)!4AGj82dNk$Pig}GqPuZmyZLc-(p0(Z-Z#8+p5si#emRB%E>^pX3n8`HZkN8i& ze~I!jm@-CONdE2-Q{Aq`AyIGvx zeQVXNS@l68pr)JFu>(nq- z&sRe!oVkU&Sd_wrGGn~Q)_k@6IPdY^{_!rKZ%!r4)HT5$ENA2{dAT(8`0=bK#rUvFHR zg@x7Ccm7KM?PZR8`Ec4<3&%a1kb3#^Fj9FjaG-Bre2c5ZWp=&vOzRs{xIUSKLA!$G zRnzy+0akIWRdU9K~Jk{>Rhi*yok}TYF@6oe?U#C(&OEzpsRIH-y4*+cdnTB#x<{NJpUFbj!{>hM;1A0 zVI0>lHH>n5`QnFYAAajxO1O90M|Zy7RNR^q@L)>iJ4Tr{4eK&|y!z1hvcEWR0&%PRgMIJI9-m^?k$MArNXRACbMZJ=im2vaJe_CVbX0i=iR%-N0Q7ZWQ1hz&8q!?^^ylD^aR*kHab`_5~)G>znVS z8(UR>narVErk}-A1;#uUgeq%$Q+A`xk9|SEX(;bs}6~wSl%A~R1SW~>=evp zMD`3^TKl~I+^f78DQxiduAbuXlg{FPWL`w1tc)DTLR#BXIl7Gaj}B9$BVtb6^V>J- zm_hk(ok4isWicGyky&DdAN$nrLk(r%(q3@%=O)>u^ljsR)dj<*@?rADHT&PAHpsoc zl{5{WDTy)q3Upg))UTo3iK5+378M|FGA!sOYw36_|JuRK?9&TdVCxBgZZsDl56|pR zGN$}1y#LWHM1SrnnT{^q3cF;zxT|fS;kc2p+jfY6%b+O%(<-Glr1*CU4=gT$C^#VyIYTpi)pry*@hR*#Wskz81| zJ|Z9fw9KX#cfpc9twW2KzrXx!%wJ*6=46l7Wci5L8bRnl(x4NI-N=pFsFH*PARzf)2SwQF{V?BUCil} zq858PRk$e5bn1#*_Isg-k|P7A)j(sU~J1$nl+bM6ABQ!Ac*c%DwF z?nOh0Lao&?TR*d~l`IYDLbceBkP3 zHJ3?|3!P9={ukfW{6>md#Dv<6lQ}JVLZ!W_MNFvqTbpSn)PgsYxKF6e-`Rx&G8e> zbN^!wOMb>|7HLt(8aMhe+Pv@IVU5?lL9}3Vnl1US_#pF<&c{Al@jj8BFkkuo>{-tI z>eir!D?c^w>D#OArq?JS(9FMi)@(9g|L|M0dG2!a$E(aOlUqqSXEfP#U|&K@bK`H1 z9Um*P(2DpF|I{JZBlO3UtAV+CALoyKT6y@>pilK0PD_ne`acb7L_~?z55#v`1vG`B zHM+|G>js+V6y~+^@TbAN>iwMi`?b>lY0yt;pooGso!Fl1b_A0$q8ojj6aUAXe5su>wNRm6U=>&gf#l$ zb(wT%+7J8wZJskTl$-RmOiH$zyI&5nOljSD@oD*HgbnfnI{+YM}aDuTfjkuRgqM z^sMMtpU*XFC#F}Q!67~6uRdrCc6*ivZgi`ZCYtAGqcLgzf4rj}W&&|`XgIH`ekKqn zhK4j9+}S(2(lK9mN0&KfxgN*jj(+2?;VokMiR=A4>QU~wWFf|=hk+s>tca+Akc8qp(JXe}`v@*@QA?D16@xPhP9rhnN)I*x~8kwD=;WEt6 z27UinbMG?}9g}Ksve`U-cI0p7pqoMALFe1h%!y@CkFU+3aj7`P;8>(gTXW>l@vQYh z*&)$Que6pX-<+?`o{ctRa`rN3A-;LX1oMF3)H1(N$nEz2elSWYlJ6*(D-omOD(7Kx z)uTV2TtVi_1O#l7Jf#)>~pAd6;Yx76zHS3-x=8Tz3HH)6c<{M*w zZDw{Yd5~nm7S3#Tt#(4p&gC?wT#FnG_9MUjh85DSuW>@m6$%<#A$=-%Xr7Q_kF9@F z8x%BVLgrQQFlIuEJ!bw%ZQ$W%i(?_AMg5+PkXfT9h?XPo zHsr#%9C`a7*PP3f_5)fBpK|4yGm2}%l{51KU31Mte?J06+e`5`z1G$|eT~ci%8$V< zo;~aG504vlBka1%|I+@JeLJ3U`I}sP&b%Pjn?R;)->VG5f#*}?k{IApTtja#==ms_P zbG+hpd<9p5qh3~tv-joph;e#9H8+8_rOL+j?Vr;_E?WXcY}=5wU?3Xmg-9mX(@VtS zqE5X{k)927i{vt|Z_mxh6t=gaSnb@ilI-g@VPB`bBIf@Uj$TWBR$rpa%q}wK2zS1M zcgD0lU00rCQa(@3$b1%$kPW#vc}MPAZf~xG&pie96>B@S(aoO+;tje3*xq`79Nz2W za302?Q0O>RVt5{hu27HTPzlC3bUDlPvzrBRGA!J6e;nQ)hg|OehCHlMq&!q&cpitY zP>5Y{}*+)jVYRWw-QyrnvLwZ-~?HCdrs?zvIBYIWq#gAyD zrMy_}MLlJBPh-#QQE$Kf*2M9z4eaUNlOL{)KfI@*=gsk!sRs`v?ulFU@yk6;ZV`s{ zF!V^bteSJ^%SDS8e7x`DcVb3@!VlACGPJv)JHDMF3n={1Mp&WQW9Q=t z#9DGS_(oFPm2-})S+-=!qE*|cuGGZ+<0W0(A>9n!(k-#Gjvf(n-ZyQT1r&Y=Yz5q@ z=dU(fy>|Q6vqSNg)u}T_M{>_QKG=O}#;o1v-{!b?Plt?)1~(h%vitSY<8@TJoNH$RXHKl#Nx zHTj?$ow%_#p3$TpkQynMEu~&rex)|;={{;&?!%L(4-eurX}K8XCPa5Obmk||Sypx# zzaWO((c0cKpp&5!KP<*l*1}JIgWLo3p~g<-qD*eo{x4K}f$#5%=V*dcF{^ZR{JUop zbuc)ZH1FB3N<_ZlvdP18ts?x~NL>g@Q2jf$mfsR|{p5p9}Mi=86knfNUZ#gAG z+)mg~Lh5@yUIQavEb=kWXKP?DxE$>1U=55jG1TAlsT!_e&qrz~nFo40PeWl$3UoV6 zLkTQSgHcD!-{jcQ+Z22JolT*vDlWVuiMY639cRp|GLN6pku+7+jm^pk#Ws+pGiFV# zGSx9_MpHK*UJVsv@PYHDnx^J{JnyS-R?M90GnJngh?qpJCc5?UauUwxIB%T(a;kTs z5xu5nPEX1^wr+F7(&{W$;taZ{d8Y)@=6bBk>-;d*FQptecs8`6omC2(>fM9 z<54ZgimOX*HRYP@FVS+2&rh!e-@3XMSY{R)cQuGqQB#j8 z^X~_wO_eU;NE;;c3rBI=q?>RgnqD}{6pe6{C{(1L`c5~>%D5>+c4 ziQ+CCC7ND1(ooY1M^A%M5{_0`I2L^^NH|*YqKRkWXypnOj#jQv;Yh&+3r8zXi}HBn zlq4J}xG>>p#rf?X4x5tXpAzU%I2PSdBs@9s++*5?O(IhHi<^Rj-SGw-P5^@lRNW*3 z={Dl1_W>hDRvKv^F#v~yx%)}Hi8q^0fUnX^JUI;ALE}?m(6M`_Ub%fnemMP|LA`vS zR7iqSQZNGX9ACH_v$rx?ASiNj2=>E%*fh2uvf3%<9~B3>fOsrpVo5v^v3@EH=aIi z@sQTg%l^`}1O?7O{ssV$0D@|ZH;E>CPU)e1`5cA8&Mikng0 z1f{s~Ri{PD6pf&iC%J5>+cGiQ+COC7NDPiZ4TGv`9~b zQ4*9)7L-L_3lfy9Ktah07nH1UK}o>{3rbeFprqi!1SKm>P%42Q1!d6xYE5tklvT9#X$yK0iq<@n$y&;ry%kJGhVr)EzWFB?ccD z?r-wX4QSbKc(+i0AAdevl7Hd;)kL=|UQ5KwvHqOFU)uGGzqdc%Qi|A;BEqeW=;fao zydrDM$bR#F&su_HuDC}3%z!p+n)>@UZPO;e-{>J_#)ypACjS19wcBH#^q9YwK5fq< zN0tT!Ej@Cir-!r#fBWOfe^IXX@PyMZxThT}2s@iL-6;rTJ*IWEam1injvjxsyVaBf z(_TT#IePur!{4Cix4<&90$cj~f4DVk!w57_R>%S8AKm@^)fPo7c}QvT`iaYpo&Wr) zluo#r{El<5j?>%EIO%ERUamH0|Kp|C&O&fH-Z`%c`f>&~2W&cb6klq3{_4;xxo0|Y z9WG8f$H|{o;x>KDaqBm8=jI(t-P@ky&i3e-HzW0h_S?>0vW0QsYf~?OiIq>1d4H}f(mOJ-r>lQz)oKInQwyMsj$(h%C6tdpSxke`bjraq<*SDmaJp1l~H!S=Zp9TUQ)Lfa9htzj83% zb8T938|PoVm}a2|i%8$`QYSIJ_^qYf44lXH2Ynpr`nmCVzdMcF`zms1%k>a&R8-!T zQ(Wq3Y85)2)r(7|r;Es9YU;&{DUOTn@wFurmptXb&-ixLxhWj?_L){0t;FOJLOYDS zloL2wtX)SO+{$&{-kP2*BC(M>MC{AoTI!tIwOd+O?p#uM*zPss_HtrsZtn`N+3feY z#lJ?hIz;;yGS8l}aP)l9m0tSbQnRGl95?@$u!}PeU;3%t+Uauo4%^S4|Gpg;z9#L; zn&#N=_!*w$8M%iTUfq85|Ju72=qRc*UEK)}gD^77>SoTIb%#ONGv|z}Gu$)~AQEB- z!Cht}!w{Io2~QDMQNm*t=>iQI2?HaGIKqhXCW5;h&+r+5+OiHLcfx9 zbys)q_uslzT^%4ab9`~O`kcS}*1h+y>biCBe_wxn-+0_e{Gs+t8Cu%d_*Q>tDSwCz zV{?yFYvpILNliKLHF?W_BT1W8zs>KhDg<|M;;a+?`t85O0+#a8w$#j1FXR9FbE<+d zs%NFKo{6`29_5-SZC(Uoy`NR)OVX;!%v|*@?gs0jZ?oU!^4CnWNlUgtsRMJ} ze`H%9<~W|uxYjAkf2_#RQd1+h>DL-tog_(5AB7s6fHEqVQl?QJs$!9g`Ev;*EmTc- zY})nIj*T;LH?E;GwbCgsl%$k!3f&^wE~Fs@&B!au?3eaj(JlC?D?r_~ZTKV|T9+2gg zk(G3d@3d`s}4uZO>|(MKI`f{ALcNoxxr%!P2S9a z)0%kPQ}YC@sb5PVXyOo{i2?jeo8%qXS1+B+?6>U@)4k@oqch9!%t@Knl8tPJJ3S^Q zfG8$KVyFOz?o><>9<68Gx84WedhY(ro**Q!(8q)h6?MDEm=9RRC?R65=)?lWCCu=@ zw=o6&&_eIsV$w6Eag<_=LZO$$l!Y}znBk>wV?I($_snxlcKwC)Oi2V#jHv_EIWKE9C=29IzwE?LdnwZHh*Fi=M7&uGN@z=6cXc?aW z+6ll*d-5qqmMzQ6^j88HV2N$4rGHk|V9YtGl+?n*G?_Er6cB%Uz`03|g1Q0t(?0zj z0tReiteJ4F&}S;1Q{509Wmr+T^Yv4;O~*&$S&Ekp@Hc=ZkBcX)~(w1$e5~dm0@iykxyVa5%{j-n#mO2wXtLb&D?4fz29qli5buA`PJ0)GoME@5Q z8U6bETIk_4O;eAlU0CZwTRte7bpFMfGfN1=9y!rv(feG6nz_T||5ximoA)fsSC^!W zY{*CNNqXqH>3uJBPuk_oU8$zWW17p0CM#Hk-9R%`%8J1Py$Gfq#CD)s@raIdSO~b2 z8#jxL7-`VkVcK7Ymfl0^rQ+5j4i@*xX_#i5p1(HMk$GNH0ue>Y7M&-?9=I0B z;Qij(CAgJlk&VAi7N&l**yu+)vG54=s7~8StYr@1Yf-Rc7~@{+yDMwZ$R2cZ2Szmn z@2WxPHde0_I|v#FUIp~T5T|f(|E*A`Yv2!AOYO!2pl2|s7*GHxR4wTrn34_l1%qnA zoc2TJCt?L=&?uM_yK1xvC|8{)!JG=XV2vF?5nKqdi5dlht5_#I(8`eg<24HhlVqm^ zm%+G7Q7hf9%+s1EBb>o*7iH$_@NBhwtL0lQ-|F+NKEJKrUhk)@KL4r%qMM`7Kgj%?rFEZ5o0NqZ5qdS`1VPh< zwX>HSyk&z}XBL`TODkynt&&gXU?5&62JiYWp)6H7_r9gvK$JUxhJz^~0r}PbZUe z0-FZCN+!r*Qy)%&lRyp4hiJTxk)qDP#cG~}?im!Cr|%zJDOFE1_AE5XAE5~gT>agP z9YasNhH~ITc02n*C*WFoJU#8uTK0gG&D+|SO?IbjIp9b;YEor+$2}L;a|$v(aQ}R^ zPQm3^ITIdXfd$pxBM)L` z(<12DDrjXiGKA(j+R~|F@U+#5@u(p5WmDXv`mFjKIc+6DotJIyhd9<@BJ_AWyP#JQ z!S~D7Z3WbZKNkeSb2tYP4fnIs3!~0kgviT(a54#A)QCq#=HxwYnN9| zqqR}<)M9BV{!?(P%k?6D`Du()oW`h6f^0aExigfZv_xu}f1G%RP66hDH2m^qT|E(J z;I*o8*9x7Cn2oC(mijiKXZXYO9zvpAZ%j~ zMD9m5)X^;r8aI#Nbrbx>PCM3r@@vm7pwyfNWhZKVOf!92rK%z;XUamwH&%wJ$KB8A1v;!s_TQ;pB zO;{sn^2sGMA7X|ks%@T|*PDPgBSIr3ua+H0PS@=j4kbm{ByB1PYhkF`uqJHTQOk~6 zb`%ZQvZIzAwd|-h9u-3eYdlK3^VWEjS>sV6q5js!qx-Qt7fA&jddQK5_kg^mC+W~x zTmAaS1waDyJ^^%()U3dGmJd$5-YkG4&JGefuOD(AkWhtw_*4}-_Yk=4db1{E9;S|C zPY3lQMx=Ac=FvLH(b#Wi!fXvo5Obnmz3;AjGZpg=4lalY$Jz^x`!ZtfD^*^CnfjnEZQT{B2WsAc~lk(O<%7zE5Mc=6zwc9L{&kDO@2FjNuec| zzCC%QCe|r%%oiDHGNGxVbcUC|ZYcS2EtaB;qTNa?PsHZ;;k+!p5POX?X=z5gjQzA!mNhU9zqO=Zc^@l`2|N>SsCLonttQ_Gui#$-A=0y`U*v?`hF@}fq?Igzy)l2#eoM2!A1pu=w4CG^{ZWdbRpexMm4~UTrz1oGyt2^onrI2#?HGsIEP; znt--8wrq_XXp1!Mh3d+>wFK_mYCX`uXVN-eF;=%Q=pAH;e+*-3u0JV07{`J+aa7*p}7~Hih!Q9#xDlfdYW#jVa zuai&H)E+_XS*`~zhslTlq@(u}qG9ZD0DA7)pmvy|AwB+YTnBX9DV%QGPL$dXPN|Jx z&uB0jOQhFY=J+phbLS+0BaWjp=d19E@r0wZcyG(cuf&0)Lz)C=WE-VA|Mm=F_Y^e! zF>dT0(zK6K^J|=h7qmK(e}kIAS+z$WA(W!u*4B-=LES*^%j)szPzp}i-n^tWP*I!k zNC~5Sx!e8Ko993Ok$=~?)~aoyGPN7!pa1ElP}Apc#DFy#?PQ)q`@>QRE@gQT5wez6u2*j*=sf`+8YNI;B7FGWE!f4aKYKl1&}Nf;^|sw3yK(1-UDRL3Kmn|9B= zE>wr0UZQ-0&bFXxh80nWukEkR;DWGH*~bIPA;4eF+Gq*Oy=Q zyg}W-PiL#|-4CVUFIM`dw#Gtf6M-e6yYHtfnocdv9lxu2?Z35FZ4>yVU3Y(O`8m~n zY)K4W%$3+O?Yk>1XUf=tceR;Mhp(ZwsE4Ty#RrNL54aARg8|BewrGT@ElRvUypeC5 z4J5zRxCoC)B_dzOiF~Os4mJ{qh&P23@gg2nyP5*EpBuT@&6(fX4otr~)$J{NnRaY2 zyGCPlB2$VQF>(fRknvTC3w;Sm#grQUP>rzAgaflP;Q;H)$t~@y9}!yOhe#~(L&TMK zN(Awr^Ogg&w{Ddiv&v0(n*XNjo3%GWyD{IBy%Cx}x4qGu{?q;UZcKDLNcUji}|T?@k_=?4;Py6gzsxqSQs| z^oM%rv3FAJok>!vq$YK_1F?QMl1>49?t%P-ha_7q&`Tdj*aqp8o;QB#4W@z?}PZ4Ut;suY2A6k*DC ziwNUK`mreth)|xN;yanbx0=G8P2nFPOy|`<9T1@F(We`P!U=T1Kep1@BB1}}M9EhA zC&{*N0%RIwPE5M34Dn_8kmn%FAnPD+Lk>bJAZH;y$+jmE(hbrB(i@Ti83CC9$%i}# zSq51Lc^h&NQUN&&@kzG5iI8rP9+2LU49Ez`1V}#QImj}|I>_6QgOCcyS%?q+I}y?i z(gV^Pk^vb(_u{-QMk3$%@h!6CjLJ8Ez1H^^y*B+1>-w$B=bJumUH+Z+O3tW6Oks-u z`j6WOBxh8}?sy@8rM7_2|3Jp@kRRemote source channel plugin +

File source channel plugin

Introduction

-This plugin receives I/Q samples from UDP and copies them to the baseband to be transmitted by the sink output device. It uses SDRangel remote format and possible FEC protection. +This plugin reads a file of I/Q samples that have been previously saved with the file record button of other sampling source devices. The file starts with a 32 byte header of all unsigned integer of various sizes containing meta data: -It is present only in Linux binary releases. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Displ.BytesDescription
04Sample rate in S/s
48Center frequency in Hz
128Unix epoch (timestamp) of start
204Sample size (16 or 24 bits)
244Filler with zeroes
284CRC32 of the previous 28 bytes
-

Build

+The header takes an integer number of 16 (4 bytes) or 24 (8 bytes) bits samples. To calculate CRC it is assumed that bytes are in little endian order. -The plugin will be built only if the [CM256cc library](https://github.com/f4exb/cm256cc) is installed in your system. For CM256cc library you will have to specify the include and library paths on the cmake command line. Say if you install cm256cc in `/opt/install/cm256cc` you will have to add `-DCM256CC_DIR=/opt/install/cm256cc` to the cmake commands. +The I/Q samples are copied to the baseband to be transmitted by the sink output device with possibly a chain of half-band interpolators for upsampling and shift of bandwidth.

Interface

-![Remote source channel plugin GUI](../../../doc/img/RemoteSource.png) +![File source channel plugin GUI](../../../doc/img/FileSource_plugin.png) -

1: Data local address

+

1: Interpolation factor

-IP address of the local network interface from where the I/Q samples are fetched via UDP +The device baseband can be interpolated from the channel and its center can be selected with (5). The resulting sample rate of the I/Q stream pulled from the Local Output device sink is the baseband sample rate divided by this value. The value is displayed in (2). -

2: Data local port

+

2: I/Q stream sample rate

-Local port from where the I/Q samples are fetched via UDP +This is the sample rate in kS/s of the I/Q stream pulled from the Local Output device sink instance. -

3: Validation button

+

3: Half-band filters chain sequence

-When the return key is hit within the address (1) or port (2) the changes are effective immediately. You can also use this button to set again these values. +This string represents the sequence of half-band filters used in the interpolation. Each character represents a filter type: -

4: Stream sample rate

+ - **L**: lower half-band + - **H**: higher half-band + - **C**: centered -Stream sample rate as specified in the stream meta data +

4: Center frequency shift

-

5: Stream status

+This is the shift of the channel center frequency from the device center frequency. Its value is driven by the device sample rate, the interpolation (1) and the filter chain sequence (5). -![Remote source channel plugin GUI](../../../doc/img/RemoteSource_5.png) +

5: Half-band filter chain sequence

-

5.1: Total number of frames and number of FEC blocks

+The slider moves the channel center frequency roughly from the lower to the higher frequency in the device baseband. The number on the right represents the filter sequence as the decimal value of a base 3 number. Each base 3 digit represents the filter type and its sequence from MSB to LSB in the filter chain: -This is the total number of frames and number of FEC blocks separated by a slash '/' as sent in the meta data block thus acknowledged by the distant server. When you set the number of FEC blocks with (4.1) the effect may not be immediate and this information can be used to monitor when it gets effectively set in the distant server. + - **0**: lower half-band + - **1**: centered + - **2**: higher half-band -A frame consists of 128 data blocks (1 meta data block followed by 127 I/Q data blocks) and a variable number of FEC blocks used to protect the UDP transmission with a Cauchy MDS block erasure correction. +

6: Level meter in dB

-Using the Cauchy MDS block erasure correction ensures that if at least the number of data blocks (128) is received per complete frame then all lost blocks in any position can be restored. For example if 8 FEC blocks are used then 136 blocks are transmitted per frame. If only 130 blocks (128 or greater) are received then data can be recovered. If only 127 blocks (or less) are received then none of the lost blocks can be recovered. + - top bar (green): average value + - bottom bar (blue green): instantaneous peak value + - tip vertical bar (bright green): peak hold value -

5.2: Stream status

+You must make sure that the peaks do not exceed 0 dB. In fact you should have 1 or 2 dB reserve when you tune the power level with the gain slider (7) -The color of the icon indicates stream status: +

7: Gain

- - Green: all original blocks have been received for all frames during the last polling timeframe (ex: 136) - - No color: some original blocks were reconstructed from FEC blocks for some frames during the last polling timeframe (ex: between 128 and 135) - - Red: some original blocks were definitely lost for some frames during the last polling timeframe (ex: less than 128) - -

5.3: Actual stream sample rate

+You may use this control to apply a gain to the input signal. You can control the resulting channel power with (6). -This is the sample rate calculated using the counter of samples between two consecutive polls +

8: Open file

-

5.4: Reset events counters

+Opens a file dialog to select the input file. It expects a default extension of `.sdriq`. This button is disabled when the stream is running. You need to pause (button 11) to make it active and thus be able to select another file. -This push button can be used to reset the events counters (5.5 and 5.6) and reset the event counts timer (5.7) +

9: File path

-

5.5: Unrecoverable error events counter

+Absolute path of the file being read -This counter counts the unrecoverable error conditions found (i.e. 4.4 lower than 128) since the last counters reset. +

10: File recorded sample rate

-

5.6: Recoverable error events counter

+Sample rate of the record in kS/s as written in the header. The reading process is based on this sample rate. -This counter counts the unrecoverable error conditions found (i.e. 4.4 between 128 and 128 plus the number of FEC blocks) since the last counters reset. +

11: Sample size

-

5.7: events counters timer

+This is the sample size in bits as written in the header. The reading process is based on this sample size. -This HH:mm:ss time display shows the time since the reset events counters button (5.4) was pushed. +

12: CRC indicator

-

6: Transmitter queue length gauge

+Indicates if the header block CRC check has succeeded (green) or failed (red) or undetermined yet (grey). If the header is corrupted you may try to reconstruct a valid header using the `rescuesdriq` utility in the folder with the same name. See the [readme](../../../rescuesdriq/readme.md) for details. -This is ratio of the reported number of data frame blocks in the remote queue over the total number of blocks in the queue. +

13: Loop

-

7: Transmitter queue length status

+Use this button to read in a loop or read only once -This is the detail of the ratio shown in the gauge. Each frame block is a block of 127 ✕ 126 samples (16 bit I or Q samples) or 127 ✕ 63 samples (24 bit I or Q samples). +

14: Play/pause

+ +This is the play/pause button + +

15: Current timestamp

+ +This is the timestamp of the current pointer in the file based on the start time, number of samples read and sample rate. + +

16: Relative timestamp

+ +Left is the relative timestamp of the current pointer from the start of the record. + +

17: Record length

+ +This is the total record time. + +

18: Current pointer gauge

+ +This represents the position of the current pointer position in the complete recording. It can be used it paused mode to position the current pointer by moving the slider.