From 3929ec9abc855721470db4bbdd75044428289906 Mon Sep 17 00:00:00 2001 From: baljo <57715634+baljo@users.noreply.github.com> Date: Fri, 1 Oct 2021 16:22:24 +0300 Subject: [PATCH 01/31] Create BangleJS_EdgeImpulse.md --- tutorials/BangleJS_EdgeImpulse.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 tutorials/BangleJS_EdgeImpulse.md diff --git a/tutorials/BangleJS_EdgeImpulse.md b/tutorials/BangleJS_EdgeImpulse.md new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/tutorials/BangleJS_EdgeImpulse.md @@ -0,0 +1 @@ + From e74e8542585cce38c709e5c29e3468c09dfe9169 Mon Sep 17 00:00:00 2001 From: baljo <57715634+baljo@users.noreply.github.com> Date: Fri, 1 Oct 2021 16:26:29 +0300 Subject: [PATCH 02/31] Delete BangleJS_EdgeImpulse.md --- tutorials/BangleJS_EdgeImpulse.md | 1 - 1 file changed, 1 deletion(-) delete mode 100644 tutorials/BangleJS_EdgeImpulse.md diff --git a/tutorials/BangleJS_EdgeImpulse.md b/tutorials/BangleJS_EdgeImpulse.md deleted file mode 100644 index 8b1378917..000000000 --- a/tutorials/BangleJS_EdgeImpulse.md +++ /dev/null @@ -1 +0,0 @@ - From 9930571f405e6e8f29007967872034efee4bf8a8 Mon Sep 17 00:00:00 2001 From: baljo <57715634+baljo@users.noreply.github.com> Date: Fri, 1 Oct 2021 16:27:41 +0300 Subject: [PATCH 03/31] Create Bangle.js EdgeImpulse.md --- tutorials/Bangle.js EdgeImpulse.md | 35 ++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 tutorials/Bangle.js EdgeImpulse.md diff --git a/tutorials/Bangle.js EdgeImpulse.md b/tutorials/Bangle.js EdgeImpulse.md new file mode 100644 index 000000000..007e518ab --- /dev/null +++ b/tutorials/Bangle.js EdgeImpulse.md @@ -0,0 +1,35 @@ +
+ +
+ +# Bangle_JS + +**Introduction…** +----------------- + +TBD + +**Prerequisites** +----------------- + +**Hardware** + +* [Bangle JS, version 1](https://shop.espruino.com/banglejs) (v2 will be supported once it’s available) + * Theoretically the Bangle Emulator might work as well, but you can’t of course collect real accelerometer or heart rate data with an emulator! +* Computer with Bluetooth (BLE) +* Get the watch up and running by following these [guidelines](https://banglejs.com/start) +… and connected by these [guidelines](https://www.espruino.com/Quick+Start+BLE#banglejs) + + +**Software** + +* Create an Edge Impulse account for free [here](https://www.edgeimpulse.com/) +* [Python](https://www.python.org/downloads/) + * used to split a file with samples into separate .CSV-files for importing into Edge Impulse + * not strictly necessary, but very useful if you want to collect lots of samples + * this tutorial will not cover how to install or use Python + * Notepad, Notepad++, Excel etc. can also be used, but needs manual work + ++ +
From 4ec506567d15aece7ef2fa70fb6d93b3915e0ca7 Mon Sep 17 00:00:00 2001 From: baljo <57715634+baljo@users.noreply.github.com> Date: Fri, 1 Oct 2021 16:38:57 +0300 Subject: [PATCH 04/31] Update Bangle.js EdgeImpulse.md --- tutorials/Bangle.js EdgeImpulse.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tutorials/Bangle.js EdgeImpulse.md b/tutorials/Bangle.js EdgeImpulse.md index 007e518ab..92dcd0b88 100644 --- a/tutorials/Bangle.js EdgeImpulse.md +++ b/tutorials/Bangle.js EdgeImpulse.md @@ -2,6 +2,9 @@ +* KEYWORDS: Tutorials, Bangle.js, Edge Impulse, AI, Machine Learning +* USES: Bangle.js + # Bangle_JS **Introduction…** From fd192bc6ad14d29ae1c09b74d5e7d115607536f5 Mon Sep 17 00:00:00 2001 From: baljo <57715634+baljo@users.noreply.github.com> Date: Fri, 1 Oct 2021 17:27:36 +0300 Subject: [PATCH 05/31] Update Bangle.js EdgeImpulse.md --- tutorials/Bangle.js EdgeImpulse.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tutorials/Bangle.js EdgeImpulse.md b/tutorials/Bangle.js EdgeImpulse.md index 92dcd0b88..24fde89cd 100644 --- a/tutorials/Bangle.js EdgeImpulse.md +++ b/tutorials/Bangle.js EdgeImpulse.md @@ -30,9 +30,9 @@ TBD * [Python](https://www.python.org/downloads/) * used to split a file with samples into separate .CSV-files for importing into Edge Impulse * not strictly necessary, but very useful if you want to collect lots of samples - * this tutorial will not cover how to install or use Python - * Notepad, Notepad++, Excel etc. can also be used, but needs manual work - + * for information about how to install or use Python, check e.g. [Python documentation](https://www.python.org/doc/) + * Notepad, Notepad++, Excel etc. can also be used to manually split files, not feasible with lots of samples +From bdf3bfb66ef89e9870a6c784237359f52ac9f2c9 Mon Sep 17 00:00:00 2001 From: baljo <57715634+baljo@users.noreply.github.com> Date: Fri, 1 Oct 2021 17:29:18 +0300 Subject: [PATCH 06/31] Update Bangle.js EdgeImpulse.md --- tutorials/Bangle.js EdgeImpulse.md | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/tutorials/Bangle.js EdgeImpulse.md b/tutorials/Bangle.js EdgeImpulse.md index 24fde89cd..d9bd4fb8b 100644 --- a/tutorials/Bangle.js EdgeImpulse.md +++ b/tutorials/Bangle.js EdgeImpulse.md @@ -1,11 +1,11 @@
- +
* KEYWORDS: Tutorials, Bangle.js, Edge Impulse, AI, Machine Learning * USES: Bangle.js -# Bangle_JS +# Use Bangle_JS and Edge Impulse for Machine Learning **Introduction…** ----------------- @@ -33,6 +33,4 @@ TBD * for information about how to install or use Python, check e.g. [Python documentation](https://www.python.org/doc/) * Notepad, Notepad++, Excel etc. can also be used to manually split files, not feasible with lots of samples -- -
+ From ef96ff705104fb7a42ce47ec8b0c47c4fd0686a5 Mon Sep 17 00:00:00 2001 From: baljo <57715634+baljo@users.noreply.github.com> Date: Fri, 1 Oct 2021 17:44:01 +0300 Subject: [PATCH 07/31] Update Bangle.js EdgeImpulse.md --- tutorials/Bangle.js EdgeImpulse.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/tutorials/Bangle.js EdgeImpulse.md b/tutorials/Bangle.js EdgeImpulse.md index d9bd4fb8b..eac168752 100644 --- a/tutorials/Bangle.js EdgeImpulse.md +++ b/tutorials/Bangle.js EdgeImpulse.md @@ -5,7 +5,7 @@ * KEYWORDS: Tutorials, Bangle.js, Edge Impulse, AI, Machine Learning * USES: Bangle.js -# Use Bangle_JS and Edge Impulse for Machine Learning +# Use Bangle.js and Edge Impulse for Machine Learning **Introduction…** ----------------- @@ -32,5 +32,9 @@ TBD * not strictly necessary, but very useful if you want to collect lots of samples * for information about how to install or use Python, check e.g. [Python documentation](https://www.python.org/doc/) * Notepad, Notepad++, Excel etc. can also be used to manually split files, not feasible with lots of samples +---------- +**Preparation** +--------------- +* Install the app 'Gesture Test' from the [Bangle App Loader](https://banglejs.com/apps/#gesture) From a27f333bc5b240e9e12acdd894163aa238a57db2 Mon Sep 17 00:00:00 2001 From: baljo <57715634+baljo@users.noreply.github.com> Date: Fri, 1 Oct 2021 17:50:17 +0300 Subject: [PATCH 08/31] Update Bangle.js EdgeImpulse.md --- tutorials/Bangle.js EdgeImpulse.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tutorials/Bangle.js EdgeImpulse.md b/tutorials/Bangle.js EdgeImpulse.md index eac168752..55409cc82 100644 --- a/tutorials/Bangle.js EdgeImpulse.md +++ b/tutorials/Bangle.js EdgeImpulse.md @@ -10,7 +10,7 @@ **Introduction…** ----------------- -TBD +In this tutorial you will learn how to get started with Machine Learning on your Bangle.js watch. Specifically you will build and train a model learning to recognize different movements of your watch hand. The steps include how to collect data, how to use Edge Impulse for the machine learning part and how to finally upload the learned model back to the watch and utilise it there. **Prerequisites** ----------------- From 0b5e3d1e83d12785793d308f2edc9793fb272ae5 Mon Sep 17 00:00:00 2001 From: baljo <57715634+baljo@users.noreply.github.com> Date: Fri, 1 Oct 2021 18:28:33 +0300 Subject: [PATCH 09/31] Update Bangle.js EdgeImpulse.md --- tutorials/Bangle.js EdgeImpulse.md | 47 +++++++++++++++++++++++++++++- 1 file changed, 46 insertions(+), 1 deletion(-) diff --git a/tutorials/Bangle.js EdgeImpulse.md b/tutorials/Bangle.js EdgeImpulse.md index 55409cc82..8b7589828 100644 --- a/tutorials/Bangle.js EdgeImpulse.md +++ b/tutorials/Bangle.js EdgeImpulse.md @@ -35,6 +35,51 @@ In this tutorial you will learn how to get started with Machine Learning on your ---------- **Preparation** --------------- -* Install the app 'Gesture Test' from the [Bangle App Loader](https://banglejs.com/apps/#gesture) +* Install the app 'Gesture Test' on your watch from the [Bangle App Loader](https://banglejs.com/apps/#gesture) + +------------------ +**Collect gesture samples** +----------------- +This step will guide you how to collect multiple samples for one gesture type at a time. + +* Paste the below code to your watch into the *right side* in the Espruino Web IDE (adapted from [this code](https://github.com/gfwilliams/workshop-nodeconfeu2019/blob/master/step4.md#getting-more-data)) +* Name the event you are going to collect samples for by changing the line `event="left;"` + * use e.g. `event="left;"` for twitching your watch hand left and later on `event="right;"` for the opposite direction + * upload the code to **RAM** + +*Gesture collecting code:* +``` +name="Gesture"; +event="left"; + +var fname = 1; + +function gotGesture(d) { + var f = require("Storage").open(event + "." + fname + ".csv", "a"); + + print("timestamp, x, y, z"); + f.write("timestamp, x, y, z\n"); + for (var j=0;jHJG$Dq)!0LVI`4O7% z9Fs^!T;yt^;0*`tws74`MJ*4bLBTk^L_>(%+g)tDHNX0Koz z{&qdf^@1+n9L>|yc9uH5!VpScXIz_=&g9W}HK9wIcbjD#XGc5YUsATK(}ywb-_+NE z4cj>(@RoZ0LnkqFb{4I90Ocx_(5XOyh2`#oNXdS&4i8uCXY5(Li66W!x4moZj8l}@ zN;GkM$4^^(RGqD;`W-Impq?6a8C`GJ;UM+?)t0se^jP(FKi_@lAo(T4)I{Ue85D^~ z+O*znR
Rb7Zd}=G+YiY^&MU@xp5fgEUcK5^k(IsE2Vzf+c7GK9?t?K}lUx1jM zI7s)EKJ+NG4Ex~AY2?u+IU!PGkHQJUWZ(7pl~u;22iM!yqmN1u95!m%qBZUuC)DxN zl?2KCfy)&gY&}$kg%nsj3AM^(z+GI~VpMav6YDS79LHZ9i-^yebE2-}uPY|;;>_lT zid%e#D-PBp`UP2vg?zyMMkGfw`^`I`!u&n2S4$SRf1QsdrkH2a*Uc8>oOg>U9J0im zLtQ0ONpj0r8TZW~G98b;H9Ml8!X%4&rWx93-RzSW%2nt|KUb>RHpgPq5)WTTXW3ja zr{LhdCS#*2w`tN5WQPB=Dm1D8FDsMw!4go(U^g7vCW4JkLmS4}cx=_>p2o3#aLIQw zT@&6?VmjxO42AS7RtIz*%`D${&Q+B9p74!Nv5gMu5T&~r+_CCxhfO#bes+mG-0m(I zqP@zBeyH*y&4Nc`Kxs#?qB z@&Tn&i!yL`^+;Jemmy9u=El|7fJMPPRQc`L9PU^Pi5OoD9s%y% z&x?bVAtTwh f5Ti8O*@m(k8Jqt0xb(L<+=q_UfR9HPfG>$iIv33wHi73O+|| zwQv~gQ>4BH*!L8V5tW%7UCzv)VdG$7@6V^Ku7El+D6--sB)7P@n${*%2V<=}?H%X! z0^wfQ>NC4OA*$_|ELs$| r-6st>YiZ15HTZrvB{H!msCTy_tSc=vm;!7lkyvs;x^XfVU!GqZvnK1&pXFh zq~t}&=c}1?*oN|wor2+i>^Fm4rDsswOLdxLHG5P!N*fQSHnyv^JGr)gZY%6~2rF_l zA;F`xnEL4v^(MjZAlWX|Bm?EjQ&1wP=Cim6gZfZdyWR+R7W?VpWT?vz62=B(G?n!@ z5RLko8KQf+(sMo&scfwN=Y|5R@CRDvK22X3JTbVpfZPOh6SBnmwYu;HQaX=TF`>ww zcho0m6iujo5h^(=rN|+V92Ld@j3mrBOxmP|m0|w{H25CzGpAyV*#p iNcO29!RtOa;Y{FF%Cf%(vu|g#t**WY9 zSJLV1Oo3c(^6;G`2|L +n5cMaeSc)q%WJeQWKqJtCy QM>%^ z=XV)4W6~3>c`eUpMXBzT?F!)|Y^t{C gdst?1s-OIJEWMR@@sPgw5vMeBapi7f@OFca z%ufzr@aH=|FeOf?)+3VMiZ$AaS nikT z{6WV78K*%zcbR8czoz!BNwY_&Ek!St(?Gk=6N`_%uR<2EUm7PcBhHHr`%J<$UDjj< zO(RYCuiU7}Dm1peevZzyxNU@DHdNJoWL4Ige0vB^;Xgwxj>;T=<;e9yN}iO9D5wvv zLZ>NP`(;nC@d-uu -6HCos2kh*nmjE3b0 V0y;viY3E3LYWj1sQm}ZfRLY74`feNSw !y!{1!s*-Dm%Y}zpkHG1F5-;*_^x77kjg+2 PSo#isD*yj)QdCyc z9!ZF7A^Rg)5oLtz?7cD%ju9$*la;LOm3a>5pzIt8$3Dk6wsXvLaGZ1Q<9q-90LOWp z>pfo2dFjvw!8n^4;1w uqz7{ynX|%mTYao6IBxQ{}E`_!VATk$ dN}?(^_G3GszL<6z4*#PIaz#;MvD%pKNJ?8QjzN5D3Fy3IzSN zSedJ(bWL+-d*tB4d}$!Ya4KLmQGaOtj|H0FaGCJ%e~YR#!)A$R90~2?uQ*!a6po#@ z7V~2k%_N_X)z5~zkBPF%f#BpW`CfmwcuGLczkIzfz9jE|?vZ&&Bg<=cw|eTH(6>J7 zs1v7tD6aEwMJXwbx>-D#YewwD&U9m@AW9_=Jabg2uRY$ZGe2(EKi!lIL<$*aiNd38 zD4JDt`h=%Gq(D9tuPFz{y?JETx^xn?#wxr0F++BrFjKB>C!Moc70erW_RV9y6+}&C zYtt_uzS=V^y|Z=zS3V$2Lr#fsv~GZ6^F?;K!+nYb`T)$7Hog5S&VA*loU34DFH-tj zM5EQ}xxW$k(c?`FZ}_ThkoRA~xZ#M!PS8@Bjr}Qk`e<@jKVUeN^)NL_Qm_}30}k>` zG`{kKuTo~!LDTfrmu=%q`!im3_+lQiv6l{e9Cc^#nM*kZORw-~uU@M!h>{5!{KBF< z{^|d7aCWMsfIo95|5GaZB?w19!a-^VmN*v7b!TrRr5JWkx97`!AuTevGg^pJjWD8K zS$-b0Bhz)ED*t$xU>An`;wXL 55BNqF z<7Gy^F02*Jes(--rT1M07LjM@<#xdARjGOjs`;^ghWUWS6FNEKDLX35yf9O&`_y>4 zZqdf|(z)|7gF|XVIHjio@qiP@^1W9Z`0t2CFc=wwF9#H+>k;(Q+Em!K*l+O-MME%z zq;6d{%!l^S{Vg1SX3F QD(E?C}qkH;#`HfRH&5BU20Mp_3qstwJ*CcI#2MyqtV5oI+} z(;i*KaQ)%CNu{{_Cr3hGnQ-iM1|b37Q8R#ztU`T0y0745cvye$&eEdB)#_izK40x8 z*cp)7ZuiDe6x-Qpe9_tgvvNuv2B6x1A!l618%q46KV{>k9r5}8T~Z+rP8l0ZC%@$? zt@WiAQOrE(K$6u}KHFwC%kD4Z(_U|K9=dsUl04KD@<*OkWy?B{PVnF0pOJJ>Y*&?X zMO;B>;%Kr2>j?(9F~}7?W`e3?Jum&bcDLW8q`$og&mE2*Db3;#H)t5Jg9!9O&ye8P z=wC;kna0&60#8el<-(>FJ5Gqqs0cgKMr%C8-=fc&lylGD5=?!!rxq6JG@{MSkSSnw z@p@gv^kqrLd!F-x2wdksBvjmOi7dW&Bz>`CvZ|2z6V^N}A>RELd>x8Bl%UyTMI|xM zH^%Mq)s8|HtRCCE=Ha|t4tJZ$(~`z#UEgjBLrWT#lf8*6IX!2ZQ7uJ(iS|w^SuzST zS=(G GUQ}W6%QnY;P zWntafig@$;C_m|6yP(vhM8y|)#1#+f>?)xrrkE?a6mLxiht?x(v?aXU3Kv>ZbOi5Z zwPh0oc}=owowk}7tatAv)S9;q-PH$+;TDd*xGxN17@kYUG}=`Re^-w&f17aYxnwS) zUoR_Kuian_avt8Xx@@vG&rQJWW{H~fnYZ2}A<@0RM^HfWBWF-V-wZy@4YXhQ=)$kb zDBn%ietgF=aYA-i6*W^QBW~YFka 1|UL~jyxbynkXYt>vdI7D+ z=q2snq|+VlTvj_p&uxgGeb$g#Xop$&B<;B|kfdP#8x-gwppaF3qsX)lRo14Q9jy<3 zSs0G8%YEvfHFW!=jkxKDA(Kj;8H_6Uo>G45e$G>3C!sjo0gBXF>$+W%L3v%9@!Hl# zHXxcRbQ~C{JkAXy I?#pCUXx4(6Gp9PM}w;&fZ6F4~k8PIdx+Wk76I|f!CSvy%q45gvYgAP`^ zH8G-SwrPi~6Sqg0W_aR*7zaGaI*)~XbZ`~C( Gr5YzylHUJWS7sDP!*b~yBa+3`(;rnE*FJ2s z4otc@8e#YCeS-(t>E&vXrRFIorVFXCx|?0@^R1TrAz4D79daUYuMI~Pa*{mEwWyM5 zuoGimK;5@ibmHilR%5A-y|2w{ec9*?coEpFu5 oK9F+!BU`3zp-AvM$wuLiz7Wmh3GfY=pb0fiP~=6A38a1glIiZVViQFq zCyg%D88>&*`G)@lFVQoJS@Xqb*BTsDWj^8iz{kjVwZ(Na`+7CJHhcDnR`#f&9gFx8 z&N g>nR`!Gw zoN(}N=Iw2Abz?FF`xz_|no;wv#5&220)SlVT8vCIy+DNu0x(5^?8?3$bd%|N@LUT~ zVn~sL?JybF1o!Ltc;zrq2bK0S9C`j9x 3!ASz#H95{kXR7R1QkwpA*pP() zZ~;v_b(V`B(1<19KhhP06-COWbd2BxHfg=-+7f`x^Os*qM04SEexE(x=UTI<9n8R> zwVw6 ?BLNx!~ub!@AB_y& gmaW^`Fop6@lEO zHp!b%+?XGuWp#HTcBU+E7ZS+rptV2CjvF!8M+m)Qhs(Bncj>abYdqlj1ArqHh-DWA zf` _OkRKU#BR+TcGj+c$ zrSsw+yTxKwZBe&d@hb}|iV7T^Ue YLET;IR&QNfq_W*~xkx+!eKH;aTf7ms z$J^DJWu<>lyV<2=%}+4qX9<`i2P64>_zCAbS-&o3WE-JEg})kcZ8T@VO9pyKWz{zz zzCE?1%EqSS^iygF@>{4-uQR}TOY~pH<=`jW@ezSfD}Mk gf{IKYv{9{gyx+6tL%aP(*mSo>I?y&et-bT4@Prl${ zfB!9$k_146kj9dQj9%+{MRz`};5GaG-O`nBAtzP7b1u=PmLMj6bw*!NSuWK3NQ_U7 zfXau>Bj3|yld2O`BWKug%i*}1*YIfW(IVo9y=mk7L@*w$)j`(R9H0@j3)pe&l!;1} zqS!ZG#kUG!i??~h6I^*S?GEd*fvC*n_7NRq$0kgrVn`aU$PdDVXAP_17C`oUbDKnv z2!QN#Z6AodHE^<;3>==W-P(&*!Onot9Z4K#aWDIVS3)u1qp~0PqtjK)P;X2nYxC+H zgn)(nVrK(8H@sjsaE^vHE}{{zK>`l4jt10sjb#p{+c6e0auZ9;ndVb?WQQioLYj1L zfl2MFNz98)?N051*NPvb;UO&Vh!@%Nq}61|n@a>TCHj2xMUmzt@Zk4t-=1r@VM(cF z8l;pHY}T`#WQ#o4&z01%3fa0Vw~?=~=-1~+stZ3OrvO!wKi+!Z6Sy#es f*b7D_LXr?}8)RLDXtVCuHNgMsP7R;jk{ukugx(HO5q^e6hWju)W6n3M zL5Nb+Uo(CGu$@bJ!jT;|^(;WRz~`t7_C#qr`(PqiKP+^{n_&oPsiX3?;KdFhj#F%f z6o~V4C4^(bdYc$ci9FN937 XgefygBdeS!X(Au$QR0cLxc zOK0CrTCgtbNmm_jUcXQunRKEoB3bcZ0&gCfH6o9^5vyM98woq4g`J{bU3xLsFw^^s zSHH@-Jb1-6ZRjI*imz)?OUytt_EZZcrlgg!oG+uup84w*ckEs{j3O0wW~fkuQ~`nT zm|5HGw3{-$UJUH$sLoU_}zOX|_`-*4K{oxc0ZVfh4(haz8Q?)&&e(Qwst zgiYM0DkURdgD%(m{s`e`f%x2=E<^j-B;BhxI$T})QSh^MBsp#^_c|E%m~oA8T)8Gj zYpwV3UjC)mWM09VRbA`M0au^^D%gn8F&XyK8*oUy8}(vD&~#ro!s!a0ovL23G3!9^ zanRsEW32!BU0eFcX-Y-9-`((>s0SOY*I)wAa7awhh$FqjJ~Z5SrI--^dyWI913KBg zccL4++DkmB@n4sq86@j?hMXd_35o%(2!ln !dk zd+qgWZx#3Hjb~(rZ??Ejr3CC93qOuHSuv@za5H*J%Osp0FWPBMAO1dtWlqv*>|yX~ zq8O@u)iVWv4pyJ8`Mb3BKC)*FZcTbl&w>D8st@PA(nF(9o$(+{|FB4#V)a}zHHDRU z!+8%)$r>`6B+#~q4K-q4vg 7IkVcs$68T zHIVlE-n_xlP>qW#LZ$m!;^Vqn+f{G~QYTwZ+yBm&^%=W*6CVu1DCr2aSe l~E3F7!-D2%AHJ_XGRX4 z9{daSn1wvq-I&nf-Vf6t3x=FF4Y#O<7x6{>G+co(yI_*pA$lJZs&ix;D?#l*+w`cX z^MoDMIbW2<4b1y?e!g`DVz=+!U_UD~1yRE8Q@U0{ji7QN@Yn(9Gt(}|g3!Y$G0C+H zbJVaoSF+1f3dhlR59+~$7!IFp|HJh-#E+I`O2;z9* B{*Z%y>&~_(1*)%auX~}^%6a(ICvCgL&Lp2!Ir7v3(IZo*42?xw7LzDxSqKqm> zdXpiiurB3Zr6mmT%#aJXOeGyz{HUkp*>(c^_ax?n4aDgSu3)UCH04v{n<0C92S|Cl z|3Wc~04)p`=c_vGbcY+J&UcwLx-8r#%J-IH5qiNA{@eG)5%W24gOq<<-$~qiC!1cV z(2^}9k~fU_=Lo{FBMW (%Q)De4gg!a<< zm*K?l^)SKS$zh04%aC0+^%GuqqQ|@w<6w^3Dl@kqY8^ee)#&R)z|Rw4c%z)Hr!}UA zOX#4g$$A!#wfv!v0lj}7RJQqXhkAZO1jEuoVb9~20v?{^8>KG;Q<0PEtk#9M^^nzG z!&^_=qVlfkR>^VwlX*WTH}~wYAz5p_vv5MM!~HK+xC3g|_GrD<7r!Sqm~Blg|B%j4 zzV`>}(xz+s646m8+i$p0DYy=-@UK*^ ?c{B~OmPV8D_ZoErcQ`qD zBJJw#jHluJ30nB@&&=Sr@ROJxN0wJM{lJHFZC=F*+ZC_=5x_R)l@Y9HF~~*b7YxXY zyYfxR*TdtK>kAt+++bboLUV=oLHc&fqHWyv*qOC(7(PH+khpUrNxlklu4r`3B61~2 z@)SYh@~w|URaNVy-PPxCHo6-061od?i}3xcJ}{W;#8tO4WN;5h3*Y^#iAW_MP!pw( z)-R4|6b8a`B*!WCCn@b>f|eeD^TW@J$E20V9{;I_=o$6jnI7l44ceVhC%l@h1x0I< z8A}uKJ{I9Z#pf~CC}Acr$U!CB)8h%Si(2sV@=mEHJb+A*`F5PQ3Y2;7ajuQAkG%?h z&E5P*;=$+HgZ<~;C+cdY>Xb?kLwX+Uo&+k2V8SF{c4z?)m!6dQMDg)Qhn_8Bd=E|- zD_a?6oS5ZSf2j_8C{f%06{QnP3GCU@96re|T#;&pCS1hV0R|s$1RkYyp)%}fgxWBs z@uXR}#-OZ cHOr-fJ6AjBZW%Q>o)Jz}s4>!_)wIS;7#*&GS=>tre zt?UmJ4>%~9(EBertyy1LH`vFtA*h26fVB+XDM{_dJNG0278vt+r~6b+$XsVcVBrzy znSVd<5C-vEJ0H<|Bh^pI{{#Bq+7boz@w}PkhWrh%GffZ0Nr%Z&h2xC1-+{L4Q2c|X z9l4bjKv{ima1teH2NSBXbaraK1#in+@Sd%79p@a)ZPV&zlh!D}T^d=HukDAg_hL s1DzGB zcf$HLk_#SgScVmKVlBzVUq!I40=K-u(;>ix{(@f&N0>7(y@cM`R_hug->LxdNgVyI z0ONvhD!xNZc_~5xtF_II|94P@ iMdy4_{+GFxN-Yx!^B|RaNByh&XdY(jgk6S)tU9wWvav%3= zs?C$_DFZ1&bo9;^Mf0?+dqfy_z>L-5O1x}k*lNi8|7HQ4;wvp(W;5jaX(@Exdv>a8HD1}@r= zlkH80Q2j#1C&$Xm=d-K*9oWs=0M-iAd%p=$f1yM?&UgS(q3_gzThgx)vCP}j}s zt0?V&9Fg&2;l@i(g Y0$U_2ySq>$6T?ueX*&oZTq`<|=FFfFoIn#>!(3 zqdD0|!5_uCJ~V&WtAe{z11}ER<}NSu8p}4-@Y56hl7}|p2UX_W*>}gf)RW|P_*u_Z zO>^bLlJfn2cL|AP?(IH7r>Y3(o9w;!z9ZEqk;3g(8D-xS!IKq2;a}iXEFL`+RAUBO zl70;R4;$8I@feTpXlDBqLpB`D6-uwYHpceB!o6uM`yzO*QAgOGMx3)a6Coq|hW#`) zWYAIqUJL38Z&2A~K4F~o3hX!lR#Zj0b0CV+k58J(dw oQrsvC+yA$DqsiIFbtHmMr^u>ca^oJH5*R07{mh7( z3m5}FU3VI8f5d8YO2JD3YT1;YIrGG;n01D>TwoSf*9u7rDkaJ|)a}cJ#3w!#Yw{jl zxNczN4#2q$^^Md%aspne(7D3`PbzY9*5NIFYbk=TVap@U;qAS=QnNDmjxsajvr4~L za$Vuu&CZ_(^G5nBQTJOnoRTU&rSV@#Tl83smC@@uUuQ+~|Fv1aM_nnPm(boEM?*m; zN)s7>_P0cUz09fFI{fUG^p6DQrkQ|+#>Rzke6Xv{Qk3dq3@t&7wo#OzfC*h4gZA5C zPT)nNI0Ud#(v-aLSy(xOkadUTkvhF?sZ;H%%!wF~#hohp3ZtTTE}PBogb#EJy+JF3 zy!eqL7~;p+NR;Z*!RlSePj$JUjQaFNVb~PKgJ06V%P|8#_Q*`GxAhCV22O{re4l>X zOGc}GU;-ShCT&ittf(`j>QTQ|hf0(! 6%T?O*~Ns=|! zqmF_}1k3_iNj_A-fd9iTfwFfBzWJhFj PTej8N6q2;FLPD4wIYdib^u0U1TfRwo z98J9|q~PybyOOIrRh4O(%u?Tt&r~Fx3%KSceR!SXmP{EO8ml@5y|Xh*uGdJfoqwL| zu^udVn? 04kRAt3>ba+HfWi_fZz49eGs zK@Aqj^YYc%T7452woN~z6a>aK7bNE{_vu3<-jC>_ITW9~@GUEo!jxe(7F3wJNK+sN z1IsIZ*owD@rqPQp%(TB@4^HVV?z+R4`tX0TKQ$tE$s=GPkW N7@)d6hFteK!6} zv0N}L!ID&zV8*PBKiqRzb--vR4?WQ#rHBO2m$^-G1UnD79%{$2`PvsuPV0zZkmq4P zebbBv-@{u5KcDnI+i#*oGaYbi(~q(Z)a(H;Vd`iQ#yGu-M#xs{b!8gqnu23`GKXCM z<5X(;?H`o520n`M{?7tj&KUvK$&nsnEL!A+GFYQLdNVFBWOVH&Rdi_&*oK{kW89=8 zmN73emNJm;a4z=?%R>K|`(mf%R?v(C&vw6=7&H73rg9?RMlm2^Kloo@3Y?Zsa7@9g z;msC}24#DpExg#cn!gFA+?8;rWwK{D(=G7}MIdqMNbX|4%f6!EVJwvucBTZh+u`)9 z3p3M58tn8>&BpF4+tA B>urkA07n=$TXWvZi;4v~@GV@3 zyxgC&pR!*E5h=C` y@7fskj4(#XF_htdD-VZ+b0-nf`f; z9qSbp-luR#TuyWNo0d78Lh*r2FvO^`P1is1FyBIS#KdPmQR{rbBFtc3!40Wk5!QcE zLVZ%|n7HYH6u aSuTLQ5gzKJ%z!eXho$>+PSfG@Ns-TAOLg zccB|=Ipj$c#r?M4OrUK67qu(7&(T76J*zH4)l*e)uw~$z3R-S( _{Hg47dbed#*3UxJCqCyddO%gb67(TagF8 z8&{%vF}^plnEpJBEv02*PVAxl5AmLiH3uua7Amrwpm+G8;rya_h;7p-i_OOaXf5;5 zWD&x 9J{*or7nH{ws68&)?K}J30Ee(KfIuPp^?U{)xG5cj{$0Y{;)Uqj^4EY zyIFH=ckc1O3eD{mWztDDB6Bx_GVFOG^ZQ5{@rFGIL>T@B>&u{?2laui1QpV#@eXQ$ zD)zp3q1Kwg83MR*PR)0Y-TPkWBrN}7Mq)Dlg?vQZC)0s=%FTeipHCchW@@lE?v~@n zXs8Ywsp}i--_{;?4p4B>fi>tZ*Xwm?skT&T^ppJtagVRWP$=&;>K=(fuO6r0_{9j6 z%KE68eTG(>=blA9?NFLFj`jj)ZJ(Q#c16e5T?U;+HX(>Z8@5YJ7*qW8lt)XQacH>3 z(-)nwqu~R(t9A^W5B$lDlRkvVSC01=V|nb3zOVx07xoSZIkP*Or)YKbVmK;2slywY zx(fUYg?D6M(4nKGrbLz^o!UDX6%bi}*cIS4$hsMcl!TrwqkS%bko!{8AI{LaLS(RD zdV~Ur(F$xRs=VWTa`x-NkzYOVAtAZ*#aQ H9rGkbNP%x82KDJYUI z_IIpZJFW$>MaV`PInVtl{2&u6c9&Sl;|BM7J(3fFww&vP>7S4zPGg)uB_7eyH;~Nw z@o8}J9)oe%%M|gFuW1wr)l)^qU`*z4&{jlPz?-e2(3AK}2a5#$$0>W8j*m^>#9i^w z5OlFyre=JuAJZVdD8V JKsmf_aY>CeV!Ip;R_>!ahfQUfHEuDDx_T|j zOWG9BIaBEfnT~6u^Ec8zpm4nU&V*pI1m $JL!{M~ELMNPZ^g`(jRh2q1~mv0baEJjeBUr*{o`LnIgzvYK) z*ZN)@$PU+m3XAE&$CPlQhE1E$-O+2bSwo+0tNf2}Oj^z`^h~9s5`8_;fCy) (vW2zdcf`Urc&V_E7PhaODFuRB!0z61yb8oFXQ6XVvJFwUa`@aSxDT6nZc2OfR z1uIrA@WmMO@aA&6pJ$qyez%4w7^`YbO*OmN`3q=uV@3K=4gv8nR{{{Jn|Dxj#Ok$O zP8AdiwUNt_^hjcRTqI)%d9u&OZ+dwKHZ2Grr3ijw{OA^n5Mh1^>0UINo4N7N-ttSV zrfF5LXqco|j{!;~=8^tNIN%U*778M_MlhU_^lq8GIc(-wF)03SkCE1D(g(lr740ze zMSp64Uwe37V6ZiPRJJm!sU2WL{i^)A7jI{N)o!Z5}VXuVM37*dJKBR5^r?MlblC zqvtf0lE8HJqg4?4L7;T~*MQYS&L<8dEw8E`m&D%YbRD!-P sy7pT zZ9KZB?aHOXsk%5aL?;NJMa^wE$@e$JsAE3)ca8ryl%(BFN tB_RaQ0VwJ|S1hBxxvZWG0=5K&zCNw0rta>sHoRDhS$Weo#xN$gg9xTGT5XfR3w3gy z8~qel8w8DT*#8!`wrYaTsuopzQ$~< {yii%tNz%!xdp+_Ji4k_ru@T&K z;?t_(Q(qsA*S+aJJwwXhklya`>3^Sj6zG`9kEG q#nWfiZ~?U5u70vr4Zw4j_4W`- zSLCA0hS>wPGuzOqUzm#?$bl->&nuq|vBRV@FP(>a{GQ`z2HM`0S~t{>O0nTHDMY%% z{IrgGg>_(f->_sYK&0d6o5O-bQx3znH1J|;r=)m94`l)yw&sm0>jTp{<4Q5AoeydM z*s+;3@3?um{gn+xohS6? CN(AHUsM|O)0}=T zS2ZZMzzB*Ft{K%ZmJrjD$QC!*Dphaf$y*AqE1U}3&&aiG!7R^b4k^eLT$7I%TJ+$A zUVi{t?sSa+{{AwUpd>uifJZN`)ig6?`;EyN)OBHvI##~$@XHb|4h9gu2fuM6ML-R@ z?PZZGOT4jktUr>LzsDz~Uc$F`t-8Bi(d4{Hd~0pq5K -jI6SM*VAi}5~u*!#EaT@PqQpT{NEmUg`cW1i5&q9 zp3lO%&tB1=zlSn;E=XMyUbRUS(Fi^9o6xz5RFn@Khs=`oQLFN}Nm?rb#kN^K-qvSu zCi5zz`nSfcHz`=;Yb-H=M=B%Q_%qyRjWbmel&v?Uhk}qwgF%U^rPP&CrP-clt30W{ znO*3Ya3M>iLUG#c!eJw7YGSF%O7iz-(ly~pW6fzt`OP2Bgidf&0b8@$0Y8>yCq0%* zi^&k|+yd9Re6-N6YIz@bd8gmn9dNUtn69y`Ck9X?-CfcLe{h8x1j|r*0Tm6(VG|nH ztoCu|OP??(oR48f?8eOnbJ~PY`?&|<{9VHDz9)+Qr?bIkq|;+cshcmUMm#<8x G9UM|HG^*D}Cw9 zKl#GJwXghxTaBgV8s4f8y(+H1t`<$phBJ(%*^rqQ!%HR>!N(*e3`|$L<)3Kl#7JJX z*tEl{fGKRMts$-Xp@*vIug5GD;ag?;3ubG!rZ{Yt;~zFHc%4Vul6VBij=G?ujICpk z5HjC}&ZdXrES5fZxj%3ut5$-B|0PwAn>o2fQ2LZRz}n6u^T|$2rHE--u_b6-<1=~8 zwUGXgQJ-c%hyuKH6M68yqTo0|kwWbH<77VZhI_GPPB5$>`^T%=Z~~jOYyP=H6H s4WUB6|NwpKRlk2=&7$lc WG z8h)a0FyOtO8#h8ec-KP3j7(5uvhFT)cP~Ae^>J5ci%B7!JSI4e4uDolHxHexHq;rD zLy1dMaab{U0yiDxu=#l?GS&WA?GxFa`iMIm8%-Cs?=ZWwPdjyf&J^VP4BJ5IN*<@y z#5%D&XRebhX07jAzDk6H3 ~j}QzpM6;DEN%RFdBO|(nJbUiYTzV0jV7Hm83CkE( z|3+JFS`J)}N<~%JF`^{<$by}ye09WVCS=B&E|3xMYAk?AZDaKD9KW}y8B==IyYu=b z1(5+b%oa_#2v* ZTnA{lqlvcu;!@uB3h&Vd~K zQOg1G5!u!%_otf 5NS;!wL-I0f?r@!5{^f5!GA+&c$fZIJ|u-%6=sL35xPwn3q5f2a} z3tDmD^X*z~ubjV$k#4s>=tDwI V%Wr{O>Di}KL748x$KCyN0dqr;{(S}oBg3WZ!p%-% zzUWz|+@~(Foq^x{clgJYKC`p{x*qBl$ZN7@j23`q47)3v)w5i+vc9)l4{|GoG `bYf~5bl)N(`4P`6e8%<+q8W3Gv%c>sBm}_yZQq`hs z4V>RFlG|^8vX*NSS1l?2vi-ECWYMWa*OnA^K4>YMUy;Pwf5pivpiMr21$fLElr+H| zMzqTaj8F>P6P2|HsA4nyE#2X`nZ6y$D8Kx&W9>X{k#)!FwbKSV1c@KYR!LK)DXhgF zOl$Hk@=32mx&`hoQ!SKHdVAox{XffFSsd|=ysh$UT)G)`Nzk*Ve`6S9WKW_TxH2Yp z=G}7qpHBp(N9ejY0S#Pv p zx8+a`hF&kVwuU&p50dyVgoRA2nc9p;Lhc4VZ2 r05T^EBpm-WR4=%J$1yw45{_qm8#P4d{u z? >PG+P$ZVN}8Z^teX&UU=@C+&-_J^&FO=r#DGI-(h=3I;j{J zj00xN; q^?q6Ef zE~lpxg5|RwT#qi}-=3W9`O*6Z(oIt5cibPKk{XvVSGjw`YW{b;$*+^}R63Rqm?<65 z(zQ#^1G&Qi`RuSO`iQ&{GMPk ><59aG zX}?SXwS}+G>Z3t#nICackvmK}iiUUYv5d!R3IvIrt}n)+F8(EbfJY5Lg{j{lLeJj@ z@3+R=F+^oO+Lw&X-Fb#3L%Jnd^4mF~aw<4vOOv4h=|9Eo0-qHg$%`q#+HN|7AB;7+ z4zM?^Mz2d#Z p)|cRj`Wmz3HYen z!%DK25BkvUx~vakY*oAv;o`b`> I5BK`T_ij`yVm^YN${Vq*LGf9@@TyO zYloP#*2q+p!+{0OPV!hXt$YXcQbm{-?Tm)f7h7tLf)C!7yj0nl-eNY(6w(Aighnna ze+>%T1I7dne^;Hl)mKED%rT}~Nk0_jvwqjDUYFOV-5MO?WvXH8nfx8#BjYvV%6g1z zCjXPgD%n(7`TX}r>vztd53{6%D4=^bVuQq*z;ZofkUA#=kMjCj;fiiez%c$_!JkQ7 zi_7qfuRm}9i%pOG*L+r0C)*P-AtPpf3=K954v64^?zKT4Scg~A=Sr9p$Q}!W=x?gw z#51vu!(m(WsC&EFfO|lV0_IxtuvZ7l> x^lLjhd|*m zCp9hcqVgId^sjG`olwZK)us`yw4rn-A$l){zF12^{~Zm;cpP(T9Cx_+QpnDe^gDPz zCa{TGTww*6=~pk_j6z?@zxH@ pT1xUo(kec$&H7$8> AQ{C81iuBcufv3yr*%O|(l z47RUW67FC&QQc}WYYGBU*S87IwR|%-suN*sQ=a&d<}?wj-XvnpIGJ)w7ii5+`{KH* zLDTUbDBY`p)pJ>ebOHZ?zY53VG2CXPd(D4}0BAc@k}{Vw%?RJsY*(l}DW}+zth!t0 z6Nq>I?Fmh{o{YuP?9I2OD2K_jm(8CZj%?b| *h=|Z)Med~-<5kZ(&lbE`XVa5qQ6St4l{G7xY`1B>?dA(_)#_!am zP%#$W-lm&bpYJ*iepi2D#DS~VOx`?+OXnk>qn-s_R(HuP@1vu25ecCybKFwvUj9ny z#a2orn=6VEzusZ5UR9FS{rXhuI3Ia?jcgl+ZNeV#e543c_+bbt_bO?m6x6v4WPnen zHzpdwIXg&M@fmOm;gRLVlvp#I&F3S!Zr4|TgI+!?t-0)vBZmdVsNTMS
Xo2eM8>9XJgUq txz3FkO1ymN_L1-Uahv_`R(hem z{&Hh`z2tYks(r&vCV##I&)Tf_7!Lp2;Y|<<&hm_}q0!fJxk`l|;08u`{UKgj7ajk6 zu}TlB?+O_v8=zb=e&nt@6$XP6SPn|qGGd&r1wDtldkO!EnB5V`-v|1_l Y5QC%=zY5+z9o{i zT T0APe7BKo5pO#jQ{bIyTxL0tm2@1v=P&kO9D_)v zMC>)-2qIiz`p 9b^0kvxLuc*{nQ(10-*0ChLRzPe&7@2wlF9quNuF%e{b1?87K?4!sm3F zbODO0h|2Yyt~v4*Y7Db#V{!t1VCu^rUDR#i+Y{vuhU8?Z_Tf3+dZ_b+c;lMebX|6v z3i0iw3ABu6ch)@k{6VR3dL2>W@&TgqQ1P!y?T6<4RXB%43+quevHpA;uSuQc7he*a z(pbTlRW1e&>JlNc*H@$O-?fL|U>x~$KmFCqgGR4CEdSf4@jg|FyDMypJU?Z$u2buf zjSeQ#Q1_l)zxEtP14y_>2Z^YY*%%SX@2}V}78Ve2oCu8|NyGCW3KTvQuWaodM$RxQ zeGnttf8xumlpqRc;tj&T3IeUZjqxrbL&Z~eEkhpC(fJ~RR#}^l#!~rcC2w2I_c6@t zkZ )M43 {Fx>uQT=bXBNAqkP_jvC!%$q-|SOZeGmy+KwlQPl!WpAj%UetBY zII;b`m?*a1a=!)i?*=`CWPC%*u(mJMgFptcYYa?wt+?v?@N$b*no8s9Sjl^*`+We^ zN_?`h8^P|uR1_tgOKEOotAbm|t2;Pu!Mks(J5-FU<77Um=lDJ+j{%oVBAWuCon)E( ze{)SUZ0W&9A-gg=dp{ikkGu4QrObOOm|S|!6gJ~q=UUu&1PVT+fKR45eQ}G-XO6`c z>=pwcbmxDUX+u`=Z*2gM>%~PO+wVG1S$>n!zrF>RGh$a_Wa>5)Fbjg@>7$sss*xj> zd4YG72w6=!LXiz_#yDjr@tZwRa5j0n`1< `G1^!Wk8i%)Fz04k}A?A(%mH`DBUfMaOm!CF$igp?(XgqkWN9mL8QCm z%s$@hz4x1$KQn(hhxhDv@3mJvYprKdYmscY9}k-3JNUy(G&&Ee3c}<#C>3Rhy&bsa zvGR*`@ h=~>vY?G;?N&kTxVoWzKl+s`yn!luTS$EUz%7HrQO z8*FgeR(X?ekB%LSd$9wY9OgOJeG502OW<6i2^4Zisq-a4R1WPILR{8sog6~w@P|yt z)tPK&7V`!us+6sbyIiT!?}JGNPCuJ@+dm;Uq(qssr8OH_)&x_NEzVX*ekS_xB*ob& z57nQcmO*a#XXYS-d =GxU63jTv HxR_O(Me_+k$?IC94sFm+NQ#;E|R z86{1cO-k&SP|Z&|BDmO;%Nk@41c)GXXT`59qv8Fpo&TZ=S;HI7tao$!&B|~zwGX)_ z)-krdT5bOXzx=dl5tc}hxHP^rz@p`?*rKWxG*Jwn_ZG*Z=RJyZkVFLgoE?BYE9EU2 zm=oj7QofR_6BEhJ1G6AcGHl=9<6!?ydGjg9dtQ@Hy9pAA0>&Oh^PlledyB_$1{Ju# zMpjAGQ<3u%ja!*M?~)h8BVzc?D;_@99<&>;Z>wNWyx^>QyZtfl{@( tvs>r( zKC8 oPmv57_+@vV z)k#5AYB!cW^X3LHtpilVSNmV^w<;Gy-HUzxqWvmKAVll++c)r}Mz|)HjSPU<>LXd$ z=Jcdqmwv()a>FkZ)24FOfGs34UAT*YO3hwowradHC^b+^dVyVqY7XRZU^ik+7=)X! zY?I1O3-y8u8Thft4sYDmMttzrZhz}8)qHCMO7XinGq5a({|AKM`AFVQ!TP-)|wLuQX;1=XJozKaq-| zllp+cC)MgbZ#0tTJyvBF5b`E7=8;m>nxK90nmh>zaKk66V%E^Sdh=F{jwQJz7DC*> zW&J h6C?J^rIk+eRkN8J~Ke>_onKTo|h78Danfx`I@z=2_sqL#L{ zE`dRM`0U0(AtVAC#>2Wa^lHE2JFw~2B Nja3*K@~(w@vjL5muf<(&*m)>$z0-YkbKDVQJzEpce=@QTD-p~N z4%qy@(F+Sr0qn0tuyOb+QyqJo_0f~H<-o;$X=$mm`nTr^#cT1--T10aNi4gnmmaGI znNsiB2~K1B6VJHm*xPNypXS(X?!HAzB^24l2eG(rLCHo|0-C7}e&X(mWY2kxWh8lb z`a9Z$^%}zb% zQNwCZ5;)D$IDp7yylu}g0(`@+TyT?m&OzGFL*;b3IA#09_Q&*FtTwqqC0F}&s+rY$ z-HkIR8>+;!-RGv{j@qKhPu9DZ^xOTjkLDaY) ?%i4JR_A}#pT$I*P2!A1+G1b)i1eHU6U0l#k2e6V^OHlI0_tJ1q4)_?v$C1 z+Pf|Jaj#wPcgIIhwMpn7EWv{gsDNy>;;D0=?||`f`9tPfC^w*_k&aBvMtk*Mnu%8q zgBOC?+uO^UKWaHwr$OR*fPQ(gN-7gXiZ+Ew?4GhyrK}b8B+=(Co*a6;*s-S%olsAG z-c8!t>Xyeq0*lO@ZW*bQY<;!uy29%weZw<;o*J#LwOlq}X-0aET%wujWxMJLejR~B zLZ%$#96XPTB0S-uV?P8Vc)sk*@7L0xW5Dh!xYaA`r{}G)7B)Ug_72C<@0Z)bkYlOg zlHDx3O!vqr*$)#yf8*I7A3+Wyv5zLB@sCc=4Ygk(Fl53FBT ULN5)frQ9ylRn zT|ss`Xy=|_XjN&mZ1LEue=}2MW(>&IjY6B$Ny3{_r502*evlwb4#iIrsPbES?6Oav zUCfHb5XI~_ytY5vwouswp@fmii2lz3MElc;4#?izxbe~1-n`^q!?s91$Yx27E|H<9 zpzSrEtHOG`BxOTEQgm$k^8;er590o~dN;3Oesa_kx$e)5>&qXQ v zaqMLR-LsGg+ndjp-jGu&*6d|gRvGtfc2Cge)bhBak%Xm>nM~(~^H!Gq5Hr^%vVHJW z?fFNp9`Keqi)XT7?Z0dc-ulSrccuO+;4fuJ_U=B6Hk^$4fXZM m-XnE8n+_XK z^Lpfp>O1+4#d#{d!Etj;6aW7G*{Y_KF#yNmw&JgwfTq5_;3&ieG!ma1b65|7QBU|s z 1Yb(39GQ5d=scrR&?ofvDXrXrMm+zz z4KMVobe2i#{8}BBd@SF7i#& VUj zpvp*(;oe69l;hn|8C-*l4K)aX>c{i3yjsf`IzWRa{h}AQ+9s@tW3S~pBkvZQ^5Dn8 zugv|P?NT2zrPoYN2Y9^4105mQjDXtTdWIrQ=rEcey3#*XS;duMHj>t|GglbrxHF== zX$F;xJM_8RykRsoOaQa9dZtZMm~izR{ZtAyRkLF#aV&Mnk>%aK SO_MeXKnSJ$p=cPu)249e %_;z55t?`gPnNY4G2!Kc zMelah?ah3NB~Ga7xF(yF!uk#AS)nj77J1g%bd6Obz_B`LWI>C}`c5Tg7#kNHdeZRz zdK{)A2_getRjQy@isIt}mHf3Thj#$QR3-5`p##@}Fj~=fatdzg(x{u5uz$BU71!v1 z$KmG<4f8|1H0b$az1XKJ>-q5wbhu$o5aM;vMBuak?Dt2M4n1P`z7g80M{bii?!>}m z0Ji`R6Kl0wo?VL2_GI(>H2+BCia}RUjQwSddjI!f^H;HkNTihHtyePM*P9-0TZeCt zTBVuQ2v;Otk@Ufh3+q%V{^-e?K2;yMdy``+V>KP;e{ejbfp2ID_iOo|k;!Bfl{ClR zu4O}q`MD$+##aJ|ofBgvI>B|!MIL86Gzds1TvF^lcS_SuZo!J6N$Is(;pgX0Y$ncL z3tC~4cW45r^?6gCLkeIwEBI=04)J^*D~+xF{Mnl$d$)K4P)f;Ag7P>$n8J1ZW-^VC zLj2Wqp(*{yd!$s)rFZDFknd-|Gq3acE*f;C)ydLDNHkJE_p|x2vbXaz ZN9 z4p)Bp>AM2nwBk~oQibdN#Yx_CCOX|DnJ+A_?(RHl6rY2hz-4=su7Pi%gzI}A`*Aj6 z-nsk)ZFx%zjr-wT#aeu+v%mHb#=<|a(FDK93+5V8)5tJT`|MbZ!^%QuCYN+pP&B3M zIO*!Ohf{C+^BO>lb!UHEOPI7#IMCptLYD#sj30ds7Jd%K7Ct&v@;KdcsxTfz%FOVy zcsTI1bEa=2$srdF&(`l`Pd@dGVG3pKXn*{(4UxGM;C*Wh4kTyJsQ4^b PTgzu6l_1M7j3dgB0V1 kF;P2rb#yOb3CD;8T2v;%bN3 &pG*&=>O1@IpJ{vys ze8ApkMq3Nd3DvN^ I*(lt=u^l-X-7Q^@i;f1q(qe z5w?ILlK9FZe}iMOUau{+Uc%GzA8u|h81Bz5-iXv_JBBI7zv4p2ka({M7(>TPc3mbz z*HKo`zpT`HcLi~ZnZcX`gFwUYIfGO=ejo0;sz}5DZ~Gf(lXe9pyXkm{TkI1WK~=8f z=F0hu0uh5wgVNpAwqE8*B({JD&M?90Yj(Rah}(MgWHx9Tv+tMXmKY|Pm;KyBYS`UN z_JNc#PR}Wnjq1YcWZxbd5Y_{aObnoo+mdS+|KGxdGs7Uglj0Y!fIuZcR?0wZsIq+N zeA>$PYu_ZakBIGX<~P^f@BNB)F|~aJw}A3<=(IFYv(or9FWz7OM-ig^v=L_C`C=G5 z?I*uPP#RvW+q`Bh{Y2!3CLq8(zLvyxfv|(ZrnCQfFqEA(KdRL++tOq2)%1%U*{Dcf z$V3qpFXd86a=5ELZI1V?JD4!~IBq`G=dLh>@H|Y>`(Vy@!&eBJWUTaBv&ND^z`csQ zU`f9Q3J%9CItMiHj%7)DWsV^XEyEh$kRsuBNxe?soEU==7rhhLJTPVr!>or+Ee)R1 zn%7v*)7i9Mrxa;as(t1&E<2eeHwZu9(8F4rLuHCYM8!#nexOxj8KL!IfviL5ay;u} z0l02BGp}cj0$Vs;q7!(%5!Pjv+7TD~caK}R3YLERKZ3J(;A++VtULRo+`*lzOlueR zb=v0Y1C{KoQlNgtAzy6}s`NMj&ZhOYdLSuZr$>{ehXpic0L~8b3FiUUYspIEyVK=z zDmEPitVm&qk+fQzpcn)P7~+Us?o_gR`2_|ry5;e7?3}OcLeXVkk3I;qdTKU=*z)5= z&xVp^!PNtmM>A5Xf)T^i{J7}ESN?1-+LoGNvkY2pj=0?}mTRMh)7K9=&Ocx6%46eE zW02kjRNk5@RdrLklC&Mk=ig&Sd*e iP`hsu-J>Xe8VAg_Pq@$Ow?P o;xThhM(s6y@oU-|`&|X|TOC5cPh6I!g1vZ^Z`0=oS7FEc#4i%JB&ANV5ET#r% zxy!9>8%PJz?k4JAm(;Y8p 8=2Fjod>nT@zpJ%pU@#(E?Fp;bF`Mefl#gy~ zp)n>mc)=W92Ux89TM)yKFwimX$t3a2b4x#FCpxU) s{0BnU4K> z40Z422Bz99Xf>lE7vrbN6ceBX$;A>P_g^Uh6D5{K7m>&b&qqRzy*U(;+&gxWTsVk} z9!jizWABql BeK zN$edCL%QQ~;Q5Qz_2EMNi>Z>9D@7Q$;Y@Ax*h6X}8W`-}xZp+C)&nQa9s>Adl3W%9 zVCk2-_h>vh+a-LAC;0cIDLJeN4&BSlCtkp8xMBh)pkame ^UCBbQ#(d+nm2vnf5xbT+0aFivpc^^oGHX2*Zk|vt#9k(wh^(!!ljH zA^7Y@-v&Ug&jizKvLsn@VrRw$*X_7EZha`dwl4;h_ktgbHlHZy_4PUfT_=f!Z2hr} z=Wc8-31Nxw-HO+#35+rf$G++9%E8`>?~!w5eUx>zj~YGe%?o7a$`oR4W}hV<)%0eC z2CrpeW3AsIF7~>yFT`Z#wq$L|%tqJ0CyVzS{Ab9fNFO@~&w(%QVQK4KwoUBHg2y?E z4jnBDc-i@Y9{yT8jY WhIBXs~OHDEq38R({L+!qU-XHE=j z6yw@+%CRKy%x2^8 x%6I x_k6xdJba$W4_RYdPTg;gKfA^n|gNH@`{bJ+(=V%c4 z&1RXB!w;y)I4{95uQiu|hL`M*4d|4Gv({n|CXM2%cHzCSRn<3|zsG&e+UGp)wQO*< zA_v=(%!U`z4T=#dN}KG1L0bcvnG@8fkM=`PH|ZjC7{7hJ;||_z3{S|TGPHL_XFGu< z5pceT?ZZOyEGU&jiLfRx#Qs-a7t1v3)eqY|zQQA)#H{zL_k*leeiKjU3gBJ}=U%u_ z5)jG`m?)g&>%NFnEEkZ8$mk-#P$|~r+^g>P@;TmhF Z42#x70IJWH^3+iFLn>~kOsqoJ}OampprMIE1MO) z%_mD}(Fw+Z3u!quTM&A>&7JTRlzBXFgf3IX#zQ#GXq8GMf;PPQ!~(Npc9N@??}Jj- z99gaL_wWaA^lg21rt%e2!ch7xO1+psl|*%teIKLwGy>j(&J6J|=dtYI6iE!=cw1fW z)=E~m9-_GI)rWaWW49TK?9OnmmA2;ef;c{B%+?#0-W@Mgmxe`Az-`pY4lw*Yt E*CzN3&yvbm-LkmlVwhn*Z8(2-Et)65KZ=J)he~{+k1>mh7i2iHBKH7(u*^ zsLWgE( 7qz+8SRovFnI>f^^WV zRj4K_V|~90)Nsi62I4NzgUm5ozIT~678+8~+xtye+Mb8EY^EdYM?Vww@;OETxHoOn zssrhGFAK}+&Qqf4zk`!UAITJ#S2BYWLxY(FP2+U&urruZs82~;Q$o0{ZKz$b-G45a#81UNbd0ihUj@#aR ;YR2f#JN**NM!Z^otT$-~&9x{HhgLYy~_WT-UesQTTKG>GZW)uqu@b Hcu8Br2LX70)I@eI QxiF}G@9b_B@QW_|sH5c-?~ zm@~LoeAm;7Vc8&E>m`5G@+{&ARxMU_`qxETso@!XRi&kIVP-L`|UuT8 yRPz04KyY-w98-PI4k @&`EFqc+8A;yur*^)!x3= z%WhQD9bN#??XiqNUBUNHnRjQZW1OvKds2O5!vQM(W!$vEWl_=#sho@iwaTw%gldK< zIB6^`3~=&%r-`(-wXzHS*X&CCRI*0L(6>DBfu1{pIV(CYI$xs8{j!y^QS47f!C3jQ zJ>`JMvhx3s*_nKDVnC_UoEaQV)7xS6rK<#RZsi>R=+*>uqyRN|R%M<^yvO zDWSyD5_XmP?QCvfFGI#)o%ch|c`7B^y;-J!?=>3Ne 9Mr zPB8J=6d0M8)`9l{8jF`JhwWsV-JPPZ_ZnY&U+*FUkWLk!bw&6zM5(rfD+CXe&L17z zKbW)s`Vd(nhVE((Ahn*-gb
gt}d6CF%6GQ5A!rbq>PQ2n4 z|6Ei&^F4aPerrisMGjvPigF%H7U8|e(z7Vd1XG=Ot z`Wwl7edXPIAg{%5I$iNe+v~JfFtY=2AQ!A7p-2w`ns88kIdd)@S8^oKk#!I4*`nJ9 zVdiTj^cm#_M>8uGj=@CS-Dj*#v`YzEAW|wqdnwtgkgr6^yIf}oP <%k@6 %#`%p%z{j06vsn|uWL2GwfnC>CEzNucuM=Q!DUubj&B{Z9=}vGyC2y~CBwm+ zpvkxMj5@`(=y*U&!|EgXAnMj%XIjaiOiM5Rp5vqUPwGH~$)}UC|2a`Ez}^Q;9{2o7 z2!m$TT-HaJhdt+cJS~Y%m30s40n3H&X zA!kXv_6vcy{k4msN=Wo@KA1g(d{-vbWY$ozzhIDv4>iDJ&938V&~@2VHWbg4c-vmx z$w~Qdj2bUr&&u XTC(A1mG6IIIm9jtme`QW0{%1&;w1%s*faB zaYo3XM9r>EVN(5rJ+~Hm6o(>B*w+Y8hA+3?hn+1P@IuUtWhzV<`Z{f(Ky^E0jKfOv zVjq*ikHy;)(hEOQ_Levwr1uni{Z3DWF7%_XiN-;E!h5kKkP$*_i(a5wXb>%-tDEx4 z%pd6yAjM!fa2PMrK!uED;fsCJoPqBal}dpHD5sOUjL18!r3_j%+Dvs9Z1rbX(5QT< zjDrvsDBMsdd`a*x5=6(0W>!}DDdOu_3&}sx<0B<^8eAmg@(}bTHyF<-6(#3^0q4aN zLF@wcu%-d(caUcX_9IQ9YiRZ36wyQ)gR?<9X*wYr-dC9@(pa$Bj`m2l=*E$k`UlO5 z Xs!JD~-)^b( ((PXN(9MF577 zl=EU?D;u5b+GzI#P>le5gmY5BwTh-bE1d_kA$t}ZzxrEz{LiL}NFf_7Ea@Mu#ly(j zE_C5YL7Z)Wdzy px2e-p&M`8amVSTP&!gxv9ufW zMRGUX=}0 9iJC@dze72JU$F33jxIt4h}ewRnR281hQ^y(#?bTjnA zpk2(9 XNReyhCV?o#|Cqt+|)Dv*6n6eJHCldCRJUEiW-j>BB^(88GW z5!%47@juc%n3!Db$qW<9=jx1j&mS$UF)loR)H5-77K31JQTm#~$#&Nk{XYhNlg#26 z2P$#-gK dc#I$4sG16iJJ2|7v0Jh1l< -jGUO+drYX}dkn7y z8d+eWdO&*~arIn>vb@)`VIiS88rkEY=*brLF~g0b8V0N1LXXbJeIQ>uKMkEH-!_(# z2{gFGF(vcG6s}{fl)GP3@vbjU8tuiZQUy}H>hE(}tHz*~-bKk?d_y_#a*)$l6>9E3 zjGlgqwve>M?EC*-ClF|Y{09}Iz$*VM_kZ3i=c9ePs9GRqF(2kqy*XU?q9$yARP0w> zka3I^CNjNRkz{bWFq^&}o}=q>;A8Xfd$Wl)-q_VXXbeftGta;PW2L?x!A+m%)#L&G zU6N`R0?%U4bA5= 5tO(9CaWwj@Y?Ma3Y*sz|LH8rzDtWzb`UJW%7;IJ zv>hWL9qhiRL^HrA1mRjao2i1(v3?xU_M}a;%L4x9P{X3ba7y0+D@l(yZ$EH}sX?iI zc9PrAU6A?0<1m%q1T0C4y_Ht8&X;%Bhhk=D)48~*p;GWHG{3%knDB0gd|&s8(=7sb zLd-DW0Uk?h>FKgq1f-pl9`zg2zcy|?l&v*OL=m1DDTZF1gN~Qw;$U2P^3s_9iHOug zUfxItRS1`LxngAvgwv)lW485UQESTP??I3l14vX^RdDBbzk>|>{^>pi77c)~(+msw z80IOyjG>E}uyn_x$U;dW)%852;=No8P}Y=!ht;UKVZrf~{uMlZ6k-Xvp)bLE4#TZ! zM`4}?2pJyJl48CA@O}s>DQntSw#RS!GV)Bv^Gd3$2sIY&y(AZS(Ddd$Iw>GJQFLoS z@!v*x^@y2fHci+nQ^GCBVM6T4G_hSQ;`Nf|assS|^>0*kOneAB@7P~VRnjv!vHcM6 z-f9G9<1@JUat41F2L9t(_^Y$<7fvUZ^PozxXQ>?l5+=|fohf!Y-gd7BVATblzQQO) zRw4H4I!+Y?G 1-N1O*_!oml)le!vIu{URCo z$X*ls{ISGs&z!#?-$RqxZ`hXW>mSwiIE^NDvE0d0Rk+q@)@;l{rkTu j!z|eGxrD@(307hkRZ9odLKUxq_7A2WPdQAvo`8n_%w9O}NBqx~D1_Gdz&hR0g zkhbG!`A|7A74Q*Qvy}}&Qj5)?GfeE$PO}ShwajbV13{go1wfi70zj0^p-hJjHT&J_ zT-sINXQ$hfuufqb8yt%tMd};D9 9(}B*9(bznSr?ZVY>xZ|x!*wvc=A(1^4LCMakN0lRnk`P zG#_K%gjST`F_y5cS5%(Zm}$5J8rHv^RJMoL3uJosbKV{*(0MPt$H}D3!;h&lzQc+v zzoRnX^^Lt40Ocu9*93jy*23<- uPO*ini~s9!tTV~9y@YR@|o zw`Kf!bPrbJNWo ys#k%sQ3*?emeyHC6~6-&8e*S6%YS1JFw};*MnVxfVTbn>U{d zVMgnlaii;#GP%s)-{q4zdAc2sM gz}$>!fe`4s)E z`IWV|=!A{Si?s%5i4v#gws%vZtdH(QxtC`cmq@oNN3b*ez1a>d%88DP5(v1M11AzDd&ikwpSX1gegZ>K{nR z^+F-aZ*wB&YXViSZ#iL2vX54b3`#Asye5#u9&4j&{|k2g^NjE$_R^>wgwLFGw~*?c zXG*e-Q}cJz@^k~Q>ConM3Yy&F6k%rp+9l;oddQq!5UP5&bGB9gb3mZB=XXtu1X+*Z zok%Z A$b 72NnabaVdq zLCCO5K?$;6!8M9r!Bx!&6l_^3_a5`_qJfvkaRn? FRnuy{7$a9|F@Y~3x&n3R@kWpX)xVE4!u-9+gr2R2 z;5BV`pbzZAC28+hZ%L{d3Op#k4c1fr@=%4x*eCyH?KE<}tV9y_SP5ZMmHZt3#l8Ey z>B7^TOC9ygM0O?rJ~hiy Xx+~RhM{T%m< zm(L}(?_8TIrbKWs3nm>D#B(DzaBg|05o5Vx(}&K!4(+_lbN`5nh{QCN#c^ztCziV9 ze1&cxr-eNZc+sb^H$q~P3$>(DcOku0l)M#Tg6b8Rf{I7#B@wd7dX`GTsXNY$Szqmt zr2@&X5}!T^bK3rqU#7H9K*zug>)R6<>p-Tb>H}nny _eAJBYXHse? zxln%;vWmb&tlaSb&wU~RJqlSgy)#C>Yue{uAgP}90IfDt!ZH*fTDxTz5A2dv>v*Ab zxU!nvCtW)_1*@l^rD9Qls&y-``^cV0yvLRve#!6|yF0{?8BBit_k`BbVI?f#D+c{k zy@Z#3YtXCeHRgDeCms0*YjI!psI>MyG-`YfiX|D5=+q;F4oq!VUiKEK&r(D}(mx;w z@&OrWc++AP&;;O#BiAxYn?}h&209aU1rl^Qvk`HCx>zfHaxrcVuDEfzcUt Uo0)*+mIi`GdKT)R$4;B<_5m2`aK`g+q}Jt5|d`X3%3wpIhLn zN`bnL*c}q$tgmmcC7fq}QpIGUpkwfuf`@J*_0xL-mcE;M@0OcpyK>1}pR=KRZIPMg zvz+Yo5%YD8jr4Yuon+x{A1GdyVfrIok3J)P_~af%T_dF*+(X4DD|>qt({)8gUM6?P zDUl^-EnMu4*MctQ1w;7-$`fAK3-QXTIsz4z<>ThY*AFe?Gu5UvNi#?2i^v-f6n|MX z7=8--h>CI1itzXQJsP90TS`Oj3?P2@h%Esx;U*8i;aZH{v0v5r*K(r_^iDkfj@w6~ zC43`3-lMfYW{b(IUxo#t(Z=ekc5&{+rZykUG;>O1_3>jhM6yh%Lc=Ap9Rp|EFnE(L z%$_qW_;7!8nmJxe*KKT$|MsE7M3wl!IAW#hqD3t6o3A_d14zc*pSHgc$LjVMwRWNu zgk5tHz3Fy7QU2x8(9$j5hKPK#2;)Nhz1&Ug;6eWYS2$3!{*h%JasD>VW)fjwsY5 5SOdA2~kTp~ 6VrvO1iC6(pDP?^eyf z-Og6$_F$;=o3>hUH*U