From 45c1d3a553b93054a83ff27b3a61b4317759eae0 Mon Sep 17 00:00:00 2001 From: Dhanya Thattil Date: Fri, 13 Mar 2020 19:36:23 +0100 Subject: [PATCH] gotthard2: burst mode fix for all the registers --- .../bin/gotthard2DetectorServer_developer | Bin 166524 -> 166532 bytes .../slsDetectorFunctionList.c | 136 +++++++++++------- 2 files changed, 88 insertions(+), 48 deletions(-) diff --git a/slsDetectorServers/gotthard2DetectorServer/bin/gotthard2DetectorServer_developer b/slsDetectorServers/gotthard2DetectorServer/bin/gotthard2DetectorServer_developer index e8873471e1423d6c4964a9efd05549acf0263754..b8b11d2600e542537062c947994d671b468745d0 100755 GIT binary patch delta 43448 zcmch=3!F{W`#-+do@2}n2Xp2ebDzOr-0zy}iOFS*OUOMWw_GM6M&X#loE4tqTP2Cvg4$?U3lkPbSYs1bjj;MAERwL=Cae}= z@g^)@!-fXeGJ&;8G17$9C#;$YYfM;}32Q-EB@@=R4Zr`MV~BK5Q~n|*&}ubr3X*5T(9Y&HS%W=Rfydty%5tZ7<{cu{BlyVkYbY4}m#0(@`Oh{qc&OdRtGjCQ4Ji&0mL40&-Sw)6 z{Gf+DnNnZi+0)|qntGw^7ye4UWRJUkh~%DcQ>`y0Ub2g#N>@Xr-S~9x3Ra7bzLcc9 zEBSf%RD<^wRZ@#5blj^A-utn^yTgM0I^Iqi@9kJwU})NzynFr0tb)H^Ke>nK-biVU zupYb3jYfmTT?|5lEVHZqpf;A??IG=wywxzK{(~_EijNX~<7Kvx?afua@B-elK{7@N z@7EwTETlj)mgsg{7ByJM{9C>DPETBj?c5pgIi;U z(Zhe|7n;;&fAFZLwPiM)r#DTOD^2G^@ewwi&uN+>SDDV&H?14v{v}u|`A&>9MD~|F zaXLTKv`s{d>1sZ{@E~aof38Vne5>hN>*$4g#gu6$zY#4kL+6bDnBxvZ)-7I=BR7Sd7>+KwM>y;yN#b| znJjO+jaO@xcH<>8&DJ318AGxn_WAC8?$*hB@!qx)OTH(0D{M zK8waap;1FiW41|yS8bQbUuivBF1-!YSR8NG#_p6piSsx(9WA_^4Ge{5S@mOeuNZPbyOHgBGYom*fpiWSk7%*&;py$0@u+3e`qb>ZW_#gPP^n%6G*|B5^=_s zmx{rP?sF|qFRU62zr?l$t+82cjdST*K}E@WY9%YMl&rsAvelw*mfR6l&Dz@a(h{np zWaFrW@NOEx+`=66pJY7U5M(`l(Rz@Az+~za3l9A0p7^1 z$KUH(B9`#0dC}x7XikE#aOdyY$5jUapZW-JUd0HZ5umPn!-RpMuku1DnRIiMNSjw3 zdjBY?u}G?$>erw&X#vTE{1?eg;j`|F=cl?=k!Pi0xlQJ^x`zk3zYFFGO5I?wM4`I9 zx=)rDrKt<<$?mu1UfOPVToMyH{I}o1|3>^D;4c%;cGw;8gjAi!-?BU4RjGU>;Aj+; z58J^<_lTFDOydv7B=O=Nwd7~h_^uvl@{4J_qDNo(f1 z17zPZezey{+50tL(mOTC{Y4DV{;UB%*}E>=%ZCh2s8oUGS9p^?wRz~M7>_V$)$yzb zGkOtSx>j_lm}oS^cJxX7%yHMS&kVyhh24j+vBN$K79&?oBba(@FCh(eIxy+=gGtzE87bzN{k5=xajoYXiBGy(z%FqF6!yD32G5cafU!_f!QKi1Vt4Pm8NwRc-fNn)1&JTWzV&;KGwbbV(G!_A-i9tQHGd zXjpI?YMCoy5{~y!$pfO%REQG$qp3M2p~iht<9?_yEg0rn=`)WhTXmWgMUkE`YK+MY z>1vkdblj}UQab;%4>h|zT`ZwW=^~aS=CBCrdDVRRC-ds?xPGf;XF7ko-*7oLohS6a zA*bMDK&sq2op&8DT+U42^4fqXCU;7Q;}BQPd9>uX^CDU;>^Y88+mm1?s9QDKQ=5^elwjnyl1SuN2DBA+m@t_6~DIx zSsf!a$P)IYi|IF5)8kj~i4GINB*qW#A%B|A?;oC;`PJLTtab#vKC2xAug_{H!0WTx zci{C|?G!&aylLGtZ`*@qkt^oNvj~;Ehn+Vn)Wsk6iM_AHZ0C6Dy~(nB67PO*J$8jp zy|=n->esWU$}VzlhYKwHQ0DI?p7I2%W13AJ-0yUGa} zJbhGyFyC__lH=Esa$gIcKk7BL4tlvo9rSXGI_TvVbTr!_=2Lv&=zel)hU)8l zIXXsUcwux4kzvZ1RPoVkOh36@1{RE2a)%7w@V?t@?xwMl*v8u2jlqa5?2Gp`l6!~> zCG$)7RU74fIRt~DvfWuxQeIW|x^mDq!H21hM2lab+(l_o54G(?X)&XzyeO@{?ugRr z>&_|gsHyPie9!T*V^eE*d&NnP9|6I^bDqM2(2K7dJ5C;y!E26dExSkX+;LMwqye## z^K|xcK5?vzmyf$so|wT~jz>E_rEW;=(gHqed<&ud)c9%g!-zYfi|lR9hfEkGFUa6; zPiPP#np});UOFb;7H&s2Rr9;bk7w{f`7PwN8C#a-SAkQvia&Gzv+|}4o;`7{&6^Oa zwazya-SRsbJmG=i@&_4P<~;CpkXY%GAB>UZ{ZO5DuB45;Ds|bMZ1@VN@C%1{E=NQC^%G1_E=Mv^6oR&%eG9M zS~TdauPipx$|AJXk&I70+<6^SfmlBDsX*63UplZf@?o*HJfBt^bu{xGb2OEXIhwe? zaWs~`aWwKBaWwQEaiqGBI2uStY$EJzHp*Y=u;@$YS*(hom~8Q>&U08H)xHjU$1Z$T zm9GL`A4~Rk)Fn(EKh-m}mGf()^R?%=$G>!btu397!>IaKpo5@8+2!iYjw1kLkD{(i z(*BA$UdLhKso9DgUzL>GI$-)~ulWg%gQ(!4igML4uJxDezvpHSfPeiD#$s!B9z=$Y zuPVyTPJ^DA6D{OBO?z`}lhu*pVQ3A^8s)S|s;2__IuC#0KfJ0Z*dyu~pC-!b)3!N> z;pBg%Ir;i(5iKgoHxq(4@!Iev2$k=2==68}H9 zK%-2aUJz$^Mv=N_LY;CHErS);Z;40AiKE^K@I7wkvLs=U{=MHZrd01r-MRQH$K$45 zDPh$W=e6IUz~7h({EfdWnGOC(!hrY`VNv?9yv;NeGfYDO-0bN4nmguvwdhfi8()4i=CLZvdHB;jbr&S!EIKQzx zIg>v-KdGL`ZUtp0l2NCiTSlwJ=1m zhl?EYyiERcQL?;5EiP}iAWr58T#zQO%;bv}w2`09o5fz-Z>=6?wiX;E$l6?&lKn8;lfK$SD806`L_$SxUTs1Z4lFUCpLEA%^`3c&7!srQ_M~(a$f#yeO2MIGjLi-P4=0|Adgqfe9eMeZN zseq>mt7gJ}&a9`ES~X{?$wgAc)Zwq)?>zs}XTxsHRG*-^e+ko`pzTSYB9m)b2d)Pdj>9y4-FS@3$=3kwyyT zP$>7nzYCR++>&M4a{F2Q(`9WO9Y}$E2U3WBEWy!@LQHEXqIQ3*x1$$@z$X(v43+WC z$2!P^X7Ou}WyyEX;_1s%nvWnoxKz%=x?Y&%gzqCBK6;Qn6!)$Aqr#BgIw;@OGgQ#AGhbRBj&qCr%{owz0U ziDV|bpWyjQkGe-l11EgqI8D=l$^D_(i?afsW&DIvlJ)Jo_TZ|tt2qfC2US>(B-{7k zLx?{O9>r7fv*7ie&$)N`v6X3_(ANU`)V&i^D5yVZ1ZW~?2B-+6CUG7~ps7^;0(iJT zDt{5YUXqWT=UN6cG@On|C616BeAVhglmS>+#^V}9#meLZe44_k>iy%Dbmm)we zP#sV+PzIIoVQ8UvaF@`4tFR)W@oHi346_JYbl<)E{mD={IiQ}P!JsjqDIhOsF=!=dEoc*HCulFI z3{(y}3%UZb?LiBGVnOvmtw3&29;iQP1ZW~?2B-+M!h`?TfHr`(gLZ>TK}SHRKo>#M z2WSD13seWx43q)t4C(_K1{x1402P9kfmVZxL0dsS(0a}@ zKodbTKt+4e|LS0nF*2IT8XpY4G4bKxQ;Dwuz8>*T@O6lf1D`~EZSZ&~uBKTZd<^l8 z!MliW4&Fh0TMvX9BxHiGM!Xw*1o0ifhZ5fzJf;&hgFNs-#Pek1r#h<^k8KH_(R|B!ee_}#?s2LB%Md%?d;{C@Cn z6aNMH?Zkf#{tcD)NVa1THdDY!@UId7Blr!(p9B9g@t44_BmO%07l_A3GI$N~!Qh`J zJ{;W6Utf?q;>L-31;Zw9`I_%`6@5}yu!Ht|{D^)zn>KZEc) zz)vT>3;3zTdwM{aOhPa46N&E&egg4>z>g(<82Hh|j|M-2_%`E%83D#~$2@ggppoPW*oGO^E*jd_&^@1HL}---548{2B1c#QzFDf%t3SV~G!X z#2#FW_{!j;1n)uZ!y(k9fNJ3F#Mc0ii#KWuxxj}J9|yiN@k!v}UaC5E!877h!QUV^ zp&9sV#J2)}h4|aRdoGcX4&egvZty=7e+T%p#OH$lk@%kAzbC#g_-~0H1iqa3Vc@?Z zel+;6i60OCkj8s#lOdE*z(e3aBYr0M1H^m5e@y&*@R++by8({{O656tEY~W(5^A$~Xbmx$j7el78zf`5+q zGVsq3{}uRE#2*E}lK5{u5FRJt6!_)D{{((1@fW}^CjK(`1;k$mKaY5Mwmo>}g=ZKD#!< z>lyC?SlOaj4lKli{Q)f0f+ha$a)ep13}E3FtjATCBf^h)v>HDMu!j^Buz;KKKgBuSp(EwF! zDX=69wjNlr1v>z&wgo#6td0fCs&F~#TCiaixW1EO0XIUio&_rfR^Nif`&^C&7Ayl; zss+0TSVIfu0oF)hVujb6e=Weq7RC30HL+kn0BdT&Lf>=Y$!y>-ZV0To1?vK=g$eVB z<{t;Jr3n<+qrh5Ou=T)NTd*)N=rKG=so40qbPJz5>?Sg2^Aa99=9}b6~j^tS_*x7HkSIPo4#Q z5@0tAwhdT!3w9h>4+|FZq07W^te1v){LMcdU~h}!Gr;;-u${o}vS6oy z^|fHZdtHux7OWMp{s9>JzbC)}0ia}?1#F-NdkWYf3$_>7U<-B<*xeTF!H-;yAr@>2 zu%R9c*m$4IG0cMX0d|iCn*eOM1zQ2^UJLd%un`vQ1hA2Wd35U!{n+IgWl?MfY_tVC z1#FB3WBXl>`z%;}U}G)VoxsKgVjf%9Ph5`ifuLT zIs$vZf=vK6$>#~2GFJecY*E|;Y>EZ@7TALptoo-e$5ac}7}zumHV9aOj(N!Cng(#X z4ifevu!k(zL!~aq!xpUl7cR#P3pN+nObb>FY?cM{dIgeN|8IlLCdq|aTBM=V$l zu-O)DDzG^g>@xBwv|wpvF2`J}|93aQc^1Vbz~)=9<;bMSf_(;Tfd#t=Y@r29L17m8 zG4lU5Ad|&@Q1kzO0QRT_3;xpOSYp9i0b6RpdIDQ!!Daz_%z~}*09{sSW{q6Sg^Z+DHd!xu$909{J)m~K50?h1?(vc_6x987Ocu4mt(aBYXR(O z3+4g#jDczX-{QkA$Fl~g`hUlPt+8NDzH&L9vtZS~b~&E6U_*etV8P}9TWi5y`5OM; zix%+t|F|6MELiU&F2_q2Y!|R%3-%MRmo1od)a7`^f)xT=FEF$JH}IItvB9Dk4(wG6 zwhuGmMhkWp*lQMSD&lUkU~7TBZo*Xm&j)a`2^9X{31C|cY^%Ux%UzDG7Ayv`W4Q|c zZr=pn?X;aYcmwC~9r&kP9h&B!9^k2(f1J1Tm){s8M|9vd-%OFCOc8Kj)_KkJ#P6CK zp~?_DfBenWazY2*a$B05`nM5wY%6uN3ep}kUPh9aaoq-YVcZk>Gu!W#(>w5>9S0m4 zq!5rN|9(epM<#{fCNHkd>rvz1nk^nsKL1v2`F6DgHPqI?wGZbFy~zCBTk$scKz!vC z7k7ia*J9N#WZn7pz()%@jc4m%36^B)@zTTB=;j#q+lkY#~J)|e&Zcym0ok2i@Vi${%UtG(DOMr zhz;UTzuQvesq&3WRDMYnmaKReu`2wrlA%Fp1EqwsCd!X8tIczK_0=KT zh`9MxO&nx0+W@s)?as?E$pyUQ?reF8$)Iqr+ zDYP5G16Yfs(zg*|OV^EbKCl|T4FOkj86Zj;~s_{PIM_#eO4#dREoe+`Sph>w-^iJCIiNTuuL9y+;u}AL>HWk%_^4s%8r*h8qB+6* zz{k;j)b_oI6!A?Ut!0oR+D~m?obfp?poS=iuRvTW@k+K)+8vnqUZ+?B$5h&(8esJPU$tV{Vx-3p@zJIIqH%ePn6?3^b!xeWm7{l~wqsUx||NS;q#kIietHJ9-|E<|E5`cMTYyF;tqG7>}a+kfJbrG4qS> z?Tas*-7?2t{+wf=Y5lj;{Qq8m*0F&yzD{iPMc^EU*$JlKMj)FQtwI)6C$u&KG^v4w0-HivICbu`2dr!M$Z?1B* zF4N|JF>if&x<}wFiU*qNy?PWxEM8~YCZ`n|&)YHzaU)yIWYyrm(jF$uWcYy#)w^eE zx4voYDu_+j(K}M%X#$|aN1aWPasM^zY;vk-HuKs)Ov0B0!ZE92?eI0j&D8tXl!}?v zoxvBLofje0)gZaL#LM@!;yr(A739s0<0U`UibH3qv#t}h^KTm_i5h1!AAjekn3$Vt zjDXvUubLx;S~m^vhuMzTJy$RKrlFm1y=)FoIhS(t;I;^ULImGD?|MkvQ(5GF^Kd+B z^-T&B;Whr8JMZ}Ox~zaHCQ^6osQL2(o4-(8B39ix&BpwWsJamf93N&sRlz>x{y5po zY}jXt<`2kJ(~Q5M?x_B;rt14XdLjL0xgst9((Cwj^vzV3{HiV?8-Ja2vruh&$Nwf2 z&iA7i8uE#kEITT5g~T)-n1f~F2%HT6D{axNJ(O8{&ncz`w{5ll9(#`+x(^Yq2Vy#J5z2b+2YmN1(fKsAGMH}#spJpkhh`m+rr3Vo%qL8x7ZUDJ z;Oyd`cK@`8yVb~7;w!7}^uHDU56UX6U}GrDH=9XH80!)G12uKD(bU-UJ1^+x0m>_3 zY>3uTzXJc&k4J~I7i9Sk!?zFYq3^@lP&wWd9MC~ZegyeI<~{JO+DES+CgXPn%H`;SMsZ| z>?WN_wI)<+&d|P8Bo^kH8R~I?IN)?v+o_#a^)TXIt;Uv%G?v&|ZMpZK@ln-TLX&}% zb|lh{G^HJRleEWbX(YSXSCO36W@ul2dyo=vAOVM-fO4TagUhKNOeiC2um95Dp?4Or65sb#fgQSs{3{J&lrpQIxGuhV_* zzfac~RgZRM;YwsI>mnD=RffjuHYL9Nd&WN{ERSWW_1t&kof>#egL5$6i*rg1!wWBf z;mg=I;9{%by-=Ay`*A%sR|${Plfrk1ou~atWyN9o@ZF(28^@v?A5h7~*QI~dk3N-s zajc*G=^aY#c=nvlH#$;M&M#nfm7n5S4|{;K7Ar}7*MC6sXIG6PrFa~K ziFM2|2$jIVaiB8p^EJgm7|r^4qt@%ni3FBb&G)Y9dD8JajK@R)-von=RqzA*>M1i5 z*)qqkR1{Ll(bm}HB=&+oh=wZ#eQgfXEkld7Jej@bkEPqS7Sy*kOAGV1MSU9MpmmP& zRBhIjT~zkfW^J@plQPj(RTNP_3stXx!dbZ*Xfxysq}5>w4i+5neK#s+ejPTpUqI{Q zx~k?;qT6#}25Ocj53?$zqgP7bWRr)f_DY1>D@xP4tU(ZZn$9D|T%;Un#zK`(>auG3 z&RR@T7^~d_3K8`;g^2p=Li~lB``=YI{;%^fSN7+6x2Wu+_5VLsw%%VC;ue)vvMlpy zT4NTI+KkfD?N0AKaw^pdRo8lNeJaaTd(VG{J5XuX1id%1A*-j(=avlA3A^22XK?EY z`{w0!|8;Wa@_HKIw7ku3S=26no%XGZD(tmWfW0Q@_DZJ&y(#H`Fi1KzyQ$rXCzXG{ z-5dPZ`P{-Z{yyE2|3$h=yOu2RAC)%$zev^eTbZ7oc=@$M==`Q|1r7PUF zq3Ti8A2&IQ@;j57`?zK*mh5kCW1Y;tRg*N&|JB#k>dlGLf!+u#kg?wtB z@m{j0!DC;c;%mTT3!?HbfX9ra^6S83*r@!=^OPQLmSng!ES(Jv^j`5jBy1KYrL(S; zHmD`YZ_k_^KNg#JJpL4!!-r9MkvV)Cl^2hY@i&fi>*Gi_QGNdQW=HYf2A6m*vUrbz^C)(+Bb0YDuG$7Pd9V)qGObsN$78Kj>~7Jcu7CYJCyaU-C&=EIG=(0FMXoSPrk_ z@h9n9puCdB8p@|kMHg@U!JA~L=r^)xr&ujNMY$uJ^)Oq?Guf;|rAul*eV@(ZyShjG z3znkX)JRXeVWig#BXv*u7qS-b$5Y<9-D;#h)kvGPXX%yX%3_$nNK<lhE{oDvFJy?#lo~y9v1sUd)8X^zO2M|U@>xNC&RwJK_`9V z@1)@!*u7aID|qp0R53WPIZ$~qIP^gyveE~Q7##YbK~_OItWEV=ozxeWsD_W%v-wUd zxj81IH@{b8qB1Lo;TFjT<%t}>Q4Ug#()@N2v1czg4uhO(s^}`bV8n)@DQ>T*?=Ct9 zV?6>r7^wr_BNsScjl^>BI9z>01D@BvmL9Kkxr6mHTcBzN32G;3bJgkptr@7^#y^@+ zN%K~xRmP64iSuqY@_5>X!T8&SiN!IcGz>3EyPjqHI zDy8Tq>FlM@yxDNRVGd2f>*mlBylxI{!RzLb4ql%_v%%|gXwG~who&iyc46)0PMwqw zyRcljhsi7hrXwXS7qj9pQ*hwavN4z864o!uzFeFpPE^%8s`i6H;`~lGZrIOvWIth; zyzr|Psy)@httAXB8&1poHgpnUV(wfZE_)dbj?ME>v(5b0m9@zkGP*ng`i@h z@%UV3l68DFu!8%QQF;D`ek+f~QDYno=kdl@!UH$rcWN8)qZ18t782<*PV5cm#TR;RC|Q>7ycDWKeQH( zGTpY4E{6Co?}R=(Upr@3uQ_SAHUrKl(W%$?xdY-3o_NMHRvFQg*@N8GLX~MfSp%aY zJ9;vYx$D~B$u^qht9P>6N$aRSbcCTT$;bgO4HY+wP@k+`IM3f=YRkYg);D{xblGPL z#tY$`zvu?2ME8b$eqsv7aB!aY2S3!C-7gK?LBQurMuX@<{D4Bi)D*f&HC?j%s?_T^kkH;?_$wG zzG$Xl51g7#{T!_Yt*j*xV0h)zDP-0JBo!`?HqvZECP) zb$>D$EhX{FIB_FUy$DcKtE#v%7SgpyvpR9{OKanRQ*V^zs%~`gL)q{^&$FdE2`?GI z5-Rl$5sP}%JuEp`{050{l9F`~iq_Xua@q-M147(LQ*Blp$L0m$d9?o;+23wxuvK4J`3%DdGj#x4eNhCgf&!zGS@g|L-peX+NzJcu7e7T!6SFly7Rn zz|N;DPm1Um&tGoFXHbh#eE)DapLyWKN zfnq18>hG=^)9l0Q+kjx zWF%|*x6yByqSJb;&MAYGqa&H;Z=;8F(G~)cJI%XV^lj@#v6}23#!r+){7V=gmuP7i zg+<&%&m3nk!Z&~l z|3=Saj`aUGKjksz38<;H0IMx6VGaK$a@k+B!1ZN#z0hAJa*~?94ho`Ps%T6-iM@pL zCzA>NL<=?^T&Q|2NYCsc2~#^qdT)`QrxhuhPez2IelnuIyaf+P+L505L733PTX2QX z5xkBPOd~zB&n5JJCcV|9m!au-gj4N*93~XWm(*U~f{e2$K{^J~Y!`ZXi@ln05hds* zJ$iQL*ZYz5W|3Zd($ls+rY6+)K2u2X4pPM4$BF%pKf#lf;8@b@OnT;nC{YpmrN7`| zq}P@7uqAY!)zkAp5id7aYtok#yOE-K8zK_aPn_~duLtRw_j*F_drA+7TBlf^s3qSZ9WypQZx$W-z*=p9+h-6+8lPls}YwxvA4QY+b{ zRkbAUom*F#J{4yu?st?Yrm`)!OlcscWOhylDO0Dhdd)4Fi|@Yp3owSFnf=W{%7JOD z=`C}bN>R*C?jR+#fTg##=5(b3-?A~~Hjkpxtt9o?-=J+z6|hkZ*K!s4A(kaR+tcT4 z`h1^0<%cPpK4;VC`wz43B3_Ld?0&~e%7aFXIz$I4Pt0H~@O3q1-wf8t@ieK>#S~IW znJLaXpHOmVLZz5g=sPZ?vW`^t36;&HLd%by$}CD{7F2eU3cYVxPlZ(W36(vhLW`iD ziicA1K;;0b&@!v1LMr=&%2%X94XdZ(rBu97IYBDa(|Rgi*3@yDg3R9BAmuc6QldRl z9%1Q@%cMe`PO+yx!WuemP!L%j1-Nk}bwkd(@#{!IbS7jmGQTNT4bxWh08_@eq#IpMxSUSetNtjPxVt7T z-?niMOJH(RuJUOi`&@32tGqB54VId#d^i{Pt|0#)RleKx~1FhC}N$M`hIlv z<>TmkEC6=zd&)Bl*!y@LyE1$sYf@Fbz+AMGxKH5Sqdc<^cL$+!V5}~_s z5oCNGSj5tT@Dg;fb>NL1AvGzgnhcWgozs5oRJms{j{VjxR8}o!qgu>BsnZA=;rng}WctpsfV`9Ni$Q=sc0`*sX%kiRJ_hyS^Gs}N>x-blg%nzt5#=H`tj z%-p=S2{SiueZtJm+n6wO^R^(&+`MhWZ!(lKNYUK9w}-1kxnoytC{Li~z4SP%+VCVSM0as1wci>Am>%a}9Xzsw* zwGMn!>p*w0)`5I(JG=7wlPuQpL3on%9y*a$ZqbSEV&%k>Y;zDgk$aA%DDOPQ8VW&K zT7@|kc@-RqgA_}`{3(&+U91dQ#rn$bFO@e}iMje~<=`ro(ERu!;|$`&B6Jxn;yRtq zd`HPtyj$+9n5FFpij|brtcT;AUM>V(pQX;wDA&T(c%b*YS{J)`&S#Uwb3!-1xuU$g z8q?`@igg3AZuk?tx*E^;Li3b_r(rfpn*z*ctB*;0K}SI6K{mXn*9B?>a)bJS#(-vk zmVx|c6BhC3ac?KgY&K590?a0sK(pB-5oR`<6vE7A(~vN;*)$`}Y&NY4Gn-9X#7)M1 zHYu9TCMQCS`_L|V+R2hl$$EvwY`f=K7QvzhMBqo4WBuQfQ_nDMvC5n^xHT+oRW`0+ z(=vzNR0nf{Hr9pn<=albq=fmy|C?XJDN~cEt>DByQF-w>=876YiJ1@Qk>MB5F&vF< z#j-6@Yqf3o^UTSjCX=$hzYupEpuF@2Hlc>0jGtu_kusF3YgrG^*RKcI#L5pb_k(<( zGSDf|b&!28=6+B+P#$O)XbQ-06Ax2Mnx~RS2s7J65n%x~@hE|2n^;bm*(Mai%r>!_ zFtbfON0`|r))8j5iS;+LiA|(vwuv`1n|MpJ2`?Tjz$TPC)?pUe2lYjUNvKP~BxUM4 zHedccPpMeP20F?}VrDiTsz?{VCs4&}9T&)`QSPm+|fo9E5DeoMbx_p#&AP ze9y7X0bRA>V{{X!40H-~9c15+ZUVIf<$;EQrhtk-{;v9&DroMiON5!b>N;ToUB#+s zW8d6W!GxK+Dx5HLSJ??Oca?)Mb5}(ZX6~wlDmNLvbx6_NRSl}B!?#H{b@=+Wh^}ht z$f}a$-H%=>!K_{4QNO`}pdlMry|9jtYQOj1rJJ&J18c%FyH``rzrreo<#p3M;BHlv zidXQ|wwEC%tY=ZfyOG?R(l%XO_H98Qii3S|n5DiX78A9ue>dsVsfVx_RbQVV{($%2 zEJ%`mja3phuvEv$z_N=;M=yIfDto?GcIDOeEYk77-|J6T^?Uj2KBJp*W&`W%ud=6# z()Cq5P+GwZx8ibwq5xSq;(R zCHf13ls8^uHET;OPU!ud!M~(9{6D%y!{% z%@%fcYoKnD#YHkqmTL9McN6}Y+Fj(ksR`qHmRhhqR503vQ&$b&#PEIK3@Qxn$cy}( zziZvB##hivvII^No%9j*6e9vQ^+mDj^5N8Rw6qC|g)vEvq33+jebXQH;5^eZ7^1 z)y#_h4&KOVCe_DhE07zM2kH+R0h$8xf);~Tg4TjIfXWbO`*%w6UN$>na^j?sqtg=W zjvqgwQDV->@%KzOfc(i}%G-PKR-&i(vbt?l&BXe{ADlFK%H#%ml%69e-FN>85l0J2 zoTvg6o!(VBca;dIdPcAOo7M~)|vVl>a zNtK(+2>2{j9wtvYsI+V-6b>q{Hk4iV=8{yY72>k7c>jpxKByFmP-r1EMK1eN`LdyW zha7uQiESjikGyf%u5+$^lg$+q(e$oyrY?=fGz- zt1Duz%$?=nDM>)l_hSuiRgxR-SR_njVLAUcDaRT_d1L|)TajO ze+-0CsBd4S|ekYg9(RahkB@KVZY20@i^!vu0qll&6o`X0PCi_(7^ zvioo%hciXmU0C`+QNs!L93BV_$A5zIcwUQ>E|;MYk#p^U#osit%i;Uk{J zY!4X)^hoDLgbT=21EdPbt9xT3N^*7d)g~CtVv_4azKGHlKu^^0cF1+YjV|d1*_UNB z@o314O$B-gaxs1vWTKj$Cqh~QpbSG_@6#6{=Ug$Y^aIG_`(oXp0vs0MT`{^yJ_UK} z*Z8?5R8kb^GUR2oaWF%&Eg1HdWW-N|?EQnfz=H@40W|y6s6l(kiHmT_1K$G>3HF9u z2BS%&4DW>;ITV>tA5MV0e?Dvkwj%TkAUE2@{QA#BF3N|EP=Pi>UP&$DsewfI05~;S zmQEo7(Wm<$?_G`aL5lDt65hMM>u%cdml?6wXkQ z)uMT+z%IyZwE}ohVo6E`a1k~zm=rQ0+h8=V^ll>d8aA<(~$F?MGH}e>mfIK9n(3|69sr3 z@)#7rgHeP6IHY$0tP~|8`F+THO$i=`eBB=&B^`y_=vCMaC3p&QnMwZ|R!kNBhV^nby0&!keBU&dr0~m@|tJS zB4~OMz6NqD%$$jo;UL7*y@wid6=?^;&o&e7uPR{L1W=HH1w@r2q^}^C4Z=^Qk$e*J zCQ}Ps5DAPi!ozX%xfJulUeb?+d=ZOVJCf5OyVk>ysRErL=XhY{+OVrB4FIsWpDf`+ z9frffw8FkUkrJ2$IWg9lif2KNP=CEhtMQYNub7&AJ>+Hn0z0HPA#XL!BOgNc^mO2; zm@+sFU`l5s8lfeKmljICYB*Y^@Jo>Qw}&TAawxt6Yd3XKGUWbq&?;2JhLH0x5qU|! zqmUoKK?Zf%fN+ez-R&{GlEN4$6q{B%4`dshSMew2iPeznw>8H7R>&Kc;GLXmc!abY za-Bv-3mt;&gIrDp`VMk`{Pt4;>Hijv{$HGKOdJ(Z5ZA2d zxgD&!NY#&!av*2?Xsn)jkedz1)J!!V3^{g=;V;~e^+(!p)fmU~A^Xs$Ybn8JArCG# z#_cANfT@5VK+Y*gp(%rdkn5YmPeWdO$S5F#+q{3KG1Gdg0%&E5PzUnaRHF%-Lf+oS znAti&F4)1O2+FVrWPQI8C(f{F9F;4x% zBucVFuG0e+BND_5y5b;@c@c9zWHGTcg}frmXc0H$oOy;z)&=tR5%3R!H2p!43pTpJ&K{}C290z%gDTAhv$NO!> zA>9VK8AgRZ?z=&@!{N|dYyjl#H;fi~0P=2*hjwJdGa%>nM}Ej(Ex-~0SKzfyA^ADT zIamrOlKcwfy@L%0mLLRUDgrI1^h zwpu44uP}AlMabv38(mfz^ZUfRJbHo-DGEUGSS%LQ0x6LDVEJu@41|reg6uwsE)X(i zx-7_LYYi*E6Y>aTDE_L;4he4rlIm14GR%iuWGc{f$X?I4MxW0Eu&EdPevtt(TqzRh zXR-mv*Y8FF#KeK{w;)f%OgV$}KZHDH2keC8FCiD90#iu89CCUxk@Z^cYVU6u`bn5jnHAt$yoYJ4~3{Rr2)Y`h4^RNRR2E2@e0 ze=Dq9&)``o*dM|$p$s-dUVRMRLJ>ZOyt_FBRhFcqkQbW@@IB<5+tFn-DlUrnK}LaW zk+7LWqeYVA2HPo0pfb*MH|)h?gDG3sKosOD z1B?RIhurxt?Nm*Kw}afXfi~9*IS+Cv!b7NqJOcn6F%=*matP+`os?lA}I1LZ#_UZ^X6|f7!OW^~qQ1#(|4FMpv z0O1bcv7s z3FJW@(ZeXvFvwR-8RkQ71>4aJI0y2wVyq(+pF{Tg^&QglkXIaruOJE_T(k88z!bcl zYV;1|&ZZKVLB5U+OK0km(~x6dGfqmbKps5C7`~yk(D$bJNsu@A3lJqeg&o!~3RjP2 z8bV=>U%??|K^|{P;7-WKK}3{vH{`)6KnRVVk&p{b@gIbIxUaF_m<>5&uF--V@+nQ< zqq@^;0BpDm21+fk3G%SlktrQ4yaBmzHdaCkFM(W!9gv%v_yA;AqS1n9AUAtUk^rd_ z*fq$pJKzmbe0wyyq>q?C$Tf=rP__ya5Ggc-+%r@7Zdw8@As6Ah5T_`-J>*SK;>eb| zqzB~HrWU}DZ%F5VLIo)Py^zJ`LLc6fAs2`i)?72x4!{P}Vbco8%jOtoLF*u|gtJ+n z3a|rmB=(dAB!2;UO*3OcItjV>fMJxEAs3puGz`xdcYgubOdAFf5?=T#`TRAAl3GLF zTHhGQ?IE93n@nqwJjjKZa`gh-4f)D6V-Xq+xsGXG@j~`~WvrTuAg_H9u9@CPPXj17 z72qYv%S08Jf;Eubgg?@#+Q=HF4YOWlMMfVnn zrJ0PZDu6Pq5#vP!tPxJgjj$k$pgyh*`QmUtbtr?(%%kwLpZvKGFX9vZZ(DP zM);UyV^kc6ydS04{R})ZmOL)(@!XWb?*Pisq#=;SE?0^}A4M9=a5Us%R7X#s0pv!l z;m%V5(jl)Lhgwm3-66Y|8Z+ro$o;V;TTJ0&<6!?G-Hd(yOehq-f-WJ2C6GsKHjdYx zhwL-e@NE$ee_uDkQpiUzRqN*l$0652>53@5Um<&U8_T>s9{oQ)+whK4;xRMzG)mYO z@>X~@dX0u9pb1R{=!o#11;+lMJLJQr@KKOM;2Y`{nhAN0*Vyo^^Z>Y?ZanRJ9`Ys} zKIu*T7UYwr1V4p*-XxzC;m0vjsD_szA2E%J8<1O>hG7&cP>u?>B7IL&02j{~&Sx6r z>!u94K`v--Or1j^hxpfTNty(C6EbkY2E-0&HsnTqV2SvvF4vTnKz568AtSs1@_ljUChvs2rm5jvegZktRDh$97x#zZB8rHA2D1K_2&NML zi@=Uc@4_08NAyECBCLjl^*;%~)+@$p)gJOmc)QzG1w62XT#7!{H>qPF555dLq44RD z6HNtL47uGk3|$Ie3E7PY8+jzZ0J)K_?*X_Kz|Q;8B-Dg^AV(fHCX&ODdtzSDYw#`P z&bh|pyI&#iH)ZfUWP2Cmj5s0*%P*Q7^NrdC36R})X%$qDW?BF!d*2vleIPgMk6I#v zXwrKj@86|JFB*4D%qn`WOigg?!R9tj0p#+207C0Xg=9a459+3n3@MKgc1O zLvA(LmRlE|Bv5D?ixK*&X4MhJ_@USKOA zprWE8A|Q#1WKdKT#Gt5%h(S;hQBV<(_5W7)>FJ&p(EIzmU!Lb=&Ux$9eyZwJbxlv< zs)%bVBbFsI+wzoQA*C_0R2uW@!q^~r>|y?N&_TKWmhF>l>zKUxQ(iG-w>*5y_D@0@ zhRIUyHkJPUmERxVMxNS~ zzZ8F;>|4$&Ce)B;Hs#-RP2_zOn#hZq@}&vYMZnI4s`9d?{Huhf^6I91KtT#`oY+Ku zp(!7ecy}{tah&A*v!twAWvP<$YR(DY@;E82g4b)sG8dG$XD%q`ReSK|raT(i*pt$o zYW&M3Wl0f|-Fc0AcxO}IE$JhXcT$x}+DA9;NREjVsb?Ox*$;$z?R;5>YW#c^n@xbc zeu{%Pc_5nSCpU>GnOalL#)m2-XUGSp@{;5<@$mybKAOs-Q)c^hK5oj_q-4ltQ~Cas zTJnjh{8CD)km6G_<&#r+pVS7jw1qEBO$zcpo51Tesaa(TgAHD;mf|jN>XUM!Pk^7& z8qi*~iTs;rphP~r>W=Nn)yh~O>0-Q;xgcDU$|p#<&=sFMBsa5Nn_9E5P-5=E@siEv zWh%y|)wD@6lUBz=2kC}1OK}fRP~*G%MQG`?3YFYfLwTRHHY}2_POB$7o2kuuI;{dr z;8!$2bZ3Ve6~fYs(EQ8#~T|a`R3VF(@IN{?4oGy)8W!y zeERl;s6|D`N#23Me%|+>!Mhg(tHlvIzBL9f?KgN|c!*!e+fL)9yFvvPCP`f*q!1?Y zrLl4R!StTY%|A>}?It?4lC(kCjNRr&Yr)Pg1feCC+0~X;TS@Qej?GfM(HJ>jVdQ|4 zVnuIwnXO|{168l{G~Tjisu&@IYu1YBI88H;0nN7an$I!$UWC?eDi52+*JmWjBc^d) zyP-UN8h^ibhP+}Lzf?OV-pj(ZvA3Doo!^v{32RnU-aL&rs*@_0Oyhm(ywr%qG(%W3>7KF%X<-3%7Wht|Eys_;P>IaCIg!gpuHv!?uL zMirLHuVhqZ**vLURk=+8Z(A=_ZdbtX$493E{%E~4xoZL6Uaxw*?_7vh#9hergsF)4 z7VzKeHI*k9@Y?m0ideyY5rfWL%~e5^zSd?*Fn*&tP3 zUBFx7V_g9sjE|=Z_#Av}Ea1=M(;z{Jqo7!XDPsK?g37D;Kh_)=J4eumAsA+1pNG5YZsNE**k}@Y2x>Or&t=Xsz zpL)26df?_9d*)WN4&U80FV?q8B$0xWRCR@fNRk$fCpDWd*KC1_H!<2bE>ud2qG_d} zC|45ywOQ35luMMkW|FE9gwF1ne8|~r$e|D{Ew*PdpKL@4R`Eg2C$LuhVDq#Zs$z&_ zw>|4apqDvs>tRGye=m;1Ni^)mN_ zhy;AQ_{Gc{GBS+n_zr(PtFe5q&^suPY{5%f)pe?w*wKub+nv`-v=w}E3m)A%ktb){ zwKUFeZ<-y#L?YQaPir5K@%kO=s_D&C^R1{@(wHyOcvWkrdPXzV%bd+$&Z$w=F)I0x zV>GqOc2s;DDt-+WzphnWY8JvTW&UBbBJ`a?AKrp(J1V|SZN=;yqae$*f;?d<$P;Qo zBAh)ol%`?8`^NEgcg04l_0BLFm&#SnF$U!tJLHgiN(gV3{by`iZ4m`sT@xMj0`lEN z`6}gPWCU#|w9y#3qFoN=<%G|L5|#@{yE}B%8va}D;~joa2YdKpgfCLV59YPg8q>uy zI?XoNX#QoV60xi<=@OTuE#TV1EezTDCkCpzs0)mD?c$W5Qb$EZNFEA=P%UDrp@f;* z=2ZvPEh4|9nsY=*?b}BVyKUsxTJV!yYRM&N;;ward?!Qr&7$fdVm&}1Mt7YoA7}xG zrFUM_V!Pvyk}}mD$^?Ir_-yc(h;IWPj)to9`RjHEoEDXD2mA{0or<}qTatXV1z+DS zQ!Z=4zrx4&Ex0qkw|u4rpO8OJ_Kn$oJpWB5|M@y!)4iW8ZRHocZwd3g7%#!R%Y;*6 z^F9+VDZXHq&bN-Tt>~E|hiCGKh9m{wMBClZ+x4uysuy>V7uQ&AisMcfXkwrOg@~B=;*`CRjK8dw#TSXgb^Hkx@5@VhME_yB`j%?Gx zcekqIA?=>d=Xy;a?+@ z4{n;&hNd~;$e=Eg7>PET0YsT~OdYWB6hsoLU#%xoFH&*pEd>`$Hvf`(Vk}W&7%T+B12s zYD%099wP?u_`z`z#yI3F23M6I&E!Rc8;HO&fq_v&YRD@yRsX&3kQ8~HNNBYDY$pF< zNNO$JliG~_6P}cW{sSeI7fp)^W%G2+XL>c0H@bIxgf99r`Ahe9l|RnpSMSY}zs}_C zhmMxds%^nbhuW$L3-qt!DP(yS$?|?x+nL*k+0t}Ng|4*sW{KUus!|*qK2f90Vcq15 znf%dVwOUDU8lyZ2ygtf9!0V$t9K1ftBf;yVJevPDtX}zwZ`wmJ#j0~a49^(uWDeeL zc&h9j!bcCU0jFTa@IG>SOMY&2DldOuOIeEJdG|Gw8@J>WdL{A=_l=a@E*>%BewM{| z4o>3BMl=^uKOB)QG$ZcsB)4nH$HXPZqCQecYs`MvF|jTSlN`U7lu1E+;r*|umCy?= zDxnu#R6;MfsDxf{Q3;GJwaC$Y>c~Fw-7WdYBU_1#qee9p8Mhf#OMHwU)khxO60>G1 z|8dknd9=ok8tt@sZ^ld7EOi}>*f#AMT}PfO>e;~KQ^GJlLha6*C1p{v*Oe=IrH~`k zNTSJqqufPlQ4h5wqO=!?7p2uFVo_RsB8~=+nhMuLZG+RK|JW+K^Ty4x%mwemi+Z20 zA5+2QOHGs{QuZlOG>DK~`Gw zZsTf3NMqEkk=@;o&mPw>)Y~1ceXfLe8=uIJjO!&oji}>0%D$?6`uG9zR<%u{BhfRM zm_@0?ti;cbN(w1w7n!P!(|STB%6mWMof`m*wA~UGRDNO1lihbMWl{IAv!R zUo$&#`;`A|4hr&(N#N0aUA*PYc5+&lm{s_OnOoz$GsC42_)(7QIc0)Eu#prN<(?wL!7CBc>kiyaq2-%=_e}YC3$Dr>f_(o5vlseBU@~ zO5Zrr-CsLuNMAeBe8(Ksy~iBY+{YYMrDHY`_Dc>{gWw}-5C2k9mKF}L6rbv>3J+Da zk_MpxwD#7dHs zK#NdL7AE;bk9i+(r+q?CeZ_4}`-iqzVcG<)Fn3s~0#1zltL?Wr+|xh!zh1%i_fJX_ zRnfbwqp6!Zo4ToMmbzLMI$C^JQdY>klH+>}S5TqswL5+Q4~k-veJ?h_S4xBJ4h(mJ ziK$&3+CT8|(;G4TpIZa}k58`R!2ov(`aw(v<;9jt9gf~ca2k-Z<0$CMoHEA|jY29& zQZDmJ&Lh~J?VIazeusER<|1CW-3i@X$!B*Qy;;^-@+AXvInRi6=el5l6+|3Zf!%>m z!7oE84R)F@QU8mgo&_rC^k0kWIEvz-m?5bc zsb7ExsYi&WBI!j5LJ_ogXipki7XlS-U!Y2kCUz(;@QLE`I99v zeB*)?c~F+vAP1`lko?SoxOkEHl?9!Y5=GQwP>&OO3A z75eJjBvvG0#v)ERu{O||RB`njCfTGCMV74bn!GVIH^P`CKobm{g7Xmdy3UzJ$ib$Q1P(DcKinmZY_yt)RW2BcQV&>19c(1WE^Gf$~Aa zLH>sSIP0&E06rtk{0QI}VRf~*9<|6P2sA$f_?|HHGk~86Gd}}3Pnh`;z#oKFG8OO& zVdh5wH?z{UQkyqWwpJR3f$Ohbcq{c8Kt$9`adaqo_eAh`XB@A)d}NCx6|#G)1xdmW zcYKyp=KM^YpuitbnW_2X)sW=T2+8p|jN)@`zvbP-4=(Rfvrb@awKeLI_DN`;^lRs> zXj!v~Nn1a3YDU`hJVLB4NPEkQoSNAtZFPr$rL;9^05Zz*?}$$RirM;T1gF9OSlwlDRKzzO9kaaxDH2j*F+3tzG-LzV{c z-K(6QnG~7al0tY6=qJhfl@>X~N#moC^f1{wkD4+$N_yqV{h5X-MjiFxcK2)-77FNt zqJq7W^9$%sE+;uY5g4W=R$1abA4{+0jjSv=0lL1D{%`q1t%!ptM~Nx}j~?9&9AN9^;2nMdqq!ptM~Rl>|8 zb|+z#Oa*+CF!PA@wYtTKeU}u?BlbfYu^+30K=QiFsUtS=iAs)dpxzIihuxEC4Ap|& z+uJ>n%4F{dK6-Vx>SsygIyA298nC_Vnu&;=h<77DzPcp)_qXgJQDiU|z+){^*Qbl% z!-&5E9z|2}YvA?m?2WhhS8Fmod0PVdGxv4OuAqUSk)SCcFK7`+O+wmj7n=u_m%+ow zQh6JAy(l5z^`b<8*NYMbUN4FrJc@$V$1B-TmNjcLJ<|ira(I^{m4VKJE`w}uVbuX8 zfYL#YL2giIP+!n+&_vJ-&;rm(&<4!IA|^2Gs#I2jznDK?6Y}K~q3p z&?3;|C6Y(l2xcp27ib^oFsKZ47IYb8^PvSm37~XPV~`uv8Ppdv95fL$1GE6N60`xd z8B`3~3n~R21Dyt407-k$0wC8Ok0ezCQy-KC>Hz8q8Uh*%DgYINmVwrSHi344e4qoM zBcM~D^Pp>>u(#0ypkz=TP;*c&C?7NsG!irgmdqJh3W1!QZ3n1|rGZN%+;a@dS zeNYyt1E?ox2xu&*08|KC23iZ+1lj@efewI{Rmo+{Xd|l$>!Qa{4wI! zf&Y^D=fQtY{MOxePspbv6d|CL_}$t0xdx$>*emC*Q zz`sfSN$|zQp8@}x%6lZ+ISAV*-~#wpi2oD(X5w#ve}VYm5_`yV#7BaEhWHBLHxM5S z{z>BF!LKGh8N5P#I{1|y5;7nxC%y^zCB(M`|0wZp@C%4<2YxQ`oxsl~zAJb=&AY+R zAiNj&{}A5~{8ZvSgCR^NVJP^C#E$?!j`%U)M-x90{QbmF13#SjS>W#_eh&CS#6Jpt z0P!op_a**u@V%IX-2e=59fa-_@C^8F#BT!MnfNW>I}*PGd^_Tc!M7#;E%0vQ_keFj z{QKZDiQf;t8S$kh9(zb*5%e0kS8M+acq~>bzX?2+ zZk68*9*&I4Zv(G8RmI?U>hu3@2-`_%FZiv*e*hkPUN!PT@Gla782t0Z9|gaW_;0{J zMf@r7>xlmm{2Jna0slDhzk498BH=Rl6~tc$zm$0SVSC6T;zPkdLVP6ndBj%)KZkf1 zcrWou;AawF4g7TCYl5E!UY-9lAWWfvM&KVHzB%~u#J2)JhWIw%M-txw{C&iC1wWMd z9^eNP-xvHq;s=56NBr=IG5_}_VH5&-5I-J#KJgEN??U`^@Oi|0z_%xU4)|Q+=Ywxe z{37t##4iWml6VDtbCt*Z|0IMa6!0|ohQvP)z8>)}gRevUHt;oxF9M%N{BH17iGLS- zGVvdRPbB_h@NvW+2JgIwgfAiJF8*=wx{H4jd=%;Y2wr#b&wE2vX#H&axe>)4otRS-GK#Ju*ZPeEZ7^sf-Tr_U?D!c zHpA-~+b+8tp%%pyU||+48(6pnyBAo51)B-1oCRC=x`TU==J_+EtgMq6KT?0T^QemjkP0!S(@jSg;eoVlCJWU``9x>zd2q zvS3qyRR*SxaJ~5-0~lvfya+7bg1N4{90?YzJFr9xHXc}#1zQfRih+4lgL@fZvH_}C zDX;!AE!a~xJT6C?1w04E8Wya=O_w9xf(-^%(}K+e zR?C7t4Xm~W^8u?PFtNhx&Ho+1x)wzo?mIFpSURwJ7Ay}~eG4`gSOW{T5LiPK<`Lt4 zGr&eBP+$jvHMU@9fid>0yS~o4>(3E{EHq_#Lp;7R$+wTd;}1?zUhGu@i+e)0DD*zzX8_Mf?WsJ%YxN@-{t6S z!P*1sW5FH-);9n{|1SsFF94KmCBXVyu&;m(uwdc)T#kVjtU9oJEZ9z9gDlv`zy^CP z;P?+*jv*Fo6|j3P*cM_YvmNtv?Uo2#ewa!0xwTHTSz5 zBQ01PV52P9C}5*4*a~1{0x^$m(E*oZY#?a+2-r9ab`IEh3)b-?mt%qj8v|^j1)C4- z0SmST*d(7P(DV5W;AD$p$U&E5iUq3%>_H3G9oSS0HXhhC3$_+mfsT2|7F$q|}s)t+-uLT|qNw7uakI zRs?L01#6Bx3N6?}z~);0zjXlTSrk78Hs6AMicA(*u!^YNBNnU)u!R=veqfLKG4lU@ zMkb5=pyvOjA9gtwTd?-PmRPU{fi1OQ%YiMkU?sqoTd-pufGaFu#AhxCw_s_&R$8#0 zz*bqXiNGGSVC#S>7VHgRj{^(v|4svZ!lG#V+~rtp!5RWvW5K!tTWi541AEef`GBo6 zFwOt_=nI!)y#cEJU+NK;V}k{o0PHCX*8NMD<7o@F9@sM$Y%j2l7VM`lJub(y7VzXz zm*Y7Lw(={N<9Q2aJLYn1vS1m&Ua(-TzjirZv|#T7dr4qs|8LE4mt(U;(i(BSh`z%U)P}$Ep(FmUPwwzs z4$tFoZ<$x=(SX+}PL%DcYMiQi%SU*8No+i?yV%a3EgmT+wBgaOr^#t*q>5@J+};%T zqO~W3e9-G3%k|pudT(UPnRigC%18AqudI8PRpf`?c-4_BYfl+3A+1ZeBZ+G>UN>L; z<}kTa8-DZ6gO1Lm5SZDwyQ(_6P{YiNRBov^Xg#9N%aN#x*1+ zZnNQAT;;M)cpu_tc4x@mTKxDso%nqvRRr7hQa9dZf0ej^L~sBh?$bMPIZ^7!qkKt1 zGs8DJDL^Yt(<;Mb`y@LapQZ7gzN9?y)v}OKElA|NLtOP6ET?$yE-$`mhMs5Y#c_wI zq3FgN;xbgUIDTWcp|cwxj(U;I+fUE<;GO~ei9L-(84m7Q5`;G3^+u#{@7rSq^vm1R z)n*ZQ{yXp;@1zUx_&Y;m0?LX4Ngd1cbB7#SaCaFM+r2kVYf=0C$^6>hfe}U&KJ?v| zp3TJpk8sc8`1A0;K=qMEb5JfQA2bj&5;O(m1uX(S4vN}{e_KJjK>JSeTJLQS9w8c1 z*)kB{BK-5c=uEY%AHwY|T>IS+=C!Al1AhrO7x48&wSm#d{>B}pHm(|u#%=R{jyzs9 zxWVe+xQwp2tQ#B#-(~Hgct~}0C2l<>#Y=W?ruaG;E-1tJqnuvt3$PKa8!YHdP9mM+`mjHJi8jh!5M#tJU1J z`6pn=q6u&_P0T;hzC>X(G*Ws5x%6W}$g1C_d zz7%E3;`lqdU8)%#=wHqImbl_XBVbT;Nf0UdaibZ#bADZ=KE09Z2b_ zb|vnEJ1^+Xj7-qB;`<-s%uwh%P(Ta@?Z6w|C$7UJg`j(JiA>xg_7&k1UG9C05Bexh zlw|rxsj_b^U-!|AfinP(X~hs$X8=qJQ3J>gU)nfX*{#Eo_t8{;#9RD0n;i9g6Ugr8l2rq z6Zot{jpVOp^DjzMv;{--r2nD_k2s{xgU8>=i%^Xz5lvPg;)I>lYHZ_Qm&V85Iv*Z& zNSkcbc`7JiGRlj~$pU0Y#4m6N|yheyp{hP|;PYhtYL=8>NnG;YyJdseF zv&Jpzr+&*j6rJUjY#6*^-u3MYR+iq&+TdHbTQJl8b;K!G?q#Y~iLB3Cvab10vz9nJ z9utJG0jQbrCa*j1lod=y#@9SOU)3~KGy9+BrG05Vu$odcWy!s)EncMXH?>68L73n8 zvaehs?=6={2QC$=Goahs|4upT)Bw5A-vVfQd4XTDvpRImgM>rJZ|Su zX_k^V$9S06c@BLcD;h2^ZIHSe)*iSVz41%cCbx`iayxoc;RDwA%m8+n))Fhlp z#=rlVBr2H0-2H<&bmDHQGaS>~N&d_ExXQN-?t`_Mr~F#u){)!8NuJG9e@(k}a5Dt2 z62bAeOuGiM9v3Q#cI$9Fx0Tvr**jmk;$P$QHorX=ID_G7u2_KlMl~?7y$i)eST7U%;DD)a}qeRoCa@NB(GetNf9m zVZ6x~``%h7mT$NiCQ|BpY0|AUXv28tP~k^B@<;6zKL%sGFdMc7x38qg3$ys0W)#b` z_|LWV2IN0qX>Xo1vaiOPr>NU^nAQ;Y^YYir-Kl_GFa52`-#8inyiO>R*d+}O^eQUC zSk?U?ZOZQ@W2I@uKLgTr=l~bhv@iJwDUbf2r99<-mh!CsL(0N-^cAOSs_L>$7k)I> ztp$`EEic+kpnM<1(o9CC#M)Rlw#1m>12)LY5}WF^DO+qT+Z^knjim;;uOuk(!Az{b zN}FI-yVdiQe^}HN-Kr~xBAI!9Q&P*bZsC`xd*Y1l!2yBuH~sKHd9FMg zq;(sqFPghU1iP+Gt~FJdEH7}MOIJlk*mBC!*J&F zkTSX=%W?E2)flM8%+S8Y<5qT8WKMaop?WZetq@Tb#;~gLut2<<_o4EVt=#T1?Q5rA zdqT3;ZY#sN>AN}FbTOLpsDwN!>3P7oD`lzY6XGb>8NEw8QJbzMo+=V`M$Z6<`DQL9 z;6MTnJptvHN(_Fg*uLf|LmaH8yrfWh)S-{G0H0c%F^fH-a@@g$Q>#S9vOBK0*4=cT z;)`cCWr&m6@3ap7E75K}mi~S;he4YNdJW;*}EOE8GL| zMw!!UnEJ*C@l9u&`c3C>yRS?+UWL^Nf4@*$KEjOoN&T+6KgG;sHn?tSuK4<W8k%d&#Vi{7tS>C51g@lbTnOxVu?(<;N7(?fw84J3(9JwC5A1 zJ=G7C>TOI#^#Ve14t708JyjF?1IGYV6{F38Dtmn~;#5tY&L%9xJ02faj;FHBXlbeG zso1ZksWagFY)aRv>`g~dur_&7P_DLwCskw5_=9L{Q_$z;Al(wRSWBw2S1RiX>UC0s zg!%J9Lz_nWLMus0b#cD?K&Zr%*CZ%A(pZHsn|2~ys64fl#VBQIEJ0hJDQ9i{MjHAN zt9q*yGgSl?o{B;KM^n7?#Zlpw^%`A+jqVfBHC1&_7M2nRYf`f`b$n7_7FN$z?V?Dv zid z$m(~|T>qMZ*o9|eyL_|E#_)U>HzSl~xy)`@jMY}ZZwp&3CyJ=qs&~l0Ruqe^zMgBf zRiA3BweDgqgDa{ffUP<`c%bV%hPO0{D*`rnfch)yfJHT=8z91-@%j$6J%v4gN4&6S z^pW45VFG@8h7GFx>(GIFuJWdvB;qYn;>yEg?U+mUDN0;BSY73IhLL^^bNX8Edu32N zHcTB>*c_-yiDF>uq4J^_`fwA&N*``wSn0zJ!|G-`*0e&+cK)4&6E6;tzEs+^XI1Lz zBgg!D6>+S8f{Zv7#(E6aBi=Q#T3ONFZ~JXj+c&>-MMNv3XgIObazQWSy(=~ha&cKl zebv)9NbVSnv7ZvvfyHVjRW=n`gYO=<$(EDh3@R+JMi!CRxWzfo&eCtmwqL1vmBE zta7~*3(IRc&#-_T@VW)G1+QB`d+@pibONtWxZS|(6K>CWV#1vy_i3lR)0ySTgH1*l zFsCU^yI>-nXbKLPpOhE7u(%++C!Bi@r7AymVU=XBs;fg|VdNv*x0im*%rJ@_e;z8s2f~u%T_fN86kd zZG)p{41U`g{>xRm)JNyn0nWgdyK&a@SctZJzRi z5%FF#{XUud+c0!(!|+$;X-5_z;>bc=ER>9;Qt0fde|>TlZj( znL9MQC);9{FZN_rQ+84%=s3i`#XX}L4l0q^i*=LVG1+6_$?mpZtflgISI9_Qt9E*QU4_4$kxb;HkaY1o@mP7^BGfi$6H34{H~M*K(?+{+~W9Qns}>rf!Tf z=Q+RbmOh$$ey~qqrN{SWIkH`iR!{AM8HhGRkA_B^K_jG=B-v(Zdw=J2OxYu}Y#sfW zJv?!~+84PMjpL(-kjz7RGD`n`tet4`r~9#n>holg6s|Ken^(IxE1pTZhbq7HW7FFO zY^?CrXyfXU>2#=msAgON*9A~qT*?#|&CoAf`op+dni?d)xRkg7tdZPN4c2V$FV;g9 z7q%y!n&QF&ej!2FUf2MwzJsyUO13d2_6^N|36+}(tc?p@B)*2ih6-bo@Hvoz|N<8TK?Yg z1oVz|Grx#hjneSX0p`OJ9CK+8eQ`dD-};bx<8G&DWjLn(i@~erH*j88$An$@-VVHQ zM}*;0BENblT&(cwp?z-DQeS zQ>zxe=;=``hW%IZaaUgK^(gxrquK9KS3(Q5H!9!_pw~i`n`2m-BPA@wElO+l-fI_S zj%D?jRe#zz)-bVV2kqu;1ByqR1Lk};%R`uQ>Jx?wvn$Jvx;z?3e-$;W; zBppc4{Paxd{X}}tQG$7-XLhNC-Z|1+OM0C(J&$maoo7rnA#YK8BMma{N(s^tk!HI{ z5O0E4YqEe6%qKm1vgX(Ok@RMfUU$;dwl}7X_5IBhQtU;FI7e`vGU>s$S2G?>dVNXH zd`Kl~Oh3~WGKBO7kRG;u&a--Y9w?rr1bdU>J)~&f%ZUW_^Qq3HH<wNQJ*C%% z^zJ1+v%@U(&O=Z6?g2b{lzJCsPhv%^iDk<4Un0DZlE4xzz5=E$>mrF8A}b|hGMiPj zX$sqDlig#KuK!_eBE5@^iIPqc0Xz>lcuv84J=Xc@W~-Pqbn+C!|RwE>)$Z=S$ci;UbJqo}mpc(}obnqpSho1go~eD#qR-v*d4oQ)XHhtP?w-ZEig-~THo>up@}MCk#;mutvckg} z;#+yjdmh%_@iM8<4H!~M^@@Yh5lTBRREkN3zIj6`Pm{`fLgj5zq18uEnw;$ZA)Oq9C$7EeO_4POB3Ghv#3a zrkpBd=`rf9ZD{&$L%TW(HzGz|m??41EL?o>>#6*DUbIp$m*GY1iORycY_{6X^H_Ep zH|{En_boZ^!4E|R(Fumd(*0JRL`4j=@+I?dwCx^R^x`~Lg~<&%D*NZNPvjOImGui) zYHDW3nqq*8b9bAFhk=V((Jn;=VU2Jz8}v>>PtNM7gg(N$d)B-V;0mn8%LccC_JWRp z&Vr=pnN$gs4$1=MgNB0&Kz^6570POLSlbe2c3ATW3vgJw5omT;dlF`LSo;xXc31}y zW_DPI5oUH+M-pasSjUB@Yo*5Cz+aO|q-b_nr-f?{>x_=7!|EFvCmhzI){nCGO#LZ3 z^@Z#(1ku*M<;v}^?EtPEPrGNQx_-9_r6U(_G$s;7Lg827uNcV#h79q<{qge?*J zFD`+M&kvWd%pklNo}YUxBZi`?$%wAS_xse@^`50TsM`66qAX=28ZHV?@jiqv{?Yk~ zn5LJ{*_hWApX128t2n(>ag9Msw?Nh?cwswRtv#otinAz68CCqGVKM-cN zwX?UfwO>imY-<dVjaqfgqfSS8esv=Ta!R@^JWlcZr(FkRlNG*Zbz|G344N- zcZ`Tg@%Baw)1p#{wcgiCsr3X~-BQ92N@(X5_z4VsA3TZl^+iC8yH?QCzO$>%xzqBL zn@?aTR}h%C@K%v_=4xDJn3tyvSk3x-ehciw%S9L>#TX)>#-I+MfuM zFvwr5`BZcB5Lrx^xer$o7SM-J5NPhhb%dGw@EO9)eYlA*b05A;n7I$P5oYegqFeRh zE>bl2;U29I-_!cgTcGx#^5j}p$MHGTm!tn^Sr`51El`fHW!r+#f4m;P?et{xFlF46 zxGQ$}NoLp35l-dClkhgar`Y(_Gp9uEdV$h^9qaA!K8sYZ?k>~6f)$NxmQ6QuqoN+s>Y%fHJ1y3jb-_-!FpU0BgII-U80^1X@pH)m-_0tK+5o7w8N z11C*Nz4fe(4=v|wox#R`Py!Cjh9^T3S$j~N>M~+zR%PDWH$CMmdPHU4Jh;>6x zUAefPRh27uQsOtj?uNb+;06@G#iRqEGSCH37+!Lm0ICnl1@#4u1$jX$L4Lc7Lsqpd zKh>Q~nAz@X5Efu}bqF-uT?4|*cGr|Jv)#2M%xrgV!pwGe7hz_*%PV&aH=r9Sn(eM< zIn52|r?$1^J**mD(LGPINESN^5q^dZn72!Z;}y>{c$(raR0eHiRh5sPVLe+-xTPZP zt8iTc9;oz)_M?sJm%8+yt`(FYeU6Q*XecLWk;*F(&$Dix_*Vn$VeMY59iY9SBcQV&>0PWHpmb0cC?7N& zQ~>hZ!=uRCY7ff^Guy-Cgaz2clLVUW;c3Fm_V7GmW_#F7nAsj)CCqFOI|(z}!<)CV z2OlY#?crUrhYvM-@U=-$&oSSf%p3_cvX7Qa@eWAvTZOuwv{5F#z~;-}c2cgs!1_B* zk;-KZ&&%5I^tDk&zsM$}{Z2ub5OhfoLQh@N=7k-Y-E3FODK}qa<2}jS0=jJLK6Dr8 z2>;7F|-&0Q8rSU{ImAkf@pv4oksES@lP zmn9Qs?y~BHnY*kOVdgHY7kP^z+?W*2UDhH}9m3(+oz?YUDpWFG#$K{(WQuPsx~T*c ze~Cx^8U})9z07Jv^j@U>et5sm$}2CkHlBfCbEx>qd~qHo2MK0Kk*-o%SZT-P6`=~vSy7-33k1ndb!1hEKt>j&Z25)!oi z!3$ehCC7t-70boo*DH1pRcw}8u?$7kfB5h9A0hqMUt!h!t+S}J^1~~vcOAWTmZEiB zct^9&ocCh%O`?^tD><*RSb5ZXrO#_@ai|J*PgZ_x;x1T6!t1#JRt1sy@0UEeB6``K*e^nRA4ytkjl7qvdXlEaio4zn6Xrw+5mc|{wX zvM)$+Rgvq+`wkbitAaNtq;5Wh`4->g*8lKT4*YJ$b{nn=sL8<=V2#-awLq8zU|o-5LqxeyS9TP-r1EO+NC8 zf_J0bB`1HXB-D{za-C0C)jtMIY6X-&V`Eyn#GPlr6ZS>=9+1*HBKXco>!J3&r7}WDs)Q z*-#!KN|V$`ZYQIZBO1xIL@Du^TC}5)ydW%f-(eI2e?d}t_4Be{#v91-cc4+xpe*?Y zOFhsCCB`3C>z+wJw@}FzcpaR0nepQ1mGJ^!fYS;yUg=e3oxqQ655z~lrW{oDv2_d3 ze_gpD@D6aN&G_NnN`_nH3zy1_7r(0v61W>{w;4b1fwIIcXNYdt?Utv@*Bwe`Yq_Ck z-!lv@za&*e{qIJTjYT^ND--g)kX_5v-@#GkNuo&~!H?)r_-x1py<{m2as@nhUj#X~ zJ_P(#1U(5k-z2{ZIdT?$fQRyXSH^D}M)nEzaDKl|ULJ6*id=0-6g6T<354%TcUtgmD??B!fWK`&= z2Y~A(yikoId<%K(bR)vAkQZS#zDD6e=$pQ8F#K4gmO&h3*J(*ABRL&%PyBSqUXt5D z&b=Rk-o=ndnkwWO4q)$P6o3>aLY`t$m;<@s8@$nt5?lp2p{daY+aOCN^l+IBfrB+ zNqz-#hd&G>ErmR>2d;Qh__rdw14bLkzdu&gAF8oqVA@WyC6a&CJA4*i>T97xI3Xlc) zGHhZXg?EE&gAutArGgYA^@m&uLLJDWLSrGP+l&^Q4Y@4SXkiZdz>A`Q=zkGm1AuFP z8h!o}%#1f7Z|Gy# zSX3D17&j_`XZmUZ5&_h2i=P*R@rVM|hP(p_z^GBfSg9rCt)>>~2e~hr)TM?yr4f*e zXBb`Nfqc2l7$qF?E>rwhAm^{eZyPP34BrA!e+vu^35o)|19_ys01l}X^5Z7?Fywuv z1kXUe<`0jR&O@&MBJ76Jy8`*JNguy@E|t|6?XN1pdI6M9h8?JKq*M>`g?OXSIzkTn z87)LDHUP5AWK<7A9yuJ-Ia*y*pb+xPw{g}<`p-fxT!*1f72XE9`5S2eWXf;=BI@o% zMY+7R9|~tpCH@w2K^BG@>Hh@zzySQR8_5?TZ#A`m4LmpxeR zniJ3kK*AM)!FrZKkL$rQg3ay9&V6V@-a1(rd! zt3TSL$uB{^Y^o66!6~2msn5nh-rEM5QuuVp zn@y|Va>zC~x8hGY99tmQ!5Cej%8}B0ke4ln9gzGv*phMF$J(pXFhRDdkJY4ImAtPVNSRKqM0KGB%@xF@0BAfI zb2HU=yolg69EgV@Z@pxU<0l~RMW1d|3lJ&23VF!0#;|=Ga)POVM<93j8ik_tPeV>O zg?p|6Sa#SbVGR80typXIsWusMV^f5tkk8jJny@wGU5$*Htrz4OJMs8|GQ1bEzMrWm zV`_$6Jjy>RJkoRkE71+fRHG%3-KGqmfqZH-{5rkHkk7w_Gi8!@Lk^pVp-CBj2)VN< z{@0Lm-!r=O0_6O!^a7y$8FmhRO%Wj-=vTk21Id zd7>#odH8JhzD5T44Pj}9DZD=9(q9c5%7MHn-KfCbkoP%og z9r8Z-X9-w;)B?-}kl)M5P=S0IUh5R9@r#fYa7f;VybD$iH&0FP3!$IE z)U`uY@GN9kC&Nj-3ArbRu}2?PkrmLVBaAMnEMzzKg4AR+As@!#qx*oFkT+pwOQ!;M zguJ-{1XY%#0g#I^6Y54i26EPTxZ-Mfq%;k3nG<&^HxaNkgON5j9CFJI&t=7+wSDL!)I^+wlq5btfv%?ZM-;cF` zYMczYCzjX7$Urn<2ISmN(d0tLOx7Iok*ACn>jZf?G7x_iWQWuja=L7!KN9i+QvoJJ zF7%Wcee4CWqZ|BsBp@7GSX6_ZkoPu#pvrg_0eO)r!$XjB zTceA}>c0{3C8Gf6ARkUNS}?K_#ypx=uW(8wjQ_^40lmo^L&1&ZR#)f@c_KCrx;zYW z-w%xpWeXco?-%F63jT0(klXh{W8y zi!z)5xfFY|3lyOM@-=u5n<;!Lu)*pmi2d9Q= zdUB*k`T{`y6x5oU=mccE3*Yat{0@0DhMkWR48s2LGS-4*l9M2htYmmZc@;3OO$BU> z@WXKF^a6E+EHwn-ucDa$2LY&-Y&7XZkawX*b}G<3$dUdCa6}+4xXYMIw?MA+5gvAv zelcX1N&gebeSbp>P>Y^`Tul!TMk)S?RgU(QlRTkLG>vISONJbV?anDmxFzHn*U|rK z$#K#Fxsqu--vila^8Y76-tanhK&1Z(7P*0qAdoyC;RVKo=8={I$if7qXYdT<1e|uE z`&8rG0(ln>BKng2o{;^+F;@B-^2i_2l~mKykhAofBFyrc{T*^oQ~Yvx zNV(ZxfLLiWc2Gko9IluoIiRq?ui%in1#&@8F@K<+MFzofNbqq?K&0S+oZrfD z%@QFmngP#-!s|fZ@feO|sY_ZwUTbOrH{=UvPys4H7s$2;F~5-hJ&+4T3nPCNK$6A- z*lIdFngw~K*Eri*26+aY$#g2fGmu@)jV65y@&Obe4B^5t*$;Um4y`wm{xQg#_Zvof z4ssz1Ao5oWAje|_lp4b%2C~mzqgbgf zV93=>^9*hbNrj&y|Hjlra{z358Yd$puYz1=D!_Wk%S=Z3D&!dtAQQ@9H{`P>{r!+H zVB%Uy;a@@C3in$t&`*$e4e+2tDv2g@N`C@Kn1%>sbRh|_2`n08MFMcWq9NBWk5!KP zFdp*6VVDajgZhwje=!Qw8gd!h-%H`$Az#C>J$g;GxnYnudf*=KC4~oUFd|b8r$OO7 zOxj1`^C2&Qd)}Pn$02Vr>2HO+6>IKV%3vJ|y2BK{3*lp{7^CD%$ez-NjYa4u014RB zxhVrY43-X?jOsGvO%;q~xnd%W3a*##sH8xy-w^IQ6`&Dh?-*kj-41fKCC1F!ClUQW z5L+;Pq8JK=$UI{o{~+WA&l`O>5Aw)YU?Wt()sTIr8g3WiPGeN;gItEGJCX|YCFFEw zjDnvMVgH4DjCDUO2~Ct^c*jYQ&vr2iSPybBJe{>vfWB2Q>`Vp7MtFXKu^(s$`G_fe z5M=mMexrQQ17L&K*x@XLe61xcTdyJH9T*~d6K{ij%9P;ykk6asV~|fD$4H_0=O7<5 zjf#tq8=HoqCkizvLya3#gc^`9W17=5YzX<9DTBKp7ql^^(ms&G{Oh|UjfT7x8Mx5o zVpL6sT&E{25q}lr7-=44w+I)q3*hQvp7QT-euGD^5bz|B}I6hiu1=OY1@$#Y6xd*a!WHK#^f($i;sct5+uE z)9`+aDZC@(QuMLDDIEfN$OY(7_ydrWO$921oOKz7OySEQ=We2BPh$OF1E7v6!e+?3 zCZI*A3EzV3g2UjIv;vkw?upXqM)(!v&h3rIbw5Ea)iXf)ze29m&Nu_MrJz7)aZERo zNA!^sKyG)VhP5CcDKUmwXUOS&(MpIQT4(^|QlI*TKUJO#`5K-j={B?Gt<%P}#b$f5veA?KR(uR~so1_`-`<={Syf`1W*u)I~0^aCgiQC?m$@!&xM?TqZ!=> z`anKq8dgIg`+6DSQy?dwGd3u*AyQdZtWz*yHI&_%`HxQw=|Z zY%en=rXL^|n+otdDkUtA8S~Om6WGgy2Np8=Is!fqYY)Z2Nc}F=!>N#oD{rBHDX>!q-0{JPq z{7{ib{(X~1O&E^I3m=lFma94TDTW-iKVeVeZw^SHAt3Q=W8V%OoGK5@m1C5w`Eq0f yaed-4uulg;f&TQk%OQ)nGDzH}I1mFnRpS;dnlJB?S)9^wp 0) { LOG(logINFO, ("Setting number of bursts %lld\n", val)); if (burstMode != BURST_OFF && getTiming() == AUTO_TIMING) { - set64BitReg(val, SET_CYCLES_LSB_REG, SET_CYCLES_MSB_REG); + set64BitReg(val, SET_FRAMES_LSB_REG, SET_FRAMES_MSB_REG); } else { LOG(logINFO, ("\tNot (Burst and Auto mode): not writing to register\n")); - numBursts = val; + numBurstsReg = val; } } } int64_t getNumBursts() { if (burstMode != BURST_OFF && getTiming() == AUTO_TIMING) { - return get64BitReg(SET_CYCLES_LSB_REG, SET_CYCLES_MSB_REG); + return get64BitReg(SET_FRAMES_LSB_REG, SET_FRAMES_MSB_REG); } - return numBursts; + return numBurstsReg; } int setExpTime(int64_t val) { @@ -855,8 +856,7 @@ int setDelayAfterTrigger(int64_t val) { val *= (1E-9 * systemFrequency); if (getTiming() == AUTO_TIMING) { LOG(logINFO, ("\tNot trigger mode: not writing to register\n")); - // tolerance - delayNs = val/ (1E-9 * systemFrequency); + delayReg = val; } else { set64BitReg(val, SET_TRIGGER_DELAY_LSB_REG, SET_TRIGGER_DELAY_MSB_REG); } @@ -871,7 +871,7 @@ int setDelayAfterTrigger(int64_t val) { int64_t getDelayAfterTrigger() { if (getTiming() == AUTO_TIMING) { - return delayNs; + return delayReg / (1E-9 * systemFrequency); } return get64BitReg(SET_TRIGGER_DELAY_LSB_REG, SET_TRIGGER_DELAY_MSB_REG) / (1E-9 * systemFrequency); } @@ -887,8 +887,7 @@ int setBurstPeriod(int64_t val) { set64BitReg(val, SET_PERIOD_LSB_REG, SET_PERIOD_MSB_REG); } else { LOG(logINFO, ("\tNot (Burst and Auto mode): not writing to register\n")); - // tolerance - burstPeriodNs = val/ (1E-9 * systemFrequency); + burstPeriodReg = val; } // validate for tolerance @@ -904,7 +903,7 @@ int64_t getBurstPeriod() { if (burstMode != BURST_OFF && getTiming() == AUTO_TIMING) { return get64BitReg(SET_PERIOD_LSB_REG, SET_PERIOD_MSB_REG) / (1E-9 * systemFrequency); } - return burstPeriodNs; + return burstPeriodReg / (1E-9 * systemFrequency); } int64_t getNumFramesLeft() { @@ -1119,11 +1118,17 @@ int setHighVoltage(int val){ /* parameters - timing */ void setTiming( enum timingMode arg){ - // update - numTriggers = getNumTriggers(); - delayNs = getDelayAfterTrigger(); - numBursts = getNumBursts(); - burstPeriodNs = getBurstPeriod(); + // update + // trigger + if (getTiming() == TRIGGER_EXPOSURE) { + numTriggersReg = get64BitReg(SET_CYCLES_LSB_REG, SET_CYCLES_MSB_REG); + delayReg = get64BitReg(SET_TRIGGER_DELAY_LSB_REG, SET_TRIGGER_DELAY_MSB_REG); + } + // auto and burst + else if (burstMode != BURST_OFF) { + numBurstsReg = get64BitReg(SET_FRAMES_LSB_REG, SET_FRAMES_MSB_REG); + burstPeriodReg = get64BitReg(SET_PERIOD_LSB_REG, SET_PERIOD_MSB_REG); + } switch(arg){ case AUTO_TIMING: @@ -1139,21 +1144,29 @@ void setTiming( enum timingMode arg){ } LOG(logINFO, ("\tUpdating registers\n")) - setNumTriggers(numTriggers); - setDelayAfterTrigger(delayNs); - setNumBursts(numBursts); - setBurstPeriod(burstPeriodNs); + // trigger + if (getTiming() == TRIGGER_EXPOSURE) { + set64BitReg(numTriggersReg, SET_CYCLES_LSB_REG, SET_CYCLES_MSB_REG); + set64BitReg(delayReg, SET_TRIGGER_DELAY_LSB_REG, SET_TRIGGER_DELAY_MSB_REG); + LOG(logINFO, ("\tTriggers reg: %lld, Delay reg: %lldns\n", getNumTriggers(), getDelayAfterTrigger())); + // burst + if (burstMode != BURST_OFF) { + LOG(logINFO, ("\tFrame reg: 1, Period reg: 0\n")) + set64BitReg(1, SET_FRAMES_LSB_REG, SET_FRAMES_MSB_REG); + set64BitReg(0, SET_PERIOD_LSB_REG, SET_PERIOD_MSB_REG); + } + } // auto - if (getTiming() == AUTO_TIMING) { + else { LOG(logINFO, ("\tTrigger reg: 1, Delay reg: 0\n")) set64BitReg(1, SET_CYCLES_LSB_REG, SET_CYCLES_MSB_REG); set64BitReg(0, SET_TRIGGER_DELAY_LSB_REG, SET_TRIGGER_DELAY_MSB_REG); - } - // burst and trigger - if (burstMode != BURST_OFF && getTiming() == TRIGGER_EXPOSURE) { - LOG(logINFO, ("\tFrame reg: 1, Period reg: 0\n")) - set64BitReg(1, SET_FRAMES_LSB_REG, SET_FRAMES_MSB_REG); - set64BitReg(0, SET_PERIOD_LSB_REG, SET_PERIOD_MSB_REG); + // burst + if (burstMode != BURST_OFF) { + set64BitReg(numBurstsReg, SET_FRAMES_LSB_REG, SET_FRAMES_MSB_REG); + set64BitReg(burstPeriodReg, SET_PERIOD_LSB_REG, SET_PERIOD_MSB_REG); + LOG(logINFO, ("\tFrames reg (bursts): %lld, Period reg(burst period): %lldns\n", getNumBursts(), getBurstPeriod())); + } } LOG(logINFO, ("\tDone Updating registers\n")) } @@ -1831,32 +1844,59 @@ int setBurstMode(enum burstMode burst) { LOG(logINFO, ("Setting burst mode to %s\n", burst == BURST_OFF ? "off" : (burst == BURST_INTERNAL ? "internal" : "external"))); // update - int64_t frames = getNumFrames(); - int64_t period = getPeriod(); - numBursts = getNumBursts(); - burstPeriodNs = getBurstPeriod(); + int64_t framesReg = 0; + int64_t periodReg = 0; + // burst + if (burstMode != BURST_OFF) { + framesReg = ((bus_r(ASIC_INT_FRAMES_REG) & ASIC_INT_FRAMES_MSK) >> ASIC_INT_FRAMES_OFST); + periodReg = get64BitReg(ASIC_INT_PERIOD_LSB_REG, ASIC_INT_PERIOD_MSB_REG); + // auto + if (getTiming() == AUTO_TIMING) { + numBurstsReg = get64BitReg(SET_FRAMES_LSB_REG, SET_FRAMES_MSB_REG); + burstPeriodReg = get64BitReg(SET_PERIOD_LSB_REG, SET_PERIOD_MSB_REG); + } + } + // continuous + else { + framesReg = get64BitReg(SET_FRAMES_LSB_REG, SET_FRAMES_MSB_REG); + periodReg = get64BitReg(SET_PERIOD_LSB_REG, SET_PERIOD_MSB_REG); + } if (setBurstModeinFPGA(burst) == FAIL) { return FAIL; } LOG(logINFO, ("\tUpdating registers\n")); - setNumFrames(frames); - setPeriod(period); - setNumBursts(numBursts); - setBurstPeriod(burstPeriodNs); // continuous if (burstMode == BURST_OFF) { + set64BitReg(framesReg, SET_FRAMES_LSB_REG, SET_FRAMES_MSB_REG); + set64BitReg(periodReg, SET_PERIOD_LSB_REG, SET_PERIOD_MSB_REG); + LOG(logINFO, ("\tFrames reg: %lld, Period reg: %lldns\n", getNumFrames(), getPeriod())); + LOG(logINFO, ("\tInt. Frame reg: 1, Int. Period reg: 0\n")) bus_w(ASIC_INT_FRAMES_REG, bus_r(ASIC_INT_FRAMES_REG) &~ ASIC_INT_FRAMES_MSK); bus_w(ASIC_INT_FRAMES_REG, bus_r(ASIC_INT_FRAMES_REG) | ((1 << ASIC_INT_FRAMES_OFST) & ASIC_INT_FRAMES_MSK)); set64BitReg(0, ASIC_INT_PERIOD_LSB_REG, ASIC_INT_PERIOD_MSB_REG); } - // burst and trigger - if (burstMode != BURST_OFF && getTiming() == TRIGGER_EXPOSURE) { - LOG(logINFO, ("\tFrame reg: 1, Period reg: 0\n")) - set64BitReg(1, SET_FRAMES_LSB_REG, SET_FRAMES_MSB_REG); - set64BitReg(0, SET_PERIOD_LSB_REG, SET_PERIOD_MSB_REG); + // burst + else { + bus_w(ASIC_INT_FRAMES_REG, bus_r(ASIC_INT_FRAMES_REG) &~ ASIC_INT_FRAMES_MSK); + bus_w(ASIC_INT_FRAMES_REG, bus_r(ASIC_INT_FRAMES_REG) | (((int)framesReg << ASIC_INT_FRAMES_OFST) & ASIC_INT_FRAMES_MSK)); + set64BitReg(periodReg, ASIC_INT_PERIOD_LSB_REG, ASIC_INT_PERIOD_MSB_REG); + LOG(logINFO, ("\tInt. Frames reg: %lld, Int. Period reg: %lldns\n", getNumFrames(), getPeriod())); + + // trigger + if (getTiming() == TRIGGER_EXPOSURE) { + LOG(logINFO, ("\tFrame reg: 1, Period reg: 0\n")) + set64BitReg(1, SET_FRAMES_LSB_REG, SET_FRAMES_MSB_REG); + set64BitReg(0, SET_PERIOD_LSB_REG, SET_PERIOD_MSB_REG); + } + //auto + else { + set64BitReg(numBurstsReg, SET_FRAMES_LSB_REG, SET_FRAMES_MSB_REG); + set64BitReg(burstPeriodReg, SET_PERIOD_LSB_REG, SET_PERIOD_MSB_REG); + LOG(logINFO, ("\tFrames reg (bursts): %lld, Period reg(burst period): %lldns\n", getNumBursts(), getBurstPeriod())); + } } LOG(logINFO, ("\tDone Updating registers\n"))