From fbed6fbe50ee15c8dbae6ad5cd0bbf8228b1e45e Mon Sep 17 00:00:00 2001 From: Martin Ayotte Date: Sun, 26 Jul 2015 10:49:05 -0400 Subject: [PATCH 01/16] add missing/forgotten variant.h --- STM32F4/variants/discovery_f407/variant.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 STM32F4/variants/discovery_f407/variant.h diff --git a/STM32F4/variants/discovery_f407/variant.h b/STM32F4/variants/discovery_f407/variant.h new file mode 100644 index 0000000..6e399f3 --- /dev/null +++ b/STM32F4/variants/discovery_f407/variant.h @@ -0,0 +1,14 @@ +#ifndef _VARIANT_ARDUINO_STM32_ +#define _VARIANT_ARDUINO_STM32_ + +#define digitalPinToPort(P) ( PIN_MAP[P].gpio_device ) +#define digitalPinToBitMask(P) ( BIT(PIN_MAP[P].gpio_bit) ) +#define portOutputRegister(port) ( &(port->regs->ODR) ) +#define portInputRegister(port) ( &(port->regs->IDR) ) + +#define portSetRegister(pin) ( &(PIN_MAP[pin].gpio_device->regs->BSRR) ) +#define portClearRegister(pin) ( &(PIN_MAP[pin].gpio_device->regs->BRR) ) + +#define portConfigRegister(pin) ( &(PIN_MAP[pin].gpio_device->regs->CRL) ) + +#endif /* _VARIANT_ARDUINO_STM32_ */ \ No newline at end of file From 0ec837f08c2ace48d50041dc034c3a393f77073b Mon Sep 17 00:00:00 2001 From: Roger Clark Date: Tue, 28 Jul 2015 12:00:16 +1000 Subject: [PATCH 02/16] Fix for uninitialised vars in dmaTransfer and dmaSend (as detailed by victor_pv) --- STM32F1/libraries/SPI/src/SPI.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/STM32F1/libraries/SPI/src/SPI.cpp b/STM32F1/libraries/SPI/src/SPI.cpp index 33cf62f..ebb0198 100644 --- a/STM32F1/libraries/SPI/src/SPI.cpp +++ b/STM32F1/libraries/SPI/src/SPI.cpp @@ -365,7 +365,7 @@ uint8 SPIClass::transfer(uint8 byte) const { */ uint8 SPIClass::dmaTransfer(uint8 *transmitBuf, uint8 *receiveBuf, uint16 length) { if (length == 0) return 0; - uint8 b; + uint8 b = 0; if (spi_is_rx_nonempty(_currentSetting->spi_d) == 1) b = spi_rx_reg(_currentSetting->spi_d); //Clear the RX buffer in case a byte is waiting on it. // dma1_ch3_Active=true; dma_init(_currentSetting->spiDmaDev); @@ -427,7 +427,7 @@ uint8 SPIClass::dmaTransfer(uint8 *transmitBuf, uint8 *receiveBuf, uint16 length uint8 SPIClass::dmaSend(uint8 *transmitBuf, uint16 length, bool minc) { if (length == 0) return 0; uint32 flags = ((DMA_MINC_MODE * minc) | DMA_FROM_MEM | DMA_TRNS_CMPLT); - uint8 b; + uint8 b = 0; // dma1_ch3_Active=true; dma_init(_currentSetting->spiDmaDev); // dma_attach_interrupt(DMA1, DMA_CH3, &SPIClass::DMA1_CH3_Event); From 3b8b7a79f438670d05320017e095303c4fd8e2d8 Mon Sep 17 00:00:00 2001 From: Fergus Date: Sat, 1 Aug 2015 18:58:14 +0100 Subject: [PATCH 03/16] Bugfix for HardWire/I2C + configured/compiled dfu-util to work on Linux again - Fixed 0 byte payload bug, stopping HardWire from sending only addresses to scan for devices - Fixed I2C bug accessing wrong status register for error flags - Improved Hardwire endTransmission() return flags to correspond with the actual I2C failure status - Removed dos endings from dfu-util autogen script breaking compilation --- STM32F1/cores/maple/libmaple/i2c.c | 19 +++++++++++++++---- STM32F1/libraries/Wire/HardWire.cpp | 11 ++++++++--- STM32F1/libraries/Wire/HardWire.h | 2 +- STM32F1/libraries/Wire/WireBase.cpp | 5 ++--- tools/linux/dfu-util/dfu-prefix | Bin 34543 -> 47440 bytes tools/linux/dfu-util/dfu-suffix | Bin 34762 -> 47528 bytes tools/linux/dfu-util/dfu-util | Bin 122280 -> 148808 bytes tools/src/dfu-util/autogen.sh | 4 ++-- 8 files changed, 28 insertions(+), 13 deletions(-) diff --git a/STM32F1/cores/maple/libmaple/i2c.c b/STM32F1/cores/maple/libmaple/i2c.c index 9c93d3f..34b6441 100644 --- a/STM32F1/cores/maple/libmaple/i2c.c +++ b/STM32F1/cores/maple/libmaple/i2c.c @@ -235,7 +235,7 @@ int32 i2c_master_xfer(i2c_dev *dev, i2c_enable_irq(dev, I2C_IRQ_EVENT); i2c_start_condition(dev); - + rc = wait_for_state_change(dev, I2C_STATE_XFER_DONE, timeout); if (rc < 0) { goto out; @@ -347,9 +347,20 @@ void _i2c_irq_handler(i2c_dev *dev) { * register. We should get another TXE interrupt * immediately to fill DR again. */ - if (msg->length != 1) { + if (msg->length > 1) { i2c_write(dev, msg->data[msg->xferred++]); - } + } else if (msg->length == 0){ /* We're just sending an address */ + i2c_stop_condition(dev); + /* + * Turn off event interrupts to keep BTF from firing until + * the end of the stop condition. Why on earth they didn't + * have a start/stop condition request clear BTF is beyond + * me. + */ + i2c_disable_irq(dev, I2C_IRQ_EVENT); + I2C_CRUMB(STOP_SENT, 0, 0); + dev->state = I2C_STATE_XFER_DONE; + } /* else we're just sending one byte */ } sr1 = sr2 = 0; } @@ -456,7 +467,7 @@ void _i2c_irq_handler(i2c_dev *dev) { void _i2c_irq_error_handler(i2c_dev *dev) { I2C_CRUMB(ERROR_ENTRY, dev->regs->SR1, dev->regs->SR2); - dev->error_flags = dev->regs->SR2 & (I2C_SR1_BERR | + dev->error_flags = dev->regs->SR1 & (I2C_SR1_BERR | I2C_SR1_ARLO | I2C_SR1_AF | I2C_SR1_OVR); diff --git a/STM32F1/libraries/Wire/HardWire.cpp b/STM32F1/libraries/Wire/HardWire.cpp index a835991..c709c05 100644 --- a/STM32F1/libraries/Wire/HardWire.cpp +++ b/STM32F1/libraries/Wire/HardWire.cpp @@ -40,11 +40,16 @@ uint8 HardWire::process() { int8 res = i2c_master_xfer(sel_hard, &itc_msg, 1, 0); - if (res != 0) { + if (res == I2C_ERROR_PROTOCOL) { + if (sel_hard->error_flags & I2C_SR1_AF) + res = (sel_hard->error_flags & I2C_SR1_ADDR ? ENACKADDR : + ENACKTRNS); + else if (sel_hard->error_flags & I2C_SR1_OVR) res = EDATA; + else res = EOTHER; i2c_disable(sel_hard); i2c_master_enable(sel_hard, (I2C_BUS_RESET | dev_flags)); } - return 0; + return res; } // TODO: Add in Error Handling if devsel is out of range for other Maples @@ -56,7 +61,7 @@ HardWire::HardWire(uint8 dev_sel, uint8 flags) { } else { ASSERT(1); } - dev_flags=flags; + dev_flags = flags; } HardWire::~HardWire() { diff --git a/STM32F1/libraries/Wire/HardWire.h b/STM32F1/libraries/Wire/HardWire.h index e5bca33..6f137b8 100644 --- a/STM32F1/libraries/Wire/HardWire.h +++ b/STM32F1/libraries/Wire/HardWire.h @@ -67,5 +67,5 @@ public: void begin(uint8 = 0x00); }; - +extern HardWire HWire; #endif // _HARDWIRE_H_ diff --git a/STM32F1/libraries/Wire/WireBase.cpp b/STM32F1/libraries/Wire/WireBase.cpp index 36fb8c0..ff0dae3 100644 --- a/STM32F1/libraries/Wire/WireBase.cpp +++ b/STM32F1/libraries/Wire/WireBase.cpp @@ -61,11 +61,10 @@ void WireBase::beginTransmission(int slave_address) { uint8 WireBase::endTransmission(void) { uint8 retVal; - - if (tx_buf_overflow) { + if (tx_buf_overflow) { return EDATA; } - retVal=process();// Changed so that the return value from process is returned by this function see also the return line below + retVal = process();// Changed so that the return value from process is returned by this function see also the return line below tx_buf_idx = 0; tx_buf_overflow = false; return retVal;//SUCCESS; diff --git a/tools/linux/dfu-util/dfu-prefix b/tools/linux/dfu-util/dfu-prefix index a7e179175b7e6ebaef3f489d73e86352374a5049..88e2d04d6d3904e7467d3db63fe5d1c3cd85213a 100755 GIT binary patch literal 47440 zcmeIbd3;pW`9FT{OqQ7mSs;jElK~P5LP8SuO(u}Q009Cd5EKj{nUF{}GZPkzLJjdl zN>SV@ZT$dst8LYyRt3}mZn(4`0g>WvU25V|sSDzo@B4l3Id>+Lq@T9GS3m#!Jdpb= z=XsvL> zgbO7JxKbh-PM|YLdlb}qbdP$eN-tIEX?RpQrlGDM&G4^4)vv(j0Y%zFAadj}2z9af z?*+<;Z%#7>Hm7+cqG6TE78+{3h0vp)|7=Q7f{Rpn-L=bURX+_CDMnRQt{OLHR8?78 zRb@@X`n2^E#-)uLlkTrg&yw|~eag<7Unon`?dS$YpL^qvF(C5~UU~D;!(R?PxZuQy zbKd=H#Md7$8OppQ{LzN2SEO5PHhSC0>x;ks_!~a(rvu6hOA;o2x^2J%w|?0RtZvhO zHs7cf-H78~#ta;s3fDehc_+{Dr4fFuJN& zeK-7)ZulHNUD=80hX0Fh_&0UKU)Bwu@zPbfS9QbB1HUICEPwh+U_$8eJQFziMPd9} z#jgnCS1A6MLsk<;A5HYlLroWkA$51pH!MNqx zDP2Q>;_{NpDpBt%sj8|i75+e3WetzD4FOT*_xaX~hwJ2X#Um5U;a@Z;prB$_lpQx?#!J03yc2z^Ufc$!tOg~wCeW19y1cgDK z4y~@Ptx@b^F)MHO^clrj>7&!fSa=Z2N*{|x5H|JCZeb=Tm=h6}!+Zm?g8^+lPX+o` zIyrOvN%4ADR>pD$d0Ej7{g`hP?|^1HJ8h+eoI4D?~*IpJQ34x)6R3%>-N@!Vm42%_01_5c#bk{P+<5 zju5_%5oYfU;r9%Y-xI>}FUYDY@Bh%`g3 z?Wm*|k!Fas9g_4M(st5&B|V)qL#l0$q$iPPD7Ed7bQWobP}^onUqG6n(^eiW@xl!NZLl4A<^cR^w(oSGZfkqB>gFAhCrK;^arHb z^=+rW2P5Te((LlKw`Bn|Y?pyDcIm z6(Zi|oMdn2p}g&7$qBicAGcl#r}wWM=n)6XaA>K<;UK#!^HA$FWJ&zMRm|Euz(ekE zDzF1!r1|~NyuZuao|7E0-;=#k9M}apZ}S_?pBw=TBBFINoNPSX9>3*5P>roQjb}%# z8`7Tq)cW%vxh-}JTKm8tWVNu&gC6L&CZT}VCr}-Dza07A?SW)R=J8gxXLj=u@3x#| z$L0wlzNra1*;27>J#?~LWLQ-LMd&gPvL7RdHBM+-VzOf-oAG9{rx(Fc>A z3U+3D>lG-{+qf|~LBwyF4_0>LcecP4INIa4+z;XG#*dBorUl5!Z8{Ubg@YvXxO4+e z(;AN^IM{|Ng1C;q0VTm1;p%tPL7%agrj-q8bO zSH(ANr$dcT7G1m|dwKSX>`StXpO9Ks5qF~|C^`_GGZEGs798x4c5S^nSctNZ=Ie

