From 7c3180828aae655898b661a6798fa427e91c5d8c Mon Sep 17 00:00:00 2001 From: seeker Date: Sun, 12 Jul 2026 23:26:48 +0800 Subject: [PATCH] Add verified minimal OpenVLA Qwen2-0.5B reproduction --- .gitignore | 13 ++ LICENSE | 21 +++ README.md | 142 +++++++++++++++++ assets/training-results.png | Bin 0 -> 142305 bytes minimal_openvla_qwen05b.py | 301 ++++++++++++++++++++++++++++++++++++ requirements.txt | 12 ++ 6 files changed, 489 insertions(+) create mode 100644 .gitignore create mode 100644 LICENSE create mode 100644 README.md create mode 100644 assets/training-results.png create mode 100644 minimal_openvla_qwen05b.py create mode 100644 requirements.txt diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d66d565 --- /dev/null +++ b/.gitignore @@ -0,0 +1,13 @@ +.DS_Store +.venv*/ +__pycache__/ +*.py[cod] +.pytest_cache/ +.mypy_cache/ +output/ +models/ +*.pt +*.pth +*.bin +*.safetensors +.env diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..696450f --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2026 IP127000 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..cf929ce --- /dev/null +++ b/README.md @@ -0,0 +1,142 @@ +# Minimal OpenVLA with Qwen2-0.5B VLM + +A single-file, experimentally verified reproduction of the core OpenVLA training loop using the Hugging Face checkpoint [`lmms-lab/llava-onevision-qwen2-0.5b-ov`](https://huggingface.co/lmms-lab/llava-onevision-qwen2-0.5b-ov). + +This is intentionally a **minimal OpenVLA-style experiment**, not a reproduction of the complete Stanford OpenVLA architecture. It demonstrates: + +- image and language instruction input; +- a pretrained SigLIP visual encoder and multimodal projector; +- a Qwen2-0.5B language-model backbone; +- 256-bin discretization of normalized continuous actions; +- autoregressive prediction of seven robot action tokens; +- action-only cross-entropy supervision; +- overfitting and constrained action decoding on three synthetic examples. + +![Training loss and action comparison](assets/training-results.png) + +## Verified result + +The experiment was run on an Apple M5 GPU through PyTorch MPS for 100 optimizer steps. + +| Metric | Before training | After 100 steps | +| --- | ---: | ---: | +| Mean action loss | 15.2092 | 0.2834 | +| Teacher-forced action-token accuracy | 0.0% | 90.5% | + +Two of the three autoregressive action predictions closely matched their training targets: + +```text +red target = [-0.750, -0.500, 0.200, 0, 0, 0, 1] +red pred = [-0.746, -0.496, 0.199, 0.004, 0.004, 0.004, 0.996] + +blue target = [0.650, 0.600, -0.150, 0, 0, 0, 1] +blue pred = [0.652, 0.598, -0.152, 0.004, 0.004, 0.004, 0.996] +``` + +The green example was confused with the blue example. This limitation is reported deliberately: the run proves that the complete multimodal training and decoding path works and strongly overfits, but the three-example run does not reach 100% sequence memorization. + +## Architecture + +```text +synthetic image ─→ SigLIP vision tower ─→ LLaVA projector ─┐ + ├→ Qwen2-0.5B → 7 action tokens +language instruction ──────────────────────────────────────┘ + +7 action tokens → 256-bin decoder → normalized 7-D continuous action +``` + +Compared with the Stanford OpenVLA paper, this experiment replaces the fused DINOv2+SigLIP encoder and Llama-2 7B backbone with the smaller LLaVA-OneVision SigLIP + Qwen2-0.5B stack. It preserves the central VLA mechanism rather than the exact model architecture or Open-X training recipe. + +## Repository layout + +```text +. +├── minimal_openvla_qwen05b.py # complete training and evaluation experiment +├── requirements.txt # verified Python dependencies +└── assets/training-results.png # plots from the verified 100-step run +``` + +The script expects a local checkout of [`IP127000/openVLA-Qwen2-0.5B`](https://github.com/IP127000/openVLA-Qwen2-0.5B) next to it: + +```text +parent-directory/ +├── minimal-openvla-qwen05b/ +└── qwen2-openvla/ +``` + +## Installation + +Python 3.10-3.12 is recommended. + +```bash +git clone https://github.com/IP127000/openVLA-Qwen2-0.5B.git qwen2-openvla +git clone https://github.com/IP127000/minimal-openvla-qwen05b.git + +python3 -m venv .venv-openvla +source .venv-openvla/bin/activate +pip install --upgrade pip +pip install -r minimal-openvla-qwen05b/requirements.txt +``` + +The Hugging Face model is public. A token is normally unnecessary. If your environment requires authentication, pass it through the environment rather than putting it in source code: + +```bash +export HF_TOKEN="your-token" +``` + +## Run + +From the parent directory containing both repositories: + +```bash +PYTORCH_ENABLE_MPS_FALLBACK=1 \ +python minimal-openvla-qwen05b/minimal_openvla_qwen05b.py \ + --steps 100 \ + --learning-rate 5e-5 \ + --save-dir minimal-openvla-qwen05b/output/minimal-openvla-overfit +``` + +On CUDA, `PYTORCH_ENABLE_MPS_FALLBACK` can be omitted. + +The first run downloads approximately 1.8GB of LLaVA-Qwen weights plus the separate SigLIP vision tower. Later runs use the Hugging Face cache. + +## What is trained + +To keep memory and runtime manageable, the script freezes most parameters and trains: + +- the multimodal projector; +- input token embeddings; +- the language-model output head; +- the final Qwen transformer block. + +On Apple Silicon the model is trained in FP32 because FP16 AdamW produced NaNs during real testing. CUDA uses BF16 when supported and otherwise FP16. + +## Synthetic dataset + +The script creates three deterministic 224×224 images containing red, green, or blue squares. Each image/instruction pair is assigned a normalized seven-dimensional action: + +```text +[Δx, Δy, Δz, Rx, Ry, Rz, gripper] +``` + +This dataset is only intended to verify that the multimodal model can learn and decode action tokens. It does not measure robotics performance or generalization. + +## Known limitations + +- Uses SigLIP only, not OpenVLA's fused DINOv2+SigLIP visual encoder. +- Uses Qwen2-0.5B instead of Llama-2 7B. +- Uses synthetic images rather than Open-X/RLDS demonstrations. +- Assumes actions are already normalized to `[-1, 1]`. +- Does not implement per-dataset quantile normalization or robot-specific unnormalization. +- The verified three-sample run reached 90.5%, not 100%, action-token accuracy. + +## References + +- [OpenVLA paper](https://arxiv.org/abs/2406.09246) +- [Official OpenVLA repository](https://github.com/openvla/openvla) +- [LLaVA-OneVision Qwen2-0.5B checkpoint](https://huggingface.co/lmms-lab/llava-onevision-qwen2-0.5b-ov) +- [openVLA-Qwen2-0.5B source](https://github.com/IP127000/openVLA-Qwen2-0.5B) + +## License + +MIT. Model checkpoints and upstream components remain subject to their respective licenses. diff --git a/assets/training-results.png b/assets/training-results.png new file mode 100644 index 0000000000000000000000000000000000000000..ed13ea2a4ddd41d0f7dab3cddb1b90e00eb337ca GIT binary patch literal 142305 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%0A7Iv2v znMn#ehb*)>feqyOVM-L%LaLM_ncK&V=7qETVbl+k0v>R0A>m-FA{lPNDU+9&LXF%* z_g&CdIi|fcKaP!tQB#>lTs!;HAlu`L?R@-VIQ)BvY!@)yHbbRIpReJ+tDeEVJ@ZOg z=r?|-zzaSXIyt2MDHhJh4t>th8A`lr?03uXP7euh@X|Ui{?I5C6bWbo##>|R3++_m zq#^=V@_8LHFVTo=;V#J(Io?-j9U)$?-YoEMA#(Pbew@K@3ert3R@US z(d{KHC`Xqc4ls(0!O!Uh0@-tx5?Tx{hRT$K?*%oYt57rB%J{CuoNH?b`!*cgFFP(L zyE3soUdb+iRG`RieU)d@6HrdezP^5U!xJlJFG6kSBN`(iWsm{?u{-yyp)%cd9$p zM4s!%4$BOrMQYa|-n-CAkplAa-^02R7r4e77#M6yKMakG`rs|vAhzhctr3aP3m?1! zGK<5^)Y+Duap+io^7yf5?yuS)p5B5b4r8l~6@nG~hvO8<)s#cR$h7PU=oxgtHpd_* zYJ})E6}+omF6QsXK)d(&m{{9#`cx}Zi%ICcD;<^>a@`|d>y~PIr||QHti9DX?XcYi zLGnHNnfytqKu!in(AtZqY8B#9LdVs8+_~;u!8w|j#{AqeZ8l1?Os4ratOQZpW-kR+~W=+m(=QXl0|p4 zY3G{L+rSARKG(JPJ(u9)N*yM6>GYCxDBbl>$xj+5gL5Qe}nFodD zWJr2X+;+W->D21NdjUR@wVbo|x*hP5Z(UcXLVK#ctRH4~%@HsMXP95R+qrJUZH&BJ zFm}#!Er%5%AM`0~!gk!kcd16ORL0?ii~iQXcn0dhvJkaXq(KACQ2HMv?bpCAMrOlA z4~3O)#rhp|snBSz-&w$PIPcN5>X2AsQ7NMC+ODA&-45bE-(4a@X*FdGn4Z&x_}Ps_ z&tidAKr)J@P29U=5^q11i{fVA!7-L@LN@eBzmSCt4*{|K#Y-hIFBBAqKtr9Ic(P13 zMeUSg^UmJd0GoLdrKbwa6#2$-C;Q-9r{}(?^85uAz`cExtcPMkJMRcjmU27?9w89df%1L+_QeY0Il@EwQv{Ppkq&)j_J z$G|!9`@x0vv96f5v806DAE{a28X}3Wy*>+mp@`=jzxVino_O~$#|C<(@veDsa|fN0 zR8viI(lwK7P`L9NT_tRy{vh~~{cT?lNj?D7^a1EBQp_eBQ@P4gAe$7FZ58E9-u~<* zkQRxM)<;F2W#f5or(u3`VYr#Kd9eFM*2v;WR`XO8%gM6N7d!b13MnKJd%llUMRQC* zMNv~$%F<~EtsiL}0Li|VfMoK})?VBC%V#4!iDy&R<-B-iKAOmBHOzN^pJ~J_GLWJB zOGhr0er)Tnooivd6bWAhtT{Mo+H~5fO)ld3L|HnWK(v@vetHJ~f}1MiE&)On$wse) zG`q$5bMBJ9U|((_b7b6y@xsQ3IVJ1GfpnDJc}!=5u*6fv2XpU8hI?HP%5OGxG(u@$ zo0t`9ZYZ&7*fGCusVEirZD(ziPNKCrL3Nnfm0xy*LZ?WMHeR8_PCK}p+AdU)qE+b5 ziJHJB0@NZBhSpu+u3Ctz@BH{l?$G+nO4`xmUQQT@R z3qp;lhh;I&4{ij`#!G*PH*Zv%0=VLzS;7V(R$4(o~8?8hYr}5%*tXoQU!H#KscvYW>X*#2P z-ccX22Q3pCeWTsb3C-ke`Py&q|{DYscZ>cx`_C107zzn1bMw)tM*Ci#! zd-2T0jPm^S*~gKXz_5Kd?L*L`U+Xx;?t;;u^@L8rB(q5!c5XPFb#5!+iFLP$j%IX_ zHIry6giq|lR2=I9Gdh;2^n!5{8HmU{^R6#2pRbbXT=O6%w<7cCNKk^G@`F0ost27T zg?N@R%2czBLZ?(OP1!`(SS{nPw;c#^0G3`PDf{+)jSXK~%(P=y)>~QS9?Ae_qa8UUd_lq2TLZLSanCn9#Y~wtSe&)rfTqX+P_6+q-+q-ojQX4O3 zyK+@r!(3Jx-LzBl)#r)c(2tbi**}`2I&VTK%lc=r=J$h>4M?d(KL)N^?YCmLgK7Iq zc<%ZbkoJZ+is)&qpy;OD;ba+S^onQ3UzB6en(V<~!9#08O0(DrSDUk}-k1m6nx*=C>(TF&Grr1$oQ=v8c71lVO)haW`$dCwm=Q27mg zNe}8S50wh{7-9(;9cNi|lPq@rlcaVkC#>nRW2U$$IYoA%_2^61P0mHsn%%W5MlYXN z5j0gzyrom^E74PxnKAuFTR$RVObwH`58lsAfa_-k>Oyr~*;+WtEPS6$$ zr`ydYNM%(SJ>=t+wvCO~)FPx9!)<6EB|#=`;4U0x4X+84U(n6!)sj_32zDf!x2gA4 zWZ0`%KL1MFKEGqgF&P5};(27j9npk+7SYFCX}OC;q}2xwbq2frI*2iAj;V)UV&_uH zVEX6K1=ssV6s2X)+#ZDf{X$NmO-TF);l$>lGo{-Ff|2|J8F`BmaGCWyd*De6@OFmh5f4i z;E)M_0gq#WzNnOA4zE^NJNZUXJ9%nxE4fF_xb{%B4J(I*){WJ<(v7A(v7V>>xANaN zHhM>bONtye^{DMuR^{vmLxM@Zxn|Eku(l zquu#qWWbuT&b02aCl=RL?Du5o%b;%Of>&wz1jYNmT28CvUitMVuvI&Q>9*U8u&oo< zn*kx3#GLtr5^nYF1jk5d4DyLQwIStj#XjksyaA?UxaM{rKOEEYc0E2}2Q@&;5LE(S zipyru3iRh~Pr<;`TL(R8|2c0u)8yj`njQGsr6zp6yxjc~N+s>i5d(k&eJ7y^IvACE zi@4MLQKt7bPwJ6DNqcDp&j5cH{!{q|MV80Dspw;4u3Uy! zm5^ZKQqj2HHDWM|Us}r>r?WLQ^gO5GcRHsWzD+{zTxclgyVxHa6Z3CIRu$eF>>}t? z(LGHgdEPlwsi&-eYQND#Mz^lS^s{0nDn9NELTdHtJU?eAqsGCS@nN0mM#ea2R|02O zqR(NajUpwj<7uBFHui>b>X>bOW+HBb2(kt!3L+>HXPI6ZzYI91;}SR%e(=JX|Y&jcHuuZe)uGs2Aiu6t4qjX`{^Moah5dzaGc_6sf*VW*RKwh4e`=wD$l;iO&xj)nsnfA|~B<#%y z3$$Mr>GW`n2v$GM?_h%&j*n)bX?)0jSWr5s{cSa*Pp(1B^TjoaZVgi<{bjlrzoB;r zk5%e6l;s*}TK9C`$zp47d_|>+vla53{j}$xFPJ#G-H@$e9eJ|yZ1DXT`N1do4DVw9 z*$5G7H5t5kt31m0jBi>=LLr$C{kT81aSp(I-}3JgR@-?MCXbPP@S!;Q9;|TPe5Pt% zyQN;`iUv>IV0dlkXJ@DRJ*Jl32Ok-lY%GNHrZPONHG1_@>#>ThagF0XH?Qm!>t7dU za?>@4ALxm;&skCs5FlDe_vgx_(VWM~leNN9nlK*|S-9zrDoEnidYqPj`o9&*|8sr1 z)9Jb_kiJr$nN(c5m|lZt*F?d$#c+drD_wQ2gORBu5zm-F0`}|AonuA)MD4h(Eu5uW zsn6>h`7a0iVkU)0eN)Nq9s>!)q6?esSgPuqCc^#s9p-(J)c@@l5Q7KTCPp0>@PK=} zI#Im!0~%k)7wYkeO9y@naTgZOn!8g%gfyrdglg(^G6MK++$( zWmJ_E6)8~v{zbJ+Ca^-L08N4;(2sige~_H@QuL=RIXQ;5U&3hVyV!useW9g4Vvh`F z!}d$#eXu}wYmfx)5{aAF6riU;w{w0GZ^R(_np!_#A9ID%8pwM=3E?~ zo=uJSs1VS;<1M8UZSU!;03T>eM*vutUa(#F&6^V56zxLM^>*C_D014-L7kHz_7?@WM6TPrNpQ|Z;L_IdgQ4Q<*XK#XNrp?- zy#`ZX1ya_;f{4hXERJjvfx_?&RjE*{wx>-QLNvdxZiFPOBo zD*HT`6FDCt_vF5f^~nu9$Ue~tPN%h113??7)%rACYv7I29qM;L@M;-~Bvq4Kr7V+N z44Q%M>WY?p>s)yprzK~{0&nB^jRkUf(3&y}9^4KgU&#RJQiZ1Z#~@gc1Lq^OeG=`E z{RAk|VO2#z3`I`9NGd>b)*A3G4&CO@x<9i^@kZMRz0rqFHdV&Rb?c-*tdm6@!En+) z3hk2^HfZyXeBUQO7?-c*w_dvyd+RCw1qS>uNy-hNw4@rrtgNgG4J|FU&b=hqTQBy- ztC-G3>e^fM?YCLBBDB^G+MEgG)#)sPOM7HyXtZ?-W0cE^jwp zovfGF%d6k2w?*{ndz*H3f}W|O0J_wmy%R3cWT+mXTEAW9*m1E)sR!b34EqFZbV0q( zo57cLWWG2JfdiS}4{`kX4qvRm`~c{rXm|p!REuO{mtKnBiu3&(yJD&B0B-Mt;WZMp zbRZ`K4wa`=p`{)8cxz20Vq*h(j9meXa|%X-W5xq(D!@x`t|IHHLWynS z8sjXAxlv5FU5PPwT9i4oc2)jp-Y@Vax_sa&5=5anEBawJgR!>VutK!W&CM)@LL|<9 z(J?|4lhqeoa`gSmIx-}EIE+3yU6*5#zkiKy|D3_AtQGE(_BBomhoo=$9Igj5rsubA z4jQ$s@dZ}^UW%o*Szj9JLwY9EXpLkBt}H1)@A}BjX}}F1aam18`RJtXXPFGnzhfJo z7%53qYrYBnC#v)XD@U%W&L1Pn;m^ZbMtY7W&KbHteVSAtxcMa_FXg`P+9Tr`SM@jQ z%9tvrql1-B1ApjJux?+C{~}GZCd@?gDD|va8MG6O{$s__vEJI6F_cqM+`YE&%}SoC zZ@@YTAN69q$2l`C?`-$thbyNg72b$F=6N)gX7z=Xl5r-&ai5$w@513;i(kCpGBk+B zJ=E&ckZAs}NTG)-Bt6&!cLB|Pc?8S=ax?(Fe+StK|pc`P1=tj%peH<7jB3c0v0!Mc_r+avDxPY7}P`pF98l<2?<)9Vva9v z4A&02LSANu9kPY1td<;|dcdQ`JwD7_5WjRs=hLEhJpl&yg{z5wegzwfd8kMKJrk6^ zho((PGto|!5*XE3BRJrTOe8cu{#;$jF){Q|>`(bxiBd)D*k1|#X;5d$nd%oO^QN1N5 zs#V8tET!>LPF<4J)f)9gj_Ug4^3>l?iX64h=^ENes~dW-sH>n63ryv`08BvXaYw;{ z2b@>hhqL8nEpm>FHvSh;m32Vms^a^Dz3FAX)74M40cp0!88K>*8-`egI0hq}{_=M` zxOm};yYBd2@-$^O(}zK|OgTw67m`+o^uYCN;a3Tm51oG;Wal;}5*=!KtFxvqIi<@C zqWfK$u=GmlqV_#NR<*A}0qU$QkY`MuK> z{?dN?3}lYo#8?s-jOnM7$>D(5gI{cFO5PDkkg03@G<`GdE}U05+`@v3%Ol8;M*d!+ zJ%S}TQ1kG)BRqWb-eHkbUHeRT*Qtqd9Wv@Js@)9c5FezLN3$v;8t*0l^dl8+utR8`@VqEG;5VtDgE_lPGC?Kk(& zE0llsV*aFM%Ckd1+4<|98f|^?>cHHi8{`E^)2AJCxWCWo#V^aHw4VR>cN+EY9tcbr zhodkmxCVWgXRm8>i7|0Wo<4Z3aya3jHF>jo6z23Wy^eZ(xI8-Z+J~Yo{2?h_(5X$y zTJ89rdH5vj)V@?nmCTC4@wE#MPC}JVaCBBs!JRQ`&R@lQU(3%%=@26Gbu?>qG!>Pb z3vjEgM5juGY+~efo1q zv*rh#co$uinU_E4?U4T&|DbfWEaF;p%Eq>mTcS*;FpSFiYehdLg(_t%NSsTlDrvJ)6?s=d6_mKCQya>4^Rf>Q z0E%P!du5YJvskb7l@yH{-S}2=&^rB9uJg;R>1R)|EiT!|#J4~EeGIOoR8XZp%%}!FI@95bGWD9 zykyCR@_1x+s4<)t)S}&Dlp?$|TiY0({W`lORyJdEWFmc%A*W~^_pfZYfN|^xofl#s zbo0Jv#f+K-=4+nc)P;-voz8FFjFymTFz1*_Y?tM0Ytm%3bK_K|mZMHY)fa4nlB!7j?VqgZp7o( zUSz}`=`_hI@6Htl-w`br4Re25vb3{u(VIk}OdVZXw0FWxo*3UA1G!s=vu<9^TB84A zN?*HV>B93H-yd}s`Wcv6w-4;ygg)7QaVtJO9fhy_ybV0y>$=~3(PzSB_tW;Vs}gy? z?20}m8XYDE$m4&hUj5B78oLY~Kg_G`@(!%C^j$X;8Bd?%+P-tb-Lx4i$!={1 z`ICbm-Mwojp6v-2shV~%^c(E!$hhfyo;_2#{NkdB+0gK)ow5qv)N;K0!1mvTvIqEC zV=#Q{CJK6`CSSb|_8eSK9`WgqbDdh?)bR4!x5)#hu;kLq5@!kCALR%oAH4)0gyL9t zE*lPZMOpdf&^=9ZYt$a_ML##YqsJ3$=2ZLRYL-vnmv7}d-M<^O zb5p9aq|$8fW6741evRcBf6L8ZJG#3w{`oLqoN8=YPVY{UeW6fw>eM!)4bKNi%`Jn8 z2^Hr+9;dsNp7x+IMV#yvuzh=L^J=Jczn(!>Y!ULb!aA`e@P{_($PiE`kY;c}z zXx}dpbNx$NX+~kq4$fp9>X(kB{$$fDdx#FnCex+q8XfmO1svdvHdqmKyR{Pjxo23d z7}xRYit~)w|6>c_fA0X*skMN2U+dm|S<{RlQnJsx*4Y7bZQMZAh_t7krCH!>rnJ+I z7OYc3YWm5xv3TcR_?XCkN8rkGrVgD6by1N0jP6Sv;&-Qzn z61C&nqn=dQoGYKcjWbG(ctsXkIW0rI`Nc+6arxENvVgTrVHl0JFs+fNEg{rRs||D& z?Hr5D9=wMW6}KPEid%U$c##7E=Tzn5pom8flEi{3QrM$R z?Zg-<#qjQAvMmmv<;%?GE8=!wPlRhtJL^#z&0wEs$a6dP=Vl-D>;6Qbc5{eAVuX#B z9v%%6>*}=}v~<0mD`HmzadwH7<Ues3QE13IGO3VKye;*bxB@%6l>q%q}d%GCq=pB@~R=p zax?1CY^~ss+vor5Jq=*jpHCbVKQfKXedX_Sqm7X)3>?NJJX5&w&QHb+x49DhkOeB7VH z@t4-)o4#s?v)ta+=&IRfmDD%m3H%4sIrfW>Wwuo zR80j)g(UJ>`%er0O#zw^GDB?#-|>XNr9mMAb#-L{2f#R8p_N}D6|;WGO^@rMTB!(8 zXdg%*A(K3C7YCLv4Qv-(@^=8ZTRj8WsG69G`p@N9H-FCry-Hc#5)eNaVhA7iYQKDR zc=*g@A-Ua~L{IMW9bh1lafRMOD0wnn118LIpcJ45ijrDL&|+m9xU5@Jz+r?8==Rp{ zZ>YcrPzY9QK@BC0jci+{^PiIi0-qzinw?@|=ZiMHFk7eBTqfLcn)ht>Bf|vNM%(3`P0_KywIch&Uu)2>zZU^*~40M(RIYipT<* z(bXAD1}1bovbjBfu??Tkaa>I%Gx;V(L;}dQIOtt9N(`q9lYt$OkQxM?J2Gb!24`WWs4k3UgYv#C;Q zox$|#-%CMg9c?Yoa@r;FExpEo$A#z#OtVa+9JT3Tx}O0n#=Y}GVi^bjB#0V26HoDi zDn->&V4JbzI&HOg*$$fg#425^{TBUr9O$CszzdQwipWUSRIu#r7jPjKg1LLsJhKx? z{puopXGIW6YDWN79fJMOwQYKw$|;~18*`=bAXRavQK;}QL+t&~16WOYV#YNr>qf_y z%?&%*=-n@~;V8E=BzgVyM!W6fn>V7^#N$}COOS$|MJZ^*1Q3N=7TWIQC#dmV`6~~p zsXX+A73d}M%@aVeUW(0tE}IDmSkA?RvO%SLe%G$(NJPP!z0K{P)_ex}iIXC>=)wND zAVVnabcdZY$^u8~DjC8f4FjZn+zxLk!F*ip-J=vVoW-bStKmj@&JV=2H)wk8f0zI& z&*6Cvu_lF|5_zBC_eO=XivVO?W-A-6q+?VUA%vF)&4TN{P-0Wf)Eja&@V_*5Yl{ zpJNc|Exj&tA_2=LJKIx##P`ChEQAFW~UcU_|(9Foq@;wN8b2w)3q z5{)+E=VN^JWu&^K;OTap^ujj=`luU)g^q%R<;fPYnVCi@U1a1GC}EF+RZU*D0WENt>U<~I z`|yi8&w#^T0o>-G3!*R04i3zg`O!f-+&^&0uBa)jL0?}6qI~du-2f2eUC$#qK3=%53=|C9i(dXJYYC8q z6HLcBC5V<0+YVYXQDSOphcg@uL4RaoczYLscoTG#8AG1K(IzAB3<^`iei_Q7F8{En zOH_h>H4UT>FC#TnmmvP{*(i*U_WKNmd&1e60h-M((OHZ1Q|PmdF#%L*V8-k=Ijf+% zqRQJiaG7H)->x()w{z{?c1ce8xbqW}D^2`#{(~ReJ`5VCc3I@p=VM%r*q?ut$&jlr zE-dxGJ`%9BGU?Wwjbm#(r=9pud!wt|u(`T$$WSp5MjZhjVpI z6T}{$9nnepV)iLJVW8~nUH0ZVmIYYo(tym~ay1({p6>&d_qW;}a1f2$AcH`7JhBoK zJhO%83!>)HDlX2t(VmamdHNRRl^9f?q4r|A!{%ee#M_>_ z?!!6ZKTAmTnA|7kLPec%q=gZ*r%F_^HoRs2^Ww+Z#m0Rm_XW-zC^Ei{H{>DqNvyNu zRQn_kPgTRQO^sh0iFZTZQ-aqqJW~QLxy{oP>bJ_Wp6z;{{>60_1rXE~CzAUiN-|ci z3$aWcOS1z^kxk}Wj^bj}9UW}=x)*x(I3~dNROOmrg7hsu(>Mdq!&;=RLVmu-Fn1R#A5f=n#Bb^`rJ#7i3=NFa7=mr zm46{wzDS`;p}4GQ3mjJ+OZ}PjejT#G9MkdwY#?15)K-7Rt|^fetG}okBjDBq~r( z+d=8S`}=5y}`Bd&eGD>I}W1@BNh77#1oLB z)f+uepS0AJ$%?^TaSOZA0omE|8K~J@RG<~5y5Ku?i<-Cs5uE@H?5c4(lBV>71d9&E zRexz?!D&#g^#t1VnoxlR5bn#CdtnW9<7BdtCcF{|oGR#Ho586eZc063e;=~~5ko-k z-Ge4(&Cp8eFz!vy&Zg^;T;*15`@dn><%aIhBE>WqI&p475+x<%R*)r*Oq zuae0xD-yuAiMsx%-B=)sb?UY!NN3txPx+Jwa_aNq?Y`kISSI52!ipT@WwLw(*$A3aRnjGi$oesnfoLa4 z2yC<-*}Kq}_t+=3eSdSoi17M)eP-&)EWx*IOc}MvFvo>H@CC72&f{ignT2iaj&t#^ zHbxmOvCM8UnD?2hscH{C<|*fO89b`a#F5R-2Gzc0XK{48tB4&iy7$t~)50_xjK{2n z$WgAzSN^_a>G%cLm6z|l8-F3ds^DBU2J@~)obrC(jdyGc*tJp->6A~x03HVh7i%d@ z`9P@Hj3+GLzdJ>>fvNm2?-NkZqcB;>e1irL;4-jMTE1s<2!`*K%O7WP?>>Hj69m6h zo`mY^Yl~7^knKpBQZMolFzU>5R)9F5LEX%FUUM5kdb@yk4|Xnpw`-VOGp5EO}kb{m`2)q^kSirSFl+ z%~*$J_2ka`crlbI$0Wy$o)5g7@^GDNIU2A@O8LWOYYg*V7B7!;y;K!WqkJXb;k5Ew z=@FUh9%H@>&Fq=$i}r2eGvHyCfhDm=Q6>^MsREtFY;ZcvgZ={T-Fj{Ao zrgEHK{$6cJZ-(c~Cq1p?{fjo(e!j)%rT6LW)Q}U)(0tzRzAkuwn%X|}yI!e2lyy13 zN#pDr6R)uY0^LIUJ(A#{IrMLTFfBu8SEhhq+yg&c*fq${>Z6Y7JB@SAxjwulqgGR;qS)#OQGDUw47pS~ zJ9D@3mfT*RNSfW4))F?KV~Nu=(S}^g^_9k|i?t-iG!B85;j=X(EBE-dOTFV{qNX>r zFKB40B4L#3zFSoE+;D^5+mhzQez&U`?eT4K?Gx8wPIBrs=>aEEv!Ig9DD0G{ZB=!B zs7IgOBch$$4{GtLzAAYNChm_}UDOtTf10-82yI!C)x8U{y)nDrcZNyc-C8Xvp;Qhv z?djW!H?Pru7^ThRIqw!Fs!KS0)W&}<@tw|2eXNPHAoh7(oK1DP^nstO?xKJs*Sf)& zIqFSH3~PxcO0V@?&+N=t;gmQli_zF6jTgUjK}0*gf5)+g2(ddCdBjr;PBa&W+88wT z=wHhA>gSLi#+h3Ye3b(ytvq0Y^W|50Va>DU_LDCr$nA`-r#bXh^PTpvfTznY6`#>ZtLF)m6ii2U-o$Ak48}a`f^ulGg%}G2bsO@cU ze=$xz8CHBRRd@rh#I+Zll9=PC*HUUsu+?z~RhSn{Kk%QpWQexj^D+&!tkC1wdoMo9 z!l;D*&fAY32XxX$BWK9hs%Afz<2dz-*t03@dF)MmMB=_ee0;HG7SVcc+^BAfDI>4n z-+fMmTlw^%k`{iSK60W2njn@%KY7(ixOAUqB1{c?U%&UeJ)1d zXlue{dhRm7^J|4}=c0F4L?)0cA_bu5qNdVAd#fZA|D{g7t0bG*;Vx9|=qq>@-?^F1 zboZZS8D)yan0a349XB*14dPxr)8snK+nM(9v%f`e%eKo^N+jRsS!w$0Wc%7Y1?_)T znpdOy^-?M98I+BAqUQ~r&DVWisVF9Ywt7u8+b*`wN~hL4VzXgFyBoh2DlGEG={z@? zAA$%YJ*dz{1cu#p)@H4m)doE+(Y$jY#(L?s2*DlH1kM^$=O%LDZu+Z z9e0X=%YKOEk;Jbm^3sV8wRaAz7^enQouK0PDCD}>u`1$u(=HY{KPp)io)cYSd-ZOu z;|QbIe=qdBIehVB9*G=!1P;~`scsvpIpBbmKbFm3oM@8ymmhU(S+I_Q?8ndDvJR@W0Z`fSynf!=By4iM58q)B@G=0`ngFKsOX*^X2S2(wct|(m?%L=k=Y&o_5 z(p~mKPJxTZajJDw=9zguy`L)Y5(~-x-{NUFY9uvzqUBYc*|NLpc#*dm@lcHRQcvJq za;ATUoDsJ!*ArtOUTCXxikjTPZ&s6#Au1Q>V&bgVGHoba-$0XFT9=KmlY4gp8V{D_ zPCFFwpCt$gtd8eM2);X&nmi6JBC?!QZg|DO^w{tOM zRq~y!!Uri9V?*ux4%d{P zb~;)-v8mS)^ow6}oyUA2PBzBsGBJF6WVI(IZ4S)uxk6n*s1v7P-@ z-Zk&th{Xnrp3`sJQt+I+aP!7Apar9#iivYQ8gPB(r&AICWc7n>KawK}DEU*=OVsOZ zswY$KKQC8uknt!VnMvNc$?v#B)cSKg2SSO~3YT_Or|#J$&?*Z-@~LRfU8B$Dd!&im zM21@pF5kIWby%78XFTolgmOL~71Gwjb>L-QdsNK#V1y8fSYf?2sGxv$E!_{f4w*R&ekgP=kS_s zxJ=z>iIO{0>W;t0IGdX#*m5|un~kf87h8!A>%Sbq8lBL!O?-DHLd=SA(n03Ml|)rO zQ66S|Ufq?%8*RDu&XgBLIZhqSQteB)5s%4{@P)^#j&ZASsOrWF$_elDet%E$zTcr* zn8}`?CWRWmax=gFm2#U>@==ChVs9KA+DdkuD!i8(T0iao^@7;fSgK1y3HAkVf9q|p zvPnzUyf;svnIBg37_o$8&-TAlypp=LAv8h7k;E6i1I6PNo)Y zGbrLVD`J0RS8%6uUgp-Q2f1QkDzKQ(-l#?`Z?cV9v>`Nf-eKSUD9VONb`AlF9|O0< zD9uWXKOTF2tuUh{HZ6FPeR#`#CEkJXr#(9kLGuO{EmL|r=o;29 zRMtl#I?b-Q)-jL0GwO(rgf)j~3@zJ4fSwmqcd;WQ<6=qS`!MtAQin(UEnC;En+^E$ z&!I{nk1SSZ8qz~%k7RJhz~ihW2vjXxOw))*BZ6SKSV__xH&X!WD6iwiDjL8sSDRFxM}%DLCt8M#gTo!R{Ya)*>=E#^j9>SC4p&L4F3 z+3?x=oUpDW8*i?&`T6G*YbEG1+r6WoYunsoGo!3DTO|{}J3iujVC zSnit}dhEMJU#<8?P7!N3C?fjo3)q>qw+cgBQLt%jaqh{_j;pCTva&C)^vmp$&*U&m z;s*8Wp$D~4QWp8o;RF&B$ca;Y&k0xF69n)1Rh%%n1BVU6AeqNAfR>l(pVPU;6;K^9 z7_3WB_wlz(a#M^C%rM1-*XfyU?UF+cQw%1f@IdP9ec#R7F7UosQTlS^mss`gRD^UX zOIiJ3&ZVWYH1x~G@<^I1KC7V7C}N=aJF$}xe=@J^@RGEhF{{EvcnQlBn$YXJKw-Gl z42>Wd5F^H*(I+Edx92pEJ{vJ>LnnYax19^$pU=Br)%8v6TBe23Gx*a3+~m@I{*#!^ z^IdtuCRW6QRJ>8~-qWwkv^QqOi0ZxFUwxujMCRh_j2(|Od|fMhqFlL^%>xoR3MG}^ zuET1gfltxBv`{^4;jfKpzlWS~S5X~Iu?0;CV+Wv&NQ%Aih;c12m~rK+%UW*dWt_FL z+Vc2gjImEaQ!a*gaw?s(-%(8_>x4G$$GsiJHPBK7HHl$!i8l6E0jvrR72dO1haqjj zF0Z$FvgeP=eU!ZT4d&Gk?e7T@n%qiqFB<7Pp-gF8KTCm*YX5^|#Lz$=y=!eVV*n+1IVc&|nxUbiUnWwcZFZP#EAim^ ziFTsqf@Y3nGQPM5;4r?$^WOSwaKt2h-6Cby5`9^`1*PB_xo_dx8r;zww~%FFX2Ykz=AP?nR?sm@=E!pFoh1 z+3axZod1IMrp)!ld!u^Vvsc(=ZKs2J$G*ccJ&|v^9JMgJr#XKgwLcQ1b6 z=&aoT2VN$?RZ3VDH#=n#8)FGWG=p(#`cUA8WGm`67_b1I+medT8CekWuSA#q#>&i<0djjG% z!cB$qGwZZ5^w}U<8ncjc(k*AjA98P$^Z9w%ZOrOj`8gSX5Y`o~vm~)Saj*e?f40J~ zZMeB#IaB&B`vtMe2l3Adv<>^Nv~SL+3Q z7l3Tu{cp{^m08Tfjx45NU_*q*;Vgu->o)t|jH}4yu&}5@p&M2HbZY!svLgQ{1%c8o1Y9aoT^+^Eml+&lmC%XQ?j&?mjP8bxHXffBbsvgF>N}vx;>O6VvlE&bX=DrE_ z!vr{R6O7F>tvkoh6s=PUpZsu=_j#&Wr?1&LdFPzLLe6E+UGfQ40(wPhI;;gpAwIk$ z^~eJTVtN1mXgH|?x(lFd4C5TN?!`~d&J=19_D%xtJ-+}aLoP^*dZ9H@Z*ly21>eSF zC;lYc2&1VMRt$q(7|58Bn9}+pW6j=St%inB+Q4Ode-z`{5Ec2qRWj?wIR{lMoQ?DS zMmf5tY|YffD&srTtb8k84|`A3Plw}X3K>;Hm~}c;$XG%<@`$#ErexXQ0?j~f zc6JjwwySj41z3)oq|Qv4Wo9>$hs{6a)=Q8(hH>K)*C-7%%4hzT;cl^%h*1Gis~3H& zPJXg6$vQAKW+BHvJjOPECD4Aw?HY4*J(<6>dN*&<$P3gSMtwnAQMZ+@L{A`}En zI^rgax>Hia{_IVR$6ue_A_VzLn1!FWbPlqg5->OW4#$gC06Lr-R9gJc+`MD#QdolNNN3(w_ zKJ|t3w=A!(b`L`N*i-ugF2NN}Wo`r=R{xo|smtPMJjs|A4ikTNF=Br*vJ>=VO_mVA z@mtE$vrP>bsVy6C9rl}QfWh=h)*RN1aQU|+9Itf>hcB#g)M}}0k0agqxhVZ2L{wSL zDkDHG$?R%8p4W$>Wistyt7mWg&d%60%O|{R%jtdhobblqvN^UIkuD}K|H)J5NIi-XvT zWm4dmSDwGyc+Ho#hBEuDg73eF5l-xscaL+4C+LO`-!L=<#1t7RbMe6gnT6Rf0XnAn zv9Z5#pcu?Z>RQD`7b+)zlg66{2q?c)-b7%ZkHD*W)o8bZ0?ZmP_21|uzFq5dl$@3p zr%{vrQ^X5i%UeLE(iCF0hRh89=?23+Y&EaQE#slrExqf#pM;Lf^6`6W?N;WTTI)4d zbT7Zl4nb%H9JHQM%NG2j=eS~8XZ|`m!5w5@(guaZdg~33gn;iB#Z-7g3 zs>qF#1jJwPPw-3#fV4s(+UV0(Es4dCPxd8FsXr0C;*kJe9EHkHo*E9f{JDr%uL>Lg zA7d}=#1j*Y+slTO{}TUVPf@w|H2{GL(N63#AUOhTQHGH1pC3m$1Wotm1(+pWLh!c| z@uQfif2I^L%#&;Fd=fZ=O!#-7ZK1f{jhYYC)gbSk0Pi}DxjB(JR|g%=Ig#ewk?mF2 zo!G`Mt4U^P!F`&7Dil57`t|G0IMLLch}HPhZEcQgjZGMt+>xx&;+z|Hj@=k=<@#n1 z5%iuA3MUY-l$IJKUb6S!@O*qzVEO&ei4rrS_P4%pFZQE&Xs{u-IqV$za-u5<9t2EW zUKII}K{)tyKr`$w!rs{Je;x^@A%`C5&=iUEq^QUonM(AX|7uTP-XfOUN@?f%@7uQD z74fCAGRjk&Z&lRQcj(^Q-rH+wnPhcK6roDZ2eQK^jHtJ;IVSsxYW^a#@Ai> z<{o+-$--ZSYxi**lK3f%r>D-(>eXde%HNUNYv>$BIzTbkyn4_W&HHGWmZnM5q`!y8 zI~*I&rdnP3@Ao_bCRM^%zC~sABMii_$_~u2w;VJyY}A$O^E6aWv&tub|VY1FyAw05H;`V;x6^7JDjH3D;71&F%Vmp}^Kn!eBh)HqX*@=Zei z$Av<~LnpB*)vT@(k`et}Q(3aB%Vv2A%s}vau;YqbJ$CIt5f}xb6TuVox<_|b{d1ri zmX49fx-_5($#37@x$U|QtmBCxQ7weo^qcu~lrD|nQ6L7FW4HImnm5~~&F8RhO(E=g zY|Qd$-oBo2ms`1%Uzr!v!MCXv04h^m$t*KA0`f2t`jv9hR%36HM-U8;^_!PM(-pYV+W_a_sGY9yq<*6#%7^Hj55RPuue$1TkLy(pk(Dn4Ht!J(8<8O4#OEIt%UDA@C9f{tW&HH6 z?&%5JjFDOXwn^pR@0kwge-TucMZo-~S`!qUU6}OL)g)w8?LTLDFFEusTlA+X`5W6! z6x8Mj2=|flZNhtslK%SSYoMkR!;> z(-Q`%F9CQUpE_Fwzhve%v^BMPI>K*|!N`jo5wtW|DaFt7)Q_ftE1GA@5w0W?<3rnC ztMGr%6a~A6m=)SGX(+CPjx~U1beyMzMXzXy+3BYdp#j*WLLn> zLGBHhh9m71B;6e-c)Pc>y`&vR=dn-Z2OciTbFBlxz87<4*S_t{5EnCVtMjIsR5LpZ z-?Q%>nrYKnTBmme7P+7C-T@_lBa~JtM#7~{PAQkfhUfMqN!Nt zdR5m)9!>{qO3;uyaWwtp6!K*dqJkcva|)|YD)1lkQWvle&AUx)2-S1zJtgTRLgHpi zBlN*{Fe=0(k3YH|UPQ^^yJju^#P(ucpP`PzVQ+4+T)>1W)b0{4#eS{vav4nog{Q;b z05=*Di%)mzM#JN;Db{XvykvmK#R;j)Y{eW)1Ouv}U<1Jo5yhuFodCtdP$to@F}JTz zf!LwKm}BExrSy$RpS|K0jzxD%Q9uX{(8{v6>Lb-_zC3mPYaMpx+w3~Ylh>7O8K}6 z)(53sZR_1q&i!Xf$E8tdSkV7jCVyZ*uSEJ|yDZ+vp<8t73Lz;Pd#;PYSn}r?ra}NO z1pY*Zb4g#ZChJxaX>_205N&KGqEcMFN!67-DRle}kKGnz*sGkqcT?;2AQw1z8(97j zV{c6ObE_=fAXx(#6rXZja-Qbj!q%FYUZhhB01djgMFv>=C_!Le#hj1&IK1D zd;keJvkW+S6ORPjm@Aphg_u`q4DjXqA}}UFq1W=(96YBF_yN-p>g~D(o4?xG(n@MC z_aCbeWVyN>cz&wR+tQwOi)W|^-IwpcqoZb0R=$uOtQ}~*#`)VNxYO^DA%-xzFj$ia z$BRZ;4LG(mIi!=19K2idj8y=PF%o(oB~~keYdMK34h{q@795mLERTHw-4d`l7!@Zd z9d(XIIXBoaeZxQwaAiU^mCU|vck8h4$j$1!lKBOAg^~^OAq^?_CpiIrPF44n!kBK? zW#?xj=mv}%=2Zv5Z=?t0i3RkijNaNF+`lV&13KrIk2()X*`}sj*f2#G zj2Ndr%OA>v0}UlpZWD}7C_8Oa}(XJ#ZzTjdipu|04<@GI#TMCBF2yM zkn7~(qNd3}bJxi!bfntW)<9r&)G_?)S169n=Ik^|R{)2vXkAwbOEeQfe4bRVAH-bn z@OV3Q7US0m&tutNru|@u;4=sjZ*>R-y+IRW75P4&SN3D7GB}1-00Gnzy|D$Nd105C z<1iI6q@)cifQ5-lU46Gn`6)sqOHPp)DeKd=Ar@24uZtTA=~Z~FdFb{jh|KYl6+hls zJpC4;vh>|)bVxDh84uNK+EQSO4P$#MfNQ=-w7PNRCdpSO$L@Fr)@io1yd-8If^brS z3kV(m9*TgI+3ki6IMq3MWVjA{+n~h1`{5|$>lP9lF;(9|xS-*vm&p~|XwRk-^`5wt zhU8Uv6`{*YsKAKfIKeCYFZN#Ixxzk1lf80eF=Uxb9!Z##$NRQK!X&68WBXhA{CB=N76Mzb7kf3P+bqjY&d%8*%I86x!hKwZi>_5bvxZV!Q za-5X>qa5GU<@juar0tTF-JZi0pBDt-;V*KTLDo7`C(^k@U0t>&1%11{$u6-4{>^qC zR8U5@8rL8=eqpn0PoZxhY`9A*E7KA5L4gQ5c=ReeO|4?J{TG z(pZV=MQOs6HJst-!qHZtJC|W>TkbVCeyXGXcM+})U=-<4 zj1#RE3gBMXx)GLX}((*c(O8lL}RHzKP=)RL54AthgusktQZ3sJGO&#&9cK&lLl>jz*lr=VO z-Uy(lPCGNqu^i;`wG76g%@GK~O+dOb;0u{QUf4FFoDz0-!?e<3%0i`mF)nnfUcOZs zs44rc{4jBrZgW3TIpSKh%Vg;%w1D#12#65ZBDAR^=h6D_brU_*^$_6}jC_DW1XJas zH_!iwRV&SQCw*}ZTQ0}50_&8M;qLqz!Rmn?;2#8#%8sP`EM;UCH<9Bs4TbkoQt;@Z{^lq2JUku13O;7di8o<0qwa5~(FU?hKMtAOC4Fn&`Hq313 z7jEc|^x^xrAW+2CR7ef@~V0Qwk7LOld{BDtjlp$z5us&qv|8AKACs5{yy zRqaoT7)*dV*f;ixCCWh)u$yM&(?W4Cit z?%-)rc4;1p(zoFCiWZvizAYU;jV}HSTR#+`vf=~nSX1VgdgYi~z4hLMu0gCGf19gt z8tS6cH`f=Vku9$m2ut3?xx^3ZsG`6K#EN2E`1R%Wb^1at0vvOv)n6X``NN1C<1r5Q z(wb0x1#yW;05F@e_&4^I4;XjNY?Od}PgDstDV;}dp&rV8v1#PCnq+-wegPs{(9o6# z-#4i&o^|=Y1ygmnrreFqR?zWrK*6F_Xw5p*4p=i)PJs@szvR!ODvZm@`sN}vnxIi- zuk6atUs&r~S*k~e21p|{5wc3w8ehhW<%ALMg$0<1`j7-v%HrzxdFLu>Z*bQIf$*ip z<*A^cHT?h4*HEX4LdY}3E&lq>aQi{_s`sa#gQ9;Lb!YZL;q&%z{fj0#a_Ztz980q@ zm&J@-!a6B}vvoz~GgO5Y#XR6T@r#L$AcUzWu7A5bN=@h%cs#iJJ=@BRlFnP$MxUoRd_=bhkD7t}8bpMYSHv_KoE(Z(Eee3zZ| zYVYU_bPNnL5LHZtf6} z?2z>;v)iL6RO7_)P^)=28LZ$gYj}g1sJ+TbMXH&E!q8{g1)JB&lI=#6ZLa%~sj!|l7QM#jmhx$mL z?K)HsiLQ-YnB+%OSzn~WuE$UJ@xF%w&{EE%Cy#GHqP9*H!dsC0B~i1v+RJ?s#b1O= zrXHzEK^iax+$csR1s2CABEPkql-uVlcA{si0S|#dOSaso92vOoVC&xcr+r@3kWqLA*PvgH~sOB3Go|Un19^ z^J5}iJarG;l+D?+J7^O4&VL4S)R%}8wZ?UZ`qro%>I^dCSGkt-x@$6l1Riq}-pp*@ zRG^%8qHLZyl?6wSF6DZJQai9^l+4G5hhwdE(B>V-(dktUB*})Ec+|z^+aS6IQ*GLW z&KV};%&3JO3rYLad1xFK0$=AP{HU@v*kFgGBERe5aUCE!;QT-ejLaBKO@;YKpTtxU zbcqPax3`#zf>0|!z2@c9cqe{(1z_8P`aGsX*5#m!=|`)=v`aXCXY2k_So9rCdST?@Q>GN+tV_ z#M6K#poy4oe$b|Yd9g%HKctEo>$&6)NWA%1IIqA1vAIO`^wscCzu=(pfw-zPbc!j$ zNWvo{3o)4yZ;J*!7{>|!x?9fWv`iW#@mHDkDl7lwL#5I?B5oA~2Jf07g6@|fJ=9B( zbv9!{@{mk;)KUSCyQ6q)+k*mwyaft~z>y){RkS=h%?SNv@*VO0AyJ+p0|Oz&DqyZt z+H1U{(qEs)5flbKO}JWhs~xmr0Tb&o>azHO`X7BNeZa6#;BkupZ<;9Y#0^08H%$EE z4q7}P*cWRZs8Fr$RR85OqU0s)oG#hb$TK;M4ulRMhJ5g7yC$WqiQPOgZZBEucwz39 zDG8aD0ReDi{?X~5rPrCiLR6AsODOh2(Hg93Iok-C)GOh?_Ia%ktemkxs&YV-HBa~u8!0#dR6YKBw*uDIK2 z)ru$d(H4_rk(jdWQ$h!m9hSTMVedUfb(Lp>2w^Drb7gMWz^MQ@-L;`b=1){%cwFy#4c1`! zX`6VzM`YnWV7cG)C4oKl$w@f$8Pi|wQQd3H)5HlS104bmk1*KEQGNA&(X!C?l6D)YorS-b-efT#Gk7Xu_X%NL z^NA|qcf7oJiH}p^vGDy$im26=ZC(AjK<)86y$$KY(q7O48QEg=TKn4G3mFAj>AO-D zx^4ls{Ku(!zg3imtvA%~TWgf&Q+QkI6(7zCeb4qu&0;sYS3NS~iadO5T(Z{?Lald0 zyBvA0#qZ>KC|X$Hvg`IUj_f69x9I|hp5dL7`$mJ}^tRc(D4pZYg=5F=i1A<_ne(JP z8h&^{&jgyQX5j(Q`*K;fyk{x=Z3c0nel?=>59t~dD+{p^9Q66}CWM^|K?uQfaX-&u z_L2XKy|<34YLD85u~CmGDxe5r1Dg`1(*RMBPDuq(xawK zXqy#39$(pPet&tkOVk;(%!bSS+D8dT#3Ko93&JaNJ@$Em*3jwdT_iuEoK2=_80%+s zau8AnCnGbnny<-qpKcbx8CvC%vb0xaUGlxBE-1pVEFa z!Z|MSGs)_Uxv6tdl!g~Ac8R2l9GqHp0I92?TBq z-79Y;AaUmT8h1`9gRou*`y|Ol7xa(EzlCh9L!B~_{H<*qd8L-aV66QCiTiPq;LT}5 zancsF&hA5!WeYEUmkId)tvOz9(Vx_?Te{tU3c4G32{WxfV!da|V@T}2!EqI4 z_2=SlF~Q{3VpPu!EL*ga?mI*U%V)4QiM40eH8yfpjL|52MlGvn%6j=5K^UnrA(jdx zYI1-Y z98C5Ys3t|*t6z`(xoTB(oTr@_-h_~Q!pQd+sY!9;oVQThs=RX6a`a+-d9ld1*`)LE z9Z7oS4M{4(hT1ssa?mR39<0(?v8py?fO@ZECdELMW?eLbzFVB4 zx|KHmE;1QZoB7AnJ{3wCPcnrJvt(xVGVy&c63m(uvq9c#0|L94_y`w)WjF^JbZp4S z_7K@1=2kj$Z)qB+R5k0{E~LLwaUai%(rt!~rTJ@S(>e9YNm9U2yZwvLHWf+UE@u1+ zttzn5llQU)qN-qMKUjv=n!YD3+)sCoFEPi$Y%&< zbYDE=)KZcpNTnJDulU?BDCea~=<)B-N5E=m=wjA-ZA_I?si~ePrDV4y4cTDQIk61r z&8M$cw`RLkI*=UFS1AuVPYnu!ICpY_Q4=VVGXuQ_k7`m!Sj$Y8k=9J4Q(xEd+qm+# zCt_&I+byTm!4G+_zzc^xXM>}C1PBi?AtO8UkU4so~DTym33WE zL;-Vh(by%%uxDM^P9F3Bm2&XIctQ9&b?>4oYrx*2y0NbA5f;BOzE0nc4uZpjREYmg zw3%Ljd?N_T$Dr;Ql#mgY=^} zL27Z(sk)Kf;vuI}V9qL4pyCKcp@U0A!mho)2k2gDFIK&0=t;P!MOoG0A}ns4nZUEx zFAVa~);MmhC6Q+Idk}6Jjw(zr+S|_dR(L!-%O;!R9Z&;;&ud_-%lJSZKV=nV6+P99 zs9=SgZLWPY-E!AVd~38{39jHyO_nc7Dm1UIlV?*}Px>#nA{j3M_zCItKSvajQ}f`J zLxY)%Ta7f#o-PCeA~MF=Ydk%EH@9BeWHv2{{GvJnc1_9yJZUbzB2nei! z^Lj7~L=T8T_oF@+`y*Uk%sIA^vDRt!Z7I?8m@$LWP`9c7#>c?NkpDhS6LE#7dUEW9 zbnvq@1xVFao+Jyv>Sa428yH{e(T__0rK2zA`||%A>k)d5_-kF18U0 zk-0BO`uJwJj?8VIMZFGvHB4PvAhK{=bst}Z%)U#&i$g2^@s7`9=uPOk&+x3X;R-+%2ca00kn2 zC~tZ}oJ})FLAUO9a2DE2@za*|FH?`o4-P_ZB@5jh zGxh6_#jP}aAZ0768so)66)LWHwC<=a26Q?rd})w^7%wY}1II-?_WDWys4GQTk&?`I z@gP_YA}-wD+YTMENguO0fbIMO9Pd-9T*T?=;AR0^o>SQhtn+}hp|oE3-CF%e$%PkU z4Xh{7#Ss9q!)e1{c-7Z@!m_FU(c$w(H8fNkx=$k&(7qk>q(SKO$>5d(Ys^j^rnWm= zf4!b;N*p^b!#yMv5Lg#l!RBCHE{&ZP0a$I5eqVSyEY2f**S_HNaI(Am4!IbB2`=-u z;19=x#_aHTA}9GnEeHcoM+G;6^<%h(6bI}c_D*W1ZR&k}+&H$~2CjO{%JO2oFAPhc zzs1>CfJCBU7`yt-^2UgUjYQROD~HEZsd{z6@;68#r|{cBFOVrUDLVP_^dOYmm5T?l zk#?~C4}-ttMKWdd=CfFi8k+MiOT2^$fBdPF$BPTV7h(v}t_ITnT3s3A5 zDxA+*N0xq4-6%1Z1fx}Wg3m@^v^@jt`pt5U*wp3%tBWLJS?)ZL6RUk;w;w~Rgy1xO z=xqw6di8o(+R>T&SZdLAjZ$!?KJ4k2FC_R!?=!w-^D$51;j12M(-qurowmyt&R~;n zVZWoUFbTA^E)5jS)}SN$^mNhF6MgjE^*w57wNC2lu(2C?==+Xahi*^carr)Iy1q_z zPKVO%psKyHWD3344`>Vt=ClC4kMV}186ahn2wFZ^{-DR$gRmx|rL??en!{sy6-V2? zjY2{+ImNGg^BaVvk2$UU#vC%6=^#^^_gpYKVq*hLt{BWYO#6JFGFisDgw}alDBKIh zxwN0&UaGgd4n%1Fjz*xW$ykZ+N@_E{$G3ITOK0gwTD(!jQ5gb2klG}xnWm@A^(-sU zCzgcvvWdtbAROASe!OE?IXNa~*J8JcY#_P2#C4;Tr{x4^1>I?h$%=LJI?F?<^Ch<| z>xy@!9Z>bGxXm8t<$nvAlp$`7(=9q(3)UO2yTC)+chd3Uah5V;ry<3NO1~?5FVw0E zATuzN5g3edI&!G|2@)(Pa`|P9lsq>qWxF66r;J|gKJpMqh5JM+T%@yF z5;}@9e7ZMEkHlwU`#C<%Wjfh@#b~l-tat~M>Q^?F>0PG6&If-m?|R`faZ1a}xy|F# zK!al-v2I=H^xBNxgu$nsUIsv{hU)53IvwWnILpvkbTU~Nl1F(ha-Xqkb{Bi8nkAG- zReGbj@3VvVwTDBa@>MlMMXnwl{quO;7o97o?fM-&z3lab4xWuQ(i?@`jS&2{LDIK&__|$cHtt7q_0RN$dyX=HaGuC%?j? zu3i_Jd#W&)Z+twc*6BpCj6V1RmPL{eL$}E_D86>L;7!U#=5uG|RdOecymGhow0Eu8 zeLif+A+xcRYT9yllyd^p+p}HsHMgwp$Awc5_W@t%_5yTkw7EO>>Pis&N$BVE7wWos zJ;yZR;4<5k|48by#ZaSMQiJI)69`OJ`qU zmUq%%hhjjpo9416@Coyh|~Gm2C}QysC(McGH5=~_@Q7=ps~68_*ZNlpC2B*%XQd?O5%~|+p(r{ z=P(bWScb*cine=Cbzf*H>3Gi;K)h)HyT*u$N2B5;BIU%UxAL5E-qSqsO=*1>G|%k* zx(toe;y$%SB%2-nX|%Y>uX~@9es1Ej+Uxk7t!H#%pfO_&sHB-;;ZTgiZwoyocFz>N ze@KqB?(HTFKxaE^s78uzFGs0zyXEwG%@35SCrdxvA+IkzB$|58hsCqU^P8ll?FClF z!|JERwr8n@tNG+U5qK*>zsU~flZ2st()>84J^@Gl52uE@vsma#98bOD0*JD;Z45AN z`Pg8vM9O3YK<=h8?4^GF^$UkfedIEez34j)SX!QT4?WfmDOEmgndNE{KyDz-&FbZ}blUJe|O`x~twzN8=E?TPG*0s=_(}06K&g+jm)Vl}}E&wq_-~I)y zs%=G6uiq$h)PwqNp<^0@;;4< zNpZ*5t+O8Ew^OFML|1sgS~Z`%o~FW^rA!U{6E5gK-^XzwmpT8pQqWJZm6upjzJXn} zIc}SLriK@%-b04yP1f!|9F?RzGsZ&Q_1Z1953#>>_pyb+_%w8EC&QxGpwnH;|G3r z?$O->lLr8$WW)NLxlA`FZW|pwXucc*fEbZMWl4&b&aG#6cAko#p| z{nnWf#eNJx*?yhkWZC^D&Nwqy6QR<659`C0+EMBWDWs@@MWQe};h^||`$ik)6O5EJ zV|Ud`Sa4BxuFs(KX*9xO&lqra8O zw9pj&xZlh}PuVzhaf&uAdqWF-I~7@ETC&NsAXu~o6U)xd@SXhpDMh9I4&aM3tJZj&f<~gs|p=uib-N9SZQsL;^alfx|yHtOdXo@|j#`5N`)VcXlABkgH>MM03F6a<>JAGK z$la*rpAUemWn$YOdGS;0HtY z5!b~pawEf~LWh%*%QvONN$ENrp!t+td^`Vj*<$(2GKU0eGs29r?r)l`j#=z9e#4n6 zWvStxVbApg0RN*OBt-%#fJvo@N_>fbDSq}@gm>iSsb}94M%8sAPz(NWrx zbfWx$mf><1q}(dP13D}vyZt<)Cgj|CZZ=UQ(Hvo7I6R-bo4?!y9;qgZZ>rkqa?I*t zVw>vZG{x$u#vRZ_5^O>JULhGP7Tg;7bG&`Pu{S%a$;z?bGm3mnq9kc~Yd|GIb37lK zxb{QLqjy!a{Buq@n>joR_vf-5k!)zA-WlC>~c+ z0f=SzAV~1jWn^0~U}+&JS$%=r-~qkezzhTvL8831kEj`z$u-PO2duu8gnX{HsPf&=F zm~~R~rY(Lw=@9Cu5`4rq)sSZ>`FzUn;cjCgIH~N>TX`F*o%;ilHU0=2X2MM@tmmm! zWh?xMmb!-t4C0IVm9vQ*Jji5!FhN&VJ(n~z^oO` z{it)w52bpjD~NhR`zt>7IGxM%Iw*Aeho*0qBYu|8QyRTd@?&MS%;<-0eu5k2J+qPt{Vb_=zPq!-JXpm0 z>?FPjcFoJAs_pHy=t&xrwA}p_q5mT2OTaGYVjPmAd!^^trSaFPq2Gcv=)+3fuM*K$ z(gwg?0hy8Wl@_C^mW-SmqA8kPKH-mk0O2@0(6m5G4jZxsma79Gh8<~uBxyxSo2 zybE$Fj5<{KXFLhvmcyRpFH8L@DZh;Qv>2qF(rnbe*)!-PX6&^uEds}|O3O|Nm_g=R_44;W8R?GDu{G+3(kd&m+!ckKp{Lr? zOK%vO*fQ!6tEKpxiy($H7{-VBAB1Wzsr?jtxx4cdb<;UQ(}K{XaR?Oo03A+UY`@3H zxhv&pcjX`0R|)7$v3ukQ0aeSWOJ%e&a7J)jnO`fthg)rjCw*Y+c!%rHW$Wo^>~H4X zQGB*Pl~sHZ^9mBV9d$m&uZwo64%o!8nDPj;Z5>WX(HyyWA*fTWZx?h9#Vkgifw6pU z)UnhrK6?!6|A;!BmBedHst$*vn#K_!W{`O8iM5rohH~kckrvg#p3$21GFj)&`srmG z6w@h7^();fC=Y#jx?edn+kFqA{tnyQYsiQbso$M)j*xZ)`?C>d0JYKWC6rHUed-@D zYA^69pR$}t_HW(74-A;eKvy8d9HK0aH<`8QL?!HPgY?ojn=|b za=}{9to)H*PkwHCRy4(iNr!7^HA^Vh#bFiatKpSl_porg<<}oTynCFiUgjdxt0wq% zqL9DY$4eGzeNJ@3{w(Ef8AaXe@94guFa8M#WNWOOqH1}YaG^BW0(vGplw!9i?VN8| zQ11G#2=Ar3HGYN;<7a3}i8dKMu6v9WF5CWNm1XR}zfz9(qJL^|ww|6*^N9PN925XN zh(oN1&cu`D?fDMSHlS|9b_;8gdYO+L+qlzB!ISixVhL64*|Pv?Jm>D1y3gTsca@vs!xYR!{A-IXotnHaP-!Dq^%vXLGVr(Tx2hx7a`dGd1rIjYl^J#2OGFvbnON6o@5*6tbT&E>4PfSePAt)*1^!n8Iu$n!CM=1o#i zZs+erN$3a0hzb{~pd8 z$#fic6~-TTa@Mexhx#!d+eWF|2EFCIf2+VvE6jRntfYDu3Og zJSxUu-Idm@ULqY$V%y!x8SX=iHotm;O3-k8UiU!^>K9&QiCMChZGG5E=|vwrvjS}1 z{^S+o#18o+>U*B_Bji_?QP!jGSl!kk-i90XC9_UVOIV#&x+V8bpNWf^j>i&xhsK&$nu5W&B9%!4%pEjqx z47;GYPRBGqVKV@$4|-X8`t>gtN18w}yy@)2Q7Fa6vR4X#2Weyfxsvlb-J+@J=7*Ms zbgxovzn;(hy&W>6$sY0{iL%zp4Bf+hz7)U7=bbLMrJNf~x?QLnx(ruBbSzEj0I$j) zKOjCSX_M%03=$;+3DG{mASC*u8OVqTkE|ZRYRT{f~|PEN{@z2OS0nD z`BrdMZ<~re2yGaO52aLNmg4VV+)Xdtkv2fp6hYr_ol6oXi(F(76tMIw3-z?h&(PZ= zs2j2LjnUeCWCw4@Nu4ITs(oj}`1UKX_CV!TFJL~^>$7J)p#DY_lw}l`GSkuf8Cyw{ zRP2_@Hmr{Fak&6rDL)(ZrY}=tl;yIh(mmngL+z?Hdg=3HQUz&pOB-u+KhG6prFQ!`yYv0Nr>AFMTE!A+?h>_zNrsSl!G+MqD*$p$ik!1}lSlT7=Vlj|WT_H#GIaiL}!lrA8x@D6WD!tyvUG7Br(u2CfvLlOcGcCXoZg@9UuF8A4|QBy*;h=mLvRcr7bmI?;5iO z)VMFhf>j5ww9^-QuSTddWC zFMx1LgD%o|1zSHgIg*r@J(KDBPJG!bxX;onQfVZ#Tt*_x-|?{BlkSZd7iWFwqnTbE zz}~-8^4{MgLDy2yr+f^hm=tDIrZZ7{&Gh*@ERfN+OEGJjW>O-ZkV^2_rTk(Hrf+yo z%j$Q{SBf|Pf0G{A&Sqc*~h$KrUBg~8lwR7m?1cM*5@e& zs`87-52q^lWawsIa@TOQj1*3KS>BrRS|>Ul>df1dNFiMp$@f7a<)xAPE``e)O2>9s z>V5;tuB93CzMgTu$Mr5N21NSbqt#(0YK(v;Y7nFr9|6F=q!ek|May13mGQGq`$a#w zSlNe&T{O%~L#o9|3)&gQRE$>VBvkWnT|bLuMCfb`gQWjPO`F!d46gkCx z@*o`$ftkj6cwNx@sKR1Wgl6JBlk#j_G*jhv#0+RgwB;uO-Xrs|M= z``a0%%SkGS2{M;$uLtS-e-Kp8m?UZ!+;}!<%J3p-?_?Mp)URl%`lyjb|ufJrzm-nxSQF43l{o=LSgRJtJ!!n!8n!eGqxrQ>$14h`{wvw03*g@Smx{WOTkh_;|Pp+k9hpmiQ zu0Cjcjp)0S5i@9j98zIA&^ng9yTT@ej-FoBM@~-v)}2((AM$kDee_zh#KfEUis*^i zv!DqT<OIX_gnt(Y1>jh@e{Vy%Ei6+(P^PNg@kd)Ygwm=@R8NY z=$A#1PuOt%Fym-@tOd~z;ErAKZ65axvM6Jq21hThPQ#t1e?omBgVO0c% z=JqR0j}MG~J2!GhTscZ@X6`rZqv~>E!w(G1DXR`JMt4WLj0BeX9n%UDP2K2`EZCj& zBalPg_nyJ|-G|eeTo0s3CVBAKXZS>|S1NEVxE1QgEE88s^;MpqS*Acq@WZY&2EPaZ zr~UdfmMohtX&UZ6e(QXu2y?1X7nDW~0Q-Ita2+Xy$4i+F_4EPFSAN~n54n~-R^kl_ zZu?UPJ;C}^neh$}Wy0V^r32pnH^sAvHE|rJd=oGbtCGq`w`2do2>_U4EI;C-J!Y zW8@~MD32R&vhQ~8$-VXPF!r2z!0Dp7*~IcizJcE@5F32cE6OUh{JO8DOpTAgPNnzN zU|5rlj*GE-TK5HA=Wn{Kw7M^7)98nvziRQFk3N6)VM}zGj%F*gPShfh`=wFw0aJ%+ zukDa5mH~95Uy;k}&+8LZ;c~8bqN0pBgJV}aA^XbVY(0}&pYn-GM<_^-LqRHcM2o~? z>1}L6(#6S}`Luuzj9J-Jk*F;2$A6B&qEh@>8<=MPsEVi#^gvG|gJdG#Ejtf(0R7|)M}o1Lnb~)5-p#9@JMi$A>;wP(|030f zbfSG7(6xGkf^uZYfXqAP9IzpzI8)6`Og{DuL4&WN6%2c*OEU8G`rr~kuR!<`NYs|^ z!mOvt9GEjWJJSuP6|qmRcGRgHex>fUo^_8E5Ed#pC&Q0{+RL+2+H!X+5Q}yI`!n#~$oB(A@6zQtlOfw59#IV?|$i?@D=PW%2Z{H{pN65hl{v@@E6>Wp`VslZi8@Cv@!n8V9B(ukd4m zND=O2?%YZ-H!F8y#hkGAjy4Cd7@4FP>Bx5B;hCLPzOWJ&@W51_BKtglD@E@$jc0d9 z>k9Epx$5cnb~&v5ryTr-eJgdRD`IL~x zr6#8d_E{ina2breOA#F30(a7}0jj0|BoO%njUp2ur#P^VifZ>q20rPvuzOuRdoJ`d zh)_|7A{RT4f)BYo^bpDhA%GgaUI+XW96Ch=MF+QP8a$=HUd};oii~DJGMWOVi*2~d z1W1sr+?ffyu!N5xy(7jNfDu0eKazEp38?l(Gq%ah zC!o0%g;7vHzP=-pgb!^-$yp+^$Y}^e><-c<84%B_nrZx+WDUp4Oo*_Ty^nrJ^pF$| zK2wzW@HGyyeBiZ)(23y*<%U!_fql(VX zv)7ApAgNO^2)W{cvYA9=&1wXPY;>W5mV1p~^y(Yko(%K z?r1>3Um|%JEfvt1fC!qj5cI)P4a4cM(kM5E!EDhg+V;IN$>*d4PrkVU;HKFr;L~J6 z41lo_i{AY}$J3TgB@zL>| zvu^>x)GpyIj3YHl_4C-nm@RUUQ}i4zQY&glB;cL^7tnA>trKMOi#HtNdV3MSew3=C7?+r(n$KuqNATF8V z6fGk7QikBHKOJ*uG)V%ZF+9K&^&O;_vp*c_1(1N|n;$2%;*_mh3+iavRfLpY(km=^ z>@C;oKgbG6^Vxs>^S@gE`+uP%`M*!;{|;&Rf8U4y?e}2_Hcxo&&vcE4SKX2#vdhMD zewk`ChBa{-q{OFxOIR*lbhR^*G)D;>=VRzhN)HMxLz%tT z5>XMI0@j(z@rl!pf8I$lHMOmLS=PYTjzxQj2O;R85R1vj&lPB|Ujn#R9~;X=Ok3|t zqGeA&dnf8|=f_d+g=FRLpM6%3R>xRqkfR95tZ+ z=Veyka;C*VUiB-K3Lj^2;wPHGHBn_F*1U+S)tqo+1A_sp5<@_cWzcshA4S2+@i6%{ z7X1-Op0y=z>$EzquO2b|$1aPcA0Q>`UySuvPwLyI0ZgpP<%j!EH-N!X7&b51w}c|U zD-*ExSn$orws!%ZfHV+D9RL>b?lWUq&AQGofMwA&phVBRKnIyyRjt<={QpK8Bz>+b zx+h83FR&B%#gp@qda4EaHA$)o!#54`L5AA^DRO(SH!m>9u?n!UU%3DK^gqg5Ig0IL zc4`?pG?AGLm0kBT?Cq!hiZeEKzAd7so~hNLUaf@dXnr1aaMd*HO7ovD)-v(3f|~tG ztEg*GD>df2@7}(qcT#P6`C~;I=0hi*%M9I4pXKFsRpEJJVj_`B$h0kU3hW1%o0^(> zRcypJCA`IDhw2VGE8t5O`K5wvh1~@BIlo?NeB^w}`-E;=7&9gMSI$`ZU5i&g!fFc& ziAE=vyk37P3jNhb>)A&dY#4B#b>))jCsFBYQKYpAdlqKywPlfUK~h`IT7+bcdZ2!K+`fjt0J> z8jO*gTt?X!R6NP4>Db!n+6kp5x@vU3q(tX}g=u5vIBuBjZDudM`sRV{nF+~q&r-d4 zY-B~|udC~MbKlUoR)2y01z=7o$^ils@R__M2Xt^4B58t~43EfhlXS}<$PRzawq`5i z45JpQ(BmBo<)t|^Q#RG-=H`xt*drqP83Iy%=A8rJ{|nmR$LRly>AP~+iSV6}X-k4P z!{<YG$Ag-~@s*WwcQ@~lL`M@eLQy<_{=BS--s(rFUERv3j6DRK zp~Uz&PEE76#Q_01wu*QV#K&PWIS_7p0jmA=s>@qozr4DokkzsL z|2MB&i6~qodle7svyjLwHLZj}(M4Ci|TIC@*wO4aRwZHmm?Zs@$B z-&N$iiFfTMy?$?)U-I6EwtV(89b8|JQmp1$^fMX#r8fAi*iSwAiKigabe$SO6qMYJRN&P_q6-%>Gb74)eLdos-|8790kyyc}J7U$Fm^&3s!` zR`+bON}iI$d{0kLA=6Hfr-i8Jn1$urjRv=68S{$%b(IXx^+~xA6Xc^CK+zO}7JXbG z_pa>M$TkTAY%$Dcs$L=XMtG`S($#$3cj9F0u?vC~5cmx6IZ5!niZ;gGP9|!YDBIxr#M7j)WSIjZ%B)KDRSU8@1595Vd9 z&uo4!&&ET_dG@a*e$q8A0a}^;6B8I;nR649sM*wG(498RsEL4HpZu@ZklQmKHiUwc ze^3DDw5FDT?a(vyN#=sRuX1+ve8}K*m|vc{5BXoMT_^fn>R0(6?>x5p^T@5thFtQq z-#aHKV8=vXHN)^^vR6IR;4zS9 zUN5bJVq|hUY{P{o){d`O{e=r;h+L4SL6nJaOj1q`3J=+%+_eS0c9$@jueP+_cCaFF$}`i-@v~EC2C;Uz8NDKDl~)?foY4 z39n&25J9Z>R0KqypHdyc3^-Q1&>C2tiXmD9U}>w3Zluy21wYPtk0mE0T#Rs8FkAp?-ej>L?89<@ zTN{=;sJ~1hw@Dbx^hy3Ny;;CJjMk3GfIT!eRqHiR@%!_I#5=GqEnN+yektEDXBb0+>iwK|jSK;83+JQy*+ zb<-J@?vi^E)T4CA1XDrgK@ zJ3bdDJTJlE>`ih5i9CC^0XL=L=9HTb&ZyQ+QO}aZ+N%v(!wsMURIaREyFkH#5F(K) zCW|J0C{k`fYB5BPtRU@T5alDaO40YAu$6`4(prLYwP+(B3i9otb0ZNKF6`KxD}w zxVjqLp2*6#Kqw}eY;QSu`w%IC2BoJo(#VG3q6fo#k(v%He7-S{P+z(J*ai#)`3S2A zC|TNSu?@xfMqnp^R(cKqCQRzsVyM7+TpfUG$$tkJyV15-@T&b~!bnn+7yopj1>Kwx zyln{ft~L;b6M^9waW``HgUI@f-4w6Ey{~p%`>*MyQ+`3PBXP~FMHsSb=DUiQFU>+p z91lJQG0;6$715EGfBaJz1?u3kNScD8W$|WHqJ;0ke`hw(+96>PU{;aU__tKxswC}~ zDd1Pd;c4GAGHOavRtK&pX-kFPh(b%M*5s*|g7SO~E};WG$-kwKJXsP6fBSRt$5*x($V2M8|v^&>=_ zaYLNwf$;dP7o@p<0k}H|0NO!>cLpp>53BzBp@2@+VGg(}y_NmgRw$qYpWI$+y);Tj0xZ@a+UQhfI5kl3_bF62I3I3Y zJVFhkv#`0w!C)t)&1cpg@n=FMhUnjj{GtUg9U#J{qY?ChGp8*~nDN(&?n-4A}EE^(Zz%2hCn`tIt znuZm6M1x4V!#$yQ%KC9EPW~DM>7OK89O1B}1|%3Gkfvb%*G_y7PMMiCv+f*eoY`O= z&LG0cY?D31tKSNra>d5gf02FMzV0vJ=+o}MCD?5LsUH|MwPJ89DY(-6BdzK>4ST@K zD>Xe(Vc=^!?fzdwj^Xcan?&ytVO>80GB0m!1QD__v@YR!&$D(e(i*VmAh{XMHYb<( z|4e8N9+|F1?BMLp+bu}X#N2p~vC}B<^Q6FW;9`nKjtuslNO&LGY@-t*Sc**upkRk| zy(`>Sx7%2P}0l z8j-9>A$gYkchPc0Em5z+=atqhDjT$Y4)CV_Z-ZLinv4iBF9K6pWGrBwG6lXgalmAc!-Nhl-t%W6YZW+YgTWa`prvGVVTu$SabhTaw=qdkCI`HdAXOSKd^FE+xxMj->j0LO3s z)wc*tTPO2e+>6@YA%AY|1QOEx4Mjp=hsU@d%wyWNv|>bBn(#-YM-az48JxTZriof@ z;Pl=A(5;`t^pGFq3t>xbP>_VIKn2oY^4Cr_55*b;j9}CyKsm$EG`9fDtO3yrZRj6Q zp^_&HHs{8_WnPqUi#!bnPz^xWkqLaySP|!i7{I#u!5XE&Dh!G^K``auB2Bx46?qx8 z^@{v~FoekgJSrMMK;aLd`s>D6sQ}WzFR<5-ej&0}Wl&#-4Zs3*Z`8%~FbLvQv( zxF!5@!%$!vPSvhfDsFv|G0b<5TxBkuvavP%b33k?!K6L2Q9&xU+zM_9JUnu z{QUA$ke?SkJd=!|LQQ1KwReBS8WQ8UE7#KBGuH9|S-|P?q63K`q)CHVogs;O0mMxc z#=uiobuj~LTA8C49$rNFPXG)b74;Ut#%A)RQ~-Ncs$v24?-!?o9Mbmwbw8`cy`Yr$ zRB(9%rE~*2LZel(ddn3waRKH@7}n~Ifrt)}22=q{hXv}5gmT*>XN)0o)cPWYvJo!+ z{7Mjfx;9SZTUbiw99&`SO6dOy+fjm9PD-=1R=~(J0h@tGDq6Np{GZQOLJ+K*)3@$L zPMt5$q=J$15QhN-2MP-eEkrc!Mbdi=jzmfv06(&z%nv6*Vo;fyW!%EfoejHnzrGgn zo3gVh@Q}PGf>v*RohEF2iRn1gqS#7h;}!Ad#J0=fLU|LGT4$wVmp;BFuq++w%G%XYg@ znt4mE!Hap??7@qcO!3BM{L@++^(Xu6WuAHUxtJ1Ye9q5Xuu2kdXm4Xv44T920<$Z8 z%rCV6;X^Ojr?0godB_;=YP8c@;>kq=k2*u2h~ikB{tEa;w$aXi zJNe1uC8RYB1%-5rwxcNyt02O5t&oQ+U~&SIaao+y)H_KUvIm4**eQG`xU4WsjduC# zNLy0+DguC%%`*t5vGM}&TO^_ij;VRYpJm=9;unJRDoD;{Xdg~8dPW{xBdjDL?+&01 zDPlx~IL}*^y%U137DVrP%gY~HU|rj<{1pw-z% z*sFj9c#JY4ljpR)AYlt<*k>T;KYhg}ezF0w9_y>k*wX;YmST@1lEZ9191r+bfl2D! zzb%woliVfDHp9(q(_>wtNO`mO%zkfV17R!9DigfLdK0II^bnN?yGX~of4j7|CQUu_ zlXTUy0i5YQ69Eq+$-o5I=&Ifs%&Sk_nf=Dk$l}w1eU4LN*>4J?VG=F3k&>S2T47&D z7oVU3meH69Tb)$&*7=;IoR5GA;wLuXbo$InarJm^ClUYx0mIFDlNQ7JC~*PkE)k(Z z3RWIrtQ z6IllJQDxPSkpBXP;Mh zZo9Gw4YBDyz_TwV@@7Wc;~^7_g$sEE%uiqbJ8LK034-xD(UtwA)FR(@nC?9n;8&IX z@vwpe!2Ot`_iuRIMJO8(sx2shCOwYaWqHM4#zl(5IP=csJ4~05hCCqQH@ANz{b2DD zfGOb=bg1KSc;2a}M1UB=15oFl5AC!DY+Y{%Kk@^s44>atSEk$oS-eV$I;m?4Uc^R* zZ|`mOBi4>W#x#h-W@?6Tl&k7ykuZz5TVp%cX5mJ97{a!WgGNaa8M3BWsC$n{p=odf zwEljLt%X|&Ws}y z(v0nnkdbj6ft18x0ib0YNc>}wg#r1ILrO6aBet!65)3=pz0!RE6TGLpLG}jD8dVOOvg)W%UPS+YZSi>VBPI~4{nj(;2!ejx?C z^GWS)P;sdb!EfM<14NH!I ziR9G-xNVYyhaDxZOF5NE zCSg&j*ee8|14)dWIBmKO){Fu)l@uRP&?|URvl%(b0^UYEx1CL?vU+Wu2D`%-Au;;j z?G(MtrjdOaOOBP0us<6n&#eAhGbf^8|HhUY8ptviuN_0p%@6hj$XKLdmgeKfd~ZCF@h+SWU2L#vt+n)hiFIRRL&raYOcI=JMBrRCn)V z02#^ldT{8!`;EY^{O^9_|Dk>(3ATq;0Hk>@0EtU{oeav8adNzn zYYhMc*c+m~9x+GJ&a3leYF%$$|st zcmL{Qz=m}ij7~HVDH;UNerYu2Kp^TLySWm?IxKr_pumX7hA^NYIOUfI4b^dw4xzVY zEt+h1f3k^>)Tj=%uDJwm&sPxpq%dg%F9XTxzpmfVyZxA71bw1Kr+oZUTLif}Lz_`8_($5`dzZ)Xz z0xA0kS8H8Bc4Wf@ZjFssM`N zv)O+&L>8bT7=+PIh6%oFU;DlKO4r&yBA5QQBUJj6t$~w~CTn>S8QK5$f1r~5t5Q?j zRp3hOPNXY|jy_4Ve}RJ_YP2oZ;4B!*NqswuX0i@B}8; zBD#X(*oQT5VlN2MynZXM)rE2O&C!y?%@Ix$moUGe<`T-yb1(!gA{lZ4KdC4k@6 zbX)jv&~=S1=HdJcYt_G6-BydF8<1BI0z^>tMjCKXDZ~}jp{+zjAjJkzP$0iD*^abw zLU-BTIx`w(V2>6E0bfE9@D>2^p~Vo<-m|92*?tUmP8dNVdeZ_;nJ1oE!P2a$1rA3I z(qs}b5ddP}B~)r-3wv?Xsr)RrG_Y@z5R*qdI&5m4YFK8rcU0jH3)%X9X4NunnpIw!FeLb6Cz?xA1_ zcZKZV+m%hz(CGuK;zSQZW`9$H#zEktB-0i;sbc zpxq#PYP5GiwM@ciz`n&IyL}1jS~SUzDbMbT@R#cSChCB6b55p1CR844v^VW#oNg{0v zqsIT=NkUF5lcf~})!+G7`&Ip{$kRSZ_h917zury!;FDjni4Qy7www1h#lBDFa#@;F zZ%K4Ggg8^!Fzb1;P-y-)=1L*%UoZkB zC@gVkujiCKyIt0JE6bT<^?h6t>qC>&zyY4rY(b(BY>$dP6pnCpC#>Lly=b9u!El0v zARG~`-ZGC=om+qW5BA- zg@k}OC|xi?x*%10QJPdEO%R2Fp*QK$_qur=XFt20>wMTB&UKxaPcxvA{BxJJer=&# zWLKAspD%R%{t?(VQ7*UP2xqAn?mu=LAIWBPKB!pw!oO z?#RPiW`;m~UdK%7QSG0f86D>(_`Q@M1#?FhhIr-IzJBw6e;5bh<%OL)6jWBd@PWhY z`hx;E8JY`e4Ww8?9KZ2u@8WnnOlzUlSPMQ#g+BeV2@uZU5d5J`?hflRigD7fy$_Rpmd(DSGA zKZm>MRr6Z`5!gp|4~E#*ALL6{D08f|6hDo=xjfwR0K#L z2=;6F%R!&6j-atLF;oTaNEF~w>i+zXu=3K;U3yP0mjJ5x39gP&yK7U>v+BxJjf2mn zrP>6bZLWczQh*4xU3%6T{9EpSeqo#K&%YaZuM4t3r9nuJ#6mlKFfxolEn%BimV%Us zVhF%Of)tdP$>)Rr_nM-!1tUUIM5xBr50mBhySdDsFvJ1G7Y+k1eqa9yu_m%I-Fe`3 z36y&1{)uB1OZJ@v@!L*42_>X_Qwg%xd&7mjlX(w9*90`wts~c_32Djm0gh{4jNXw2 zz+XdBQP<^E@Wky*KVL0IRP}ag2~3AqtduIWg8NLT+M%OxNY)PuwEF1un>u)7EChfn+qC&Kz74N-Sw7ENg=JKy$aYW127R>9&L?ZSb!z1ABQv9-F})g@+&nNJbKXGJ*LrI5k1NC_bjg3(X#LxBo zT>rY{{dy<3Q28=!V{J&hr30{wE4-#<7YJd~dc)<6_Y)RD70X@T#WOgOYT6@M5jd-Q( zHei4_5Qsi+;DUN=$!ve5`9qIyyciS!#(MTEP~vz0C`KFva@u|Zw9U}*$j{C)z~u<6 z(o5k=VhP-hg z_(sv^9Ka!(cdO}_qj5VEucHg8QJCyPG01)S*H>e(*u-__V~|Z_4=I#UWQ=ltMf&S)if9 z-_PxF%H(PFFC*_zYmo9dR?hx%2?|9*+OfqdhToD9g^K)_>H%{d!xgZ*k5rz9 z`Wh*s8iG7hS2gIg(5O@fzcs+$93j8`{Lx6TeA4}pD*6> zl`0UU^$aiZ{imE+25YXS1Me-~rBMvg-s6BKM^DD9 z-R>)rv-_C12&)M}CL?JLg`nu!QJaFxt9fbk=Wki{;CujH%?!jXJ619vK3mOZ$B;D( z2@bMhc4qSEUci(fcT(sTd;-ddxXRM_2V3LRN=}U>qw8k7h1Af8l5<7}cKUAQ85oCf z039?c4oPRdVU$igAWmu*|0xvce#P*_Im|(~oxJ1FK@9$Ayf3m9Ah7`&?T9YLM*P=@ zEhoQ7I_1-FDcj>~)GvQQ8}{d5#r+#$W7yl!;1_`_=~(mTe-8$3;frFQOFd^hqL4WQ389kU@>KrU)`LB?<%QIu$nj*C6*v#a zd?9>*e6Ik3am!NwGMoD^Q6d7uyzcNfKDMI0iD=oZXbfK{`wxiBuA<(u*g!94mLPgy zc-~}{j3BiC`ETlPnH~!=xoZK3j(2uHSmmDHz6hRNi>_yzDGqPW=4@?rSykz!rFl74 zK0ZHROvp^%`(3Lpslg6;xi(gyKutNrtn~Y{SU4s}Y@n7KS(8O#Qs22yx|By-x6o&7 zrvnz*&uF{aJ>V>&ONsh+EVr%07`Fd~5;X+!TGY8&7No72c8=HCra;YtAQjyMHyQ&v z{>}u2MxGYl=-zET1c6JT!6j&}WJi?16i_7R5FL#&58K_Ka;gBw#NE(r<;+06tP zO4s7GH8mKAQVB+X?@xC~)&6Of>d#WY@2`K0UCrI^%h>q6Xgpd+56HHC#ro<)doBt*HZ7K4LlJFzXjt6)%5< zOW=7V8oq0DihbA-0KAqaFb1T`Fm!`RF_Kw%EOCdlgk>lEx_Bf82IQT*fU1}AC=}Vkd`$Ib`6{&a z{qatWA>5lP{#^i$x9>zOWI0`mXJWg&-tYrGczA=Ud)a)X~6%4I$E@~#uWxb{#Gwq~O%G7b9KXZR-MnAlsk z3G)~}XsRJoAM?TV2~^d>2%9TN-nivyt%#bdPiR<0VV_HrxAQD=C!w1SO}T8G4n0Lh z(^JP$uo{|C(2m~4TQT?)n|0^Bbt1VZyPgG4Kt4k&eu)fGgxe~9ljxZGB8cDIv1I~D z(UM?pI2HDz6)usI`FpH?a8z6D^qZ)O1L)Lvc3b4%N9UV?r`2gS${<8K32$}d2ORk^ z!%IkKhq8q=z5!DNuG?m+q6G@oAn&q=&DBz^#u~>~eG68Co%+^a5Y6w-d>c(IMZRg5 zJ2aHQlPB&z)29Tev*ZpP(L~DFClJUwNBZIyE%z^Hm}|i*!FU>Xa4=J0}fT$t1H3{vEVXLb$=XY z(zp)in}_F&7+0!b zg}u^fD1x$7Kb!!I9r%l{^x~C=uO~3wB~6{3<7)3g<}R;tu)XHYyJE(Ue&ebn0fVFd z`pvt2tE&hh&wdN)xvt4=K=c#-zMhJXz$$7Kb5=tKd(TVomi?%#S#C)~(<{CBxWLl5 zvAqVvOQMi%HZTHy9yNHp4>Z1B2}YjC7>}BGuS%^wDX8SW=){Hj@v}rb6h+CpujLVs zEJzxmRiRNaS#Ll`oPt~!J1#Lar@jO%F)rUPST6?Kw_rXFg9x>q#vUl!o)aP>hVvM^W1p^H2V4Wk}#{2r!&0oZz%H?SLaqHLnb z&Xu2J#7DsF9S#AB>EsQKl7y_Rp=b4Ot|a*7kKZf_4$+ia2rM;lGe+p{vfOd4!ZJS#Mrr(Bf(y86suYSa( z@A5owIQeOYeR{=dARgxZh_?)KZZFZL#L#D1YCHxffx?e}f^K#Hq)YMsjHGlZs_Md# z_;fT`+YRcePF|gZ?GI4Mz`uNcQmiZ-yJXQ+i;>|U`t-o^nxe_oBR}qi_oO9Dnqf~; z?jC#KHz5OfM_Js78}D>>X>_7cilyFU%;&7awrH-}?F=~Hku~Eas69=HQxlH|S zm)_DF@V^XKmS|O-yO(#Bw{zrUSZ#*BX7eH`=?l+<@qut6MsGS z>I|sDr(($%SWo1buv7mpf8g@c)4#2sUPCzLs{czCixn z&SCAz3AW^>p;d!q4OO0o2?%kmR5$g*XGE%lkJQAX zay&V9r{PDYp;ozg%T)MU$U|ztMyCys3)*_YmFnD9jSt_v1wc(k_dlPU!O^N;&fh{q z#E~u4&lmaY;hs`KYW3Awut=VLEaZ0=S-eqCbQv}3-Y~|@wih^h*Q$1ifrtY_-#-cY z*FYPmCg9Q_yjs4L11)|Es)dnwyK)wWI-Z3mb`F{A(IM52bgT@CNO^3M+~ETg3l}^& zOLTJK7Pu|UMbx7NaLJh#^g9=8JST>Hf{_ytwVo@}Up$|8 z5BWf+I^F1xhNgRYL7O*Rc@45mQ7l8+TpnC$jb&s62vx#Lvh`A9A1 z?`?O(K^9k@3PihW{zZ(6ewp*jhn(r|@yO2rmLQ1(+$Rnpr6V(KpCc!`9Q6Duc#T(ok&bt-7M(cH^t` zu=$3N4`8*ZD2WSBONR?YcCR6ff3mWNjujFA1%4jLCyzY(=;A=|!p61(tV&a;0T;H# z=-)c@8W#lLW63t&_W!v|TO#R><|2=K&us9TtyX##poLx&MLofZ@eLmAFv=Z1cGcJB z8-~X1o?V3kJ6%0zYI=0y#6Fod$W@5no>=Ia{_^%BXsWEY5Kpn-idcN|B#z~Z`MLva znl}HRpXI~n&%%EGH(g`M|8HeE|3^WR(T?q`?ijq-IKe7VD)kB(q|1cB zE_U5t4)ecuD$;pK!T>;35=cT)5F!)0l9F58Z>;30Gk_g|-Kb z!yYz5Be2f_#cab9aD%kD7n}C*)6wx({)gH^=05_EGHl?l|NJ`T^na0(`G5OTzvd(E zTsKZJCr5$WgN(4=5IhmH=_k4uWW;t;x`{-n1RJ(Q8Bk&({8uMg$3N9E2IlE!)cZ5cE_52}Iv!aN7Ik`Z@>z zTz!s_9YGZ`4mhJHcVoc1g%{1^l6w6Ouy>Qod0H&;BehGFzH89OUAexq*Fo;2i%J9J zzk@bEe=#p%QxY}X%2|BH?>0*NH;+$)X2Bk+cXF{C zOai%Ftfdz@z|nkZ6!BK~jXjYO$pJ&bae?mjo=Wl*a4e2%;}`wYMP7xMgLU&TI!W#5Z{EuZ6rH}x`4Qe2TIPH~U-)HPO|hK@ z1Db}}q7xS(6;9(7&>o*GBpGOSLc{Zs7T#$&3a@&Ym5YGAYDXED414$N=l=LPR_lE6 z^r4A!aut>VF}YqtKj5yOrz-$8lK9&cZ27Z!mX#U1FJ7BV-L8Cm&94zQ6;G(+QA!Q0 zD}a7)bY9!cd1%9Si{$9Qcn9$tO86G=K3{zNG90W1# z<`TPT?hZ^|Gy9WVRq|irLOZDvbyb0)LWQ7Qg_r5!2Em6iQqLgy z&uW~Dm)A$XOBPOhQMRM&m+IrCQ=dM^wrB1K2O2{Aka_x9TQTlg{nE~4001Ae<8XNp z17(lYcBsZgIyft5jBbdJ#cGhN7nOYSJZj)7W|75#Tz;+vXDwBVQuNTkM= z(|v1}c8;t-K`T0Iz+3oy{){0vNb*NFTYj{!UP@EdI_1(F!L~B}?l-^hfjhmi&ediO z8AaOfHD(>a(q^x$DeIpXc@UBQ&0sQv$>HGi*E>9oNNBIz&4Uc&(1o=FLl~!$ZOJ}@ zD*bDd(4sOp{o>jrpI(;RjEJGt9LJ6gw&=et#iN)IbAw0r)rAE>br*g6_BqT$5j8wc zFH$7NYsLjd91>)y=E@~^g-CKG%h-Lh>`gptsD89><$U{hzO=znw|+Fju~=3PXNhCk zwQxN5MyEU(&rgkdAuW@RyVDNd=LBTV--vv6vrHz0L1Yk^s`inI*U!i1lYw)L-85&7*Q@9N46cxuu4pIUs)8 z-2S@5YJWE;Y^ZJxjbcy;FywkRo-QJojxuaqkJ>kLsT{rU(Ch$Fi^Z&yz&K^Qrxzo= z7!MZ@}lu!T)G*RHzk~!6+T$)ruK@<{yX)J zP`oJZY$f6p(xixVI?oC|=>;zWZr@d+$C~d3r{joE3-n8o3?B!}f@G>t7Rj}+)(F_b zZ?&$T$8)E#R|lg(39iZ66BJ2gZ*IG6Xn?8(d$M?&H-n0ci$1VPCzAXP4xt)fbswd~P83ZbcV!^cJ@8^%cR}b^SR0578WUe(8YFWQ zYp%(iMdf%g3;Qlc+RJ%p?~<^bCci`I)(ye855B|sJp3prYA>3?7<+g?QrT1F-4+BA zG}aHIsl(lG?3z8v4vMU*9yBc1@Z?3eW!$N2>^d3WBq$5gxIlFHW#`Dg;uaI^KFTp( z%(kvN^MMvz3MR}^9gWV}y+}=e;GF*FZJ6^FnSFy$hGEHT@O_zU#5?x|b%-w7=XFO< znZ*`Dh2Yz4x%C|piJo_AbHtLFLsshKrTT#8lYKS#YIO|G{@aUWSM}uHbZ-q(Ye5mG zHUl9-jdJ6N_y)n;z2EW2R3IxO3q?dZSv|v4Fk}}-17ci1pwN~Ara(6>HKQ&uJ{4a)E1#JnD z!QniXU(0#*???5R0Ni8C_d$;LLKH*SF1jt&8Ps(05r@1vmQwDjJ+RFnwbmjyQ^SKC z;}iZ;3dcGNRfHGuFQ&{)Z;hbBXuHI)ZVLJ6o>$n|FRUCnxPeu3z<&`kq9`NJoSB!8I)UxS%!t#S2=cPMs&KKX)6OyBpr-%2qeG z()8%`;_9Z1#g2j2q(Z9x-XIiv3HI@J7lR4|k;!G{Yi*{aK4(b9sp0ug#EKd4ZH|^W z>Q3L(w+&mr+hHYg)ha)wc3=SGgSYM>-pU~Oo>_F)8o7P`B5Wlo@f)nFY-s9TW9p3P z-MU(J-WBQtA@ZNJvpf$e6o$}8Z1E=2^NLz-_uMXVAvTxa`a95afA4z-{ik$OOV!!A zM{K(xvJm%PtMBfw&?2;uZ_w-y3S32q-$KVl;npz4BM)Za z8vZ9O?W(~ZN}%)u8pTCmU0vC0sFyvyg7&?wEO?WT%047G2N<+c*aM`QcRi%7lX1zq zg}7(E$hLM(ze+Osahk)cXGV<&glUSIbjqWHD?&YfgC%U_?=(@amHT5_nZ0&Gn!2<* z?7Onj2yTQ=iC>ctcl>le66f|*%S){B9PPWQxtm?>Jxb9dY;gv(`gxgLWWCzW4K$G? zxbV3PrwzHNwQhC@;O|EJ&0lGk_{W>5&D_I_c2U8&eC|J3x^MCtF+RaAmoiy~UC*Pu zl%eOK21+QO!$civlmKBxtt9mXbxu92Tb?X)vz0#1(v&nqobB-YBhOK;)0 z%wa96FKng#g@iC}@E^3Aa@JE>1k8kdziZy+4?UF9poK4&#eS*oBP|DrwqZxlMZ86W zUE*FLwR4lEe7LTBO~k(N9NET)v|sp_(lG6=)?Y&_nVLh^)elG{YZ9#pAki_{6Jf}~ zBQvBf7|2Gs&9T(MWSVt6v>Vj!m%S{a)3dyYu4;{3v=MeqGWL#h#BWp`L7RmWzyb8F za!%{B4rsnl=#~!1;NH)EpVv^fL(4?9myt?NN?ty-QvQf_DVAxUC_R08>z;${KDdO- zZfCWl)w(41&~fdW?QI_Yieh{MGpJx9$8(jfNPAb?3-Ac2TS1ikOk*(m8gm! z2%wY#-YWV>y$y&N(;zzPG2YhN6wT74-RAp%p}a10@c3dU8@Bw8>5udmX{8NWyu0G$ zciUfnTQs6=E}x|&eOF{HoYE&?QHDJ z!f->Fd39b1t9@Cg`Ke45!SqgU%SQ3Z(&{3Yui#$F<9zis!haFn_pElw@BIM<9mmWZ zT$ZBtt7DQ-L$302Xv*uq2?;+)3t}DBcDsYMQF)+FAykU~QK$BMmKEW)w9nkt(5fN3 zOeVtD9)RjysSb=4bzTSKgErTeGWbn+>yPr9WbAFz`hJaZf1Nau`P@i$s+RV9ZRyun z7+-4@ryW6cqf4=P;|<#CWos{rS24=kA4x2FgbOqY*G=W#%{?4iG>biB)5-b(I<&hp zA4AtItOG5-)iC8M3Q^f4a8;ZKjuSS?bxFUxJ|R2Ibi zCllotTIw~kK+1wdsCmxzkl?{=KsV=C`@?(09=smPBkn)hY~e=H-s=-lOU)Fh7glDb zPA8@+AS4)BfLp?bK5Jbyl{Rz}rk5YO!V!2dYTNSA#lD31NaVUs^~RE>H(YJ&H>6oIS-SriOZ@`Wt|R}zyExCMxJ%lMkysOv33cJd z!}^?3%4yUrfocWTv%C~lZYPYsZODF!=2%PrM-2f78AQ&wUDD>e(dlv{NajZVFSt$7 zUf*a}Y^meaEVm+y(=g#)u(E!{UQ$2|cM{uu9m9Sud_t|fc%!u8-hQn_Q?mq$&gJsV z)6b>sP_caf%kSJ=}p0s2hT#4QMX?-dCKP*|ZdP zCsl$UJD#Bb*6teF#f!Bj|J^=`zx}2axhO5F6PH*!*lo&~mL)>JB62qDs-b=zX}tlY zL(jpbB2wz7PRhl1=#uVZXst$zt_EE0-Q1@*x+@w6xT^~yz~rQf{|?o!aV8`+aG>o} z3n#bfq&KR%B>Wa)`~O}_-$L*_2jqC!*1}8(nQL!-G-bi%PeeHPY&%@!DV6}XKFfwO z%9Df3?2cwFf zgHV`qOW>blhItDhq{YAtPVItS)s{^0L^X_%H zq{oZo@PrB^*;w^_15z6Uov0Hp>y{wm&{!Ix*UI#k*1sYC+f1DY@*;fuw|1ZFAX)n3 z)Wjw(7}hEw&dz9N0Sq-pu%H!I3($ZP4Nu?`6h1wdxQMuU&DF*4GdT&=vd{&S5|=%vH*B5WMd7& zIG!ei&8xVRe7-|arp4;I8npg5#YeHREkKT3SzUt)(r9$FcGaLy*5TmF^u+Ml5expX z38y%kUm;LV#)TQRm5#1}ul>CQBAlTUa#m1LXQ|eMxyfMCn|4HSID0UtdK-naW>(u!;MB$#a~o zfQ2$&qJKQ?T;Iar=gWC0(~}?MhR-Ue$NWhi0jE{BK3w#BdhIF<7m+|x4PK2=gwEZL z{R&PZ+hQE*m{%>796CfFzvR>}tbnv#@kx2wmVi^9;U;Qg`ci&V{a&S$UAyED*i5>w z+M3efXCo(9MSy&!x4rMe)HI3N-4L{7Q44x-bCddCXp#E)0{p=IQcy$0fnG*t!4lzD9GET@wiirZ$m%_A?370|7NdhESw3s!pDH{|Z?bJm(l z=zVSrjBjBERb+Ivv~D%4StPy5R(E;WLrQJu*5x!&!hH1#8IaQY!&4`klU5_`e|Ktu zJDP{K%KD67#NmwAi0rIogkQ+PF#WZ;qAaEK$(TJuuymTJ<%3twO(yS28rA#;;q1>_!Yxu5XxXW7Bejz8rZgGcOsAjoKKM)N) zw!MBp2&OxF3Du50Z7}5&@wK!*v&5Q7u=r!bwXA-DAfyNY%feVqgDRKEMa#w(%;CEs z&rkIGOb?n0;)VHrzgH_c_P{6lOxr_yBsX0|$8zzU^ltO1_OqU5k-eX$>(()^U93f= z3#{G;gB@hs{0yMk}KNz*E!#iuCPoKVO%XP`be&q z*7Gj_KAymcn1pLe;J($XXF1B<4ABdnI^C(gh+Tdd#VnV+L~M>|mQ3CtO=5N4a)^jh zErfUurr#6@85Qx-)g7)*$CTcQQ^4Zd8v59KI4S!DNA)5ksJ8@%+a{tZv3aSobshWk z)k$e17}CuUYx1pM4D)QYi;p*c#U}rizJ8){kfz7N<3duNM#pU)tybxBpMn{6g40PR zyysA|UXcDkc=gd-dyeSBGaD6FrcoG`3+AIWQ^^y--nTn!hKh_@J~s3PPZiQ|JT~bN z%lm46Rq;7(hGi6=pJ5okTv}qeW^a=^ax9m``}CcO(ae|(KWottpRZDWb0jxp?47@!|FXut zpy7OLS#S^YpgL#ebdf?==QnfX*i|IOmGzA3&9T*I4x2n{{hI7CZ|6vyH_K;WA0$M4 zJ(DlX(PNxJGGV6Zunqrs1GxO?R+VA`ru1gq)o`cd$$R}lEBWk9dXS7qhY-m`#j@@J zu#y=vvX_J#zhOC-Cx)x-Qi7MirfzHbT#Tq5`doL5J(-r7KslhY>~HNr^ts(325r%7 zw5Wo^dmQBx9McsTD72%XQ;h?b6{~nqhqW;hH(|EM05dKak*(z21@c^+x(vUOQjEtV88I@G(4Q5ouz!JlV~tc*#~!z-}L2GYT zQ_RLuP~_Zw#De51nWc%{x5AS4CzT+QTuFT7)1BhQc0dn7CS(qRpw@f)q{J-onO_J3 z#75VMScijn8qQ(m#{sQ3`&urzS!)*yH+HaozM}IN`*;hfdt^!i|#!@&}*T+BXmZN4*|=>J?_#KVpTV`8s_}rx?w_ESH^mDSg-`Vw`Hh(fu`w zm>PAOSS&%+3bg4k9D2dME;r*t3lbWhRQhFtJkDo1Q8LCt8sco%nbVkyCA-`;lN#)0 ztDH>Tb_0OA)umzTL1qR~#!`;Cp4~#fo49VnI8q~@6-6vBCNa+z`Dq`;n^i)fT5Dj` zx9lT^O~LZdTBx#zm473(Mig;rt!6VteDb)IXSX*fEnYbS`_Z10xT56dS9h1$`Ot*qO0-`WSl${;-T@J0PM2c9A&=Loy z>Lb|4My#jw7Fb7ZB4#bGJ4c+cq%#ikcHMX}fzJxvl}Yd?FO)L<9uzuX^g?T0WQh&0 zP#aLD$gHm}HgPuRT1KQ0hHf474$U?dEH)u_H^s7wXM9|x=-r0i?%=$ee8WX7m2=!7 zYDb+$^qI4H4TMG?RejrD1?9zpn)q4}MU`cfopp-6DaIiFX=#PiSN+1^swSwD+k3He zrV;*>18Tj6{9)T{f%_@_PC)S$o2%^kQj?Qr-%C?GN)&tPsLZUt1t^ia$et55IpoCD z)KOfeMFh4Z*n!jOvviPh?;ETBdg-7|?)s!G<;xw0ll$%veF%(=T3<|9I|MN&)E`Ju zv&A1U6pS~o-&398kp6r`D^_P?CWDw}LsjQ!e{Jl1Ffc8Z}58%2NNpu3484fXcb%Kx6*#=bk6o6KMRT%K%sOzV;kVLDCy zG$pw$Tf8-#i8J_?slFEpmyE)~&^Vm5Vp6|5?K7VUZm?HC#KVE@+1J#LmKnuNpnQsH z$46Mh^jm1s__(84`gz26J|RrOq2GU)<8~`Qm?!R`#%Osw2T&-QebV6%qAR8~yQp64 z%&m|$Vy2WnA#|Un+!}T-v+MDhHr7<016c%hGzD+9Us(AO^`J%2c><$ujS_1#Pr9xB zep(Uhfh)rF5@ytx$gxwTfu$m2tcZ?WhruxgtySg5qwZfI&43(-T;@1>@ zU(&B$e@}?FgWMXYd#ByTYo{d7B^NJ7V{H>vKe%ORcWWawIMVebJ1IbE8I!O9w`kieHj4n6r@DN#V+bp84qEqIqD$p2 zGq?654#-Z&zB*bJoXa7`K^-{waBIw(bQ*7Fjns&~v|ngdGARe<34aDxJxouNNh`&x z@QzadlB5h%MZ|GxTD20&II6U)aw7Fi{t<-n&*zXx-olp;b3NNTadg>V&Jq`B6p~Kd z)PQcS?>pZCNOlnE3cj8flN-nW@MVOZ(Iks==a)kK3o}8X2TRECx^dz zn5wERaw+J6jgv^!q)2G?>GAEF0xDBzu-?}m!|PNRuI@;?yPrV~Ibo&%FG;pbl)}AX z6dAGQ;K;H}fAXWeo8z;A!CjKul=QvJ=EO-n0J834S=xknBCd-2u;6_=*H20xwzUE; zF-q4o{Am|Os;Xd#ACrFN%$j5-Us?wh?v+M_4N6O z2z{g_qp92{Z7W;1HSJ`l{<8< zTgWZfCkEQ_liG-`qP#O1DGAOqn9mZ+#CryO<~OxZ|+01I6sJb%p)R zV2QqU9=UF*$7XMEXwBFk`v|kC5-j315zB;D_INQYbpbqIU$1XJ-i_@TCAB^oyOW;L zE+1-Wofwqs?iP9rLh0T8JP2fB>t98JwK=49y%4#ub=?RNlD$B5o{JZMhUIs?j`bmK z9G?v<3t#1Skth40YEbJlJ1(*n3xmRtI%~Xm_>!bdSN&++z(>m%kC?})Qrht0%%c^e50GJ?~85whysPs%iDd7Wq+Cd}Y^j?@1o za;V@43@$x$yv_IkCDh7DK9(GhsRJAnG_WJ!yt|BwhwA&|2U36Rz+T>d{ zF4*Ozsc(AeGPqGB58BK#S!7@6+e`61*zRs9@cs4lbt4)VyT5SOnY>?b1^bnApOQ^+ z8exs&tXJ*z8uAUAzh)gGKJlTsSQM}AtJ&d7s>ZNJ@h`n7Dm47vJH7e?7N^dJjuTL1~^;h1h3zzb??hThPF?Q8oizfidNn#R-ta z;JqrHAa0pssE!;vyaX-3@e}|8Uhyzt%PP4W$yYZvAm2nEdRCvm>rq6=4oo8rbIewM zRN8s_!OZlL&4ONsjNyK7UF0MpqEwRX6$q++gMgv9>Cr7fWm_kOKT2ZxHyCJZ(G1rW=Zz7o zgzmpl7msqj#QleWugYF<9lBCmqB5P2M;kR(2>eeY94Kw%!lH)B_u6}df3WGL76Dcv z4sghyVP61kE-QM!tY6EUfx#S(O6*wJ_HY zT)U%c%HsokMmb>P9d(BUP>rTZ6dN^J_6V?1x6U2qXwHFXregkuJLdZ6wVFPhM8l=3>gD8cyHukgH!iz{mSyg)m@;I7`QVC9c1PA?HH!$Ed86WD0827Sg9=P(njioKaO(c91I-ff!Rr4BX6N$1xSXhegBC!Bjtn;dg@ zfv9hCw;IvwV;l4hl5vY@dkZU`h+L(~?kI%3G1q9x#i#EkaUHvq>*afUG2w)N!+@3v z(XON6G#l$*;er)MSk-uV1a^!y;Na<6GjVUZ(Ky9{e^HzIwD+Kh=CB+u-VnTSwny)*V3VwJDx*?*H(d8yOidKp|5D5=fdwcy7-t+WYAK} zFvN5}tGkd`k5!GCj{Rkw`b&{f>C(6=9PcuB4+mcQL|&A5A-B6Bex!o?hEVsjA})67 zpk-xUP(p(Xt9`d)jAc?0u2ytg@g|!2amdJF>k1XG4ZSciwvFL_%{f`O^fq~aVuz#*Pn~-qbT3IEVXS}adxSVT zb*^6{^pjk?;@HBO)joZ0s?dMipvoO>b=n#ibkC?0ly*(eV3}^ae)u==&s}yE^u~HuKyz{L#f$6Msz%Msc*&=Mb&9+RbX!)Ek$Y zcFjKmbo_#vj36%7(tLQ@uAR8QtNNbvOz0Ww zuGDc0j-?lvb|dQ}lDWP{$0C99Y>jMq$~Qfsub%DLn>uoQ*#<6bW%gJ_GLZjr5wgv+eI#ra% zwuz$T^=I(JrOpgnj_IUuCzTrMAS->tskaT!h467$^VFgWEgqFz7X&BCZ;g-~4Hoe= zN^s1q|2^fVuV6dVq)$+`uHMeRiCSD|})$IN#;dL~E=iFC|9#)vplG{6SM8 zyrQ5eygNB+@0IUWeFBe5_N~nMNGY3OE{TL{)98$JCOO8nMapMjA1ge*`cV~&J;p0c z9pv2Ih$#|Tc1n^wK2jXoO})gn`!iE>5cB)9(!BPgq%?ty7iVe-A!&)J38LS%Z4{Ty zleR+ZR_uN!(uJm;;Bv)ir(8%1B&SJR@wVIj2ov+65H#pN*+x#37U8fbnDdB;a@;4t6}ns9Y=OL8~$;U{LwS z)&0=!_v_y#&$gp?#l4*FxN(nK}1Mb=@0WSo#T^^RO0mu5hY26dNW^1a~sYkh5&Z*(K9 zD0zpI@1%;irrEve<~Gql6~plCIv6LK){9bywC~A2kg!UqD?ZpA&GfDakii9Ml8bdm zIHh6@0=zm`)q0sHI4c)KRkSyc(n}3_3a*zkWrDKJKRVEc=uX`ba8I(k8|GrEQ_kkz zC0eQdMoTn#Ozc4n^)<>icjbxE*53{;e28Isot*2{;XlX^|D%{axOEACPcd`}0uZAE zjdeIat8&z_RCPo9Z+bG)Dy^|U0MPKI?pF2(T zT8;aWUV046v9;f!HJ->I=vY3nUJ`2?RIHn0snYjnm17IMXXUT`Rc1{bGayN?Na@dF zk|FuLM<&OnK-MX)UHmk?QqbNHuNmYIcVJ_^zG5!9BNs%NRluqJ70l93wv04(O9N(#3F1p84dm9_4V93xwJh_mXg5yzNqbz#1#WFF4EPww|u5F%H2;Y}NimSIy zIKG>mT6+u`5-Br$3|f}w?MGlpQ-o8Eqt@v$$N@vy+Y~lUVpI)BCQVE@U1{41LmU^E>le&(GJJxQICB<(bF|TWo z_Mx*O$z-qRX_ZB->>`pPr`36nQrQ%8CV zTH3+gw6RNK`(Dw;bT+k~SQs=9t_eQNv3nA zWk<#r*b}zaZ-ZQqD3`#h8K_cx8|6xiVqY&7-TRPMkYFn z^TN0{xE>W{ZOj#yha5%?HdVmS3ml=*1gm+3Lk(5ACbge8Fg?l^TX5BbJDhdT#T$6ic_`bxN!Pp*h*qR*vaC zkUHb8zNb0bu0Dh=DP3fx)NTA}n67XyheMMYr$D%HYg)sbD?6JHMz#%p1Ok^#Uccd% z4CS_Co|Dji!ZFdTSFHP8An9*J=eoXMO1^tis-yPxJ3&6z%t($@Gj(Tx%g<2n-SKcw z;;!PI4m6Zy)mAZ#JIYFTdJ}sIM+@Zw+U5`Gu|ti2vC?s@yt7LoyPRcIz^<02w&Mik zK?$U$(91Nm$$E=rmjLUDOMSmZmt(Fv1nF3Vc4v4>R6?s*cu#OmVyq%3ErGTAIZfSy zvAJ$8c+EhSYZR9+-K7<~I#s(xswl#^UYqLvyiI$-+nvZAz_zZ^I7;xvh~OEkAKOKe zs}-di4o#TS+IXAnRDv}3V%H@BXAUKCmLD|`P4VV(tzniPf!tTFSpzJ2 z4YwFvpA+iwiwTXd+Bat3ZzETlHBFmMOuxhpNMEzf%!5%lf7>)~^1&#$JIEAV=4^HQ zGn|{*5X=g^Xyecu2=p+5Qu?TTmM2vEqwbI@O83~Fc>@^!mUa2%ui)OfI$G8wUFjn| zIt!vpuJz(wIx%u-meBZQ#a&d`Vuntd2xgS@u9cdNA*3l7&Jo>0ot=?RymBWY8Vw)$ zptJ4@EO9mzMOnv<^81}z~?!|b&kh<@4r4OFqWZhT;+ZaDpxeWRwj-B&= zE5s{psMp}jrt*lOKYY;Q$if{xl5Bw*I523auX_t3r=I-tK=2#9CxXM|Xyr1@t}W?W z(E$1Sv-+epXN^Wv2={8t7630=sG;lO_~c5xKx;`^dreh}VpZ1$HP z{#y`Xlc$F2x$)?UvxM2q4{&vv%|T~+BAcx~YHb~*&YCbsLwp2zQp-!K@qR5KNCp=n z7VQZxw{D%`lF#+XDE)e}Ub+N2Vb?FGJ6BM;2M026@INhHgq)C;%iT(l_$`52W!~;E znMO2CuCI&DrhZUO-+yyRXj`#q4dhQ3{M06HbR1uHgc+Z<%FIBAcT2j*Pjqh=DcmZX ztCKC4>b0*66LR)!3oJ_RFk)5)>UrKTbbb})-8uMfBRvQlVv%LvkZr{*EPVpJ>#sBY zv9Sy-_>T2KPZp<~0-lq%KI;ruBR%_qJ6~)dNHmQL1G_!+9xJAhhFH44!eE%ryT>#j zKV@E-kdU-RaXPtn%(5RmhKXHED6)qL&rap-nc9-y)E1w7?W04CJrVLpER*MJz^-E~ z4Phgu{R>E$Sr|wuPya!3J=OoMPX!Q$o4pA%&MiQjOS_gTVeAkQ89$#7adl_jeZA&o zl(_>pW8B(_j zct=H7o!p3?o6#(Y47@aE0UD4$IiP*``0YI~=g?usn*0vG^ys-=b6Du~pe@UNd~v(b~jHzV_z|x6B2FXpx#Y_$HLrkS1s!R zp*-t&BN2Q3bcDX#?`_d`1IKuCE&aRmw<*#xJJw*A>+Wti+<^Q6zCJ#Gh}OGX-p_R) zn)cEK!W=q2S2x53JDwx(L(E^2lJaAWqI#AFSW7ry(yufbx9;34B~Pw29zG+Au`W5`rpfNq@cGII(Pz(O*ll~CPKy7@Q(JWH zQ|??s+sd|oYur~gQi0Fy(%J5isTPkB)lt>9+10Iz$hbKEYt>&?PfE;bn3j6|l2O9x z7=QQWiV>Q=_j@o%m$-GE#&-~a z_ndQG=Q`Kt{dxD!T25ndmEhVB@EIpo)>g*fNTeKnr0jiE!!{kzf^#gzrv5xP?LAkx z9uu6D32eo`bNao`O;ST0uIYE`tw_JlySlcu8qbHv`As4iURblpF9}LVr-Tk{P zFzH>+Qn|!CKUImN^*#(^r88mc{t@j;KGm`jmwND0hwdii(zF!r7cKH^9T@wO{ix^{ zpd3C>L(GMAxRP1|@EnhLlEH?4z3;+!bFf01sr`7Shm~_XJyL@rdHV`4MzH0uz*|SU zjJ4_+`+^5 zJBN}?n24m5`ghyoa!qfI508?uWl|FN4QyHhlRPF`niMFD5^}m%3CN4xdR(5Os=g=E zCJCnJxbDxLcWRt{edZXU_mKYCS@9(;e!BTYQUV|-SA95U|1|khLbDss*)h-iX`Iii z=I*Pl0WWa)dR7=LRkPuzCZ}CSO&7=zQaGx;UlWG9wNlq{`S>qZIWPI$!k}@NO)xD| zfU~xTND~zn$@@|(kymKx$2rp0XdI*FJiP{9=02v`4W+vbOZ1JFM$WC+t(VG7oH^zZ zZh2@;-13-{lrEQS(Ait@_d>0Xq#Oz&9X~AN>>zscX>ZHz+LHO(SvFygJJXzZSLBBK zbczdc5B-q6pOPZ9A?B$aLHVA%C79G7@^=iS*Qy4ov%x&Q;j}8RT*3nEzKVi9u-WOb zMcZdn4iBCf0B5oGEbZ_S_gZS@#mSlbp3;>wi4bNeY^QRP_lN3Pt>V`qZ6RRNfQ40o z1S`{|0{#j&|037th3SJ!b^kYhO23A^ZDyLhk9ygmT7f591!7?P8E!`1#H zljXtDX){mRt4mv4Be3*MfxK*=c?=6GlFhJry~xrG9bh+V$}1}msdk99KMh)NpqAMx zG>d~cWnmF&(*d7*9|eO9EeaEBo~7{_Q2A5)M9e$EQ0J zFh$7J=bI>FC9PjzaOR((;#2)r&X&Xk>+sLeZpn8uhoQ*^$u~i@bT+dsmf_qF#_&C$ zgMXtvtj_i?Z}?OL-kKW@E-v|^XM(&Hf9CMN1Q5LwSc@-w0?mIjlxJ68I?XlCnjCOKiin zCa7q3X;Zzbz((ua4=W}LP*r~=NFHenT+)ILy@X^hF%qj*d*Z2UY-@6cvX}cTZMCzb zX;D~9J2f-Ydzr7l)gx6F?POz<)_FQG`AJ&Z3>zBo;+G(Y#ff>)B{z8GWP4SdtM!YZ zWN3y~cXHAo;izf!vAA|iw&hKRs-vdv(`smd9cBAL8EWrUYk-dD0mx7O9;V;uW2+8E zJ0Q_o@?I#fd+0JZV!JZ@KE8krMGVTKzau;p1y*gI>kK!acwmkDo9oawUbAT*yojGW!COz=um-8U&a?9g9%^K9P1TeRbAE)dsjZwT?CJIIg?G zg>lKrvue@pKfkYzgL&M7D?Ta8Sk($5L<4RWCSxO;enBmcB@H6K4H^|pNFW7RVIVh? zmy+t#9#*EoVSdj_f#HRsqh77E*sZUge+iZQ4Hn}>)vp)&)Jv|{?y$a&Q$Y#GEtl?h z14h&$)c$EFqpSF7u*$v&9}dY#)Zml*UYz^JLx|63!c$8gxJPP!E)tPvsoPs;uo%k0 zvtE0mvllI}mBgFF^Fw8$GcKL+!stpTp{waql?*1h*Keo`iB z4$}dhwO4melVgWkncw5NB6I`$(AAkLrm3{W{*BvU?o$6WmI9E>D5<)e_i*{FIu&E| z$?`om+jCUXv4?ER?Jmz=Hiw;jATC&6>jI`@xo>}~X0|$aIsN5Wb z-YJy7e)|zAk+L60DPL_bE`6ve@hL4kVwiedTuO@`o}Y9^Bbm_4;s3NYlt^?#8xaDI z4yAvDE3cg_kXAJVyoU@aau+G~=)34EQ5LgTv8HfkA;)w^&pK?+A)hBs8TGUw#Zdy= zSS247eaF;{SNO5v)^`r%mH6t<%N8ky8cihCSMR=? ze)O$4l4)K+p|nDOI6TEgXvg0D@s}7EcI+3(T<-}+M+|?OKT&ejt~g>l6{d}kDd{-M zA%`1z!lqo;E2!du^`+dMJlQ}{X-t)~b(q!J%-k|^`=fm);!Z+t(4*c*3Jn>YxX)~d z=n(M^-EQ6P=etgpA@}8#&|GoS7Im2;(_RL`!ttGc0Jcm+5fE9v^}P8OT%NsUQ}x8I z)(6*-(I|8qIdQkR=6fUDHU$4diYCN1H$#gGhq@J<8^m&liv_syA-QO zZ_`g-8R?!sS%TGw&*@V|u4~(})Nl`nHuT?ZvznDnHnQ;uOdMw3Xrl;=Ay5LmIw|i8 zw{vPN#!?|}h5gYo*C?UwAV<`7EMTVZ5YR+UTXE}PnXB=>92U>h$?8K88RPFLG&4_a zkiRJfzAbdSwkeJqGjJ=g)j%Lb^i+8cb`+R|VFOkq_@XGFea@2djw26UjfkgMbw@)1 zWr+IOT=cliE$4i^z^j)2OA)1eo-sev9HTP*v4Z_~sSvf!g9}^Ael}DH?G#UxN8|2M zto-d5yU{O*9rJKRRNH-d1(eGhT}2*$mi9I9OpJt0J`3mCO4JzjJZ%iFu2;o`HDxLN zcMCMi@MGH%GCP%?Ia8aFsj~Lme`1Z7B}C#V79tlEwz0`XeaiZRc~&*f7}wg%<=zm8{YC9G3POxDqwzr`Euc^5ck?Jq|`MM|0b}K_z6|#iQa3-AA-qD z%?*^F7;$oSQ6il)w49KxG77gXw|nr36CtB$&0kK6nWv}Y@zVgu5L}G4_5?SH2_qju zlp7ESIyU{0f8wnDM(ZntXF_5|c>2grG1U1lVUmgg*c&SfX@33rF`IgUmkhw=(a@jv z@?XY5`XSd29f^wk24#_ZKE%Una2LD;JKIMR;QSz;$-h&8078!=gHmWeO{5GIrx^_s zqF|7uhQNjLf>0a+Ie`jx)EJ1CV4ZI-dLvl*d;|0&*C9Iatp^-5&R;CEx3~Ycg^DnP z;2HIkjzI7z3`;(UfV)7mOts5meiznvWkZ6}1a_*;pne#Q>(YITy>Wvq3dxg#yK{+| z7z^5$9rYCRcZq?8g$xHi;|OQBI1Va0*s|ZB2Fa~wxtcl6)9@BqC-YlH56n;irHY_*?tdNwYD{1nWd0-d0 zi&-n<&1#LPPsG5#HxYZ@ZA#5xhj12rj}vH&pYA23r>CnFJ96#VVkd)uarR{q0Y+38 zo(TD({WisXzMX6~wQfqOZDsa&RnN-jUJP9Qk3CWL8Utk3_^VVo4A2xRp0ogjg9IL_ z!#x-FDL5aRIR}nAh?EmRA+3IpNPJ~(W)=i7zq)@vk%#(N7aiwyx(vR71Q+Zi{TN;q zUk9<@E|@}mSl@y5EA|k&J6|YAnklXVDC0TsF8hb)z}&|lIC}L-=K8NSH57jv0mq#> zeWkC~Vt?ovwa^PFIKW+lmrWi1@#CvL_unc<0g(ow`_W_2KvZVrWREeLHor*26T zG22-_>@u7L{fh6_&+pG@(mvHp;Erj#`>;n#NTH$wBp|ezzAOg7fIM93EnmscNOeuB zBiWBb0}I%b6v5wFYY&!99=7$~ADk}g0AIlviM$SBzbabBua@m~dS^-v9G|7sJfb>t zR2)Dv;@Y_r8cTv837_SM_Yr#R9RJb7hYuCpZ%zHZP1L^O%3JY-M{>SNbbW3%|LSmj zD0=!}@W&4TNM;NaB}l0fkVRmYbvZl{-qrQU-6Mo6W1H@TgLBRW(Nx7Crrn0qr#bdE zh(JWjNlSNaf&8q*ItU`({0iIwC{-T9BdwEr@D!u|Nlm>nizyj0z* zeMVIn%s{B@H9?_Zqw6;$l}8*`CaUb2BBjyU-Q5f;uo*N`?`K{C&ZgYq_oMY+m~5Mj zzjgZbX$(v?r=XyEVa{G?GN7@YuPd7c^Ev;Szd}}AApn_VeyVV67?~ui8=IH}a&qr2 z)Mx({o(J$~8n1tT)dW2!&9H1osVQ_Nmlr%#@D)#DGjI7h*bO_7psbpnx&QvX9h5ql zmX?;@Z<6S1IW@8iY|t|Qkc#gZ9UhB|svn$40wBWfWu0Y@2r>&`lTC? autoregressive action tokens -> 7-D action + +The script generates a few deterministic synthetic samples, discretizes actions +into 256 bins, fine-tunes a small subset of the VLM, and reports teacher-forced +action-token accuracy plus constrained autoregressive predictions. + +Authentication is read from HF_TOKEN/HUGGING_FACE_HUB_TOKEN. Never put a token +in this file. +""" + +from __future__ import annotations + +import argparse +import itertools +import os +import sys +from dataclasses import dataclass +from pathlib import Path +from typing import Iterable + +import numpy as np +import torch +from PIL import Image, ImageDraw + + +ROOT = Path(__file__).resolve().parent +LLAVA_REPO = ROOT / "qwen2-openvla" +if not LLAVA_REPO.exists(): + raise FileNotFoundError( + f"Expected the LLaVA implementation at {LLAVA_REPO}. " + "Clone https://github.com/IP127000/openVLA-Qwen2-0.5B there first." + ) +sys.path.insert(0, str(LLAVA_REPO)) + +from llava.constants import DEFAULT_IMAGE_TOKEN, IGNORE_INDEX, IMAGE_TOKEN_INDEX # noqa: E402 +from llava.mm_utils import get_model_name_from_path, process_images, tokenizer_image_token # noqa: E402 +from llava.model.builder import load_pretrained_model # noqa: E402 + + +@dataclass(frozen=True) +class ToySample: + image: Image.Image + instruction: str + action: np.ndarray + + +class ActionTokenizer: + """OpenVLA-style uniform discretization over normalized actions in [-1, 1].""" + + def __init__(self, tokenizer, bins: int = 256) -> None: + self.tokenizer = tokenizer + self.n_bins = bins + self.edges = np.linspace(-1.0, 1.0, bins + 1, dtype=np.float32) + self.centers = (self.edges[:-1] + self.edges[1:]) / 2.0 + self.tokens = [f"" for i in range(bins)] + + # The local model loader currently creates .... + # add_tokens is idempotent, so this also works if that behavior changes. + tokenizer.add_tokens(self.tokens) + self.token_ids = tokenizer.convert_tokens_to_ids(self.tokens) + if len(set(self.token_ids)) != bins: + raise RuntimeError("Action tokens were not assigned distinct tokenizer IDs") + + def encode(self, action: np.ndarray) -> list[int]: + action = np.asarray(action, dtype=np.float32) + indices = np.digitize(np.clip(action, -1.0, 1.0), self.edges) - 1 + indices = np.clip(indices, 0, self.n_bins - 1) + return [self.token_ids[int(i)] for i in indices] + + def decode(self, token_ids: Iterable[int]) -> np.ndarray: + id_to_bin = {token_id: i for i, token_id in enumerate(self.token_ids)} + try: + indices = [id_to_bin[int(token_id)] for token_id in token_ids] + except KeyError as exc: + raise ValueError(f"Generated non-action token ID: {exc.args[0]}") from exc + return self.centers[np.asarray(indices)] + + +def make_toy_samples() -> list[ToySample]: + specs = [ + ((220, 50, 50), (45, 65), "move to the red square", [-0.75, -0.50, 0.20, 0.0, 0.0, 0.0, 1.0]), + ((50, 190, 70), (130, 70), "move to the green square", [0.10, -0.45, 0.35, 0.0, 0.0, 0.0, -1.0]), + ((55, 90, 220), (185, 175), "move to the blue square", [0.65, 0.60, -0.15, 0.0, 0.0, 0.0, 1.0]), + ] + samples: list[ToySample] = [] + for color, center, instruction, action in specs: + image = Image.new("RGB", (224, 224), "white") + draw = ImageDraw.Draw(image) + x, y = center + draw.rectangle((x - 24, y - 24, x + 24, y + 24), fill=color) + samples.append(ToySample(image, instruction, np.asarray(action, dtype=np.float32))) + return samples + + +def build_prompt(tokenizer, instruction: str) -> str: + user_text = f"{DEFAULT_IMAGE_TOKEN}\nWhat action should the robot take to {instruction}?" + if getattr(tokenizer, "chat_template", None): + return tokenizer.apply_chat_template( + [{"role": "user", "content": user_text}], + tokenize=False, + add_generation_prompt=True, + ) + return user_text + "\nASSISTANT:" + + +def prepare_example(tokenizer, action_tokenizer: ActionTokenizer, sample: ToySample, device: torch.device): + prompt = build_prompt(tokenizer, sample.instruction) + prompt_ids = tokenizer_image_token( + prompt, tokenizer, image_token_index=IMAGE_TOKEN_INDEX, return_tensors="pt" + ) + action_ids = torch.tensor(action_tokenizer.encode(sample.action), dtype=torch.long) + input_ids = torch.cat([prompt_ids, action_ids]).unsqueeze(0).to(device) + labels = torch.full_like(input_ids, IGNORE_INDEX) + labels[:, -len(action_ids) :] = action_ids.to(device) + return input_ids, labels + + +def prepare_image(image, image_processor, model, device: torch.device): + pixels = process_images([image], image_processor, model.config) + dtype = next(model.parameters()).dtype + if isinstance(pixels, torch.Tensor): + pixels = [item.to(device=device, dtype=dtype) for item in pixels] + else: + pixels = [item.to(device=device, dtype=dtype) for item in pixels] + return pixels, [image.size] + + +def set_trainable_subset(model) -> list[torch.nn.Parameter]: + """Train projector, token embeddings/head, and the final Qwen block.""" + model.requires_grad_(False) + modules = [model.get_model().mm_projector, model.get_model().embed_tokens, model.lm_head] + layers = getattr(model.get_model(), "layers", None) + if layers is not None and len(layers): + modules.append(layers[-1]) + for module in modules: + module.requires_grad_(True) + return [parameter for parameter in model.parameters() if parameter.requires_grad] + + +@torch.no_grad() +def teacher_forced_metrics(model, tokenizer, action_tokenizer, samples, image_processor, device): + model.eval() + losses, correct, total = [], 0, 0 + for sample in samples: + input_ids, labels = prepare_example(tokenizer, action_tokenizer, sample, device) + images, image_sizes = prepare_image(sample.image, image_processor, model, device) + output = model( + input_ids=input_ids, + labels=labels, + images=images, + image_sizes=image_sizes, + modalities=["image"], + ) + losses.append(float(output.loss)) + # Image patch embeddings expand the multimodal sequence, so output + # logits are longer than the original text labels. Action tokens remain + # the final tokens; the preceding logits predict those actions. + action_count = len(sample.action) + action_logits = output.logits[:, -(action_count + 1) : -1] + action_labels = labels[:, -action_count:] + predicted = action_logits.argmax(dim=-1) + correct += int((predicted == action_labels).sum()) + total += action_count + return float(np.mean(losses)), correct / max(total, 1) + + +@torch.no_grad() +def generate_action(model, tokenizer, action_tokenizer, sample, image_processor, device): + input_ids = tokenizer_image_token( + build_prompt(tokenizer, sample.instruction), + tokenizer, + image_token_index=IMAGE_TOKEN_INDEX, + return_tensors="pt", + ).unsqueeze(0).to(device) + allowed = torch.tensor(action_tokenizer.token_ids, device=device) + generated_ids: list[int] = [] + # Manual greedy decoding avoids a LLaVA-OneVision generation incompatibility + # where prefix_allowed_tokens_fn receives an empty synthetic input_ids tensor + # after the wrapper converts multimodal inputs to inputs_embeds. + for _ in range(len(sample.action)): + images, image_sizes = prepare_image(sample.image, image_processor, model, device) + output = model( + input_ids=input_ids, + images=images, + image_sizes=image_sizes, + modalities=["image"], + use_cache=False, + ) + allowed_logits = output.logits[0, -1, allowed] + next_id = int(allowed[allowed_logits.argmax()].item()) + generated_ids.append(next_id) + input_ids = torch.cat([input_ids, torch.tensor([[next_id]], device=device)], dim=1) + return action_tokenizer.decode(generated_ids) + + +def parse_args() -> argparse.Namespace: + parser = argparse.ArgumentParser() + parser.add_argument("--model-id", default="lmms-lab/llava-onevision-qwen2-0.5b-ov") + parser.add_argument("--steps", type=int, default=100) + parser.add_argument("--learning-rate", type=float, default=5e-5) + parser.add_argument("--log-every", type=int, default=10) + parser.add_argument("--save-dir", type=Path) + return parser.parse_args() + + +def main() -> None: + args = parse_args() + torch.manual_seed(0) + np.random.seed(0) + if torch.cuda.is_available(): + device = torch.device("cuda") + dtype_name = "bfloat16" if torch.cuda.is_bf16_supported() else "float16" + load_device_map = {"": device.index or 0} + elif torch.backends.mps.is_available(): + device = torch.device("mps") + dtype_name = "float16" + # The bundled LLaVA loader hard-codes a CUDA move whenever device_map + # is not "auto". Let it load automatically, then move to MPS below. + load_device_map = "auto" + else: + raise RuntimeError("A CUDA GPU or Apple-Silicon MPS device is required.") + + # huggingface_hub/transformers automatically consume HF_TOKEN. We only + # check for it so private/gated downloads fail with a useful message. + if not (os.getenv("HF_TOKEN") or os.getenv("HUGGING_FACE_HUB_TOKEN")): + print("Note: HF_TOKEN is unset; continuing because this checkpoint may be public.") + + model_name = get_model_name_from_path(args.model_id) + tokenizer, model, image_processor, _ = load_pretrained_model( + args.model_id, + model_base=None, + model_name=model_name, + device_map=load_device_map, + torch_dtype=dtype_name, + attn_implementation="sdpa", + ) + if device.type == "mps": + # FP16 AdamW on MPS overflowed after one real optimizer step. The model + # fits in unified memory at FP32 and is stable enough for this tiny test. + model.to(device=device, dtype=torch.float32) + action_tokenizer = ActionTokenizer(tokenizer, bins=256) + model.resize_token_embeddings(len(tokenizer)) + model.config.use_cache = False + + samples = make_toy_samples() + trainable = set_trainable_subset(model) + optimizer = torch.optim.AdamW(trainable, lr=args.learning_rate, weight_decay=0.0) + + initial_loss, initial_accuracy = teacher_forced_metrics( + model, tokenizer, action_tokenizer, samples, image_processor, device + ) + print(f"before: loss={initial_loss:.4f}, action_token_accuracy={initial_accuracy:.3f}") + + model.train() + for step, sample in zip(range(1, args.steps + 1), itertools.cycle(samples)): + input_ids, labels = prepare_example(tokenizer, action_tokenizer, sample, device) + images, image_sizes = prepare_image(sample.image, image_processor, model, device) + output = model( + input_ids=input_ids, + labels=labels, + images=images, + image_sizes=image_sizes, + modalities=["image"], + use_cache=False, + ) + output.loss.backward() + torch.nn.utils.clip_grad_norm_(trainable, 1.0) + optimizer.step() + optimizer.zero_grad(set_to_none=True) + if step == 1 or step % args.log_every == 0: + print(f"step={step:04d} train_loss={float(output.loss.detach()):.4f}") + + final_loss, final_accuracy = teacher_forced_metrics( + model, tokenizer, action_tokenizer, samples, image_processor, device + ) + print(f"after: loss={final_loss:.4f}, action_token_accuracy={final_accuracy:.3f}") + + for sample in samples: + predicted = generate_action(model, tokenizer, action_tokenizer, sample, image_processor, device) + print(f"{sample.instruction}\n target={sample.action.round(3)}\n pred ={predicted.round(3)}") + + if args.save_dir: + args.save_dir.mkdir(parents=True, exist_ok=True) + trainable_names = {name for name, parameter in model.named_parameters() if parameter.requires_grad} + torch.save( + {name: value.detach().cpu() for name, value in model.state_dict().items() if name in trainable_names}, + args.save_dir / "minimal_openvla_trainable.pt", + ) + tokenizer.save_pretrained(args.save_dir) + print(f"Saved trainable state and tokenizer to {args.save_dir}") + + +if __name__ == "__main__": + main() diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..35b1c8e --- /dev/null +++ b/requirements.txt @@ -0,0 +1,12 @@ +torch>=2.5 +torchvision>=0.20 +transformers==4.46.3 +accelerate==1.1.1 +timm==1.0.11 +einops>=0.8 +einops-exts==0.0.4 +huggingface-hub>=0.26,<1.0 +numpy>=1.26 +pillow>=10 +sentencepiece>=0.2 +protobuf>=4