From 1762a771cf20249f021aa71aa2873c16785dd8b4 Mon Sep 17 00:00:00 2001 From: chk <79915315+ChKendel@users.noreply.github.com> Date: Sat, 13 Jun 2026 00:00:18 +0200 Subject: [PATCH] arbeiten am callibration --- public/boardViewer.html | 45 +- public/calibration.css | 2 +- public/calibration.js | 14 + public/calibration_arm.html | 14 + public/calibration_arm2.html | 14 + scripts/4_yAxis_rotation_reconstruction.py | 349 ++ server/robotActions.js | 69 + server/server.js | 48 + .../20260612_190019/aruco_marker_poses.csv | 20 + .../20260612_190019/aruco_marker_poses.json | 683 ++++ .../20260612_190019/cam0.jpg | Bin 0 -> 89808 bytes .../20260612_190019/cam0_aruco_detection.json | 2465 +++++++++++ .../20260612_190019/cam0_camera_pose.json | 327 ++ .../20260612_190019/cam0_debug.jpg | Bin 0 -> 205522 bytes .../20260612_190019/cam1.jpg | Bin 0 -> 84753 bytes .../20260612_190019/cam1_aruco_detection.json | 2135 ++++++++++ .../20260612_190019/cam1_camera_pose.json | 383 ++ .../20260612_190019/cam1_debug.jpg | Bin 0 -> 199500 bytes .../20260612_190019/cam2.jpg | Bin 0 -> 297430 bytes .../20260612_190019/cam2_aruco_detection.json | 2898 +++++++++++++ .../20260612_190019/cam2_camera_pose.json | 383 ++ .../20260612_190019/cam2_debug.jpg | Bin 0 -> 441890 bytes .../20260612_190104/aruco_marker_poses.csv | 25 + .../20260612_190104/aruco_marker_poses.json | 903 ++++ .../20260612_190104/cam0.jpg | Bin 0 -> 93393 bytes .../20260612_190104/cam0_aruco_detection.json | 2356 +++++++++++ .../20260612_190104/cam0_camera_pose.json | 341 ++ .../20260612_190104/cam0_debug.jpg | Bin 0 -> 221059 bytes .../20260612_190104/cam1.jpg | Bin 0 -> 80261 bytes .../20260612_190104/cam1_aruco_detection.json | 1598 ++++++++ .../20260612_190104/cam1_camera_pose.json | 327 ++ .../20260612_190104/cam1_debug.jpg | Bin 0 -> 185767 bytes .../20260612_190104/cam2.jpg | Bin 0 -> 296310 bytes .../20260612_190104/cam2_aruco_detection.json | 3164 ++++++++++++++ .../20260612_190104/cam2_camera_pose.json | 397 ++ .../20260612_190104/cam2_debug.jpg | Bin 0 -> 445949 bytes .../20260612_190241/aruco_marker_poses.csv | 24 + .../20260612_190241/aruco_marker_poses.json | 859 ++++ .../20260612_190241/cam0.jpg | Bin 0 -> 90624 bytes .../20260612_190241/cam0_aruco_detection.json | 2427 +++++++++++ .../20260612_190241/cam0_camera_pose.json | 341 ++ .../20260612_190241/cam0_debug.jpg | Bin 0 -> 214745 bytes .../20260612_190241/cam1.jpg | Bin 0 -> 73997 bytes .../20260612_190241/cam1_aruco_detection.json | 3621 +++++++++++++++++ .../20260612_190241/cam1_camera_pose.json | 778 ++++ .../20260612_190241/cam1_debug.jpg | Bin 0 -> 214964 bytes .../20260612_190241/cam2.jpg | Bin 0 -> 293430 bytes .../20260612_190241/cam2_aruco_detection.json | 2827 +++++++++++++ .../20260612_190241/cam2_camera_pose.json | 341 ++ .../20260612_190241/cam2_debug.jpg | Bin 0 -> 437373 bytes test/yAxisRotation.test.js | 170 + 51 files changed, 30343 insertions(+), 5 deletions(-) create mode 100644 scripts/4_yAxis_rotation_reconstruction.py create mode 100644 server/robotActions.js create mode 100644 test/y-axis-finder-examples/20260612_190019/aruco_marker_poses.csv create mode 100644 test/y-axis-finder-examples/20260612_190019/aruco_marker_poses.json create mode 100644 test/y-axis-finder-examples/20260612_190019/cam0.jpg create mode 100644 test/y-axis-finder-examples/20260612_190019/cam0_aruco_detection.json create mode 100644 test/y-axis-finder-examples/20260612_190019/cam0_camera_pose.json create mode 100644 test/y-axis-finder-examples/20260612_190019/cam0_debug.jpg create mode 100644 test/y-axis-finder-examples/20260612_190019/cam1.jpg create mode 100644 test/y-axis-finder-examples/20260612_190019/cam1_aruco_detection.json create mode 100644 test/y-axis-finder-examples/20260612_190019/cam1_camera_pose.json create mode 100644 test/y-axis-finder-examples/20260612_190019/cam1_debug.jpg create mode 100644 test/y-axis-finder-examples/20260612_190019/cam2.jpg create mode 100644 test/y-axis-finder-examples/20260612_190019/cam2_aruco_detection.json create mode 100644 test/y-axis-finder-examples/20260612_190019/cam2_camera_pose.json create mode 100644 test/y-axis-finder-examples/20260612_190019/cam2_debug.jpg create mode 100644 test/y-axis-finder-examples/20260612_190104/aruco_marker_poses.csv create mode 100644 test/y-axis-finder-examples/20260612_190104/aruco_marker_poses.json create mode 100644 test/y-axis-finder-examples/20260612_190104/cam0.jpg create mode 100644 test/y-axis-finder-examples/20260612_190104/cam0_aruco_detection.json create mode 100644 test/y-axis-finder-examples/20260612_190104/cam0_camera_pose.json create mode 100644 test/y-axis-finder-examples/20260612_190104/cam0_debug.jpg create mode 100644 test/y-axis-finder-examples/20260612_190104/cam1.jpg create mode 100644 test/y-axis-finder-examples/20260612_190104/cam1_aruco_detection.json create mode 100644 test/y-axis-finder-examples/20260612_190104/cam1_camera_pose.json create mode 100644 test/y-axis-finder-examples/20260612_190104/cam1_debug.jpg create mode 100644 test/y-axis-finder-examples/20260612_190104/cam2.jpg create mode 100644 test/y-axis-finder-examples/20260612_190104/cam2_aruco_detection.json create mode 100644 test/y-axis-finder-examples/20260612_190104/cam2_camera_pose.json create mode 100644 test/y-axis-finder-examples/20260612_190104/cam2_debug.jpg create mode 100644 test/y-axis-finder-examples/20260612_190241/aruco_marker_poses.csv create mode 100644 test/y-axis-finder-examples/20260612_190241/aruco_marker_poses.json create mode 100644 test/y-axis-finder-examples/20260612_190241/cam0.jpg create mode 100644 test/y-axis-finder-examples/20260612_190241/cam0_aruco_detection.json create mode 100644 test/y-axis-finder-examples/20260612_190241/cam0_camera_pose.json create mode 100644 test/y-axis-finder-examples/20260612_190241/cam0_debug.jpg create mode 100644 test/y-axis-finder-examples/20260612_190241/cam1.jpg create mode 100644 test/y-axis-finder-examples/20260612_190241/cam1_aruco_detection.json create mode 100644 test/y-axis-finder-examples/20260612_190241/cam1_camera_pose.json create mode 100644 test/y-axis-finder-examples/20260612_190241/cam1_debug.jpg create mode 100644 test/y-axis-finder-examples/20260612_190241/cam2.jpg create mode 100644 test/y-axis-finder-examples/20260612_190241/cam2_aruco_detection.json create mode 100644 test/y-axis-finder-examples/20260612_190241/cam2_camera_pose.json create mode 100644 test/y-axis-finder-examples/20260612_190241/cam2_debug.jpg create mode 100644 test/yAxisRotation.test.js diff --git a/public/boardViewer.html b/public/boardViewer.html index c32d710..70102bf 100644 --- a/public/boardViewer.html +++ b/public/boardViewer.html @@ -736,6 +736,10 @@ function buildCompareLines() { // ── Y-Achsen-Berechnung aus drei Positionen ─────────────────────────────────── +/** Marker, die sich weniger als diesen Wert bewegen, werden ignoriert. + * Entspricht dem min_movement_mm-Parameter im Python-Skript. */ +const Y_AXIS_MIN_MOVEMENT_MM = 10.0; + function computeAndShowYAxis() { clearGroup(gYAxis); @@ -755,6 +759,8 @@ function computeAndShowYAxis() { const circumcenters = []; // [{id, C:[x,y,z]}] in mm const normals = []; // [[nx,ny,nz]] – Achsenrichtung je Marker + const markerData = []; // [{markerId, posA, posB, posC, circumcenter, normal}] für Speicherung + const skipped = []; // [{id, reason, maxMoveMm}] for (const [id, ma] of mapA) { const mb = mapB.get(id); @@ -765,6 +771,22 @@ function computeAndShowYAxis() { const P2 = mb.position_mm.map(Number); const P3 = mc.position_mm.map(Number); + // ── Mindest-Bewegungs-Filter ───────────────────────────────────────────── + // Marker, die sich zwischen den drei Positionen kaum bewegen, liefern + // degenerate Umkreismittelpunkte und korrumpieren die Achsenschätzung. + // Dieselbe Logik wie im Python-Skript (min_movement_mm). + const maxMoveMm = Math.max( + Math.sqrt(dist2(P1, P2)), + Math.sqrt(dist2(P2, P3)), + Math.sqrt(dist2(P1, P3)), + ); + if (maxMoveMm < Y_AXIS_MIN_MOVEMENT_MM) { + vlog(`Y-Achse: Marker ${id} übersprungen – Bewegung zu gering` + + ` (${maxMoveMm.toFixed(1)} mm < ${Y_AXIS_MIN_MOVEMENT_MM} mm, kein rotierender Marker)`, 'warn'); + skipped.push({ id, reason: 'Bewegung zu gering', maxMoveMm: +maxMoveMm.toFixed(2) }); + continue; + } + // Normalenvektor der Kreisebene = Achsenrichtung const v1 = [P2[0]-P1[0], P2[1]-P1[1], P2[2]-P1[2]]; const v2 = [P3[0]-P1[0], P3[1]-P1[1], P3[2]-P1[2]]; @@ -795,6 +817,7 @@ function computeAndShowYAxis() { (w1*P1[2] + w2*P2[2] + w3*P3[2]) / wSum, ]; circumcenters.push({ id, C }); + markerData.push({ markerId: id, posA: P1, posB: P2, posC: P3, circumcenter: C, normal: n }); // Kreismittelpunkt (rose) gYAxis.add(makeSphere(r2vArr(C), 0.007, 0xfb7185)); @@ -803,8 +826,11 @@ function computeAndShowYAxis() { } if (circumcenters.length === 0) { - vlog('Y-Achse: Keine gemeinsamen fremd-Marker in Pos A+B+C gefunden', 'warn'); - window.parent.postMessage({ type: 'yaxis-measurement', axisDir: null }, '*'); + const why = skipped.length + ? `Alle ${skipped.length} Marker gefiltert (Bewegung < ${Y_AXIS_MIN_MOVEMENT_MM} mm)` + : 'Keine gemeinsamen fremd-Marker in Pos A+B+C gefunden'; + vlog(`Y-Achse: ${why}`, 'warn'); + window.parent.postMessage({ type: 'yaxis-measurement', axisDir: null, skipped }, '*'); return; } @@ -837,7 +863,11 @@ function computeAndShowYAxis() { const fmt = v => (v >= 0 ? '+' : '') + v.toFixed(3) + '°'; const good = Math.abs(tiltXY) < 0.5 && Math.abs(tiltYZ) < 0.5; - vlog(`Y-Achse (${circumcenters.length} Marker): dir=[${axisDir.map(v => v.toFixed(4)).join(', ')}]`); + const usedIds = circumcenters.map(c => c.id); + const skippedIds = skipped.map(s => s.id); + vlog(`Y-Achse: ${usedIds.length} Marker genutzt (${usedIds.join(', ')})` + + (skippedIds.length ? ` · ${skippedIds.length} gefiltert (${skippedIds.join(', ')})` : '')); + vlog(` dir=[${axisDir.map(v => v.toFixed(4)).join(', ')}]`); vlog(` Referenzpunkt: [${axisPoint.map(v => v.toFixed(1)).join(', ')}] mm`); vlog(` Abw. von Y-Achse: XY ${fmt(tiltXY)} YZ ${fmt(tiltYZ)}`, good ? 'ok' : 'warn'); @@ -847,7 +877,14 @@ function computeAndShowYAxis() { axisPoint, tiltXY, tiltYZ, - numMarkers: circumcenters.length, + numMarkers: circumcenters.length, + numMarkersCommon: circumcenters.length + skipped.length, + skipped, + // Für rotation_detection.json: Run-Referenzen und Marker-Rohdaten + runA: document.getElementById('sel-run-primary')?.value ?? null, + runB: document.getElementById('sel-run-compare')?.value ?? null, + runC: document.getElementById('sel-run-c')?.value ?? null, + markerData, }, '*'); } diff --git a/public/calibration.css b/public/calibration.css index aa3f005..63208e7 100644 --- a/public/calibration.css +++ b/public/calibration.css @@ -60,7 +60,6 @@ body { display: flex; flex-direction: column; gap: 3px; - padding-top: 4px; flex-shrink: 0; width: 148px; } @@ -92,6 +91,7 @@ body { border-right: none; border-left: 3px solid var(--accent); padding-left: 13px; /* kompensiert den dickeren linken Rand */ + margin-right: -1px; /* überlappt 1px ins Panel → kein Zoom-Spalt */ z-index: 1; } diff --git a/public/calibration.js b/public/calibration.js index 9df55c0..c7fadf7 100644 --- a/public/calibration.js +++ b/public/calibration.js @@ -565,6 +565,20 @@ function initArm(tab) { log(`📐 Achse (${msg.numMarkers} Marker): dir=[${msg.axisDir.map(v => v.toFixed(4)).join(', ')}]` + ` XY=${fmt(msg.tiltXY)} YZ=${fmt(msg.tiltYZ)}`); log(` Referenzpunkt: [${msg.axisPoint.map(v => v.toFixed(1)).join(', ')}] mm`); + + // In rotation_detection.json speichern (anhängen) + fetch('/api/xaxis/save-rotation-detection', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + axis: { dir: msg.axisDir, referencePoint: msg.axisPoint, tiltXY_deg: msg.tiltXY, tiltYZ_deg: msg.tiltYZ }, + runs: { A: msg.runA ?? null, B: msg.runB ?? null, C: msg.runC ?? null }, + numMarkers: msg.numMarkers, + markers: msg.markerData ?? [], + }), + }).then(r => r.json()) + .then(d => log(`💾 Gespeichert: ${d.file} (${d.total} Messungen)`)) + .catch(e => log(`⚠ Speichern fehlgeschlagen: ${e.message}`)); } }); } diff --git a/public/calibration_arm.html b/public/calibration_arm.html index fb97732..67a640b 100644 --- a/public/calibration_arm.html +++ b/public/calibration_arm.html @@ -20,6 +20,20 @@ + +
n+iG5BtmqH)?%QOT4;oWDPaw zO4vV5)6%Ff^_i(Ag`J|!dv@Sqn^1)kG~~5{Zxc#Z*q`@V_4jResYx{&>VDJAl^N-& zGIetKFefxuRqio&PwafWuLD|^b}G)ls$Si2=7|unmS8scSP)yW9Lbwk#kpR3(Q);z zdmdk!n_PKpRJlUvaRoBx@vHn8ITUKX>G|_7y4nw0FoyKmp2f4{U3^MALuRPQdT!4n zYr j=EZ%VO_n0^u3keo>0JlOx4b`B@FIumhBeg4 zM_>K2P)XdK^!*+UyR-ig(wI;cuTzK?3%+ydIJp03TQNfDx;gff_WJ8zubzg6aeRRs zPzX|GZ_59^K1q^TF83FW0<=OPnEkdRnLkiAV+?`z?a|T!Jq`hEETJ Ck d*P1}i8BkzA0O+l%aKr~f;0&X{ zUkHGdtWwX7=4gK#sY;@Yp-OyOH6M|Novp?ho@$C`>}kJxlrWOKi?SCKLMJydpd#wT z+Ie4XO37kKZ*8^&O~TE&@W%;81@oHEfiU()1->-bI_#yyPXw>Aq+|vv*taD5jd z&bK%7e(Y{86IrrZs2srJJm^rpH+{RT(Eq|h_U~|7`seI^!T#u>`Vwl!#|u*<-K*tE zj7Hj#ZvGTvcVX3Jfp2-YS9L>V%>(&EzXDEUffg3@9FyRxxRn@sI#h0ZXDFfR<|X7K zPQ|m$!qcJRuy _qhw(XZcy6n=fzc(3Nfk&`3Cy#iDL)X}{2w#gi- zBdbaGtCI}4{uZ-<gy1*O7XOoR`V?X^o=oJ1$)I&=r-Y1TB)00>LLSVvQjBz){_j z&Yg~-o#dXZ?k@< vx%b@x6w`hnXj6+PAbkiPzf>ONAUG_kA#} z-YV224lIz2FvAu5Msxmu$gU^iEiAQRdZ6WqrwGBffCfsrxX^u3dipKW!r|ReFWJoT zVq%%1z!ejn-sB!eGL@v&_%6(3F7Ch+K9u$&L6R+vI=9dcb)=J*{jM$jnWa}+g5SBB z#`pW5{WMgX(tm#1KnS~Y7SLJ0{;ro{GbLQl6MjIm;o#ZsPmd_^wEMaHi$?An4{L?g zbxbqoMALiUQLoO}loyZJaJsbJc$o*Bwjy5JUTs9x`j) 2aIaQ8#NX>Q4 z^Sd&NTi|xM?Nam@c%#|Z(oTiIIQX>AS4>PWqU#r 9F!pOMAV-WBK26;rKdG22 z5_%${=FJwR^%XD)25zxk9z7a(6~*>@RPiv)W@yjX$-NWmNMI-*Mwe=V`s(U8x?|v6 zX2VB>_MZveaZN+f*!p!>^k9;2%cb~g92b*0PAq)x6(Bff;4QlT;x|<|1h_KyUk%cz zy|HcE`d$4!ywsR@*Xpz7T=_4X)BztQ8 3lNGH+*;;1eO)7Mj=(fs2fc*Nfs~OVn;BGMQAa1BX8I0 zSITj_%mJdfJ- E<$zw`lNz0te*i4mWCE38j7u^VsH=A zB?E~X>eDp9eM9v`pRL}$9)6KU!ze*#@EGAA&q(OIE+!|67H`Cbl-Z7R_NRUGEr>;a zCEBz(1tWomP>Fav(v_qor^AjjC3Xz!x7MnF&kav`_HhfjMSIYI{dcW;_(T-UFKhiJ zw2IRHd?&X;%9v>kAzl}Y`i?egwI_&38nm^#Suph5c?WF_RroKo=qCLoc|4iJ{EqQk zejYJ&JC;f7(rwKk@}dx}`qErkjtRtnx4fZU%;1PE?Jty<%T}|pT;!Loa;Kpq7*t?e zCMjBVxqUOoho?UI(Hm+q$eH;6HZ81zjl3+n^mvyV+Ju;Aoagmu28`6RV>-t~TRjk? zUJ@sy*yT{ylG%d0 THm9{lB=sN#A1d$A^GW+*Q7dx=^UAN zDKt;$Mv_Ea`%)NUr9@$K$NxLW$B#8MVSXXBkSKMTHM$nAiHvA0j}eKzkMe%^4* zhbmwBMoO9&9Mf)Dk=laqg~Oro+^p9$E&mi6kV4_+<2EY|@v?PY6Cx4EyL(*k-qQg` zJn64g8t;4gIEW_59BmmPN@oS1LwqJkv?j{Q#)$`VFk4zp7rZ&{9vb|SPo_>v1ed@G z1v;I3dxhV|c)VNJ2&n{)0j%nZ;!NlyLY<>(IZIJh1&@`oW2wEkV_ITn@MeZ* z(_T!UBX73Z3O4cc8Qob$=T2V>AHE773-XbThUQ9}tC}eVg+s8e44QRaIPu$IwxrE* zXM4?kl=-i-z?CO*D5Mjtyh*~_7?-jfX1ZB6j+wW*%Thxrd ZXo5-{@SV4!X|Cs7jp>I{r94~3GH#?Sd42wMR5o7bNp+Z8!`CJqOTLXM(y z6$625yBc#F$84|efk^rI7(f>&@{D91zN-@@a;d&hn! 0TIHjqw{0>Xx zzW6z<#=OI6$#>feV+Sk l+Apn8ms&lDy&mBLL3Ev zc(_yXk_rh>h1p`9UbBW#PBnJ(hn0?A3@io$;z$v~r #Nb}$8!wuza+K7HhvE`+_`=xN6z(Nlb7n_A>`Cq zbI?%i_*mS2CUXFtD@#v9zIU}&+|R=uw?d~!kG@o_vHS@bkUTf813f7sB94Y6+Q-z3 z%SE3SDSbGu!&&DmF8@u7$% x=+2R69%^o7OS=y_q;ndGGoCsVjr-%i6Ab50G^c&za`>b+ z#n(z(Q ZUr|D>0jed@q0Rs{VUT+(}GUpYQ?+Tx?u_E)4x9bab)TWEYbuTN~ji zm8|%=7NM&y1;jG udXyKh(zcPb+Zn~jQ8c^8x9Z< z%&s`o0O)m$=A^|*=&uwpfHnZCc;!3EEEM~jZ6-migUj>9f K7ihb1)bDL{lfbbp?I-9xj|tU`!M$yDHh81t7`c{8&_0f2!V*Yf<0H= zBHOCbv60^O%)71AwsU~jk;v!zi7PhM=hYql^@0C+3!SMM@zs<=y;Sd4TlkXj_e13w zrrG)5HUZBTJxMsB1Hy6sG-M5RNyaR7j$AVGu5by4(B5?>$osPEtiXqQZoUjT)xRi0 zc0poR66)^vl> AK^8Ku=qm^EaQ9V{w zqP*bwv^JD;{TE6qSU>X{_?-z;$AHyFq4!zJ-# npMi3on- z+>^T-Yi!}blgHy5hq9r|ykT!jRbCvWbQ=R1YSvS>zx(&1qZujLc5ilkMjAjNcybwi zhZJXgwrTV_l*C|94h#D1aFc{-vvha$Oy-d}Hx9KM3er{tmUM00Zhx6rE$}tbB}B2o zWss~3joW~o{gQY&?P)+qrfGv=MKD3wyTL|22?gTw8Av5&AXPvC2{w9sJA4cQ;xEH> zwEsUueRWt9Zq)YZkPf9=+$f3B(%p hiYI?gFnglHOQJ+P;J5>)4(Q_h2B*I;kwg%mW3YRp_ZFUE%y zKu=nD1)Ll1UpQR(+8|SZHN}A4>S|}HYr9L%-Px4sip1%0-fX&W7AAoL_nw*WSEE)+ z`KxqQRxwZ9a{_Izo!eHdp+qbP=j}4XKd_80p`;py71X%bJXWuOFOh<(;4xrnrHn2h z(J}XrzH@J#!~GgN!n?IpJRiN4Qv1yW2JHr3-_0${iWLv =1p^r{##n9~5Za z;Em7-5KAs+9^hee_|fvUEz@rteT&@YMTj?lZ0QjeFX-g!PC+|YnB3Q6IwH6`P|g=) zbcLXkKzZt}JjbsvVck-8&P2v-Un|~hONdA!sqc(*OMsNe)Qfbll}5R5E0$AFJWHYL zIqQ#0j;%DlDH8NkRHZknKK7&kQrElAiPXv*chci8cY0Le@U+Jy`!k2q$7&0{{2eY_ zi_h>%*{8&vg_UCrGJl3$M_=b+V(IbnmaglKF0BaFwSulL nq09amY{r{h=ZD^O&9x@p(sz5%+7$yFnY9@;v;vho6U z%1_f|$553W#N^YvG(~%giQ$i}V!GGsJmTE!yOin~2{O4KgQV*&8?#HX^yn?Wl@YkX zyQKqER$r_9JN#!p)8ik`{Ly6tJJDhD=+{c_+NSUMW;qv!&!NltztZo+H&6Ks+wc8K z0qCv%8xF)_ef}98r8Nzrr>E&*2gm_TZ+|6&L#@L2M7^LVQ{(&WD+hyrkw(fKob{t; zzxB7}wToyPHv?#=U==+RK^=)_784zQMHf>bBBMjrTYjBu=UqU^&j6Q^J$BwIdxhZF z*;nqasJ|-Tbswt)&*_FsoijOz^q#*1?0R8p_*b1%kj0~)9G?8Td<OQ9?G;W$Vogda`*>HG{|$8zU_zuo<(Q~&p4W8^;gxgz?vWN-dngdPi` zTz{>oK0ajNK2!y7Vu&HZBpWvDqjCd6NiHDIA3S+IM!`U>F#cqx J*^hjw2-J)(t6ZXWRtc*=W zG5(-4{B^j3=WT nQ{>UlK{*6qa%MpB8y-PCsjI$ADHwU)S)N`bjOSxe|s2A7CI$-p7_$-GL4U>?R1 zUg$9*!F@5lB4rZaHdrwhWs~W(@OZlVOQMS1<9kqQGe%L~r94Se<`NQCbJFTz2{VMg zIimV!c__7T3O#|ER-b;>=bEPo{$aHG(#s(En4bq&vHlF_##|Q@)5&(Bp4-MA^ck~b zWI)ZL@0?15+SZ$RWX038@KGV1QTi2Tx$ KT{|RM%kPayE2jHV zgLlEQEzQjPZ(LL3%)2>yKddLDk>%{JybB!1R*SDc&MJm*{PH&<@KbCzrf|wAjIFaV zI5baRuMcLfb# kCrvbm}-@<1` z!d6s^+~C~XMW6I+IaF@m(;j$sOgTDD>MgZ_Oyy#~zqn8_Hr=U6>Zwi kB&38zI46SUVk(2l$_=0yOy-c%ga`z%OmU`^0*D6ingBQ@QkK#g$W0u^ zj8uC^SWB1aFoqKZ+DNHSP=eq+c<%dRq9P4#56Jo$-aUfQV+2CBfsBdZAnya#05e18 z@1%XCva0AlGfG>|kTKbie@0?0W=pW i$BS8R=;wK>y6E6%&NT0)FpnSD+ zZES$*7#mz( f1KXeYIrbwm`rG3& zrcNKbAl8#nbDivg$qCcOg?THEY`pw;mUGeyBV~7v8|&6C5>@*f-uVB?BVkTt7rZ>wKlT~Z2 zfsM7*x%+Q_;FLW4na5|tcBi&px`r`O?u^4fE)LxhxfeNs?=TWFKf}4XoVU(DT-VoS zR3u+|x77UDpCv=DrDI@(=@rER54apSNqyxj&_kFKB#a7NFB3~1m4L)0b}=j_9s# +MzqHznZ)DMdeWQL5)v#BL$xZV%}%JYD#s*;K_Tz=;F*wn_~bBZ zLdGHuoo^m2Pe`No;Jt!j8w*N0>%akJ$~Ta^S4BaCkKjY`1tgMk@D;UGH<^^S%D2nr z;{vk2bn|4}l*nkO;q(;TM`062XE|Ge*Ut70HH@pAX-~s+{;}OZ=!!i(O&J^$E~&7a z7&v_$zKp{JejvDjh=L*}0z ze1>SoT5 z;YGjFjOK{Bldgi{mvxozd`0KM*Tw%m-D=i3vX~X)ov9!F)vrQ%|6pg`IqFxrBi+{X zMcIZKZ}`^3t`(wR72t_$1*-$!jTBnH5BwZFMmRE_82 Pz@&&*c-^+eQ07 z4Gy;Yxwme|;tN21xmYOs_6z_sc}=H&DgS5zWs(31o{3(UV%&oVw=cfl4WCu{t`$M_ z DwypxJ*}N) zB-A*DUEUieMtrUz+#P2+@{F2a?H4kCDP(1s_=A%6xbdqwLi#k8*V0-!3chXBABOvu zk~Mp;aVf{@-pc-AnI>DDXilNAkZT*~AC$u|f@^vxe}^d;5>)BesmFbRe@9PwJHm=O zJK(B8TR*}12!F~KX*K7ds$yps;{Elb33b lMt^Q`Ej? zh1|NyGa%^NC-zMA6SX(iDOC!L(AH9?=HtKNiNJvs_jq5$k^?U>B4q2%LqjCA=N#FQ zzN(}!UsZA~mU7?ZIhZ;cVoK_H*LZ31yc8G8%sI%OP^H`=YquWypP<-?Z@=EWynymA zNBAzfs;cUQ-`qacRV`Gy*y&2v;-sU$VaMbyjwRSw2{Q1f&P>XyUaXu`z<1BZ_}UCV z_OdzDuE|X6F@41;1|YOIBZ?>bf6t%%_mHEkBOLi9 GNyCjO4SelMm+AseKECkJ`|*L8uBrG=fBFY={Bg5YQG+C zPtK}}+@w8y`2j@xL`-f-`0BLDaL$#p=KxMn9yvBk;`;~A)Y~7h+cZ5fNl(I8 5qCGs`FnPRnA88`CLxtlpLhbYijP$F|k)4$d6q?`h9rHKk=|o zVvl(IW30R4IsF>wkki0Bf>yR$=>lS+@^4klv2p*`Uf3@CFFW&M&;`DZ-5^nRZ2Vqq zzntrKrqcZ!l(hGcHf7gTfI{LK8*}jwH DM+VB10A2=xm?|34@j|Fe^7){a=mZtL!x<+6~aW;Nr#=>}# za6~Bv;W630xdPMFSBVVg)q0=&Cj&ff%4f3Mu&N_Ymf3kye5OSzaK3c;b_MT@qQ;(B zc-`Gi8O{Q-#F>5wp-#C?yELB&@PdfTakZd #2~u4rw`c)~j*TchJ%vO8smCa6iG2iG~vn zE2eyWQ_gc!71|F}iO^he9(A&Vvvs;HnJU3U%4-GPy|KCuzlO>1r7tJVLtVU-=g zWpG7+<(9>bpH?33pW^;m-PJjF#zlK&&AeGw{g8%fRIrL0NqnHYTzBtlJ^y+=vWXwA zKFO38;-2g+V)-&QeP?pw&2VpE >_RmxFbKY4k2wQVipMi_+!{_=n=6<#E z&(ThVmm}r_^G1A~Bh>R=S8Q}jDQzQI{NLSTOOIK?8k5j73TTW3(1#CH$eqO21&%KO z+nv>9KkV^~a4E~Czm`opF1Qv}P36*;1=l4!SoYy1zljfSJ}AlAgB0OkFKcV~*9?4p zoVdPUcdsea_$Rl-fPVk)NEe*leC74>ydbh-AUb{Cq@zgPlw>pXjOC}Te?&7KZOFSt z`dubhGggpF5-4RU)8ac29i~KjBeHOEDQ#q;lmSLn5LA4uWpKz&chY2pr4wd)f?fRW zG|nDmk|J);jD 2LIRZCz!rkdO9NWPdNDKb 4SS&y4&0 zS0AdXUm#?hnZv6k^b4gAD7`-O9I__Tcv3BOb|G2PR5QnCK |Cw7(H=Nh(32jNGw>#cT(wbq@pECSTZK z(vRZv%%!t&NryyBdpwncx#kOSP%3_)nog$3-LsQtb0;R<8{U3+{BI)|EBWyrrnx|9 z$-Pfn!;~e-q$bj0NE6A@2a99t>oSVaCgFz)qvIt~nIVB?1X;T4@H@+F^a;xxAyXyq zN+MeDKe}{JH+lF%J4_#s9ucBmp(JQu)_#o<>huww1=$Y2`qhHxabv^M6cI{_E6;jE z_&Q-{@+;%}Qbw&$u>De2HUeoaW>hs#vJw_1N>~#4NT}>N2aDOT(L*k*PWB1~@0!PU z1wXO!@^Bp~fhj$Ncy)064G*r#KJM3dj-*Q@6l$Ob-h?lOZ;+QNPl+$wXyT5$sa2Tp z;Hc;2_FbUI?WQB0t4o5Cs`M4 z+u|Vw7{~slkUyQAd){=O^=Sl59k@gLeDj`(BKYcH#Uyriq);ZdQf&+g7;uXLqXK4Z z&XoUYHT8w_$6&Y!c3_YxG)A;Z4K!tr*RMlvqV9)4Qq3mlGA+SHbusNN3nFtIOzp6c z@M0mf@a+k8N_7tcDFfhMi6dM~9V0TjY~}`^vq#ayq#1LtS H*|JG>0hDT37S4~3c7{!;Ny9D|Y32VG;2wbUM_)lJo0$p^5{ zOgYb}cl4#qfDK_!n?S!+q46p+xmVQ $K&Rr=OLd<~T%FP|Xq%R>Vx<2ofW$H!-2qD5L9f@kGKuiMeJstpemV zf`>NL%8J>_AHrCEP`e@v1j*{Zc`D?wnZr;n4DHMI*>9x_I`@;pv*`b69*U4G)hrhO z(c|>DWU##$Ulk)8v1G4P{Se~0({(qHuXR`1cKN;~_Fb+qd5uIqx?|gb!g%rqzUfAx z_Wj%hNa&P|zNj|n8&n?F`43KNr!hVLRQ5wl?fPm5$1v>}qpq8O7^-t1XW(qkX^JpW zKqb$7)hR$T&^FnZ!{wLsl^@p(!>7~sAePW8InUOz&QD&1c@~dB(uZD5IiNYrR10xs zn&kVn)B!1yaJ9it-!;_$==mMpUUFJF>#G~2&>_Y))7|7CCd(HgsWMl6Ft=jHVT=>p z=RkMQHP5%jv`E#WDa9XzMwziW8hC#kRGBLqFw@TtYJ#5iwAq{-FpnF!J6SAE-tUN) zJIbN)L^@e!HAQrhF&8I!2 Y}L z4b2K|V|@5>ORUboV&)T@sx@KIT3k%@oDZdjGjM}8vKljIF;JZFOYS_2V=%~76l)wF z&0R*B)DjwrSNVW>JSZ}lXV`J43G^u8-DNV2G~m%MR100tJ)R#)pj^RdpqBrctm%xf^OthDnDl1uZ Hl=J? zR*mLFPQF8^;don23C&C;$jh+=dWLESm-6ZVJCYRoEs*m`Hi$RrrEH8BSym@5zzKjK zcqRZrFQyamR)9-{z;Jj1f3<1?60uADb@T{pu`?bVTsGqCmq)UHfoo3oXCy*bm$iy; zq-%H^QiybWt;OlDn)@7HJ({&?1wVR=rz>(W(~uTm)fhm1$O&Y|lBcO_Dt6$GT&Y&f zd_@h^2-oXicjTBNn~1$a&5oYnGF&vGZ*anv_|1Kj>CJl|VR?fhb@dzU0Pj8a{zdB5 zBh>8 P~Ri;8rDk3&8Ij`U8|%_y4-7h=&lo*tB+qzIn<4_CtLzuRmym^ zMBv^@g-T>G^|t}OX0MnJofAJ)?1pjunTJBCn)B3fwyBBafUWz7636(IZd$()Efon& z3!tpWSL MeT(IN8gF`w8wj!)S|}CFp;0RvRcLZN $JGt zv0#G0^mL~Fbjc_52jhW;nW{6A%PT>MZ4@Is<**=Sa?-B`<8W>5*5n&2&<6`7LI*3G zR7oYYp#&_x_FvfUFMKN6Av!h-rS|bAB}2cTEW3cj*O0Do(3{i0xWKQkB|RizVZ|lL z %}1V$^GCd47s^*540QoX@E#e65tFH3kE@O1iuikMwb$kz zNUIbhdH8_-(BMJOroB)#$18ar4(B?$56D{{QZXu7)^8{C=Oq(M=@Vfq=h8(ILGt5& zin+4pAIad=n5 jZ~#TyEwvr>NVv&kAuiDQ|He0 zw`}N`yU!VG`zb%IRm3U(9_^@onQfKYZ}Me*(^62lD0BT+-(5AP^6G}63VKPKZLAv= zzn@Yj=B*oRd>l{JfUhQ&Uemv5FMsMx`~rdve`n-+$;^6`cG5St#8j%+DYo)3WakV} zQcG%&c@VS!H$^ZC4h|p&7I`t{&HT}WX&Og_^dLZ5<;0pX0#uV1%L@hPil(Jk4}hC= z2n>ky>E!fgs2vOvjW;D+1A0y(;~Qv*A)XQ7q6kAW1cn%j1>)>W_q&-sLzYHG%B22{ zPeQ6V*X8Tp}qrSmPD_VsNuW9wAs@( zCAKUNzLu+!n9{76M{(OhQlGjAmd@)EyOk40(8n^@d~XAW@Uu8%0P+1q_h#uVl{q?v zWEQIPKqxN!0^j>Ov41=x*@#kt*L)LU_%a%^wXD{d@QUths>-tQui5*Jw ?79_J`(?kZxbVOFr-MoycA6dCNFywD1W43BJ_lsyFWhF4T&v z?F!@47lzB^lJ2YK>AyjT1|Z>QeKF%1tUSNMURW^LEFM(JA6B#u8Lw0j1j`*yGT1qM zp{K4Dh22P30FIl1oiDP|s<8jWYz1rs)%oL%A7kZ3_oY7%uxT;$F%Tz_GV7?_M(Eti zeYO-I7wSQ 7IRklGo_+{kPHt~`B~y{;D%Ft5<>SRvr{=HgXLM3tZ5F#OUwc~ zRq|%+Fsh*AXvC{cV7gU6ye2~)FmK5H+AphnP~FcyS$0UDj)TZOzdLNy2 Fny^GL7(px4q$v2%w|X07uqA16WQ9~5tQB4uUlYBlnjGv zORc%Dw~Ur6`CjDPX{WmWdb?}tQrsu^mf1r<@Ox@Sm&>s660SWy=by-}(cE}Q{dTBj zo_(mcfQahLL!}Kz+W_+DN(ilf`SmeP0Wtrr%TjoK`@^DsZ`%|ipJw0Pm{U2Y66!*Q zNi1=nD-$@V7C?IxN-qqn9#$vz?p3-m+UWP|B)xRunM%m|N +W1tdI$->Wl #6Gra zLugw#`#$fd!XLqN!1%I=pEO2*iD-m3Jt|Y03ki`}%EPGga|!J}Jqgqt)h0%a(d3++ z=TC{=*4e!~Hd&f`fghZF AY;=mF4|?4sXIFg%+^~ zjdw(|N~`op|5(0c)9me?QCYd^A34E2{IW|vXx9EF*5I^8w~oSX qfg+-v8-r49SFK>%70S6Hq2%^C29&gEI3Myr3mm06Gsny16L zELqAHU+9rQ0q)BsgZ%Ne#toBoGYL%~Vq5xQxiNc8pg*WtRp}5FDI6~Jxvlk88d2A{ z;on4eoE~4+XE(1Evb^;0Z-m&ZbzhvrzwuZ&)X?c+btJB@Jqe{mZKT1D+ p4bDV#7yN^Jt{p$7nSWP8DV;vgjeTxBrYHX zST;(ck4Kle!t4rQl3j{7Z*H0-7|^$AzKwy&z+*mOgOgc4lB#^Js`Dawo%iuoM?a*` z2;F%xX-ZZnHX5?l^n%eFruGBcND-;ULj}C`()2LSwEbvDMPPWT*TMzZ;};8N-iNqo z5~YFf0F?%Kii93|9ZqFNkAWD)JRgQ{L!6z|>#h>amND57&uh<#5HhdVu@tMdrHVqt zpnVdQBrKN%yOW*F^z|5+gf5Xcubne>i+5=cBU1~xA)+k;f{RL1rFiNAnIKreGa9O+ zVW41M-CK@_aQ^rkab0c$r9Ggn9P+vh?V5}mlx*phVeGS 1uE>|7e>0=<$1&?!bPX5~W z4n1%AT1Y;BlB;17Gg4Ym^l1JQsS@hWvOt X *Xe9_kJZd&$D; ;8ur!XN*qgqJkE95Bsb& zG@NIb)b=X_Bb)!po&Q5co6Gjg9kNzmyMTz55$w;OZW=h3{HFU+b5cGc77M`P^b|e+ zV+#%ET-?>P=ji{6Yb=>`N;Tvr$8kis{!n76@O@qH=@S!YolP}0WVg6-m(V1XOuus1 zKqOLE3+3Lg|7t04-%Le+Rd*?am??`Sz3;EDp%T#fZt6nmx~gx>pT7EMf7YmCM;iEv z=3J$~a&jiHK8(EThq($k=P!@;T2vN^q)C6T+2tp$5dFjS`FI@2?kjPL>QXi7nL4oq z)%z_Qyv5^e( bOXZN%=3coY>C_VHbY`% zU8(;hAuPAgZn77V4)fI@@YO?$NhM9ko*IjFj*iUys_m4^P@ei=?%({pTYC}NnmAHw z-Fecgw(K(IUQL(=cBo`e>nK6Eu=uX#3M;Zr{del`XfnqnJy`j87NoXrN8jp>JxjBh z3}MsEG(!(M9jN4*m9>R|=a8f$(Y@m*L~ zuc@zfK(P3yf}z1P*wpm(9>2Zt>mM2ppBZ{)lQy&I4EtOBd@fOzQXZh$mpopyp3Z$Y z->T#rJ~YwwX$I;o*;{6Y1rN~Yj;##mh*9oAr&?BYbIEvT9`4sRl(;IHx|Ab|gjN!N z57xYi-j}HZdS~`_#Y_fIA^X5T3odH{YsnG!DtCqT7o++k_7UjVj+HLFVzX10Lm2*n zmR*a`&&EBzdfoK|Nof{CSwGluN=S8uC((w#`s~77LZ$L+{8mCvX}AT)33`ZW#NJkR zeqQ!4qiDDW_1eH|xl-=TBfBSg#jaS8>SQv6^+=2fi2RHUWrVbc_pnMo(k}V%aje3$ zReeV%*_4)Rf8v+@nzA>y-fyVk;I^s^YZhF 0M=VaG26pSkJxN-!;q1 zm1SqZ(4HzOV?E-KV(bZT72QrQ$n%O$vCDGPzGJME x=$~gWe*tE|s@y)+2#24e_c7PZX`kHPrF$N#0jI zQLNe-WajXGGcGj=6kFC?CQadDziAt|>l~(* 35g$DWR4TFVt?1!8?e8C!Nd!>IEcJ*bXCV@SVQJU6}N({8w z>yxu`bV_$-DZa!1Mv3Tl=y&BZj9X?=V5|$eK2~x(zP|EavZ_R6%d|F(zl7}|Hh{jp z)o#-IBR(zVmjriY?Q!;jU}MJl_34kn!UKPqFd6sTwa>Q@<4HczZ`tc8xFV*!uW>#8 zaNZwo7Z)g|Jr_`X2FlkmnedD8$|w77TRcZiMHc6+32c(Drp{o${j8^uNo))&cNx!C zNo#d_EOq>BT?2}z<6?O0ADS7pH=pE>y=VHZhmNro(4jUE@2yp$)?oQE`F=X*87`T{ zRI0JX?|@Fl?`aXwO`@pDs!G-i{OH6y %H}r7T~WaF*t6)46U%C-nIgShr~3Ms9IO~hUu6uvC^X(;<^NMm-`&woU|GH) z%v#Vm8(%GDYv7`3{Sp}Sph^pcs?hg<{oN0WkSSi~xwMeUrfdcoejc_TUZ1?aUqBvM zG0uLzN+M^a>t#n`8au8Uvy7o80v?Ri@GO1?G%?8E2m=S)dtHDud_y`oM;W1r#m7~z z7~jc!7YH;}bHq&Uk nWg1h z(|s@QxA(c*&-!uH*|*=K#JbxswW{-_`eRgQ<*J}1!3;x!AHT=`tq%Ik<$AADNrlpx z2iSnG)S`8qsgbW$=l$0{!#K5tx@A_Z_L+NI?rF@Dufy@O3|(>3Eiw{mDLg__i^1Fo z`&U^zz&_`kTiQ@Jl{S^}ONkHdGJ>~m^kQuIt?I8>&SVuLi`sdw#5ZNqXt?O|VbbWG zaDBAJg3xrY_zP>a+3dHc@-><(YjIub25QaJA8eB!Cty> sL0O= zn{YqFCma?tLkX~fLjk5^!bOsS5$8wC9_N+@x^i7kTde0 =Oj+Y4FUL} z`s<_Vpk|fHGiuj b`sJEb}imy(wzQOYJf|lv^EV%fEPAb<{Tg^BMg`FX_ ^s1=zIuGnV7Yx|D;e^rX^Cop4mg-jt=}__$n$G3*ysj~t-A6mY?3H %~~Hc>t-37v-RN(^PDoV-hv#JK^Lb)?yl9$ScSK+rvq$y)eeJ+tF~8 zFc*a6yT1zI=rXw496TKtS~>Tm)oe4!p)5K2+sv(yWczHs+XFa%TUm)Czvg4MtWK=V zjfoVoA`Sa&8}Gpo$ux7(k?dYOhbMMM+;4oX#3DTnBEJ&6wWCX;JUzIw`?M12!iK*0 zvhhq9>N8^7@fvL=Y~c#p@M_SrS2YjP(de%=hcdazmGZY)C?`Tyy%+yd${yNF3vonv zfauLAmzy3OiSxW+Zy1*!lBUYfgLap%{lL+M>fQR&uk%~ffQ=W&-DOCEYqx`JoGKqR z1{sSB6+L1IM@l{}&di0g&lEqQm*OpH=Wpp;zPC>tveay&hDVy)1Pe!dK{jW|a)6 z%5Ks2%0;OnTU3ABoZrasjz+AXxxNdRvXvOH@^3gq)s{iO>aVBGGq8Nx=#zLkZ6-=@ zaA;&|DGxUf`7dxGa+TLv;A3>s@W3h;tywW!rkjY(+ayswEpaKkOPy;i(pr5L=uEIa zB-V_LnD8kq(a?-dm6vHw1DKaxOxoG4%1|Of35|6=sQmO0*nJXGW`&p&7+nXIM<|Fk zQwRy~5-?7ia`zbV6ZBG|l@>&ei%1#FRgr76GL2;Bkj|+>Il ogsaN!cQpp#E_=1Zyp2?YlE+eRz6Inu2LHS?wTG!b%hP4|M zo?5x>!B>|2bhOv7iQj*ukxXuyFbz5O@D-=|vocG _d{upx zRkYW!Uj0{yRcNAB=4`^;tsHlAfbu@Gi(vWbYJxzoVp>L)n>> ?}oURVu2G5?ls4> *p?z5>I?d#x(v~KS zmc!M;m8NU!Mj6aYo>rQA&W$?gMu4Azw$%hnyj%1h|D#hOgUOG NVk< G;C&|@r@w4#u>lPz41v&+#_O5dbC`w+15`v>$;bFuXIsOy|>iaG-=*-7Hv$( zwENTKR%eYI{sWdOXiQEIhFDa(lC|^u^pfTNS{uq{6om4dvoF;;?%> shD-UjvSYUn2;b-D? zK5qr(zT6a08f?{;H!gQ(ehsRTm1q8Vph$m*`=w4vAHS8^?6{BmGP+U$gWv!;c^%~B zJ^{%Za~(StKFj*&I*Kj(2XeLdno4h0R-i|ypg5vu{H8pdpzVXfs5FeQU^2j*=wdPm z+UJLP#>@21&}<3UcLnW2Ni55hX+u(Vtz7&n8UUO;K*4Qp1Pb6OM<#3D#?>v8>I6or zi5J#>S|F`c`oJz*N3i-5a388*{RkWQ=$G;ApM6~rbfLz;q7$TPmSU1(bGm71uCIA; z$f+3`qO)m=_Aq= W06arm)gq(4!qnT(8P?De?k?Ovr8mp z1`>03cTTTGdH gMoNkuA0Z*CJK-#?0cNs)1k9_C?wu4N|&N^<&(20c{!Wy8YN`U7zNs zxa@q|wx9dUdsXbDns A ($*tODI7OkBb4AnobyctI96b
xyVb%nrpkbDRRpn4dxnXOylxvL{C2LM& z%3{p^(3xlA@5F%<)R$YJql !@ft$1c3KV?LwX(-x%w2Ku}Wb)zkux3t~Qmzbw~?r z`JREolPLfThm=MEtN{jz!9WQn=>hXS87At_mIU}~uoS8f*UH1D#l!T@!2&G@cAx1+ z!+Q*!fz>|}f{VVy0*(6o*^&_>Dol8~OmkHsJcgJDSRsLvacSbr=6Ibj^@{H0$^aja zdN6EDM+&W`!vTRS0{p8fZ=EVm0tux{!Iv_P#Zm?WG-PHem^AUPspUvzO0L_h4#L6; zA!-T9Z8BkVfc-JEpZ(zK(Q;+!%2J4RNExpFFh2J5VZBP$J!kaGP@nbyCCe9x(ZrR9 zb+9g7w+CzTL^S +hrpz#wr)so*qbvmQe+)qk)N?D7wwYlE>eir+XRSq8`fFKElx6 zsyQGn#i6Aig#aB&!d5zJvx^)vIpn)(FB83B+rKqrN${p62lEnYaPsQep R6w)Wry&YaNB+uJ0$6IB ztkwBbe~ WB-yv`Is4L2v4%p~_J z5R$Oq?JfZ4XlA9Jj*Mjk#cCn!i*Gh8Gci`I`%H^3k6ZQK>@&^vo1LmI)uD8K8bkin z+GZ^YC=TYRt)8#E aBy?yytxP?rNap zh|#B*$?@xd3YL}5oveD(1e++E7_}h~|6LTzpexr>Y*U_<8~bdc8JMe}8?kMbe !}e=-jSAN4vm=o>OsTPR;AeQk zMz4i-N#@g9Rmnu9BsEQ@=}lGgE|`fvB)zX~Q9FE&`_n7N!z4jCXznU%1-*uLYpFeu z%Raf@ySeqYY`yvNkmP<0te0iKD*dJNe>L(HsF6!qA37Lug- vExHk z+&mu6*)_jZKu)Yy!{ke-qQ`-ozKBQK?^o!>G1}u>Z-1t&+8Q{IJa*5t0BiclXfmVf zBxrymYTl(|6 q) zcTKsa+j*+x84zAaMGri&eEIrcCl+?6FCG>PI38OuXq6@{ZNDXUB?VIy-)AP1k;Q^- z93A^>dAzgh%!ay2#y0o5w3G|oI=-+#l^*@Hz4NiHp222-@^P8+zOjt>ZDHDqbsg#9 z*0i> GqoE=wsyCsMxEKXQ@Nv0i{#J1GT&5bR6B$$CT@7 zrOd0k&jS*f!;A=~H5U?DLeRRb?3T7q?5CVg!Bt&n%*%Hv$L$jK*mmv16=u2SA7EeI zcRQ4?j-HfEy@zf>{$-#oH-JX`^4-*3gh8e@^+U`d(MyPJ&lan%Y_f-$Y=)PZJw6t} zUhBsB8`I_UN@Qo|q^a^uI9t1E!CbXELN^WNS|69w9Kb9IW+F3+D{GHBUT2)(pPfDf zv&Zk>Rm CvGsxP_kJ0X~aV<56vhlle!BAkWL&O8X zFM$Qxy_b^M>!47M1OcDknFQutK$UQv-&6u7q57<%K_3E~vvGN a{asNHq5lrZV;>IzIu=2H)brgNFGSk=}L&MCw?F3 zx}%X*qsd?zVopfGZ|mZ*;AVnA+^&=mBU{|V#<<_Ed{k=5>b8{bCP*^4f_Oo1fzC7b z=Uh6bx3iq)PhQJ>`*M>0nDpCJcLz(oZl0uw X@)yTp5NhK##@U1=lw!c9&x}}wNCsS-tI5udOPzdzoz*#P+bL%4g(uj1isw$ zrG-P*6Y^3;id`>EO>j?l&t%G~zGAXg^vM)51lYh2CFr7t#P^@|jX9kf*!GuaMl&ll ze64h&E(rSgEl8SmQx7s#&X+@N^7eLEhEG$(1*DM#25g}5UYl=j+%?s@;{)M}Vg|)Y z8Xnz2shMDY9Z*@>&bL1mKjg7s%lvD1)s WURs3&m2DW5UbJHPli34wp~foO~%YQ z-Dt?2NlIc^@dN}!Ae%Q4CE!ga! {L-|KBt|*tEHNxf(?S=vcvC zR{#-0STC!5G_lSNyL%xeG)zA(UpTX}%PQmY1_kG5sYPg%@w$#62j@$*x1vseM5f<# zv38PY*36&`L qM0h3({&cFt=kgt;HXozEhzx5R& a{Eo~Wj|r;<$N$$)3H?N zqY1`}o?0Fuv)?{QIY@Hi8yDsY6zbvGXTEcVMYNz$S~0~hBn-xzE?(UpB_4G)%`CCN z)tkmq4PfTB0^w3c)~3Cf+9-b8yZc7_02Tj#RK0mP)QkHDJjO0t8hiF7Lu45e*|QVI z8Y){dwk%OvhY(}Q9#b+H`w}%o(rQpyXKYCu5(;H$QR#ig`TpMPeg8OJ=XA=&e4fv< z-1q(54>Yh`#HkO|z!zqXm&Y|Wsw1iLI_fc1&isSZjdeB`C(m75&QXF^jdm`|+#~p7 zcD;pjK_fC-cI5d{4UH2isaTFBx007dI=%5%O9g8+v(zTC3F)lZ%Qhzx5}V^M?jlmG zey6(1%HNu(Zwgj?5g$JF=cVJ%XLCcY7XzhwM{Ga%|F)Xld;G_Zizan 6y+jw;j~ zxl6z;V7m{Edcs-n7w19a^06idlG%&7tQg4Gk_jz;4o(nVH@wGA`SrgzyKrQR1TuFA z6q;mq*Iu#kNpvR8p4$|Q71>@-ABih#&p1>8XHfA1Swk8OP IT&(YMu2J6V&B)e!7LPq&WK&7QiLdWwM-4yYddn6%n2)5SWtxd~kRN`I z+x7d}=1zCjRG uVVw9KI3y^U^rZQcdFc3KJz0U4%}0@hQ&o zf-&x{N~eOBw2|&RcciZrc8(KHJmv4*N^U6XdK5m9=l|JV?$^np%dh(bGhPXTz00o4 zu}-crC;rm1KRX)?%`_|KTps#1KYLkuSdfs*Izx(k7=q3DH$kR9C}(e zmHxVIQ)(<{>XdKmC-o{?V-Kx0HCLW0BUs87+t}X9{=2~=z@;~m-+4wixWBCDh1pI* zAevdu=v=WKo21x%)tzfN*-dq$3htBtXcrE)*eo;ipLbW88k0rx7=&2m%DM__x|?bS z%o`|s6nSUWlQT(T!=iVd(rT4NkQ6QDV5vnb32Q+ZG6&8RjXT0#a$TXS-XECU=N9+} z6fegr{_MSs+Z|K%I_i 1xi!t*&AuR=gC9?)|sEAj?A z1=~NeEf GHDDvc_fPt%`_Z9 zEW P`Q_{D`O4$lEUW09V*_{wG}eg6fQiU1Yi2GXj`&Kd>F2E$1? z4xhs&3m)1l-lL&*=9c&7>QcFD&g>9PlkSxc%utZeT(p0-^Um5vUG5N2WJ9SVLMYw( z6U|mZyIn)_WIu4syAucW3%dP7bCl-!qy~ylabwr^26dhBC61SJXU`n^;A*_?L`V)# zc{w6BU}l~-u>aheJ@L>)-1GI_G^fyxqTIbnKa^)aQ$3!?a8HHT+4K!GHmexF0FPob z*BdF%Jery1B{kgTL^4}NT}}l*c=Xw1Yn9M9KkxoPzT)xLEaBODb<58C6D4L&2E(?# zn34?vK1=rX2929;i7-)SJULJ;14nK~uRvgH%gF_&UXPHQ7-{GkYB;%7Cz*dvjtU}x zT!M-z*SVbKJJ%-y+s8gT%XHz$)qBrYVSOwvZKxu&H^;{C@8I3BxU4Ms3{rH#)TPyS z{TshiT2!tkV~x(8UF7A7R*1!&mvejOMF^FjAb=Cp*ob|5l%8AmaL&dan_`u-MR(2) z@R-#ef4vafa9&m*`reK|hsKgadnI-7F-?VkMV!5QoG$Yg%NVXQxi87yQ|x<1Z|tt~ zyY7WNC3Pk?b|k9H|3a*RvO;5ZbwQYApNi4(8<$A360+%hUH=f-PW$5X9?Ipjzr4R` zw9ydz5l$S`o|moJO-!Nr9kO?{r;+Z$%Mf2_O{>r>I$ERTW2NU-b#-80%7)pIPJ*SW zIg+8G$LE#dQ6P2U2TFw*Oq01Hpw%A9u4(BDW;o 7s#2!zTB|x=Q^k4i z1P}QeH4_hu7aD@NgUR8r^QlJK$VicL2>USebmnVa!Po2^ -_z;b UG;F=naaSo0%r zdeA5>3A`@4`cAULe*cRD-O8eVzwFo|Z7K0IGMk
nHXnoYu Wz`&P*fAr2B6wsoI2~C3#`q4+cS##;^q5`# z5tk!1UPvtym%>$lRGuePH|$mHEmc8MawMv+$ln_6w>Fv#h#UOVqHvYo;_GZRK@%_9 zm2t0sqd!>Yjffnr+49hR!NGUcH)?8pQf}3~q>(5fX!_{j>Azl`8XA9}j%ya!Creq^ zNZa_~e55nY(sDA-%?yAzR2g2lMVfJ$sY^itsPT9^%kAhL2v$Yml}ZtL+t(_T&9}P} zRvA#CE2yKexsaYmBgl=>CeIIJ9-EkujL{%r7en~RkSo<0y>qc~A~^foTF3tz^Hf1T zjkhxa5eef~HLPNq3gmVIi>@wns?)fZf6?>5;63>47UdzXeg_|h7B}mtzF#5bJzs^x zj_cB5r5>%>vvi`YlFj=!$zL!@Rx8+bF~1AXI;HkESW%ysM>`6k^v@BGF1bc}uw>ZI zX-hZ7HQ3Iz=qFtRhUJsk!5Q!F0zMrg4eKv5BjZrIb$P2c!btr|gP&cto^Fq}; (FM3gf98^)Sz1+mLE zohaqS9iTFcJRS)<(kU_wuv??i1Fb)`vqwW9b ~(#0{d19?VEW8z<0)HOVhw6scU8oPd(}R=D$vVaJ0?x>qJr GLj_jDc?b&qxv>bhNOzF)R&BKzVS<%?8 zl$#*ra1q*utMvg-4@?VSiMA$G%3A#ttSaC6eSK5vbV!^20?L9ro_=ZO4HhF$WV zu<78~jm*qr%=#m7n0&~vj>uu-E;5D#?)M?d42Ul|i&dsFQGM7BfdwC}QP3~VT`9<; zGqD2qJtU)q;SK?JGRGi(E@xv_Hi%FwfcCZ{)Hnfha2cK({H|?{lZW5pxy FnCvrrKiQbgA)G2!`xKR)8FdP@|o5nEOED-v`%WR+Nj8MDC}Cohp-9hqnX zRd+1nwTY*(c+hJrza{c(Gv xFpywFm0kaQbTyb;WwZ3i2KnW8QR zO}(Ww3i0%Rw(YE$+Pkk176F_hnjYfH2VgB|$0xDldT9{R!&e8&`vnJZz88iq3n_Th z#b6!T(hR{9;^Enk9vE$o`dUx%1;14cy(iAoiF@^ L|tEc zrBOrB*>IzM)@FadtNt~rzzGH(D(+9L8M|i@dO7&RK`*7;qbH AF@udFQ zUBE(+vtTHbn#^;KJ${wA^UaWz)nKKH)$&P&(gCZ~xM=OJm)GMsXKxkPKE(?oe9pTY zIHVHkKW)Y%McIt!t~&_qJ#p0L{kLpFV(_cI&37ert7p?kG|GgX7hD6J`>m}Y66ha2 zeCT3#% -;M3lA+4_Y&Vu{By%$J=;u22;M9m}$Ym~1F`XDf8NC%Vj- z&cp3T!0M79+r^>&7fGff|7ANT0E>anz}wjPU}(;WDlG6F5oPWD?5gNWD8E6*AixAR zJH(mM>7uZ7Q-Ld>ZUdi-?T!@$MZ 1Qmb94w>1FmtMq~J0?{zI@V9P z5ZOd3hF~TZ++~2SWP1SqWQ)pUQ-ro$Sw%as^agHzT3K$GIe~|A1IG;klZFT@4--OA z#c>#RKyx9G;z?oT*H*0C>jPmGuZ_E2+qPz1K^2xg6Alv(YGRwzFvl~NI2q9fU}{}! zZdkNf@}$lX69Ly-fm&E(gazfqj 8%q~EfnwNl#b#9|&C^37+nEIl~(Ezn+=R^j jPse zQd`8ZKW$riADaq3%8Le5NKB3yoMEbOzkl>ewU(dmRHTiDo<_?!cSSVsc_&Cdqm|wB zl-Ge>M8qh`!)eL;%cuZCgO+) KZdtqrXbN0OgHq=sU3G=Z0nw9RlMjFtmod;^$ytoSg$q4X0p$(k zk^G6U@XV^p44vNpg%1L*9I~n+P|3;6VmFK*4;v>zlL$gdC76r0^AN!Yb%tcR({{2j zu`G+zMoC2M k7*6&Rz`*xCxx@$V50w;btt9@K8E% zj1WUWzB0!{%w(}m>d>2{AlrnAhwKo8{~AJuRlkCM?}Ezn8qvrrE3T}hB56A@iL)^M z`0U0CmXhr3DK~=mI>MJ>-h~RQ@Zok8-o9T)yDQSAWKa`jGTkmTH|YD;KRcsG$}@^< zJ~b~j&*cTQ`5N!tiS{h?W8UhitE >i4^sh!Wmc0*; z?5U}4A 7f>$jf!1jfH>mKU(8*TKbyn4Am>fQGqB!}&k`;`HB-8X`RAdB8X* z=F!UStrk&-3r@c5%YVJV@98r=OYzdTKaV!oTO_gpi#HF6 QFojr=OUuPS=QF{ z!4K?1Q|0Q7#o!y(aU~lsF4Y~Xv`KlV^W_ZCDoj-5;+Gh!44do=Wohj_9*%!S=t*nw z{mp;Ga&vgy_PxG(_W0Mi>r3DMAp~rU-fLS|+9& _{;)b|r@yrZgB~R3QmL@Mm(8A>jk MKQ+HOL2Q@M}j8 zMtWopQ=CNT(Bk_Mm;cdP&mzu6+BcfF-$l99s#Gf46{}nD*otMT9}Wo!c%J7hHo)l> z-IdfC>1Kk7ja}4DGFl;?E^zGC&2YVHis*MuZTA~{CG+e4z1tNhe-?eK43%1?nIHfB zS6MPesD4hvny@yhKU7$m4W ;CWojzQrLmWastv0J+T<03^hE`=p4|dUBAdcphM%v6Mm^d@J743Dlmrd@%5bRs_ zquGWnhV7VxNR9R?_)t``dQcmC-lI2Ub<4lhL0XA=Jv`HwzYkuXI{qT}%RKvzYu)Xr zSC5oYW|`^F=DTn1?6E$+wORW~SXlzBYZuqU3opNPs~S*qGVA{f!E=F@S|u^Q^$Sdm zSl23;muoO(bBDj(o(pczy6JJT;;P5M#SC5VZ+&6EhWnBN_f5LrZ~CM3+vVajXrVF7 z3D1)HEZYZZc@Cm8XXbG!XNV LG+9sh0jXf)Khj*< z)T-dU-XA2`OSQA;N}1C(9F^JaHmsG+dw?u^LqMEhlO}}1HgOV^5LD$%#)m{}9hscX zoa>7ksX6MT0qQyFhU{F0J;6fjbsP_(-BJST5;QsFMzEM6s;s3vp%He0B{u>%&qTF8 zVbfgQtyF&-wR?xhRnxwnuQQut(Lawk{!AA@bKEv4er83Mg#!@;JFG|{naa)gk3J}y zMflK8!@#@1Nr>VrycpCbW=$gtS{0}&I3@rRX8*sS5n~wOFa$^dB%}cs0`#8(GvEYH zSl&E_L<#F`EK^AbgiQ+~X2Cp~n2Fj&MMAs6g&yf*2YXT9&(>y45Eq|mfIu@&iZaTO z=i_FjN+xULE0BQT|0%5)^H$!XJVxi7F6BsZP6EIITI=zb6^|QLikadqSP>$qQgi9u zLS$qOnE(2vrRdQ7;( zi7Lz=h6+P1Gf~cgpKu|Ei{!{ys)H|NF!9;jB$BCcg<-6k%Vk*4UF|iBd!*+mFQIVm z<0qYuCcjsHEw7(y2X6e+H%HuBT9$+6tkeeKQZ>3kby#Y(Z%d@K_ke}v-Va+RoCZV3 zO>U-V{uvgY5EJEpnmupzHy9hyZlDrW^wQt({7=8E+kJ04+_j~?=iiHs+%U7J*a-i& z7~eWqLbX45)cEqpvaN$yu&J8f^Vjdv>8~#?r(8OntSU-oI(%(~iwzXTEm=6z95}|d z9Nfcn1zQnwh?*;1lLL9_!lT7+i^hM0OH$P)C!Yvt_0htNjKSWFwHP6F=e!{Mns$jC zW=pj=%BEY;@*c8AztlQ7 7#;}1>{ zagAE_I8>sGX4W%n$8H5dIZyzV;Zz3oSY&fi-69oEYg~w-!!9lf6nRf{3K~G$O!!3~ z(xPv~B#xu(u@0l57>R>P-U)}^E>-}u!o|xhX9nly1e+kv`~WyXUfM=&0iE>$3n$&v z6}2F+H&&-%Me>~aKLG6peG4Pq#0bXw;Lv!iqYRv{#lja+#G@q9`gDGmsMDoPB2|P^ zR$WF5^Rle%aC}g|I N2WF`AOOAK87(bR#t54l3)YBY z8G?otD^Nq%^!6!=}JwzBuIZUT)AmeCnE!Ecc9@SP6VL6osuL6qS&tXv!?5GKT? zJFV;nXzGL*zy7uR)F4&4nF~qHp6HIO>HT3cHdvo5I{!NR*UCcv4f8)q_Ai>~VZwjb z9A4b`?(ygoam(e`M7v{2K+5i tY zYN6&tjeHny5Bt1w0r`ffa#*uN*)`go^=t2bCVxLxKJeJcM#p$VJ9_SCO3ANJ{8Hna zV~Tf`TbrYMe_0);l~p}`aka~NFPgJaCx&Or0LLkK1I;b(Y+Wsq2&bHYWi2JzjWf|i z$^FvYwA-E}jNI=svS3gFnqe@&?uob@Z1RM}$;#p?ASfPFn!&SV&DdpQq?9D+R3RRC zG*Zox+f@inCL?g@6f;=hsbC=a@P~+8XnRI+iCD0O5qgLvkie#ZVsK6j&=Zvm-3!3| z9#~fnB?uA(TEh ~(@2YdImvgup1o!_f9VSRWu!MIdI#RD?(slkpCMlS|^$oMh>K1(kG2mViy&s>?e2 z4{-o69@^R8<6+CJJMZOI$rsLZ{tdasmZRp?RKSuKAz{YktjH-xZ#dmW&8@I01CcEM z 8!Q|*F7+2*oF7zE@2U|N+I0#69&X18H7@}>Evw|fzUZ6Z2b{z@Ef~ZbhsYcmN A2uflG$vn4v3}qFNu(GBUCN&YtO~ zdo~A?5^$wb|7fm8^LLw 9ng~V~4GkuaoT pok#-FQ;Nj zeMSLVWP^FrjsHa7sQKhG=1OH_m0Cps1=kt`-1t67^3bs|9QpZ5(jqlnkbL|BKAjL$ zVCYVm6e7mOc6VB9@0pYlN?tlVpCCM-7jK{ALi|Yn`sW@WzF*v*`Kw@W{3>CZdRp)6 z=SUt!mE=zzP>`53tlV;$H0)&=`L|y-YrHTv)tbO2LW(Knpx-lUcc`%T>ha&x=Hvo{ z0Myg6940;t7m0h=7=AX`Rs)rq%Kzp^^-3c2Wu}C)3&u>Ka?F9v1|-n_0Kmgr+0PE$ z9>7sgvqm`%2a%aM=hA5+V(63zcumokHejU&7w{PGoF8Pjf_P4N?HpzJ1b2QmrULNb zqIq$VtSAkNifuk>yszSUqtNLcxz Ao zfJA-hHqnl-HjvHPufPpOISt_l&lP$Hv vW)0Gj0%9Dk^<1c{pg7(LdU7i9IoZDdK OYU iWi*}X%+IKeNs{BaU~M&6)>H9_t#M}U#4MtUGsdBU;u%Kxj|Y|5AdM< zm_R&4KXRG~AI*QyZ$gPI6GZZ3EUMJzz!TJC %P*?w#GX3DLhENU^RG9z$n4R`}nh6!)xm^ULh{Rp|&b5hp z3_fwZALY(DgvR9I^|4TD0ftfws+6t(yI^?VNv!>%@ZfB>A(^2%^9TuOsGtUFm_ODT z-hLVXLxk+$5vf53Hw{oY!8Wpl@y>0xQ`b=dD5AL;6J%SZG?@zcgkKi4?lQ^f;jUGk z5p2&yAaNIF3G-a{WNU$`z7NwTktSe^_(gg3eX~+rD*rT{yjf%e(uR52(Y;0Atp?#f zPppfIr&8^E%`D66x^#{x!G@X0HEF}Yi;8!9l%l@`*Po2MA$r!A;O$z*<@x3bWw^0& zXAxJW&gSfN^959{743};?^KwZoM@S?U+%sTV$48!9c~(9Xs3Lnq)9&0$mVq$#Wv05 zUi2y&8~IM6HZ|}#p+qQlUbnB)5I?RPGDy8(87TEZ+`2!qn2Bg(#-(ND%h ! GT0D H{D^}=)0 zC9xu}qaK3<12P4}7o!!<8bFP#fyXTk6dffH&rO^A@1NoOS!_5h;~j8o6A^&@X6H-Y z2f)JcRpfQ#gBh}h1uL^KDvZQ1s6jYV+A3urN)UFA=FmFHVlrBo{O6UBFBOXMZX@By zT)0a#p8IpGxZrkq6DR8=dfm76evRqmUD5u~5Hk!mow_&N=#@`!%&DjM3%d8h4@g_8 zx|h75<9+DPzTajQ0S@Kf9=ST#G$i`?hW@Gqz4Y3>l#3&doXHGZ7Vf=&jBCHBb^}4a z-gal6`W)#j$HzESxe7 67nNYfmmG z`>BW!*1j2uzBBu TSc9M{qSMXb7eLeDQBST8JSM4ux3o7zy{hpg&zyUi z-PkF3X(27{2K8(u(GTvIu#zz#Eyv=@+QUOtk%cg9qb7~v;ZQ!n;4RHRY=_KA1WWD| z`0@Ue+EQU7h~&t;z*#9{&W0Cp%b;*;Shs?)7YUg;0;sRn{~%v}SdE9&5J>Q2rj=v3 z!}PLtxV~O-l~G51vxB4Q0POX#qdMy1B@kj6BOa`8EEZ##OsWF$!WhTLo}R`EjME|D zz6|-74PclWg35rNITe1B(QtbzA H zd{Ow9cDQ}PNb!!WuP++R9@q5lk)q3wg_kxMG^-!+GPrXlpFU?~^Y*6RUGxC8Q(~PH ze`I3HyVp3di1T@!XJ%?ysr2Mj&%4tcUG6S^MD+(pUfQWnw?zi6g*xNCv!d4 V{AL73_SPx_>z+`mm-E6LcL+(x7})Do&uM9ANE%r0FWq@`&s5f#?}nr9 zW~1aB=c+~KmmSyQJAT#${T^;s{3w{R)0XS`fQQs~FTo=pc0A#J_9k_!rQRdn)x9i! zT~Kgz#I30)FoK|;>!!bZbm`sePrKq1Cy^JGAF8~lU(q>-$}hWux)CDh_}cz|SRo+T zXb>{d$! 71E8)zF;oQhz-9)X6gg#8IGIRyq)>jMP{9w8Wj!#&S}L0Jr(>NR#iu+;htJR zP~NpRMU)ltqQs05!;IEgK@{K@E0&5SV@`8m55_#TJcJZr77Hv)tN`>FoEzyp2%Vcs zOy^zw$7(nU=% tkTka^v5QczQ9&Rv?>v05;7Bp}uyr-uR zbP(SxR(p4{SvS;480tn0u03Bo$5(+nyg%Ui#7Me7@rIvOM}T?6dG-ES>h9GOM=%DO zfm5L~mJ(t{dDmVPDQ4)^2oWo~;+CX&jXXQ#Ped6QJ#%Zlt4)1*qa*o%+6=Ri&EyiS zW2u(>qphHoGac)X?_5ZpV>%zI5fiS}^KIYH(I>BRUg}9!YU>L|MJiut1ZvVrJ5ZP_ z1Ys^Ox97-+9Bt{s81_pK$CdVa^xmqDmW#ITB`@vUGZl1qcy`*Ddk70PUHi^zBse?r zvuMHWg9!mASi~^)WCF?zQYln`E8x1dmRYJpw}ETL8bn_+tGe7LPuH9STQa-U`$cQz zVbZi?XSTpiF=GO2I5^2{@G&RSME{M1NTOMzZU~3%m2~Rda$Q;s{xsnyA@}@8gD;O- zZ dX@^lQZpQC|SHN@{aa- z^PWjL@0~v$udH~z*pc@_YoxaZsbl#0l56)sTB@~`Pf#T=l?YEymdg-MHlHxN85fY$ zg%WUhJZ*^aK7)W?BidYp^Y9XkZ#CPX@XcnWT0}pJ16oH=BW2JEad;4`S~1-htL2TW zJ=FZ3M(|O?L70s9mkWN{(1Vq*T9B+_nT#P$q003uLNW2nN&u8;A8_v#{ffX#R#=1# zS}h6@ME>g&1LFxi0FDv8haj~9@dZ5vWFmOI7#+p2$PtkWDuN+og`QVcohu6MkJk(` z4t-_XWEuZb>cPbjQ{~0V^vdTWBefy5dk&`N(Vx@?+QlfC?15}CUwZ&fIUVqOG;v8z zoK3Z{ow;d4Dk(;S2d9el0~$~p&Gh1ITTu*;;Tx0idgDLJpHk% 7I2l5zEIL8OXP$#Mf@U1#aA)3D&0xT z5tlZKermi0+T+YF2Foh-j~ pf< ZHorlfYw8P74H+T8C zxXx=hA39K`Pw*1hzef;7+L@rKf-~SQbGEg*(3di9*b?LC?H}}~j#V%^@QeF>x^Gcb z?atr)DnjRv_+*vK7$!y&UC|q6=_yAfF0HCdlCeISq-zcSff;Hb4I*s&yg1wU!wv}> z0gMS!Jk5*|81j&emPL?AAS4_|X;fzozNjoq3NjXB6B`;4*n7pL*x2~Uovw65@=_L! z<*$Z@T6e3cA2YvsYIkg%X+YW;PG(J|!A_gI-RJbSPIH{izWm@(VZ~d6ZDwK+qOTbC z5OL|=;PV9&<6}p(RVjkC94clT!}-?N7L1l)Vj8Njg;^x43@?=K3^NA#v4%Ma eEk^JI>#KupAw7>gJ}T!)kr8v!hriwalbMdEZ;xdA^GMWy;doE!1aw{q+m8 z*ZV`gj#!2pJ=kjb)GeGp@I!TnI8KM~w%eU2k1n!a_N P45>n4 zB2~tFqZC0GyH(5g!G4wh9|F1MvMjwS_XU4ZNj-f-Hu-7KzmZIpsAWWK&$+iPjymzQ zcG=LElnmN^I}4df^y?au@BJ$LtXTE3UF&YXen*=(A=X9DBD3xtZ}2p8V)5?Ln67JP z8OxbSxss&YD>+(Hr(7ub9sgpYS0dWuc~HNzCXY;`zppu4;kAFGXgCz$WG>BxPLGix znOFuRaAk>1wje`eLFPe&O*Di0s?-<-4+ IGDaEY(lF(3D=U8NsU!mOeg#D)#&=c;49OW_IvJh+a03C#4ygi#AUWfy z2vrd>Gzu6b!6osHj(AEB3tY%_7dTRbBnJzklz+SSPTnW^%f>{1c3sAF*yece$=~NB ze_=Odn0X6LQNgLrn6B8#E5EX=A_X6deEQw6;)MVuw5Boc@d(BQLUciSK(lk>Z)-_- z;Qc(=?-GMef?igm<)i*ZG)+P}Vi3!tzGp;s?Tebs)*m|~o4&6PlGa_G4~$8>HBVSH zYl|Cb+-w;w?q6=WcwK!`fcfD$ydGDm6Q@<{oofL*-gTTOKBd&xpLV+D7Wt;lX+L zoOAaY9F9 U3YuFYk&iCQqMS?%*4%dL^@#U98<<{fppB|0p49 zZ+S=Mrf>7jSoUv~;$C>8(Oky`ilJ|^sHMk^)yk#FQNEAZ>0x)%lM`DmH{zi#ju1z# zVYuk2--#bn?<%bIlJ~Q>HRkSoa)%T33{5hPt86@CxN$1D4Z>3XP3z%{!Q_U7;JHI= zW{P|>?sDe}1vQpm30hAjQ*pAgD%QnSLw+?OS~Ur} EWEA2H!48^t z$Fn3BOdf28?63ycPfn7b6GOjdVxm3Zk+w8qp)p25CA%t zBp9wRi6pe879?nHu((u@jtlw=d05m8jUTd;-}{vs6aMvZ{7hs5-`eJ=fhI2Oq+S?( zB|tRU>`%y+cIgf6kr6_0KnmbN%XM;HdJ{C&Axo(n(ffAR%p3H3>JA+Kad<=xY|%D2 zf2fO^hd-N$ZMe-^vVQ({t<)!1A3d}Pi{Ck)e+Xsj*N4s)QcDNqRvY}AGAu4BQ^vUn zw(5u&4Ec+ K6&`UVRxfA z9CZ;LdgSI(uJowwt=%)Fb1g-AHj7=_UId$zd9OVu#Wk%EXSB0pF1Gikk+$}E#+-bS z#PKFyY}!KPq@Q7nP)M?K=%SMqAg+myH*h+mfb^!5$P)%CnR8F$d^S)b*J;I1pT?aQ z84Q#yQTIUVZfRK#=+oQkWi)5fr5coS?4sa2)|Gyr1D-5zNn0))2S3c?4!yKTd{Ew` zElW}!AAL5K)uISJ9u3;c@F0joCn8i_AEk0kmjVhgRtY8oZ IYKc=G3&9IH@%4$$~d4G&P+kj$tp6WAx02~+hd4R z(+*&)86E||0&a5(D8_tKhUY~`+Dt=lnHEH1f-0{o2BZ*RF$M6Id=BUh$EcX&v`S?P zbfkaBgG>GHzmHN|M4F3O(&nF18vY!s+A>saUcRb5b}N~UT9UF}lft8K0p_9WJltP@ zwXW8uE~=c>FX}z3?d+2H64@`c`8m3i4@^4!1(xckr{5?ZOV@H^st$mQ2+JmoX5A&L z{LO$#_6HYK@t-BC)L^`HQUc%VK6{~+{*7w={tmbM+4 Gs@I>jmC({AMK+N4nZvTigje(k_~8Hw=LD|s!Pcl1j_d#%lK?|fodO{5E; zrijzXVrwB3V=W8{7{l2KUPg$}TKEmd7>Z>;L03Q|OEUGjHIkgwMa9sN9{!&qYgYA~ zt?b|pA6c~Ete8~JY3CknV;{KuBjb>X_FgiqvfNR^xn@S2^51v@YoO0vJ9!ZO)-HMp zMqKruv#%WG5tY3yT2<3yGeAvMjw|OrtlZ&Y@#ghf&CLUZ^m@!ft)+nf*GdWPN6E&Q z%9`_;%{8hH7oI+iq5JD@@n1^5dzz?H=