*o>PBZq|qN8B-Rb^`=Ij~}!Jg$S{4 z!St1)(3|E3@HU=}^ESV?w*Nlna2o2l;vh5H-zwMgE1oE4O4oD?^9#K{{+l##_K8toRMp=Ti!TiFCFo{s!0SjJ~h zaDF@J#s!wQahhm|{O|_oS;qcOh4!N>+AfDq&>wRijs0&}IFMxMFyD&mw`R(Qi@ge2 z2k+{S@y8RgjONxp$U5jjrCY!KCe&K_4vzHM&EFL+p56R8hIsQ!ETDA>q`b|CXJa55 zc@y88yS?}A-uUUQ-saXk=Ue+=R(RucTD{vNuFpK~{qhSmY+rBl6Z^Q3@W#(N<()Y2 zM3!3wF84MMd>)9mIW`$y3~v8AGb%CQff|W`yDKV^!H+K^Ea*QXcggMyZDLbS6ZGK z3_oVF@m~0fvK``s?U&vBN6wSYpLv^4viX{x4WxUUk8WSs?%lqzk0IkAyZKa37CQQn zari?=Zu~=srjH)*)aDeA@J>A2@bd`eZQxh<#p?UvK@ zLk*p$ASdmjO|$o-itX74Qk!1{Sa1Oj zOGn~RoPK1Myz$`Ow#m`jd=|Cec7@nHEiJz3HK=UfWS}9B13Sn?Uh64NV%uV!ne5qI z#{n{BoOzp%w61~nRC1bg6XKhm!F;fvlpasp?;{2C4sYq1*7HyeG&HTmZ+Q!{-qI@) zVEWz+gm=)aaiq03%x;^PU>r7W&r1kAxNYj6A=cC$-!u!FjbFuQKg!uT{@POrnwG)n z>C8h1pTP{$ItdTu0+q z(ec;3%t}6#u=#69aXxQ+d)nr&`^9hRi`s81?7gia$v8Rj@9{rHON*xCfx@O&ak6CI zIlmr-_BtNO+g9jqq;@8_jbGd1n|h$I_=ocC@eg@yEvJU+F_L}B(bmInN6Vptkaa$u zd8qA2a2fMd<2TTs4}Eb7rt&aGIo*fR7Ll1#&53gc*Q)4LE(kKb}TT7vP?b^@^|=Ls~sAp>Pv zeAA!7MDL*U*gITW9+2zHdQ_(Qxt7aAoZbF~jJ>v9IDs@DZfgdBrO1|wp{ha`vr~_O z7lo#BJ{SLxHv&Nv?L4-vaKPcW;?y$3c^HwC4O=ZqL)0YJY9o1;Bn$MTHM*x57m~46n}kXl7~XC3L`y{ob0?T`B7ndEYJ3%9;+xOF_)Q4o zQc4UDapPr5+!!L^m4y_F7EeeaqrpUcn&*R;3V9xB{^Gzx=+KsI8+xPhqg3yErk< zJCPs%@Z$9SytLpf^ZwIV#unn>oQZ=g2Zxx1t-X`W4}aj;T99l&cqE`r(RR=mfR0df zBMyN$vr$*yhI%e~x-YVCvuXLu=e z!zS~BmgW%V-6k`&<(3fU&0ua@oYZnp2(MA{lDRHvIRO5}D^y`^mB_Ky&&4o)3`43~0#?DcV7uuVkmeUM=n;oZGT5M5pyMXQf;l z=4gA%BCRM-UFxjW`V>Uk9)by6-!`{rFPYtZCcAKU^Gn$UdD~OY4s~ORzdem`ao+Iv zGGFx`{?0BJ!nvQI2b(?)oTuXji?qCEocr6e+k3y}ZG6J;PW-Up1GCoFB~?iOe)a@I z9``=bE-$`|li3OObjqETL7TOFcP0-chwGD{&Fc!+eM zR?E(=ahKLsud1vmVWr*cDg&r)$t0I-92`)-AGZ7fUsY8}eWjmP>rrd>6op*qcGGyl zZ1-X<c6EJ8wHxS6+{$(@t}PGXR=dw#Qd8!xDDk_qr!QWR zS6Gmnx6D0%fqQB8qD9&B3zoU^t9&K!tln2wTOV+*YFO=eqa9QHF4LuDwGHkXpRbHe zf1R(ivV4QP#LalBDXI3kL`M1q!Juvk;P!n;bf>2HhnrS(uBWQfAMmHIMu67VtnsJU z;`V*TlF~^flX522O-)t~ObRnFYkXYD2*17p@e)yR5dxm+lfX5he(3M0W)T z0EVL+o&JV$Owv{~a!xZ@Zhz%!Okxf7J`uv4v1kSi`uy&i+JGD5xwHb|RZ`|osWeM; z%ixkfYpEjrm6!WCSXuO{%GF{9e%vaP>ioHj!)=vsb!ANr0yMNBJQn$nl&}G>uN%$COJwlt~d`*a%QYg$(Vpr7sK&M&Xlob z?lqOuU1Iu-9Cw*-ZDlE#6d6l*MoA5uR{r=`f-_V#25q3J6TcFc`|71wh#Y@Jl#>ePA{i$9fswrkZV$gHcZs^VP7>8r9H`js`Df*TlvazVkl7rAmGA3S)lv}8@|nB#nI{QBw- zaHoJtN*&IjEKY@)JmUu{d}uoS#JkR%chRQxfl8dhbdwp#frOvB_g+fqy=?zygl}ZG$P1P$PP`(2-v032 z*Q?22_~41p36C_r*hsi!XH_EMp}W?|iR1FGR((hMqi20TAzZNBkT+aku8JxpT{<=X zYr-#L9lTd3o^jVqCcGq}l8;`9ce7W%L|A{>>RSnqy=$LBIO{~jT*B{~VtM0Lta;FN z2jSOuJvf%IYUlma2~R%z$g6~&uO7Xd@SUntS%eMC-^?X^A@(G1;fiHbkNuAD?u?hu zC!8eSSV*{e;h&!&>{D_SH+O}2@bf>&31jG!4=f@5^P3L5Kp20=WAdkoUHfdQq#au$ ziwW<4xyRFl$!#&b-zffTW9=xyo_Q5TgufeDa+q*xTKPkSJF;I}OBi+8tGwb9kGhZZ zPKLN3;iXRqo15;tjBwC{4@D8)@$Nxh^@`Ca_O%k;`fT)i!ZBZoc*1M$a{i1kX=mJD z2p@^PbQ59P)M{R$i<_&;t|K&-m;ROT^Mz~H5Uwhzl6SmMW%!y%&ljscCH(lNs4BuA z-C@Yb9}a)+xQg`BC*!{$eEQ|RKEnLAhkFrzu&-qs;l{1|za@Ng;OnahXQ#b#4&i4T zU;HVdFYm-RgheIy&m;Vwg%3_542VZ>BYZpKkrRa3cf2`=@Xt4$!kum*s-HY|JK;B< zpL~(<(zePOgx|hgGlp>H*46hA9^JR{6+(YnL=NG51MQ;;i}PH+C46>c?CXS6E{n`3 z{B5>v7-2#}Obg-F?jFw)raV}&l<v42P>oV@(8hY9bgI&g^4-MH^#!iOF>_zS`wZ$D%w{KfJ6 z0)!K1z4QU$@7EpwZ^CoVe>H-zvCnIM!d@|@?+|X8Ty`Vjg_l;x65e&urI!=Nyb$*; z;eWR~Zy+3YuW%9Gw=4Pz!kio8PZJ)$&GBD^6`vaC5q|%8R3+hxrK`Rqe15fWGvQ_9 zs`?VXAGM~2aBcq+-xIzy;>Bjdi!Og9f$)!WUSCaE`{w?y2*3KI3hA%vsOk1Ql?nS9_W!qk|@?kBwdqCbovjJWiH z<%GX(|MTO7nJ*lDkZ{|smq!u~y!VZZ3HLr;_DjO^KP~-;@Rr*yZ6I{rP;DdpO_cK% z!fE5;J|t{f9bHeDxYT?M_NqAtZzA3M@_la;-aF#H9}!OI|4-HfZ!O`v zSq~=>{`DfqR>HbVA4-*)XG z{M+%^KNA)-M$9LC`~mw!!jkh>|C;d2J}ZwB&YM*^oAA|jH5U@jx%Ak*gs)w6@@2yE zm^VFyrzf8pPq_HrM}I^3)UHR~Al&rA{j&($+8@jy9PsI5j}iXl@dM8hX58?=V!}Ib z`$IBe zK=`X`dOShc|INsY2)BP?OCvP;+b356va{T;wYTpB-1B;SI~(i5x7yp;xSqeXx4#9r z1JG+A|Lyknoq$IH`Qvl`JCFx_tF^to4pEcvVSD>tz|9}wo-5#KzzjL7n9tq9lrSz| zB#iY5M*kksjvYpHLT~T};P2iy+uNn%6hb1OsiQp3Z{SgW<*V)On^CriOPCp#G$%f0 zony0@)^G9!qmze#EA?{#i%=IrkrOB9hdiLm@wW$c-UT1U^tgm;ZPVkDuCeFDxwl75 zk4yb&#Lm1FSV%@$af;Jyam>rkUXq)d+ z#fd3k4L~^w$d?1ItMcZeJTJ?ULBbe zm(dtypI|dxwko_VW=Z&(?RT!Yq?vIE*>R4-m>l591wJQ6KJT6f zy&Y}s?LHck{hiDH&Sih+vcJ9TZ!i0MUYw_@tG<@;bR+ESgB`m6L;9fwerSOoTHuEk z_@M=UXn`ME;D;9Yp#^?ufgf7nhZgwvT3|<k5|y9VO}@O>2ARd(u#h%lK6>7&y!vrL)MlmSEDpE8G_ zLzZwz%|p6A+|k4&?-@$0<6$I7o3LYgGW8SUJyPJbo*+7ki}o1veFTs}NJu4LxeB;j$TQ9VKuUYCn@BPEgVdWvFEk|=UrM#5pNh4e~S z6|K39jUXyq!>QB5pu=^pP0UGb%m%U9^-C6duCWxvRkBB; zlZ>mtYjn+_&H&?j5L;dMl1MSuL2QTXGU}uo%^-HV){__|i9N1OBr+s%m+NX0nUdJ+ z+D;u}yf(K}h&1oUJscu@}aVGs5?-HyEq2)XP{$-PT+6T!U~L>y&pe?tk5jOj!l0@IPn zwy_oA;253HBX5wpofSP%x-*N1OKC|s{|ml5tLcKnxiAuV%}(G6@pz<0IBUsI5(zzA zu@_RO9Kx|d;v=05PS*h9 z>1dh<0DDH_5aAls3XNU{4x$&=0!FU{;5N~-TxO?4qtITLqBPN~0I1O`036wLCc-u1 zd}hlZ@_LPt*%^>T_8%b?VYufq+aryig*~I!FTt?&8jhn~Byz`+t(+}m=LYNEWs+ut zoFftklPH#%JDB-nNlR496`OLX4D=HhLdl-TkhMQU>3)zl>E6%FEE?*4ocVbSQqkv+ z@X8n-K3y8O{1*LuF5P)j&7}P)j%19OimaqYWV!6zFv+yL?|RVv-c+(Ri0}SJq0`Fm zZxk4r{f&ioR}wsucD1Z!cl1p`yWDpfV)yHCyE;E;mn+PE5o*@{nOVNg0V@NF*y2-+ zfhF+JSilAdKN%Re*r0IUVwf-mSoC@KQEvfria`$IuS3Q{hPeH@&70ipSz{6V{e4=z zoW>V3N|@o!WNrcDayb45;~70+6f*ei*PXp`$j>0QEXD)UOvds`#QM-j!Oj?ZAC4mV zP8@#@RdFsmqFf1QYK4nDSV*4Bu+mvpGhX-sY$aWcESH^|#+i2a`?0ccm)SDxi~^^X zkDhVbxy_uZzp=<^=f-n0rLYvOE`NIk-u=hZLr-2EjH~HI4(4@(4;`caQ);j z=aW?J=U&JsIn4&zD60c`*{UBaZ;wG@Y>31{BU7X%D_5w#G$gZt#Yu?;N`mTv5D96! zG(`PpA(=`&OQfz*5+6bRUQ0rx?ofPo>Whl6I+i=>Wg32y68a88{q79W2nhr3us2hb zV;hhjClIztX!_WzKt+o|F^u3`2RKf<4#*3NFdanQ#q;?EJatF?Mxq0W{#K&DMV50S z4UQO$b~c7_nsVCjn!XYcCoVpd6C<|Z$b}>$HtlX8X{5|UGcb|fhJtzwvT>BB(S#T^ z8J2BJiE|K1W}11*7&Q>CI`3iDM^=`^n4k6~c|6bKMENQ3IC>Z5_>L$mJ&K!edptr9 z*s9WK8fQzh;Ebms6Pq=GSu8>on%Q^Pxp*kmd`wmD*HI4;yTnLtSA{tAs8FSiip+t# z`ggmjz$LPHjUJUR*I5j#G@cyOwy{iE@Ni%v<69hDqn~HKJUk2U(|FQHoj9pye1?N- z3yr(CNV5zmKgm$d=&Y(wvQ0|fvQV@8JMYmf;xm>JA441&0PE2c{LDu zA`R*`bNz2K*Z($i{ckhZ|2CUk|Entnn|T>v=Vd@tV_gI55K zZ;2;3cm?42j(C!TR{)OhiMt)V0&uhwPj$}0(IE^H8BSgSI1EWla3(XyCJB#|R{)L( zNqC(u+KrS%zVj)HMMN*^}0&v{93P)Z6JroYE_hVut+rjmIOwaGZPjKu;W=!IXzy~x!#W%^b$0B%JqKFPoQA*G}rqH za=jmu@;S3FMQNg^T<`ZZ*ZT=_y&p3o5kB>l>;0Z`z2DPZ@Aop7@~fa`&wxmxxs+#J zdy8{MN1~jaj3#3#Gg)C{CnKd#U7%hVzmT)-xxFY>z&aXNQY_7)6W3FtfYlJ^_=xY3 zVvj>CsT>pwPAaX(l1gSI@x5%uo-ZM97A6JytQW?uloWlxfoWSm8LajQ;QcaT6bw4j z??w}+fBlP#YqVfLc?Htnpgh`?jnHc(MD4?A)1C!(;s-d`hqKy=^Cilx-lEsHAR>m` z55B#Oa^s;FF@%|k!(F0XXY2TxmgAFnRWWECv zgMUM^fr_)RbR2?`){?lT2iEZnj$7kBvV^yAG_JcID#=5^{s#FeFRHu~IB}hC6dIZ5 zb1lx-v@o4-EX2C&d@jPZo97!v12&4R;EN$m)SN#RhImX zvhGG(88`g}B@biCE<4}Z!n8Z}oCFi==zz|L1NP61LO6PXGWCga6hSU$mq=7u&N+R> zaE7^C*&8hFqu5(+g+#IkSuC5Zim<~iW!SXhUcYGD_DzkmNZ0-3nws zk$Zq7#l!D?Kz;%wox^p#vZH^YFz!sEoqA+F4VmQCK)weeMm(q_^~KV4kQ>HgjK#xP zNW^Ex!rjAIim`kc{V8V zAnV*ijMrtWfEq8tokV#xyNu{4PTI!BoP#l(Ii(NaTFLnRQDsd&W=PI0KSuQiO3mL> z^P&WhH`DO%dEGV!y*ltp#GCPZPOhgx4*oq5<327#p6i8a4ztny^kGP)FdiTx62Zkj zIAQ#OWQIZYG-JfDo*w2}uVCDVQ}(DOEb2+l3z^qgs4+5JcJN7=NoOyF`N4mZB+YLH ziLEdB7#WdR%nd%ynm@&yzaeKRr%|secn3$%^XFqZoBSo%YkLFv5XjGoyb0t(A}<0N zkHL}RQ))G`<#DfrgUB-_Sy{bJWgnu|W7zB`M$@XacoFoa#mz)$@pf8#v|EemoL}7M zcvu(FUmjugrN`(iNBa9zAFc8`4)M#~9wk3USCr%TBvdiDq{CycR|VgUs-#?_%!CDC z(hzMYi!b=S2eaA`dD{6q&qs;S9Q-=$8lV0Yov@YUtL%i&*wn{J#*qA+Gxv|NiXO-D z^;V*36W+^Y2x9{}Ne-~*AS4Hve2?!qHb6sfQ(R9aMt|cV#n}QWN%*^333O}$zCp%J zW4=-qy&n#}0adhs)6VxC$uuUimx(c(OMjWYcZkUpV|J^S;lwlq^$(ex&RRmpLxg5& zA#)7BrX3mcPKZ!dN1?5jrHDRe!SrUEDHP&t$~h|AnkLOczS4z=p)Ry|f~wL=w7c>0 z2QZVI0`@{QS8_if_p#mjDxoJ)5@s9R5)tVG0!+mON@a27#FFzDzjq*@U={4k``vF*56DExrUu509u$u z3!7ACM++5}g_QAKw>w{ZW2Uisc8WR|Gh~*kcoK*Ll*FLnxgM>I3B$+|V-|%-tnDn3 zA;zp$5*)bKD2Xd!`+CKn0NZz3nqtgeRR@N~^NQ~GMh`8tq@>K@SMNUwhqTd#uS`}rKQ2EPM5tp%uIu^0YcuUn~;%v5UsWfUoPZv@y>1m)-R{euQCLqM0QVqtoXogYK z5izD()sLb7s~~^uWy;=s@Kc%;5q2u$JB7>?!|0)}a%mecB+XTfq@%?o8$;#S#tvmj zZexI|aZB?#I5s!uW$xhINpfU}6Trsh5;M#|eh-B{Gw=^0E?w zD>4}m8o$+6#?#6NU0Ny8qucc5Z{b!RGEQqNrL@xCr4_#U$V}1~dtZ~Ze0kUym#AuV zEv@uc0v&6_S0#m5NeZ{J&)BG~JVGnOyR^c0D}`9mLRRbUHy+nk-lvtRU0UJWn9L+k z09q)4y?eljfHm1aiEf+#mUd}@?`<-ZY?C@A1O=Il`;0l-$}})jwsdKQuX8e!w6a49 zS+)7Cu|r!~Lo2s;X@xI+3bCSvFjdK9{LVP3t=#N}m3>`W$+l`V@{khnm02`6o_25;HW&drqJnL}oq2YE{- zcLi$S<1JY#SBpU*k+T$8aj85RsY-dB;Mn`~{tX@HN=@d-(t8W<=O{FyFK^q>FRo!s zzpR4A>&{ZZY#qeMAYGL(tgjo+ z4(#Yhha%1kI%7k74;o|n#$wzdBytCXRE@ygA#`t%QFyL)Zz#PQfD)6XpU_ANtpU#2 zF_2~(3=6RYu~c0T<_!mdyR)p+1;O&C^__wXgb|?(`YSBp=oqs)gjLL9L2rf(!dJ&^4;{0yX3QdV5xAj|n$R&)d+JE-Wz|wPijLI8U~nL8 z(Hi2Ma6vX{pI~R=W>YYh8S>0W)atN7@F1kql+5JWK!GVL0>#v82f_EXFR>ch z7GXpcMcAV3IRWGy61yC8?f!Jf;6|CVBkCS|Pe(6%X_39c(F@pO zf2Y1KFRckwseW&$!Mn-I&;c?A{>^UZ=cLR&v>O*b^G&0CW9G&*ZG`eA80+WG>Ad)7KhO#wB03i-rF1`w)%)$iI9-({yU zZqlzJRt_xFQSP3)?BbD*HirjtcKdys98)Cnf^b~5+>!j0<955tn7Vqk-Cusc{qn$! zb@sJI_L%f#%PwAfJq4qliMk!uUKhJy?zT+fiUrB3^8h4+uyRLe~KB4GW_TOCjOy2be+w3nH&*V{l%bv$?L{U4hyb6*Z z8AVr0f_lh@mO-)+BZ(*fBKuUzSPS0cYL z9CI$dxKO%M9(B(H%T_F&e9@0bts9<=j<~4o(UEzhVDwK{vStq&j$Ri{x^T^Xj=2~D zu?Twq6npF(`)ya2+npyrYlyHpdPD3zfr0m(V59Al75WIytaUHDb}qYem-O!)V~X85 z#eNxuZj+o=5wN$3cO6NN-u5y_uW#(LVgHD5%z4CqKbjZOg2OeyzOjER909cC8&{k} zX}8*TNt`Wrt8I$JKL!448|Q_WuV8Ec+BW4<`}!#>?Ze9bQ`1_S;PlUzEn8-9D4NOAA;&b{vXJ&pE9H`#_7_Qb1h;=F-rBK9iO^JjCH+c)fb0Dts*-4xH<^>A~F zy+^sdVakN*bL|_7?9TMH_J(wO%#?|FbLVCjPMth&Ql5SEyY_vXitNt|$I0s+yRixN zeejCA;nSaN4#x8XSJ3hQvB?0sUlK2v#C?)DY7%=Tal&RxQC8h`4oFZiXAZv+J6Nj<_KELX5W9sE?W;wRK@ZwocsyAc=iH(&kY}k3s_%n!(iq$ zDRUrE%!gI+{yV&quDEc1?)({xmgN`Z<`m~I%AGm8NJ`09KuWm=>|_|71zW}CRVAza zd{eDFH3)qCt$qz&r;Ja($@4>HO|klb+^W*D9Qj^LQCX&5Xes1NX^Zj7M7|PJ6xY@I z#YMS`7U(kJAU{|~2mK{$eX?YHX%4q2`DHq{JT%ns1)}mTjsY=0H#cW-@#4an^q4;J zZHLM+))F7bYp4UjH|&aw%kb`6QEq-y5B0!_t)^Cagi84`Z#i{iC`61?EDxVF5U7S#s`(Yk8|>ybGQ6=BTGEYzPEEUgIE znZatlVODw`{^7%U3vzOcvvYFTEh-#PfM1w>qd1{oIjk%*U#Keh8fKwiT`HuV`3vUf z3ORTLUydqYM?aNTOf|oB>P}njPFs-W zPAiw6XvABrYXgXY+IqaAyPls}EUv983uz0qP;q5VnGc^MEFRduS z(Dmz~Z4OOF0>j=9!#*?a(MaoxRRrMG)%b=apT0z2pxx2J=)zU}q@%3p3~%m?xgu{K zrvNqV%{I15Wn-IzOy$dOJqBt6*b#!yPU0<{YCT#kTgjXqvIO3jUChr*7MC{E7njyn zHB{G_CFbPjnXZf*!?Bs&%5PY*J>{ymRCEeTQco1EF&}XEzxK%#flJkL}|CC^fUX0SR!qN9Q1|71j~GZM!)N! z%`eudHc0aYmU;d3xFHs6R6i?j3Ti6o$KntdB&zp&+^+nviHzMEKWq86LO*SvWBImX zwnFtQz-=OHx5h6Himgf4h3XfV+eGGWjo%g&(+#2PYls#4iTGe8 zSNtoL%(9GMGG3waR{vh2%L^L6n`8LGopgrFWzp3c9XK8frO_zfhs8f-D_> zzY4Ofq7|Zx)3JtINP0KQ?r_FM{>esBXjmTzz#3x|jYB>Z`k4Lp(qs z(+~v>k+0EOi?v9jk1Li_SWh4827Es#tuPDZDQux7lCRPKu~>^Ws>5xO==5B%^;Gff z?z2Jyqvy|ckZc-h2AH<31MS}(UaeSmv3}ETO*|TuQS(sV%mJZB~qZ#28*?LgF?AMiK(~ni}hl3vh@tmkQ*b0?bf-w zgNho}p5Xkf(V$bEnngRsZF@{u*lASP9fmY|y(LwkQEi*eu&`6?Y4cjz5Q{W=t7U7s zMsK%RD>SOBK=X@sYf2Yt$k%9_o~z?LWkb8nXxDhX%8L?pcn9@>PTq#g*&wHNu2#C> zZR$`U2(9;TccV6rYx8j1hg7+}@M9+vhJ{ACmDXe}(dbykGJ{f6GlGH|ozp>3Q+Eah zHOd`6Or}Lmt&B3cxL2XkTE#L2H8n5V5;T$EQP-@GRkH$(@|_b*=wFS#u2{Tr@U_Bk zz>jrGEJ2l?WjVH7yTIK%O6o<0wgy?;2FBFKa&-AHg$8}^bSd1~_l4T`B&!Vp-%)u!22+ve-` z7;QCCr>XNv<>Ipna@1-3l;SzWWn!)4#)!`2uD|Nf(N?z?YIMBS?Q4bZc8BF!q1iCO zqqf91PBFy@M_Plp(Qvf)8?ak5wQZ+pFl5%C-I}F~>mk;PsG&O7v=uxSD(iKYzxf)y zTd^VpHcsu#y7MkrfliTit*YB29U3;=P`FfAg=rZ+3Ck2G)+XE-;czEA z+~?PcA-gsIcUEh53NKwx-D6nKT<-QrYn|$*`&_q^T{zo!U!_7<&s>tJhp!$mlBo&v zi#Htn`R}QL5Du) zU+Y<(yr35*rtSZOxwKfdTcy>0`d*A>tg}d`h}0swB8au{dUO$fd<6!RUe{oqp;3MM zV1lxWb>8pwN@PpHM$m$)0^$FSfd*i%j_pj zH8?Fn6A2!*`3lQ?fkxL^=9g$x8>IPy-I@xT@6_koe5qxAp+{c45BL z^u0-${ci>3DMb^1u*xiWP@#jZGV_Nhv>?dR#cx$CX-yNSExCfv6nfTTm!av}~h)F5k>Q1+G^EIk<<4q5H!$aw2 zCmWlU?wyv6LXGM#spA4dqqDGEp2-{!nkrOW2x@d`2SH8gH_CQ#!Fr!6U)#hO)>{EP z`TSI8S-s(}lk6*|<;3WoTrx9D|}?b}&aZ^Y{)o7P!YZ@KFv ztDAL$(m|W)jdh)5wah(1S-pL(lkAO3CPY?mlItX^f7`z##v>y`|8lH<-ir9VwUeX*x6 zKEvg2P;$2`s4r*qHE6iJ_KVNUGwGGQUV80S=WV?n(thd{hF;@@ujcfM)U+CMROL7o zEU9O;B zi|D0}UdRPYGBLe+)8!?ra)v9I9#($1{y0^h_Gg)*mn&Ei=1;i(CF)eJS1DDB){7#& zB-o<(S1Z`8V7NU!e_@}FOk)(BsNiG;^A!x&KdShzDEO{|`qU9FFVg)Rs__^XV4&WF z6&k~ndcOKPk&dst`_i+g&rS>A!8Mb@mXmZooLiPwStim+;rYA@kzTf;2KG#dhrncx ze#A4BC`KMWk6uCrh1KDywDiiFN*n`xCN{ks1oCR-vvKLZisJHmJXl#=fv3nU%GAJv zf%PRDObv}+S_&~(FR899g&(yrh(o$8#k9Bz&kLuQ)>c>h@I+#InQv9YYABb~tj0Tq z6j@nQUaRqvRjcZKYc*9>S>w|<+DoH&JX)j5Ql|#*z_4Q#Ho@lUz$0PD)oy{!L$pJ( zBPU?U$S<(MOz})|LFZLU_93W0PBUSNy&re|lH^exj>n zx8C~HG1o4?KH8B-$}aQ+C>`_c0`IBlBH6{DF1WPg?uI|O6Q5`H2=Vv!@C>|j2&1KQ zJNE_OhSz=YHP~KFihLuTkRS z=Tg3N{Okk2t9l()cJ$IJM;Urr+DQ@~-S5hw=ex0UQp+p<)peI>ll;D7PZpFheyGhFtJ-CBO5$n%#~472WXHcEjJ=4gZ(j@cH$LuIhET8~%&k@IM8g?GWDn?clRL zSBAA`B9^|42fYVTUuqh{U`yE6j!EeE^ zT%qKBO60O`^^dV`d^SX%NbfEtg%6~oHvHv9C4>XjQ zW5afF@thfpit}bKE+{U>j){8TYV6$gVY^CoF*cUeU?tlH3;Wh;i&t0Gt}3Z2F2gn- zY^-TmFR&7>tMUbWW$ELy#!iIgE`+d)rKZwcVPhv6s?P3aN1faWhwW3`8ClNm30fGPK1Of44Kmp;+;Y{C zQ#@yF@gg-5%)qenV-{cosU2y0yB@FdYa2p3U-t6)%J2|{W^fCvxe+(4ykf+;9)KJG zU539La~uSnT2s%1|1RtgMFW58bYopl>sxsP!VFV3Gz|s8yD?f{Uw7-rBiy0Fz%ea% zNSUBQ_4W06Kp9N#Al+F%2l;34Ek<4bPMb$+>{N^~lESO16tvC*ik=S`gFmf*)aC)j z?^H@4_9)0ZS**L($BIZM{z`^Zv8Au?3-A?;OrMy*I)=9&cU$3ue3t(!qdZb}rMh)C zL1}9LwVxWUK|a4#scC(mVW-kJt>GPAkPG!+nH84eK;riErN552Y*8Pq3>gN!BT?G-D=xbS?}O}7`kTWV zJV7aIcw?BpUVph66iAEWO{kArPt(5u5?a3go@zijuH4Y#o#KCw(%0>;*Sni_#S<-6 ziFi7a;x5oE-_lq2V>a{Md`S99YLn_be)y9@sJ_0Rb6V-YrVT3ty8pDjLqOv2$1%X9 zuO|~OH0f~paQcrBV-stAeSawFpVU7EUHY%}^?fAwKdJvZbQybEU*B&^Rr*J197)Hg z_Fu=rUy&DDzP>MYcA8YP;@zZz@vrTC7^ZLCzw($GN427YT2I5z!4ECpx=zbB6}-xS zZN{S!1-}NQEnR@wGb|I)G?ARCI?bzb=#s zJY4qNZuG?rQ*r6gjt0W@hjydCwA|EtN_V_66Ryw4_rrM<9Z+p5-0;8XPgVNi?e}}X zsjnZ3F{xl#x=i-3#3AYLLF3U;k8-401C5blmInFXz{;%J=-v)Ia*a`2YU^GI02D literal 34543 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

m z%g2~YA=dKL=j@5B!~`q^!^A=`cJs$ zOL&w~={XXX2!NULLl3VCh(8;a*cUC+r{d794TtEqZQFme_%-FVA&y#4t z;j<3dYr|v!U~jnywqcQd2jX0vk3@AnQ3ER7n%^Jlb(F{1>!rgV^+2oaXkM$6F3e4| zK}i^R;cy9!fddY=u;~$~3VD&@e9`nQ+SEDmC1|}N0)>l) ztuuNyp2b;^K59H07rUtk+9OUaU~HY10Q8z&K&fvH)(vVp`51LD4w`Ra$f68~(g~9} zs(DWk^RUT0ulea9=Dj9!c=M}4%wK`IH9w)bC5YE3c!^w>G=ByDl4Y{8)(YfU>tp6G z5sTYRFoov!Zq5rbcQS-qlLPZL^Y5a2q~-lZHT|0}531T=nQuj>L0=8-EA(zY8&sy{ z3}>Zm8|G+x^EOpboVw&$tK}JpwC;lnT<1ljQ_e}V>;Ulxv))h`r z|9f#;eO;UQzEN$5rL4XL(A^htw)xT|J5h3Hn@;=c;a~D)!Y;vILSP z<-U@YuE}K;mA(rdj%k9*nqKIVHq?~KJjxeAzNoa+lFk4gBRlO``4{CD7G&oxa?QEOwIE~Oyo@;o zi=26tzM^`ctIk(jQ|EUTH>{|4!R1NyPF%kuEvjj7Rr`FUWU`$VWounUF2+xFQI*fB zT~uAU*6g5mZBAX2nwFX>>L!|2gb1r;4Zc!SZ@wAy^$jH@h~=_|N~l4wnH5pJbWCS* zb-t>aRge_%BxF-l#%ml(4SxLS5HzNSC)JNI+oE#al@;~=`jizI7B$r?>r-m*t3&zx zl8HqVvnJL~Ts5(DV*bSXi3J*mnI^}OCPs}0^E5NYHH58($kPx$8oi=v4|Q`3i(~$e z;f^lqyRHlV|J1(ALiCnMdPWHUe_Bsy`S|}(|0pRRomB5wl7vY$X-s8hX;P9aDJ>m{ zt9Y&7SFbsf>RqKZ)xH#`HXSjCAV-v!b0Cz})CJ8uT2A$2Hw_AX^{(m~zpJXqUsA5k!w*-kqzbb}GiJrlVY15lipzW)w5+4z;9te6{+bxX^pcp<1jo|_{&{MrCL(GHb2yK4rpI#5Wlw0$5W8x z7gn#Vu323z8Y^@BYioTP=H@yK)`^bPHA$)CQE@(OpXf+Bztpv|BGaj5PRnwclcy;% zcA-kjWJdnCNgMRX8}E)q_EnW5QU%R2{_PirW!57)gka!S5#IaC@^JT+E7u4c@QT> zOvw$5MX{jZEQnk&u@4$FNNBRAc}|@!{CZpOhpoX?7yA(NI9-&o5l~p|TkSH31{GxB z1S4XksFDp@YpSRp<*GH$AM)g1fss>DSMS&IYU=ANis9da9G=H2D~sw7+lotYSxKUSgo(lU*W5Fs!(&uBqJ`bXl-Q;+-bULBHSv&Ay8jKwXeFQZfz~j zG_E-d^IW-k)BgQxJL+d-W2#Wq{Hy+FfLZ-tz?O;ls&|#tRQvIpbUmE<-}1&p)ZT?Y zwlKKG|4D19whO)0P-@NrW^XyWkPD8Vf7zj;E)j_G@XOT5)kH@X#r&P{z+A`8gngc_ ziX^=D%S&nr&%dLjmGHKkN_P^bZ+Rnz@b>+0t|dIT^_5eETV6Z%E5ebv`y7N%T>juX z!pP+P9}-?S;NW(`(zr(k5Pt63a|xm6(nr4_{98t|xWKvM`0L{5@sHnotBU-&4w3G!V}Lw_6DK*+sE%Ee7EvsI$^`ox3dXfj6T6zzS^QGFWp0UZ|ZA92`6fQn@hN1 z?yJuc_9{Axo57m)@RxrS6ULCIADU14=9><@NEmy^6XK_eo%?OWNgG?jy@Y#T>-H>R zVrvxdPijBEyk<0E_uTS@g!c?6I!rhvxojWd_KY`I5k_442Copc$6d#G=R-R$?v>97 zn>IgqDdE6}_eBui@!mmRC2M1j?{6Wz_4&v(gk!(eVhOLg%kfLXgdH*O5Iz=t$$G-% zDOJ3r*M3!5dL5y@wB!TAFXygYNmyJ|DejP;O!aLhJx444obc0|A}R@gc84w=pE&%b zv61wGr(?e&eD<|HVriP!`bZDbAMJ16N_hE}NB>Fq_JFsF33HNP=Wn#y7ni?$HK8x} z`1gbhi}ubY{OjC@CldO#$8RG%o%+~u!i+oKo=N!XO($_@T+^zae(83?@4r0pGT|ky z71Id+`C9c@!s%O9+(&qH|MJ%f>yyK>2;U!IA4BNPb>2<*{N>Sa5l+4|Jdg114BIfm zxVWfh!mC`}o+nItxO@TOLz`<{gpT87j}q>BujsFYG2i~}V!|EIzczw!@Q$N<2>*E3 zt49cXPkCq&;g!*UOd*`K^od6Z@2fm;h|txz|5L(!4;}n9VYk!!?1aBQ_Mo3|!i-lw zB79)=vELG&GxUux!p2^2))V%KDtVW1)1=ZH2`{{)Dw^=F#g|-081-VzdxXDjbKF2U z?0(Hj_~6dSD+sf0h&@Ai>^9@)gyo;>=Mw(-WJCqwvIWK85dLX}Zv)|_<0|_Qei*T` zns8OW<3AFf8u@Y);o{3)k0bo^%(qq$*1Y}bw}jt*)_e`&wB|>86TWiIp5=rsx1Bga zxbB9Ren@e9nyXgAJ0coXTKm+e1Ic>l-;e?~aI-@a~yzq#hv^@P#Que?wA$Y*a}PB`f8 zH=+oSAA9*K!pzgh|3P^6p|{Ejs~cY*Ncfjt%~ujG8T#nggzv20Q$x6V#v=)YA1pSu z5Y}E2+eY}pq=+)YrBQl!!nU2hYY8jvFFs57a@)!x!t56-dl9ZV?c7cH_hZqo5*9Ru z%^`g9A^QZvqM<8(Pxwu*g@iLNdFg(_Hy59Hjj$~0Z8zbWNhdEL z%)kHfKM+2%^Rd4Xu77dw48qp7hf@jrfBwW1gui(5zzc+_H$0S2c;{_@Oe72+ck}?^ z4H2*Yg>b}zzZDQ3T=Civ!j#L(9wOX7v*>9;Tfg#Ugg1_?Igjvy=BPgs{_dJ?PZ9Qe zJA5(Ww$E(IgnB>wq)I?`)~Pqz+V%r3f2*yH&PqPj)<);1zSGurihMwi4qu;cYuf?1 z8<0O%yWWL7;GUMYwpv8ZsgK&)_5kL6f_t=phX7N>tYSX53ssta**r~O6Q}p<7HMqP zBjb94*B^hseY>qq7)~K1@|oJp8|*-`m1!*hZdD2v3l{S$vjp>Gfw88LBN1%!slThOn}t?APhwd4me(Lmr|Tfhi$#Pzk!q{U51@cu6O;^q|a z1WBJGp#t)D25$5(7c6xxI9wv?zD1-gAZ|JW&x>>mj^dw;FllA?8j*|pyb`MV@o1IV z9x0C}yacWMiRZ5beX-1!#sAlV+Q%MR(LUL)&q{bg!Ve_;TEYmYTNLdj;ZO<3NjP1? z`4W~%xJtsSB>bg>cS^WV!e=EsA>juSel1}{l&oLE(02T9)8*%y^@r9|E*Vu_)tAuKo} z=P7Y-5FBn{ViNZR1=jvB3ZzYYFG|fcu2{DaIHM+z_Tt(pNQMcXp*NzF^s6y*OaVhV zP|4d2Oi5wKd4J1pMBV`q78Z`j?KHb?^h6oEEiwXz+ruL7ridQVOEAL+6ByyogDKh- z-pJcqwj&_IHxY%l-6V_%<2tkC02GNZCW*Z8r=B5hwoJR-FjxbZpAlaXIt z2;k@g^CQ1zG0hP}!SAoNB%%O!NK=XME*$J<@l6k+lUW${( zAj+MelIW(>;96%1wZ#d-?<{0JJ@iWCtZ_a@1-Sz8KBFj6y#PDRB=8hvA1i+YVQ zc|eW9IJg|;-NA8u4++O5)TB8sC0<1n49Dnj;MF^T$Hn528O>2ceu5U)%^7_m3ob(u zXAGH|Bae72@i50h)b5NEN;G3HBvYM{PpO)m4zs40SRjgQ!*LY`j=4y@xNy{aybiui>s|yR%$XDkg*`SxM(g3mQSb2xP-IuKwC)QAz#GcETwEuz9hoHoydtOOqE*15h$a-^yJ-wo#PahFFAL_S^K}YtcIbX`DvL8w^ z=_AiYRsx5))6Tt+OuPCl0^K)OPK$FeE%wt39aerny+BXvr_Z%J4OrB-kCaCcT;`UHJIB`ummLqlg}{g%@XJZmxsRha^;`dqIdnd1dH@O=6|kFjRIZo_&PpApsP zQrmI-x%jxKNnU_zTzqoWB>w<%5V!Q2WH%Tyh`p!JW8ba=Hh49VrBQCEF_XSTM+^@6 zE!e3;uE$YJ{5g)3QMJ~a{;QP2X{x}2lPJ)e(V(&{uTI*Ctc1zPa@x7gn`u|ypGyr} zOh?g&1r9484t3bMF`TKNKF?w2R&g^Wu@+Ta{N@S1K3Uel-QrBU`u?`l8dSchf&0s4 z8k!2^5LU6S5>3CDUfqJ$4!jD8N!qXb=el8UNS(LA>d6pBDA-ovSYWHi5jJz@Ig_xN zd(ll|Axmq+hIVrc#%UB^D2f;8sVJwrwP90(^86uri-YpEhvcaTbQy8KH%-!0wZ8WR z6=96ZYRt(0LN>$dqhG{gLP->n59gX8ubz;#LY}+gnN-N@7s-LtBI~l$UF%iqc%C!W z*`v+UmOAb?XHx2H2F_0+gvzBTS|pNw%P#6;2o>Y6Z=K8^9wmAJgHfuI<=>R~-BkIz z-d5#*!SWx3mgl~3GYwPWTM6AZhp^6e1^ZS{N1p=KhO0+~IS&mtq%IP}(j;*m3STG+ z7uqft4HWKA*M_O4?S;gWb`ojYusec^U(r5O7@!TiPfGj+#c#4Cv|)#XNn*>5kzLrM-zG7mAGGQTGBF zMan!h0n?I~qHwo?HqI8Ks6tEO5BIhO#5ouRbCh|;NXbY2j{BJPXDdr!%pdhCc|4D! zrN@BB(7FiYEuw663O7=9d&CE>4u1%xqc{nh6^~BZIi#~q19+|#PlU>+ex2ILOQ9-C z`x%ZjguhY?P1@)YJBM{vzQd*irv# ziEqRS!tdY`-{_(9Dr=2{OMIi3J{`mc2bcIpZ@mD-MhBPpMuL7NiZ(j9#5elu*8yyC zaEWgu=|6+Ob_bXEMvBf+u*1P6zA;)5yB%EO8>xc0%i$oACWt)_F7b_Yog;I`lS_z2b6-e;mBXufKuJ#>ibd#N{eaD#D zKoN9LlQRZIoU^tGPULQY2;&Fni;3+P6+My$b3q>!Q;ZzV;DSCXmUx)K1$|T;aYKs~ z3;L+YJuJXWhbRXv)C?}@qoM@c;DSD?`;Xwn8C=ju#lH-^zrh84)H%dm22M~~R08ot zgA4koKF#)tC5r1{d^E{fLh;-lcqh;#|-_0T?$7hp?!D47KiJLEqhl0(y6I zK_4d;^ifId`tD*u-(4)|yPFI8I2sccH8LLcb$=EIt@{#~t#`j1xJ~O}F6E2Cx2J*= zZ!YE8)}Goq-NPZdgVCffU?v-^?_i|#s`b}t`me=w+xrai^a8d~Uq`Vh787(lU$CSX zuo>Dp9^$)&*pm=TCPJ24o@qfX=K7!4TA0<#` z_0)R24I*stUhwUulmw>HTs~J^1Vg7#*!dz9Cf7z5siTa;zFaZCX9v{3FPMiU zbI{vl`pMjj<>R2AvtR=Y_Cib!Mop_otc=D50fS?2tXtHu8%O=R>rrds5U^iBe$u-# z?>O!*57i6xw4q$or@G7%L-n~>KMmz-UYR*mU)cY0Ej{saZLkFCiG$M1%`gpJE(aWYj)cCk`|_2!;_>)djnKH46uKp7sAkq($LSOp;-Kj z*(Dqv5OYo+Z3M$SRq7ig^rPBaZiPgm8(BSYJ~?j|kV}D#bW6eRQg9o@hEYt<9~GLH z%u-2nWeF!PVc;v9F9Oe!V*DX?y`iVlnGl6>QkaZJe5?28E3lMGOGg4Ar zbzKL!VXQ{aAI3_;zR>6H8pc}mrNd~4K7UkbnPk?T^oG=QfolCsGgJn}-sH z#E*gSm2Zih3l0!@8At@2ozx(URSVDKUIzz}dvc=G`jE`tK&>xf%bqrdT7||DC?Ygo zM1&gasqxQUYE0q$l6sDtZPBrA|<6Mhv**YvgMBr(8lhL9LwF9FfU(E*!#x`mjUO7wpE zL5kA@UqUMBmr|g;2Yv{6z|q6huovcXZ4VDP>}i8crZ)DRpzI%1_L;#d`vK`0PE3Q* z{-DWe{17E{I!I`S5;DhdPphIYf`lsD3q5C5*Rz+Ylg4f}g@TMtN|M>uG-*~cR#l=6 zaiRlUvPmxZU4QK(s7XvB8&g_hUmzQRB#n?lPopNxHn>ZorSPP_Uh?4zk@S}HF**|$ zBI`CPm<{AvBAGy1sp%K8#JfUMA@2%k7jW`@L1u`VXNq1%J&%Jw5I^sZC-b}`pt_0J zPTvkX3G?%WY0#@r(>YQ74p|p43esiJ@LEBitskZ)M!-i97+xqd+eZN3!(=9*VZQXf zSmkBwcAg2Sp;v!sxK?Ji*TA>*m?>#S=YHpVZp?JPnw=tgW6)*Fh9`h1Kuru9p6lUd zOc;8)HnuoOVpT_pRBh~PDZznzjg(ji-M32qc<8><%tW_a+eKq8HO zDM;u{d!aR|wPOw0SWX7#U|@@oH#OZgSZNv;Bs8(T&^v1Eja?WdSi-<;r*>FXZ+4daW#;1Rj%q%Tde~lf>z3zBmbHqKhZ-Ej*Ae zhQ#kk59A5Vq_qLKeJQ53g*xXoFX$;ag)I`&7jQ(ala*{>olA6g9PVgwNM+c@a6l#9 zF7xGJvO6{$;=(XK5V){>8WDg+^W-7`*nNPkIn4u7TH|NY=Hnh!E^px z+iD!=>63Bt2@p&0RQ|erM@}fC*358kW(37B4nm0Mh|TjOWRmY&}S4K zsZDevU;n+nTPmtWA2R8;G@YXY>-QqC=Akj-B=wRM?P*G4m7|wpStKSHZgfg|UkbFJ zVE7^;GYKuNQV6Dqq(7|Rt+YhApyj(xwcMgcw`t3dp<4FoXOxz7YKiUR7V6vEvZuY4 zcqwGr@`yezUbg6BYDw%=3*U`oCefndp<4Fqmn$v5pq2@pYT?V2g0v_h%e#;2Pbw|@ zsAYDiTKM`UGl>&`5;|%}S02#ApiT78X=oU}qEiiDSsFxZHb@~95J`VfpQ*IO41ygu zcB+N%Z!(k6vRevSt+`v@uCz>~mOpl?g>QKZ(xQYgm5HR^qn}V(%BbbJPPJTawP@5) zDd3hGri!!led4^U&ljd14>k3EJrhGfUT5+hQcSy&S~{&ugUD2@~H1G-eg z_f45fqWYRx`><5`l!;2l;bs^h25y_?`j+#~u=~Mr*!iMDrf3e*j0qUCk$3U7TE+$( zBL5)Jo9s}MRt%|3^L{x|Ui3~QGR?ewlldMDbROazfH0f@r}2RE4(Y5%QDIE_AhLr> zWS;|ew`1aN3TK^ZV^Knz&R6Tlr0^Q8o$y=8i>}srbA(qBW*%?dn8jxN64l$Hb>6a} zo?lUhXAY5V9>gt~Y&T}vZl^@8TrCEKw5*B9iW$z6k!+Ob6R5NI>yr z%hCt}N<|JuHAXxZb5T(&se|W;w$zM=tW%QVIq@W;R3&JOuII$FMD!pnCw??CV}=63 z-g^`=OhZ^CE?y64?;h5!vL3@xS$`}><5TpheN6L*^~s5MMUCx4)jh*4W3ZG;fVI6+ zpn%GU_35tnh;%3XDpN@I9-ybild~{tk!VLkxRw^r@0s)=g4=XW8+CY%Xun@<#Cy#W zuFFJj{}frnus$vrJD|NC?W#C8V2lm^9yr#rjn%k7%2qRXP*5(&!8C84Uf5fiH-uL8 zM~#WXPKYE0w*cqtC`i)>!<6A9hJ(<|R*VSLFtyKQTt}Q2%%Djl1C6PUp<5>lSK&@0 zyD8bq4IhT`)ShCo;9ey@dK`R(3u!A4;wmrAVxoYlBRxf9PY&xdRv3j_zE-5tn<7#J z!D(0VM2r4aq_z)IqkWL7n3X|_6}%ZEh*uS)-Bgf9n?Z_LMWhCYW?cKw?5;wyM{pYh zp&1{D2E-{Gq@5EgNSF2sgaz&{1%j7~n2#`3VS`Y$GzcH7QGgY)Xb+l);FSdg(cdZ% zIvxfD%wsq*c7vjmv8zZKyK?GaSBJ)KkT6sY2@T~y1gl6z^ac&FVQM5Yco7aaW%l7H z9FZbNtTl!az!LaY6dSnRh`@a|L5OHQ_Q_>PJ7&o4EqRakQJfmg5ECqiH zFB>@_Z>_zdEX@8*n7*tSrQ#Qc+3l6KG(AlJ%UNSm%7H9uV)0@v*vt^6@vYE3#G&bMRuqtb!AVu_-YsP9pO$Ie$GWoKWB zyZyoS#$Zd>mcI4ikxz2RCg#Tac2nl!5%+!GqPcds{k2!h7lvwmUzvJ1|)4?gj}ee%M` zQ2mwb44QR^z8%CH>)5h8^vM+`*@lRX5l?%ep8ef+}T z+5fQax!mgyw%T9OpUb8Errl58h^lt1+X%@|^o8pL!Jur>7ft~28=?P%zSG`oyM61r z_jWZj7{5aC6W7~&-fO>W{Q=>K*Vh^E3FHsDF>}e1LSaf-#C;DfT9!X)@s*=jkH|nr zEG~U~RPJaf{mVMG>|x#Lv3TNzD<3pw8MExsMh|=aWP9{X`)%vW?2Z#(G=$lVo)CLq z!!Y|nqtkYZ27Ll!R=E~kJBwYpQ`q;eKH2V=Y`>I3w+T**=C`+M?->brY`xUz@x46< z`j2SF%*X6|;a)@w4%Yzt-u_R`@WYdTyW#|DyVbT+;Pl+Bw#fqj9Qf~ToCIFGg5LhU zZSp1dHItXyhn3Y&Np9W@qi%L&ttn04d-DrP&y={nYkKcF` zJYcV1Xpi2AcK&kKQv2GS58;n?ub%9lwFYKRws$MDH%uO%Im^Cwq1}i|Pu#c}?S1%)dtuXGYzE``p(|+kUu`0Q_6p)f zlXy@NM@?dnAdcH?!#OM7E2)J7XA6(pjG2O9)1R@~@+kJ05IbU4^yn3gm?Q9(&Hm^W zJ8j)CQF*;JWo2H!R=OImX4Jen7kT+oKrbIAz{lV4t~-3AjqkqIW?z(*?VWScoNUc2 z-mA&q!bg|aRQX2ZjfyK8>PO?9f0y`5{Pm+V>Pj0bs%yOY1+&MbkH*_DE9*zs*OiP` zFK#7as>{mG#h2Ym%4Hqiit17yJ^=?Kpxs-Hx7lj^a-2&X8mjr8PVtgNzcxE#QD(L` zZ(jEFoP|L$-1Xo^VVqnls=e}qbHyd4S>nCGnm7Yh*JzbhoGI}f8DD~_&AG^%UpSqL z#H(WEx9z-Tl|?I%nVp@Lukw{;c^G&JkJS-G=)q8Wzg@R}WmDCrl@|pdElB>Nk7w;#=hXwg=Ney58D_N=eYy5bA z-}Gd<=EaMS`6WNqJ>r{#IA8D+f>bI3kFG_;)$<^}BZwE1idU8fY^R8b#*C~is4Ml= z)BSMwxUuL6^{!7DBC=;$nkKQQfKJcJMI6`G)Way@uzFMDG*9-lS(@bs41hZ68%7p` zhA*uYVT3AqgWHS`8HnCh{vy07Q+2)gvLd5zdLg7kKB&mZ8Iuls5Pq__wHkxhi}`s( zZ?$iYS#3SK*=N?PPVyL^4RzjVW^mpkWh57tvKR08J-)%c?}I7L}&Kq}rlV zbPK^46O1*%`I@((x}n~OT=WlbHsPhL3}zZVUiz>Y--m3dl~Eu+;fNk9Y4^=XFjfiU z%&-&IRg{{qjn(jqOSr~cI466~w0Vp23bM15C%j(ql}ImMcUx4?Z%>wb&DZ>*@urtF zQ=udlXV0^|=rse$ED9IZdBqnkp`;$u7=DX^*QrdaEUNdLd5p<2t*E4=p-ObJ{FJ5m z@}zP%7Rd}UObUSYX`=JZk64x#`HSQ?FwKcYjscd$7+t|h25!QH>a9;V%kgdPa@3e+ zC^@aNw!|zah7s7sK5I;&Vf77_?7#YS^J|$^6?ivm^$MkmU5RxO8;$o{*O&0ynMI}M zORs&Uv>$J}l}x$^`L11btoR@&)NuOumX%5`%LZ}61e@-JsQI-}R3N?!s@x>! z7yjgxJDa^LV;gUkg_p$Zw*&2|Haiv7qjqbn#`GvRuMx03EmY_)q7`etLT`|)FbxkH z?NXF_zFODj3mriRb=@%DQeU9Zjh6a+g(`(qUtpWdEMMX%C244vQ81BBvaS&6sqbFa{pNsnU*%MLe&etQGr6Qx7y`Z4OeyQVoOZB zO8<4EE)F#6lXZ$vFBeCh3RM-LQJ>()=k}?SDm2~l+x=FfE>`G67AsGo+pR`j+_6y? zx34d-D@XN>O-r@vi?Nh1i)Yh91t$~uKwy{K8w&y83 zZB~tWhD1{XELHjK0oDT&JrrQIs~&`^PWc_TuGE&8U7@mSON^={rjSj zw5n89eHCc0LX{8y_u8v!P`&hj&|cN$3gTfFkp@eM*grtY(46n({)x*V06D(1(#ZD(&AFg`^sLrbEE^Kd$m$ z`b7ES%Rpc%RLu+j8-b~Gs~O?{@4!@EQ1jwXff?W7++8UHR87rX>?(Y%6}$@-dX;3^ zwKeN^DdO>foWv~ffW)4c5Nk5EHD#BY>Q(my=UECQ!l&$+608MLp+W~*tbB#KB+FbQ zDJm@>XetXF`^c%pYKH--({rE+%#3My1tg7dRN14iX{Wz@x%qPYrHZRcg2%)Q={ zDp07>O*hQ#5PQm{N?O=j~FIsi)3|p#9SQlWuEYX$#i+j_UdRc}p9VXF$?dmCI zQxwOJw$D|zCs;nrSE%X-bBrh|Ga#r?)eokiqWJqV6QV<*svk^2MP*pc%2%jzf+?t| zK+8JB+hFO_49mB9${%Aa7j>9ApOz**FCj;r!cR(`pdrb>+16rpUV$>>_ttb# zpfr79`Jy1;I}=lWSF@H4vzEfSMTZHz4r>5aE~vju;lQz27GEVHqDO5n><~T5$Ep$Z zgX%8T3i6as)ai>nHD9Y)p1gn+CZ_cNi@DS*{Z?W5Pu+{Llywy85RpnmH3YF1+Kx`b z?`~PATG!ww9)+sYC(mewyA-9?H4s#&I(?dgic;$u2r5*?rYZQk>>V}MA*iNFwbTJi zp=y>h%c?P^q8NgzV^pVrWw}ox_shoikmDQUS~W|V1{NRWXA0Prr|eo_g>#;=;5Px* zZi(I-U@4;pcYQ|xs-sbzRQGQva>`bzCL!w8mdXxMscKMOg{;~<*+Di>+FoO|p-`c# z@Qgnb7EB7gT(Zo5QdEP(5;T#(QK>Jt)E6jpwWWT(LX|?QFW9B1fcg%7uGE)U>gOu- zXO{Y93RMcJer_k~JN!hnUaI}AgyNKbCrQTx; zK~qoQ_@Jy`>BJaT`x86Z{7gq#wF|L>?CTw6)n3C6vY&O7RXYkh$cD)V2HC6j4R(<2 z(@|FK4(uSC+)-BT1MDEH+`3klfzQ-#zYelW=DvWe+SAuT_C_faB&&Arb&yqWsw|3f zi_TQPGT$xfKo6Uk`t4l(eye^gS3iBLPnoOVjzi0<2fx+3J=G%{>c{F(`RgU)b_w@M z_^5>H7Ufft4h0`e#upNPD`B|2!4fK;B3F`XC9KZ7q30;IiVZD4UY4IKp}JU87muOx zH%PhLB~+Iq>KZasUfIQG@|o01TrHjU$n&mR&nP?93PG(=LRVvIMQLgcI?8$+5=KcF zBVmxFK$RVD%ltfP&-M_zlwU*3s|84JDL+uc@e-SO5Y^; zS4r3;VW>Ve|6nhWNMj|OAmJnl^CS!{e^l~cm+(Ca)zlvQ_fc`oYmMaWT z68h?DwG@2&-ItP)nUn0tlXWJAZ7nH$NVGJ$qEt&Eg@a{~4;H7C)KpdZ@Ze}lsjs+U1qv5cufU6nBw0~i zR-^Eu;^I2rDn(URRQnVTe<>6Xuqsq)>frDYh8^qO@iun|7kglFy;{&I->&&P<%elI zI^~C3-@yp3#IE6fdbm57C2%`l-+pmKXM983(J9}do$QqFw7!QCT!|eo0$t#@W3dSa~aiL~d(YKQuEraw+Ql-wD=J9dY5#_wT$pQOG1cujqmq&>f<=DKis zFiYTeyxzOB?`YVyUfS8IoyqssG*XzH0B#Xl?gyQRE}818G-@yU1f zRt3DNW-Cv7g{~>@Q|_re_!{(0X(jU*m`YZIMLHzZW{0(y6kZU=uN$^db!N=c#?+Ru}{1NcGBYxC)RDR~pQ5X6# zbo`zGA1`O=kXpLne-A$OugP34$|(IYFt{^4gTRkNz2#C~RWw}4M|XH>;v~WEIIm`O zp?_Hy{8e4>w{*e(O&5HAwW70j9qxkvau@v1!KWWW{m+m5(w`eb{27nMFXO=#>lQ9k z7aNJ-yOa}y;20qv#E|F=@VjGAx{G`lI2H z&gvc91%E8~u67dosQMOq@{B@qOwq@Gi8ZoyUW%KTXu^4EgT zeh>A}Z@_m2=~d{%LQlta(PPvDJGaRGQsW(4Wc>AhYz!AWUS>|4=grN@FYtP?qomHa z0$YcD*ilpE#om`{tYtf4VM|txcSU7QaZ#nW6#JI2->qSdhP7~QrO)pxO}QZb{0Z1b z(uoi@I8|4eYiuvp&2?+BfrYE`(uS(4wcL;rps-i4!rxBR+C3$9@rgZTYEueYA~yS| zT{bCW&rcl}*#ATF0u5V$h@3CC2&tVh)8}Q(&h}={$$|&GUb;i!?JU6Vnyf{0GG^ys z6J@Y%*!5M19Xm5}FUriw^}l+T0`58EMlEclYcJ1B5$-#K1>9`cK2z)s zYR`g>it6?(vCXPI%j*-DILf&}JAO>Nv7N_{yh7*R(Z3?G%0GEv>KdmSayOI!A2CqjSC7Ri|+WRr?x(`krA$ceEEUx1_b_VT>T` z%>I@8utEg9xD1s7U2N18ds4CC3-5dIm$AzN8pfoI)v)Pr6$VCt$)<6WSbL6l<|^+z zIXO(jP^-txK&Q!#bZS2%H$=8CNTI-%N^`?*dkL=>VXnp;iAvzq)^LvAlUUUKUjLD?1fjiF|$o zQ_<=^!wy;AEz5`6FWK5=o49;b$?@x156}!U1d@o`@abp!R6I`klnKUh7gCxNkt0Y7*bx{ly@;G zkcwkXsE(?fqJIq}xPJAW)=koIX@(N-5dXVndF6k#u05n09&Z&Dh`T+h-36NUTjk|_ znnQf$A5x_WtRwp>IPph?;PUEzPAYEzAib#+o21o$lGF|XiNPPo0F%0&jJwdJRezgQ zp#K&9XCQR3DzEMjCH$M^PogaCSLM}xB-g)L{wLL~eS zkh)a+)%ACIrYW%81lCctTQPW}iB+U3hJ>oTCxoxeQP2RQ@L#o#b{Wq(g!bAV`B92$F;ZVq^)Jkg!J#B&^~zA?c(WvYGCLWl+!% zB}Nz+#ZgBIu7e{giXh;|CZOXeqT;TMgJa?jZn%v3o~Q1;oleAezW4opzwfX2LUo<3 zPMtb+s&4h|x|LNE@+T^aBFxJoR6#7V*{WqAPp;QF8Nw-SB1t5Qfg&6v@-kLK2FZy6 zOkto|kyNB2;6>M1HKsV=Oyq$q6EY!Cmg(oALNKwsh|&4lFd?*Otr}CBMToUXte1R% zq6hdrz+-9!&O|=zVDh3OFY0E>1I}df3O)*yo=g(rpYevf70|>_|)4$o$*L4+XIQdBY$7t z?zwN*Z%lc1dj08=gqJRRKL7O_$)hZF&{wO64jM?jH&O!9kbXBNj6Bnvux;8u_m$5o zj@fbd_pu;%x^4}@$UM>ozqkwT>w;%>!B=;|H*~@O)CIq^3trs?Pws-h7=k+i4-Ua; z|2eUVA6W{eBC(uJ~r?eiCe^J;JkjuJQE%zWZ#8hz_E|Q`s#ff zhC#?a3d10b+Go`wFhFCN!?YgEF>vFVBM1_hWAHkeWAM9}M+lL`T*G|J9G0aqw_}cF zjvyJy9Q9{0ho#xfqhSYghY*vQqapdsy9-gk90R0?IVRt^%rU_%V16F#X5JHaGw&rt zVZ&!yYkwGa&A~563DMl}b9;MxkDXo!y)bRgVGP}7gMWXrwewH=caE_+xAJEp73(oYTGVxdc^A_zD45nj5mq+28q){-ZbK?B~DLy zM-s1*I6dagCcaSO^qhAx@dAm{gWdw-*%GHGy>p4DNt_<_E+p=hI6doSgW6&wP7ix) zhzp6+)81vozxoA)M0(u2n)peH)AQc7#E(gwJ>cCye4oVG6W&{iZ^G;m7;?-%Ocu^dTt%T-0I>jrIr3;`N;#vqdEo6qJc{&vUq6^mv1Hzd zki%;-cNuvS^X3UrO#xR7Yup0+skIbZn_y8>f(t0u52AH5TGVj1-Ld8iU=6K#4QGch zjc9i@ZiQ@XF^0`u99JwI0|Dg0_PmCY(3bS+rr#8KR2OlzRm1k*lxo(coNZG~sb^8I zfbNlPnL!f$BS{y41b+b)t^5A{U+5j7>rHMu4M5iZEc-<&c^{+(be3?exdNK6S?Nmd zgWS>B3!e?`7RQ?15N&8z9cvm1e5p7ZKS!B$FbbVXe^8g{kJdRDw~i-n|q4-;XI^o#&hMeV6~veZ|3Z z)Xkb&-$9p{rTb%I`t-%$l6(}BMy;mhU20#2+F{jX5xAZ{W)Nh-h_-q-olauJIo7;G zhw>f@E!qgf53~hkw!(0%_U|mY)|9-RlHY=v{`v2k{(+HIP&CuK z54U7*0X}BT_HMr(c35G@H)R_(G$*(YmTlNg0WchO^;Im4oa!fqC;g4Ah3t z;$aeb?Z=)!xNa9&yNOEq{bwyr2lju`Upe;5**fLmURm(CSrCn|nuU))f3WGhbx+Bq z&+4&WC=hjVQoq)^60SKMMw;^c*Rbra7~H5(e}B`Eo73B2twVhXukC2vL9v4XT!qQ7Xf#)zHGxR&PJc*Hy63Q&3Ud;6k|J@D_jek-az3b z5G$IBT*(lq0iFgpqxIt-FnAAwl`-n<(ga7tQuGtBBnTxp>{A+!bC^g`P|}+7T^Y>* za1jAb$C_TSeP#R6cA$=vOPcITgw57)vJUUH;2@C@k5YC8J;zd%ZBTIq^vdPU6# zCE(JUtgfbfm$kJoX3vHnMbnX{6OQY{p|9a=Z^!ljrke9I;MTj+@R5Ed{jBYPW6gIU zH}zW!%I*r1pKlr~+3z%6MA=XKY*=a?^>Tf$hW*N6F}C4Vf!2&|1SimI)cgK_O0qMA zT-U~CH+KA>ehvi?zUq@!UYhE-cV zJ~pfi3=+@Mk?G&Hea~qJ_!!x0N8>NRKYa@Icu`O3A6ZYHYazSA(A(Ar^{lHGM!X_8 z;?X82X8qQMXZ0mT!=d=g528)d)X8^AQzt@0>z5GtwA+TzOOLMv^j{W&DvjzFln%;(shZnT(|5S7AIzA#{)5&|S+Nh&-AIm;o2_Gf9TIWFTsIThm4Tln% z-jt0;19*dy7S!k#Or-@^eGlWMV+{NC`jg?NJk*^{ZvvitBv;;akL2>cB#z|rs~dy1 zNBX|9rd;Q446b$n15LnX0)v`!t?0eh*S>3SZ&p{2OmQ@FiMe{2g6W@&PdS1V(RvV$ zZa$C8%qEm5az(+<8rQMxU;3L`zJQjoBsS%0j>dO!j=5l zUhpEyHvH&t{NWMEz@9yKg5Sp5yzXAM0*GwITHUn6jOSLoMx*?(w9(}CeV92m#@TM=((Mp$>scx$Ws7*QF&=SegY zLpfpfDtn$|O*Utfm97}Yv1SKaM9|_`6HD;N2y}~M{RyDA+^Nuz5lb-MDK{y|Jn$KgGG#+=XxtpBA_=X>$=^fVl zqs7se#iTvA3EPDUH;`jdp9s=AA_9&;ph*DnK^Co&>)Zr$7f}`;&DLyH}v1?9va|)fc|D>iI zYy6y}G|<=a#6EPcoCR{Wz&FN1c+NKn0(3h37TIvt(UcqGSpPhnz_>Z)_{04K(cO++ zlfqE9l`4;Nw1WWWTxKx|E)W#QE(e5TB(0H?!XU?*0&2*$wh5T0j|bk1P<UZ4rb+tr|$HP;Qy-C@C|J)~TfK?$Ab$ zwq`(MvuaKb?{?xwwe~dXOAOIvF=#O%v@cHUb#4uzy`Iy4-M3Iq089N97eRtN$C|BhZz;q7Qg6Y zSWcFc1jc6LFDT0KTc{0rVQ3-mzftNmE0kF=-^jbR3wKG(6nPxG4?^1UMB$*rc`ny1 zd?Zf9$Dq8mm`KX@f1)Ap2eu2u!7)J2H;DZ~90=TL-~)g=VPX_-O-5Z{4>Z^ptb;yw zNbAwqt}Odq#xOO^!x< z=MxQwGA{p}vCcK;qLrj`F5>qW_ygXci5%Zly6y(vjIKG*4(~c9zq0>F8>&5Dx2L~p zFe*eDCyKBKTy1D>)X?0R zrdRfV5)1wP^%g_r{x&=C0l-`1(Y_1t)g=KwpoN^&V4<8FFh8-?5FH5p2?{>?iM9Ez z^INZwce?nt-jHZb`;sw_!qzREXss@e5$b3i1dcw=8DBjRU(V*-sD`teV~vWIH=K=e ztQideH`T`DDAb%A191I5f>PnlSk;7%tbM!iCV&T{$V%?Qx=^wb$Qsp!-U7GR57w9Jk zd}r_v>3$2E^b+{ST(+-EOLnj*p91K9ZC0E8R@%^`OBKzKbL^UJaqOC?lK)DFo@1Zv zKZ!fTaoaK3NyXH7Ei`ude$((-6hfU}KN7G6bz-2qFzmUs{G=($RhKfVZE11i^Gz?+ zMee5I>Bql6-E=tpcvI{5-!(ngbQYhVG#rYO-=XWpsMe(}$J4D1-}bM|Y7W3<87{|l zEhvT?%e8!1zV7is_=FaGRn|+%`ziFCPCwqEr>U(u%k}EXro+3PkRH<7wExvFo7!NN z2D%L^+olt*e%!RbDa!@Bt*?I3)b{F!l(D_hbOySlK+}=$U9M3lntHfu(=ZoVDKqMT zKWt2fE6~5`Z2IxG73dn>zv;(itEp;`@#DX5!;{9 zYia9tL~)30`V_?*G=M`6@BhVuW&B{H|M+Ml*~N~4v-!Qv+J5ts6l^%6jQYOr1FYTU z%Dv0?gRc)7&n`=3jU!lN@L?r9gV_ZOVvCsNFE00tc9xdarTFX0%6!Y5m*W|>ue!>A zg)=oZ)$Vkrc%3OJUQb1h&1Ng$lXPdm>+?HFaaMZ#EKjM~kgE68`cX7Q(Bm{{&Z@e~ zMV?wpmO!$^>nT~{%qsI$c*famxf08pILm3+P+ey5C|?Zu;?mNfbPnJU*+6xOY#wAw zJr$mSCn%n$qah{AYO53YO71@N&-{zU=k}aaOadfCz@RyTB)xpL_s|i z)Kfvdr>eBNHdtOq|6}n|+RWmmo_b%2Cs6ba@ zbdUI|sh z7w3|x^;A~ZLrTVvluJt;DL8cM0{GP^WDF%G`iJQDo80UQpFiMFEypmZu3F+xt;Wwr z-q|Iii$~{;t{GiFx^#5mX#eOU!C@tgF(c$C5im{YF)a|L0+A*VE`r|R6HTjj``Z6m z$_^=;5d!}weFF^HXymQ`&AMBDL;e8h-4gw_%M&s2B#x-4C{0XsCZ-Pu;9Rsk;PDH4 zqTg9sUFAu&i;3tX1Oy_&%YZ4Xt_>NRVoFtgaRtUx$cXp*%BzY4b+sN5Ld>0+3xyuP zv#L7atSkEl>4fx zeE0z{q#|<)Ok8F^mvIQ?@_^TwSSk|zVs=;48T|Mavx8n!>)|wQ&}UUGsj6ODB^zsS z0?TVW0`pfbf_tZnSN zYxKdas^DZH{c7BlI{FFoLyq%TLAKOaQGo!!GKJ$O2FqCjTshed z7%)Htr#((9PW&|O55T_ADi?VW+n7E}X*iTsd6qi$A&`T~R>nbb1skzkFYZrv*64Go zaTD}mbogrh0Z~xx_xl#Xk3~~Br&m-I*CLP^q=ufQKEzw&BA+xJq|hv~e=QycJk z{B|>(oW^BDRYCFcifXt}cg<+H5?$U=S6!8-s-$*#4Q5^E^tlDj{DR#7`zn8}n~{sD zfK`O_;jj9c0VMmmh^>*a<9C)+R|W6`yB|*cA9-LjYW)p;Y*}ba|2wUu+TYMy1*Q7f z)_chQ8*-uX@?UnMtc$)guUpb0mL?ZRf3bIl?Y7>BDkJ{z&ElGi?kj1#XH)6s;cMTC zzIXS#%g=9n{p8xWj{j+B{w~|oD<8c&B4zi-8~Z)Gp)}@+erKH97f-%&&)4tgJhSGi z*WT{)>8bZBXY73Kn!j&Kvv6gWJ;H8Z=tGKV$WbH;(o!KKAU+Zyq0T!J!?qZ`-u@ zWygI_@7}!IlBBH-b3gW0)L~a!G|SEY=t)c#aa zx=~qB@~>}ZELpOsxFX@rG*9DnvFOa_o5Cx8f1lEK|2NvTa}GJaJ^a>oPeI!gv7hXI zrg`PsJwJcY@4ZD+Qry@wG=*fTWr@6(CUHa0DoudQdse3+5d-AoM`#zZZ#-=yN zRvvog-k-iX@#^9>U+&LuRb@Zguy=iC4K{K{_cWnCFo@Yfv6 z;Fy@mXRdQbJ)gMKJ7-5@wbS-m*`AhD#V^eg3T>18+UH{qe1D9O*T7$GmI0 zJ)Syd!P8GXRIzuTvtjq=yLLQ#d(?-!)Z33g8W=U{^-msIdi>7w2EAi#==rWcHnQZO zYsQq`JZ^Dix2^LRuZVm(`qZ86wwne&EbNbNj<_oCCdXID@6oRJo>9*KvSeYI)+inn84ocdmQ^#^-?_~FZE*5^L+M6cJ^Z(rDY z&xsRP-}K5|hYq|sa^{&2E<0WR2+hbJNnO7u89TPwwey88~cE z*sN#9?0qgN^6AI^IREjX*2Oy({H6Vk1L-dx+u6MNt>k_Wzkm7m1Eqf+bf)C9JMLLr zXTPb^@<6!lj!QD5KW!|JsEwN=!mgeA?4}+oc7OQr&_{nivhS{_Kd(Rj$8OKO{?QX( zzPob32k%6_cKp@r#(((Q>9afD^Hw#y-T&`BpSkApL3_UY$I|W9OD8=M|F8Ml+M30V z_7}#4mo11?y0>rk{K5C|qO-5IFDahzaz)Q&AKJHkalG3bMGe;J2X?5ViU*bd<@=rs zk6k*+H|3qBRpX{Ee&ykJ=bw11Eb@cwug1K2apA*HJ@DM-C*NQ7@?(?Q+IOZUoO$}` z8xHJ!A?>Ceh4WBS%Z&3Qf@91+*S= zkUs?Z1?X?~JKGVIcUry-5g!k6!MOSca_@fL-tIEw8>!#$cW!ioCD-2B%XyL2T__VH z;g(K4kr!!M+nECYqppQ$!xqF~G2jp%=LY+BdUTp)@~``lv2_Q^zJ{`N!~b6Y>w*9E zKxYpe!+!VeNThNoGese3*Wvp*@Fw*d$E-@dqi-Yhf`ZJmu&hE$Jq9nvjG_ap5>I*fDz z>0e0SA%$aOR8OQqNSR0zk!B;6A=M*Yhja_l{YYjV|J{5UHi4OCya28W!Dj<+1Wq6D zDnV)v!Ha?aAq39@eoF{m1N`<7ydL=G5WE!l-641(aQIwalX7!MJCkNDs;dgrIWtm6 zrVdX@A5|yO^dUMyxFE03w~P*4H|pum<3R^VcpSIxBYKsCh;%CB|?HM#M;@^a$Y?s3^ z5x)?QvDLz?h<3s~?5UI&3XypGTzp0-5=pS1A!3n;)BXgDSS8}Jr&xi6NhHbsA}a}( zNV5GoYSWafkfqr<$Rq4Z1CR{+V??498a&e8N^LO`$+C0bW<;!V4LI5M$EdBRG66`Q zJ(fr>g+VjX&TWbj@k$f4O|rksG6~9UKqlMICz7b#2!VY2r!14IYz9(fKSN}gMCRIm zAd)7L1$M?sM7l&4+PSMdVz`osGNtyfs4YX<=CwzYlc}_zo(d7U4OztP+GI#XMQmXs zZ8uZtT?B=#ktOeDbFH?06urL~WDPx;4=miuK8#{N)9h~irHWMcrldY%QU`;&6G${= zEr~EeOB+Y95EW?Y^o=D2^=cy+s@gz&#Mr#?pxC%Jwk@V6Vap_3NfWHLL1BQa9-_Dd zPospbn)E0U6J_r2P^6uNfw%YrDiPEu0!4|O};X{dKPgz9wL6V)w?u*TYjED`xrxLpo zAlRqLR-7Zq9s-hx%|baP78|vMCH5u2s)*yhVoO;uNNNEDdwc{9mNK^ZJQ25mOt)k% zBePWE5|naoT@KcweBAjEQS%v->UK&uvIdFwm`Gwi74_iCQq4~UD0&{phcd*R?vy*u zM+f$z87gKriYP;)K#E@iQn<=}rY*e}0`8Lp{u;df(AN?WVUhvJs-)vnQ|-J__Q`{}vLvt^< z7o?;MZo{W=t;gqh)Gd0^IiEo=8;CMz6(X<~yOtyuNn^%=6rT%HxXRu7Eq!9}8^SY& z3#4zXVUj~Hg{j=x4=5^3R+PV(0xk;)j2{*6Me2Qq&w-* zeH?d#RpWhDx#JoX=uIE@=?~h)P!4f~AUDDr9daueT#+eT9}WuN+ew%k){Q`a0t^}G ze>e?c7X#gm7}KNtT`)VMoLknVZ8FL&+|e$_%0EmMH)KMqF;=*1-54w3Sgm$wA)`Z! zav5C92r58JW}|pW|5bwLgK8T^Wf$^g zOJy*FJxt}c!J)k4MT)!d$@>rPB+a4mz0vG8l36Y=NjWpi&&_aHRh~6T>ID%|!>KnkLp5U^K5i6A@b7Ipg z9{L?B#&-@#vId5N6cNM5vdINsU>ZNP>;)Sj{34r;Y1a%_jq6w~Od?4(u4A=ui6q;&*3dNN zI%H`!u46U3awCuo8`rT~ltP0?+PIF@VkDAf<2qK0RaStLZR0vt>#2+bl4s*OR_mqY z1DR;!I#!EU{s?W8Y+T1`3Ci6-Cfm4<)r@tljq6w~Re1o?MK-QuwP6yOYvVdrOOwa~ z8^QuhLWwN2aUH7}>sTAtv08?-&1>U5Rm)ViqMiz2--b-PJwmQywJmI<#&xWA7eS#l zvgF-tu2tJd=KX9f*RivJg(t2pZ=!VfqhO2fAK^pk zuCG&LJrS9A8q4C5>dn^JQga3zvg>Wm2H$GNIf}NzwatsJ8TxU$fK* zzE|%oQN~bm4U52a$#@2cOGd#pEi5$tEp@Qi&TO zQDszP(I)D~^Q9(fydPynVhv;(O&OAgFj}{ON<_KiEVXY033a<}M}7in@O_e?4dxoh zvN7tyCy@_>hf_Hs_MtGJBP#dTbAee0QYm;Yj_x%8#L({{kpSRLDyLGVP^whsNR7&D zS)(#5*%VA+1&MKguxfucZPljg?cpm@vOV>(Gteiv65CM2W2UI=CaYyB1vD=0MXyZ^ zhj|QHr9ZkZPJY*#M{pQtKjm^xW*8To8|89CdBlm@`4fFkt9B$Swl%Yln8W0Nf1<$O_>1?N+L~r6zT@tEm5j_87OYBx8frP3!(w+JLNfY z+QGSiv(BBUXg3JT-)7p-Q9pu|$FBPVz#IY}0%#(@-rorz@c@b(*By*6!E~&eo#it0 zodxq4^}Vtg`YxhAsq3hz>wQz#8S3h{;oQ1XIWTj;%ioT zURY?eIUGTsq5v!t(z1&`2lXddoM^xK9AU&)PT-|h)Kmwb50umIY0k?RfIfhMuAKQN zyjwvPH z;yW#HXg7Fo8M}}EdFw$aa3z6sJ>Am}z+dQqwGc>x)vyfTuThG(qz^#k3rb4srz~|j zNPAhT0Kne~OaO3_#lMB*B)zzhLw+P@vU>E2m*vMQ@%VP_;!5Nfh>s@m!Z=`VI0VDy-~_ZvK{@roOF;O=HuFV8;QMn5 zq=`)Wks~Au0WCEwg<1{Gx&vwlm_*E!ndch@Wt&7ZNVdo*SO7MsWOr9KU%C>RD-8D4 zUDlxB@ zrt)#P3)RaO{1q0C!!|;pESK&3f)>AhF2#Da*-(5E>?KfqHx+a6DT@>(Mp`{4gPtpq zs`?=ib=74OPXnHq`=_opTP?PB*c@!wNCe{? z<4P6E%SoV=&3Y1yt}{2^kuoNaXTj!INM)yTzgcc2%e`@qa(sWvDEAK7e9ElsQro(J<4@vxp!G^;yKFkg)O5T*|OYTT?QE|z|AvE1F~D94w-jB;cTVto%PWoEf7mV5df<@jb8 zo;)1|D<5TY`^mhsi`8YD- z0SWTKV`Mrf#ytJOAwhnRnLuCy*FQZ(-bXOazK>tLykzkMlQ8j#+c7~z59im7&=QmQ zgGmTwv@1)6SdDKZ+D_2JyLSo{0u%eSVQ5%h#`VG{nefb5MP36Kua%Am2#MD<& zskJx17t=1@q;@0O1J6qxfbU#y~GNd$~wfP4DyTR)XZs3 zr{=!{DxOp*iP3S9YINV|S-rX|F}={{oKnkO(=Gm=+{LQZJm|nbbK*>B#?Skamtw?07PJfzf4#s}Y~} zj`)l;<1@;P&u)5rB1{pap-~yrIV!uGQ5hTBq>iY>NH$GCh{Dn0ysm=uX3vg@zypVl zxTPZU5us+pAWDN8q?gSB(8s6>%|qN81tgLXED#(Dx9CFw-=IwM7zGU5kicZvnkcvo zTVvLsaM!R65k`n!&^3xXg4YaE1a8Ra8f*?iBW^d1@67=?B-I$K!QqS8#b`wpL$OaA zu|oeO>mYu&A`{UWIzT8etiyJE-~P2fjHw|##2=_(xLt2CrqK}{3OE!q%pr$wnyfI> zY!oZIxMSpv3~@skd80xslZ4UKgfEYVesmbymK8J+ecWkk8EcqGLG;2n!|g`7OFB@j z;N`>t<8wlkqs;hFqj1|cxR~el*jdC1ttf}MdiF_fo|=1D5AK~ICo%C1mc|yjB~ej+itZ+G05B+cj3Sg_b^h96 zzN(Unx>C$8Aw!EZdm@l)F0QSL|Wpz12kr4W;WvL~o zMV>ZVJv`OR`f%nbUSS$xB6vBq3@~o*e7VmbB>SoXVqt`OO;EnC7|_Z3fuuT&7g61O z844J#tVMOcia?65ia*k@W@ymmaHqBiJR(+yC{~MlaTcbhS(Ze_5(RI7#VsW2OG4SF zt~hE{bF9iVNX2Q}tg2dJ$yTh&`pj#z721)8`8TOY#VIv!uJ(1B_Vs-2>nrBX$)7)O z&J1| zo`Xj*>L4u^VBraX!(bKQ8FK+&NDISY;a|A`6I>wv|LVb@Uw_qyWhGUC3Zp;ks_=4O zDLgFu_J7!&JgoLyof+DF!HN(SSj2YpDS!V^zr?Q+*VSk*E`LLtuRZjwrQkem@xw!X zLvQws8~yy0?2+)N`zZXGJQYw8`~JeIa{$hnDnUTArMst2nY=WGbd55}mLw%#Ejb~u zHBz+$0ms8GN(I}Z&Sb}>pPD+Y;nLZb!My_CLC&H+x@v>WUl!Wb>00)mEkoi1XX{j3 zK&=U=_NnC?H*R{E3d6UB-wW~g#9nB*XH}VmS?m3)v~6?7zM)M^84KE*q71aZu0rrw z)DwaN53ahl@QRBsx_lKVH?O)Dl=X_X`AJ0TGgqGhcAs(v@HcDZW?9k}#D$rJUKW+PB?u$vU;}T50%4SL^u$%3O)Radno=A5e~7dg(efW%DEI zgI8}GJbBSpX%^ zJgoNErf#@;^VfBfa)+YDw%j*u%Gfb!{$Y#f49QV#Wot_3C+81?g1<`zI~6T!&FFDU z9@VC4acZ}K>Yu81o2&X$)oxSOd#)~1-&9U~t=_gu%ToU>0#sE#Wth5xopq12rd3#6 zih5c=pjylNntshvqqPm{3hk&iN#K{b)h==+H16%pPo5yo?1V5T7znvsxC#|&@e+?ernp6Qq^vkAC5N`R( zJAaatw7d!VI4-)xYY4i1Riz%BD~%JdA>v+yQxyb{qjt)Vx+=a0FJDX!h)Z+kji2By zm^oqMl(``?-0$p0VcZ>XfVOdp^`er}Jb5;SkhhSkYEe^6LYgCyKMb=y~Jys$3YTUlJY1TTQsp#kZcP*|d{fm-I-3AxuT%Z+vFI(Uk@RB7WP#wU=T-_7H zg&PNE@OW?2z49P(%-%d#oJwWy(>3UJKR@K*;&^dizS7@eJ4Iyo=j7$_RD5TyzO&w$ zQW?OT$YaYrRi0WO&RKy|O1xva8gZtSJ5w$j?o26@XPu|u-R^*=Bv6e=bC-JXg1C&u z%nW+Yc&FY75u;~WJDbFw0yuF>K7z5P+K)y_&--6ITV3fHR$GF%+LsK= zsVzkmR1ZVdr92zJBp?tfM+_f^!y796!~C@+!(fd(xq}GL+*rg@+TB&2WxAn$c*mn# zYTo2AEbD6BCDj#mm55xk$K)_0=4Vi_bBvJHyUkrzDWki%G#yQ@DK14IFdLy~8G3e+ zaMxAw!201F7<~SOqY@bYjOdYu*B9ZK`nnn;?u?V<5hEp?j-CghUK*zdy0p$$svqPa z@Nznw>7F%x!t~sk^9qV4=zZq{(xJajxU2!KY{~p&|NNc)dn(u z!pvZoxb+~`mB3lGK_!07WB36BT}WkUG>2VrNl9I$3=88#eR%-B>29ox8J3tvko(hR zxaeo;mlg+#jidPWsmK_0EQ!!A=h+u<6QkQdTrbBnhKzBlx6YIk6*VP#IXQ4aUgQam zVl>BJSHb@C57!Uvuk_(0g{pE>6}vLv6>KU_Y4Mlv2!9;;&uORA-xQE%xp>Infdz(_ zb$`f^X9*sOfu5!SPYZe4c}3754V_7DD@wEFzG^oTs!XqJY^zY&RvD`5+0`2bd=z z;T-0G?W;c8$OK|TBqdOzQ;2bgD$DY_2d`gO`cJ)57jqslgG!khmAXPIt?626)~_nf zN(iacrB`{bN^RKh3$vWedA1EIWoA_B45_rDYo*!0sx&*aQs+4;6^e9kv0iC1a~|e{ zN|_mzCWlnItZStizp6ANw9;g=QhsM+Pg+Eptdi&ZC}IxxImgQy=OiHGsXi7lqJ{ZT zojeR#jSdEoEl0A5;VsPnqLWR>LY-L~JCjzcA~3SWG+!0<))v!#n-LyK2`y%P*n}P* zAekyaf<=DzWL5!y#T@u8& zTYf?iV{a@8Vr=`PNa!XSnt}wd5ZN3Zd;r-~I>;T_|I$IT9o+v;a=1{rznur%1ur)s zi`W>&yg`Qxnvw6tcSg_)n7^vSQOvoUjdX~}YYaXwL4rNZ_}4ZRQOJyYKk<}@Thpk7 z`=7y)h4Aql(mP1uqTnX$%$ux)CqX1!%(=-r`z9-4YQVEA?sk(j)_+RM=w%2~tyu;t z#&viE`!ee1%obg^c>|a$QS9bmHA5s z-88!jx|@;UDQ2t+(?SBIrXvAlRxH5+X4DZfZ?r=Gb0oTw`B_@DkwQzU!J!9Qd!K|B66PY=5K@xVKiDBe%k=|m;6E>v@ zhica=3^sf>>i-O>vt=eVv@mIhks=U{el5HsOcm5l3oyR8w=Gzk8C$BbwYRXB*;^7J z@Dma|!=7@=o+`KkKV1F=2~^Wyv#&v7844o8=2CLJ9(i+bKy(-pHrFg>*31xL#d^84 z7Utunj`Wre9ceApMc=Wx-1Wx@CfuPrE!ZmR$V5VDu^4wA0%WPrbnp`T z#wT~*aFhd0Pawh=)r8*~E-9fU4fmL&XVBuekls$m9GRn$6fxUWO9#lk(4z2FfWu|46*9|2LKn%LF2=kw8h)Xx z0GiVWK+YKS8bBINR|7OF$b!}fkkIk0AXREApmJSl0pC#5l@?HGv(!{TrSIt=mDWk6 z1@*|9bkNj)V~75b;vr>B!Mh+x3*dO3{vLF!*%HvXD=tX?2=(-_8F5Zv3=&$Ah3p9( z+>Pvv4#r|bo(oBi3IewwLHc%NEjq|d#ScGHgaCgXhe!;v3r)IdEo=WA$s+tFN#J#7 zaUGIHWVJAFmhjjX=6o^9BF42a-z4EnT9~s^i^vYPY6ftg(ubH~Mk`|x#aCXl693au zk`&Q1Zq%Tl_+fSoTp3@4WOgCfAntc8Y z!`FJbe&<&vlb(%*PaYB%X48<0kme%s&5>fH>yREsGA}Na>{uLhN8*CXyk=n5=ag#R zUd&sI$-e^p5+vTwcw;m#-Z73Ny^h5DqIpr*NMnBCOtKKenv=w2B-UY0!RGX9mir22 zzC|)`^(LLVCL>Kn%11J<7QlBSaW2~#LT8;|NDNcSO`*F%7xLOP5TdQOH&^)Ii)Lk8sdQ-(74nh+i? zd1`A!Dh}!Nq~?sDk`gE`H!%FPnaU@Xr76Br!INuK@#NJjQcIUtL7$%ENwwsdPf0@& zH+VShlJYuGgXbuzzA7I+1ANGqS_TBHYWXxL)#JqzC_IsMd+~%Li0LKpz_+$|xn9DA z7neW`%8M&~C9t9z3h|LDYtc0>^7}<Y-s!h0f z(V|*Uy@}zklzL1U-ZDY{T}Y#>p~-arf6V0$Lr8H5%D(}Nafx5RgO@pEF8~F@Mas#) z)e43)D8)6Mex)Nb<__w5C1yNPk_yfvb=tWghOHUde@*{R5BVgvtE{GT7ty0 zdkFLV9?=O-QN z!@Y|gmsu}gm82ZodlGUdAt$h_&b*uka6j^(+*ZiJDHWy=a#P>qA#(W-U{~l6^dFTQ zmnruQa8|=UmVaw_SceXZnsP4y#vW)X$Mc?|enajAWN07t@sF*={Dz$V5JH!ef5RAZ ztti9(;l+B{zo(E)ef;~QKc7P%W!pmJc%BsBQ1^mnUX)=vgJkMk4Y}2jW4xG`(*VvQ zXZ>sk|IXe>48Q_|$INNK{3B`92Q~7doXdcjk;fE{59a2z0CJN}1i8sOuZ!HhkXzcn zL(r5P&_%BA3?be&ofo2SSQoi(@$8PTg_@VCZ;T;lw!?z~eNz`X%1-Q}?`$dNH*Bml zFH_%)E^_&`LOwj{D%TwZ`q;c)4B#CPQwfMB$UG!`#W%l4d|}Md*JF^_w=qbZ3qti- z8*q;#)3{81CLWq|o+hpuwQ@ezalK~FyE?Ad!1-0j^$IwT>bO2jalX`X-I3<`WU8FW z_4!ZdOEEdm={Q?~c*A_A<5*tf;=HBf`T~LTla6zy(~o@7alJ!0-{`nLk#JtoaR)Q` zx4(6qp2NBe^MsDGSM>Qn$73bVaj)b0M91;1inLvyd0N+RC&4^ z;(_B-;_;Htai-%uWv=5=1t-IfOBH=P5J0LtJ*;bOPfn(E=oC~+W{tdtt{6%uz1C-X~S%c{x1>9ud*~Yq_<#T}7gy2QM&9nE& zUkqISMN8xg{$}=atR%JoKNeDc8*t9w$RHmp{zkyKXg}v=KGCHB?d5#QXT*$L z>gRmNw~Og%;@k{(5?_Qku<&R3e$_s1yE^-zSzmY27kFrUp(c2-{=wjz_VbG;U&%A$ zMM1pe05|O?pWk!Lcu^29i-DW3Q^mqR%YpL`lyYPeZ=$?$F){^~CH#xD51UGQDN&GyoMzCK`HtdGyS&DZ8> z|EUnZ6a243aLTKg0@oPhw>$Qd#)M3|Qzdc(F znD(pz&OZcc_Rpp+^7nVa`G)j{V1M-%Jb}dgUQK<^0q1;Z+Q-8~7KZ45A9zQ9_ZFW3 zH{aD_c?AWz?&BGT#KWn`xMcgg;AtVa6LNXL7vkM<+}>q*o)5q?b|}X9n*+dn5uExx zz)gGT?<*;2Tu$W8!1;HgNoM&wL-@4k5#Z+iBNi+F(C^aZckE7;+j``tl#<$jKY+ir zAb*;lnmf~-Kc%q9?Z!{vwfNH)etem92P)n8k-iGwvCculZj)+vc||qOPIs4Lg9Wzo z)GZVEj)uQmfIkzEnt9QvH2l1M4k7HssPgIG{jkR(P`ezzwDa3yX%W#e=5-Iq zx2VKj;^&rKd`0Gtg6!-``BTQ{x`(I2KU0b>#jYLGy+xPi(%(hgIfFWvjm%8N&R=&; zi96uM-w;S$v`p~(Fn1)t0)2N$s5yA!LDINMh1Wf@?5o zOideQ9Cet@!JQdL#f?qvB!Dc=I0oFn6>+N;7u*nW>G%7+Rn@6PGV?s|^ZR|?_m8LZ zNu7JoJ@?#m&pr3tb8l5w-%ukH;D~Y*ZotrIC`c;w~6Jtc4mux9h>WgcN zbhZ?ayj|c}!m{jc@VLR+gbq-uCHNge+9 zdp&DHNm2xY^(d=!x5xr6))NLiDheg3rH@f=)T4MTN;c{x8}ueTM8^1-(Ci=k#{aoS z|K`SIBgcF;f#ea_E=XE_@;~&IGTnHq$O2}Igb8mk+B2b9?^4t=x}aD54_BvAKF4UU zH@!%P{3bM-moBKRSTgRS3o1)TRaR8_8%8x`jvF=ZqS1BLqsNGTlRs&v%_XW=Oz+20soia zKlO}ThE2|S_0wnGzx}%M!eZxvs}~I0()wjm)>pw{pS=7<(v$aoHvnWO{ftBdCo8-V z4W0~t3b-gI;Z%W+os9liFZiRq;0tmB!so+Y@J+qwVSF$2 zANNA<>xF(I=oS3;{OszbUoZB;=fPg+xlW#J9KYy=J|BW8J%vI3nO^vu-V2|5dZB*; z^ruKeq@(vQ7Oj};+h~lJQ%a8FO%dDzKSXMIK&LnHw;Ozp_uw`woxK`-^7m#}{M>z0hl7@f{VD_tteojbFrw5+yl zX+@o{tak3qDV5b#Wpj&{RF+9aMN3yyR~6OyifesEMN-l9l|^$5x+#^#b#-NRdi9f5 z)*C9SEvqamt}835r~>!$;*v5$f}*8mKD4{CqNEI$wbhkHzS`ody7Dd_P+n9`Wer_vp_N{B=CA7BLJ93;9BiQm>hYBql`Ojo z87QmNUxP$NU3E!TR#9DDNpV%VR8?G6T~}FFRwLE;eRWcOacxzDME`&V|le7{irJ|yGmM7wxXnF zl}_!ilve00s%v1OOG#N)Tg%Eo6v2#_O6B#n6}~bFJuWU~t&(N65{6~v5`Vb_+6IAJ z!G6G8OAJe2Q4E2oB&n#ZwAfdS(j|3udLd9%rP8##+{sgl#*Dsj^hMG1#nDto7qTlg zX7pH2WK2tOjS(s4Vv!=WUb|>atR6iw7lVBO>Ep#!r{q=VtyAcEVr=;9x-w;#E`Z?}l7|WU;(=QUw_%`}6{FZf(#WK_X5&x?wG4?6z7mHjUT;W2aAH{;F z*33_;1#j*pSe9_nuUPO-3x2o-pKQUOZNV!R{5ckUss-<|;L|Pm z6bnAnf2kvPBEN)rx|(pd$Y0JpT}(J#to&tsl0Bit$SXET2`^X(!(lzF;{ z@J5jzz&u?;c)iFcFi)2dUMuo3%+nQw8%6#^5P7ZqL$iKk+DCV6azn%Hf%u6D_jd@P(@X;T|_%qKb9X=%T ze`B6gIov7o_cG5Z9Bvo+KQPa!8{UY#d%k<#R$8~a&^>n>r%7Rf`jc1vI^&qTjkCbJ z`qK>nIT;`1WE{(Dt#mCe^#{@x1?QwBZ zNPuEp1r+O_d{!gTd95B-{#NPU#nQIS;%u;bNBsgM`7F~mL$Idf5xMzKn5Rver|I~Z z`m-ah=N-#I8SI~qMz(RpLY(Gp4NI~m?HjbI%|=UXkLV+RhB!ZC?ruv!F5{S13+?5V z96u6(d-(`>_p_pVs>iiBTm?mf{3Q$d6p*{sUEu;zWPb`pUeG$ilYs~=fXr=E$+%q` zLNz`sJj}T|pPMawen6>e&jKdwKxvcx9wcqyA0h81q9Sqi^R6$bnN z3fNGZAn1c6>Z8*4Fi1UhB$|5LNO{$lylS2+S-bxSGC<0!Zue$&$ju#aStt#S2RA{& z-YD92qzkm?s_i;;aIQ;{oBsg~<~Ft4^0KzeP1LeCuwQO|nhEu#rhi4e>Rhyu4KEZN zTZN`G&_&LBZ4^=ci;(n!Q?hE$M^d$O4y*mMiEi3%Gh}$3TomoZ2}+7oaO_!v;JD4J zc6gf(q7{&cF66mVwf*pcLdM|OuVKQf{YzXSja^T&QoT|R>m_#t9b2Sk85}gOtkH^rP&fVCVSMc zwci{EVl5_yb~94$rXOuI0lB#}0q!I4f!yq-D3dZ!S@OrLgGV9(D!bf#Ic>A`I#;^( zXBb1ET@Hj$r)knkP{hc$osWs?4YK%3tShJzBR4020NtJm3Yf3ld}bo@O%2(S9Ed@( zZA%H{h$eZ(>p-gnFjYEkE zet@GAw7;jq(D#Q9fwL%)H)r=zJIXu4j+TG5Y|m(yH}BUT(MdOf^jP)~o7~)l!4D3e zg?wOtIR`*)c@fV4Ti%qP3_&l@ThA1g^OK_tM(BNRnF8!SEh83V=nf(l;sb1i~pgbnov zok!ku9T{Ke@@h9@`S7UU!{M(vDt(SNNSwP8das&f`})d<>z`cvgi9+wy1di_-p z@db9O{#YbJY<4q7DhQ>@n~rO9z%=v@iow>@bd`|DUf*Kr{dlZp6sib9LDq#RqpSsn ztX`l^-hmOw=o0xxY}MdNGxpQ2^1u5s;}|>~EH%Gkd-h}*96YWC+GCIl3Uz>G=%}es z41b@Dc6FZ^*nhTk%9}f(+E?^(dHZHXDqr2uXQ(Y(zT^3vz%jYG5&h8$A$Zmf`L?}i z6C5{z3<|6n>dE?AzG)qhu-Z7e`H-H1$^VF2z{SeV=fgrg>fumT1=KYiXtcKL+eqZU zApaL23$MXEgelrH-c+}jcYNY#dA((ay!p+*n{x9-m{;l>q2zMIR=~L*`VpQ9ht{?S z9oF9dMra@&@WDGzQ3&Djm(W#c)6$)T_O;#!~I}3&c37e`K{`mTKRF zIP^OULIXnH-0b=_I$O?l{?3l_EI1LlIRo>cd9U0&63`nQTMho@6Q(-lKxRBfdGj5v zTSS!;5#K2&&KJe=2FQUSDE2m8hloQC@Wdv&`7=3iB@*SUpLMmM&QMInS;)hHhN4!U z`ic6EmY<+oRsjl7*(v#EVC+r=;M!?BQH3lRrPKY0k!srmWoi$8E!6fBNW~0&5SnQ^ z{(~>ELpuvL9`I70p#3qke4MVYzlb~>nRj=#I2_XcjEWiU-r%1^AXVzUaF~d!VP!gIq{4sYq)`W-2j<~7g$FQEAZiSrT z4)|2~H7AT@K%1j9TPo+GS}qoXx4+WIA9bVMy$mu1Ad~$lT98}rh9qVgR?Ih1gVS*( z(A|8=6YL|M5p=u>H91KiMeNda{5!dMKlI63PsWj%@K|&#qY>AtVbiaeUSJtGnSP}c zag}f=6K(REr{H8JCiu_Qjc~Xw`*ccay2}2>P+bcngq!L_Z?(VbbZ1-X#sU}qH5B7f zzY0y^%+q~6*Re2_mWQ=U-2sPpZdal95=+iN2~{Z+7@le#To6}Hi2WP z1LA8Mss-BJ>Q1@kd)lC3sKZev3^f@EER}42dz*pZF3rQh*RqeF$y9?7z^0n5IpWp1nzdUR#QRZJPA3 z$f(!Aj;wP`Ze9jVXwQ)S}eA}Ie~~A_#<*6n%HfBY&EnXCevSyl=dUG5Rl+Ys;I|8lJGWjQ z^io2`%S)~l9xEox9fqr?P^}OV+&U2+_v;%su&6ojpp==bGBQ~ChKUh>Tl86muT@=YgG{P{p03@8sq-W zXH@!J*W%D(3-8hBR>)yt^&-eZ7nrQH5VOZE6&@jCu|=3a0fFf6w9r%w@@7(HmUOkg zk_e}X(3XlyouO0c+onRlP-p>3zBgM2VlogJpXI9iuJo#hy-gn+&7YgQyZz9@Y{|R3 zqeg(;%Bi#`5Pl<{)y#pCwtRR0VyVzOiuXahO~;eG>W3>&-@+0e=bdsz8w(0nH>^&Q);EfT$o4@ny@KPHQ}Io-e!c#3+brlYE1=!PK$1ex!9k@7@W+ zT(akR;fN7E^b^s8e+UjtlNVlr4om9MBZt}VE$CI`$m?3(5o_Yn{y)oz07G zd6Um|S}rPP=BgS<`gvL_Y}$n`x;?kLd)43DhN4+mXeT5wt9#Y2w4>*OTyd{Mg8PtM2W8Rz&AuRT*>+=}(i6b-UQ+*Y~+m??SP^q`u7-ymnizsJ~^ZXoW zNocjL5Dn!8S2)mB=+U7KMXxgUa_PGD9VpE>KMPj6969QD@}@fM5wFc`b=%y+lszLq zWMGoy$@dz>T=KlC&{;sgoT>@$;oI(tSK83 zKaSebni%LlsEK{>H5^>ugfO4wG5v=Sy-ABlxOnrkv@u;^t|SVLmI>G(rr#49tjFxV z-DoL+tgz>GYEMEROko#Y>2l`6@K*~Aw(vNfnyH2}V2oO5Jxzg(wI?`|LRWJ0N_0it zvn{Hz?+#}i`}Z1iK^lwfYdql4_B-0#_>ZB>oHifRqmkCd8`LGplQ+eqc<7YI>uk2+zA?5A8hY0D8xIM8ws6N<1o?la zW_F?h1DB`%D`T%|4^7AWK7&I6NuG7Uqjt6q8ZvT^J8Qq3cfecnvUVdnp&nR>B`CW7 zi1~}j%bEKv&c6Blo@LTDyIO$AXm7mX6xcmBoH*W!6Nk>&=}`YZR~my$hqraEYZ;BL zhIj-+4U*Of84XmfRZ=Ow`XMt9{JYQY}bCwh!nX7(r zWH9G<(+*oM9I89(N{4(aA0nKoemFCBv^$s+mx6;+X_EA_P4XWsUwxgcey9z@ozq7S zTnsvHllg!~&_0AM3g^7)@u2;5k(5cbrSiWnIxe*J927 zfv#GKf}#-z**Ai{cT3@{8M9{3pM~LSb~QpdD4ynIamFu;!Ihd^tOdX?ILL)l@4$Y6 zob<9E!-W-ju($OoS0iwm?L)oI?-`bQ!CAX;IO?}HICy@oKJVQP91y#+vk9@FH+_8E zJM#Oc4sS;|R@^UvdFa-n=3w|?BrQ1(EemGC-uJ_$J^_~-!7wLXvz?Fg3^j+CX$~Zu zOe7#NfQf!cU~QB4BmWXrd0LsTD)5A$#{inbk| z1}xU$i8%Y+izLoz>V%>6N9SoMa)7&sp#5D78pa|AE(aP0gWgHu7m(Kd3yzQavcJG&Nxh@(coqFObg13`9=k+E{w(hJpjYdVIPzB`o)Bg97jp9|EIoO_ zrOuf=v#&&kH~!Q^IT@dseg%PtS50$G4d$gfasqqhTN%xPD&w;wqk>c71h1~yzXej_ zG}Lq48=U5BdLI5_SL)=f%2dY<3-Z*jb7P0OgqsW2!R1|>ti2&lyBjtOf9DORx#;Zz z10ZZ$I=Z8scZfZ~ep9!xY}i;f&IWO1;8P#|5*yQQ9xiLo4VW0yoViWUV;$c))Ap$x zaI;$h@JVyY%`F&N$_%GXU$XUGF__JFL2N89N4dO|8I9(nwVFP9%S`8smh<(N7lCP8 z4P{&d7HvmNhJmbD4FTbDCfLUS>ECTcV_#?w zfgwWmO(udIwI#=4mRaxnVX+>4UO8}A_fN*aq(-NOzb|5%bk2tz+LiAZ9gME;1>WEp z$!N`sjly`u{0XN0Lq{9m<_KMzuI&~~uT`|Wbxf*ur$|i6Mx>11`}Z+oUQOI?`>tvQ z%Ek;7`%CT@aq>U=G+d^gibKt!GL;$3$uaqe}QNw+F6uy zBZ58VKe!KpXu*W6gV$XErx)@ne6*1^OMYJnIE-*50oll$!%a zDGJ)&0D&k11xtO`qF%z*1dy~H>QROpe0t5qt%)rEq-S~Hk3jFXKfVGd5Q1_CEDrW7 zZ;EYh_Z3eZulpie_>m(RuO|DQBt_nSS+a9UMxNoso z=50Fj{|R_iF&-@**JKp9J3dYB(3~vt05wJ9b0*wiB!Y$eIWUxtoI`s-=pPr@>o0Bk0k

ClQHHuXfzN!22Gv!_2koyer#JUK4o@GK(H?T6Bl>Rm zeyB=s!}ll4PT2X~VSOKb)I2$Gj>Ns$uCs$=ZRkO)-;gS>9F~T7Ymp15CdPd+^bmNo z3=>#jcqcucYnqe`QDSavpq_?@uqBehFQe~`6J3&T8&;yXl+Xf7XE?Fa1Nyu{n3sWy z+Ee|(l-}YvY97n(2laoBRMVudDli>``HmZNzI($n{IFYnl`XhE>Zkxp^oEwBA@wWK z@lZnzLoV%p^g=u!D5%A_g{OcF^*!o)p>$BWzkA!*Ip+-jFh|w28q_&*k1p$R5SX%V zd7aDTM3;6JW(T+b4tZ0W3rn!Z@!?X=9Y@!0f2R5#jwT?)SzxHMOTD^_T?N?b*gcj; z3V`K?-eJLA0-QD!7fj;y7W@dH4F3Vc?}Tr_RE6#1Y#}&N#HQREr)ER~`?o=fT%@qV zy(Vuys#X3-dsLrab!OO(aa=2;Z#iqm=&m8|{aH7XA(LL>e^u0;dBb7&O)k*Y@HV&E`LKQ^s}Rb`4}Qz$DR8q-3r zVnp`oXD?46Ek@z@r$k2qp({>a__U=t3MV;v`8~8HjwX)W*6j%8JuuXs#U;c;7jv-x z0Ys1U2pq`L&ERO3rxGt3$Hh3Ab!h!z5#9h!>392J17B#Z2$DR(QS+86oUC$l3TNrq z8OY*Mg}`X!JaE#Tv<9SUs6RkI-HvnrhTi0sJkKv`N*SMd)i@XZg-6vqt;M!H^~6XG zgPo^-hsPaeACNbHt!16ykh)b2)2$pP*e6eXL5g_1pY{jXs0XW1KacHsPu7kbPxoYf zcKxYd?5@2f-|9!d7o$nciX(q8F*watFM_=TkCwD)u!7*=Rpkm8VY|8CH!?W39=VMD zDD^->%?}xLiT87}@|{-t6BQBX%2Q$0Ab90vJ&z&A$+$;tkKR+){YTJ#E*QF>ld^@u zHNT3v3YVB0yg|_%So+}`@C;TwXyoSA?B&>FWeN;?w{{JVmxBEdAqRh&2s+5I47EC+q$G*sRicfLpM2oCNK+;<1v>N{CG(CkF?BeSm9qgJ}SJmqjAk*zLr zc|7X#9<>w(@Q)nz8$8LWk26+~;RmuheW!}vdDM@1B62ZiO>pqjB`^Tnr#V^Q)E)$* zY&Zvx2MMny2sYS?PxRoD+4Q;1J^YwE>owmwO_N?h9Xz4-D8%Dd%qh5PAAcA1kHNuD zfCMJH($nfW1MWYp9^@3PsqLDA4H!T2cV_HY-^sCk=&`*|Gr0#`7``dOu+>k1o8Ed+ zrl!Ky^I~x_?HO6>O3l*b=9{_xY*)jfjpS+=$xZvZO|S|aohbodg!Mg)#JeZF0PJPax>cXMOQqGf<-~Gv^N0l zp<~A_b{YZep8LyraAoShur0vtrh?$*IJ$oI{L7Qw>bJrnoqzeD&>=9zV;Oh`>!5bU ze(0biXAqW0^$l-qj>Ds3dVh@NP8)z34nh01t;Iyp2B9e& zo^C+aZ-*qJtp#^nNIU|dCLXM6@4v+1S zC|*oD^@O|Q1E+~91`7FPJ zO^aL?btz_#C>rDLcn>PkGZ!M0Jhhd9na4F2VHCS}fc3_8yzkUg7k9j$Y}Knp+eWy9# z5V|^pXR!~$jQVLdbOpry7}Xx7hky-wgSQBSN6@3+D+U1!^FA8w>Ybb)<`lxyX7m#{ zNpspjQK!$BUQ@J`^IIhV+qF zL-FjY;h4gxf#af3I!4sQy$W3DN!qnRw37%YDGa7h0-@cCi*P8>BMxt1uf73;A3<>R z1H+(~v^99H0w+0&HWTKqFWob)RIqdpMh}CN&PST(x(`9#VE-Y^?e&ca4nCbJJm~&2 z@NF7;q&@c!yk1XERPQ_^@4j_V) zUInSvf<}pL?1Sd)Pq22oZ+LL*Q%G_D{jRnN<{AxOhBiKs@sW`M?YUvW0{Ql_ag)Kbv^6idi#X>xRo-F z5l}1Q|2(4|70}3WK4B8I7o49Jq5MsM-y_3m-(H;iZP`m}nS!NA9PWJzxG;Plk?Ide zzUppomi0tDwXuL-iE)X2J^N%?Sv)Rm{X@tU3Oy?(2L~e$+M+l6 z2Mje2&mun0i2{3pYBN65u0*M~gsYHk2dS$JZl{79_J8aj{9ZDT_`{(y@$@^1zQ?GN zrH8g}RF3M4=PeoS+#wc*lJpAvD$WRRE4&?)Lf6- z%221R6HP-qN$5{ba|C;_&)bd)ooGMo!Nz$Wj8-34x1jGRbt!{D=zATHp*OwP=SXUI zek@No@-*}z)?dAnm=|ze3LF*=rE&O)=i{)Nd*sKC!WU*E3eIeuJ0=1+G2(N1&3~>2 zUX9=X36A~tGKGPUg4;xkwjP3n?qj>-Lfeq=%APN`Jr0irObjynwluT2>0=u*9q`Y? z=&2R9E5>u)oR9=PxYfP+kRvlkeryjEa6JbU{6RWQehl#Bkcx;{uhNmOZ zWxpP1*4=nKMZTHevdV#iCqu)_uEA5iqQ6j*9QZSe+FEoKKfD`j2AB5J!nXsB;7Lmb z3eRTQ{4(lKbh#TN7s!EB6f(yAs4ZWwSPQD~i_ijN(K~nPRa*fWlcsh*m+@yXI(D?ktOer>5>s_sIMPY2tK_9JcDb`&8#g?{ACFW}sJmpJ@ej%a5uzGX2SR-%0Y zTL9x^%aOKDzkjCMA;{;jBF_mqW%Nqh%t}HZz0qTCNTGY!$gjK6bBFy?#$Mqr@hv!1 zPu>-uv}>v(q1)8P9NL9%Q|z7^2NpV`==tUHc<4Llv^>lxrOezsz?=kB7A8 zv1d4K(8o>QG|1I55O+{*{)>2)5UcJZh(VBnv-Q3&FdDJ-eL*dVBRa070HMZQm%XK+ z?~#Y-$97MNW8`_{J#G2(R(oOpsUv9B&@Vbip><`o3R8fF&H2O*XY6H-p8eIU+qSV8 zp*eQ&G;Ibr@L2YSGZ_2yp-1O=^C105MHa({d8r?Oyr=zhC#19ZPj+8Zsv zln>{rk%amL6;>GcQ~QkwYQ+PDQUBf)k+-b7He0$e(OV*DvKs}BS)c0>+Dw->)#Jgb z8+l?CXPj8Us$rj3!S%pU(w|)VU9r(0cU5Tu?+P9t z;{RYqYux=An40fxT?|~P9hw)e5A8JWvVQ_blDFef3>w5OCw$|O{*Qt-{V>FLCiGz5 zZxZYBg#I0%P^%-&1x2(KzwtLzjNRDOWo88kGMoHx!by}+WGQjNfaG9TmOVQ}v(}uAS z7VXgZJ$G;Lda3b}QF7odU>k3=L6Q5BYLjpmN;?2oj|W!|&f&=BIJOZfPN;dD^(Jah zA_fnb$bmfw8@DoN&Y#xDnFD)=x8#_1Hxw$u>l{1?bqKWHlIs!F^}hkEEo^POwPvsl z&UD&3blx+azNdqeeg`tf;nPsF>3doK60LmO0T^f~jFHCO_x@O6wU1G`t)WST43sbY z2>PP?O+0kauH6hVcmnyn+~R_7!;_RTAV6o{0Wl}@PiP>o;_E8pBiIvAAm%6I$PF z&Jp*Oom$7?K4PjMQs|3qbvO|g3V)2dQusy`>YIzUu?{t24=4xx5P5fwLPxPXXAn2W z=a+jez3D01R$odG?3+77tzcz19PNcR(Mn-r(+OEEOqOq*AbRV}dO^PJ zEF@Xo9%U3~>jazgh>VRQV+1mdNLv&s**ftpSrCuLU2*7@_7Z*twkZ4r)NT`oa)}&x z9Y~B029Kk|y_9$+JY0*;s4s*jTZBCW!ov2#cjLB;+7VU(z{ws;hmD91E##mg)X0yA zsu*T?5nyEZ>ANpjIIQDPl5w8aw*!{5FN6i?&`pLD(`uP*Z$g&76|?Y^=YTlK#tkPY z5h1Z91M$VPK-_Pkc!!95@-Qe~1j3645klz}qysGpM}S7&VvP<9i$4-^wFU78Tm904 zSVf9O7Q_}%zz(I5!_vroK*B!t_25;8fj_9<>R;k=L(^Cn5c6KrEnL99OX~;Oj60-! zP!NYWK!8)=eJI6SQZOhu!-0fDI$u5PFV%^!Zbgx6&%T#$$J2#|<)_g|sWqH55IwU4lzL zer>3Kq;>7jv3M0%1nNURiAXsjd+`Xz;f~{dA#V(v0YI!a8?xb*3=jOwp=u^ONi;VI zEuhh0!7#A5p*~ixeI1_+K(Auay>J4*7Mtga0h2i3>`)1XfdV=-c0C?Vp{$SgIgZ@b zUFcId4PDXB!kX+24h%U0T^4#R^kRu$g`qHL2u>T+bR4T7b<}hm&&=`^RxB+-%48&O z{R@)hC#?ZL6m!;)AMGGC@}@3ixsFT=O|l>_)sg3gF0~*h>d4eksRcO#$Y4Qo$Zx?7 z6gU^-lF&`SFTBE#ApAXgiN#dcC(HFsiIESU7CON08{+;G#Nko2@Ut2ve7q=6x0L@K zIXS;snjN>=#)Y8>{Q7HYKAX+Sw#VGMk9Y-p%iQ7m1?s-+c@#U`*QUmcl0 z$hRt^9f|xid^G^=r~3Psum1U}K3gdxHs8QKcBX%9dDG9a{tMKOroA!ct54uIjVLMU z;~xO(_*8Yfd`Cyq3pRX1E@wNx9Mp)~IM0hX`ubllU;X*c7%;Hae^`#2*gE6wJIdF# zt_eR1DVmPU@?GtaE_^L?(X~D2_i5CKdtR=JuYlyLue#^vwWc&oR`8Xk)=`87c_Tl> z^K~6R#nNcB{+nT8xKDVdsec5KI9>68M`X}j-2Z#Cj`%;(N2TkQWmkh=@8FcgGc*`C zB!BVYTk-fQtiyW-$1A1f{!xBkMWwP3uMVuJuBy9289jP*f})ICri>c3tgN!8Z{NQ8 zd;y~3TUJr05TmTXTNzQCRP#W!vaGfaRV{>Nih)z~mphVjrB1m7@3)Lnf{J;iv<$DL zRPdfeU)hSXDqkJxD?!g!SAsYXKq>Lp)}pL(l~U}(3l*1@l`5X8g-S_r4PV&_7JMgV zU4q$Ra3}+Z(lXM5hess-t6We!Ct4d!DvMVsb!B*UWNBUBxp=Fi;;UBbiz|G}lCtvZ z+A^iKjBm-rJ1>=DLlUL99Pj-^hV8RIrGg)YR3@&(yA-Qye>Hw$O>K3lzr^>eg=q$^ z2m{iE7r84EAb#J1nzE9L@>R+_QT2j+y`qxqNv#{HRF?}~=sI9yHE67+*tblXh&ODG zs;RE^jpn#2qnZ3wl$jtwSE$IY$|a~=QodA~XuK-3s`gi1?faIMDO1F2NByvTRn#ohI!xomT@|D#oH876Cg2~EUD=NXE?;O0pQz@^g zU4b`>mMP`6)hkT~|M95lErAtI69xy4buCMAQ z!hF6-w1*73c#4pr%W&qPx_Cn@>@~Np&R-^aIEU|yRq861R^g?koFdg#m;?1?BiJFl zsLmp{Ay?qD1%&vyRSQ)Jh!po@Kyp@$@Ipa&m*NiV2 zUopOTe8G6%_`>m?@pJ0NUp^lG6l1AtLgB2cQ#f8#Xsga&!$}9N!*YZV1$W_dN7I6) zRM)JktysFur;JHYA3F+{EM;Z+^iMpxG^O^`0D_A6Co&;kg};luluIU!(n7@tvvVnWR<_LVHd@<9g) z@1~nPhh@Byl73M`)W7R=hX4FGg#Icq%xINw1%_|o{M29342~7jEZzH=%ZOzdi&x@p zz2bGyTvKM!&HI)?gOu93@>r^rSNp3j_y+M_H^|5G~ zy%Vv8a>?*ZOnv@;G@ep{{%&jqt4>*M6#^c`#GI2-Dq=5P!YRd7!h6uYMM>drjdzJl z#Y-^tIDR#?&~&xG4mvKW=HP&(xf+2LJ5Q(ipX?zzUOsfGBC{nhYT=M8%1R|eZiYj;4^F95;A0iOj~e1iIkmObwd0kkbkCUHG|BP2bXnL6 z;Q@?cOzk27lW1n7Bvuun02(lzN__=A#}d42o7q~!oY{A36feC71F<@ZT1I$gED)0E zyOi|NnF-xGp$j5eWsMSuH=A=6)JH{0iT0mM9>&d5c1>ArHD(1!F;O^hMi2EVG+r?z z?3z`0MK{f3l9GZ6rc*J4x2NfS(Pss9+D#Xn8NGB?#G>qK&YU^3=cFkmaN~@x4DLoX zfi-5flvj-bHYC+mHYcYbXYM7E)gK8LBIY|A|AlAi=1~m$=%G2&UDRPKQrXj6443eV z^$}P}4WCiuo;-WbT=s*m2Hn7G;PIO@)I`)9(CiC@a~iLVNU0l2jETZ>74d`rt@~Rb9(JEfLK968BJ& z;gbou1(Ng%`c^|?1R?3sw-IGa2*@QETDb(Pf^mttgd|?-&VX4m1r@=cq{ljXT9`bQ z)fHHAJ`6l9n?U;ER2_c$e;Iyh@V|XX_x7$e@-;p1J>{AEAIf{un|WuCdS4~$?LTAm z|4#-q>3hQ3UdosDf;a2W>!m!$z@OKne65kc`Al6t6W%yX&#OJ)5QDBK-prfj`34<> zMB#PtUVlBP;uJAvHViv|iX=XTRnc978KRh57Tu~~_m*vlh+n(&&7VU5+r?eyn5v^ioq0e_I`26k#qy`Z^+90$Vp$K5j>AumF_#q^`J+aexrV@S(aJ z>#89YiY=GH(U4H@tCTPmF<@EgXt>ytvWk`Hdoeoa!wwa3Yf6Q&bCNvfGIG*hN(z7X zp{#T`7JrRUm7SXq^<{8J~fIQnhj}q6#gBETe5rtR z%OU}PEFg~xCY_y9cQ)2-;hsfCH{B`KwYB~lpRt|QH#UZB!cbGVPvilCP_CJiBuZrb zvJBTd{_M$$x}^wcjCc);miU~6&RiS15$EFo4<~6#dP7QjW&@7VqIxTNz7P~^~^oDUO&w!=MUzPI?6aYUzKQ_Yu2o(7RE?tp)(P*v#P5`b*-5qu7pK$ z;b!=6_R_Q~W487rqwb^ocfBLsX68xhyZfT~wfGqo5g0*D;waCQp*wS7eh6)=g>|DZ zSZQavXXQ@K!I=d;j)*=bsfWIeaDzjxZ!ty0LDlJ=hgxB{6P?(wq@_F?O|!Ti_AFYj z6x(}0BF?V*UH*x5#R%lYAV$Z=jCsUQ#h4r2lgrsfqD)!luewSpYw$rlZaN?+mJFSD znj(xx!NDjTOMO{orKFg?Q8(y{6||%3@^S{q!tzjGcU>Yoia1Q0=%zz=z*L8jL8)I> zjh#aYh2Z|(>W9TZo6S*`sAL-3B*VrG)>vDN9gWzC_^Ppg;BV@PtxBC@yl;b4*#t&A}!i4grxj3p24#{7I zLl%0{=p+<-a($qApiz!r#9C&IA?GMvNp%&@>EVMBbe8JELNg_0nBm5H)OF~A&5hs% zk0%)EyL|M5D^tCYV+D>E49hYn;lF7_?_oZ+WEeJ@L09!O{Q!=YeZ^N{Vqx_cMO87* ziA;WJ)Rh?0o~NMtxQ^@!4j9UthK)H;Ckfq3*vzdgL)>Ew7k(qEu5Of2ZI7zhh*XqU zlwlW+y4cJWxji22>I$TsIqrg-qI~zX9BHPzprA?OW;am+7ThvhyPF7*&5QvR&^rJWsBuI0` ziE$T8;{>^jXDZkj69JYf>A{|GNAwvZyZD;3MNIBrx)~{22f8uW^vbewUo~P0sg#F^ zQ3<2gqi@rSOm!GpBNnZfvQrjbdBGJaRk~ifVmWbdV!XnIDZ!jzQ*ls69YvMrTUCR( z3M)1i5^<7{QhHuWX-WzBrU}LuU?pz204*S{_v6T!Ln^!gLmK!_@ndJebOjyxhMEQY z3LG~3gl&mUw-NVtZ?!_72wdm&QC)#ms{-foxFIqkrDQ~!-Y*<$af^**q$g*LwGYdt zF`xbopXi~a2&fGDnIcS%DxqsJOu4XBX;4xwD&@vwY^jo(QpZ1xxcD5Mo-N?o{~p8bibGz@ zLAzuguLF8==DMeN=_15|JD_J)-fXvLRKaDlrV#C!HMy|hGCd^jZ&Hj(wgZ} z^WC{~M~TBeq6_o8u@DD{^ets#dj}s}Dq>)+c$m33sq;z3Ow$7ebIWJAgzkm7nU6zT zeUmIE87_Lf&LclMaY&%($}nyeSXLFZ1=mqginTz*+Xy~%TER-JFGjSjJ9~H)xBV@ob&l^;ujC1c21v@rI5z+VtEq0wi=#i_w?g=7X z@{L<>#%kD8KW6y~NNbXaLj(pG@UZ$3CiqOz?-O9r7kBau+EUzmMF5D<&^WcwZ=|9} zaCnf73pchFIOAVx>`$Tx99S=lbW73$xB5J>m4{bM*Ut2^V0h{5`N-iP?y(9YCB7`^ZWTjSNt$Lj)^*O?5pC z4pycgt?CUFz$&PTrP%f$T&(BzQP&q^z#n=KmLWx!4Y9x&j?2K>^1622h7&nX5x!+;kVaEbv1(SPBRXV4!tpmKe-sI}OD z%MJX^25d3#8w}WKz~meBdJP8LW5DAEOvP6@_*r1Ubq4I8QrCB33LaBRxv;XbG$lnz z$ryu#erO^kAPi+}gXoyC{T_}CS5-_-kS0&@7-p-JT(ls8PKl2z;l^DTPJbY&8;VsSU>A+LAY1=No2a4FXY+pA zAXhy7!93%4q=ygJx9-uS;1$?NV3UR8VLBa4)5ard*pjfI7od*6 zyg@ElV5@^W$2j-Hkc&IWa7$1dkDjaR>MHnv-P~N9_}l! zm;a?^f61RljdNAA8H=6#V*F`f(edXwh;Cn8u8gf_@&7w*j7RIe@M90HJ^t_XmTY_B z%T+|5{<_+*0X}(uEcWwn2UN6W4AuV#+?C#^o($58lRhWhc4^<=6AszAq7UJ1-z={o z9Q!~?nDD+kOYbHe)AD8#;r(0QT19wf_|-#%EeH4ij_~}vO?dwf-UM;o<2MlY8MWnO z!rz?HwwAEex%mvjuau3;3B6Zu{hII{cc_{0`d8iKJzAF z_V>^Jo$&q217isNi{8y4e5wCyZxLQLY2U+ye@{PnF5!6Tol6NDFMWLv;i<))ZG=yM z^OSHj=j?oP9`nDybK6UV@&nIpA-sD_Oe&$H#a=}C#KC^M2wmYsem_aN`MT;02v5md zwt(>AGm1M1CygrKM7Y-d)=I+otKYN{KCA5KHy@<)oUeXCs0JRtn((ZrH^mb^@Il*O z2rqnPi$-|w-aZY47kw}B%jVLp8~WZwn7l6OJ;G=DFTas+)T9*-!rxVv{)W)DsN^HU zZ!W#+D#9hjmBR=Rq?ZKdN_-q5#iL9rH>GHZdv>W zVcn=W58;Pr#9l~Pl$Y=~!oAn^f17aP)%JYCzqw;Z5IUWSA;L9EzrBPhPcNHK_++43 zA?*7~`BuWed{F!^!ldutxsq_*-h(3v&tBKLk?^SvukR*2ZPJsM5w7n4)M&y9i=Nv| z_(c|z$OguhzOpD4udYG1zm8p6bvl0G2(bENNY2}e9CB@jM-cc1GCJ-?NY67Ijx zaWmnvuWV-${=7ZDg7Av@OTHug$I`M!!mGzs4k7$F{;Dd%m8ZY*GvT50Usee(zvc}m z;XkLpy_B%}-L2mfe*Z=2R>CQv&8HE*dh5o;gxY^Q>3*TlIAcYLwj&Ct>Wg#AgV%o*HvD z;RWZ~3kgFLwmnann)uukgtuS*)cJ&Q%b#3C_)z5a?SvUGbv{iPy!&7p;TeyERp8HkFr-XmHZ@Hf^;kPSd2>%-2_fLeEj7vH~7+Bh;mT=&F$xe9F^tL+*2VJw} zFyW);KYlG?=INXI5&rSk{kIeL554*!;pQ*ix{h%8yKg2EzOw)2HH4E7zw#yF@h9J2 zMp)JK##w|fo*G(BxbWPq#|Yo6-&jppKW%d|;YXJ{S_o^F%MrpCCd8K$E=shWLKwNb z>^8!RN0%HYd^vJeF=5V2m8TLm98OqI`1$_+uM^H~ikn5a{mIxY!s2t6K1BH4sf#-a zXHKigC495K>Q{u*m+yO&@U6>VJ4jfb_-;1g(Fq4GCM9V^xr;NK=|N&Pq_%~<2tty{x<&g7YRqse`hXX+tP#Q5RSg4 z{7J$s(~EZ!#+<(F3c@?iuRf3P;!xsKg!kOqZwKM&@7gaXZ2cl;6rt_(*a^4T&@R&X z&5;Pd+q?c|eCY+FANpM+vH|(_b@-tGSqq(*X|wE+Bj) z5?KeB{a7Tj2e9UG$PtfrpTeuQ0UH4~04~NCRgVKo_%c#zALIeOfNKF419k#70xBW2 z^MLJu3cg*e0pso-)FIy4VXs|pC8*bb0k}X z({_5lK904vK2G9?;XmoFNJI=QiSRi&J=TAek-p}pNF*O)AtgDdCM8do6YCv~(j`MD zoOhw?Y+yxw58xK?Eh55`B>X3x#3JTl13p4`l58P#1&`Tazev1F2kTVB1Y2lv}g`sO@p|3f4q93u4C6caN& zA;~d0aSpET#H*8FL)6n#pv(MYB=RL~wX0p|z|a$PV(4jlQl~xk{5#onz)rh#5m*kwoIG$(B(fiA^1p@SwkFn{q%_4%P0Ei6B_t`pVElx(NhNG05A_=F zjYPz_qZIOAPMP^h!+#~p+fgnY2>Q1yDR~OV4WpMnnIoB9Vv-Afe**nc(4RvFf?sj8 zd?HZdH@WYNMCP*`a<;3N8v z@k|Atda(50!~Vk{VpW?}0bXGc9KSr&bHaCBN=E44?4)GWxm;*!su)6joPD74{s%ht zkH3!I2s*w=(9%EfjP?&!RRL+bb#WR6qQ2ik{cQNgLfSj@XUxAm4B?LG{Il3|zc|eI zzrv>(?HTj$WcEBgDL-~R8aAdMNTSnEG%s;}ECRp$ha-{Sbm!M)r(N@HdeT~3>@?1g zDZiL;ZuW=z_&fNmhc91>H1%;S$GbHajo-rYUSkKprudjkg*u}0kQifw|4&iB6ZQFH zrL1rCuS=e;c{43(V{EJv8||RgzX**{zZ0>REXG=L7xkONdE((b5q1)@PuDO^PAFs; zNGd_!`GjGw`uyPh&Pkk_Zs05;+%X+J7D=ol+p?tmr?=6_lTEl+WPI!2F<#VEHX5Pw%Ci^YZT~&qnz! z*6*_COOw)Tk}@YJWfur@oEJ51DxQ2lK)nN~m&$rkxe7(Q)O8%zbPeUDdbzStc%=El zj21%ET%yP)4Rq=FLhs4=aQyO6o{jQ>AH8foHqd0iO^2OT>wBotBgx z)0!aGMPc>2-QEwn4id00`m^zZ^Xi3LfixfajIM)ZDs1Abc&>kKDC zv^&f2PWn6>gaO%uauJB1ti2g%&x`ipy?Z)VA6U*seaF^Fq!o54&5zDg*n)MQ#%5x= z({V*->Sc+T4&5-*5@QN`pgf7OzoEw~vQ*4X6#n6#XqT~BN^kzM0A8zaPj{(1K-yP7 z#9U6qWHsIWCE|~mhhbDx#kdqEdZGq4JyDN;P|u4PPORJD!;c65i-7M0zKjUrZ*myV z2!EQxc*e_h+RJ!mW>R*g=}fJ@M)1EMe2#+;yY;`H|JA_%YT$o0U~0fQB3mSno~uI> zPZ!2dPspF-TfzMM@mHA@#vRJwHTXak+c3NS$uv;bO&SsF^p)xjyn^mVf(m zM4Yp%i^(Qh;!?oRaYwd*Sdzu(P)xRf*w%{A^^9Tg!ICRJ;*bWZ!A9N$1{ngv#R6se z#zS#B1=n4Eu+)iDaGU|B8gQNg%MG~FfNKnRmjNF%;3fm^GT>_l{K$aE z3>ZJyXy1V68gQHery6jc0m}`z(tv9Wc$WbmG~gx!?lRzO2K>l?#|#*Ms?ojy#bEp& zxHMJhe0#E5W*}O6DW7MQukEFLrBS|dMYfUZ4l0f84@*y8E@B?gtTXtV^TgzmVN9@j=S!o$p6j~KF_Pc)!oRMI^xvl7 zNB`r8eKU!sO_?%YNiAH0uY>!Qi$-US&KQ+3&M&g#M(PNu2TkVa3rA&)(P=Iu4G?0# zpsyLa=g%IIE#!Q~kXA9~sW^)?a8|(me~dJGq`BfLsoA3VDr5bz(lV{n&%iway}h+* z*@C3RTxdkD>!QG z?xy_n119~U**g7EbK&kzZuIxzKbiEMm+SP_J(9J`dC;UTs>AjX3T!?^2ybEJ+j|HU zla5fO&np*!Cf3pCYVNCP<9k5wixB9gi^+?|6trw)l}i#XBZ2&rBG(v5QQ8LOB`7i_C(AyD5po_BbS5obV9q zB-l11vn=6Zw%N}{fol>*P%x*+_!2fVGr(4fl7@swS?5$+E;5Y?{aNQU+k9khN|?b$ zlWos|TT{XXBpYUX5t){RXUHJMRu8hZ2@|Q8(Y8B~S(h+{nF~Z_eZq8R(nV%N!lle) zh|I=>1Q@z#6R@80lDPF_3Wf$A*H&9 zNy)L4Z0==u9gb!y;z9P-iIHpsF5ba0?Dr5Z6ubXTND#}>6xjDo>_A|{$Rv?AiK^%` z334d?mZj6iuE(KKzvZMx^Q^pr%{Uw{L0kQ*9!1(IrI^pjIDIlQF-wa*=(>YH>nfBf80igeOB)QaTT z4n&fRX`5pf@hMElIG(^Y={$BZ*1=nON#`?dcYH;B8q=`xODenrqnE?i9CNM*o zNX|WgWJwZcP$bR(N|G56ktCQSW8PgHFuMwh?&`XLF1kTja}KL3yW*~H60@$T-|u&- zZujkR+}-!v|Mxua^Y7=GJLgoLbLv#psZ*iPtqx_c#yEDer*brBSE5;xtWbAkr=(AL z8~>d5@kpOK5^R<;7uo64*yeucO4K}kI@2A8=QZi45Dr`T!U|_Z>9Zb2aSp$OOrOn5 zF)iorT)?$dILXH!nw|QDS+n_&U3CtC!{YR+`;*V@)r{B=)8z-Nndm`N{=|XXyo+8giF&A z67ug=|Q!-Nj%Bo!kvWzsEsO2=EY8mN-{Z2Fo zaE6$)6}kYFl^LPcsFv7$Mp)Z@caUZzOR{q#nKSwGiy6)$G-O8h7?hpwR6)Ot_JkwO zJ199Lk8qK*1<#BQY>QH78b|VK>QiSKV|kGP-{G)i^_fmyvV)}Ud5m3yvyu6L26~+hzym@pN#Wm zpAEaPvj@Y3{MnB~jewQ&8)h`H88A(ud$1e;&f4c$9j21^c4n$B%;bI1>UMU8)!|{n zQOP?Mc^z?)9&j?|c1Hm^tJ4^QBgxU}S7aDP1}o>+EOnlgx}AdCA<;KaKv7_xRv_s7 zgVdctZBL@BwGWUwpVbgN_cOGLJ&A&H`=Tg&QV)PueixMG&k^TpzYdnpGjsyQS{)7} zC2%ua-OfiVbX*T?8n7yVXXJEuh@c~{|?z>DS?+HM7is!}t4X+GyQBi1F2iT!B= zB^t5sC5qk9TCAJzinWs#p?adOOB<8>i}i82Q|Be9dtGa}ZhlCCM9Sxwz6g-{>*7F6!MkC{=noOh(p)}zh2B24K zvfh;9Yo02C8mZXZM$oB7u|~A|4By#!PE%0`E^AlHf0%nfV3nVVmOw|WL~(j_%%DAV z+5ue65^yFdW)rl^Um|>-YK~E#cQcYT^>%_*#Z`EyCspMoU{HUjv9;b4sGYY(5E=DA zz$M@pfmOd0lsO7!TU`i)QXi0g7ts%BlE*n&{GBL0i29KJ1xr(_&sY+F#0kr8KDxQ@ zqNeqh`j~T?-Td6J$1|yLs!DzIbKHQlC;;yZN=v)o+ql){gTat{+~!vDD`* z_eP-A-C6DzM5B<>zX7aY602qaiTWp7r3r0P-GT1!E9SgRG)%S=9FcFKsj8o6-M%LJ z2-pVvoWz;FyE{cekD1{yWT*n)pi59hQI1YzhWhqPkPp5O$(4ioZI)H?13YiS+++=j z;xRiN-#jg{R6v}_`$!+QhdrcmyZQL$;q*oBqC8NmNxT6VtU;`-1N&d;~|^<0f-AI8`?_6pM(GNl1SJ>`^B6mRda_&+-t75L#8;0d&a}|ktg4(`Lib{1)95xS~VRzY89zMk>rR9 zMSVQ!LXC1z6KQ1kBB)p+m#KAN)r}nJpar&R8}3z9SaHZljZynzoJ+oka|9jD4@~A! z@TsBdYjBlpK>A%U=O`01aF%=CNbe+EQ1x_04NEx9O@jl{ z^P79qRcwA+zc4BcP{Yh`MTq01%RJrm1Anqo)v7^|F^G#GH$BSqr%$kqPm#O{`9-S? zPjR7CFKp*7(cVh`cf#hzyOmU8|62sL#}{#DPWu-n1MDx@328I&%d4@wf9CxN7>vCSfnCMxdw-dN4^d`+&Dp_qe< zerlw|YQAu(TXRw2Rg-^|Ds=WeeqNJozj3)yJn>AnL< zV@T&dCs%6i)n#Hti;DCzbK z3Um!)0)DL~x&oF^z*UAICSYk|n>^N9z*FjSSHK4p@MLQNcO?p#QW&-PiD_W_o^}P~ zMj)Wh5X3YXw=_xye0pAM^4y`53a_R|{~;9{{Ra$D8$*Z2mRb}QVKD`sQIjD?w_yYd z#D_O1e*{5v35=|b(K_iU@|ZIeN&vJVXM zPa>(N+fqt^^fgE}krf6hB2rSMC7%SOW|BeJ8b0^{PiwsEc3RDwhKPE1(?ntWS8jIM z36p&)1=_`0I(O|SX<9DEXPab}b4Fr0KXe7v{KP|aRU(m7ufYFAxy%-Zks4aGDk)_zq4#yZCk#H{_Waq-5vM@+ZE z4a-M0`7U+^JWBxs3_+q39JMSepW`GDO03%9g;6HrBU8+E#(s8C!V0y^m2iX-_L$5>3A-0Y$&OFW z`kbf$k3zx6!3rgP8)b}EbLq7a7VlmO%p&bst= zr6|K)?QrPaBSbNWwbIkCtmuF)nlC~=cTGS(t^qtI{-8Th%2pZR^h`6m=4I=Kt7tuAC2k93G zKh6fQ$3JMya2?Y3m~`2J2AY4m`C7l}>6)hu*$+YXDvNvB$GNxD|6<{Ohi z*LFfPgzW{US*@D(1zMebkk_S)ZjnvwWd-A!rmAuHU?`ph#b}|3HwU!xH{Z26Xw|r@ z271L)wH#Gt)wr`U8+@w~Z|0(6*9+CWQmA$K043a!Py)@|EupqZQ?Vky)}lNWDf^Sj z=8e#KfIRqKbj)?*7>V@ufDFwSqT^(B4#ZO39&7j8ae z5UXa4hkZ^Wd(?H0HA_82TM~)xs@KI^HRpJUZc8NE8Z*kvJw!(miH<_|mODzB9Vn!nYA0`|yS!gvhrM?X5mZAvn~R?nX-dXlB$Uek>jD;@8Hb{+tBx z#{&Kphnh)u3-}YHrVOIM(SHa)K*bP%I8nHLKK>)|1V~jCzhn#Bm2Toq$WeVX<yTzYZdCxK7M7i6^~) z7R|EW#IrAI&2cp5&j7{{(~oNbSz`x;@NHCAAJ4+ZPy=h+{owH*ARWi$7|I=UTg1&C z&&}|-r_nV2pVfng*4CP4!YHVjUCqNgktz9k)=6E#nq~FClO4&^JI$%f-Ni26OZY^L zQ6SMER0!&OkqNu<0ZyZcpp#0FCN?p%B|Ua)41dNV$vTO5C}dfO@TAn?lt5Y5#J{PQ z_m%gDgZ_W~+e1m##Nw91DgW*Vbds!b{9QlaY&O-ZqQst?*sZ1Ozx-hf6q4K09_`=y zHz|^=NmoK_c(QEZe?z(QcpebC?JG1156;hl$%523MO4c z-R6k`vMP(~HZC<8V$Pr#uEgSE#)z!3XF+11Ho*O)%m<>+|%V*ljfm_q^U9_xZ)qf;DRx9Xxd%&0Ax-29aIdo6Yahv z5g*W;DvetKhV<=hf3C)L`%iuj?ce?dnK-HWReg}m!`fxoe z<&0Se{l;8}hc)g>6qpksGZ&K{p`xES>~ZN}&*?%ME)P94Qn1jR{0gLH7EIxJVRpH0 zNM>MH+5z7z_^pAcxQUj02`0v9$<|@0V<18zCheC7qAU|J`5%NzxW|(6jNv#I5G|Vu^K#HQmtHTU)3}gt>6lR!X zAWN-A&iXLJ90NIO43Mp1hB*du)eIop!VGf^2ANM+N^9Sf1nFh{N=gU$oMlG&eBJLN(E zOl5CMDqq!?RE9a;0wh)X-WwnrT+e_@36KqLxPtr=AR9dQhXiR%%VA_e=P0PsQrUHXQOTs*_h4RnBEmYC#eUNAcN77cH`M5;WQk4~G?c+oxY^aLFgNhKzcNK}J9W9L_0cSHm zf#Ty0avUtGA9o~O8S)hTXw(3ZL}r=nVQDzUW|-U;XGY13Pr+FxZG(B(uOCKsH1KnjhYBt-l+;8105r+I2{i?|KXGHMAQ*J5bYx?d%m%kq&yN z(Q+b1PNX~7{LTBe1g*lS4a;?4;hF_Gf#y9Te!6edmTsz+2a6H6!jHO@=xC&(|JeqW zJ#--V#u?JsSF|&N=x-6#xfr6R zoBUXNmd8{nbi3k96w?J^C zw%xpAi#Ghl+Ui>!Z56w?sA= znt8gVnI9XO);wytNhI51HCFrtaoaWGkh=|#{C}=6kwq zw#kk)`MnXCg>+dNn|!6o|NbVYXRPD*16IKXLtJh2nFmo?p9f<4?D^OF95mVBl#e>J z%hhKs_4$p-kD1U7ZhL7T={8yim;d&^xcoPff3<1U#QJP9LSQ5OO2I1pO^>JuV0X8} zxNqIvpfbMfF^`$?B{3#r#;C;?qlK?~jAlt2QoKeJgRR0|rj9hl3pJa^6nhOb*|CtZBbOPZm319PYFBUtSHbrsJP$f!tBR*5X{GFVk&$av>XSOM{xw!I zb;`BMQd*MSpKVOCDnDWI1Gz)u+*45oz^c9miRtesHedy_tSX+@rd1DM0)?7l+HRq# zt$yG#$?C%szTjlpM{S@Cd0YSpeX$k)QaOl%4xiM|{MJP`=+_=Lp0t8x(q_KD4Jvsc zm2@@<-y|U?yb3}P%Q>l%2O>$^*#kFu@z z5C`P9J^-mX92kWr<>5fNDL?HB)>ArjCjueAAo@fg6c9w82!w)y=o5jEqvkIS~lmOi-T)gl=JV^@%_zb|O%YH2pek@@`O4 z?bwL`ds9-I-Bg|k+yEq%w7v=$gVS&oK=bx&Y~OzXG-L66G!hA2$ z{(~SY%xHM~UG)TVeBpE=?@5k7OxJJ!O^`sCL)JbnNHEOz@9d8S35B;|*xH|o04K~h z*6c3@Nec57Kl_9rDdDpy?OWkV3tvOT=c795VFupY0YNgtU!n@OBS@x|xgMoP>NFQ2!kdV!7ZwLBmyzWzviua9 zmD*czf>C97w*N{Tp>CB@D{4MLy$oDK33owL4vxct`{T} zzJUUMB#0B{OQ7~HDbrN#R&Ukrh*gb;P^ojNEW0?1ZwcG?*gS5}CY&_}srEs84igAx z@m$S*!akD;`izY)9Jyy~!vvm;r#@**DtHU9oU|ns%HWZgdXtI>>yx&mV#4~QEvYB9 z&?jw4y$I`*wxr&KL*_-=jY) z>(i~|(+KO+t>n3c_32jf=~PIcZY9qntWUR+=M&baTgeLu>(i~|g@pC#R`Mb}EAd6z z8wd3hla{V^wsZY0(8~Bo|KHW-Q!m32ker%`qKh8o+R9=A^+5bR#4)=Z<&uK>Y z`YInpNjZG`(pOmqDyu!;*Yr&ijtI)s9D?WYeNEq_g`mm+nm=OkL}!Jr5Upi*7fY)D{Rb?wE>M}jQ3YZZNf zfiI`cKN4I=ns;HI*X~ClTkCMcAy<*m2mipIi25I?(B~ zb2Y1cQNt2To$?#-+08ee+vzZ>t7g!fM%MC-b0)oH8DB|Pvz`*7edm^OFsa!F-PEZE zJFu2r(djrv*9mwHJ7^9;eC>_Xn^OsvK{MEMPbDg{o_7s=xA*dk4pN8l23>#^=2D!+q z?G)EMm6gcr*E+L52S3t_s-i;d7NQIIAYOog(3u|KscKCOvy_jz<5Cu|ouW#p!YhU# zrovs1$24f2XEdlL-^4yq5x9>n+rqO0(YiZvLnjKXHgqus?oNi{MgeNLp*6uhy%Pz} zZ%wf0%o*WhNW2J8@TKmUNAw%isvP_v)CC0d#vWo6IOPuc>?qNtH+W z_=1nW@xhnRIg@fN8+3L+dh%{0ya_?#Xuq}wGA2NEQc;Y%;Wa$dcOE z933jdzNcyjDajRhkzuJRymuzfT|o~g!h^nHH=Fd4NZ;W}|G7!8Mf$z5^d1P}ZH`){ z&zM|#OfAXeSi@$RtVS@tuNmRbW+I=pv4$Np`PU-ff_BKjVb5@1zo<0JJxmTd^jATL z>z9FCcB%m?!w{S%WNbaIB!`Hb8l>o_YEaK1bJ==>1-}XS@JhqB4|0bOGRWgZMtXB5 zdXUn29)z{ymxBW*qb_Q!T5a;?#MEey{u#lmLXb-}{)u9vw5%VvVo(b;Ue$1TCE1Zx zQDNOx`fHQ_60|`vstQdJj^(q=SI9X-J!c3DV`bK&OkMR^Qf8k@%p&g@GPaAW_DCK; zId^eKIFbiY&W{CTpkhiUwH?Xu#FQ-h#*qw4Ovx6IUm&Nn6OaLjDeVQkj;T2UGT1OB zS3rgsrsN68z`~Rc0v7rJb`+37gejf4uo%hE!IXRf88DdAncyfcpss)hoZUtf7|j*a z=nDZ^C-LAZwUl-{n#B3mn9EQ>{9FKMa+>XE8jCgNmrR{1sWe)X+K;K-0}DYxiP&>IL6^d9>Jy~jR5@3BwNd+ZbR9{U8nfgnL|APC;k zj|YMTy@4P>Zy-p}8we8g27&~=$38*tu}?4|5F}`heS+~okf0|JBu?Z$ckT%XapGq~PCOjM(cvI+OcWljO5r+M9TQDz z$K#7D)l_DEgh&7@<0g!*NXBD$9>NttNIHs1Q8zIV=2xeGL=zp7XA%J4q@c?CypMySw4f z0lT|l!tQREaLCHO022I3Gbh6{XK-r4;TIk%15N?jO590?#GPb3jr2f<#GPbF+)0MS zon%PdNrpG>BzekZbo7inN%q8@Bzxjcl09)J$q8{M$+H$?*n|%n7?YbHeVjGoGS7fa9e0wF?L*l*?j)r>VI6mpl1Es_ouqVNTj;oxl#YaT+(}9&!aD9GC7&?k zPFVNsCt$Mv)Q)4JO2#}Gv6b*MX&VBP+cG%gNEF82l>6J`7y$kn&X$&()_GN1>VA zA!SZ6==L7P~eZp8>yN0d9;%|;qO zYUgX{rF{8{|A->#EUaqs8yRbIL^1DS;%n+x5Wf@3lvN?xg_n*2rxv?_cex&gMfyi6 z(ZY-@AN8Et2mY=Hk(XHw;C=vo3ETnTOaPHyhULN{Z0cnTK9gT(@{8HXY?F7Z&ci#g z@>TNIRZ)>nx<)`jhe{W)DdroFu0p`NDRe~Pr^r$>t)eovK>w|Vs2!@pkJ`!mkctOM zCRZi5L9y;~W6(g30^GDzGLo%2h?)2F!Cvi$Se2;3Y~)>iVPf|hiTk1G*(eYd!6F~Z z`kcX5=@TaRHRS# zlPe~8t|1|7GHR(cvwAEy>Dk3lf2%>*&Z7*GY3u!KbrEdqb?B07J*1Rn$UgOuu}gZU zw?hN1rE%;w9Mb^vqju8g_mUW`wR9Re{m}S4j#6v?jP_kflqXec9lP~Dq7sI+ZVb4; z0xGYBs`V7!w?78*W9T^inlj#$*?V>riKx*trqDc8uLH8AC2!`J+|>w(3Vp1m>xhav z9{E_258JNQ!*N54%SJoigCba<>@!oWR92{G4bA6rDrF6d@@d6u%zN#0jW1`7&w$pt z#+S3k4-u6bU%?vN1Kb*4!5U8is%v}|gt46NsYU)#)zl- zZjGlI@>WCZsJF(hY*S+vC^b&AQdyy%U$VxxQK|Vx+Lx#eKWb-J3=m!8+gRgAS*Mpd zXl~=6`EVf6r#Yld8hQbnY^&-h3Mx!RM?Og1 z_R;^B49DNkGJ)PtRaXP8rmEKriAo6(I8L?yAFi7FkssM-@)FgoT&+16>c;?&TJfGe zdK=;!p-!Y`sHSPv-%gBGN03NkEi;UHq6f5id?i$u#`+Vr*x05P>)R6b7ekusiuxnJ zW+pk9cf4&K%F@Y zxg_+6R%yP`hK0uAg(nOvw;x$g->G8bbc>!AV z_@hDo45T#I(+v+LN-I6ft#m65$~-*$u9bB%S|9#C4aOKAy7x$(M}UWUcbr+K(PYkU z9B?woZ7Z1vKqFk-Z}pr{pZ*1nb-s}}lbdIJ)XuwL$a=hg!SOyEyxOIGL6`OcQCTnu zdubG?`1CI+tqEwEL??blRL#-@`h*_P`?l!e{x$RVg0%8QQ+hQL_z7g-Hb5DRDT;#; z<`4-Ci%Omui((-%6uWSY4K%qJT=G#_Y7B&kUFO%I$wnH2qVCe(VSB3S9V~PxV6@4H zC29ff)kUs=(G)PbwScA-Q9~;NR-63Tz{pXry8@O|z(t1O`$tARXt4BJ(;^%h`REDu zvMe7k(@oPe-L%Y))r?A@@#sO%ykM37(um;58SE9ok<(+g(MBwKsX@e|cNv6Z>Kwyo ztTPt!*W)%rB_hr?rzu?Rw|FW>jUb%pHkLx#8%{mPHpITIc#4h^QzjJ)AjQBN#OD!A*G&W*HlM3`~(?Ly*|R&&Az< zxbdp_XpFhguRqu0Crg=s2Ycxf!_Kwqw-C&x+>GapV512aorX)k(8s}zTWA7S>4k=4 zB8<8m62Z|bTwLe_%?ATE*>{(pKW18RPBbIGf>%nGR2iE&T+*j zVXSey+-zFrIri*O^(ac0!L||vkwYdku_113)et?#8L~^EPmczJaB?f%VUQ_Um3*oz zCQZRx{Yq~%nY+N23jK6DS*5R=bQ*58Np}s`6m3P`^ALG#bD+&uZ_?Kxy}zeb_v-Y7aC3>Ygy=ZbrF( zHR)`l4j4kNxkwwGFq!oBQBS6Ri-0OkSJk+F-L%FL$R__57*h{6@^N7px^fJMJOI!lY zFBkgK@y738S`%f(tS<5d|NZLb9AnEDf+%vAAxO04)oY@{z_rRIG~IOZ&b6UNMqF3r zyTRY$H}Xbm+Str+m-?ey!~-m%yCI0pO;IBqy?jYjGjmw{6I|Q{&>DLfwb=WeA(_2L zMR+d_l%l*C?2`LSULBIw%?Q?6&QMq)DcaY1RJ zr;)nCGT00(Y^+IVVdEqn-}ie8iw(^Q9<45DgD|=I1TKI{;m@!jYJZv+wIb)Wt>qWS z=jfKgxZ)sHuZa2WFf2KFeLtF2x3EG z$GWH{wIaVad0aQpDroRC^z@)dp-i&~y9}Vwm$HdIkt$lFw1^jMElKTcj<}8fi8T5Q z6s;Rwb9_Kt8vRpg^eOOgeeTVM#LpFZu_4^lCyOO~p>7s@_ohCI-Tb9`K=7@b`n^p0 ze~Je8gTLQsy4SA+A37QMX7Zm9{6gZ4@l#(5{w47~l=qF`Bd6dfLOS_d>C{2e!IqDX zw~utL^6_-lZvJAU?p&V)y8R4%gXOr-7Tj+BWMjX#S*~B>Q_ZY?t7)Ru?CegyYde`f zxfcYHgC;Yvm!C2n!(NW{@3V#!s>?@p@x9~9`i!!UwJGcUxU4|)(T!NMSOa+o*lu)G z#O$V8#lAp3)Zz)?x@kxjD=jt@3@K3EeJ7KGR(co|kuyzZqT;oUS|}CgyeGceB}Jdf zN0s<~;L7Sf9kMpJDJybzRLI>%5UpL($}n^)^&N1v-T^sU>nn}0`I_Qux1>L^q(|E< zslt?G^gV2dVgsp{Z+K@@_c5nH$_s`dHjuWOY8wI0Nm}z*g)4oRx&l^GKqo_x*myOb z3d7UtZt81Dcd$CuK3<_E-SiOT=n9W86o*LB-}i}Ik~0G(-Oy%9vpgkjbW0j-NHb7x z)z_DU*;`6l4mr9bU170$4e%`_6^-IimUefWr7iQ6*67MQbxaf>T%J5p;wipcU0DS) zA*RpIlSZEI$Xg-2wGQh|8*wgw&d4<{NIFeX-Lj?U8=_ZBaKxaA!giC}n58#(WVDOuwlwRE zV2tP<57D4RqDt5HOAmU8PEREIiE%C+yf?Jkjir!&Kq)Z+z1#GSB}%+ln0PrEiGnGzw+$9KEeR*33&i57~`>2s5Kd25|?R=!rou6ub+!;@p>CR7@6jg6uJk43NXt?gz;NAYY}^e96Rv*`ES zKGFhm$F&l0hVLO)z{wQQ%@D){Y>f#h{imrYcT&%S3qt~@_S3B%wkeex!qVvm;R^Q~ zO{E8pUbSJ_xxr9yPf}3e8Cu3v*I`?Ev7wn(3XwYu!mZTU7=u-Mx2LGZv2+YhZZ{8@ zOfH2l^JFG&rAps1WVG*nhRoPzsay5ZZwyfZI_o8`thmOdZqu^fpLuC?z57_DrKW8c zqE5Up3++cm2bg4PP_2{QW5w9^wsf3_Xm%pezL=VI9-@tjM0sm<$6KZKhKOVJN16zy zYHoI9oks?Jo@tA%E`e2cTRYfzDc3Gx``B&s@gJv#i{Y?U4<0q(ha_${iPw{|r>30Y zCT=5TFP%8mP2^rz$;T+s9SeLWmFBi=Ue()Re;qu^Fu7=oJZJT4Jd$q(hV)y37coyB zR|A4RSKwbNPilh>pEb{+{Iu@uMV>wmCoo(Wz!(3L&t3?wrkg@uWQ|UEb+LwTf2Is#tO0k6y5_`mUs7Rf1mFHl=}+&ZJBu+q z!}+jk-poXed$OW*F2ippea!?IUh)?5@-Rs%Yt`@_&J=lvlcz4j*?rbY41&viNAd0~ zu^?-7pO&h~sHJOHo*AiM--NHO8zcCc$5oM)z#^*`EUE7usb908u|Be_DYBq3a(4al zYv7S}J1G_GB=sJ^kWVJ&V#1H}cZWt*D4U=3SraAf=n zNCI_zV`Sy3rpSr~O^cRB7Oh>grhX;FE^n$|vl5LMG1r)tCrw>m&obB4uUWe?a`v*O zrIDtk^^rxZz_6$(QnnznYBhVqWsoj0s(^AC>c9f=uIA`YEgcr)wM|rIO(Q#Rbi>+H z>LU$MKFJ!vK*j9R_e;y|A-{gyQ@TD5W|RBSY@));A6zMyewWWmbCs0^yd`r{YNM(jk7 zrIpgLiqTqQc%NcsSD!XS>y7|IL9Bh)p_zcg1@JcvIBflcqiZoX|6kuc6>x&ibugZU zH%bGa=A*^hxMS)nP`YI zVyo}mF~v%nJEjP_cTBOmt?!s(fN#**38G~7C)JkqBU9O%l6s+=$~Q_c2a+m%ukV;L zuaW9NreOYi$d*8+pblh8W9UoJ6UY?ox{xYKAXCs2$Q0~GRt7Td!vA#7r9H`Tg&Bju zOPd+$U0d@AxoOZhsT#KA`@-0GF%Jnr{?awB+l=c^7<~(dx z3mHblCUCXCo;1Cv(cD_3=U!=uF2pFz!%oiE395rVA{ z)lN=^2b>HFTv676gI`hx)viT`XO*?okkNKSch1wQp5BksMKkg z2eI-wBdBSloNCf1Llb_~&U%oyo5bo(b2zRd=Jy>2&!3KRuGwU z9n-fHl=p`0=4-cfmi{}96~L=XTRKbs&1L^FoFnoN0DDZureay7mhfu0Zr>o;D%gsI zu|T`X%Q@$lA+3wNoFkxBNan2*qe#ZyRh|%Vzh=ho)1ci$cX6Z?alsY(v4C7~Ir2(d zF{e;xAV(+Ly*tHQC7eRT@2KufhO`uV>gQok##0|h<>;wf|I~9Yn2vaA-+vz(Zf{?P zqU9O@`#YiGwl_4~{=U#~e>^nY|Jg#;L_)*;p3rdriQAE^{kPu}8t(sw>Dqt$J)z-# zZ)mvR8yfESDY9t)?e~U;`@Nyzes5^F-y0h4_lAc1y`kZLZ)mvR8yb$^${d42x5^!X zes5^F-y0h4_lAb!?)7uQqwfgxdqczh-q3KrH#FSu4Gs5uL&N>v&~Sf3Xt>{mhWq28 z;eJnOxZe{R?!SZG^IwLBCj^BD;&%iFJVD`s#Gr7wBp?_M1P@9exLg^SN{!Ma4m>nm zwTHV&*VhH4>+1s2Bn~`ur5eU8i33lUIPi2G2cB-?z|$lSJhWRaBHdK1Wvq0G15cMY z@N^vqE_V)w4%(|g6#q5l&=dAnCg?cuCV*}nIECpraHoLxwMrbgQ}_nPxsC&OiU{jC zaHp8Cjstgkz6)5#fjhkj>o{3r7 zXwsiXdLUimz|$oTJYC|z(<-8j6!R z@bK&#P*)uX9w!@SjT~fm#`{P z^dj4%9dGm1dui8^V#^{QwUZvY{mCdvm688cOpxub;Vf8w9EsNweT-8~1<|8Ga~_)% z72b;=HCM+9!y)*bZn->r$(1li33tg=wTOI~!LWy1Ri`SU3GbRwV;6$|IU}W)$U^GQ z8-uPUW2s5+Ij$z-Sady62|yfA^nRie5Hf-2H$>&jl!=#tcfhG=QTb)klUbIUn)BJe zQo2ejEzzinO5=!&OAlTXq#7v7IyuUx6<3=-BdZ%wI$%4B)(yCXiX9{>YA+?~oCZ|X zUPg2#QBnI0s(mF;t@d)31+}}I;##-$&1~!Hf2TJ0?P@zkRT??Jq3-yg-=Vg?qH#NI zuRFe%1METyyAhe4&i82cB1pspM6Ethi*`^4E-U{t zLw5*G2z%skmyov4!6OUifYpwdR;&9c+L|2Y)52a(K58d#Sk=vYAFbj5%GS-hj}7<< z(40cU)Vh(xAp06^zGI5~r7(3^8prT2juo1LhSP-}W}(s3-9nGB&~t$5=6I6qzXqz? z>M8R1nwNB{_h{rpns=B;8}(~LD==F5*BVY~E@`L;_|49u9j~}h@3GL`hA!Sv*Tr;x zk2-%9)A@bs+;<)t>X#n1yedgU^>0HZ8M8ddQJ?LEkmn3PR;%(+J6~j>&$A_E-Ln;? z^vmtmv9}5EtF8jMe1HC21Cuc z%Fz58^3gU(fhY<3v$#o_`P}n}aQP;%E zf5Z^6i#t8z;m9>b8;;%Q8jhT|y+kO`5ZvX8w2B^Kn|J#Zb-6fOB1mUJmRLD1qWgC^1Q%HWk~fYCjzZ}zR*jc^Z7&TkndB$0!a*fgibUU zh5H=2DBQjr1o|#8djWFwU0@L08Pe<^Q_Lp7E<-8qwP5#1SwY?yXa5tLhbkXIioP@4 z`E(dk<1jre!%hU2OQ6S!13${9M68h@$Ls4?|#7X?gt$2e!%hW2ORHyz;V=C zXsFL~oFuu%OP}XB-u-~%-48h4{ea`$4>&Mz)Lq{h?&Qg3UHUx7$yba*)8{#kcR%2G z_XCc1Kj3)x1CDn;;8d%=C`aEJ?s)eDPJeX+$}#6Tj@b`5yIDy&&v9-hsLykpTh3*& zb3Sa}xnm)cxgQvfw4lR2lov~=cI-Tdy(y`D?MhO4p0gK-zB8ORgoX5NG2A5U%fRgI zuq%BTn9cjY!}7u>jP5IVE!%-zB~82n#lg}z#|53Q!J3wiyP|u+rv68FMeienzAKs< zx_3oOvbigoTYUGfXx@M5-W5$)zq6N|N7%h9`Y>Sku4uyUUD1TyyP^s6oxMl!KjSAT z*Pq;#2RE4&fUV3A(Y`A4ebm-xWmEz2Cl`Oh>_4FHc!Eo1K7#~iqXqoQy|O`-ITqvH z%3J|ApfbPa7`L)KXIhmY$sPm>Ujysf&T7wt1$E<%NK&(zDG}~B(o%9(H{o|nf5zGDZ9nSYu|OwKk&f5LGds8p+wYDADf0YG*$c%W7w3g(1>k@Bniclde>7@?~F$TKWrEaP}3F%675x`K5?j z>3Y-vyemIyCj)dk%Uv2PSxnajKyC1;m0U#J3AD?K1*qsMqWLJHtF*;gRpNUOO?7A2e_v1v@l5soG0+h6l$ZN|mVbeI) zOpQtj`%rz=d^JifDn#;tGccFkYVux!&2;D6L)|&=9@?rox+7v}6VmZx^e}9)8r$Js879SF+SI0o(v!K7m^Rd`e(1fEml7_rm~w1E8G4b)1pYL5s1}9eI?q z23fup0G0q448ZDjfuV#Z@@WQL35!vul&}y#UaQzu!cx>}C8Ecy-mQ7cSa$J`jHCf> z?I%d>AKn%f!L0p8nhN7lLEdP{CmZs0$kXq}=Dv<3b1KVsjk6`LqmE!j1BcD2^uZX; zbm{s0{S|fJZX@jq4s?9f&hyeS%7pVia$b+xcHT$9_dNu*)hmH+rLg5%`n<{<;-2=hw{Xc^1a4xY6lR(pdA6 zub%9VF;w(9dg1}(7yT8$%LLvAP_hQVivSt{6!$Z1DvrY#Cs|wE#H4h6AwrvjI*r z4dA*G)k*z=H8B8(egy1sWC|}86qlsnI`fmTl}s^hG?P- zdCV=uDonyiJnHs21gO_}?N?DTlCNOvb_DQuw%hxL=vOF-rd$dC$4Py}DZ1)t3i+t_ z`eAey)gmin9e|So^dT@3z$^g86AZ^YB8hJhU;?D`z0_pPryj#p1LYh<`sLsn$i$vc z06XVwmQ&5EJB!nB(j&)DqZA!g+ImQ$6?|kQWk3Ypc6yAGXaTc9P}+V*loG5&3)p?W zPBjv8Ov_EBgp-twl0?FGN|<6Y6D3r}Bov2cYhkhJNw@olv3Bq0dZ%D62A$8Sn+Jqf zQL(Ey*Q1r;Fz~WN-vSTCy6;j{;sqK*!GU|Fq1X)B3r+e!$i5@SY4zReF%3q4d(7i? zSIxf79-`xkM3!6IzK0DFok4pHY>%YMn4x~=AsU=WbXKgmJkxBHG%u0pG?%Ej%tPcU z%5jUrY;_TM<-XgXb2UM(j0cyY0n{v2Y1oUA#*fIDg%TE*>%%Du9}v zDeWBKe3!-GD}WCbw^pm@*Pa4C3{zO0P!HgU8g2^NLF+kHMKh4ZAywn+!vR&i*yNkR zWGB`5I5Ws^PxrdXWZo$HS=NuiJwp8EWs17m_+6F0zS^i{b18E%2-p&w^QYlOOU(Rg zC?+2dNi5sOYkAD?iv`J9hG3N`Chx<_4{kuUm)Ea^|CMUL4!rpJ zw#qOnK*3%|O+HR%<#QH`xRpgLR7Xu+290OiE)t<5upHBcGzfk!@Z#z^h{A_;ja9@H zG7u(yooO)UUjm_;#_BuF6i(B>IiB9H#>ktD^x~NYX*HEO7w9svw59b>S92UCIKPq- zJY)@?MfLAg^Npa@N|c3RUDDn)tUJZ9esQjuq?!$BJ57mIj#`{$9L(5_Q0jI=kmz8n z3tgRLs{64af-3S+530LeDUFn}zfCDUwna6)o-iM6E#)C~+?BG6Ql4#7%CJN!FSeHQ zGu1!a)aXe{Io76>X^B$aYc1trwb7OGIi-Brrj*5rQe2`~>;7Cl?n)`dWK*0vCu;GN z*t%=CMVW|?Od&4OQ4Zn#$`5HW0Zf5}(vmhMY}*zkJ3i7sQ9~4wBuKemO>m{0OFd?^ zDdn}8<%yK}hA38>yVVX?%AJ(b)TWfmL@6#&zN^bU>J?YYi$JZ5{!uJ`X2&Nr%pE5!^8ijTh zKiQ@bH=kN3m*MdPC?Es%TPu>ofm(7eQm}zHV=0w`v_=Pi@K~)z2Y(32uNL+1e2ip> zs&6)D18#ap5g5f~YCCIWJ-k`cA)WyE0gd7VQxNgdJRMG}?#5&f$4Osct(5YDx)Fr* zI-~jmu*UE=C)3KgM@t}n3vH3QQt@zvy9k}fqZ`dOHW!J$RK+73%DI6wlq}i$AxAPN z(c7gQl~TD{j1yU-8Ty!3%E`!7YTN=;-Im`TrQ%$vNsg4>&Kh?L68s%_Y(u@chS7S( z3bw{GGA896#U+gtWu0^rm{KRp4>!^yYmU`am1S5bt%s=81u}_JSDiY6NAlLM@#nWX zA=R9z-vp3n>dzS~xQ-I=Y3hj9NH{FV0TyCdaZ0IwRa2j?`+2tMt2z}Ntq$7td3@jw z$X9t&k>9!mwKJF*bTie=(CcU^P5CXxQ7FfD(I%|EoVzKfBjvmg6mX_0PRmZV(>kTi z%*|98$oAz}cG}?NA<5(6r0gPGyE7d5sILK`X&_xL;|cN~sY2OUkR~USNda|IV-g0U z)x+IUP?AXtjL&9TvReo`MXB-GWJ~R4jnA$?W?FXuh+hDUqZJ`bhGBsO9A{>uh@l;D zrssEy4p2sRDbn-dBHP8%MWy!HDz0Bnxf;-wx!>4aC&O@njy9?obZl z)IgJw2+Ji`DSX@1*Taz?lNyMVcQ!Ib=`Oh*CA!9Ihr^$EL76Hm6wSL~q^Q)bv#QEw zN^NqT)T1C^Rb~62TOk2V0her3=tF|Vmu^#*FRytda=VuszL+G$rGXLMTiRC`d+;Ce zp2^_P3bAgzG>9`1$%LFTh{qc{6ki@!F(Rr|l$*+zbl^!vWvu$rS_##tinlC_td2Ju z(LNp&W%dPXx}6p6=RrZ-KaRp%C217`c&W%5=pxvIvDv1pnYnJW4QB20p(PA-W-jYG z)W|`{P={ea+0#T(=x|TFi(QTINR)&q1<_NR_NUB|9xjvxXXg&25gll&qrC|%=A?L= ztxTiQ43%CV6A=3!8_R`3>6~$~Bxz)wIKJGXIhSz#Pz*ildsSw-^z(-3$2Q? zxZ|KYmJ}NreY{ETNa~w7G`!Q@|30&g8K^jz4A($2W0R|-XL+qV+qG`|ES~E$X~qAM z;l>?0=Rn#)UffhM`FUrnj&b=3HVccT{dYF9#A9e#U5qT5`CzGH4T41CMh1ILhG`Xi zXS$NB75f&s);kh)Z1)hkbemLC<(K^{~8NPp!S;b*1U{HX3r^0WFK0 zFVXV2%0w&Np}=ub$-#rOes@e%w;rZ_;={17M``KJe(scud5uyAc$qP$d5t>3s|<=a zFPmww(bvphLp&&QTTgawOR>*~$H(l5crQ_A)T0X)l{K!n85wUIJ+wz@EjfX43Zm4} zdOUk3ICtod@m9$lr)^Gk3A5Vx7@L{-{#vxcQv$TUQHEUv_c^)!T>@0*6cXLMsA6?uC#K?e+Xcm80Z zttY0q2{Jb}^l5rM;s%Ye?`?vF0=(lNB4oaz{r;QL57G+HAeQc`j1TaC;RQTH5;gA| zQ%!tkf@)myx{Fbi=Pr3Uwt*%tdc9+mwI3Ac)n0+~x9b&TwS=Kee_+-idIS&C+IUCs za6N)Y#Pr0t(_=dtPx4OTHSy&5Qg&o4(JUsZ`#C=6bo9{i$9MCVzZSD`^ zCt$X_1Es+K`{OY93ez_97619R*1HPGh}n}^NTzE~tsIJbwB_+7@FcA2cXkNu-5k>s za;TRZUpTkDKZrG<^uJq_yT3)B!FJ*u-^!gNcp!I$VRpUl*1@12cS38W^_a*`7w{o+Hgzem3K74P;z5(etc zl4n)GRvGN=x`dt>k~nZ%ZyZeHO5b9EfHO5HKf)+)MrrG9L%eEwl*X3?;=c4K9i>O< z=$K+MELq)zWr6Gd^};~r7Z3a~}IVr}D^ie)Po zEnmC1zGD5r{`30xEnB{9<=XXSOIEI}Sh%dI(ejccAQj7(EnM5Uu&k=QQl|s2Sh8r* zcjfdgALJHdSt}MSTUovcGn1NXK_bP3NqxZ`7YgG=h0aHU3^Vx@smk$Jf61R3~v zfqA?_BbGdGZPT*l8XLNB?Xu-fWy@9$Ckwve(n7&Ik2i&AqO~iRL62BYqmhI!GJMgJ zC>bq#ufnZ?_D{AS#|)Z`1G-@q2hF>HSa zn{EGTGueKqYVCFt?B#ei+2@qojSXiHLFTc|Lv^MQI^{s_RSov~{g>P4Y_oHZIYYM3 zxdvswviTUYzESv*0+~NjqEU{sZJx9J)wMSvX~BNTt8g0Z@wIlJJt*22ORil~55?E*0sU^Z1K?4q>xb&t8`oXE%uZ|Bb-`1+Z~X)rf80c( zdweagBo7k2Q z`fBats5vD0oeCtsu~8~@}ZL%O<*GljwHb*V5=rJ=pkLBwf6TBF^_adw`rc7hNUwy~B3!m8f66><`*^ zZF~hJzwtY@K=zXa$k1iZ6zBf!c5bcnvHb+(I)zV3oeukbLHo;1P6T8Z`}RZX7n`Wm zef}2v3Epv0j4yK@hN@z1`NkDX!oeR$LwjdQM4{uy6O-S#>W z@xYcAq<^h-JzsP^L0u*DB6Q#!=M}U)3i|b?+B&$Erd{@(stLbtUX3>0jPzsZ*RSli z2wvcG%I$A9JGI}~`_(b~1Zwq_z0jFpZ$Rdg>XzNqbIRMj$nIiykj*uAuaBQN%gz}%v2JZX<*0!bsEgeGP`~lPB zM@o(B?ya1_M ze>`dX?nf}hN#B7^;w)d0a_+a&_t<9*MOqTm*40iRh!I)0?4gNg*EvNSwhys4G>rQB zCl?JFHsZ)dPt!=?27Ue8|J0rZ=a5`$udTJq8=QiRKCv^M2IhZmuW}9_xe$`}Z$TlD z`&&!r1osQSuev=lf3k%mzlUfvThqM>I{Tq5a4HAv%JKvDY`Uj68cUl>JUSyZZ38Ot8Z{d_CHYpFQ!W z^B*Pt=ioMarXOs9u}c1X)(-w}yk+SZYvvGo;|)H8EqL0&WQ~%?GyE%^tRQ z$i%wy*47P~xbz7A)=q@;ylzXw0Wkj6s=WqtR;~Sp)nwnkWvKmoYr@(_`<5-JFdSjh zHjjEow0caz(&ZKYZ>)1B+l@|xbFIDBsl{`!Q)@qlMb2Xiqw(MtUk~LRv9I1zOJb+= zPZQ<;r@>c(cDTttd#D|*JWn$yHb!f%H!&u3T+5zoGv_QF9d&;rd6UR^5ZfEa* z##up+&sEO4T0lv)Yc=S%CmbUKW*NU-!>kd^nhWdzT)ncNuxc?C@3*rtkZgN*GX2IY zjhJPD-JPPb@;du+g+Vyg-cUZ}l+Wvi$kcNNl=V41ufBRWwGOrfok}RVZkwGn0ZP~@ zEeCwP+ZQ3vmXU1-UnR_G#+IIx$K{W0-@9xgwAr=US4?m42SrVH$?EfcEFAY0lHpxG z&b!*@;~atQoX@KNZ$>yw|KD#Y5=OEY@$OGJ!m;@N?(lANNdG^cIkYbBPNT7Y-irDa zdb{Ad4EU79IRzQo4K z?6Lo}(b<#j9I4v#Mf0v9!C72+ z*jJ)FXcAD6hCi~`5A_vwv@;tnzNWcuZuFG8=!}WO#t)l)a-E&)4BdXvK6B6BvSDY; zvBP^{;opdRfZLb=tuS}V(^s8shg{iO!yp=c!iz1O+4UD_BlKDUYMvIu{ldmy%ge}+U#%?->WcF+V%^Zweb5Dgs*Pm zptkF4?XJ!qXUDWTgNIja{{&PAHgoa%2Zb^_f?(-TdseOexK(bi*fxAkrBhKh>`Z6a zMYm$2&a$(H!tL9sLqFO6sx!=){3*PK(`4s0*h{gL*oN@7<{@jBabVK{)SWT+W5~Y? zYd;k5qWTEPUhIIB{j6$n7Qojy4bR%=Ojr&-a=N{t>3XSQ5RK|A#kN9P-=5y`fR?u- z_~?bN>sFViz%LV|55WuPJ=J99oQ7R+Q4>(FHJG*Fq6^ep_BlgG;SXdxWGD88k1ctzz+Yq6FlpAL#lzD!Im zW?W#mR6E6X24t+BfPdxo>Y;YVgu0VwOg!~W=QUsVoTowi%tm_72e6$Y%(ec5HXZkq zdPDXz+nL~O$KFcR>nF{1&}O;65@IaeY`Y)l(uq{8A6D=H9ZKlObM>uz$VhRf4-43B-E544F)Nrh6s{OmfpR-80jqr+etfBoRo$Q(RvGam7`c zfJ9jr6wqBk5F?7>3*!saRm3$SD*Ia=Dle7aIaTLd_jcXefcyEZ|NMUaNv6Ja>eQ)I zr%s)!TlaR~L&zwJ$7rcLr0HzE$EU5`Ax#SpKj-H2=3T{(65Ic=NoxI-OIh=GPr3Q2 z#~-9A`@q$cFEkwVqdtZ**Ot<8ov$=Bo|=94Hu!Iqu@;8e_*dG@m!Q_KGhywcoIk zr`-XIzioC{7fiiq+4}3hHM?n6|Cg2=pQNDMLK~AqlCg;$v1!kLGxPRePief4%yCncO!!KNNPCPbk$8Y+6(zHEx%Yx%{evU1i`G2;8ydy0 zs5Mtzy*Bo-ZB38e-*iIkm+At2!1Pf)YJaXfYJc;J96k(u^M{H&npm=B>_|OqwrPgpxu&R>1uRk3%_=97ka?~0};V$&b#9{dw6i#K1qwrPBGY+BPH zME!O{jE@6O*?Z`c)${NC%(YwpwD#IN=gwQWnWF?>q%AzGsn~R6Y}1-oc~wrdj ziuUh5tBm`HCROl6)}D2ec4Ss_I$OJy3RpWZc1*=pxId2d=bUYb#=U0H@S6#-|5gnT zzIF3;*Tvp(!OGt>UGstJ1T7C=qe;_AlY=fu8|X}``TR{f$Gd@3`RaK!qthyM>P+d_ zUK(>E_VQxVLf1dBUS1v+Gz~W|S$olGv@wbkUo3Vvovvx{UAnd%XqxkI(`~W+88GKw05>_;!XAeEo;|aG;sqnPJLwRZ6xjIikHBTZ{rJ|pDS*Jj@+78FKL?BbOK%6 z5cM%l{nR#EbvVPy{p+?h$#rKfip_fL*RjQG?x*Ij*s71scF_@NEcPE;xo5i?7UzD< zeIW1oVpI3ID=u74JN2*Wo%#a}caR5Od4KHeHMhk6W$PndH+<>0u^%-&(#8B&?|kS+ zYU-w~SCW)x8rE#p8D4juZdh{;Wj>SSIpaVYAX%Ig_#FV>*52{@93+&f1{%+ z+W2g|yJc7x-tuc19?$9%&%tZ6r z_pjigyjkn_s|MPGE{jr|F{bw`yq~M%$P^#)<#}$pSYZt^-t=p$4@S2Yk#tF@x`>4-4Hu@xV&WU zgV&JKA6~n5Egh&Vxk`VoyLRDt{Hzr#uD@aDReUKqn_|e7ALRI5UPGHl>gPYL7>I4T z`Lpz&_1?5NzG5?}xj1$pZQT~1y>vxv3!TZgOz;NpfW_x@tyr<3Z^^kU-_{j7eQ)eu zy5{|sYI^MYFW$&!rvIkTy1&!d#QywQt@xvS!re%FEAGX2P3CT$*<&(y>C6usX&X&^ zcSw$pnC{R${2~3MmCkV2A8u?+Fx&l_?dztY`}9%z*U4IqvHLE+x$!^>RQ%nSMs;@G zg+vZ-l)9vvD{U;>FmD0@MG#(C@%@z8jD{mFS+Hf|Ti=T9_egc^+$GnP@#&ZT|HrCvvG@2Xy}wXLlqnN*%fmrL37m@4Pqk>#aB4d+T@o6@DM>R#m~ z`<5;1TtiI5V-@B9s=1fZzjIzz?aTVSWU4jQ;ibpN+dERNZOfI{xymc2C$b*@26PQW zXM0x%uUXV2{m8o-r#o5|Zz4;-$6hSZZ7=#Mc#m$FDX%g%t_T#Wq*ZlzIJem=WiQck zH6Ti{g66qnm1-foWF%Y2mU2UsO_zp7 zm(YE@xo4iyJa?pd?y7~&bB9Ttp^bCLOT`NPVtcVPmn>2&j3_!k9oi^*nGQ>ae%pOG zH{#_Ane1j&W7Jit5q(H$tH3&nCin;n;vRgc70=*RYz zH#ADO04b@Kh?cL85%#pPhN%b|<%ZKkS&x1)-z%iYvTEKa{S5uQ;cRK7TAoK;xtM=^ zeqL)SQ_U5MG)5~=UpTK)EauDe%B7)sq~TmXP2&s;Pg7J+SBg35pfB6>(TvRm4QR0h zZN(z=D?t21MWgAmmoAN{{1}gKI+LLv@F;_IC|{%jW4|E#Z_Jjc73$w$QhPyAHs4{a zHE5zU(V_S!`{@usJIF*jU(MF?bgxQz%U1Pux2x`sj`pON=Lsi!B?b&>Kiy9otn4j%eReHC>NFkePrU59`w$Zt&#x%w()W>3;9Nn10Sh2<( zI=lN@yE@ywL~C#BO5M=1KAv$~%0uaV-Ye(H%}B$QtJ*uf{*K;c=c;bljMi4Yp^?L#5m}&C(RdDvtsN-DJ)c zykQ+0RAy6KZ<}!~iX_G#B!~^JOm9xmM9)@|6zb+j1`yL9dR46DHJfwJ@Zo3cVDA_k$E1ika$AMNupr-b$*G@6p>kY*3Onc<8B4i6B zM5?1*8`(s4UM}E!S+7#$g^3<{2#oP~l^(Y+VW3R$Je}7@$kP)9415L3YBZZ4R~3F) z3-!w5rA;?PzxQPp4;sueI%Bz@dK(LwQ%4~+IM!OB5gM#k=(n2K4a-zj4R&Pu$7NlsR-4e!zG}5z?iD?&!Y`)L!#kWSkU!|jqjH&qOo*D!(i~jb zv65QWbEYDmgt3b>a~KqGE^KJOKX=neIeP*JbFaCE}r!4$AzLIGw`;; zOnMnAJ?q(jC`?NaYkZ9Q9#DZpQzkoDC7EPJ6KZ6kB08_GY#Z8N7>iR_$PTBgw5>8b z4UguRbfGW7n@mNoHKpa3%v&2AO{v*}l8xEKHTFaB^j5caro3Kq1ya%*E@iVy2Lo?# z3r{4TX4KCS-anD6l}r>%5Aj=$bRio?y1~Cg!~8t)DaJCC{pMyH_Lw+En~fq(O>Tg? zGfeve4a@Z2B3%n_Z&E}2{wFi{2RjkZlhwgCdU=su(Rw?2`sjUE-uWFVud|y%`Lb48 z*Cc%$Snur_=t(wC$WEDw3SEVw)@#MhWM6a2O&(>LD0vfiZ9LOtXJ zIIxgkMl{skk!q-~3=PxOO=hz(qzOU1B#xWSp*#p+F5lR{a>J0skxjya zw!i2iq=03lpjx0ErqrMdPxc+(dU|2!**DmmrQVcB#i?jws=-#gD=e9<(Ee{kQT#2X zdE|KYks;ILom|znoHk!wt!qIJ`c$%`3uJ2;Xfk*az6 z$!#eN$u)9ztXSIO(PbR3fR??jGtt>WQyw19L0{kP=f#yaQTj5E)^<8qvDfaJg|@kT z>1~%ry-?cKA|&6x#Gy)jWn=iwb>Lu1H%3d`rjC4;-eK`f6QpIVN_F_8NfDxnY zdCU5`+c^4rp6LUvZM05m&DG$tT&Y|U-XxtsWq6as&S3Q5{V88G=xv9&*dR4&<27M- z#fS{rvNVt#z5TS`zNDJYEaaW5BIn*zESc*ReF4N9@EmWeNoDOWl*0U`RcXzf(ioBi zDYI5na2})U3mvY@*%7vjiPyv{1Jm0k29ad1ZrGw6LWt=vxq5?VWAe|)0<+%1s^40D^@m9SzqxR{YkV9D$ zTRGUMG1@HV#`8InXe>pV&~B`prMW|AYP9poZn9>hgCBY?WX9a2ljA5_x%_hKSFu#4 ztubBND>4dgB(+blY<=Ov6Pq!|F1`}e7wmF5p`DB_k!kP9rXw~|gmw_L8&qA1Hr|i+ zb$4{P^{(Y>Z(J+T>8{?An_~+N?OxQJzbdnBmdu46z4ki8qdfzi{Ftiz9#5?!?Of7j z3jDM|rJX$sQ+iza!i!c`-qWOqhWOx#I>H-TQZrx9W;e?Dq4@pKXqGNwrBy9}MqclX zRepSk>k1>0Y4ao*R;f&5qPKEtEJxcoI%N|ntRl}fI+NAXX()`6`eKNx@TCD61V<6Y z5)C+?*2sl}iInWD+(*5wrfaNCBHp8Y6x8Ti$>x^JF*;eJ?XKyMRkL8MOgjyZgZ7-C z2i9cNPWcMN6OuNlKEPKkDGB%&Ax%;AQ{9uu9VQReHmD@uGzfkm{-;(}3h>XC)DH-O zEIwt$A7sU+0R0yGgRL=sO2k4|gG!**p;i$8Vph%P`%(+aH7Khm1U9HpTc`z#1&rs{ z3fbfr(w5H>QU~8K$;mfONHE~1j*e^1NgcpPk2fSUD#(?aEhAw62|-5WNzSSP%Hjv8b2? zeA$xL1OB^jpRmc+!(`3YVUvK1EonXAFRgDS;chTaM4);-Lmz5;H~{!oAnZOzjsfhT0}8q~n00&kGCQJpafe2TTs0Ic&~+wXzz3A}U`EIn|Iz}>Sg z=~n`~taS#~3G@v%0E1z!kz%*XbbH9o!~x7X->d`5`MjQ4QH@;nF8%9;!MdLn7kb3H zQsQuld~<9BOk6A$DOt-T;3N$;{3XVu&zr3o5+_TaPq$`BAk@6mb}#|>ZcFM3>c|)! zTqn-V6BPIhLYt~4RMTrmO(OqPfERe?ad9mgyvW}qbe0SJu=EzZa0W~U<^@KO2QTu7 z^vny4I1gUr5$tu}W*I%uL?kb6tr@uE!9`bqpf8<4+`an2F?$CXw7hBhqRa zD~tz`+#w(mERAKJNUj||B#{EWB4gdVb*2P{S&}xWUciimP|fGg3QfdRxJp8aCf+C+ zY=1P--S}vtyUEc+bn|8DwkD!ifpNY!6eQgZAl2Nx^|(;~66ha>Qu9UhZ}--S{_Wlx z(ZAhWBl@>{YefHcZ;j~R?yV91+a2m3{P-I-ysrbqkWNw8Z{IeF9IVx#*15iLpKN9x zwws!SyU)>vUoQ(z!C!a)uNQaHd{}4TPMYXW3{8Yvz+##Rw}-_v5lav(ripM1SWFY$ z-aRC<`c*r-djXG{5!c+h9x}6qNX`#g)nluqhZxT7g=u=xo@{kCIHd>2DJw8YT@EweXrne z_%#8)V@bV$0sZgY3jL>BE3N@NTu7vUcq)8Y_JeoZtzr)#MCyKHDBzwADzs&}M?~zl zq7r~#7g9`(H%ub)BcCrUJ!DmPQqixXY#uZo7+MHj-l^*OLuQi)xffBOqf?mXpu0{N zA@}Vpw^}q3Q1=UV!)6rvgs%mR9M_iMckQ@GTnct1 zzuBHOCY^L`87y<{87y;c8Z2||8Z2{d8!U6}8!U5e94vF~94v#aM`iOHEOYH0EOTuh zEOYH1EOTv-YoCDaw<0t~*xr^!*xr^!*xr^!*xr^!*xr^!*xr^!*xr^!*xr^!*w>at z*w>at*w>c1_U)8w%Yc3V^>yrP%OdP+%OdP+%OdP+%OdP+%OdP+%OdP+%OdP+%OdP+ z%OdP+%OdP+%Ut_z6Z^hPQi?G*a13@oH%s{ma`r@X;)&6?=9-LX&z8AzmP&n`Ws#g` z5v$y@tY8_=uCOKq%Ob|w%8VFmTNW|awk%?-ZCS)v+p>tUwq+4xZObCY+LlF(wJme) zd#2d8LsHtm1FjI#>u+7+!ganC5Za>uPKpjX&Nu+yA`^J1q&02qvq*w-tE5x`utP|- z72IC^L0ZH)f5ZWNgS3o;PjZkM!$!YJR~&c}Qiq)W@hGQ9If4)IHJ<1Sqx_Y!f4@ai z>K{(3hW!I#w;~Q&;JzgN1eT8N3eJc?$5sxm3A%eu20B#0`2pzI_Q6#_$CeLn3i_=w zL~ujUaex-Ms?hqo{ahzjK|g6^Y`Ay(8Z2}B8!U7C94vGD9V~PE9xQYFA1rfi5G-^1 zd#m*KUP+0!ZutF?@VqK1**4O{Tssk87yF892hiPqg6{Sabhm$?yM6oethgq9OH$%{ zchrnng(FQ#iSM&fd=dJ8KZ?&CQ|6kkG4lHMUH@r|8K8pC(tv!LtF1pdHBaTAcn zt}PeW4529Ub~)|EsVMQDRF4EAOx8^GV=+!KA{pL z;Dt4e$Zhl)Yqd}cdR%4oNC6&bYpn-F%Vy#s=Zjze#^QS*{%+f1KOh9L_@0nyZ;=Y% zX1@o1el_&u}^|o*IH5n5Vnm7W>9pO?O_5C`jVFc zqSF+Bt_uZ{e-;ss*#50U|NhIm$+~c7)}b@#0o~q$#%M6&j@P!=G4U^KZ+Zd$k0m7l zF%Z<7_ib}k)kIfWO@z9zy(YTO^xx7P{X~KOaIg?~lux=v;JrTS05R1u)?{}4kMKtp zt}w?ZL9MfV60A7vlUzN2AbP?U^k5k*@eQj%ziS8LLUXVJkzCm@y)WB?Y~LZguxu|Z z+jC{Rf+%*~7Ztl6lTM&P-Z$jqT3Tq*!g2p9qY>miOXQ&4V417iM;%_$?QQ3{Oq7S| z;P)i+@_Mlv)#-)o`a^pfz~z>-7I2l2ObkX2OHqSb3piB6h};feBH#yW7$p-*X4#4< zK&aH9E(C-=CNd)jm531#`WQy!hW$nWp(WJ?3@RLc@DQ4#B|3)yL^CF^BX@;uv3kLj%B_#mAWJyWDuUk^cg| zPKO2ix`qS`4Bn_J3K+v2 z5qVI}XR%I!#-bf=yQp%fq~s)kKeeQOz`d3<0Ep{2nkye@FvWLDN~HS*e$gjADsZn) z`jf!J8;t;}c#gnUOX>&gv!p)25liX^%v(|taJwaiBF*QdV_&cxOaP*z6f|Fz(tWM! z2|)Cn{0!aSW4ZbPAGf3g;7gX&KU4HWM@besIAB#z0HUL$SGa=%=m2CiptfQP5CYhyz(HYQn?l$eE35|)0?4L- zL0Ms&LKe8mrhvhUVVkx{<6TyX1Yp9FLN?tXML)1CeSkloV$4kw6!1TVWNeDubC$6W z@R)sUUBHtqsShw`N&SH1medD$g(dX^?y#gjz@J)DKj4v5jS@y%WG`4N4gmhik`jQh8|#&tL=L8-bq`S4J`DiEnx-yt^zK^yp}K%DC$o#03b?OX-l$1^Bon4FF=`_)=I@z_^fq!t=f&MZ^X8h$RgG?y;l<;Lj~-0I}c{Yvu&T zqr)cwVo*p4-v9>vi&!3gXHx;g4t&i8+-rNi4iLR&HehsLTVB+LDVPr!Heo(sSb)xR z0nuHq3XJ}8RbX_K`GDbeS{0}JBhs6zC8g7~)`_@g3OUSa(v74Yg#`R-mrp_W$yAx zfM}666mFj}LhVwEj;T+-#ATv9%F!_KRigODMGp90&$D(5@1s`ZKEUJcxyyRMSv3bX z$UW^dx>`g0e_HV=z{72=WLQvW@d^v-fgm(bw|~Mn)x-6AQ7>+fvHAg_2>WL5BywmV zV(1{gU1V`g1U|xcu-}!$Z1qeP3y1vLT-w2*7=uFWV9dA?%tr1pRBliM&LW-%&woM{)v~4l8dfqMkyRE1c;8Q~4 zi!fkiCH3zs@Bm9%19+H_xF#^VN{)2bHn)=pOH(IGN|S2OC2`Fa8cG~DUt={+075%z zBmCsZuqcJ`q|FP4^iJD_1cvm7KFL+q9eq;vrh3XgD`F1c-$^xYnC3x-7FgCEg|Q6Fv#e=d4BvXmXiPa%JBt0`|AfuK_&QlKKJ96VepA zopt;qau*AAU;5hmwi~A$KY5t6cY>t0z-|3o()twJR1y$cG^q7}7=VbOy!3x0h#ci} z+h8{sE5hv|{d3mZ1Au?Aq<%oCNz(6%kRA%9|0tcmT~dk*+`l^3h)n>v<@&RD}3ArSzoXfdjOxcq<+Al ztnf|}vL3V*djTJ^q#nROS<-sIp!o29^FvYrGU+rA5Hjg_01z_CT>)QT{5>N6zpY-O zX!{i@+9T;fYT~dPr0S zdFMxYo|ssPEB3pzHb>rkFY_ti>zuX zKr};hcJF1#eA$Xh0YbXwb1Xy;bQ?;)mEQvhk=)OoN#wq58|VQ<1BTIU;Q^8ST}k=M z9{3;;Myfq|*<#6b1c{xJNlHqiJR)#&kndW_d?-kCRr&r~4CU97vMRt(h4$ud0}~0MT6v(|`dzpSjHS12V@mm$}N%7o~kgJy^^)ju+P5a|LBY(6FRr zQa~7k6a_?cq|=Y>5TQX$beq&fw^4|D)tY|(5c(j2bpY}UpBd&9ML|m?a5eY+x(TlnkgP(wx*2!<<$O`o^eS&4K`OrP+ zO}xK_9Jd3(GPfteGPg^?GPix#`RG?nKD}+yZP`%WHVxI42rmruXiYh;xk7SDGh60L z50<%YY;>j!@iuR&--a!VXv3DdZESVgpx%Be(lSJK~Ml1N(5dmXK9nJYb5&u!xo z(HaqvR>oY^%7|$j7^PO|649P5bK8TQCYg)W^X->Uo*_9%H&j=yp}vts>TN$X+u_I! zmbub{WpC65X>#@DlSN0mp}KMn^^GJ_>p5usAxCbo%#|K2bKAH`mO#{@v3)LTY@Zaq zKT1lw9>50=HbQ9~0DMSDX4iw<#37c^RRiK*w&GKOU$){003ndYrzVl}#fPpy!s2@% z{xU1R9}oh~76mzFweJVqM@WVdIbV;^nQK^&Ug&{ZEGxWMhidP%+9m+MWJ&#iP?>kR zq9T-IlJhx71mM{#a)IWu!^7DlMbs&h5}*BAPy{>9oak#ReR9~NRtO)t3SgIzxZiz~ z$iZ^N2#BY;45QnigeY}^Z6N^&nT@J69k|bD14KKGbmOrL0RFe?fD`D<4hd_ z#Ixbi9YVz(t3(PA0;ofPL0RDrL6+}RJ%A9vXUD)nVQ;2Ky-^jz(FR(y+a9d}gaCSG z2r#I`n$UsH29a@%mDLCMZXrdR6&0_r6;pr^KxPFD$_kqmvM#f-dH^AS%?cb87B(w{ zftx%GFjz5cR#dE5E!F@+0GSmqC@XB%9U|jVE33~!|9M7y3$;;5#?r|3`-~#RCJ_Hk zD?SBC@mzm6CJ2N;7N43#&KDmF9(zS>pOuvmicL01(Uq2^5AZr6)$toC-D)eQ03m?< z1~4cq>^D0^##gPZKEOW+DOw3s#M8I*@Dm^ekP?7FSz#p}mX`1cD=p!_7SexNy+Za= z@~q-4`^;h=;3-0iRvi_OvlUZ-5J0K}24#g+pD!}}=V|)@+g?|Rgp_8j5`BPp>NZ;Y zajCG~uLyXDB_#pzT%wVM+FYi0EVqVYBAvIaWgq<^!w zxDNJ#WZ{`OrPbOr|ejn6H}CfL69Se68! zU9eRW5boBiE>jEVT&8A8vT)9<7w1l>7v~=RqUx+)6mX1#KMW_?cA9Z8$cCf+IjW5} z=eB>dch^)l*+>3MH{DfNY=2?jobI%xr2!H1$U)LtE z#UHG%CIJx_{x=*GvJnyf-*!w`0devFJLaLGi^{w>C_*#eO#$9wop%l3wL*%i&D$oC zdBEorWRuSb`i7)*fVz8oTxTW`>M=aQGGVvLblLUHup6R2z~e0`3D{h-M?!9a&uHZe zm?=f`ElX&J7nh@pFYb z*GgTYZF7AK_5R1h2;mVIQM;wxLmEx1blCwoa|%fPfQy7=oD#V zS;L4Np4%oj2P{rC+L)%1TWOzM#WArp9(s0!?O6&C--@L11^l^i@sq2s2>yV*S{s-y ztuK_6YC;7(hEJp)Na@o)*FK`)5mwQGlLh*^4_KuIgmv$M?lY_nlYkfpGe?kH>N5gj z91J6JyL?7KjDulB4qyKuHv)ta3?p)W&q4uVme{n_+BN}uoNi4N3Y}jS6~7@V&pO~A z3$00Aq9&SdoD!aQN6UDgZatw7@GLv*6AHuLWL4{P#|4t+NVNl0)7+}Mv4P&Xbj&1( zkiDO(Ht3?`CqY7U2hw|*rp`vG+X}wsjPnzUkbpSgn4;o~=S(68CniQX>T%Wu6aOI4 z_uT{r3chQ^xq9GOC}r&yx~T#dOdlf%N}xqU{o5LaM1J_gmB%z!8q?mm10m1CSF`Vz zK1N%@<%((yJUEVei<+2@2k6GttVz)S)mk&;Ug#%AjP^52uZZhjh5Cjuhn-?-zt<+O z6xT)M(nL&OOc+f>=0EJ@PyAZo@_mdQ$(vk*Vjlj=vaEv(z27?Ay1NA;9MZX!E6CNJ zCp3D3dB{d~JH&kG+~=jU%!fWgG3IkMW16cP(-5r@s-p%Mx;C0paG@7WgH5n}F%9t= zQJ!h8E|C8^vD6d0<*fa17Gs5lSwbEO7IcKqNX7c-M}+%*O4`J}hV~hNSU!10>zhOl z`x;^d#PVqvk;A@*7y;p%h7n&n$6O~ygh_05hy;izXX;{(!HbCz1A{>!k~N=zPfKSH z@uxbv1=VP(KOtV@>y?0BtF1dHputCc(oTVQ_#`MbtNx1q$FNcn&Akah`%ACTCGz^6 zSI2eNLtcp%U{&IsUynB-x)*I9`T!^FmwJ+bmkG&?6LMAi{hZJ~2;xVr_!QtKE508P z0$F@&5;Iz9&L_D12`du^*FEFDb};&bFDtR~}EWZ6;<3 zO!*`v_h08?UVT@{(t*8B;;0ZU4y1;UEDsyla{ahhyY@sL;j zQh1*B)dGa_3sjl*0_7RBJDvU4eSQ2|EQsl0`}yV`!Z{~}S~*G7U2J>M3)my1eO39G z8>hVO#JY8t+PVoq)IG>(NRRvi4 z!@SjcymQ06SJvZ&S+__Xve}QXi7WnuYzCe?ect)?cyAP*0PlWR##wAwuBOtT)dJ`) zJm6X(ndpWb&J~Ff5MTA1qAFkAXA-#&`Vs|&65RNq@6Z6E858r6dxw?P1Bhk}BXWMD zpq> zJ|C3+-6H8HC50Uvb`?K4u1SZTV$x=rZ+MNO%YUj6S|nW{>6tF0Q=i~=-cEn_G(GrB`JPV`M+d$?*1UO`)kmy{DXuLmlT(4X~_>s`T$zNnQTG3Oy$JG)a0`9sOLs_ezyYs z!mohbA^rWdr1${}w?2M?<0k3fEt2A=GF*O?V-xHCN`uQkEE}wGN%7rqd?VZaI=Nf_ zQwJIfzK)IW0prWQF8{~n3wn1-if_T;tDr9bVe*LDiIOgov|ZBkCB=8f-1?~ZR^h|9 z)!s-Bz8~hw!*{ygC-QER^z)Ls{Pp-AtizA*J)I|ku3J)kv&fYXzINg3bm~hk|c=zAsot)%vq3QmO^B!8Qv|1Rl$lHxx9 zS0wKyzZb#_lD;hIK6UhKk$8;bWE@_(2R%3ncH28!>YpbmZfD>QjLZK4;k!*zoay66 zjLQ$b=o(djaGZ_v$Gc>`!l5Aa#4#HV`rIQ;9Lu`xp`HDtJ-or_NV9Vz_BOM14X7>Bs5bBN=f?qFXT% z2g_yEGE^KJ%ND3GlO3#%P~~)CBujLY%@u}=!0ExkQg#Ble6ElMCVK(qi`1B@E0Wv+ z3gu&}L7m+gkDxcIR3ts7Dv|Ul>ZVBgKI+Lx`c(B&Q(U>9nA%rO92iA!QZGf)_fu=8 zMe*;i_C(STPI4_7lH=|`xSCZpsZsnpIW`V6)EmMHp6_3Uj?^rKYNC#H^$ zBGW=~Oda~Mb?C>{p&ws|-du-%LWs_b`xN!uYi={&NGSLNWXtFep0-qN{i6% za_Fr>f7YS%`C|ip(P8?o4TKn*&#=bfaept-x!vg}#|@+W{V=5s{N-L}-0vlNRKLDN zbe4nD0Z-(7Rp>iKenseyQQDwpD0S-wP1!BGkN==tl>Dda(4QkZx4YxCI3cBQhB=Ko z&h+_n4gEP;1y3M)l>AeLU!7_AagKW?(b=9UvF8+Sgg)&;k2~}}p?5j-w9uD3^f95g zJM_zio^a^@sObl(J2%C(9&%BmJ}UH^g-#Jfe?Bd8)`%Rr_*3_3`V6&K<{kR=O`=EH z=dn8UpJ_PO|6)YB>k1mp&|VM1TI`Sk(OG;wbs%T@HtY;_aB0 z6OOABL{|~>j!&~1R5-3q68#YN^VM;#s7}=NmEspJF#SncUxch4)O5{S^Jfpy4<`Hn z(D8>SM9%cixaMCdwVtgb=g&lM7M@_j-#j~*<`LpN#_=?wH&eUry1*|)qv#X*bk?B{ zi2Rov|0!zzX==mbxR%B9lRtdb!urg2=Eb`;eTI6{vBL+o98)*=mroa`lm6%z%044< z_Be8OYdN$Z=!t9AOQpgOg#X75|C7SMLE;itrr&8gTJuvrMb!RqMqCrWFGc()$RQE? z4ZgaGvh(S6=v{T_qjl(4XgWoyl}4X`5PjZLhyP~bpT5fQe^>bVsxnH?FV~^}s1E(< zI`lu*p&v-6Z&B?YUx&W54t+x%`sH=#d}PAa*nYx z?)bexboOU=KB}qF`W&X|)6|{|jU24M#}l3BmvZLU>EQ1&{O||9de!kt#vP|4Jz5Uw zDKavs3uzi=2!Ue_GRPc{%qG(GPB%p&q$q zLrvj#Mb5M5#WnqUX?JfOIj_{APuthnVfrE?XFytM7W%WIC#?kfvq(q#H=bW`7bSm}@Q;gMT`2n8Q-}ZC!vEwl)9yb>yFU~99+5L! zqIhki{R`iJV!Kcng7pE4g$k+$!v!@q~<%>n%Y_lg|V7T2Wj)4I-| zSBTE>v)Qr3zWW&lY~z^C-d-$Va(2r8=e@Mv@Ml*Y{`-i|@z$Le4->sv*R1{Xi#l?it3%)C0Ao+( zjN=hPA3rs&8#r3}dy1xq&wpApy;c{_EhjqLv&pfi8Y)%FmFnSf?4_%l6&(hS=d+b;rsb@K zi_Rg*5lkK*OPWJQj}8t?Ta-DL%v8t5wosKo&g0X}8rHFNu0Se}X7l4}JY6bhy|Hv< zXw;iX=c`#&9IupBX1MC*i|GupF|1Z{d4kkv#>-^OL#5m}sY}O}g>q%QR2*-auP7PJ zdPEt{jZ{nN3ZJ!7)pFK|;6}1zL*rWv(MxACr7RtNY8Gn0T=uf1bU7=8;bLhBIG;^V z09OmtP9-~35x#u3Fj5(%4lnELZcBBp>h`>rMGMbhtJP2zou#OGFQ490tX5P$U9Ons zGTwN41j32KC`*6alB-i~%Uc#MsPF3%m)f=Htg?n}!Vi{_tc zNR`}Jma}K6!Rj!BMdT|(r!VyAY&)M-msE45jb*A&TK2ZC?C?6e+sSQ=4*}NZG39RLWJHetB7a)Gkh*Eo6!%kA&HQ^mHAMMo8pLXdW7-bY@|d?mwXC z9Wu_) zM(Wo_Z#bRH`_;}+BiRZ~N}7*_5ueNh#v@!EXM3n@skAvw*aDqf}N05JUf)5 zwS#XTr3(}zypgeDfjx;v-2?z*eX7iZT`30qiXDi$Q!aX=RF~XCx@zVZIjFuPC1cNG zXm)vp>eyhG6xE^JxBh}NR3=xZK`KyarXe)bfcwXaQ$1I6TG9q{17H6G zjpA^*ICRcAUb#G!E)4sHXTg$1Oio&&X>jzgaG4HZWC7`+UR5Q~(k>w#)fC+&l=|h- z;wG<5n~vOOkH(E0C`*v~mn&ex&|*ZxB@R4JGmkPf6uDs&gr z>;nECgl1Wt7^{Oy&}G;LIv_&$P(Ga-3&!9JCcIwRxV6#JUN(!pp8sqM1||%cE|s$- zntj|AiXuE}if%Fwa*)(>t?EoR=?2-RQYz-X3f-D55A$Twn=d0wd#3EkvSY>47HnC_ z#Jp1}=icGCJzFb0BHG1xlcI*B7DSKMYiv4rA&*?fMPKqS_>xeng#e9vKSZlpNv3+x z!7;t-j3V}cH1$I>F1!o>+bKs=l?M7RmznndHlD6=?=&)R@Wa=|bo5~BryApwQ*=LE zC!uQ>T(6l@rT8h?VEsyCTo+ZO{v4h2|G4$rspwCyy;g+&H#NpJ^G!lnu5(JsBOf@Md+;?23(;Yqi>8HPZ$%OWCpB`Usx?HZO47ZU1 z%;|di|5`wQ+|Qpl&~RO8601MjLAsI3{~D-|`~ELU{S8vz)nCZ!9R%2>kca03*3gkD ze>R)Mw(s`;YAWaYON9^55$uurPjVrB*#4}NTmOATW4nr(?ehkA$)N`BcM*&Jh&W`` zy9fpAU&a}(Ryu=IHk7Y06V`~Oa5!TNZeTz)tIZDOO-TU#H`Yc##d`ah<+tUubva~;#)Wc{C0 zUG_cH$MYXEr2dm)Klmr~haWuUw2$XRUYeu=`hef${5rUst+uUG#M zPJP_Z*nNwsF&`Zh0dYx@yh4C=0UOSrp1sX*+yq8R(QlAnBf$F42SHNQU+&PwoVpGd zH4y={AnVz?Om2r$=w#KAb?QIz2~)rFv7pp&TeIubU(63a(C5Rr0U=`C_W5U}TpF|f z=psXX+6iDTFF(c0G}nG#oG_es*J&SemP>t6&nAWU8ICiyS&{~*2WqlT{adG*h?L;T z9r(EQ52iBsPJm54FF&`!&w~U%PFDBb#=ZdKnq#GXx#2a3%J?1*<_*?g4o^|--#*{e MAK=A3@NwJ!za>UQ{r~^~ literal 122280 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 Date: Sat, 1 Aug 2015 19:04:18 +0100 Subject: [PATCH 04/16] Added i2c_scanner examples to Wire library for testing HWire and Wire --- .../i2c_scanner_hwire/i2c_scanner_hwire.ino | 75 +++++++++++++++++++ .../i2c_scanner_wire/i2c_scanner_wire.ino | 72 ++++++++++++++++++ 2 files changed, 147 insertions(+) create mode 100644 STM32F1/libraries/Wire/examples/i2c_scanner_hwire/i2c_scanner_hwire.ino create mode 100644 STM32F1/libraries/Wire/examples/i2c_scanner_wire/i2c_scanner_wire.ino diff --git a/STM32F1/libraries/Wire/examples/i2c_scanner_hwire/i2c_scanner_hwire.ino b/STM32F1/libraries/Wire/examples/i2c_scanner_hwire/i2c_scanner_hwire.ino new file mode 100644 index 0000000..2696ba3 --- /dev/null +++ b/STM32F1/libraries/Wire/examples/i2c_scanner_hwire/i2c_scanner_hwire.ino @@ -0,0 +1,75 @@ +// -------------------------------------- +// i2c_scanner +// +// Version 1 +// This program (or code that looks like it) +// can be found in many places. +// For example on the Arduino.cc forum. +// The original author is not know. +// Version 2, Juni 2012, Using Arduino 1.0.1 +// Adapted to be as simple as possible by Arduino.cc user Krodal +// Version 3, Feb 26 2013 +// V3 by louarnold +// Version 4, March 3, 2013, Using Arduino 1.0.3 +// by Arduino.cc user Krodal. +// Changes by louarnold removed. +// Scanning addresses changed from 0...127 to 1...119, +// according to the i2c scanner by Nick Gammon +// http://www.gammon.com.au/forum/?id=10896 +// Version 5, March 28, 2013 +// As version 4, but address scans now to 127. +// A sensor seems to use address 120. +// Version 6, August 1, 2015 +// Modified to support HardWire for STM32duino +// +// This sketch tests the standard 7-bit addresses +// Devices with higher bit address might not be seen properly. +// + +#include + +HardWire HWire(1, I2C_FAST_MODE); // I2c1 + +void setup() { + HWire.begin(); + Serial.println("\nI2C Scanner"); +} + + +void loop() { + byte error, address; + int nDevices; + + Serial.println("Scanning..."); + + nDevices = 0; + for(address = 1; address < 127; address++) { + // The i2c_scanner uses the return value of + // the Write.endTransmisstion to see if + // a device did acknowledge to the address. + + HWire.beginTransmission(address); + error = HWire.endTransmission(); + + if (error == 0) { + Serial.print("I2C device found at address 0x"); + if (address < 16) + Serial.print("0"); + Serial.println(address, HEX); + + nDevices++; + } + else if (error == 4) { + Serial.print("Unknown error at address 0x"); + if (address < 16) + Serial.print("0"); + Serial.println(address, HEX); + } + } + if (nDevices == 0) + Serial.println("No I2C devices found"); + else + Serial.println("done"); + + delay(5000); // wait 5 seconds for next scan +} \ No newline at end of file diff --git a/STM32F1/libraries/Wire/examples/i2c_scanner_wire/i2c_scanner_wire.ino b/STM32F1/libraries/Wire/examples/i2c_scanner_wire/i2c_scanner_wire.ino new file mode 100644 index 0000000..0930d90 --- /dev/null +++ b/STM32F1/libraries/Wire/examples/i2c_scanner_wire/i2c_scanner_wire.ino @@ -0,0 +1,72 @@ +// -------------------------------------- +// i2c_scanner +// +// Version 1 +// This program (or code that looks like it) +// can be found in many places. +// For example on the Arduino.cc forum. +// The original author is not know. +// Version 2, Juni 2012, Using Arduino 1.0.1 +// Adapted to be as simple as possible by Arduino.cc user Krodal +// Version 3, Feb 26 2013 +// V3 by louarnold +// Version 4, March 3, 2013, Using Arduino 1.0.3 +// by Arduino.cc user Krodal. +// Changes by louarnold removed. +// Scanning addresses changed from 0...127 to 1...119, +// according to the i2c scanner by Nick Gammon +// http://www.gammon.com.au/forum/?id=10896 +// Version 5, March 28, 2013 +// As version 4, but address scans now to 127. +// A sensor seems to use address 120. +// +// This sketch tests the standard 7-bit addresses +// Devices with higher bit address might not be seen properly. +// + +#include + + +void setup() { + Wire.begin(); + Serial.println("\nI2C Scanner"); +} + + +void loop() { + byte error, address; + int nDevices; + + Serial.println("Scanning..."); + + nDevices = 0; + for(address = 1; address < 127; address++) { + // The i2c_scanner uses the return value of + // the Write.endTransmisstion to see if + // a device did acknowledge to the address. + + Wire.beginTransmission(address); + error = Wire.endTransmission(); + + if (error == 0) { + Serial.print("I2C device found at address 0x"); + if (address < 16) + Serial.print("0"); + Serial.println(address, HEX); + + nDevices++; + } + else if (error == 4) { + Serial.print("Unknown error at address 0x"); + if (address < 16) + Serial.print("0"); + Serial.println(address, HEX); + } + } + if (nDevices == 0) + Serial.println("No I2C devices found"); + else + Serial.println("done"); + + delay(5000); // wait 5 seconds for next scan +} \ No newline at end of file From 572b311c3a02c60d91f25e8ac5da9e2df976788b Mon Sep 17 00:00:00 2001 From: Fergus Date: Sat, 1 Aug 2015 19:09:43 +0100 Subject: [PATCH 05/16] Fixed formatting to match existing style + Hardwire comments --- STM32F1/cores/maple/libmaple/i2c.c | 2 +- STM32F1/libraries/Wire/HardWire.cpp | 11 +++++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/STM32F1/cores/maple/libmaple/i2c.c b/STM32F1/cores/maple/libmaple/i2c.c index 34b6441..c4ed245 100644 --- a/STM32F1/cores/maple/libmaple/i2c.c +++ b/STM32F1/cores/maple/libmaple/i2c.c @@ -349,7 +349,7 @@ void _i2c_irq_handler(i2c_dev *dev) { */ if (msg->length > 1) { i2c_write(dev, msg->data[msg->xferred++]); - } else if (msg->length == 0){ /* We're just sending an address */ + } else if (msg->length == 0) { /* We're just sending an address */ i2c_stop_condition(dev); /* * Turn off event interrupts to keep BTF from firing until diff --git a/STM32F1/libraries/Wire/HardWire.cpp b/STM32F1/libraries/Wire/HardWire.cpp index c709c05..8a63183 100644 --- a/STM32F1/libraries/Wire/HardWire.cpp +++ b/STM32F1/libraries/Wire/HardWire.cpp @@ -41,11 +41,14 @@ uint8 HardWire::process() { int8 res = i2c_master_xfer(sel_hard, &itc_msg, 1, 0); if (res == I2C_ERROR_PROTOCOL) { - if (sel_hard->error_flags & I2C_SR1_AF) + if (sel_hard->error_flags & I2C_SR1_AF) { /* NACK */ res = (sel_hard->error_flags & I2C_SR1_ADDR ? ENACKADDR : - ENACKTRNS); - else if (sel_hard->error_flags & I2C_SR1_OVR) res = EDATA; - else res = EOTHER; + ENACKTRNS); + } else if (sel_hard->error_flags & I2C_SR1_OVR) { /* Over/Underrun */ + res = EDATA; + } else { /* Bus or Arbitration error */ + res = EOTHER; + } i2c_disable(sel_hard); i2c_master_enable(sel_hard, (I2C_BUS_RESET | dev_flags)); } From d3bd1090135e12304ce9299d6fb771730b85cfd2 Mon Sep 17 00:00:00 2001 From: Roger Clark Date: Mon, 3 Aug 2015 09:45:57 +1000 Subject: [PATCH 06/16] Changed default speed on Wire library to 100kpbs (same as AVR Arduinos), thanks to @fredbox on the forum for the delay values to achieve 100kbps --- STM32F1/libraries/Wire/Wire.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/STM32F1/libraries/Wire/Wire.cpp b/STM32F1/libraries/Wire/Wire.cpp index fb17da9..7ab4e76 100644 --- a/STM32F1/libraries/Wire/Wire.cpp +++ b/STM32F1/libraries/Wire/Wire.cpp @@ -191,4 +191,4 @@ TwoWire::~TwoWire() { // Declare the instance that the users of the library can use //TwoWire Wire(SCL, SDA, SOFT_STANDARD); -TwoWire Wire(PB6, PB7, SOFT_FAST); +TwoWire Wire(PB6, PB7, SOFT_STANDARD); From ab37760af75f12c6c4bf39f6ae17744e7a0c6c0b Mon Sep 17 00:00:00 2001 From: Roger Clark Date: Mon, 3 Aug 2015 09:48:50 +1000 Subject: [PATCH 07/16] Oops. Failed to save the revised definition for SOFT_STANARD Wire speed which should have been part of the previous commit --- STM32F1/libraries/Wire/Wire.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/STM32F1/libraries/Wire/Wire.h b/STM32F1/libraries/Wire/Wire.h index d7e6170..0861309 100644 --- a/STM32F1/libraries/Wire/Wire.h +++ b/STM32F1/libraries/Wire/Wire.h @@ -50,7 +50,7 @@ #define SDA 19 #define SCL 20 -#define SOFT_STANDARD 16 +#define SOFT_STANDARD 27 #define SOFT_FAST 0 From 416bda020b440c971cdf81bf41c75f963eee200a Mon Sep 17 00:00:00 2001 From: jeremyvnc Date: Wed, 5 Aug 2015 15:34:49 -0400 Subject: [PATCH 08/16] Added an include of stdlib.h Needs include of stdlib.h for a compile to take place on the F4 variant. --- STM32F4/cores/maple/wirish.h | 1 + 1 file changed, 1 insertion(+) diff --git a/STM32F4/cores/maple/wirish.h b/STM32F4/cores/maple/wirish.h index 75d4aec..4aca74c 100644 --- a/STM32F4/cores/maple/wirish.h +++ b/STM32F4/cores/maple/wirish.h @@ -33,6 +33,7 @@ #ifndef _WIRISH_H_ #define _WIRISH_H_ +#include #include "libmaple.h" #include "wirish_types.h" From 461b86207e0ea9442ad528f28d021184174df286 Mon Sep 17 00:00:00 2001 From: rogerclarkmelbourne Date: Thu, 6 Aug 2015 17:42:04 +1000 Subject: [PATCH 09/16] Added Serial.begin(115200) to both examples so that they work on non-bootloader boards --- .../Wire/examples/i2c_scanner_hwire/i2c_scanner_hwire.ino | 1 + .../Wire/examples/i2c_scanner_wire/i2c_scanner_wire.ino | 2 ++ 2 files changed, 3 insertions(+) diff --git a/STM32F1/libraries/Wire/examples/i2c_scanner_hwire/i2c_scanner_hwire.ino b/STM32F1/libraries/Wire/examples/i2c_scanner_hwire/i2c_scanner_hwire.ino index 2696ba3..745cae6 100644 --- a/STM32F1/libraries/Wire/examples/i2c_scanner_hwire/i2c_scanner_hwire.ino +++ b/STM32F1/libraries/Wire/examples/i2c_scanner_hwire/i2c_scanner_hwire.ino @@ -31,6 +31,7 @@ HardWire HWire(1, I2C_FAST_MODE); // I2c1 void setup() { + Serial.begin(115200); HWire.begin(); Serial.println("\nI2C Scanner"); } diff --git a/STM32F1/libraries/Wire/examples/i2c_scanner_wire/i2c_scanner_wire.ino b/STM32F1/libraries/Wire/examples/i2c_scanner_wire/i2c_scanner_wire.ino index 0930d90..30224d2 100644 --- a/STM32F1/libraries/Wire/examples/i2c_scanner_wire/i2c_scanner_wire.ino +++ b/STM32F1/libraries/Wire/examples/i2c_scanner_wire/i2c_scanner_wire.ino @@ -28,6 +28,8 @@ void setup() { + + Serial.begin(115200); Wire.begin(); Serial.println("\nI2C Scanner"); } From 207986431d223626a9e3325d10cebe8420bfd518 Mon Sep 17 00:00:00 2001 From: Roger Clark Date: Mon, 10 Aug 2015 20:27:09 +1000 Subject: [PATCH 10/16] Added STM32F103R8 / RB variant folder supplied by @ahull. Also made minor change to the stm32f103r folder bootloader link file name, so that the same file name could be used in the existing stm32f103r folder and the new folder (but they have different contents) --- STM32F1/boards.txt | 31 ++- ...tm32f103re-bootloader.ld => bootloader.ld} | 0 .../variants/generic_stm32f103r8/board.cpp | 157 ++++++++++++ .../generic_stm32f103r8/board/board.h | 84 +++++++ .../generic_stm32f103r8/ld/bootloader.ld | 18 ++ .../generic_stm32f103r8/ld/bootloader_20.ld | 30 +++ .../generic_stm32f103r8/ld/common.inc | 220 +++++++++++++++++ .../generic_stm32f103r8/ld/extra_libs.inc | 7 + .../variants/generic_stm32f103r8/ld/flash.ld | 26 ++ .../generic_stm32f103r8/ld/flash_c8.ld | 33 +++ .../variants/generic_stm32f103r8/ld/jtag.ld | 31 +++ .../generic_stm32f103r8/ld/jtag_c8.ld | 36 +++ .../generic_stm32f103r8/ld/mem-flash.inc | 5 + .../generic_stm32f103r8/ld/mem-jtag.inc | 5 + .../generic_stm32f103r8/ld/mem-ram.inc | 5 + .../variants/generic_stm32f103r8/ld/ram.ld | 25 ++ .../variants/generic_stm32f103r8/ld/ram_c8.ld | 31 +++ .../generic_stm32f103r8/ld/stm32f103r8.ld | 18 ++ .../generic_stm32f103r8/ld/stm32f103rb.ld | 18 ++ .../generic_stm32f103r8/ld/vector_symbols.inc | 78 ++++++ .../generic_stm32f103r8/pins_arduino.h | 6 + .../variants/generic_stm32f103r8/variant.h | 14 ++ .../generic_stm32f103r8/wirish/boards.cpp | 229 ++++++++++++++++++ .../wirish/boards_setup.cpp | 98 ++++++++ .../generic_stm32f103r8/wirish/start.S | 57 +++++ .../generic_stm32f103r8/wirish/start_c.c | 95 ++++++++ .../generic_stm32f103r8/wirish/syscalls.c | 176 ++++++++++++++ 27 files changed, 1523 insertions(+), 10 deletions(-) rename STM32F1/variants/generic_stm32f103r/ld/{stm32f103re-bootloader.ld => bootloader.ld} (100%) create mode 100644 STM32F1/variants/generic_stm32f103r8/board.cpp create mode 100644 STM32F1/variants/generic_stm32f103r8/board/board.h create mode 100644 STM32F1/variants/generic_stm32f103r8/ld/bootloader.ld create mode 100644 STM32F1/variants/generic_stm32f103r8/ld/bootloader_20.ld create mode 100644 STM32F1/variants/generic_stm32f103r8/ld/common.inc create mode 100644 STM32F1/variants/generic_stm32f103r8/ld/extra_libs.inc create mode 100644 STM32F1/variants/generic_stm32f103r8/ld/flash.ld create mode 100644 STM32F1/variants/generic_stm32f103r8/ld/flash_c8.ld create mode 100644 STM32F1/variants/generic_stm32f103r8/ld/jtag.ld create mode 100644 STM32F1/variants/generic_stm32f103r8/ld/jtag_c8.ld create mode 100644 STM32F1/variants/generic_stm32f103r8/ld/mem-flash.inc create mode 100644 STM32F1/variants/generic_stm32f103r8/ld/mem-jtag.inc create mode 100644 STM32F1/variants/generic_stm32f103r8/ld/mem-ram.inc create mode 100644 STM32F1/variants/generic_stm32f103r8/ld/ram.ld create mode 100644 STM32F1/variants/generic_stm32f103r8/ld/ram_c8.ld create mode 100644 STM32F1/variants/generic_stm32f103r8/ld/stm32f103r8.ld create mode 100644 STM32F1/variants/generic_stm32f103r8/ld/stm32f103rb.ld create mode 100644 STM32F1/variants/generic_stm32f103r8/ld/vector_symbols.inc create mode 100644 STM32F1/variants/generic_stm32f103r8/pins_arduino.h create mode 100644 STM32F1/variants/generic_stm32f103r8/variant.h create mode 100644 STM32F1/variants/generic_stm32f103r8/wirish/boards.cpp create mode 100644 STM32F1/variants/generic_stm32f103r8/wirish/boards_setup.cpp create mode 100644 STM32F1/variants/generic_stm32f103r8/wirish/start.S create mode 100644 STM32F1/variants/generic_stm32f103r8/wirish/start_c.c create mode 100644 STM32F1/variants/generic_stm32f103r8/wirish/syscalls.c diff --git a/STM32F1/boards.txt b/STM32F1/boards.txt index 77ff7ba..7476389 100644 --- a/STM32F1/boards.txt +++ b/STM32F1/boards.txt @@ -203,7 +203,7 @@ genericSTM32F103C.menu.upload_method.BMPMethod.build.upload_flags=-DCONFIG_MAPLE ########################### Generic STM32F103R ########################### genericSTM32F103R.name=Generic STM32F103R series -genericSTM32F103R.build.variant=generic_stm32f103r +#genericSTM32F103R.build.variant=generic_stm32f103r genericSTM32F103R.build.vect=VECT_TAB_ADDR=0x8000000 genericSTM32F103R.build.core=maple genericSTM32F103R.build.board=GENERIC_STM32F103R @@ -212,21 +212,32 @@ genericSTM32F103R.upload.file_type=bin genericSTM32F103R.upload.auto_reset=true -#genericSTM32F103R.menu.device_variant.STM32F103RB=STM32F103RB -#genericSTM32F103R.menu.device_variant.STM32F103RB.build.cpu_flags=-DMCU_STM32F103RB -#genericSTM32F103R.menu.device_variant.STM32F103RB.upload.maximum_size=131072 -#genericSTM32F103R.menu.device_variant.STM32F103RB.upload.ram.maximum_size=20480 -#genericSTM32F103R.menu.device_variant.STM32F103RB.upload.flash.maximum_size=131072 -#genericSTM32F103R.menu.device_variant.STM32F103RB.build.ldscript=ld/stm32f103rb.ld +genericSTM32F103R.menu.device_variant.STM32F103R8=STM32F103R8 (20k RAM. 64k Flash) +genericSTM32F103R.menu.device_variant.STM32F103R8.build.variant=generic_stm32f103r8 +genericSTM32F103R.menu.device_variant.STM32F103R8.build.cpu_flags=-DMCU_STM32F103RB +genericSTM32F103R.menu.device_variant.STM32F103RB.upload.maximum_size=65536 +genericSTM32F103R.menu.device_variant.STM32F103RB.upload.ram.maximum_size=20480 +genericSTM32F103R.menu.device_variant.STM32F103RB.upload.flash.maximum_size=65536 +genericSTM32F103R.menu.device_variant.STM32F103RB.build.ldscript=ld/stm32f103r8.ld -genericSTM32F103R.menu.device_variant.STM32F103RC=STM32F103RC +genericSTM32F103R.menu.device_variant.STM32F103RB=STM32F103RB (20k RAM. 128k Flash) +genericSTM32F103R.menu.device_variant.STM32F103R8.build.variant=generic_stm32f103r8 +genericSTM32F103R.menu.device_variant.STM32F103RB.build.cpu_flags=-DMCU_STM32F103RB +genericSTM32F103R.menu.device_variant.STM32F103RB.upload.maximum_size=131072 +genericSTM32F103R.menu.device_variant.STM32F103RB.upload.ram.maximum_size=20480 +genericSTM32F103R.menu.device_variant.STM32F103RB.upload.flash.maximum_size=131072 +genericSTM32F103R.menu.device_variant.STM32F103RB.build.ldscript=ld/stm32f103rb.ld + +genericSTM32F103R.menu.device_variant.STM32F103RC=STM32F103RC (48k RAM. 256k Flash) +genericSTM32F103R.menu.device_variant.STM32F103RC.build.variant=generic_stm32f103r genericSTM32F103R.menu.device_variant.STM32F103RC.build.cpu_flags=-DMCU_STM32F103RC genericSTM32F103R.menu.device_variant.STM32F103RC.upload.maximum_size=262144 genericSTM32F103R.menu.device_variant.STM32F103RC.upload.ram.maximum_size=49152 genericSTM32F103R.menu.device_variant.STM32F103RC.upload.flash.maximum_size=262144 genericSTM32F103R.menu.device_variant.STM32F103RC.build.ldscript=ld/stm32f103rc.ld -genericSTM32F103R.menu.device_variant.STM32F103RE=STM32F103RE +genericSTM32F103R.menu.device_variant.STM32F103RE=STM32F103RE (64k RAM. 512k Flash) +genericSTM32F103R.menu.device_variant.STM32F103RE.build.variant=generic_stm32f103r genericSTM32F103R.menu.device_variant.STM32F103RE.build.cpu_flags=-DMCU_STM32F103RE genericSTM32F103R.menu.device_variant.STM32F103RE.upload.maximum_size=524288 genericSTM32F103R.menu.device_variant.STM32F103RE.upload.ram.maximum_size=65536 @@ -241,7 +252,7 @@ genericSTM32F103R.menu.upload_method.DFUUploadMethod.upload.protocol=maple_dfu genericSTM32F103R.menu.upload_method.DFUUploadMethod.upload.tool=maple_upload genericSTM32F103R.menu.upload_method.DFUUploadMethod.build.upload_flags=-DSERIAL_USB -DGENERIC_BOOTLOADER genericSTM32F103R.menu.upload_method.DFUUploadMethod.build.vect=VECT_TAB_ADDR=0x8002000 -genericSTM32F103R.menu.upload_method.DFUUploadMethod.build.ldscript=ld/stm32f103re-bootloader.ld +genericSTM32F103R.menu.upload_method.DFUUploadMethod.build.ldscript=ld/bootloader.ld genericSTM32F103R.menu.upload_method.DFUUploadMethod.upload.usbID=1EAF:0003 genericSTM32F103R.menu.upload_method.DFUUploadMethod.upload.altID=2 diff --git a/STM32F1/variants/generic_stm32f103r/ld/stm32f103re-bootloader.ld b/STM32F1/variants/generic_stm32f103r/ld/bootloader.ld similarity index 100% rename from STM32F1/variants/generic_stm32f103r/ld/stm32f103re-bootloader.ld rename to STM32F1/variants/generic_stm32f103r/ld/bootloader.ld diff --git a/STM32F1/variants/generic_stm32f103r8/board.cpp b/STM32F1/variants/generic_stm32f103r8/board.cpp new file mode 100644 index 0000000..0a8bbc8 --- /dev/null +++ b/STM32F1/variants/generic_stm32f103r8/board.cpp @@ -0,0 +1,157 @@ +/****************************************************************************** + * The MIT License + * + * Copyright (c) 2011 LeafLabs, LLC. + * + * 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. + *****************************************************************************/ + +/** + * @file wirish/boards/maple_mini/board.cpp + * @author Marti Bolivar + * @brief Maple Mini board file. + */ + +#include + +#include +#include + +/* Roger Clark. Added next to includes for changes to Serial */ +#include +#include + +#include +#include + +/* Since we want the Serial Wire/JTAG pins as GPIOs, disable both SW + * and JTAG debug support, unless configured otherwise. */ +void boardInit(void) { +#ifndef CONFIG_MAPLE_MINI_NO_DISABLE_DEBUG + disableDebugPorts(); +#endif +} + +// Note. See the enum of pin names in board.h + +extern const stm32_pin_info PIN_MAP[BOARD_NR_GPIO_PINS] = { + + + {GPIOA, TIMER2, ADC1, 0, 1, 0}, /* PA0 */ + {GPIOA, TIMER2, ADC1, 1, 2, 1}, /* PA1 */ + {GPIOA, TIMER2, ADC1, 2, 3, 2}, /* PA2 */ + {GPIOA, TIMER2, ADC1, 3, 4, 3}, /* PA3 */ + {GPIOA, NULL, ADC1, 4, 0, 4}, /* PA4 */ + {GPIOA, NULL, ADC1, 5, 0, 5}, /* PA5 */ + {GPIOA, TIMER3, ADC1, 6, 1, 6}, /* PA6 */ + {GPIOA, TIMER3, ADC1, 7, 2, 7}, /* PA7 */ + {GPIOA, TIMER1, NULL, 8, 1, ADCx}, /* PA8 */ + {GPIOA, TIMER1, NULL, 9, 2, ADCx}, /* PA9 */ + {GPIOA, TIMER1, NULL, 10, 3, ADCx}, /* PA10 */ + {GPIOA, TIMER1, NULL, 11, 4, ADCx}, /* PA11 */ + {GPIOA, NULL, NULL, 12, 0, ADCx}, /* PA12 */ + {GPIOA, NULL, NULL, 13, 0, ADCx}, /* PA13 */ + {GPIOA, NULL, NULL, 14, 0, ADCx}, /* PA14 */ + {GPIOA, NULL, NULL, 15, 0, ADCx}, /* PA15 */ + + {GPIOB, TIMER3, ADC1, 0, 3, 8}, /* PB0 */ + {GPIOB, TIMER3, ADC1, 1, 4, 9}, /* PB1 */ + {GPIOB, NULL, NULL, 2, 0, ADCx}, /* PB2 */ + {GPIOB, NULL, NULL, 3, 0, ADCx}, /* PB3 */ + {GPIOB, NULL, NULL, 4, 0, ADCx}, /* PB4 */ + {GPIOB, NULL, NULL, 5, 0, ADCx}, /* PB5 */ + {GPIOB, TIMER4, NULL, 6, 1, ADCx}, /* PB6 */ + {GPIOB, TIMER4, NULL, 7, 2, ADCx}, /* PB7 */ + {GPIOB, TIMER4, NULL, 8, 3, ADCx}, /* PB8 */ + {GPIOB, TIMER4, NULL, 9, 4, ADCx}, /* PB9 */ + {GPIOB, NULL, NULL, 10, 0, ADCx}, /* PB10 */ + {GPIOB, NULL, NULL, 11, 0, ADCx}, /* PB11 */ + {GPIOB, NULL, NULL, 12, 0, ADCx}, /* PB12 */ + {GPIOB, NULL, NULL, 13, 0, ADCx}, /* PB13 */ + {GPIOB, NULL, NULL, 14, 0, ADCx}, /* PB14 */ + {GPIOB, NULL, NULL, 15, 0, ADCx}, /* PB15 */ + +/* Andy Hull - the R8 is similar to the C8 but exposes more GPIO as follows */ + {GPIOC, NULL, ADC1, 0, 0, 10}, /* PC0 */ + {GPIOC, NULL, ADC1, 1, 0, 11}, /* PC1 */ + {GPIOC, NULL, ADC1, 2, 0, 12}, /* PC2 */ + {GPIOC, NULL, ADC1, 3, 0, 13}, /* PC3 */ + {GPIOC, NULL, ADC1, 4, 0, 14}, /* PC4 */ + {GPIOC, NULL, ADC1, 5, 0, 15}, /* PC5 */ + + {GPIOC, NULL, NULL, 6, 0, ADCx}, /* PC6 */ + {GPIOC, NULL, NULL, 7, 0, ADCx}, /* PC7 */ + {GPIOC, NULL, NULL, 8, 0, ADCx}, /* PC8 */ + {GPIOC, NULL, NULL, 9, 0, ADCx}, /* PC9 */ + + {GPIOC, NULL, NULL, 10, 0, ADCx}, /* PC10 */ + {GPIOC, NULL, NULL, 11, 0, ADCx}, /* PC11 */ + {GPIOC, NULL, NULL, 12, 0, ADCx}, /* PC12 */ + {GPIOC, NULL, NULL, 13, 0, ADCx}, /* PC13 */ + {GPIOC, NULL, NULL, 14, 0, ADCx}, /* PC14 */ + {GPIOC, NULL, NULL, 15, 0, ADCx}, /* PC15 */ + + {GPIOD, NULL, NULL, 2, 0, ADCx}, /* PD2 */ +}; + +extern const uint8 boardPWMPins[BOARD_NR_PWM_PINS] __FLASH__ = { + PB0, PA7, PA6, PA3, PA2, PA1, PA0, PB7, PB6, PA10, PA9, PA8, PC6, PC7, PC8, PC9 +}; + +extern const uint8 boardADCPins[BOARD_NR_ADC_PINS] __FLASH__ = { + PB0, PA7, PA6 , PA5 , PA4 , PA3 , PA2 , PA1 , PA0 , PC0, PC1, PC2, PC3, PC4, PC5 +}; + +// Note. These defines are not really used by generic boards. They are for Maple Serial USB +#define USB_DP PA12 +#define USB_DM PA11 + +// NOte. These definitions are not really used for generic boards, they only relate to boards modified to behave like Maple boards +extern const uint8 boardUsedPins[BOARD_NR_USED_PINS] __FLASH__ = { + USB_DP, USB_DM +}; + + +/* + * Roger Clark + * + * 2015/05/28 + * + * Moved definitions for Hardware Serial devices from HardwareSerial.cpp so that each board can define which Arduino "Serial" instance + * Maps to which hardware serial port on the microprocessor + */ + +#ifdef SERIAL_USB + DEFINE_HWSERIAL(Serial1, 1); + + DEFINE_HWSERIAL(Serial2, 2); + + DEFINE_HWSERIAL(Serial3, 3); + +#else + DEFINE_HWSERIAL(Serial, 1); + + DEFINE_HWSERIAL(Serial1, 2); + + DEFINE_HWSERIAL(Serial2, 3); + + +#endif diff --git a/STM32F1/variants/generic_stm32f103r8/board/board.h b/STM32F1/variants/generic_stm32f103r8/board/board.h new file mode 100644 index 0000000..4a77314 --- /dev/null +++ b/STM32F1/variants/generic_stm32f103r8/board/board.h @@ -0,0 +1,84 @@ +/****************************************************************************** + * The MIT License + * + * Copyright (c) 2011 LeafLabs, LLC. + * + * 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. + *****************************************************************************/ + +/** + * @file wirish/boards/maple_mini/include/board/board.h + * @author Marti Bolivar + * @brief Maple Mini board header. + * + * See wirish/boards/maple/include/board/board.h for more information + * on these definitions. + */ + +#ifndef _BOARD_GENERIC_STM32F103R8_H_ +#define _BOARD_GENERIC_STM32F103R8_H_ + +#define CYCLES_PER_MICROSECOND 72 +#define SYSTICK_RELOAD_VAL 71999 /* takes a cycle to reload */ + +#define BOARD_NR_USARTS 3 +#define BOARD_USART1_TX_PIN PA9 +#define BOARD_USART1_RX_PIN PA10 +#define BOARD_USART2_TX_PIN PA2 +#define BOARD_USART2_RX_PIN PA3 +#define BOARD_USART3_TX_PIN PB10 +#define BOARD_USART3_RX_PIN PB11 + +#define BOARD_NR_SPI 2 +#define BOARD_SPI1_NSS_PIN PA4 +#define BOARD_SPI1_MOSI_PIN PA7 +#define BOARD_SPI1_MISO_PIN PA6 +#define BOARD_SPI1_SCK_PIN PA5 + +#define BOARD_SPI2_NSS_PIN PB12 +#define BOARD_SPI2_MOSI_PIN PB15 +#define BOARD_SPI2_MISO_PIN PB14 +#define BOARD_SPI2_SCK_PIN PB13 + +#define BOARD_NR_GPIO_PINS 49 +#define BOARD_NR_PWM_PINS 16 +#define BOARD_NR_ADC_PINS 15 +#define BOARD_NR_USED_PINS 4 + + +#define BOARD_JTMS_SWDIO_PIN 22 +#define BOARD_JTCK_SWCLK_PIN 21 +#define BOARD_JTDI_PIN 20 +#define BOARD_JTDO_PIN 19 +#define BOARD_NJTRST_PIN 18 + +#define BOARD_USB_DISC_DEV GPIOB +#define BOARD_USB_DISC_BIT 10 + +// Note this needs to match with the PIN_MAP array in board.cpp +enum { + PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, + PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, + PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, + PD2 +}; + +#endif diff --git a/STM32F1/variants/generic_stm32f103r8/ld/bootloader.ld b/STM32F1/variants/generic_stm32f103r8/ld/bootloader.ld new file mode 100644 index 0000000..348b19c --- /dev/null +++ b/STM32F1/variants/generic_stm32f103r8/ld/bootloader.ld @@ -0,0 +1,18 @@ +/* + * Linker script for Generic STM32F103RE boards, using the generic bootloader (which takes the lower 8k of memory) + */ +MEMORY +{ + ram (rwx) : ORIGIN = 0x20000000, LENGTH = 20K + rom (rx) : ORIGIN = 0x08002000, LENGTH = 120K +} + + +/* Provide memory region aliases for common.inc */ +REGION_ALIAS("REGION_TEXT", rom); +REGION_ALIAS("REGION_DATA", ram); +REGION_ALIAS("REGION_BSS", ram); +REGION_ALIAS("REGION_RODATA", rom); + +/* Let common.inc handle the real work. */ +INCLUDE common.inc diff --git a/STM32F1/variants/generic_stm32f103r8/ld/bootloader_20.ld b/STM32F1/variants/generic_stm32f103r8/ld/bootloader_20.ld new file mode 100644 index 0000000..4de3a08 --- /dev/null +++ b/STM32F1/variants/generic_stm32f103r8/ld/bootloader_20.ld @@ -0,0 +1,30 @@ +/* + * libmaple linker script for "Flash" builds. + * + * A Flash build puts .text (and .rodata) in Flash, and + * .data/.bss/heap (of course) in SRAM, but offsets the sections by + * enough space to store the Maple bootloader, which lives in low + * Flash and uses low memory. + */ + +/* + * This pulls in the appropriate MEMORY declaration from the right + * subdirectory of stm32/mem/ (the environment must call ld with the + * right include directory flags to make this happen). Boards can also + * use this file to use any of libmaple's memory-related hooks (like + * where the heap should live). + */ +MEMORY +{ + ram (rwx) : ORIGIN = 0x20000000, LENGTH = 20K + rom (rx) : ORIGIN = 0x08002000, LENGTH = 120K +} + +/* Provide memory region aliases for common.inc */ +REGION_ALIAS("REGION_TEXT", rom); +REGION_ALIAS("REGION_DATA", ram); +REGION_ALIAS("REGION_BSS", ram); +REGION_ALIAS("REGION_RODATA", rom); + +/* Let common.inc handle the real work. */ +INCLUDE common.inc diff --git a/STM32F1/variants/generic_stm32f103r8/ld/common.inc b/STM32F1/variants/generic_stm32f103r8/ld/common.inc new file mode 100644 index 0000000..0c2b6a4 --- /dev/null +++ b/STM32F1/variants/generic_stm32f103r8/ld/common.inc @@ -0,0 +1,220 @@ +/* + * Linker script for libmaple. + * + * Original author "lanchon" from ST forums, with modifications by LeafLabs. + */ + +OUTPUT_FORMAT ("elf32-littlearm", "elf32-bigarm", "elf32-littlearm") + +/* + * Configure other libraries we want in the link. + * + * libgcc, libc, and libm are common across supported toolchains. + * However, some toolchains require additional archives which aren't + * present everywhere (e.g. ARM's gcc-arm-embedded releases). + * + * To hack around this, we let the build system specify additional + * archives by putting the right extra_libs.inc (in a directory under + * toolchains/) in our search path. + */ +GROUP(libgcc.a libc.a libm.a) +INCLUDE extra_libs.inc + +/* + * These force the linker to search for vector table symbols. + * + * These symbols vary by STM32 family (and also within families). + * It's up to the build system to configure the link's search path + * properly for the target MCU. + */ +INCLUDE vector_symbols.inc + +/* STM32 vector table. */ +EXTERN(__stm32_vector_table) + +/* C runtime initialization function. */ +EXTERN(start_c) + +/* main entry point */ +EXTERN(main) + +/* Initial stack pointer value. */ +EXTERN(__msp_init) +PROVIDE(__msp_init = ORIGIN(ram) + LENGTH(ram)); + +/* Reset vector and chip reset entry point */ +EXTERN(__start__) +ENTRY(__start__) +PROVIDE(__exc_reset = __start__); + +/* Heap boundaries, for libmaple */ +EXTERN(_lm_heap_start); +EXTERN(_lm_heap_end); + +SECTIONS +{ + .text : + { + __text_start__ = .; + /* + * STM32 vector table. Leave this here. Yes, really. + */ + *(.stm32.interrupt_vector) + + /* + * Program code and vague linking + */ + *(.text .text.* .gnu.linkonce.t.*) + *(.plt) + *(.gnu.warning) + *(.glue_7t) *(.glue_7) *(.vfp11_veneer) + + *(.ARM.extab* .gnu.linkonce.armextab.*) + *(.gcc_except_table) + *(.eh_frame_hdr) + *(.eh_frame) + + . = ALIGN(4); + KEEP(*(.init)) + + . = ALIGN(4); + __preinit_array_start = .; + KEEP (*(.preinit_array)) + __preinit_array_end = .; + + . = ALIGN(4); + __init_array_start = .; + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array)) + __init_array_end = .; + + . = ALIGN(0x4); + KEEP (*crtbegin.o(.ctors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*crtend.o(.ctors)) + + . = ALIGN(4); + KEEP(*(.fini)) + + . = ALIGN(4); + __fini_array_start = .; + KEEP (*(.fini_array)) + KEEP (*(SORT(.fini_array.*))) + __fini_array_end = .; + + KEEP (*crtbegin.o(.dtors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*crtend.o(.dtors)) + } > REGION_TEXT + + /* + * End of text + */ + .text.align : + { + . = ALIGN(8); + __text_end__ = .; + } > REGION_TEXT + + /* + * .ARM.exidx exception unwinding; mandated by ARM's C++ ABI + */ + __exidx_start = .; + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > REGION_RODATA + __exidx_end = .; + + /* + * .data + */ + .data : + { + __data_start__ = .; + LONG(0) + . = ALIGN(8); + + *(.got.plt) *(.got) + *(.data .data.* .gnu.linkonce.d.*) + + . = ALIGN(8); + __data_end__ = .; + } > REGION_DATA AT> REGION_RODATA + + /* + * Read-only data + */ + .rodata : + { + *(.rodata .rodata.* .gnu.linkonce.r.*) + /* .USER_FLASH: We allow users to allocate into Flash here */ + *(.USER_FLASH) + /* ROM image configuration; for C startup */ + . = ALIGN(4); + _lm_rom_img_cfgp = .; + LONG(LOADADDR(.data)); + /* + * Heap: Linker scripts may choose a custom heap by overriding + * _lm_heap_start and _lm_heap_end. Otherwise, the heap is in + * internal SRAM, beginning after .bss, and growing towards + * the stack. + * + * I'm shoving these here naively; there's probably a cleaner way + * to go about this. [mbolivar] + */ + _lm_heap_start = DEFINED(_lm_heap_start) ? _lm_heap_start : _end; + _lm_heap_end = DEFINED(_lm_heap_end) ? _lm_heap_end : __msp_init; + } > REGION_RODATA + + /* + * .bss + */ + .bss : + { + . = ALIGN(8); + __bss_start__ = .; + *(.bss .bss.* .gnu.linkonce.b.*) + *(COMMON) + . = ALIGN (8); + __bss_end__ = .; + _end = __bss_end__; + } > REGION_BSS + + /* + * Debugging sections + */ + .stab 0 (NOLOAD) : { *(.stab) } + .stabstr 0 (NOLOAD) : { *(.stabstr) } + /* DWARF debug sections. + * Symbols in the DWARF debugging sections are relative to the beginning + * of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } + /* SGI/MIPS DWARF 2 extensions */ + .debug_weaknames 0 : { *(.debug_weaknames) } + .debug_funcnames 0 : { *(.debug_funcnames) } + .debug_typenames 0 : { *(.debug_typenames) } + .debug_varnames 0 : { *(.debug_varnames) } + + .note.gnu.arm.ident 0 : { KEEP (*(.note.gnu.arm.ident)) } + .ARM.attributes 0 : { KEEP (*(.ARM.attributes)) } + /DISCARD/ : { *(.note.GNU-stack) } +} diff --git a/STM32F1/variants/generic_stm32f103r8/ld/extra_libs.inc b/STM32F1/variants/generic_stm32f103r8/ld/extra_libs.inc new file mode 100644 index 0000000..4413a53 --- /dev/null +++ b/STM32F1/variants/generic_stm32f103r8/ld/extra_libs.inc @@ -0,0 +1,7 @@ +/* + * Extra archives needed by ARM's GCC ARM Embedded arm-none-eabi- + * releases (https://launchpad.net/gcc-arm-embedded/). + */ + +/* This is for the provided newlib. */ +GROUP(libnosys.a) diff --git a/STM32F1/variants/generic_stm32f103r8/ld/flash.ld b/STM32F1/variants/generic_stm32f103r8/ld/flash.ld new file mode 100644 index 0000000..38a3023 --- /dev/null +++ b/STM32F1/variants/generic_stm32f103r8/ld/flash.ld @@ -0,0 +1,26 @@ +/* + * libmaple linker script for "Flash" builds. + * + * A Flash build puts .text (and .rodata) in Flash, and + * .data/.bss/heap (of course) in SRAM, but offsets the sections by + * enough space to store the Maple bootloader, which lives in low + * Flash and uses low memory. + */ + +/* + * This pulls in the appropriate MEMORY declaration from the right + * subdirectory of stm32/mem/ (the environment must call ld with the + * right include directory flags to make this happen). Boards can also + * use this file to use any of libmaple's memory-related hooks (like + * where the heap should live). + */ +INCLUDE mem-flash.inc + +/* Provide memory region aliases for common.inc */ +REGION_ALIAS("REGION_TEXT", rom); +REGION_ALIAS("REGION_DATA", ram); +REGION_ALIAS("REGION_BSS", ram); +REGION_ALIAS("REGION_RODATA", rom); + +/* Let common.inc handle the real work. */ +INCLUDE common.inc diff --git a/STM32F1/variants/generic_stm32f103r8/ld/flash_c8.ld b/STM32F1/variants/generic_stm32f103r8/ld/flash_c8.ld new file mode 100644 index 0000000..2a35550 --- /dev/null +++ b/STM32F1/variants/generic_stm32f103r8/ld/flash_c8.ld @@ -0,0 +1,33 @@ +/* + * libmaple linker script for "Flash" builds. + * + * A Flash build puts .text (and .rodata) in Flash, and + * .data/.bss/heap (of course) in SRAM, but offsets the sections by + * enough space to store the Maple bootloader, which lives in low + * Flash and uses low memory. + */ + +/* + * This pulls in the appropriate MEMORY declaration from the right + * subdirectory of stm32/mem/ (the environment must call ld with the + * right include directory flags to make this happen). Boards can also + * use this file to use any of libmaple's memory-related hooks (like + * where the heap should live). + */ +/*INCLUDE mem-flash.inc*/ + +MEMORY +{ + ram (rwx) : ORIGIN = 0x20000C00, LENGTH = 17K + rom (rx) : ORIGIN = 0x08000000, LENGTH = 44K +} + + +/* Provide memory region aliases for common.inc */ +REGION_ALIAS("REGION_TEXT", rom); +REGION_ALIAS("REGION_DATA", ram); +REGION_ALIAS("REGION_BSS", ram); +REGION_ALIAS("REGION_RODATA", rom); + +/* Let common.inc handle the real work. */ +INCLUDE common.inc diff --git a/STM32F1/variants/generic_stm32f103r8/ld/jtag.ld b/STM32F1/variants/generic_stm32f103r8/ld/jtag.ld new file mode 100644 index 0000000..62ae052 --- /dev/null +++ b/STM32F1/variants/generic_stm32f103r8/ld/jtag.ld @@ -0,0 +1,31 @@ +/* + * libmaple linker script for "JTAG" builds. + * + * A "JTAG" build puts .text (and .rodata) in Flash, and + * .data/.bss/heap (of course) in SRAM, but links starting at the + * Flash and SRAM starting addresses (0x08000000 and 0x20000000 + * respectively). This will wipe out a Maple bootloader if there's one + * on the board, so only use this if you know what you're doing. + * + * Of course, a "JTAG" build is perfectly usable for upload over SWD, + * the system memory bootloader, etc. The name is just a historical + * artifact. + */ + +/* + * This pulls in the appropriate MEMORY declaration from the right + * subdirectory of stm32/mem/ (the environment must call ld with the + * right include directory flags to make this happen). Boards can also + * use this file to use any of libmaple's memory-related hooks (like + * where the heap should live). + */ +INCLUDE mem-jtag.inc + +/* Provide memory region aliases for common.inc */ +REGION_ALIAS("REGION_TEXT", rom); +REGION_ALIAS("REGION_DATA", ram); +REGION_ALIAS("REGION_BSS", ram); +REGION_ALIAS("REGION_RODATA", rom); + +/* Let common.inc handle the real work. */ +INCLUDE common.inc diff --git a/STM32F1/variants/generic_stm32f103r8/ld/jtag_c8.ld b/STM32F1/variants/generic_stm32f103r8/ld/jtag_c8.ld new file mode 100644 index 0000000..2e01979 --- /dev/null +++ b/STM32F1/variants/generic_stm32f103r8/ld/jtag_c8.ld @@ -0,0 +1,36 @@ +/* + * libmaple linker script for "JTAG" builds. + * + * A "JTAG" build puts .text (and .rodata) in Flash, and + * .data/.bss/heap (of course) in SRAM, but links starting at the + * Flash and SRAM starting addresses (0x08000000 and 0x20000000 + * respectively). This will wipe out a Maple bootloader if there's one + * on the board, so only use this if you know what you're doing. + * + * Of course, a "JTAG" build is perfectly usable for upload over SWD, + * the system memory bootloader, etc. The name is just a historical + * artifact. + */ + +/* + * This pulls in the appropriate MEMORY declaration from the right + * subdirectory of stm32/mem/ (the environment must call ld with the + * right include directory flags to make this happen). Boards can also + * use this file to use any of libmaple's memory-related hooks (like + * where the heap should live). + */ + +MEMORY +{ + ram (rwx) : ORIGIN = 0x20000000, LENGTH = 20K + rom (rx) : ORIGIN = 0x08000000, LENGTH = 64K +} + +/* Provide memory region aliases for common.inc */ +REGION_ALIAS("REGION_TEXT", rom); +REGION_ALIAS("REGION_DATA", ram); +REGION_ALIAS("REGION_BSS", ram); +REGION_ALIAS("REGION_RODATA", rom); + +/* Let common.inc handle the real work. */ +INCLUDE common.inc diff --git a/STM32F1/variants/generic_stm32f103r8/ld/mem-flash.inc b/STM32F1/variants/generic_stm32f103r8/ld/mem-flash.inc new file mode 100644 index 0000000..fe97698 --- /dev/null +++ b/STM32F1/variants/generic_stm32f103r8/ld/mem-flash.inc @@ -0,0 +1,5 @@ +MEMORY +{ + ram (rwx) : ORIGIN = 0x20000C00, LENGTH = 17K + rom (rx) : ORIGIN = 0x08005000, LENGTH = 108K +} diff --git a/STM32F1/variants/generic_stm32f103r8/ld/mem-jtag.inc b/STM32F1/variants/generic_stm32f103r8/ld/mem-jtag.inc new file mode 100644 index 0000000..3db0940 --- /dev/null +++ b/STM32F1/variants/generic_stm32f103r8/ld/mem-jtag.inc @@ -0,0 +1,5 @@ +MEMORY +{ + ram (rwx) : ORIGIN = 0x20000000, LENGTH = 20K + rom (rx) : ORIGIN = 0x08000000, LENGTH = 128K +} diff --git a/STM32F1/variants/generic_stm32f103r8/ld/mem-ram.inc b/STM32F1/variants/generic_stm32f103r8/ld/mem-ram.inc new file mode 100644 index 0000000..dc6d329 --- /dev/null +++ b/STM32F1/variants/generic_stm32f103r8/ld/mem-ram.inc @@ -0,0 +1,5 @@ +MEMORY +{ + ram (rwx) : ORIGIN = 0x20000C00, LENGTH = 17K + rom (rx) : ORIGIN = 0x08005000, LENGTH = 0K +} diff --git a/STM32F1/variants/generic_stm32f103r8/ld/ram.ld b/STM32F1/variants/generic_stm32f103r8/ld/ram.ld new file mode 100644 index 0000000..1ea7598 --- /dev/null +++ b/STM32F1/variants/generic_stm32f103r8/ld/ram.ld @@ -0,0 +1,25 @@ +/* + * libmaple linker script for RAM builds. + * + * A Flash build puts .text, .rodata, and .data/.bss/heap (of course) + * in SRAM, but offsets the sections by enough space to store the + * Maple bootloader, which uses low memory. + */ + +/* + * This pulls in the appropriate MEMORY declaration from the right + * subdirectory of stm32/mem/ (the environment must call ld with the + * right include directory flags to make this happen). Boards can also + * use this file to use any of libmaple's memory-related hooks (like + * where the heap should live). + */ +INCLUDE mem-ram.inc + +/* Provide memory region aliases for common.inc */ +REGION_ALIAS("REGION_TEXT", ram); +REGION_ALIAS("REGION_DATA", ram); +REGION_ALIAS("REGION_BSS", ram); +REGION_ALIAS("REGION_RODATA", ram); + +/* Let common.inc handle the real work. */ +INCLUDE common.inc diff --git a/STM32F1/variants/generic_stm32f103r8/ld/ram_c8.ld b/STM32F1/variants/generic_stm32f103r8/ld/ram_c8.ld new file mode 100644 index 0000000..9f9f6bb --- /dev/null +++ b/STM32F1/variants/generic_stm32f103r8/ld/ram_c8.ld @@ -0,0 +1,31 @@ +/* + * libmaple linker script for RAM builds. + * + * A Flash build puts .text, .rodata, and .data/.bss/heap (of course) + * in SRAM, but offsets the sections by enough space to store the + * Maple bootloader, which uses low memory. + */ + +/* + * This pulls in the appropriate MEMORY declaration from the right + * subdirectory of stm32/mem/ (the environment must call ld with the + * right include directory flags to make this happen). Boards can also + * use this file to use any of libmaple's memory-related hooks (like + * where the heap should live). + */ +/*INCLUDE mem-ram.inc*/ +MEMORY +{ + ram (rwx) : ORIGIN = 0x20000C00, LENGTH = 17K + rom (rx) : ORIGIN = 0x08005000, LENGTH = 0 +} + + +/* Provide memory region aliases for common.inc */ +REGION_ALIAS("REGION_TEXT", ram); +REGION_ALIAS("REGION_DATA", ram); +REGION_ALIAS("REGION_BSS", ram); +REGION_ALIAS("REGION_RODATA", ram); + +/* Let common.inc handle the real work. */ +INCLUDE common.inc diff --git a/STM32F1/variants/generic_stm32f103r8/ld/stm32f103r8.ld b/STM32F1/variants/generic_stm32f103r8/ld/stm32f103r8.ld new file mode 100644 index 0000000..6ea8f57 --- /dev/null +++ b/STM32F1/variants/generic_stm32f103r8/ld/stm32f103r8.ld @@ -0,0 +1,18 @@ +/* + * Linker script for Generic STM32F103RB boards. + */ +MEMORY +{ + ram (rwx) : ORIGIN = 0x20000000, LENGTH = 20K + rom (rx) : ORIGIN = 0x08000000, LENGTH = 64K +} + + +/* Provide memory region aliases for common.inc */ +REGION_ALIAS("REGION_TEXT", rom); +REGION_ALIAS("REGION_DATA", ram); +REGION_ALIAS("REGION_BSS", ram); +REGION_ALIAS("REGION_RODATA", rom); + +/* Let common.inc handle the real work. */ +INCLUDE common.inc diff --git a/STM32F1/variants/generic_stm32f103r8/ld/stm32f103rb.ld b/STM32F1/variants/generic_stm32f103r8/ld/stm32f103rb.ld new file mode 100644 index 0000000..9c0d19b --- /dev/null +++ b/STM32F1/variants/generic_stm32f103r8/ld/stm32f103rb.ld @@ -0,0 +1,18 @@ +/* + * Linker script for Generic STM32F103RB boards. + */ +MEMORY +{ + ram (rwx) : ORIGIN = 0x20000000, LENGTH = 20K + rom (rx) : ORIGIN = 0x08000000, LENGTH = 128K +} + + +/* Provide memory region aliases for common.inc */ +REGION_ALIAS("REGION_TEXT", rom); +REGION_ALIAS("REGION_DATA", ram); +REGION_ALIAS("REGION_BSS", ram); +REGION_ALIAS("REGION_RODATA", rom); + +/* Let common.inc handle the real work. */ +INCLUDE common.inc diff --git a/STM32F1/variants/generic_stm32f103r8/ld/vector_symbols.inc b/STM32F1/variants/generic_stm32f103r8/ld/vector_symbols.inc new file mode 100644 index 0000000..a40012a --- /dev/null +++ b/STM32F1/variants/generic_stm32f103r8/ld/vector_symbols.inc @@ -0,0 +1,78 @@ +EXTERN(__msp_init) +EXTERN(__exc_reset) +EXTERN(__exc_nmi) +EXTERN(__exc_hardfault) +EXTERN(__exc_memmanage) +EXTERN(__exc_busfault) +EXTERN(__exc_usagefault) +EXTERN(__stm32reservedexception7) +EXTERN(__stm32reservedexception8) +EXTERN(__stm32reservedexception9) +EXTERN(__stm32reservedexception10) +EXTERN(__exc_svc) +EXTERN(__exc_debug_monitor) +EXTERN(__stm32reservedexception13) +EXTERN(__exc_pendsv) +EXTERN(__exc_systick) + +EXTERN(__irq_wwdg) +EXTERN(__irq_pvd) +EXTERN(__irq_tamper) +EXTERN(__irq_rtc) +EXTERN(__irq_flash) +EXTERN(__irq_rcc) +EXTERN(__irq_exti0) +EXTERN(__irq_exti1) +EXTERN(__irq_exti2) +EXTERN(__irq_exti3) +EXTERN(__irq_exti4) +EXTERN(__irq_dma1_channel1) +EXTERN(__irq_dma1_channel2) +EXTERN(__irq_dma1_channel3) +EXTERN(__irq_dma1_channel4) +EXTERN(__irq_dma1_channel5) +EXTERN(__irq_dma1_channel6) +EXTERN(__irq_dma1_channel7) +EXTERN(__irq_adc) +EXTERN(__irq_usb_hp_can_tx) +EXTERN(__irq_usb_lp_can_rx0) +EXTERN(__irq_can_rx1) +EXTERN(__irq_can_sce) +EXTERN(__irq_exti9_5) +EXTERN(__irq_tim1_brk) +EXTERN(__irq_tim1_up) +EXTERN(__irq_tim1_trg_com) +EXTERN(__irq_tim1_cc) +EXTERN(__irq_tim2) +EXTERN(__irq_tim3) +EXTERN(__irq_tim4) +EXTERN(__irq_i2c1_ev) +EXTERN(__irq_i2c1_er) +EXTERN(__irq_i2c2_ev) +EXTERN(__irq_i2c2_er) +EXTERN(__irq_spi1) +EXTERN(__irq_spi2) +EXTERN(__irq_usart1) +EXTERN(__irq_usart2) +EXTERN(__irq_usart3) +EXTERN(__irq_exti15_10) +EXTERN(__irq_rtcalarm) +EXTERN(__irq_usbwakeup) + +EXTERN(__irq_tim8_brk) +EXTERN(__irq_tim8_up) +EXTERN(__irq_tim8_trg_com) +EXTERN(__irq_tim8_cc) +EXTERN(__irq_adc3) +EXTERN(__irq_fsmc) +EXTERN(__irq_sdio) +EXTERN(__irq_tim5) +EXTERN(__irq_spi3) +EXTERN(__irq_uart4) +EXTERN(__irq_uart5) +EXTERN(__irq_tim6) +EXTERN(__irq_tim7) +EXTERN(__irq_dma2_channel1) +EXTERN(__irq_dma2_channel2) +EXTERN(__irq_dma2_channel3) +EXTERN(__irq_dma2_channel4_5) diff --git a/STM32F1/variants/generic_stm32f103r8/pins_arduino.h b/STM32F1/variants/generic_stm32f103r8/pins_arduino.h new file mode 100644 index 0000000..d7518e6 --- /dev/null +++ b/STM32F1/variants/generic_stm32f103r8/pins_arduino.h @@ -0,0 +1,6 @@ + + + + +// API compatibility +#include "variant.h" \ No newline at end of file diff --git a/STM32F1/variants/generic_stm32f103r8/variant.h b/STM32F1/variants/generic_stm32f103r8/variant.h new file mode 100644 index 0000000..970dd96 --- /dev/null +++ b/STM32F1/variants/generic_stm32f103r8/variant.h @@ -0,0 +1,14 @@ +#ifndef _VARIANT_ARDUINO_STM32_ +#define _VARIANT_ARDUINO_STM32_ + +#define digitalPinToPort(P) ( PIN_MAP[P].gpio_device ) +#define digitalPinToBitMask(P) ( BIT(PIN_MAP[P].gpio_bit) ) +#define portOutputRegister(port) ( &(port->regs->ODR) ) +#define portInputRegister(port) ( &(port->regs->IDR) ) + +#define portSetRegister(pin) ( &(PIN_MAP[pin].gpio_device->regs->BSRR) ) +#define portClearRegister(pin) ( &(PIN_MAP[pin].gpio_device->regs->BRR) ) + +#define portConfigRegister(pin) ( &(PIN_MAP[pin].gpio_device->regs->CRL) ) + +#endif /* _VARIANT_ARDUINO_STM32_ */ \ No newline at end of file diff --git a/STM32F1/variants/generic_stm32f103r8/wirish/boards.cpp b/STM32F1/variants/generic_stm32f103r8/wirish/boards.cpp new file mode 100644 index 0000000..0c018e8 --- /dev/null +++ b/STM32F1/variants/generic_stm32f103r8/wirish/boards.cpp @@ -0,0 +1,229 @@ +/****************************************************************************** + * The MIT License + * + * Copyright (c) 2010 Perry Hung. + * Copyright (c) 2011, 2012 LeafLabs, LLC. + * + * 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. + *****************************************************************************/ + +/** + * @file wirish/boards.cpp + * @brief init() and board routines. + * + * This file is mostly interesting for the init() function, which + * configures Flash, the core clocks, and a variety of other available + * peripherals on the board so the rest of Wirish doesn't have to turn + * things on before using them. + * + * Prior to returning, init() calls boardInit(), which allows boards + * to perform any initialization they need to. This file includes a + * weak no-op definition of boardInit(), so boards that don't need any + * special initialization don't have to define their own. + * + * How init() works is chip-specific. See the boards_setup.cpp files + * under e.g. wirish/stm32f1/, wirish/stmf32f2 for the details, but be + * advised: their contents are unstable, and can/will change without + * notice. + */ + +#include +#include +#include +#include +#include +#include "boards_private.h" + +static void setup_flash(void); +static void setup_clocks(void); +static void setup_nvic(void); +static void setup_adcs(void); +static void setup_timers(void); + +/* + * Exported functions + */ + +void init(void) { + setup_flash(); + setup_clocks(); + setup_nvic(); + systick_init(SYSTICK_RELOAD_VAL); + wirish::priv::board_setup_gpio(); + setup_adcs(); + setup_timers(); + wirish::priv::board_setup_usb(); + wirish::priv::series_init(); + boardInit(); +} + +/* Provide a default no-op boardInit(). */ +__weak void boardInit(void) { +} + +/* You could farm this out to the files in boards/ if e.g. it takes + * too long to test on boards with lots of pins. */ +bool boardUsesPin(uint8 pin) { + for (int i = 0; i < BOARD_NR_USED_PINS; i++) { + if (pin == boardUsedPins[i]) { + return true; + } + } + return false; +} + +/* + * Auxiliary routines + */ + +static void setup_flash(void) { + // Turn on as many Flash "go faster" features as + // possible. flash_enable_features() just ignores any flags it + // can't support. + flash_enable_features(FLASH_PREFETCH | FLASH_ICACHE | FLASH_DCACHE); + // Configure the wait states, assuming we're operating at "close + // enough" to 3.3V. + flash_set_latency(FLASH_SAFE_WAIT_STATES); +} + +static void setup_clocks(void) { + // Turn on HSI. We'll switch to and run off of this while we're + // setting up the main PLL. + rcc_turn_on_clk(RCC_CLK_HSI); + + // Turn off and reset the clock subsystems we'll be using, as well + // as the clock security subsystem (CSS). Note that resetting CFGR + // to its default value of 0 implies a switch to HSI for SYSCLK. + RCC_BASE->CFGR = 0x00000000; + rcc_disable_css(); + rcc_turn_off_clk(RCC_CLK_PLL); + rcc_turn_off_clk(RCC_CLK_HSE); + wirish::priv::board_reset_pll(); + // Clear clock readiness interrupt flags and turn off clock + // readiness interrupts. + RCC_BASE->CIR = 0x00000000; + + // Enable HSE, and wait until it's ready. + rcc_turn_on_clk(RCC_CLK_HSE); + while (!rcc_is_clk_ready(RCC_CLK_HSE)) + ; + + // Configure AHBx, APBx, etc. prescalers and the main PLL. + wirish::priv::board_setup_clock_prescalers(); + rcc_configure_pll(&wirish::priv::w_board_pll_cfg); + + // Enable the PLL, and wait until it's ready. + rcc_turn_on_clk(RCC_CLK_PLL); + while(!rcc_is_clk_ready(RCC_CLK_PLL)) + ; + + // Finally, switch to the now-ready PLL as the main clock source. + rcc_switch_sysclk(RCC_CLKSRC_PLL); +} + +/* + * These addresses are where usercode starts when a bootloader is + * present. If no bootloader is present, the user NVIC usually starts + * at the Flash base address, 0x08000000. + */ +#if defined(BOOTLOADER_maple) + #define USER_ADDR_ROM 0x08005000 +#else + #if defined(BOOTLOADER_robotis) + #define USER_ADDR_ROM 0x08003000 + #else + #define USER_ADDR_ROM 0x08000000 + #endif +#endif +#define USER_ADDR_RAM 0x20000C00 +extern char __text_start__; + +static void setup_nvic(void) { + +nvic_init((uint32)VECT_TAB_ADDR, 0); + +/* Roger Clark. We now control nvic vector table in boards.txt using the build.vect paramater +#ifdef VECT_TAB_FLASH + nvic_init(USER_ADDR_ROM, 0); +#elif defined VECT_TAB_RAM + nvic_init(USER_ADDR_RAM, 0); +#elif defined VECT_TAB_BASE + nvic_init((uint32)0x08000000, 0); +#elif defined VECT_TAB_ADDR + // A numerically supplied value + nvic_init((uint32)VECT_TAB_ADDR, 0); +#else + // Use the __text_start__ value from the linker script; this + // should be the start of the vector table. + nvic_init((uint32)&__text_start__, 0); +#endif + +*/ +} + +static void adc_default_config(const adc_dev *dev) { + adc_enable_single_swstart(dev); + adc_set_sample_rate(dev, wirish::priv::w_adc_smp); +} + +static void setup_adcs(void) { + adc_set_prescaler(wirish::priv::w_adc_pre); + adc_foreach(adc_default_config); +} + +static void timer_default_config(timer_dev *dev) { + timer_adv_reg_map *regs = (dev->regs).adv; + const uint16 full_overflow = 0xFFFF; + const uint16 half_duty = 0x8FFF; + + timer_init(dev); + timer_pause(dev); + + regs->CR1 = TIMER_CR1_ARPE; + regs->PSC = 1; + regs->SR = 0; + regs->DIER = 0; + regs->EGR = TIMER_EGR_UG; + switch (dev->type) { + case TIMER_ADVANCED: + regs->BDTR = TIMER_BDTR_MOE | TIMER_BDTR_LOCK_OFF; + // fall-through + case TIMER_GENERAL: + timer_set_reload(dev, full_overflow); + for (uint8 channel = 1; channel <= 4; channel++) { + if (timer_has_cc_channel(dev, channel)) { + timer_set_compare(dev, channel, half_duty); + timer_oc_set_mode(dev, channel, TIMER_OC_MODE_PWM_1, + TIMER_OC_PE); + } + } + // fall-through + case TIMER_BASIC: + break; + } + + timer_generate_update(dev); + timer_resume(dev); +} + +static void setup_timers(void) { + timer_foreach(timer_default_config); +} diff --git a/STM32F1/variants/generic_stm32f103r8/wirish/boards_setup.cpp b/STM32F1/variants/generic_stm32f103r8/wirish/boards_setup.cpp new file mode 100644 index 0000000..0615e81 --- /dev/null +++ b/STM32F1/variants/generic_stm32f103r8/wirish/boards_setup.cpp @@ -0,0 +1,98 @@ +/****************************************************************************** + * The MIT License + * + * Copyright (c) 2012 LeafLabs, LLC. + * + * 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. +*****************************************************************************/ + +/** + * @file wirish/stm32f1/boards_setup.cpp + * @author Marti Bolivar + * @brief STM32F1 chip setup. + * + * This file controls how init() behaves on the STM32F1. Be very + * careful when changing anything here. Many of these values depend + * upon each other. + */ + +#include "boards_private.h" + +#include +#include + +#include +#include + +// Allow boards to provide a PLL multiplier. This is useful for +// e.g. STM32F100 value line MCUs, which use slower multipliers. +// (We're leaving the default to RCC_PLLMUL_9 for now, since that +// works for F103 performance line MCUs, which is all that LeafLabs +// currently officially supports). +#ifndef BOARD_RCC_PLLMUL +#define BOARD_RCC_PLLMUL RCC_PLLMUL_9 +#endif + +namespace wirish { + namespace priv { + + static stm32f1_rcc_pll_data pll_data = {BOARD_RCC_PLLMUL}; + __weak rcc_pll_cfg w_board_pll_cfg = {RCC_PLLSRC_HSE, &pll_data}; + __weak adc_prescaler w_adc_pre = ADC_PRE_PCLK2_DIV_6; + __weak adc_smp_rate w_adc_smp = ADC_SMPR_55_5; + + __weak void board_reset_pll(void) { + // TODO + } + + __weak void board_setup_clock_prescalers(void) { + rcc_set_prescaler(RCC_PRESCALER_AHB, RCC_AHB_SYSCLK_DIV_1); + rcc_set_prescaler(RCC_PRESCALER_APB1, RCC_APB1_HCLK_DIV_2); + rcc_set_prescaler(RCC_PRESCALER_APB2, RCC_APB2_HCLK_DIV_1); + } + + __weak void board_setup_gpio(void) { + gpio_init_all(); + } + + __weak void board_setup_usb(void) { +#ifdef SERIAL_USB + +#ifdef GENERIC_BOOTLOADER + //Reset the USB interface on generic boards - developed by Victor PV + gpio_set_mode(PIN_MAP[PA12].gpio_device, PIN_MAP[PA12].gpio_bit, GPIO_OUTPUT_PP); + gpio_write_bit(PIN_MAP[PA12].gpio_device, PIN_MAP[PA12].gpio_bit,0); + + for(volatile unsigned int i=0;i<256;i++);// Only small delay seems to be needed, and USB pins will get configured in Serial.begin + gpio_set_mode(PIN_MAP[PA12].gpio_device, PIN_MAP[PA12].gpio_bit, GPIO_INPUT_FLOATING); +#endif + Serial.begin();// Roger Clark. Changed SerialUSB to Serial for Arduino sketch compatibility +#endif + } + + __weak void series_init(void) { + // Initialize AFIO here, too, so peripheral remaps and external + // interrupts work out of the box. + afio_init(); + } + + } +} diff --git a/STM32F1/variants/generic_stm32f103r8/wirish/start.S b/STM32F1/variants/generic_stm32f103r8/wirish/start.S new file mode 100644 index 0000000..a04f222 --- /dev/null +++ b/STM32F1/variants/generic_stm32f103r8/wirish/start.S @@ -0,0 +1,57 @@ +/****************************************************************************** + * The MIT License + * + * Copyright (c) 2011 LeafLabs, LLC. + * + * 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. + *****************************************************************************/ + +/* + * This file is a modified version of a file obtained from + * CodeSourcery Inc. (now part of Mentor Graphics Corp.), in which the + * following text appeared: + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + + .text + .code 16 + .thumb_func + + .globl __start__ + .type __start__, %function +__start__: + .fnstart + ldr r1,=__msp_init + mov sp,r1 + ldr r1,=start_c + bx r1 + .pool + .cantunwind + .fnend diff --git a/STM32F1/variants/generic_stm32f103r8/wirish/start_c.c b/STM32F1/variants/generic_stm32f103r8/wirish/start_c.c new file mode 100644 index 0000000..05df060 --- /dev/null +++ b/STM32F1/variants/generic_stm32f103r8/wirish/start_c.c @@ -0,0 +1,95 @@ +/****************************************************************************** + * The MIT License + * + * Copyright (c) 2011 LeafLabs, LLC. + * + * 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. + *****************************************************************************/ + +/* + * This file is a modified version of a file obtained from + * CodeSourcery Inc. (now part of Mentor Graphics Corp.), in which the + * following text appeared: + * + * Copyright (c) 2006, 2007 CodeSourcery Inc + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +#include + +extern void __libc_init_array(void); + +extern int main(int, char**, char**); + +extern void exit(int) __attribute__((noreturn, weak)); + +/* The linker must ensure that these are at least 4-byte aligned. */ +extern char __data_start__, __data_end__; +extern char __bss_start__, __bss_end__; + +struct rom_img_cfg { + int *img_start; +}; + +extern char _lm_rom_img_cfgp; + +void __attribute__((noreturn)) start_c(void) { + struct rom_img_cfg *img_cfg = (struct rom_img_cfg*)&_lm_rom_img_cfgp; + int *src = img_cfg->img_start; + int *dst = (int*)&__data_start__; + int exit_code; + + /* Initialize .data, if necessary. */ + if (src != dst) { + int *end = (int*)&__data_end__; + while (dst < end) { + *dst++ = *src++; + } + } + + /* Zero .bss. */ + dst = (int*)&__bss_start__; + while (dst < (int*)&__bss_end__) { + *dst++ = 0; + } + + /* Run initializers. */ + __libc_init_array(); + + /* Jump to main. */ + exit_code = main(0, 0, 0); + if (exit) { + exit(exit_code); + } + + /* If exit is NULL, make sure we don't return. */ + for (;;) + continue; +} diff --git a/STM32F1/variants/generic_stm32f103r8/wirish/syscalls.c b/STM32F1/variants/generic_stm32f103r8/wirish/syscalls.c new file mode 100644 index 0000000..d42536c --- /dev/null +++ b/STM32F1/variants/generic_stm32f103r8/wirish/syscalls.c @@ -0,0 +1,176 @@ +/****************************************************************************** + * The MIT License + * + * Copyright (c) 2010 Perry Hung. + * Copyright (c) 2011, 2012 LeafLabs, LLC. + * + * 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. + *****************************************************************************/ + +/** + * @file wirish/syscalls.c + * @brief newlib stubs + * + * Low level system routines used by newlib for basic I/O and memory + * allocation. You can override most of these. + */ + +#include + +#include +#include +#include + +/* If CONFIG_HEAP_START (or CONFIG_HEAP_END) isn't defined, then + * assume _lm_heap_start (resp. _lm_heap_end) is appropriately set by + * the linker */ +#ifndef CONFIG_HEAP_START +extern char _lm_heap_start; +#define CONFIG_HEAP_START ((void *)&_lm_heap_start) +#endif +#ifndef CONFIG_HEAP_END +extern char _lm_heap_end; +#define CONFIG_HEAP_END ((void *)&_lm_heap_end) +#endif + +/* + * _sbrk -- Increment the program break. + * + * Get incr bytes more RAM (for use by the heap). malloc() and + * friends call this function behind the scenes. + */ +void *_sbrk(int incr) { + static void * pbreak = NULL; /* current program break */ + void * ret; + + if (pbreak == NULL) { + pbreak = CONFIG_HEAP_START; + } + + if ((CONFIG_HEAP_END - pbreak < incr) || + (pbreak - CONFIG_HEAP_START < -incr)) { + errno = ENOMEM; + return (void *)-1; + } + + ret = pbreak; + pbreak += incr; + return ret; +} + +__weak int _open(const char *path, int flags, ...) { + return 1; +} + +__weak int _close(int fd) { + return 0; +} + +__weak int _fstat(int fd, struct stat *st) { + st->st_mode = S_IFCHR; + return 0; +} + +__weak int _isatty(int fd) { + return 1; +} + +__weak int isatty(int fd) { + return 1; +} + +__weak int _lseek(int fd, off_t pos, int whence) { + return -1; +} + +__weak unsigned char getch(void) { + return 0; +} + + +__weak int _read(int fd, char *buf, size_t cnt) { + *buf = getch(); + + return 1; +} + +__weak void putch(unsigned char c) { +} + +__weak void cgets(char *s, int bufsize) { + char *p; + int c; + int i; + + for (i = 0; i < bufsize; i++) { + *(s+i) = 0; + } +// memset(s, 0, bufsize); + + p = s; + + for (p = s; p < s + bufsize-1;) { + c = getch(); + switch (c) { + case '\r' : + case '\n' : + putch('\r'); + putch('\n'); + *p = '\n'; + return; + + case '\b' : + if (p > s) { + *p-- = 0; + putch('\b'); + putch(' '); + putch('\b'); + } + break; + + default : + putch(c); + *p++ = c; + break; + } + } + return; +} + +__weak int _write(int fd, const char *buf, size_t cnt) { + int i; + + for (i = 0; i < cnt; i++) + putch(buf[i]); + + return cnt; +} + +/* Override fgets() in newlib with a version that does line editing */ +__weak char *fgets(char *s, int bufsize, void *f) { + cgets(s, bufsize); + return s; +} + +__weak void _exit(int exitcode) { + while (1) + ; +} From 82f15f091a8f16948b39d08a8e0144ad3ac2b701 Mon Sep 17 00:00:00 2001 From: Martin Ayotte Date: Tue, 11 Aug 2015 18:50:38 -0400 Subject: [PATCH 11/16] convert USBSerial and HardwareSerial to derived from Stream instead of Print --- .../cores/maple/libmaple/HardwareSerial.cpp | 7 +++- STM32F4/cores/maple/libmaple/HardwareSerial.h | 11 ++++--- STM32F4/cores/maple/libmaple/ring_buffer.h | 19 +++++++++++ STM32F4/cores/maple/libmaple/usart.h | 12 +++++++ STM32F4/cores/maple/usb_serial.cpp | 32 +++++++++++++++++-- STM32F4/cores/maple/usb_serial.h | 12 ++++--- 6 files changed, 79 insertions(+), 14 deletions(-) diff --git a/STM32F4/cores/maple/libmaple/HardwareSerial.cpp b/STM32F4/cores/maple/libmaple/HardwareSerial.cpp index f6fdcbb..59ce71d 100644 --- a/STM32F4/cores/maple/libmaple/HardwareSerial.cpp +++ b/STM32F4/cores/maple/libmaple/HardwareSerial.cpp @@ -138,10 +138,15 @@ int HardwareSerial::read(void) { } } -uint32 HardwareSerial::available(void) { +int HardwareSerial::available(void) { return usart_data_available(usart_device); } +int HardwareSerial::peek(void) +{ + return usart_peek(usart_device); +} + uint32 HardwareSerial::pending(void) { return usart_data_pending(usart_device); } diff --git a/STM32F4/cores/maple/libmaple/HardwareSerial.h b/STM32F4/cores/maple/libmaple/HardwareSerial.h index 9cad064..c09fe54 100644 --- a/STM32F4/cores/maple/libmaple/HardwareSerial.h +++ b/STM32F4/cores/maple/libmaple/HardwareSerial.h @@ -35,7 +35,7 @@ #include "libmaple_types.h" #include "usart.h" -#include "Print.h" +#include "Stream.h" /* * IMPORTANT: @@ -47,7 +47,7 @@ * the documentation accordingly. */ -class HardwareSerial : public Print { +class HardwareSerial : public Stream { public: HardwareSerial(usart_dev *usart_device, uint8 tx_pin, @@ -58,10 +58,11 @@ public: void end(void); /* I/O */ - uint32 available(void); + virtual int available(void); + virtual int peek(void); + virtual void flush(void); uint32 pending(void); - int read(void); - void flush(void); + virtual int read(void); virtual size_t write(unsigned char); using Print::write; diff --git a/STM32F4/cores/maple/libmaple/ring_buffer.h b/STM32F4/cores/maple/libmaple/ring_buffer.h index c443bc3..b018522 100644 --- a/STM32F4/cores/maple/libmaple/ring_buffer.h +++ b/STM32F4/cores/maple/libmaple/ring_buffer.h @@ -126,6 +126,25 @@ static inline uint8 rb_remove(ring_buffer *rb) { return ch; } +/* + * Roger Clark. 20141125, + * added peek function. + * @brief Return the first item from a ring buffer, without removing it + * @param rb Buffer to remove from, must contain at least one element. + */ +static inline int rb_peek(ring_buffer *rb) +{ + if (rb->head == rb->tail) + { + return -1; + } + else + { + return rb->buf[rb->head]; + } +} + + /** * @brief Attempt to remove the first item from a ring buffer. * diff --git a/STM32F4/cores/maple/libmaple/usart.h b/STM32F4/cores/maple/libmaple/usart.h index a3dfc31..3f7c885 100644 --- a/STM32F4/cores/maple/libmaple/usart.h +++ b/STM32F4/cores/maple/libmaple/usart.h @@ -323,6 +323,18 @@ static inline uint8 usart_getc(usart_dev *dev) { return rb_remove(&dev->rbRX); } +/* + * Roger Clark. 20141125, + * added peek function. + * @param dev Serial port to read from + * @return byte read + */ +static inline int usart_peek(usart_dev *dev) +{ + return rb_peek(&dev->rbRX); +} + + /** * @brief Return the amount of data available in a serial port's RX buffer. * @param dev Serial port to check diff --git a/STM32F4/cores/maple/usb_serial.cpp b/STM32F4/cores/maple/usb_serial.cpp index 71d3b37..d606855 100644 --- a/STM32F4/cores/maple/usb_serial.cpp +++ b/STM32F4/cores/maple/usb_serial.cpp @@ -78,11 +78,11 @@ size_t USBSerial::write(const void *buf, uint32 len) { return txed; } -uint32 USBSerial::available(void) { +int USBSerial::available(void) { return usbBytesAvailable(); } -uint32 USBSerial::read(void *buf, uint32 len) { +int USBSerial::read(void *buf, uint32 len) { if (!buf) { return 0; } @@ -96,12 +96,38 @@ uint32 USBSerial::read(void *buf, uint32 len) { } /* Blocks forever until 1 byte is received */ -uint8 USBSerial::read(void) { +int USBSerial::read(void) { uint8 buf[1]; this->read(buf, 1); return buf[0]; } +int USBSerial::peek(void) +{ + // ThingToDo : Don't do any thing yet, since F4 doesn't have usb_cdcacm_peek() yet. + /* + uint8 b; + if (usb_cdcacm_peek(&b, 1)==1) + { + return b; + } + else */ + { + return -1; + } +} + +void USBSerial::flush(void) +{ + /*Roger Clark. Rather slow method. Need to improve this */ + uint8 b; + while(usbBytesAvailable()) + { + this->read(&b, 1); + } + return; +} + uint8 USBSerial::pending(void) { return usbGetPending(); } diff --git a/STM32F4/cores/maple/usb_serial.h b/STM32F4/cores/maple/usb_serial.h index 44bd1e8..a551e9d 100644 --- a/STM32F4/cores/maple/usb_serial.h +++ b/STM32F4/cores/maple/usb_serial.h @@ -31,12 +31,12 @@ #ifndef _USB_SERIAL_H_ #define _USB_SERIAL_H_ -#include "Print.h" +#include "Stream.h" /** * @brief Virtual serial terminal. */ -class USBSerial : public Print { +class USBSerial : public Stream { public: USBSerial(void); @@ -44,10 +44,12 @@ public: void begin(int); void end(void); - uint32 available(void); + virtual int available(void); + virtual int peek(void); + virtual void flush(void); - uint32 read(void *buf, uint32 len); - uint8 read(void); + virtual int read(void *buf, uint32 len); + virtual int read(void); size_t write(uint8); size_t write(const char *str); From f1086b6b203a6198b3e8ade831f2caaa676981c5 Mon Sep 17 00:00:00 2001 From: Roger Clark Date: Thu, 13 Aug 2015 20:02:03 +1000 Subject: [PATCH 12/16] Fixed issue with gerneric F103RB and F103R8 caused by typos in boards.txt --- STM32F1/boards.txt | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/STM32F1/boards.txt b/STM32F1/boards.txt index 7476389..4e04ea5 100644 --- a/STM32F1/boards.txt +++ b/STM32F1/boards.txt @@ -214,14 +214,14 @@ genericSTM32F103R.upload.auto_reset=true genericSTM32F103R.menu.device_variant.STM32F103R8=STM32F103R8 (20k RAM. 64k Flash) genericSTM32F103R.menu.device_variant.STM32F103R8.build.variant=generic_stm32f103r8 -genericSTM32F103R.menu.device_variant.STM32F103R8.build.cpu_flags=-DMCU_STM32F103RB -genericSTM32F103R.menu.device_variant.STM32F103RB.upload.maximum_size=65536 -genericSTM32F103R.menu.device_variant.STM32F103RB.upload.ram.maximum_size=20480 -genericSTM32F103R.menu.device_variant.STM32F103RB.upload.flash.maximum_size=65536 -genericSTM32F103R.menu.device_variant.STM32F103RB.build.ldscript=ld/stm32f103r8.ld +genericSTM32F103R.menu.device_variant.STM32F103R8.build.cpu_flags=-DMCU_STM32F103R8 +genericSTM32F103R.menu.device_variant.STM32F103R8.upload.maximum_size=65536 +genericSTM32F103R.menu.device_variant.STM32F103R8.upload.ram.maximum_size=20480 +genericSTM32F103R.menu.device_variant.STM32F103R8.upload.flash.maximum_size=65536 +genericSTM32F103R.menu.device_variant.STM32F103R8.build.ldscript=ld/stm32f103r8.ld genericSTM32F103R.menu.device_variant.STM32F103RB=STM32F103RB (20k RAM. 128k Flash) -genericSTM32F103R.menu.device_variant.STM32F103R8.build.variant=generic_stm32f103r8 +genericSTM32F103R.menu.device_variant.STM32F103RB.build.variant=generic_stm32f103r8 genericSTM32F103R.menu.device_variant.STM32F103RB.build.cpu_flags=-DMCU_STM32F103RB genericSTM32F103R.menu.device_variant.STM32F103RB.upload.maximum_size=131072 genericSTM32F103R.menu.device_variant.STM32F103RB.upload.ram.maximum_size=20480 From 5bc3de433134535c5577e181fefdb157dc5dd150 Mon Sep 17 00:00:00 2001 From: Roger Clark Date: Mon, 17 Aug 2015 08:44:32 +1000 Subject: [PATCH 13/16] Fixed DFU upload reset issue by appending -R to the linux maple_upload script --- tools/linux/maple_upload | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/linux/maple_upload b/tools/linux/maple_upload index 67acdaf..9f0185d 100755 --- a/tools/linux/maple_upload +++ b/tools/linux/maple_upload @@ -37,4 +37,4 @@ if [ ! -x ${DFU_UTIL} ]; then exit 2 fi -${DFU_UTIL} -d ${usbID} -a ${altID} -D ${binfile} ${dfuse_addr} +${DFU_UTIL} -d ${usbID} -a ${altID} -D ${binfile} ${dfuse_addr} -R From f3c46b084236a49bd76e17c34302b773d97b15ac Mon Sep 17 00:00:00 2001 From: Roger Clark Date: Mon, 17 Aug 2015 08:45:37 +1000 Subject: [PATCH 14/16] Fixed OSX upload reset issue by appending -R to the dfu upload command in the macosx maple_upload script --- tools/macosx/maple_upload | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/macosx/maple_upload b/tools/macosx/maple_upload index e198adb..8d15eff 100755 --- a/tools/macosx/maple_upload +++ b/tools/macosx/maple_upload @@ -50,4 +50,4 @@ if [ ! -x ${DFU_UTIL} ]; then exit 2 fi -${DFU_UTIL} -d ${usbID} -a ${altID} -D ${binfile} -R ${dfuse_addr} +${DFU_UTIL} -d ${usbID} -a ${altID} -D ${binfile} -R ${dfuse_addr} -R From c70df495a42b7530308243a967a3b786817c70ab Mon Sep 17 00:00:00 2001 From: Martin Ayotte Date: Thu, 20 Aug 2015 21:39:54 -0400 Subject: [PATCH 15/16] fix bug about DhcpClass instantiation to save 40K by avoiding link with GCC 'new' memory allocation code --- STM32F4/libraries/arduino_uip/UIPEthernet.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/STM32F4/libraries/arduino_uip/UIPEthernet.cpp b/STM32F4/libraries/arduino_uip/UIPEthernet.cpp index 397209a..70d3236 100644 --- a/STM32F4/libraries/arduino_uip/UIPEthernet.cpp +++ b/STM32F4/libraries/arduino_uip/UIPEthernet.cpp @@ -49,6 +49,9 @@ DhcpClass* UIPEthernetClass::_dhcp(NULL); unsigned long UIPEthernetClass::periodic_timer; +static DhcpClass s_dhcp; // Placing this instance here is saving 40K to final *.bin (see bug below) + + // Because uIP isn't encapsulated within a class we have to use global // variables, so we can only have one TCP/IP stack per program. @@ -60,7 +63,8 @@ UIPEthernetClass::UIPEthernetClass() int UIPEthernetClass::begin(const uint8_t* mac) { - static DhcpClass s_dhcp; + //static DhcpClass s_dhcp; // <-- this is a bug ! + // I leave it there commented for history. It is bring all GCC "new" memory allocation code, making the *.bin almost 40K bigger. I've move it globally. _dhcp = &s_dhcp; // Initialise the basic info init(mac); From d8996970ed97ee17c1ae2787b249faa407710f91 Mon Sep 17 00:00:00 2001 From: Roger Clark Date: Sun, 23 Aug 2015 14:50:33 +1000 Subject: [PATCH 16/16] Update timer.h Changed TIMER_SMCR_TS and TIMER_SMCR_SMS as recommended by @Victor_PV --- STM32F1/system/libmaple/include/libmaple/timer.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/STM32F1/system/libmaple/include/libmaple/timer.h b/STM32F1/system/libmaple/include/libmaple/timer.h index ab87cab..92b42c3 100644 --- a/STM32F1/system/libmaple/include/libmaple/timer.h +++ b/STM32F1/system/libmaple/include/libmaple/timer.h @@ -255,7 +255,7 @@ extern timer_dev *TIMER14; #define TIMER_SMCR_ETPS_DIV8 (0x3 << 12) #define TIMER_SMCR_ETF (0xF << 12) #define TIMER_SMCR_MSM (1U << TIMER_SMCR_MSM_BIT) -#define TIMER_SMCR_TS (0x3 << 4) +#define TIMER_SMCR_TS (0x7 << 4) #define TIMER_SMCR_TS_ITR0 (0x0 << 4) #define TIMER_SMCR_TS_ITR1 (0x1 << 4) #define TIMER_SMCR_TS_ITR2 (0x2 << 4) @@ -264,7 +264,7 @@ extern timer_dev *TIMER14; #define TIMER_SMCR_TS_TI1FP1 (0x5 << 4) #define TIMER_SMCR_TS_TI2FP2 (0x6 << 4) #define TIMER_SMCR_TS_ETRF (0x7 << 4) -#define TIMER_SMCR_SMS 0x3 +#define TIMER_SMCR_SMS 0x7 #define TIMER_SMCR_SMS_DISABLED 0x0 #define TIMER_SMCR_SMS_ENCODER1 0x1 #define TIMER_SMCR_SMS_ENCODER2 0x2