From cd4448b330ca9b27690a7c78a94f28177a33a890 Mon Sep 17 00:00:00 2001 From: hak8or Date: Tue, 27 Mar 2018 23:44:23 -0400 Subject: [PATCH] Updated to new CPPReg and for the most part done with performance comparison --- Assembly_Comparison.PNG | Bin 58155 -> 38577 bytes Performance.md | 20 ++++++++------------ 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/Assembly_Comparison.PNG b/Assembly_Comparison.PNG index 53d06d15ac8cda5969445ab28f14529e3d78f71b..29b5eb1b2f5b20e54afe58239a88faa8eb11c615 100644 GIT binary patch literal 38577 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 literal 58155 zcmbTec{r4B+%`T%$x>4&3N!WzA+$)wSYzyDsgRJAEQu_G5fw%ldlZ9=y~vWKG>Ty; z8AfG|tYc&eV>dJJP2cBvzR&x-?|b}?-yaSK?)!7y_jP@)^E%JZ`572<<=%GM2mH)= z&)}*r2z01<=W7qiyXYneH1-jxt7R25Y8Yn-rRp{p8OxT*ze!>Zfss@`c9bA%-a z0_FS`zUXgk-waOWU)m61Tq&i0E2P_66hi8qfuj3WDS?(;~>z@J+wU_`re&C z$tFNRnu-tUAW+HP|N7+yp88A?vogXWtP`4lJo4(W@iB)p^8@dM9BxUT>fqmCBE95TNrTG5x4}4OtVvY+z+aS{oPEevY(E{jw2Beh^E4K3%t>h;gh` z+S3?vC-l#|f%3444}T8KogWV@3HKH2#N)VqMB$)^CHx7H^FI6ARmC+T#gVqstk-t6 zm!6z-5;B}|8nabWZufr6SFT>LQu#VwGJ9`mU1T|1Xu1z{f9C=oEkM;#6J75*vt<;Y z+@&E=uFq%;SpW2yZoQux(fp_LN%w85qM!RIY@i~;eYEbm3f;R78JB*Qp=63LUkuf} z3O#g(>^87MwyV9imFhX8lRRkSBr=Gqe~t1gP`v*NIp-fnSm{_NW1%$LWqZ_X*mlErK4yRClXd@2ChxeKpTfk)qnYYW zI+`dD$hue>E=!|LEJ)kVy9vznK<{CYgW6K|%i*`3i_~&zw+qW4V85P@I-s&r~T<{6%qf>W; z44Gb)V3!H>H~T|Dr|99&=po-A8z3Kz={j&B-v7lF<6-b-CiDi1U z`w!G_a|JIZMGZaZgUCEcZ%`H3@27wtk1@Tz7{0SvEVWQ4#q2O@GU1hj``eY%CTKcJ zi(FY6>4XKI;Az3F8N}$u0mC7uh??5&t$3CKa&EIidMR8_X^10umJLB;QwlWo&75Hy z-pJuJ*w8fIys)Z@;yIFWAPj7DfUdC)zFigClzC*nVn4MB$X&@Kb{KYjH+5u0;j3Lb znv(reQoRPwXU&)V1`lKff_(=K=src@aBZ?%4&(Ru$YxUV$Jc~54s*-*aUw48THjNb zxSY3QM5^8*=5;RfZ9Sa4&K58tL#k%xKbu&#%wFCD-AE{Ksakc*TNMe7n-(NBs?>^f zKGDK)pVg#1+NZwqxGSQgo&R3^qhxv2EVqk(1QfL)Dgft|4H6(qOK;EN)P< ztJ--$pvrVn8fV#+{?gx&o@ovq(7R~tW$Oh7sK`*}; zDN?`B+}W-DU(zq1&4Qd zBFDx))}Qh))_ys7O3L)5TW1y*v0>X1AW-1w%=glkP|M2rAo3$Hqb*w1Jv|Ou8n;UnMy#CBcluqL7+hmlkL5lX2-ilxZZD<$I!c2DLEj}M*$XdfmJrY77qN8C3vTHdKR&R zn>Q z=CImg8xu&JVtGgVRYnNFX6+lXeI z-B8<4y28~wuFDa)T( zNs3b}-ty_F2iv9M@H6wKoFxbRoXc_%Ig`ptG+mW>ZqqksIfmLTmPaw?he`MA!5gHN zr;Dp43$}LO3D3e@;?y|j2nD$a<|H}uI19q@<8hcUa&hE}ujtanu;Ab2eSM0J-#BGr z5r-SfHqRQ4+1fR}PI9<0Szg@REy?Mg$Eu$T$-#}&RhAeS!h*FREMEmff=K4Ck~tE< z*KW`|GE~|WkBc_yYN2WSQ}NVP)=|M#R!KLi!~mR{BcpZHX;k17=h9}sr?Sr}0lTob zr{}qoEl+18nkp}omKNw7Ca|gy3lqzM8j~9MpQrbNQJ-j7udn9@0`BoX*Lb1Wc*gcV zv9={mKD>D0yi#FJwD$|9x3@L@I$_}r#rtXZ8w zV{^T2akhg+BU^hGpT{1ICz%?4gE>BR?8XRfH>?QQks3?qg%+YT4!4q*^HGkjO{ru? zsl4)HXz)|j{7qAg{7Bm1mo*I9Tg}vvkmB*RCdhm%R^&^usL~7nP=&gM1r>5vl-AM) zC}uHhAw)m+Ql8bx$iZ{q>R%@h!bBTI8y|07LemaT=2IQdVGyikgg}_7;%v4zFYD!t zP!_P3RuKj4sRAf1bZ)sRlQBXr;)^jg?eQ*Cn4XDoo|{WC`HfIjqgh!#N8~WuPG+$C z_$6tG9_sjwmvs56(b`eOmsWP=o5!-s(r3-AhFb_NM5^0YrRSwD?)I+2R_n=mNs1!n zOr4x_n4Qt#QX&-(8+}mRT2HF0341$Gd*N7W$cnE+ zBl?<0Uhkd32IhwdNkKv*3u2#Jf|neB6x!_~kTGpKc@c8&taV5cc2HW;&%4TzF=N}N zXp_CA-lo{5=#XDc-~J*kqyB=aXB*74Z-d_5=*80?+k)Q>9gqEhO*Xu5$(0n21WC(u zTOYXkVPo8UtMI;up`~(I2VGyAq=~tK7821v?9Hs}_#T7FWhHM$Ja&baH{8!rE)T&u zcCkh=2&RKW2lUlOp5>ycWtGxap`_2LL) z8uYdL9UB{Y2Q&<>xO8l_!4bbkiG?M94!h<9XuF};BHmbSh@@=@RM5yP_K>sXR3XEM zGwZf`sM|wXyjIu0r9NcpoXE}`Ib6Etc$qbq#KqwGR$lL zwVO%%tWfvvS|0C1#cpJ!5&BSV7^Dx!Mhn;MkS&G$&8I>*NNsoEPXHLlyi_IUtMW*i&ztmX44mMgq$IOm;m-^Q{2A{4eFC25Bd$bpR;|BE@S186wOO!TNHwG^ z#bC;2BM9D4zrr%`6Ak(^eY2I@#`iZeR^6c7Z5-|Kilbtm4Zus>OJCNnBsdP>Q|Mg@ zY4D(o$am9EN?o*lkJ576BU5sg4rlU!quJhlb1O5AD2@B|xDK^~2j2B&Azw#ktd?_< zt>n_a{Luce8-A9S$^%PJPMaq`>LJip{EbX)Te7C4>f+6 zO!0Ust-1!kk2Ps2dW=9HiWn#&3v=Jbk`XNXO!Xk%4XNlk52?J;#_4 z_g&>(T-i)3UvmUr8&<5Lv;sYql|Jv&g)}B>kp-$5E^oX=yqUjj$n1j<))q@YWSoOl z#JaJr;rnX;vicc+FK5o=^smse4+k0Z9u2qzQcKT*maXhJ{YH{I>L49jC~}w71Fh`0 z{iF6-SJIJmTC2GCOr86=1vV$?t?s-08f$EgT?}ZE%Xx-lX5T4-d{{v#^%qlkNry@l z7_9&##n~MeF5UPLL3A5-^ewAfP@Kyio28y6k3+a` zN6FciJ*G6TyzknI+!n_QZRmw>Qxu-$>svo?mddgvvMd!n{IpeI8hVeTnAVAq=N<-} zvQJ0C{;VxYrowWoLr~*$8fwR_+W!cZP9pPIrzfFo9|FIbu`U~%52rMagKtfY|H2oP zo*!`hbC$e_gs7*%a)&z63fe2bCwLof(NlHmy*Ef<+S%!T6l|kmz1o>TwL@jtfv<~~ zvPsX+6agGv8a)Cgh%vJp5oKr_a;f38O@nMHM|p-wc6HchGrsibOcl0;SUMq}oPOcQ z?fcNi0w+sn-jaGtp0c41Uk*paStz^84BPE(Ysbw?aY$ZzgKT@-NL*Q@i5>4Zv+`$~ z=G@tebulUnm<@BT&Vw5ez3ci6rgSD)fgZB@J99;FoeBtZKA35yCRz*KO^(~9z_<*- zUq?n8i(Mn@hB&|0tn(j*Z2kvO9;07+&KG^1zl==x^`Wc0?dCLP^+5NvWFRzps2T;K zgJjoLJ)du8wogjcMZOKGHwX zVP6TiCZKQY#r?3!&9lvDNLAQCHZ6}@aBe^mevWjDS*YQ~IyV*YAZ!g!8q&}_i(Y#_ zf&pu+gEm@d{IyQrD<;;AHL^E|IY`&jJw*X>8~oV!@Xvq1qhi=x{uFQtY?|=h@zv;M%0GZJ?GHH z7EaeW;B*}98+?(B9X#JlO?nH}5m^-G*Kry3YjIw6twC<~d;G4+Ag%hoKySINEmBF7 z)*H3wOG{6qJXW*!d3xiXzNtOCb)M{mOTKt6I9vEuFy9McwF-;qUBQW~%z=e4%S_t% zSS4g|hwk8=YR*?&#cmmR(Uej%L4^Z+FR0@SFYK-HQLR5^v{pFPF8n;ceTHdz%*zKx zEPzqQy}ukW!)NQ-IYVUS$1=pebRX*;<}5k>o>aZBj&x0CD%no))K%j z;OrawG*N2%8A@HyCrD#@m{3@br&c43K}ZoDFfgPK^ep=_K!-!qAi!)tL%MZQbjIiZ zs*LQAB}^cTv6kovnid0O#fgAIcAySMSg#G+I=}eEk;x0F9fNqSQRgkBTjS1T(h4HJXr~rC0 zruTZV$#xHdk$lY|>pu6cq$6@Ro9DQLrKDx`$z*brts8J1|7WojqmzZ^URr=s3)>M# zCF|z*UtZ9dngL{PjP`}c_co5{9;^7ZzI(A7s!0)7ivE5!IoK=rwwpVD^J(vqQpnGDk$VVLmHy zSGB0}(=Zsbk!2Qwnz-krz+(2sm}wxm)!Mf6o0U4zet4yhjXjzt3{jDvpLr8n(DzpN znVxya9?)U3XOX7Z$Rve&1Rt~C%l0#zFHw3lo)h#;%Lr_}uMXTn_=vgm>{oofj7BIU zyKha{4{AU@J*taG*17Ec=-NeT4!yF<`A@8-57eA3O;jW&Ox&bNgb$>UfIHL-+#W5m zEQdH+Th1yDyhtIKsaG?-TXf3%Jkh^~eY-+M;mwbMQ86Mt-mB4r=jV?2Ca$_T|12Q2 zyc_BBypc2=O>dB@@nqE3&0&uFB+MyBZ63b<-X_)qhe~9CJX5LJ@xtSCi2lL>MDQkQ zY&7b%i|uw?pGb^8h8cA}I-rT^t{a9GXyK}79VHKXo>bt3t&yY3H+VaOKdSS ztzd9T!B?Y{tfeMK?!LO#4e?dMe%a=Iozn4j`w=Q+m1x$|o4swb-*0v`UR zFDaS5-Ar8}GCj5BpT$Y7x$0AJtI_V4c@u?Rw8WyCqMKbD{(+M>xQ|$$ z#BJUYHT3)bC&c_~v|-FKnX1s-m`jEabeoW0-ORiW8~xBY1wki4sK22``BQH#epp}y zNFnSS#iii|^0LS2;Si?$fVS?@SSk=pa?7TH&+6jKq?dZ1JsgY15-s70?3Crpi;vvi zPPCD}tP+ZdumoHVZ}sfgqF49+P?8Cufv1Lk3qC?W1ICNb-whL2y^lL zJ}flYS2(Ctwf(!O0Xcz|O1HldVxazKgwVXy(HwU4DLD;NuzABP*!yzsVkPEpCR` zncgtQ zcfC2b*ye~Rx=E#d75YB@%rR7fV3I~JLa%wJc2Sa~;5Lo#S$MJ113`FwqqZy81ZkX{ zk)?YrVpj7F%?$jueyMUXH4<=`JX^|TejAk4i(=wUE7wYVp?ki5i!?Wz?Hx=~IYPLT zlB5#vCJR4gh_Z72eucs>T)2W#B`qWc2%b{h*?(lb0X8oC0{pmj#wl9yHJU|5yS9@N z_8_P6*u7&1G3_B2nEtk!8nnbKgB&C$2BCAYenMnFTeEW$9+tqf^{6+ihfmB1l@1Ph z+qn08?4o_HkKI6R?Mwa?2-0u;X)#k*RHm|VFVr=pVdLh0Uld3QL(xgiYTWDwa~qn8 z9$)3Cx>yL)PNSdJ&RMn18BoH>o$*o`8MbsZGfTiphFc7#l+kr-p-?l8j8B=kcKid{ zg}UVVfYC91blqraptWAuuK}MaHucM>+rjddkrB|L#{;!*!Bq=tc-ZwhPUl%_t(3vn z(Tc5C%s&A)4qTFs~k4UF~B`y%zaX&>#l@@pfrtb5Ru(57hpySfCUhm z@7_NO`?%J1?9&bw@Vun3IScyS;oiEERI0j1aNxPUC|pEZT-5W;qW8pi{m!98wB$gc=Y#1zazVsS^qtf_zwEEL>AqimR%rvp4J71Z9SS$_DRGy`QE~X zX&`}|nlJ{*_eksyx$%X~_g;2O)wy`_&ciu=a!^!^Rgc`^olghdJI=YNuVkgM{)^3r zwzTj`b9Cp_1FF+i9$R>wjhMR}pmjD18;W}k_h_DtHVSwL=71PGOpFe!kQ{ACr~1>bEmyHrmMS1Mpng z>SfUmcV!&E#$2swJmEG{=QtD`gJznm6Xp~c%XQ?hwgH4ir#|RmkJ{<(LZUHVgdYAQ zpZbfC{q(yVef$for4n{1+VfeSl505K;E+gSyGwRop-UO+6X&*QVL*0uxzUO*I{M7WL$Yny#)njstzvi@KC*@nw3+FBE2`6lT-akG zQV3kWKBp1Ar0s?-%mHPPR6Si3s)dpcALa4hAluppdlk4c(|MhnDWX_o6PATBEwj=I zE$p^=u;xxLo|yk-?PkCqc4j56Z1pI6#P;ke_@MGoFUn%g3`u?Bu`OWUVVqY=ozO+ zX`-Yfa}CTyfE*+rL}HKe+nH)7c3Z!AQ<<0Ro=`k-kN2kSeJey2w&5gAsVPrY@yB^t zxbN6?2{}pl;A(W0O_+x%wg;4C-6~IOMfCBhFo6wwc#Ia44R zz4}b{>?gw0XtNi)OHoo%wRIZmW{@OgKqhtt(27-nWUpT|r-|LZZHzoTr>Nt8dqj^| zXtFcOBG%u7g5t3%lI;iag|*d+aJS(ysqn*Zjm##fH-yfvkzO-z_xBT;GQM@3MnecA zEm(TPNj*==@*$gJ&|4B$EAX&TW<1kf4R#4Q@N#=8mwk5@K3NLhNq+o%E3a0`^OAp& zqH=M@Cp1odJrQS{Ut~de9>ZxbEh(2q$CF389Zjgj1C$=SYiYP?xMFLA{GrOlmLf;g z$A%`tOp?qR|jOTQ&*b3b6kBo;FEKtujCJB(laf?g=} zFqSQ4CZo*s^H`Gpz6_Z+V_kbh;r&)7v-|&!e70bRC8(f`)?9;!oyR|)MpCM_UPx3- z*nz7;>(}4AwK!5ZmIJbnLhmuo9!cE$)scBmNXQO4NJNCx4pVI#-Hy|`yS6TFP6hN6 zB(L~PgA#ClA(H-k|2}0r?Mgm1`r6>F6`o$(%=ScF)Fhf94Y~ehWm0UtD{MXZqFo|x zN{XcYWw;sPys2(!jk0Q?-u*(nXz#f9m8u`ez)YFId(ruD^9o-wq^EvVzGQp7WYy{! zL_$iR=os4}9-M7=|C7O&67HpDTHVShKaqWKf9&|zRsYxztOiLVY$DhDmt%&JGZOt9 ziD9&M6uQUTdp!9Sb%gcdmaNgt#&KG^8sV@3_ysZYF_{=INW3RH#fV3e6WN^m`BcV4 zdtrZdLW3f$LT@t5JJbtlQbR9V_l6u_(>Le~a}MF9QSvm5<2s5yw<;`x!wOwyNoSE} z1IsVKp#c{i@d%b#OEY~LJh|}t$++2EZ>z+NDlZ+EZkqnI@I{AbRj)fLDE?J>#zp&3??IcxiVH)w7fnKiLpckiv4Rv=>69;wAk(vU%++6JggEs>|M z?yM68l8wpw4FiTQ%T7;8H$CM2vu63gp#IS;*7ExJsd7Zs*<&O7XkvR8yPItjWlgPV zxm;$O=Yx|pJdT!4e3ODB$z)C5sbxV*b~axuJFUo|gg$`|rJtwYw+Z>13C=0VS>b3c zo?bI!OJgctzoR31um*CNT1SZZCJw)g{UYaexn4$AUTgbGNQogfT!ZIwWG%0TRqBmC z>to!Ge8Eo*u?vPqHT1g1yZQjTM8$-9W*v<>1fsQ@^%LhKfYo9U@hyJFsA1m08fjZp zjAaykmU*lC8eh<>#|9dviD}cBB94?~r9xP_pQH_{1O6~(M6Mv6K3yJ98v7lLuC2t6 zxs+>dP|r(>=+F0Z@MTC~?(!BT^?ClC7h-x^zP?dBj@5~f4 zKk2F|$8K#!chU7w^iXH6P8l&uHUbqUEPlt*7fv=)CH-1i!?Ms^zX2Av?_N@GLh197NyHvjCb38;ZO{yS9ci|@R-TIzzL1G;pzJo&#bGXRQ>}oM~WMxX% z5didnTYLY)my(Q<#Q7Tr33U5++reFz(OWcuv6-d^i%~-7`_=^L$&ReeQ-c~bbKua~ z17bd;KkQs;dDh#%c9bq;@Soha^FGjau^PIMv7hpn&H^x8b#Fmt8X&^|;BEV_uMcX8 z1_Z;Hqud_Gj~&hvr&r5~FYKWw+1GFpOn^8qioutKUcGNLTU0ty;5uX}HdU_y+HVkm zr!FBYV$)vs`B-L-ZyNooq5x%#WQy-K^_%iO_sH{4jg8}kLrr6GnaJ(Xk<4MqOLu!O zT~TKUo%``5*i4H>tD*}JQBS?_rE>|{?$1tzNFlOPaLdjgQp;`TR@OEr$B5j{bb2mv zB!Jn~QxWo(-bL~_H4PI<#K}1i#sh44YdDh5e{-QgfT$BiALks6R7f&j3tcfprt-|@#4rwUWp+K->h zO4y+_?3KO+*_5i#C&t1Bc;hP+ok98Q0rJYmm#{xWC4D^BG^{`5vZ_ii2(+Y~J!l&Y z%&Dl(iQ$)@vE}Y&mnkZ6*Gbu?B*=glZU2W4^M#~&jikCa0hg@3r&+V^okuI~dNzND z01QRK><%GM>D!whdn)ECx9g)Qd5=k60kZJi+4P$Fa^hIG{Nk_7c(Uj}#M9{Y6uXXt z(_|s%&VY{+A*t_&k8#u!c+ZHz4FhNW3n_e`fHddrzC`l;y2vXA#De8=aVYmiz<>=DR5%t1x?nQuqqJRiRFMOivK)UEN;vk696 zczL0>FRH*kd=yVQJ|E+m9FYW(Q0L+mx{kVCBzIyEq(`OWi4kZ@8NDv4=RD2A`h}45 z`=6~yv!*v!ASrYYwXduF>_>AWsmq6tQ^qSp_0fx?!8x@~zx#F#fP2SxMHd@|5S##GK+ONFexIDAe+nxjSx?&Vs@NxNeb z7#%^$8|&2&INHL#`@CXEESdZ5IXvn0EHE#xIl&g@D68!OftN22piJJULY@sD^mgC_ z4||yy7sz5m^n_AzI{Nnyke@o&tH0^K?W)ipy&Qj~?DL1%SNuu1k!X(Wl&${7Lp=gf zJ1KiSp3Xj^HfNHrU#Z1qs;ZPxqMlOzJOvlv=6ir#>TEb!TAWnrqitLq($Z!qM%%dJ z5qNE$+QMfHot8_$S?w*hz=6SSV|o|C*7cgS0Bp<87ty6-p9%TWt?6FFb6YoUxM z#fAxKb5fFAR*nMX^Fv_{3n<%FPh2@lEBi_lE5=O90pjGX{@di)GinV-Kj@RwuPXf} znwnVM3t!$bMpl-j@5>}IyLs%OLgDM##006wl(ETnb z0oPme-B@dcoRNgPA=LJQiW0Sq%y{*Z<^KV}@bn46B%JcrsIHU24rR>7B;%CZ)7W+x z4<`{%+FnMme2W?PUY?fRQSW43q#5pU>`ruc=WXKlm_Xynw@_35NcJ7ApCL#?8sg9G zo(iI^jy%?=I<&YaBJ(5JnyKY#M>%_3-hFu84~4 zIHc=Vn9Tz1Ha)w=rmT_8_%WRy*%qx8%k8|~Dj6CqcNd6M-MVpg(XE=lg?y_e*glL? z8i}e=fMUuKb;)yITDE$|yf$y3Z(M8mw9>1q%XKCIv8DzPyz-||g!#g9=}1*9{q{6N zM4ly7Q|`H65q=euqRHc2hu*8ibWx?XR{^gwF#0%f$qgaET2AftH6p)f-M`YX(s_4m z3|82OcD|2yD;y$cM?*XAhXx(cpogs!C^NDmfz* zf91_YL}J=pV=~lK;5E2VRJ!ln4Poz^T9;V{Rq84#)~fI5QCnpzXnW@#7A1LQyI^Fv z6?T=(qVRpSO8d5~LP>rQB9?&jzpe6L+`ER(-w%dy#pOl5UB$r2U$Ry3Q6*}T+1s;s zq~Q8kDcj%>BvxLw9A0prEGRzaG~ zJ7AWdPfgmQ6_~SsFu!~v>DyCHimB80)HlW(<65>#>3yD7D@xzfGbt*YS-)Vpx4g5# z&xsvoe%8>EBZ=Km`lilVOInc;$`Xgz?mB;FbDLfjVrqA3`fT0S(M3za1&#;8NJ{e3 z=Hmohw*wNe6z#2C=Eo8^TS`I}E=~VfmUe)wJU5XjB@`^DuI*d4$T|#lm0XL_N zzJ3h0mJ;+&Z5fNgNv|GDg^Z-8dC+{qdgBeTC3L^#yTAFQ;6c2~yBZ>TkxwQ41>dps zHsimQRiS6N*I)9!KW}r9(p~b2sn(^=t|#GQFTjKHB`PQ`^Lwneb!z`#ba4#o?P8N>WoPctjYTsj5rC zPoZ$x_u@bOUVyR~{67HAiqcNp!HPQ3R&SnwY{>b@-&6o*zNr)zJ_W>#;`QJ^W)o59 z;AT01{UzXzwHxBu|9LTJGk`O@s3Wb9iZIm8zo-n$ol3G28Ym{>5sjCS0`qM{KzoYJ z-|LHEt*N+%T@W))qQ@dKD^`Exb|GwsSAVwua5_0m2T78lMQx>x27>%sf<4H z6Mza69m?fP_iyKR*A54n*l$np51MJB?CY#sN-yi73_drF2Zdc5%BpO-fG>Oj96|%e zvkHGD!L?X{r;dFV7=6174vxa(P+{DYD>mQ+m&Vib2hXqNy1%s z--b9v-}bO+AQ6u=*8ee*QWG{~u6w&It{9PzS9HAY*rj`wwWE=>>7fNV_@)C-B8XzL zM^_slBi0b{%P8e|a!$Mouh2e9kBPJ?>a(QX-1s`GCuyWm8FDmkFv_5lF zOX{MT_iz!UaeKzMVtoKmjGmb#JTN$Cv-2>XieY#_qj;b0T?}eV!3mQEtR5!;>@NZ5 zrEEb-hV5jMJ-`AGN{`-M7~Lv=I*1E&Xy{nE>gQ|u^Aw`EbO(*bxf!XjmqVQEEu7TM)(@JxLRWXTv;A z!JI9(>9Be^<8zbwFccQ2w0-j~5IM2XQ@x%C^Get7AK+psWzr{h4mzDCw|uwhlRm|{ zlyN@b%H!4a-Mj%5yl4SV&=$2c4{Q`M0OCH)1`vDoC!=Z(7?5wO+@{_6pQonIUP=#- zR;occ_Q~5?>G)5!s5<|b29Zu@5m?lb7F?^ja@LxLf`qH3T zJ?$k;!kyN5#2xHLEcsyjjV0~a z?Q;H7d*^#xKK0vWk23M~n1j|2D0t~2{@j5c#R-`&0cZ56`T7KHNwGoOE~sj|p{PuF zIy*uUP|HJ8J7tC4Qo@XnO(VL&S!`C(@Z`lyx4xbJp;0mUIKBe9l?HiY{nH}#d7Lv$ zNPy>2zco(vlez7cjrNB-rXj7IZhyEmTUE41By{jZ{4=bgZ$-3ZSyE0? z=92L=HD9Q8u){mSr_%E}qI1R;TiD9b<8&pp#hz$=e&oFZO>nEi`)|R&ILNT$jnAjk z=?;?^KAs0pQlVYkYGUwlcJY3ogyAyw`IjE5Iwy9L$a~!SZH4Sbu9E$6au+h$`%{I# zLkIQIO|qta{y=pDNgg(_nJhd;6SL@ksYBt*D0fM=p6u3f#0-*lO~_4oxU&A-`_o<* zb@tM0R0T0|Q3AB?2Y&B$zwK#;Ye6>i{ET*f7xpz6}z^*Z{mWnfQjk+tRzZ2sBX1y5S z2duLs{&S8krSOu^$>L{9pvyrh%#Qu?<4?#WG4#q*t4@AYPOg%aR&}FQG3Tm-ZU_Y+ z>*}|Lh9+}$7S}BS4{Ktyl znG7jex>p}_h2^DA;J0}I3tE>A?c-|d@m7NF#`tI z>tCPJ=(v=eAx|5X7Av#~`gU`A>_3LjZu78x`Tb7=>GPRh+>28*AGGwhA?Sy=J1Uhr zp^3<^JgdtSV*doQjyVD7`1Fsi+W(Gq`+!;YovWyqYwtxvOx?@=PcBU>mY(p+;vaM7 zn%{${$oI~ayoK-0wm}hG<_$xc>c#WO=klOdty5W;6ZtA}G7vO&scrXfq!lNTd3U1=Gj z!}hhh(uusOxMTm3eJd7MQPR;tcO3I&;Wx&@>Befl*yxs}q}Sg6OvsLUH#;;11-qE&Yv^sjnWv(#Cs*c%h;6BZH>qBU=lNSiyq7yrn4)@ZPod zF4BN*wtv^I0V2wiL}snoFdy+%AHu^Bu6*ygcX@R3F@U^2dcyd{{+f-}uAfTudbC@V zmIRC*WuUB^{q)a#-iUfrtL~KtTCoIw`-bL~mi79;^}E{JEwW|hh=%3YCpDXPT!W%p<+FI9ZC0gSBZzM zExKC01Ue5vl;)lm@Bu(o=PxLUBtT@;E@EQ`Zy7wiMf_x7|1q^Wipa*AyLgJMzHM8v zz6lst>)f@rHu85Lq16m3jvSJil=)@k6u5A;et zr2knrp8bc!5b;F6JPKd&>^;vtR^1y2ETVI1Q^n3@5%8u<22`z&o1%ClTN;q$HT36I zpOY0Q4`)XK;TA)*^iBq8fcMaj@Bi;vXbh8ucOyI6DVI}rYl(g)D2=V|&TsC9$4d;& zAfv!XYJqo5&aTA#-1pahdrBkfPVG7_^l{(d>v8I3+Kgtq@ao5W$=^eS?=s`@MRelS z0atTlR0O7JaecwC`{mZJ?ZP2njE5`|jJ$H_KZ5?-c?4+EP%wR+7xMBQo!#=KZfk2A z@89a76yV;hWj*pM?n=s|F5`j9V6I>sA?@$tq|-##i}gTv3)qROxQ#`brTBMoL16B zytI{yH>=0mfJGixsQ|dVaP%F<)Z>-Cv<#2Gy9k0)Kx+boS0NM&?D9`d=z9@A0N3}w zEtn?i;|(W-s@88!RE&jmh3_suRzd-kDv5krcipP zHR{`5{6*}WP`z+EJ7wJNzP-Vf)xw^ElCv;c zyW9nZSq|835d$#xA7`|{_dHBp+y=2&(&zv9x16afEw@FdF-YB>pRQ;lawIJG*nY;) zwe%i`GxVmw3mk6+i$%V?Z4nT8YwJL6GKh2Nu8=CUp;>72y>1fRYaxaKnoOM?XhFK$ zw!GqYNjQ||wtneBii$db><-%x0V!#}3F(ocU8tpg|0YXbslCNFI`+W;o0jl%L{d!b zDyO8>;pAUbsgcc~y0~lBaC=uc&>5ppSNYE5@dfI$yFN2-j~K1JZ0UdNwOj*8o_XtiXH0C# zz?D>yeb$d!|AQ@I=Ohq@sMtRz(XtSKJjv>z`2C54B|mQah~4p-ns_XU1h+(0>MZf| z`1AvKATBkR9sc*gkhzpW?A%p6M9CJvODL;Un9E)jYd+@BXU=#o9e0RNzSVOUiOT);|XEA-J%QypsB`4wb+7zL93^eoGJm9$Bz7 zM%4hTFwbqg9gtrXM+8dNG2p5UG1(2@ne7+sSAFEp&-f&%Dvit=KKkc0{rAq9Gr|&V zu?w^WgEYv-)^s%qDz{%4>L@XaOJLsS9y|-%Zo{# zDx?3=xlyxyJ5ee0NUqPOq@MKIDrjcT15r3_-C*{g6&LQw#dI)t+ea>rYy#d1z*`PA z{{;xiak(8hu}3J;lz>KGw>jmCn^yO4myW;r8)nBI1@b05y%TU&6%%mnlgq3RsjOW> zFiIQa0EQT+tO5UbLr~IDW0~(SgNP!zIa2|*V7L223UFQb@3Rgh481cMLZxkVv1frO zmt&PNS-YMB1{rg_e~->1Je4vz@(8!1Y7YY)Do+tZb)N{0IoaEry>9)h$S6Q$9s>Q@ z`P6orBB7y^P@XgL4sGtocFF=kefdLFOOu`@%+!m7qgxn=~o*jH9WDY$-d)K zasUS=l9qAIx!Ni^s0{oNLfJ#B&p9UaL4M+4pMSkUrRzWt|6$9VC ze;XXTAz3C&z`Jd6eGn`fi|m7}?s#wt#3cuA=b*kYBX!khH6J9!;h!{SnUn8d4i@gZ ztnggc_;>!2KexLrmc|`Xfa8D28ogu_yleE08h|Gi8&mI;eK^^3xjRJJbHy`ZugY15 zzLM*Tce>fga4KXV>ZjRORjt{0)9`U?Aeae3(Dw4*{&#E`4H?E%wc5~n>vpB>a@xXe zF6(|yK7COw|H(ow4LlW4uj0Hf*`-sCNt|-&&Ry@0d2+j9rSCPpZV^zIE?<>=Vh2ox z`PR%`sgL>W^5_#N<{L$p(yq6zv*XRGTL&G0QdAnnWW@|`oVugbexZT1#D-c)hgi*pW};N#3bZf2?VkUj|SA7jthO2=)HH z|946YEkuMES;v}?N(_~41{wP`^WFk(=jh&miu)-ulssjcLs@TL31~+#>ya0@pVskDhDs|WOecrcAP&R zKD_ez79xG_K-gQn;(csDjXp->MZJjQbWH(`lL@wNPCLK3v=pys_i5jKPK4ZXY0Ssn zS<*`9PCvf3#?i%xxRq#MgCk+5N9Qp+Q9*O?4F*@I6p@&X~K^4;xIVe)GDe! z2ZvL$=37O=7atR%##h9ZZd29Xo#sRvR;C{AT4x=%!Cn_YxezIF*JjJE4;OL7z!Wgi z|C}X=DNx7J(6J zGU*bg%R!D`_Q_0v0OH&&xv?+l$vHVH=7)HA!|)1dy*C1goKxy1=4)r=$CrUE@95}^ zcw~K1{+E-6BE$}p$BKB%6k<84OMR5x6G?p#{az!LM{qm_Ho&Gtw;<71e&q4+up;Ji z%&Vi|kQn%6G#Q#$yh$a9@s9Adx}8#(`f$|y)xj#Sc!ui0prKgzo9}c@9RS?XQ)AZk z2HD~M_1tUQhj#^uH)o>gXyTGS3-DqEv0n3n!KCpsOM98`N+6!RBc#s9fciTqi@B)Y zVH+M6#}E!%sd0A?>1E=}UrOSUW6>uJet^S|pOEP!i~$qhfPJDx#OC_g=6SP|X_oE{ zov|~FJ1^rbFS0&1R$n)#ha@W4PMa%&C7uHx~2h1L~9pU^js$+TQ-* z0kSM+Po#XiKl}Q7mK?9hn{mnMW=w%E?E8hM5%MxVys(e1ahvaXtjl&KXfR8Wr#zL zLeyNDhO#TAwJrEPl4VPfGa+Kf;Yq<^7coX}f)_+hp83Rm5@>5_R&Yk%V6k2?4=d3e z%PQG-_|Ad%v~oKOt@>aNr)l?=sgx5^8D^Yxw9>TSB6to@*NC1eI6D!PTP=SfZibMR z-C3PF7*JAfHF1B|@sLfPx@7G2VBvGj`hTC=W$+~`^Nh_P+RG(cr!~1Ltk|ZlU*S^_ zJm@eJZHkpeJx}_aoF5WJP{(KvxIv=&^i4wydYO;;GC$<IlYI5}@Gf<6q1i8fX?OzEgb|{5sPWjp0q2N~5I6@Y^ z+G-3l^XU#*@1`AjA=+9vu8{j&l~z<}G{BojpB*J)dQnDr;N*vE-giTy>=yYatv4oT zyGma1CQoG}PM9FxyAn(ET$Vz5T=-zeNOih;x&GP%SjzpV`%@k@v8h(vNNv~ZqVv9y z+?37{u6VfXsQK8EGxEO_5~E3sgX--xI$DqiadVs$o^I8_PQ)I#L|i#nP8~L^?b46| z{2rX%j3EJJy=X)3noAx-3#j{E{6mmP+2cqX6q3_hvfo8Ryg|$HEM>lcL}t=^#moQI zrG?w>|8(gC&I!P8m%=ak7WcOpYZeIyNTEO5xL5c&{b--;oV9Lmk69TGGsP+BVmRoc zQtiO)+I^)b7I%a!gi9-f)?iUSA+c+U*nAXnh1=VY2OUI(M?RoHi4LWo0MahV>Uvg+YNQGvBCw4eMOWBdD?DwLX(yy0Wy|1hPKwmlCmqI*pg4G+k1}Ng zuXO4849AeB7Ul%&xgjloep79?E;VgAy`5OBj=dmJz2<7@5eGX;vg8O(ATD>tJPm`v zz2)flOIRQeel8DOJ`w|)ozB)|$_xYow5;~wtCUjt{3Rg^G{RZ@B6l zmyfV38O#ONB!GWZqRm5F24~}60Jqb)<;B*Gj=uQQoRVEffy?KL3>p@M0zKJvAzk9F z9}1+bW-O^>-a(7Io_Q|FTT&oArQvk{m!lJ>0O6x{;;sAY+t_4pV)9ww^1ftS65LMz zNH6I|TfcOIGqEEwwZ6V{jATo;7CnuwJC5q;X5D;f(BVOmM@HY02Ms($*!6u(?pV%d}73`>HgzRPw}xA0bBj?cRFp*>DvuYSy7u8($rl zS03cPJb-jtS{WUl^y4-p{I=P%aML&^m&Zzbsob(Q=Osx7XBpTfh=@K?F!4O=aA#)S z8(%M*3oo5u?mj>>381T0+Q7vnlO&FIG$C72{@@XJqyp+>D0q8S3Be z8ErP`)p^Z(iov0gkZC`Ul-@rwa^46#cp3**~iNvr?Qf6 zF3E_qen#JAV8Kt`H*nV)4=%6)-Mgob2e2^nOBpyvuLHALpp?bRp_!Y6;Uawj#$0K$ zx)@v;sYD?2Q}^3vG3~MmB6d(Cnrb*`Gg`XZJ^8t6IK?kNZ!G?-f*m{*>ye)C$N`En zJzbcfql^r0uN6iBVRUF%E}csnDCo5@j2_%1wQDMU6(Mn9tmx7YgoSRb&`#w3P)o5bnu zRa&S|1RBJ-kej?#`vmw|!T3B0jL+NV1&$-mcYXx6d6m9W6m`8DRHsY!JE)ctOi^kX zz{@a~vemLbPa#}w`!uUR%04IcYA5-(HiO>^JTT_<1#U=;>%dLFd;2nFuI=N`(uhin zqzgocs|4wIMLR=QN(bJ*_-T^lr-65Q$E94jsA0ENOz|7%bb=V`Q3l^1k20%Oj5z!$ zh1__D$x^D_Sth?omd~NS_>LTfVxfzw05gC{mx{s)J?aOZucvV3=L! zEY6hi#;3V^LcKI=SlugL`5R2}Hi1q`jDfj+--SncCZF$DK~jP}MX@L~)H zqrx^P-32$b`5dEjpHfl3xPUqT8CX^Kq5~iEwv?2-p7#zIz`S)s?y#FI<)Oi`!O!0A$nL%Ett=W;%-{v}%Nyz~m$X1Xefa2e1H`NEE%0Jmz- zp#yH(kdxG~|E2*mk#Kc7OpM1`6{2Aj=Nd2V77*4a41a+0?wAwf8nJG6JMfnbL5yk3 zIaw!wa3O#H$<9e|o~4bCThx9Eg7R>dgai*c!Pq!kV>*~G)M}H@`i>{R#_MIy(fjR< z2CvsSfFhC|)!$IW|FXD1N&-L;w>xq$nE$tT`>)5p$_k)U|L)n`>YXjgufVt7nVl%2 ze2MFsW>mMyA!JyUprX3%=d6mB=~w7%t!CXv44+PalReASr$P$SYM@%@3{Kwj>c-0I zKu)+O5rm2LIlK0HW9Wk>X+B_R*3ONXWaqmmA0`c2yU$nlL4`~mDr6mgbu0O+0y_ZK zeouM{D^wmVyqpmCxE##G`}^TOMSWphy5ZH9H6yj*v666Q|DY)T5m-)ox2%&SDV zx6`XXl3eWMz;RtLaMlt8Z-71~f39P9-UGjh{BGA3oZeUw)Dn|t>7e&cds-hH*1O-S zEZE<_S)yfsUf1@ZzIyq9RTbJmPD^M#W4_y6T^$lJGR$I}xKDXjmI1SY#Q{_}11tT0 zA`{14^r&P-6t}o>3~Yre!Vlc8eg5GRxC6{)wCfe_1BEw_6=q^eG%z|oi~OJU{qkS@ zRQ{Z*vCm{NU}|c)dCNgDvgbVJ_S2(Im=e#CBECUN|5Bj83@Jekqo0cMN^%lP2dNPf z-`=KtCZt$BE3^6Z3+S?M`KO@EE|zE^$<3~O%wy$mbYs%gVK*M^L7e6D^BBT$FvAv& zrBgQ7>VBO$#hcE2DrcJ+^s!}IQ74%BDLNQPb)}P77zFOOgp(kn#%oiqaM%+f@b0(k z@JecdCslHe6R5kk5|r`^x_15d&Sfy0^KTE?+om{y`5TD4;A{j4M&Qh7IDl${Y#M?J zJBdt!;fbffS9_9etF4S>)&a~QMI+9tTM^a9!>ly4CTkN8d(d1H6Qo}XzGIhO2_O_) zRXoDLV~V%t<)}-(08mt)7;gxUOcWY_U%8JAC=SlkbDjxLtl|KYM2(~@uq?&EeEnZX zQ*>-<;CXt$nA%zsdYJ<%>k6%wu1X&w>^cSdOXET8KGk<)pmj!vDp6mMHB<7n@?p}D zT|2=cZKo7gojKiJT*B~Ds=odLX3u^c{J!8XlI>63BqT%tsdgl$uW6{pmP;&_L_rr% zHw5k|1Vdtk+^d&(Hn-6}Lr|L5RnkjkFvmKtnFp+LfM#@RyzwsE&n=^<847*!js*K5 zf*8^!F0lb2bn$f~SJo@41!d~G1bb&|(;8#HoPTOpojt}D8_8ydsxw?EwWC}0Qxp$) zz>u8j_M346h;yV)76gx;?en@DL2WQhzV z>Uc0+j@mM!n}2%nlMy}Y?n-^FMojK;sV6J|<<`IPp`!73@%6veChmUMCdPM7?D?Th z+y&Z%@egfc4_TW)z|Vu|74ozj6yyU8(~ow1{@xxY>QGKM*yfgfQ1m@^jPO#7t5`;3 zB9!pH0&c?j(!O!XWky6qs$b%-UP#^DOH7s&?F)`tjQHoZ|G6|luk3bK{0j+AlT?RF zgR;Q`bh~|uBIj&<^>}ldk3hFdTe2NQr+n4|DV-tFVFnmJR0gyGeM)c97 zZ1)H-b}n$|9iQ#cUxvpdY=OTo zuJu-)^!6jBfx@4DZw<8p+_ivcPXgVn*IPUdKCDY z5sYx2bP}Q>az)obZ3jPTwowk$kL{m~3k}wGYYQ}vOA*-vENvP3n28`H+}|iGeXp)s zWhTNK2e0H!k2q4eFQXe~`YcjagiFqKN-sQw)YBI65)Ac(&MI{uF8q>Sxr)sCX?|S} z>{zI2Q1$OlE1`8N`5&|e4Ju=hD%D0@B9SQ!?1jCu+1dm?f4_#%!rhI?uniV@h7H_q z#f)<)46yE%w!(dcOzuqK%4&@EkHPtX zTw;!AfSV&1CG%vNT|LSnlqhib46!jhTm?e1^=O(|iP%H-?>FA_W}Lj3eB2>W=^i4t z-Yq5o_$)()#nOjEY860C!!9sL{PD1eq=Cakhk)X#O~Gg_#$>hdvvTQU-#b6}JgjD_eq5S5 zfe)W2`_z5ci)Qpd4sjP-FQ}DPZ93iE3j+ zu#AEXNHB3p=KR_3>HillpgxY&6OJpP?SvB#&%Al6quHdUjhWjA=JiA#Fr~6t5|;Aw zAr5l$Nc)YF=)+;O=_AW$>u~URUY0N)^&o};T~iCd)SQmN1#k%ld;$Jb$p4Tbi#dxO z^ncFbwHp^e!7uay9}lYSz2VthFp~EakMTGWafzGAPT9;ZMFE_{T_+GWiJ>lRi94bM z!CW1?q?=j>@WfEhn2UO)4nu<0jhu*xjiWR$4rBg;k%`&a0tp1yk<^aJetMpVa|Aj7 z=rDTci{mUAK{r8|*LL-x_e6$ePW7yCUAV#F5L+-3k=U@ge;;+k33>y^Y@_hS*7S(= z(K(%X+a_f+I9{7AH@*eVS?Jzmwy#T_$i%N?WRp%>rU0)zMxAJV2YlpY<*~{KV_-?( zJ*526i&{WA(#1Qs3O2d-l7j-d_AZ(4uA(+^%zEgZY1dfv7uWsrjBUM{Z5W zR(w(ziahc}zr<;00g!#`14!wT{0}{2#&0xsik=wEY29%k!XGyt)Khf#m2tU;;gW^o zN?&MPl_kjRk)RCr$16U2aASZLVV!{OJ-hmd5g`$^yjCgk5*6|`=l*l|)ibuX{7^~* z?4`0`?|Mc2=qeNRtI$h$xP(cm^7!%_5H`V-9~-sLS`X8eNz|!SGPss_=pTkz5ut6|mID&X!d8hJta<+8M0=*@`jg_9q zcFP8oR6b~6N8q{O)#PLl)6wbs;fa5>TN4`_be$s@#?nBJhiF(ZH`Mfb?W0&bo+l@30~CDV>0jO7vu zphnGc9d;Rw7E-un{j*i*G_b2mmBo07&x3Fa7P|WM&$S{BZ3Anyv2?RNPr^)+D^5?w z!o;&(fF3XG0}Lv@ms^O9+=xwqPVkf>e>TO>YhXr(E3y&-px)He#T=THbq|P{zQY6E zw?0?x@-Y|XFy^;qCQ_T&btXb53V1meD-yk1iTX6n#(-9Yi}u&qZqtg))nHf;NXB_5 z46SJt&T@RZyq0why*G>;Nn<$LQW?)Hy@S(XSCU7{lQqtHPg zy7rqkA}SCJy%XYQXrYjnFN|Bi_B4OQRQcbF^mtb?{n*jnC_zLqGBn=>AsDN&GJ7Gt zQua(k*R?%a7Wwt(i9t80dsEE_sjv8Zax=obQkChChl|(S|kYK7({m zWh!~8O>GhUT(_3W={Yh&Ngo$uN|?{<`BKo|77RD_vZhOrRU;C)fU=A*u?#`+jCnJf zm5Hap!r4E;0Kz=8R#v?_{z zlLxwXLAJ+_-mAMkel4q9NhXF@+9=zlf9g|x`K5Goy!mcy%rgA+(@7VU+Z5TnYK!Q) zmNwUBIQ@xR2E=q`GhEt)HxyoY7nIQ{Ma3OE#6fZ-D#a>)blVp}6U72pnrjdXNlE5? z90-~`?;W?0g?LiD&*r$#iJwSHUV!63xCCHOLXzT50BDH^07`W@*lM9BL&u3gVY|rL z8I-ll!O4JNLgPMv=L>i)VuB#}2=I2^W|5UIW1#C!lCj2uirP;@7HKo1x+%(P>+c8Y zA~yNYV?qPZB=*tiKlLqHD}DFAC%>X{rrfm7kTl#OB-KvMgl&;LD0(L zM{LJjFyK({?v{_Uli`eQ{HmC`d-kqA-O}YAwl9)--L^6w>YfOoWt8@H&g;!GF=pfm zoGTjX;zuZ1rD!wC9_Qy00m?2+)( z2Vl~YPtPISAZnFQM5|k5eZ&$iK$O4;mi7)qvVpC!>cxxsv`D4nJXLKbK3`tmeE1G# zM3Y)~wC?(ruYX;o2MRKR#WUEe^#Q_lx_l{+?Ul@QZZW}3+b#O}7g@b*Qi+|-+W7}9 zG)%a(H9%thi?_7ll;4iy_$eGO&s~_1y4yk!9@~(fd0+dzx|+C^QR5(2L(WM0W{>n- zDz1KCnCYwKWKP7>okt=#?bQkug7>3>#o%x*6oywinl&=*N?>zrB9flZ`s)*M0Jfn1 z&Arse_!;n>1R%OVeUEhJ#GhD8lX8;Y#_(sOJa$TgMvYSBVKzjCHsom-gD|IhW%M## zQUk@vK9xeC;mXb~(&%boj8dF#pFbM^8*C|jLp5F#qt#EwgOlXVoG|=4-~8~(F%Pal z=|t(IM~E*$%bn#WhlL%yEI`CmCcoLGi=ls`!g9VqvaQ6tC%{&2>m>a8Exg?S=wux5 zA{4>3Ft+LW^SUytSIY@>D-t~lts4$mG6t?iC){|%#X^z-X59FA5D<0zWhdR&Ga6kA zrl(fh^7yrQt_3P>K05c6=Ymdu(|yb%F4dOe^7CsdAtWwtjbq!qpzzb?GjQjb8oDbZ z_5H6bRnn$AqxcXCrQA+rP+lR)i20joivVIUn*W{=~;e&o6C}>`3&V=+x!##OmNX z25t`5);KBL%!_o5XE>|wA0%FuiLCp`=d4JaexX^Zxat<=xl#34rNvy#o%jcCRgL;u zDK@&W_)S}oOe&t&QSkJGqX5C|zi#THhUsdWyv9d`7Rc`7CF*aUu{B|cFjLm&Nu?^_ z(R-e5O`w{-RvJvYr(&IP2#J0Kc>P4Vpe>MW66=76&p>50)WFI)$$jo-uW#y|BO7hH zbI+cuwqH!Oe>wl4WVw;ADCsuIDr28K+`6j6Mk^wbcdd>Z)ZH&T-s!>&zFrqZyrG)5 zVb^+JBm;m**D~PIj{x+8nCjSi5{!IKjR9Xka}xLPrxQ1GCGIdY-hM zyDSW#ny6!S1g^Y0r08qygebWV^X3J*tvCZ734dH#3wY_%?^A#X$(W>I8A(r5mM9Ly z|AYkP5JlH#PKT4!On4=`Ud{Z4sInOK+Rp>P?*I)IxJsnEx^;w zo44^nf*Hoa>7pvesIf5|_8$u1j|@rT`MIM)WO=3?hE;UU8yV-l7)|vP7;Q7TtOxX zS%mHVqJi>MLhC&qT5Ycl2_XJ0 z{_jUL;1|@%{pqV(b;eU1e!-gxiH2n=qmOedncLd(ZFQ)crtSg`A0--Msf1`TZ&Wk{ zy`F?A_(X0w_aB)>akUcpyga$Y%F1MGjLDwb3NR~mAF)1$J|W8?5J9`0VBrI3+gs$e z>x({->D-nmkkT}}vXf8)DA7Lv(|{6&`skrV!k%=Ri+b9%!e%y*F+Od`3 z8Djs~n;cPe>)O&sxXzo7wzRskRxr#u7*N;LAk;ZS_i60&ra9SaI<1U$tUTvNx?LzG z|95_>E(a96$q0pb)&oQBWtrUE!Kq_Q!5-+2HnyPp;sLzR=@zU9=gOq_>@wU{WN{b?JWq}wrI0?Nblgg*gT>mf5RAhH7k zl*xK)vZ?ejuz7mQ6NZ%?jgBKCmFw&H6LR0aY9`$>B~Qo@MO_rM&f~|}{PVbw!9|}B zTP~Qj``E<7BAFha)e;@VD;gsrrqop8aF*{5iWtnsxPMu^;_z~`oT1in<*SvmvJ|6^ zSPs}ccc#|$#YR8yEONzOcPdUB&l?guTjY_H+28)vh}&|8=WER4@Y4Hl>D8mpI|El2 zZcglLMagi-ebcm;Nm~&-K%#Z6oGkcX5vN+C{+r|c5-$wbbzLv2BI?HYIcOd~X`;(m z_sm!9UzyM}ef@!YLVRmh#)YuaQ@*Tk{8q#`>OaiP9-etOK%3h4iq<}}UVmeCHt61S zvZG6aCsh4m=F}8OiBkJ&JxjAuv4)JlvUzH19+0S4{S?4}nEly#->D`vGugHwJVqjE z|7m=d@bUPtd0&P1qwZW7`uK}~3L)v$5Ty25dPoZ|i{Ugk&Kugxt!8i_b{2yhqcLU%e!J{k;>to}<~l_&-kIV1_mvJv*b{>Kp{{>AJXZktqq4302U$E(-sxrOr+!y?W-}F9XvUt&1VCA52icg zD8ai*pnIHK(=wwGy*eJP50buH+KYgf(FA~E(KjT zD_()qD1B|$DGkR;$l?W!@gea!rqrj6F)8Z7!*EzN$QT`@3RBR&886+PXtu_cj|;eL zwgy8u3{u9&zN$q^---pEF)Z+mF*gNW($I-vl{86i5<5jUMcip3h+Wt+MR4;Y#L1=z zQVOASXAIub7cxa;5_a)`kTaavQlOro@cS|zsc&&|cSs{wHbwHZMg{g!^Fjy(Lw3Hj z$`57vTyyum-XS;Kgio6tLs18CX^a-Ml6$u(q$7}My+``%N5d8B8#{=6=YI-3 zgkq;C7w;ZBk8#xC&gGHS&z=#^b+wt0o!~) z5QZ^=s|Hf%{8=UsowMD%95(RzY^c=?iNqieCfV`3NwJr8DdZ>DwgSFlXM@Yog+) zvOy3Nu7;kX&-QC&-Je2Ntxg1qYV#P}=F+ot|XfI?{ea>X&Gh z@u9)Oj*Yb0Dr&ck$$cAaxv}ALQ?y^dxV=3Mab?QC_vJmodqY>kj-6>@1gXR4_!$VD z6hI+M!m@$}l1ok{cs}TS6pka=%4D?_KsB1w5R%?EDbS@eE_&BZp^A zAoE1F&-sdD!4c;%%>P2>fJKg_KS5CXzam}H1Qu3pqDa13uVHxNPN%@=9k(7h$vNFB zNfy$%aU5~~FXFF2oGQk#e)P#fqJx0sGbOUn0Jn3`;F89}vsJfL2$E2a{4vgq@h$@OPzq3d* zC&=Sf|LI!>q+aHn{P8K?koEYrrI6W`OF5GSIwY2s>6oFCR-s~X)KoO%2c>?uL;3iN z!G4KiQAd>7CQ>`zIqE{wvoI&yNSp)$9~Nc~6~&TfNO%Z|V?&0q{g%vI3JeI#*`x!k z+$Y4fFrMn8%btG`XLsS?tZdlFitnEzFp#^g zm|i_U`qpmf?TeOx(`w*T=E>u_o$_Ob^ zz1~UGW7$hKi&zt_C4Nh>9|KA9Xx?)Ml|_%j>h5f6ydbsHN2s#!C)7qYRC#UYL>sLm z+r&X^{bI@!(BNi$g~Ca|>evbo$6-uzzKXKbtp2P`=~7{t)Wsiw}~RZ#B)aez+RdusiQu zMW*Pe>B@3Gt7anj#P7ojh>*M4-Y{a=$AVTbZiX-rx<5`u%GKMq1oYR_D&pKIej6~U zA9qXAT-c2rOO`DY+D!(gfFaDF2@L!WBauc}rpBUMYa*kZou`F|M~4s2@80&r`e!`l zLdoAJL@lpRJ7rcL2V{zF@tqHxXiG4x$D-tTLcNZP4mAM>ck~lE0m--%!XQAjK#x`{ zQ)ZC`c)t!Oz-zR01J8j{wnCK15RPWGq4qBU-x%dr__PmDSE{f-$oM_`QzPpM# zc@{9*`cDt4xsX^1T0cV0BMx09BSQ(GjprN-eNJ;>q5i-H3vHV@EytbTQszUYoXjVq z6LI6ZZPvg(D+{8?Kj>m?pb6)Vr^D43)qXq%1k8(?8b>>iByeh`k-#owj4IF|SP5dM zz?O$;+~0>#zt~|_mAC4k_455Y7@gq$by|K~}E@vem1)##X>xt@jZ=J$o!mvL29XUzO6csVc+coYNzpT{7}6%6-C>&y{^;l-sbZ z1>t*2;$FbkS5^>VH!c8RO0D;l^H{NdZEZ}y{SAj2YwMB7P-G6r(43f%Ph*6qqh?i; za*=a_2Zi-X>iQNt2gSmJ4^-)xP_#R(7u&b@iTEJ3$T%DB15l>GGT^+b1S~?3Dcna>_oe zJnuf;W1raO^@z;ic5WBIC^_dU^vgrB;|sahE`z-vzD^LN)_HVa+hcpr_%DnH?f{Ey zPQ3FFQm^oA6ELyTzOl&3JqtQ?vI3x8!aFf%d~LSF@NM;@>6GL%uYrXX6c$C((xT;* z)MhvRSqSR_t2-D4*E4cMLGAJ}kaAvv!kY?Pv1UWC;%90;XZ- z;`hK|QP@Yj^`Qbuv*1I8IMXTWqk_Gu-kw369ZFp!|GGiPL%-xs0Z`2ez{yqBN#{&D zhM#<`(DQ+ytH$0jf3t!(5YP|$U0MS-} zUJ(a$6O}bD(*YKK&?3>`(sIaUQW=x&?IEdai}a1|;zEM4**))2uv!H5AT^aAGUk@c z5R*%#W{u?aG*bB`pKbuTj86;W?+=ou4$a_r4wu=img;%=e-c3d;J3CBuqghmoP;DN z%s%i}eH?09cV#$uYjl0jQF4#qL(CBVchSV+OH);Z+9kx&XSaFdAu&3amem@Iay9apX7h+V`5*erj5+*!M zmMd*ICgWg1Vjm|6wf^P%jH|E<#Ko4+QH_y_U#?GP+O|-lf%ha@F4i1GF=RQCRbx5- zza71=H_*3%3BZV?*i2GzCUwf3F26owhG?|!h$me2MpD7&1;WCBaCHS|HQOcpPkvfvA9 z4+g&FX#4arNGzQ!zbuR#obmq3QP&7rN_93@&ahcX|L?^5J0F7&iNE8272SJAE0d zs?#BA!!dgYHF%b8__PhEjk;IM)gn*J$!Bv|BMVV$!2Q@1891e9NH!d+n|Gig(v1_4 zZjY&7chhbqO>|a}aBLZnajYuw2_D{y zs;i95^ra>;<>tIuqO*=kRC8^aBtpzua!-f_JbSUdX*%^->ANZ_3-bBsM`T1_3TfnA z<@2^B5rgi>P_!k=6nrv6fEmu354_*<&vkXt9M7Og|7d3McNUjl8YlcgG-p$+$;740!mv*?V4L#(ICM;2moyniNG#3kaVA%wZ+Ua8Ba22N!k`7p6gkg`{OL<=S@#DaNZ%E zQb@vE_Uod-tuXisj{DL@Q9STpD0sUn;ObdFlKR}q&zQ)6D)&dk=Pv^(682yyQyO@R_4wwv5D%@={b#5F zZ!yP`qyS-Sr>ss;>+)X%lfh0#uh_)0dHQ#kk9b%GWv!YkQNOrf6-=^~Xj_!G`t=b> zxr~4TiB=%{sY|$0Ue`Rfm$_-jJ! z?(cxlj_w_3xRHS5_E-nemX zK7(lLr;csh`Ll2kg1C^kOjWP=1MJWY>czu(_m=CSE*kT__wvqp5I9Ll6_A|Mrn)-% z8v6pr9Y&H{G&%1cD420`<}S#YU|T)Uc0YC`=j8k7IGEGdCnA95Rbm6u%XiR&Q5ft5 zk@+F}}4v=(v2g;xz*K%^W zE$~*j`~7U6+lfTeLN^#N1FiAmb)j6nT~T(^czy8o!Nujj7&*cd9gQ|Jnfs;xia&K6 zAw*uWGQ8(X!+A_o6;|bNiPz4P*5@$>BapD-ufygJn8#s^ub{7uj%&Ul#1e(Mb_(eR-fbR zI$vEKZu%R#VA>j?Q?;_`Vq^1~a9~FmHFk+LS)`&s@7Z!yfuj9PAsYlx^zz;SOv0NR0+euO5h@f~Z3V0AK{k3`)~D~Gt|C9X zazf_~@a(WE?2ymxX|LFaclD+@sK!UrQZos+%ow zyqR*C6YTz-$DB;td)tPjgRyy|tIr$J2)Th_EyTZ$gDfIWbzP-vrvHFVD=Gm32wLv* zk{_hm|=`LG%bd|^3WkAkmRw+P^))R6sH*G z6W}+OV)1%%c$@@2$qmYJz_sKl4qU|9p16J7NafJ(`Zgkn*K5Q>>gCp!%sp2opfSva zkc#MgeefModvIy;C1&7XfBV2vWM$t)QT+D7gj%rrgMWvEvU!&-f#W9h{@*4Q9H`x^ z!VJC$H#syZ$R90Wtpc0mZ_^(gFp1g{~MU9lm}K}41~Cn%FQoe<(%m$ z=H309fpIR4um1y3_5Qh5V1{*Nu5e4U2}g^rGTXeT?xfh9IP-WG{@9z7B2O-X=M8rM zxPX;win+C>lVyb-n$TjOaJJX)dMcfnqZ7$XgI*oqbcW>1Pr0|Z+q0A<}c%IH3Dx?8%mga-sf;o|N*?`GR^Fp9aAcX=#pVaCxbJTZsx z<%>=@*K1v{f`a}MzflTbFdLDw)||_P?`}jin1lxv1Z3;&D^6pi<&bn0L@HpW#!I+i zkHp#@x8@D3X}S1qqBCRDr9qZ-E3k77zesLEYk>R!Mv|p_*2>Rq)cmoO&+MARc0ZF= z$HwY6^o@EXQ!_b9uNwE>0Gag>Qx$y`q!9_}W0~t*3$mCpEI6WvV)iN355{yQ6yJO4 z>kxi^BqoYg^Dj0+s(D=`V`zaAnpd*ehrY!n;RkjFgo>4A1yAv13gC|tP4&-P#0tTk zLpDmdi715hv2HiHDVIKRK=rh<5v`@6wn;7D6m>w+07@<86Sv7}t_Uftechm{_c`GZ ztS_r7?QoM{1e17(IH#*IL1b|_796^kZM8mT$CIxE7#rQn)I%xwtCZY_F)TdPWu{a) zIp??$Otg`F&}Pm3rlp*SjzOVvnTJqha|ca_9zRD+R1pq7y1dWhGTMNCAAoYe?g_gQ zpr!3oFd%SoX#$|tYQ)k_4$}`kF!(<{u=5gg6tsS7g6nEwmH<3TO2wo22UW$T6C{Od zd)jGhqT<*anTQ)UQ`;F$16t2L;1f^;95jFEiR!r0govnf(tEhiQ_hkRB7k1OZFjPh z=ry^nrl001q5u$k2rSf*>uDBY*jucL$2$Ke6EIReh`)gGzwi#KINP02e2!AsS}X5E zTw}Gx7e0iw=^g-KftyU(IVDx98Ta5klh)>Fr$Iwr@aS;;RawBzTN#)6}JG> z|50&(LM0wG%Wk|~CdIONOX)b+kI@msy25|&x#MuHJ|R*O!?7lOT*?o8^8Fy&|CXH! z82)vg<2%JX%eJJbm-{mF&BmiBO0oZX43|%71)10)XPp4iM`ml%{R>^?f5C)D^vosJ zn8f6iTD-qf7_fy801)e2W_dEG;rTv6-IQs$j)Hn>iRU$53XyWG^}oGIfQD1-WK;?jk%LBmt>{jf|Fu`<*(!90n z#1`OTO=_cKe$y%Gdj6)%->V^kfu%L&22s8Fyxz)fq~T=p0d24~i zFN@YmfcD|;O)%;ShkXnuEyuDP^>H(ohQhPBtarPEG~bDQQo-Zg64#H;#u!iK(BM~+ zqDfGgppwB~FhFWD!#+^ugo6S{(t{t0Q7PlyJ~GzHfg_`3mHJP0P1~vi%_;6GUmyFZ z2oL|XY?MA1)dhV`HkdxxkZT0H2&Gd*Ei%YJrOSrefq{h^95?MQh!V_X6eHwi?sxUj zvl=?~#wKPDJ8c!hw1-e&ReHb^XO_#T_s&`vf-Z`Bn-aDBi4xr^S6gn*thA)FJkzBh zu*K1|9|SGqSWPJYP_G)mk(7KTPP{^^OF~>;Y!4%}2BfoUxZ=~5d!ko$(67F&sXH}o zZ-^m;3j0nzq{r3J>fe>>7&pBF?~zk-Ao6HI(KfJl zm0c5~5gPVA5KOm71;9ttVIp^#5OG*w4K+jJnQq{h(Ihe3%yM2*)fke443 z;Yp8OkbO$Rv9N*k5)|Dj0Qg#~kh!HOKQZYWo$5sPsbs#KN#F*@#&DnsFNmigaH;0S zGJs4whLr;$epecaHU#%G;UL7RI&Cjee8BtHAT$u#_jWe=iaSG+3Xu=v`BSkmDM-Ndok33IT;>s>CSA>+ALJbM0IUFM3lA>pM;lgt~ucc&|wa2^4&8T+BB!FF;Z$cmvaoO ztWi7o_QNFGg15y>yCxrt#4ViasBp=`yvupY@fc3CXI*l9#;O z+`7NLi-hc_Auo34Es;oJD-%L|9s@VC1NzMt?m+ z(cc`RTjA2t@z?^zs@B7|faGhCb!~xZV;St!Y|(EK26+wPFsy;L7f5{S`#L$f=Uc)2 zIc?Ah3N>74vx{z&E&7}WwzXesw;)h)K49%jmH#O0XQrvyyUGElFPY7mEx?+T@OLVtM$nT`7?`Ibo#GxW_f|;-sCaXOq zso)7*Td}J;adpznNGN%0sXOQ(S7+PSycvvZK*9lkevjt(U57$&Vu$ANr-Tv2`lA8- zG9NMl@3idc0_?8e{Xd#}py~MnO|*ZF0KR&o&gyq6mF2tRzAVCnHCv76JDy6d?W%e< zPYA@X4)0&{WJ}c^NbtGb9|7rSuP4Gtr=StPC>JV>7FIrx0c8X9j^Rmq+j`vM|5}bq z-^G9MW6?0~Y&~g|D6F(WcyTsMq7*!^_(~e2`?LaqG$tpq?LSdLap6Ihup0y+pgVDfl*Ae#hy zra1l@h*#YsOy*UOCSM{pI(ag4pWi*y`J`0Jv(j_~GWILr((Y4SEPy~&po*w~q*euf zS^B(8NyuDOPCf4cz2ar0f&}OlABlk#=kFo{RB7@oXH0Ss@Jy{Tyi182Uj|Mg>&du8 zG5a)lVD=^zIA9qVRAU=$q(fDh>2Z*Kf0qoD%O_NpThjyu?5~4(DH|`r%IevO7Ci!; z$`#c>p!8kb*0ST+QJ0a>1u)X8^h9jy;ikXAvUh&@;JGR-uqcWS=!CBf*n)F!0#p9? zU=}=3MpBjv80UdAChHY5v>=KW!cc!R`A1SMNuT}8VI`TG)M161ri!|Bizu>0%?$FY z(n#RhOiUg+=vGRop}sRax9cb2`VNjO61~q*X=~BvH;01iHA*tOCC3}|pU@{jnp)yZ9e zgKr2gDqA|0%|x0n7JuUHQLaZPE5S++ECf9Dz=%eO35T9)cZzvo<*Hq(d&dB7 zAJ!MUgFFRI8hkbespZiJ-=sWQblg|)g!fr~4g*8?#$e_r2>>g91!FM%cHhJTWExaz zgJ)A7LzX8EU43DY_y;<0RLKebK4_a(soj%zTU~I70H=$^sAZigw36cDkdlfmz02zG z89STq1(4JCPwDFZoa`HPO}`t8I;5PD#dz{OlB9?s-vY>nB#|@9zRK?4%vfb5b*8M`%#?b*@n)znJ=xNSei#7kFim!QCfW5U6jj9c2g+o1wL6d z^M8`hFMf+(;?B2BD#b(zQ5PjNVLog86u4;s>Rgo#m-Y<$&DYMI5TwxdX`#{5!SkTG z>jT3$IN!>n{`Cmi)WgKahv$!2ez=yK)6}j98IM9b<~^ta(P?-^U3U)Os8j2&x2C+? zUGR-L9Spxx*!>3|HIG+zg0X7)~;C^y_^L}#Hs zmvkg-37S|$knQaE0^a8*%8&=$ZL>;bxL~^p7WS1)v&1Nk2>>gTAtvZGurlf58`LWw z@JqGCF06Oh+Y{?=g&rmOZ}-2~=8{yIbxhL6NWAI!oL`?Gd~;J*oQU;t5|Dlrt9pW{ z#%=hpWPK~3RPVd5$dPK>v962hg*pZG^nAK8I^br?B$a&ZAM)=cG;p&<7|GX;S{iId za;}U#^^J+MC5kTXBb;~N13=Q1Q1*WmF+6wAyc3E*;oR|Qs#}DFiuny@6M`6Ji}D)3 zCfKg|v}#O&-;UG54^92wyrc} zr^u#}n?dYkov$JIHDZf0y)A{ee2Z|Mq#tk$0I~jHOMMwbEVAMI)r(xdxT)=S z7#?A4Zqv9b`rc2P>*^vfSn5S9>mpmoY!{BoCNA#nqiy(rzHY>H>0~TA@Dk&Y?X+~7 z06ulDd}6L*rXvby%12g2&Y(cU=QL+etj`NIVz7W-9FeNMMVS`CIHiALwZ+O2<>_m9 zTX9&PhKC}`)1;x|G0~Ins!ez;yDoaZ3u6KJkXPVqSY1hVaqlr%vU!-|(VmVDh*xoA zG|BG0-R^{*L#)X&sz1|SpsM$a+8>(Qt;%PdI(H>;L)r!(S4y+@Vf$7 z-5oFH#V!gK3BK43o2DFL(^T$yr;Zrqu z0RWPu27?xL5cI- zh&vYCXKJc_U^&QAk_hS+pfhqWU#TMgt+Ts%@(;`694QE(6HyCEu&d!o@S@@kh+6@0 z*;d=G(>T_Z^-4fUc;eIU6Nk_KhFlqJP*%qx82(Va(ewUNkzhET1Fp|!4m-HRC~Dup906bWEepJy?ZdaiQRLD5RqDwxwUBG#6o^uU$>k9CZeztl0ZEpd?! z?m!o^*GmeMa3~08jYtA8pU;NDKn!_MpP?M>{bkxg+}24Gvxg)xqb)KUBMDd2QV&$g zWc<0UHGUiy4K)N1&SAPChppB|{iFHxf4vcg-?g+kgTI0a5^s+zS3ouWH-zb}<=B4} zrgdHs+PY{XWep{b@Pz~1f1t5|vJBTa{75wpw$-jBL-#-0S#7=lrQiVwg$9|IwWQ;k z{#DTyu!~6oCe-@MqtuSmiIHq3pTi5Z_Xvq=Y^hyXA${D~6THe-+IBBpF6O@dA2j4& zssB|WWb0rmYmTmP_-aG1%w;uPLJ|%r=IKy&-Uy0DhP?hAKuamZcGbTr&kZzxsgRI_ zYETg2C1P9N>MQcwMYGW~j8Ve91Dn-d&5OT(05PILI#zWX`*YASEAX@lBL?kY(I?3D zSXRYDKrSmavooHzKsR^4Kmpae`?TVUZp^{+jF~_Y#&IJB1<_6q-&BC z4XzH_mBEL(0u-_IvPo*@g=hAQY*+zGpu~ns^C_WQGI}qJ9ximBG!n%LC#_L2=ul6^ zZDW!A5|cDPqj!u%#i}T4-Ya@(BsbGf+S-CF&KRm+#Gf&~ODbPrBUDU~_knQA3e>g+ zqr#Q!JMI`I;fpVjXI&%@=rF@0f@k#US-oRo88%CGB^KYj@2uGS)#6IfK~(F^A=}I% zHulDtOP$X6fSH5SUn7l6_%64;N+yG^hYGrIz1_1vc6$x9JtdH5 z4*f)-a3c7<{D)_k(aLDLhSUT0hr{bnz$F}}Kp72JNiVoAAKz?To zV>|FoQ1GK3zxpajIgnWprF1xx3QI z2xHW2VA=e!#gw+=x@inS)AP|!GYuN>l@KRmoDf&y$vo-gNb-hz;T(t@;8BeoM_}s9 zmqBqYEEY8DzF4$V^Cgro@^AhCXv*#2h*%S#6#F%l)ho3F92m*G2DagC>EMrk~^s>PB=sQ{W*BM|7MOIvwk~wytM%qkqhu8C8znQCk+1I-1pT0YP&17?xe5>)ux@oJSo`NvH0dhoU7_xylDA8&p+DjHD`VNtjJ zAcHw@H9ud?O}K4c^{0+JGsg;aWR=tx+P9MzhTSqe#eb7Ip~50SYAjMo8qn#ut9je9 zmgx>xotWLlDs}4p!kmxmqN?|z9o}-s3!%Bc@23)9U2`MMPgPx?oO%Y(*;!>U4{P=w zV7FlXUtaY*MPhVX{NR<$7bRN#%x|rGSd1K6bvMfEaffq8ObO#4djoXlEdzW!&F@+w z2$~cEZS46aQ8a(p{hF@_jOOaOt%}Gy{>5Jo?0!LP9;jx8?sPRkjynV3ulJYl9NSQy zd+SzoA2JQmsbGiO=oT9)&{sdJuir**iFhhF3-_Q`RG{-7mMx8)ZW`w3neSK+OX4NT zGxK7=UD1~q?P>=$RI0>_HzJ=5h*`(IP}XtnH<`JpW}Tu*DzF*T@!cheIQ@nx!sC(x zvi@Uqgeok-s~vijp=OAa?>P$6g8yg*JUVTbM<3oyQl_y6s>H}9^eoKf*x2vn`w#XO zt{4B_@Tj+KoOXRr;^ULVDwHgtn9M&5i}rEs3pNhsKZ0{Y+tzv6gL8R^&52pAc%)1f zh=ZEepVX2At;kaSzclMX$8)<@VOWybhWvB33YFF{gZeh!WB&Np>4m18?dpIIzgZQm zq7RZUWPJzZ=F~}L@xk0Te6;_=O_eV;KcP$^cn5c}Aec=Ne|kz2C>7mleftA9UYb%@q{Sfcftq6XAXRLGCVVgAD-G z>yPY(9Ov;Ic*xWrQl|o1|JwKCZMmQVGoYO;O0YmfSR!tfiAJ+^jLqAm!lCki4iV3= z01r{BoB$7zNfeD<8w1B%R&%K%sNUt+4e4Gw0}=CPdH;j|kEC_)(#JS;@oEF2h+jC* z{r&jQj!Bb2ZGRRjrADUr%H?&frug(lZHU|V1=qHl2WjLiIBt3Tco zN}tY#KM5%MXgolp zKpo>#j+uV!+lNK~_!x@$vfT6c=1O@;Ne|h~BHgbS+PWXwF#T>C&)K8+1UEE5YQ^*e zF^EL`Gffla?;ije-Kz;~u$JUw%_fiT)IX1gPuKuvN|C<)sBr#6Em(j+Z}+Rx*MG=L zU+Hpw8dof3md`a@nAjpP(OjmY_XY^*I`-?mX8kh9w=||34Z$sy2U$*U7ABuK%#Nzh zd+ey$JlCh3Dqq;QZwos0!`HqO$K6Q|^(^=#?(tdcd+8VGEUs^=((s`#ZSHCHTnS3k zdHHIyBlVmx{{wX=iGYkuZewVym`-o&o2 z#2B`cuyGLNS5~FhsZ#+Y=ZHnS)fZ~)aeJWCF!T2yV}xQ#ZXSVK$2$jPQBg)0Xa+Z? zrA#Zzzt6!hmZJRtHnb@KU_(vggM|ci&D+x=p9f-GL1v#}+e!ON4L)wIuYclOf9lVI zH_{qpBpmfl926xFCcp!@mVu-Y(g0&Y4m>`B!cY}b3#vlyrhJfAbmDWP&VvmJULrvX z^SVcmp*+%lp@dHdGWix4(LsLIf;wSlx?OJ(rGQNWKFKu| zH1q;QP)3=&SD2jBP{1h^QqnMz%h#iO>5|gK^WoYL{D`-$o)`0Ia@BZEMH_bQQcuUF zquvAz_1`IY;9s9%b-KnrIP z4pBktZ+|Pu6`Lslr+Sa(Z zvQaIQrUByd()&S6OZcP-Xq^qRsHn_47^44(y2il@A){_p>i0_5-Rg`mh~(Q*lhuLi zaD>F_G(ib%>(Q+j=0dK=$DQV9Li5J50-EQ4#s*^d`Q1&`c}5^NP$*nBItx0BFIx~^ zinyDeqN~c_o2PoBX*USUd?UQJ%U2zdeh23}xU;yLm}2+( z=cWLD*#{24V`bR_?hKJ*N)j@7#aOoH6667*GczDT3g;NSmHTlbQG3Sx)Ud*czu|<5|d>bY4I}n>9(GQwQL8h*C&mF-%u{vYzB|Q2;}l6<|BMNrcUil5!|SZk#hlLyp5#G)eqnb zC8tsG#s*M(`{Rn;WHcuQ5xSDrs&8!is2du&478Z04e*6M**TWnet13sid>0XdDc*J zNfa*)d>U;MQ3+$yr11z(It{t~$aUTlf1B?ETH8wR=7eEgC9UdF+Z?rR_|(+=m3!o} z(!ftR&V*x$Hmshxabv^@93(-*MKQpY-nb`}%RkNW6bGPr;#uMWT6Y%#p9T6-HvBnq zJRt0Yq1Ax&ON;X8ckVumXJ5z_t=Ki4i=UNMHB8`|GO z_NbK-tbTCOu;S8}gyr@I_NCkGd&a&C{%SUNG!Inr9msiAF=}ev(nWw+C(iCe&j>Nv zt!2ofAhLA>ZT2zXeStrXDo8S52gg|zAWzc6ch&aark1ch`sa5$!%jXxy$xdvYlOfx z-zj8)sJMYi*S`CUY)dpS8PxY^Zz)lGCTVD_Pq4r=*qp46zEbC2gdxamw<8k*;+EykLF?;(5<&U=uD(lxH>c00` zf{6_43Lpb%_8>(cGQNWA=7B;f$%U|u6K;j)!krsRRmwx|B~CT0yw*jats$-K7B=rf zdO2t5 zg_Z1<&*D>{u`?}Mh7oK3f)wvb5D;as#fl+z;s<~%OFgv=dIFSWLZ7G{;tq4La9}ss z@z?IQmk%$}(j3NN(Ez*FR+!{puY2h~2nZK_`%tYfo{6E~gE%7m`V_KtB4&T>((Sn+ zh}j_dLA5nGQrCW$lBQYu`Bd5BnKtM;-6wuI7n}_>*S2>DTrv1t}RN6q0nL zQ!kI6s!>#uaYGiIuz}s5_pJq_qlQ8R%acl;8Cj6G9GEXKQ9nOTYCxWCK&8lRpg#yb zKmAH$v9tO2*qUlVT3c82HDp%=+~Fp0FE#(^%+Su<=d*ytZv$l>p}1h%cDB=@mx7KF zfmKC;;5C9ED&W?>5D%D>V!fB_YpCo+m(|W8eds852FL?jP3tuBa<DG56j+oquq@vVvW6P=>w2%WjDcS0 zzX}ShhWK{9hbnr2Mz0jJ?_!1x9HRUXq;LGX7Z}#Rcoy_uw;BZZg3qACpTNyaOD)LZ zwxpzR5MpBj#7%>N-%oFnZ{~~NBJj;vZkQ!mXHeJ+pYIZ^*i8>tGk_q?KTo)wXI$=* z58`tIz|<-(_GXCeaz7M*QcwkbHB@ugpE`nW1e>$*`D&d3&;bU}*1X60YQbSTm9!~* z7sf5ZeRQDK3c;QgNT?m%a|vj(7o*b@7tI6#QWMDoj^fcgXPH8=R`n4{X4`Md9m>dJ zB-y>|1LQ&;KD>qQzjyrK&$gXsSs%ph=Qt)qxGR0&=vx!>A^{Nu2)XQZ{2N4brOgCy zD+4tO91#c@W~h##H<{F$@nY>0|`xv&m?1sVtEq#nqRo7TCOL7v@wo&jaj5QBh)6{e~%q4JvT1 z%uuV-o~N*!ba1#Eux&MS0EK>9`u^LAq0`Z_)wK@5kI2D(`$qI!p9M3a*Q8(YyDk5~ zUPa}121z@$NzfEQ#Cy<9;E{Hm5;OJ0K6>sX5gH`ay8UsA_(|zXMWm(soC31$d^;pi z2>%dlVEwg`f=PS%oR-lglcT~pmeqP6ZxU_>g?8uW+nl4s^gUa)c=|M}N;0+KoD9;J zIk8jk!@J0}mEx4_XZMx>0VAnduWJYFEs&XMIh`>fL0lcbKpj@-mjB z(AT=uSvZVdGcPbZM0h8}H})+@7#PiH=?yF_a}c&Wy>ZF;;eUw% z632DOL5DP1l4qw$`H_0T^XvNHVi~3tW8c4B3>5&LQxVu)C1(#y7dE`+vK)?5$krvc z#h~gF!`OKE+nZW4-+|{W(L#eoDBp>4QW$-Eyo)JK1CPYq!Dx^mXU9}phjGq$+Y?~& zRkYt5Jmw@Zf(qg}m$?)VWwC`eo@IUXTn?nlBU{m}ND`xBC!Uphh5(iyIUdFnyYllB z)Mk#09*#&d5kF+kaqk=kViU@(nh{Vb{?{c#MLi4gjd|BdAGw9PG0bgZ^lI zC?(~&F7^}T(Rz>H>bw;lOmFme*20C`gsOoPG-2hNM94(kEtS@`%f^`MT%M)#rlN}U zzILA4n+o(E zmmcXWxOaE$54V9@7r0r5=5 z?VQ;;ux$j`%Uka0eel~F-CObeMxw``_y}M(2kI0k2Ese>|9y7zT!sB2lR^+-y^l4b zhaD!Y&nCHJ2|swxS56^#ef?m^d4RME_N9xh>E7#Cv)3QRO6!9ZxG!VD?$~;8MD{%a zK(?!t>#N2%+Vnt<=74P!jNWV~pL!Zd5suI)d>vzhAF_A_U7$AE zaU*l=p5ajjq*b(qQC*zAfHVp~9V^qB4}9S(oyfO|c1{ZNcI@@wyc3CkDzK8BYouY{m9^qY`B-`%3UoOKe5>l zWcvmU(I;e_rCEqd6rXeSoE=Df1cWbgCIOf~@s~_bf%{Oqqft44+Nq)#L9bYzUMJBh zV?9TxD5xFOyjowxpzn6;OBmLE_~LG%sDM)qwW4;aIWfijh>B1&-9BfZXm$wrzDb7Y zQ$bTgl}ot~f_S2h=Wh*;Vkj;r=XxDIRIkv2)fe#?xs7~ot~sp#jfSpv;tW(p|;lVX#%l*@eq3hu#NL822Fi` zDz;$E`49#85<;pje?eSsxL=w6456$0Z8;|<)+rx0i212|MmmC36?1QI^Il+$*9I`v z(L2nRy`qk8EAGL`R@(p4SH#0)m$Xm4Ip|OB1Mucx>?FW|o1vT+L8$PZaT3LlGrK7? z5luhLOK*czWy1$dyz=@*r>LO_BQFaDZJ!yWC-#-8X5ENQxK2Bq@3D=~7A@#v)59_-xFaVk` zD4jrrAlMd3ES11q&6^|NVh2C4+ZS#{LG19A_9{4Lyx+6j;l76l*<}!#NHdb#D!rWd z?1lskakzXyrPT{givPY{_TldWjm>MAU}Qpe85l#c;cWQ@lq5<7e8Ip)2D0u=LFn;~ zE0%M+r%r84xdv7@=?t6u&(yrpXTk-x1J1yMN4M|}_B~U5A58oyEu8H=6TX5uBUS|NLPW!klP>t zLAdss`fvdEK1$)V^btI#JCX(|55PZB11!lXN7Vb9ye#PYn^?qgi zw%n$NcT%n`KF7@PA?B-7%1}p};#FXj`Zvemx!J~|DzV@VyZg^XOlJj$}FdJtG|byH65vHP5y)v+)kQPDR6(}lm~9OqOWzGKTi zL4Sj!Pk^X0ngzd)JSv*`r0IvaL*@%iT4Zg^VM)yJgd@^ah)%Y~_YcKC6R|5~WY_-Y zLh_cfCiA6+uPy<0-^@?XFS!v)r#`RhLA;atZUcJ_`@mlPME)X1g#$3e1DZsmxyA`D z=Yo@@xkoFc->#%)S;BJ0XG1dHa9<(Bo9(?_U~W$lzaw4uwJz(#%qt!V1oamPWhly=uyLN5@PDr;#UJ*4f-G=KC z?o90^+XsAQL>uIe>1_at0^Ml8DJEo1o6V_I!@$Qc54JVC$$mj!%HAW=Bfmv88ZsVY zUH(wx=F^=l%3EqocGD7oKL`cUPnt44pFNSidn#eaXD}^x2_QP;f@3Ip7g?QryFp;7 zT*BCf7vEtTXfABP&W!EjVYUTzT}hnGi}k9fBFs>-Mh#vEic$AnhTw3eOSjmm7t|+u zugxJjTa&M>d%K3h6?MyXj&{po%fTCChZ-Nf!*$#O2Yt7Y+j!u;G4gDMk}5OSK?ACv zM`0Ya4NR1-gF@BIu{3oeVI@TTV0o4dEg5yJ#hYxMgN0Sb0LBMYNSnxuksmtlk6QbtN7226f zT31fGcn(eSlu+5%WoEdzTJYb!P6E))#&sbU6~(VkUK zgu@_bd$9cu4}7#1G!52sTn;!2^zMElX{l>D>&1BG=tA0!adC>1)q zmb`hPU@#YF!k!U)WbM3tq%y{0`6GR1j>5UehI%1+D1!sN61$7=A%x;EV868I)-_Sl ze)Q;mGSUUaXgXS61K2s+hq2Q$)4q!-rhBnR^-Egt0S0n`D%b-QL3-wg=mr${(aGGU zo)6FB7w*{9^k6kPB{(hnnzvs_B5Mb6TQwD<4SU{vmUwN=-}E z3z}vm55p7{J>$_Mk1XUTxxvuIuRlc}wrGktU~sSZ&aw@lSf~4jCI|-8Q>~WetK{Lz z^;kNrRiomi7@`^GDlzMexo4>baFLbkUw?@yQf1)$0n6FD=!e|TPwEFeBH4I&xKC+2 z>G#sUGYAU~BV5)p-&q&IxoC)_Iic|AYsTYj0-%&Fh(;LL_(q3%?<9AOG#U9?>#x~! zQ!ZnyncTD1as4K~>rjd3qX&`Yp7M7Go=mSrDjZ#QJ_6r4q|?h3Lj--q11jAw;m{x9 z*Fw@pX$B6rqA(MvP%1uk#Y~$u(Fz(VQ+36Kti8j$F92_hF12*bTctIA?@V;>`eTA! zXt#{cdt~pc)Ym^hxU3`7Vpb)+L_<`uiTo2ng0a7b-wXmFLR%xI;014K!I96RoZQQ^ z`WO&NRVk*MSXrHJHd6g$JVUmJk4lTKlRfg`q2<;KsR0woJt7%d*O#~v>Y%3jg%5?v zNKm`B$2U#oR`8xeTv}OxE*OKxfHenoaX{;-I3wRUL=k7*VR=Fm|SoREnn)Gqwc&v#ruMh`t$H%?NlD!Tjz z<=fM9PFqvA7Dq8IK4YB`Tb)l}JEh$44GnOsR&F^nZ4QP#21;+``e z0QzA*8JgC&g$yb@_tSEskySM`lD38h3R5hu-hD{yqII@DTT6OQHJuaTsw66laCUJbD1@3Zq&zT%tpTk2fVLnuQ5RCvA9XA8}pw1 zA(QcX`h_TMQgx$FiBcMnB)>VltH!l{r?>2hUqP{}A zG%)G6tY*MK(i)v>8hF98vM%Z7k%ODw>oBstEgSIyWBd7cBU?QeMbD_@(<-D%wdJzc&_->RLU%{ag$)HsyQOBe(>bV7o4Q4erscWO zlo);ZSZj%A_1WEJ^ZH9al(~;aze&_dktB6~^jJ<8x?0Udna4^G$EgkG?r? z@Xkbub7rMt9vwIK^+O+Oebt|kDJIKIWq>*6-zA3pBt)-6KOKD%L~VU;+kK}zKRP0K zd@!9Gk-*QLO3umnP*$nF=LOcJT(319EJ~u3kEX`ohFz_I79WNTkJQ2H-W; zzfd5A*sHfcB5LHt_?YaLN}fAk$W*S_6C@N}m}S~`g83Wj14gdaQbG)|Uz>UZ)Z+EbIrcn(O$ z^3&&@RO{mA)x!L04FA1yNdS}Fa{Fn*nW)3vo;QNSl2*VQI4zh81(4I_^y_c}oM2Q` zSf@(+c?Wr6({o~SxO7DyCPvl3VM`uFGj066$VX{7kjvEDpmH&hRbP^xnYK|qQ1|i~ zQO?f!1lsdm3?=Ioo2v_lJmynB`dT_x=&B!~Q@tPDGyt~q0FyCJmbEq^pnencx~p>ISu9gac+#XwMA@2${T3jJfiUlhq3y`?v+8gpBWM=^Z@bXJdp4T=~4uHU189g`CR*4Dup`p6mFTyh)*SD~=z2m263l z89dJ@ELG?ty(pH^-M8z1jOph`2&x}pbw$k_zSD+$b6^KHG~8y+ApH(rv_DU5Qt}w5 zsP%;qE@3<%V|KA!xlnKuv$j4zX~t)Mgd$~p-ShE5hLAuh*>3BUQY`JYWwycd3F`Qh zJgnpIkM9%WuZh4L2Kkll9DXWoV56#17m3VT@pFJQRwjpWQgWxMVZAX8-b4%P<>xD>m_w^-49Dp$O&|Hcg_=(evBb6NM{EG_(we z8;U2h3^fR~3N%;I1lh0n#iI#2!h9HuwB4nAm?J-zrdeAAVi*vj?K^thevRYVF1E{4 zaekp_eYZSSE;CUB2211P#hAI#97eoer9;RvweQHF|3CU)NX;~*<&bgTf^Tj#8Tf}( M)KJKmGrRY{06!RW?*IS* diff --git a/Performance.md b/Performance.md index bb0f43f..1e92abe 100644 --- a/Performance.md +++ b/Performance.md @@ -35,7 +35,7 @@ For a test example, let's use an imaginary Cortex M0 based microcontroller with ## CMSIS Style -This snippet is based on a CMSIS style code, which makes heavy use of preprocessor macros (the defines) and just maps a struct right onto memory. +This snippet is based on a CMSIS style code, which makes heavy use of preprocessor macros (the defines) and just maps a struct right onto memory. Notice how we have to do all the binary arithmetic ourselves which is extremely error prone. ```c #include @@ -88,7 +88,7 @@ void Demo_CMSIS(){ ## CPPReg style -This is written to mimic the CMSIS example as close as possible. +This is written to mimic the CMSIS example as close as possible. We let CPPReg handle the binary arithmetic for us as well as get all the typesafety and compile time overflow checks by CPPReg. While the CPPReg version is somewhat more verboese for setting up the registers, it is much easier to work with on the consumer end. ```c++ #include "cppreg-all.h" @@ -96,14 +96,14 @@ This is written to mimic the CMSIS example as close as possible. struct GPIO { struct GPIO_Cluster : cppreg::RegisterPack<0xF0A03110, 4u> {}; - struct Direction : cppreg::PackedRegister { + struct Direction : cppreg::PackedRegister { using PIN0 = cppreg::Field; using PIN1 = cppreg::Field; using PIN2 = cppreg::Field; using PIN3 = cppreg::Field; }; - struct Toggle : cppreg::PackedRegister { + struct Toggle : cppreg::PackedRegister { using PIN0 = cppreg::Field; using PIN1 = cppreg::Field; using PIN2 = cppreg::Field; @@ -115,11 +115,11 @@ struct GPIO { struct UART { struct UART_Cluster : cppreg::RegisterPack<0xF0A03120, 2u> {}; - struct TXFIFO : cppreg::PackedRegister { - using DATA = cppreg::Field; + struct TXFIFO : cppreg::PackedRegister { + using DATA = cppreg::Field; }; - struct STATUS : cppreg::PackedRegister { + struct STATUS : cppreg::PackedRegister { using Enable = cppreg::Field; using Reserved0 = cppreg::Field; using Sending = cppreg::Field; @@ -157,10 +157,6 @@ void Demo_CPPReg(void){ ## Assembly results -[This](https://godbolt.org/#z:OYLghAFBqd5TKALEBjA9gEwKYFFMCWALugE4A0BIEAViAIzkA2AhgHaioCkATAEK8%2B5AM7oArqVTYQAcgD0csGADUqAA5rS2YMqYEARqRakAngDouABgCCcgFR2r15XeUABAGYEm2ZX//qmtoAtCxMTGZITi7uLGJESGT%2BygByBBiswsoAwqxiAG7YemzKEGyoeYXFbsLYbJgmbNhmGAC2AJTRrm4YaiakBMBIRDnofQNDIzyW9JbB0/QAHMoAynUNTaOkambK1uHKE8NZWrWkhZgWNi5yTnc8AMwE5UxiOMpcD9mowkSEbERPrh7k8Xm9fJ9skQTGpsAB9IhGYjCIEg54VcEfL4eMTlIgEdBsMKomy8UEY96QvStZEk6xk9GvSlfIhiNQ%2BOlOBSqDRaYBwgAi2C8TWEkTRHnqwpyAAUZQAlXAAcTh2TlipVAtwADEAJIpXArOEACRBOBFvjVCuVqvVNq1eoNRtNNiJrWwwjULCkPKCOi4AHYBNd/GJhM8dNZMJhTsIEViBcpfpgQCAxM8iGpEQjPsHnKHwxxlAB1AiYBLxz6J5Op9MAxY5h555JhiPKADyHg8tSIlYe1b%2BtYzDcBTei/iI2Fa7JYk6xUJhdRY7uUABU6clfqQxKgRtDYXDWixhABrD5B8fJPwYNi/bAAD00SaIs/SqkJvzXynyYTEEP7z4piAbBiO6AyoHC1K0l864PLgqZHveECdGOIZ%2BIGAq5ncAaYaSjzrAQHjoaSNjctYqBSMIwgyugeioOYUR4U8krmrK1oqtY2TZIaKwyu2AAyurZAAmiaZrCs8lp2hxXE8XxgkiWJrrLh6Xo%2BoEfLns2E5TjOc6QvuS4rgAssZurtgi5DKIZbq%2BKuVmrsoR6nlZnbdtgvYjOgXY9hu/hbjuIzytoBB3qQwUsJgWmXleN53o%2BpDPq%2BqDvreIz6OgtHKKFCIDPkBBhAmMVXv4EDOWeVZVtZi6HseJ6QrB8EgD%2BrzYO0Hw8AAbLwnWlN57kjJVAGWGIKHaSVk7Tqw%2BksoutnKAAqgm37oGWfklc8xS%2BL8yVflokUQMVJWpZ%2BpnmTmXVOTS6Bwjg%2BVSOQR0TXNKmAamS76D4cKEZCSg5YiBD5WEVkLY4cGpoZy0geEWakE9x0IyV7VsOgD5SFm0VoYjWisqQJQ7fiEGoMeo7ZI1UCtNdt3YPdEKXeV7WonByj9T2Y3wxhWFY8kk16f%2BC6wvNS1Vfkq2YOtV6bZJSWE3t2AHfDyRxSMZ0WYC9NU3d6TYI93PHTZr01iAH1fT9Xz/XlBVMCDYNNZDVXQ0wsOK4jrvI6j97o4NF56yVOMSPjL6E3CxO/A1QJlZrNPa%2BzvvnphqH5uhOFc0n1m6dN/MGyZZlq1Z2d2Q5Tl1a5PkefGrMeRLAW7sowXAKFk6kMWAz6T7adKx%2Bk4JTLb7K8oGVZRbgNW0VcfJGVdVFQBhm1ae4fg81v5tR13WXRAleDf2VUjbHHc6VNs5Zy9K7CwBotrXB8NS5sBNvhfUUAO6t9gh3j/4qsXb1lMEtTtO6/vEqjkWp/gAa7PwBc3rGyJJ9eEZtsh/TjADIG1tFq2whouKGYgYaIhduA8B7s0bYAxoGcaiMf43S1j6Kqd8iYkwXrgN%2BgDEaR1/lQumvUAB%2BDNzzZFKBAEB/NIQszLkQRm9M6qdHfn4PeCNOaJwRrzTO85IFn0TA/CWyQb7bSDvfMWyhn7EFfng5Qn91bfyjv/ExwDl5gPAZAo2Js4EeEhMPFBNsgQYNhFgnBcNpH4MRoQz2xDvZkIRhQv%2B2tlqCNTnIlOCj/DyLIUoo%2BKiT6%2BDMfndJa4i7lVLgNCuoii4xKvljGuQUQphRbkY7IXd2ChPhsrB8T5aEnXSplJg2UkGW0KpVfxk9TzT0TLPcqDDUyCPEWvXqG9RFDOULvWJ%2BsM6pIMtktRK1L7Ajjto3uKUH4GJfkw/BZiepXTYdHB6JiHGDmgSwWB30XFfEQblEewM0GeJAPbACjtnb%2BICcdIJXtMbMOSBE9hy1aEh3oTBCOJiJ5gouRw5Q3DJG8P4YI%2BcwjN6TOLqeKRIL/CyOOkk%2BGKSZoCyMr4dZGjSnMJ2a0/ZhjJxHPAScjW5yrH%2BOuUBJxDzXHdNeag0GHyvmJh%2Bbgv5/yZHKBRkQkh7d8EItptE5eiySokqxhqtO5TDjy0wHCQkTATDAsUcs8lkDMnVUFq9eyX48kdlEYUgamj/D0t0SlRy%2B1MAQH7myixHKY4yo9kC0hJj/Z4zrpUpuEVxZfEtba%2B1m8PletYZQxFRL1XxLIVqzciJAq6sinCJlvgQAFv1Ya41oa45kuPtanO50iBZLrYXO1JcHUFK8qIl1fg3W7UZYcv1Zy02coJVKhG/cbGtUBSEk14D66N2wM3F%2BkJ41WUTV2xexbU2RIet%2BZeGarw5qWYfc12TLWQNtY5e1bkexOp7MU1VtKEa9tlv2oxEBB1KsDbK4J8qwnHXnVUl%2BtS0r1JXbnSyOTcUnispvKyJStmjuUKmLdX6pAHuSEeiaZra2UtMRBxtVq8OXug927KbAtq7I2VFHsH6COnLQ21eGP6Q0KrnVGxd1TJwgZ2gCcDDaHJrrbSNIT88n3gJQ4cxjGHElZtJThtJzb8MCaI/NEjozxMbQo9LBl%2BiKjy1IHRhtDHLEx2Y8GmdVakOAablx7APGXx8bjQRwT0GrIieRRpxD%2BDJPvuk2qw9cnq0KdWUp892T1N1TIy%2BvRZZrLoGAMAHwRm1YmYDeh8zcqGn%2BMYxC91UKw4wrghTUz6GPgAFZcDQZk8nBO2agvarzbXYtBqKOVrY9hk9uH5rhaU5Fly7bb2dudZpyW2nb7uuowc99n7Ss6zhWOzuaUvwTKDVl2drsbOceXc5lTtqRlRaK01QR7mxAfK3QtvwjGrJQAxZCLFoicUM0u4t17r2avxwCzzELs0wsudUza3Jbab3l2G/elbj7vPHRi3s/RW7ZvpZXixyzHXEZbaXTUupTnsgvdXURue9UjvjNsfMsQN2BHL0xV8ERA0nuSJe4tsjyRfPMv8wkzNdWYpas5kxAiREPgkVsHINcSIiBikYvSR4hEpREStBqOEq55TWF1KuZ04kLRsXl4r5XqulLWFsp6b0vgNLaA2%2BnLr85SzliQPGFYBAABe2Bq5NYqQ3MKq5FwBZrVTqrOr0ce9hJCRYZ3makOUK2IsoqoF1iICOXMn32fm75j75825a7%2B8918egnUQ9VbDxHnQUejYx%2Bz42PgCfkk/Zx8zP3HHSAB6d18B4PBc9aXD4WQvmCaE3Jj83svFfsK4Ulw8PnxF6SkWF%2B2QopAPBMHQI/cUTFpesTlzadsAA1XA8ptT8XbMWPXZJzTS1XyqDfW%2Bd9771wbtSxveSm6s9fo35Gm5EiYFkKz32Lf3bjlbisIxix2LPRKYZ6B5fDFgiqYInakrZIgGN7ZDgGLyQxQSAiaqjY6qoBIDYCoAngGrT6z7z5m4tgd66rCDYJbxD6KLZJGwZjaBGBMAhxY6kyDyoJ3ZfBVTIEQGgH1ac6kgpy8FD5kij4C7j5C6mJ1SL7D7L7Sgn5wjGTWArAADSB%2BjwR%2BmwMhchihV%2BKkhu6kd%2B/oqO3uoWeGxkdUjYUO14XczSiUJhp48YR4J48I5UPqXcJYZYf%2BBibhSA06f68M4aJQj8nhcylgWI2ol2I0DOiMIAl2kKocpMNhOBo4jCERpQ9hjhh22Q8RZhEAv%2BNuRAEAAR1uygwQyg9A7QjMbB1OpRaK9Al2B6WGSeyiRhPWphiRMUTSPcmRIwqRcIwgSAhEk4%2BqTh/cOR8YBRCQgBb2i2/cIOnkNObMa2v62WzCfhuyBWcRLREc3RGmGRGxxWYxXhVOfC2KAW3OfBw%2BQhdwE%2BqwSAkU8%2B6%2By8EhDILE0h0kcIKwxo1gAoe%2B6%2B1g/EC0uAyhDwqhUk7EbxHxXxxYPxfxAJLo%2Bu2hN%2BvomkH%2BB8yeTRr06OVkzBi0tQKwNxmA8%2BQIqe%2BauJtxj8yGUCHgYQtQCIXeF4DWn%2BqJv2eG6OzuaeIwJJ%2BJj8kIGJ1k24jeVWpaRsea8I9sqOuau0kC6OXi20eJ8%2BcIJS3BXuVekpdeEsKpbuTc0p1xpJ3Jde%2BcfJHyvRpJ8plOfSzCUpIApwVcicPO5x9QhEY%2BXIwuxki6wA2AdmjxUuzxsurxxkW%2BSouAxY8oKuMJ6ux%2Bvp/pgZwZq4oZyk7oOht%2BfoZuhhbB1aMBep0BwBdeWpeS8MMxd6HkExPM6ZGpi6WpMSqBVWFQx4WQLppAbpdmCIU0ZuagYgn06QURccBeA8x4IpXeM8JZC6pA0pAWmggMR8nZzCkKNZi6eRSgFpRpnJxOrURZjOPAPAYEbp02c4oUQaIwLAP43gdyPgygHgSQi5BBGKfIQ5vAPAH27RLSk2/c%2BgvZNJ3icI3oqAoE2CR8%2BqrBFB4Ct2ppFRRxj2q81WX2AQlhPcrSz5r5kMDBrQ%2BgkkgxU8VUGm/6fgdZDZL8TZ7IyE0U9J/grZ7ZqAk5z642Oiu02F7puFRAzZqRBFyOf6uquMJQoaWaA%2BccNFjZ9F%2BFvqrptFRieFTAPU5RiYOAPgk4kFWFglvFU0pyYwi6s4ZAVYzhy2PFdFClXU4lygklHkjemFpiclWl7IilsIRgJAcM/YH6JlwlfFolXUYly0%2Bl0lieyQml9lzZSlllqlNlnlk4Ilulrlhl8MAVIpU0tl9ZQlgVDlPUzlVUIVMl5GlG%2By%2BJTQBF/c8Vl0zFSx%2BC6pQ5qYCOw6USZpY6FppAj8h4U4cIagq0AIi6yEyVyQ6OdmDmYGqZSGxZWZpZw5IAmSL2BVYU0pq5rsiFyFTQqFLkL2ImL2H5FE35mcf5qqkqb252Umc2H29RDJjRnV%2BV2S2oo1V4L51JkMTQVVUBXKEWy04VIl3%2BXV/gGJL2EA41KFBOaK2oCEkiR1CMs1q1pQ81X5rQP5AxJprU4FnCn1IAPCgYfCUA51YNf4hxygUN2Kq8yRkx%2BCUNz2/1mNiSo2mGBNrqlFmZeGjiMCpsjyOO/SNBeMVJqYGBWBOB6AeBc%2BXJe1UqC5DuOsMq2AF1JOEA2NaFV8zMqNj2GNr2yaHoZBy5f47QP1/g64uN/ynBTuTlTlccARCQmVLh2VvUuVhBx0KxRsrQLNr8q4X1DhyEW1RFtWSpX%2BHNQBzJGZaZPVhVnymCoylZbRmQtZdlbcZCJFdE5Fx03ZJ1fZ3iVUQ1mpHtXBMUY5P4k4IdJUD5iUsFLh4db5vgr1k1716Fh2gdbZwdjS0Fj51F/tvgjFcFp1kB%2B6CxrGRlyQKx4VFOU6yV21H8FdUVOFRietTkj83hKBzCpagNi1v5iNr8rQC%2Bo9wNS1E9jMdJPBzCLdAl0VdmCVAESV7lnda9y6l0PlKl1lAo6lp0FdG9ElRQBlyV4V5lylVlalN96tnUwVl9blRlOyaVhIr87UWVT99dKOjdE4g5w1/V9G7KJV1C28/1FVVV7orQtV9VTcTV29JUrVO21ND1ECwDMdA1/1mdhkCtJUOd2AU1MGM1Z2ytxKm6G1iOVkM9INJD897dttV4KZFK80oRRNPalFxlu9vdXwPJxDpDH1X1YmVWWtEu%2BCJ96U8FtdU66NOVFmPh/i05VEs5EA1BcYwgKk91eNlBSmUNXoWgAIcI15YUhDb2LJlDa1i8l1mD4Ct5XgRQUUu5KMIwHgpA6ArQ1kmBSYr0ZjTc5GTkglRae9d5zV/ghjtE6QJgEMCmxaujUq%2BDi4FjyQyTsIqTkTojZD/1Ytzq1jjOxW9Dc9J2e6bdKDV4fhL2JtZtLKr2N9AjepANbQE1jD5UIj0N9OXDASltr8xT49EyEtyQNtS9yQCdE58MqjZwc5YAC5spj8st82BTHUG5gl25vgrj6A%2B5h5rAsCp5558zZTSNATi6t595pd1hXd7UI9n5Y9oNgiEAu8hFozx0qdvDPdzK1dEdvg%2BQ1zyg/T9zy8AiC9AgLDaTsj75tzs9Azj6ipNpZxgh9p/Olxoh6OnpzEMumuNoGouoKwMZ8ogJwJWLKoOLeLW%2BWh8ZCJJu%2BhleDtGDCMUYMYHoSCkawAjLsYR1IxruORR10di6DeupwAORqtkaPY9x4NO894lgR1WJC0OJhzVUlJb%2BTu3tZSLurLQ5htfg3ZUefL9eme2Q9cwriBmeRl3ZZi0StEr4J5hkyVbz6dy27LzL8YmdkUTLVEy09cTrVEdrFzVGwxnh8Y4Yjunr2gxrRl9rT5LhkMVp5BorHk4rf4yV3ZF5ZJVUHJBJjTvVIM8rOpItRlrSg6lV1V8DdVtNBFyJrsKxdgEAWgtNQQvYsR/GasrgysEcrr0YsYZRzDLzJUDrp0YDvUnjJbCD5bILYaHkAcLgtb2A9bOMaxkIvqBGrbXc7br5brXbIzyVbDkCnD5hY2lGhbZ9TJHDqYRjdQvYJzFAKN2TZGm58IW6/cu75ZddBtlb2Mk7eMuOx77Dr0hjxgF7pjTTQtYjL2vTUArdSN921OeT8xpyIHJ43bFTHdECVeVyB1FjkMdj%2B1fWN1Fdd1jtASz7IA57JjV7mTfgCHFHN7IAcGL2FZ9jejWI%2B7hNLHxNh77qpN805Nx5ziiTrstNr%2BwgDNmB2BuBi6%2BB7N9LUqwbPNpTgt2TzHhJsHHk%2BKTHASUtpBTARAizFjStjHKtJrgeT98M97oT76g9WrlTn7gcQEpthQEAFtnTVtSHRlKHqxM5pAeRRrgRSgO8ZOQzt5qhbYLAGrYURGIiHhhRI0XSe5ygYQbNJDZzJxLDbD8M3rLLMo3oJ4fAvZR1xeGYfeIwWX2BfAJgk4dujuXONe6r6OJXFUYpBYbYcDH5pARgJgfYA4QExg7XkIos003gOiQEMeI4Vk9XZXFX3NTMEbfr/bIwGX8YakOB4dy043vZvraUVh/rLhBXAIRXSY3N30bAcI%2Bg5XHoq32XE32AlXoVccrSLXPXLAHX5i/zD3bXT3KXvbDRKyhHyQC3xXl3eXkzPehXPA8Y43Z3N31X%2B7er9XkIa3tQY3l3kPU3i8b37XX88MdX2X8PgPiPygEPk3VXi8I7j3laUDzCNbE7c75cTbv37GvVcPXwCPPNhP13qPTU6PT3CIK7aUL2Ec2P2BuPpXeXBPyPRP/JZ72XJ3vZanAK9tjJ0nTt80gvOTzCXLrLPLwPw3oP8YMxuobAcPqrjWbJYv2BJD6OyGMULJWbQ59XUvYnK3ggg2HkBv9XMQiwVkPn1uhJ77RBbYmdSJAENvSvaOde9vJH0vTv/ALvRAbv2XHvXvYbnhQzDj%2BbwPEp2Sgf2gRVg7hwsDNVZbDVhm47/iKxqvqYpP73JgXA5WfA%2BvhvOP5WX3mGYL/kUby2kC2foAoDxml0w7LXRfSDpfSG5f4f2XlfXPNfdfDfcPzfPbyVUz6jEAs/CfzvEA3vCQygwuweZRVOAFkxFfIAsnR3J3Z3wg1H6q65S3JDuqvVsXZtM%2BbNbYCQvgS3yXie9RO76SZgv/rLKIaBdVvVwN44B7wbYP3iiV2rZAjYJ/EYCkDIw6t%2BywyKgjclZDsh4Ql9d0NjhSBWQhSbIDkFmzFC/8mYdsU1vJjpYwDDucAhAcQT5Dv4BySmPAegLhCYCL2kIHAVAjQEEDDW2gIgRYBFqkC46mqBrLaURaEBkWgubkNqAIDON0WUhH0qCVJb4s9QuAfiAKEJYSQ1CrxJQefl1CqD1BsJR/LoSTLvs0urtPDLl1qBPUf8gbEYNIOcZa844%2BZOwTIKYCYAZivLbJOREojURom9EaHjFB1T2C3BVnbsqR0vZ15lolg7ADbzNbEFdW2ScIUB16ojkKm5rAjMtEgRJCr2ufYzGkOIJ1U6I5PRMN4OZY0QihG3eKGXVlgBtrcoxQIlVGCGYBw2JdTbjBQ76fhnBcxDyMtCaEzFKh3caoX3Gjae1haiYbor0X6JtN0itrPYp4Uv7qd1OxxCppG12jPkOkygG4lowVYU98E2Q7Msf3maLNt2ypORkm26boFROzNVmgQQgEp1ZuHQ9pFlFOBkEx49jQTvTTQBXDxOT/TNqHzHT7CUhx/bmgsL8DYc3sAyCqAIO6FiJU%2BktReC8O07HDkObfbhhx0z7eIU0lnO4dZzYrKBChMTOJhbi9TNtIMBDNzDCNhT/VAR7tAfoX0QaNU5eiw5kQEi3YVNv%2BuHKOpnjY5oidMk2DRJrUORPsUBPKCmnxyeRgAthPReZg5BFaDM44b7RriVAJH0QiRyeBJrtjzhEZRMMGSkcVhew0iQGxbQfgyJL7UcGOLIy0VeDZFGUORxGTIdyOvg8NdMa0QUe%2BmFGMCbkvKeBFKNTayijOPzfdJlkWJWcWqdedekySbQ8110I2HkVeBZyvxDRMdVNqmFTYT14MQYipmMz8GxNPk8TdBr1h5oHYxMFKD5KU3CL6jqRAHMjgcONH0ix21HJMWWUOGklUx8zCenCKtF40bR5AxXlhxJwXpLWmyJ0eiMJhcdDYXosUXynp4lQlAvo%2BZiYj1omJGaYnR/pJz66Q5UwiIxtNYk7HqoAx8MLdNiKVFXgVRuY73BqIyL/ZyRMY8HAhjqYBImxfVOsaW1NFNVlmXYsdD2OCx0t%2BxK5AHCuEcgiwxY0WZ0Zx3MHcdJxvHacf8OOjzidS/iJcf4hXHXCJObNDca1E05kE9Oe4w9AeLdHMpjxgDPwFukGYoiW%2B7HPkX2n0S0YiJJiM8WqMzgmJfImoskSk1IzFYnxW4gvq%2BLHbfi6UYE6iXFn0zGAmKSjPKuAgYl5iusy4nwMYFJGEYbxh2RhFxMtI8TR2xfa2gvwqYw4psJARLMljon%2BIpJNaK5AliSxwFCxOoiOKpJfEaTh%2B/EiiqOLfBYkcotE/%2Bso1H42dSgTQrcXqgrbbwAIkIpTszGxSOTocgk2WK5LjAiSS%2BHkiSVW28mC1XBQELEUEVGjaSC2%2BWTznkVUmycQpiYfYqCMSTrknGIQ/YrF1YDRVEoCQdgPiOrEjAr2B3KruuQ%2BxL8vOEAPKdzQKlRct%2BzvOjss1vKbwOo5eCqbuSqlukapNxEoOELv6atZOH/LKclA/JqMOpTQnIsoD87DQAug09csFyLChcmhEXbyL1KQCk5YubjeLuEHnxJdWpn3VOKIPwhItHSNgHVEqBlDmQzcb0j6RZFyBhhAmpaalqmFV6QhLA94bUDYEsAPB6AswKyAABZW8HFJeoEPVYCgCAWgXcASBKCAy9CqYerhb1VJfB3p50P6eY2UDB53MvvE8d2Q%2BkpBgi6EACEDJABNDIQaMjGfiEJBWQW8p2KyEzK9Tmc3KwIfIW2Fpn0B8aiYJmSzK%2BBsysCHMtgFzLJzKBuZiJHPpaT1QCz%2BSybYgrTJ4DiyVZPfKWdkBlmYzOZSsxWQjN5m4y1ZhaDUULLiEiz9QDwPWZLJSmsz0ZssrGQrKsg55LZfoPyTbJ2x2yucIgtVqb1XDmSTyOMv2SAHxmYAQ%2BxM36a8DJkUySiVM%2B2UWFpnBEqoLs5xg1Ajk816AisjzEzJawVppu8MGmfqDFnZyrZhs8OQZILmKzC5vsvkAmNaxGpy5XZbWfqF1k1zo5dc/OVZGblmyW5qs0uW1k7nMJK5KQJ2X3NbnMzXZMEQeSUUVkPBFZJc3CmXPT5dy2wwUM4BcGWg5y3BechuVZDXnwz15Vs/mVvKDnCDkZIc6wDqgWjWB5QQE1HE/JfmrhVQScgGfrOBnj8heXwMGRDOsBQz6A0wBWWnO5yhz80q4AABp6htQ7YckkzNjkh9n5r87%2Bf9MXRWQU5lgKBTvKLAChrAq4ZwHPNVl1yEFuoJBbgqLkxAeAo8nvuPI7nby040Ck3sSVIWrgFoKwFBVbLQWEzsgGCr%2BaTKbi0Kh5iM6mcQVwBijD5tcxedkDxYkKeFEi9zIwv9n6pbZWs3eR6EXQXAs5jM%2BRbnK%2BBKLuFKwL2SUXUXWzy0E81hQjG7JrB7SRYchQbIUWmKVFK8s%2BVYv5laLhZRYPeXopIbVzDF/ctxVwo8UWzlAcM7xerJvn3T4WyMmwPsiFCm1bQCobQAIjFidBUc3IEwg4R8Zv9ngWQfQL4DqniBMw8QK4GnATmphjZcshCCE0vE1KQAdSrGXjKrkRxSi8MMwBI0hDNLWlhIdpTPM6XtAzA6Vb%2Bg9KxjcgZFvHApYtE/lVLkgwi1MO4pWCpgZlsCVMR5GQZ5gYo3IfiJlDUAsxp8%2BzLQNPkWX%2BBH4fRZLMKWyVGVuQMoeIPF1TxtgMw6AOZYgvbAXKSoyykAPAs%2BW1KSF1gBMb9BkDGgwAMgCOB9l%2BX/LqF7YQFaQpBVPIZABACFVCsmXMJuQKwF8F5yTAEQiw5StcHApRpwrUok4AEGKHhi/LVlDS6KhrMhDUrwlaykABsp8BDz0V/iHpcQCiBfBGVyi5lY4v%2BDAB2VxWUZeMp2UosEY3IYsCwGIDWRvAnSV/vMtfmxdxl3yq8FcsG4QA%2BVZilZfip75uTtle/JGZKuOjch65FkuZQnPVXJBmlFqnwLSrdL0qiZP01MPaukAxz9Q0rVOaKpMRcqEgfS11X8vzlDKHgIqxhGKq/oSq75g%2BJwDIHlpMBZA5WGQOQDYCyBLAKa9ALIBxz8BneogCQNQkeD0AU1OnGQBmrKLkATwIAcrJYDMBwyAwiwAMAGE6gLBoZAATnKydrmAsgOGSmtaDVrpWaastZmtkAprhO0rUteWvIBwBYAKADADgHwDEAyAlAagHQAYWsAOAaAQQIIBEDiBJA0gSFVLjBDMhoBfwDMOKFpROlVgLuLICQGLhHLCQd6uBmQGNRnlEo8sDAviMXQEA1AmBOglUsPyaDs6cIT6f12tYqtrAhkViDqnfZwgQNyCkbvGAFC6hFQZMcyPAKbDb9hc0QkafMilb4KsYcGz6YhpGCrh2wSoJUPxDtnJBuQOG53mDJmCD5lACchXIuCFCPI8wUG6UDBtRxEaENw4eMLCqQXx4sNygOjTHwY0Ea04fG8PAJvZJMqRNtG3srhoY01F%2BCyqr%2BQ3nY0YrclU4F9fF07bMtTlcyq5Yujf6ztf1ylN/AdyIAAaVCQGgnlvl1AyhjQcIPgPISqxQBe8YPMRMAshnQzZg%2BKQDRrgTnWA3NHm0oDKCc0ubwtKwPPBJvw2WBLAQW%2BzSFp%2Bn8IWNWm6UHYHaihbYtuAFLUCQc3CK3NymiAFFuDIxb3NcWlTfhsC1hlNgwi/hCVqy1EQctGm0rbUCC1JL9EKSm6BkRWC4smqOS50iwHyUVoCeVc%2BLvUEm0zz4sLMeIK2RGASNoMEYdVf3BLydQkNKG3AGhvbApA4QtM2QvIQULLRHm%2BgGGWIGRoQAxZrgO8gvThqWALthc67U7Lu2udioCc4IECGQ2obVw6Gs7V9p%2B07a9tKQCGr9t23/b9th2/UMdsUIPbSgL26DnDVu1KzjVAYFHVduR2lA3taOveHsuFysrfASq4RetpcIkaOtqyuELgBSDWA%2BAVG5aKppDxkJhF32uCKsuWis6gQHO2GpTqZXU7ad9O2%2BSIRo3C4DlYwY5YulOU0xF06qzVTcr5J3L4YDyp5aFy3CvKAQ7ypVZ8ptX%2BAudcEITcgqqgQrwVkKipvrtwCG7loEK1FWbt2VxwsVOKkYLUCcU6BCV8CklUgrJUXtKVccDbXJr538q3iNO5DSkCVDLQkdIFZQA8GSoW6edAEOPUyrRQlaqdNOunQzt50p7%2BdcWlIKHqVAYqpVwuGVXKvxAHASdn81VV/V10kTrlvgKAInv5XgUs9QenPXnvahbTEwTzE1YLkL1rh85Vqn6dXuY0/S2dlu8jZRrzwAQgdBu8fRnox2I6sdUe5LWihu2L7q8fCB4HUQRY4R413amQMmtTXpqR1MgHNQIBj75r91HUZvCWqP0VrMCkUMsshD329ryA/amtYfuHXkAs1MgMdSAAnW375aVauGXDLMAPBLAAYSwOVkWA8B6AAYOGfQAeABh11sgB4CmqHUZqv9o68gJOt30zqEA8ACAHOq8ZqBBuFAKgM4WnCkGQAxgVoMAE6hgHyAXgbToumE4QB9AR%2B8gBNWMCxMZAxa8gG0CwFEB2wbWDgzgCPAcAHVn%2BwgOzMBgegODD4LAvEAPV8GaCiaz/QDH7XDqE17ATgNuv4DMADAwnSAPLTGByzhOMgYIMmCrDcBc1/AGGUUXbBZBggrQBIKBH0Bjq91UgBgAmqTVoGOD3%2Bl%2BcZGUDAAKIygTqKAbMDBEIAxQMQPeHagQBF1VlK/YwFGCUGfAiUMkFUVP2CAb9Wh%2BWvfpwDDkn9QBttWYHKwwH1yiBttYsE6iLBLAcM8rM/r7UDqP9GB7/b/v/1aHp1iAQg2gGIOkGV1FBkg%2BkeoOkBaD9B6VkwabisH2Dn%2Brg6YFkB8GBDF7YQ0alENTgdDkhjA9IY9mFBzDGBhQ1%2BSTq8GU1qhjgxodv3MAdDW62w0ID0D6AjDT%2B0w1jPMOWG/g1hvQ3wHsPBBHDRRFw0gDcMeGC10gO8nvoP3oHj9gR4I6EfCMPBIjpQGI3EdKCJGkgZIBhakeGNS60T7UbI/wFyPlr8jeqR/T4ZkAv639g6/w1gfHXYGADlakADwADBmAeA5WNtQGHKxwzm89amYIsEWDRK1DqB1o8fvxO4GejKAcQR4EGNMAkAwnRgKQGlP0mST4JykzIDRldg9g8oIIyEZSiwn4T0R54LEfaj5AsgUJrU2EYiNRHET7QYUxWqrU8BFgdah4NDMbUNGG1vJuGcgdJN%2BHP97RkQH/ppN5G99PAL020awM4GK10%2BcMIMrhlAA) is how GodBolt compares the CMSIS and CPPReg versions. Looking at the assembly, it's pretty darn close, with no performance diffirence (only minor instruction re-ordering). +[This](https://godbolt.org/#z:OYLghAFBqd5TKALEBjA9gEwKYFFMCWALugE4A0BIEAViAIzkA2AhgHaioCkATAEK8%2B5AM7oArqVTYQAcgD0csGADUqAA5rS2YMqYEARqRakAngDouABgCCcgFR2r15XeUABAGYEm2ZX//qmtoAtCxMTGZITi7uLGJESGT%2BygByBBiswsoAwqxiAG7YemzKEGyoeYXFbsLYbJgmbNhmGAC2AJTRrm4YaiakBMBIRDnofQNDIzyW9JbB0/QAHMoAynUNTaOkambK1uHKE8NZWrWkhZgWNi5yTnc8AMwE5UxiOMpcD9mowkSEbERPrh7k8Xm9fJ9skQTGpsAB9IhGYjCIEg54VcEfL4eMTlIgEdBsMKomy8UEY96QvStZEk6xOBSqDRaYBwgAi2C8TWEkTRHnqnJyAAUhQAlXAAcTh2RF4qlbNwADEAJIpXArOEACRBOC5vhlYsl0tlRoVKrVGu1NiJrWwwjULCkTKCOi4AHYBNd/GJhM8dNZMJhTsIEVi2cpfpgQCAxM8iGpEQjPp7nP46mJWqpMllRdo%2BMQVgQAF4Qj3RZL%2BfSLcgV8sV5T6egANhr/jrFf0Dx4rb87eS%2BibABZa17e262cn2z6/cpFQQipgAOoETAJUOfcOR6OxgGLJMPFPJaccWfzpiYADyHg8tSI64em7%2B27je8BB/bRGwrTUrE/WKhMJ1CwtrKAAKnSyS/KQYioCM0KwnCrQsMIADWHxlqOFYYGwvzYAAHpoEZECw%2BKoKohK/GByj5GEYgQg%2BRFRiAbAZtgAyoHC1K0l84EPLg0ZIXhECdO%2BmHuhOon0uOILrAQHi9qSNiMqBSJEDyUSko8ckCvJBpynCoGitYyqgZaOqcs8%2BomlKhnGaZWpODadoOk6gQsuhh7%2BJ%2B36/vR2S5sA%2BZEIWJarBB/hQTBIygYBKksNxnl%2BN5P4kX5QJEdBsFgbFqkol8AVBSF0ggFW6XuolFbHjo8H0Y%2BTE7kQr6TphyTYbhBGkERJHpOROEjFuMYvqG%2BjEHCvqhRuyiLGIzWpvWbWfh1XWkb1lEDQ1r4NiYn5jcWtUNqN42%2BHIU0zZJyTibNyTJb5/7pZFWUxbCcXcf5eYFnt0aNk2ZUYXNlW%2BieNVhoxz4As2%2B4Va1FGLYRvzdWRC2g4Nu7DYde0g82Z1QwEMP4XDxErUj61DSM%2BjbfCR0gyNd5Uyd01XW20nnV5X4pX%2BkL3YiUXZc9uWQgVH0ll9Xa/TjfhVcowOTSTAJdpDfa431%2BOdfDRMw8jG1o7TGOTV22OK34C0q8tPXE0%2BKONcNFO7RNDE07bx2nYzY4SRVN2pXdfEZTzT3YC9akC%2B9wWfSVQ5i4byiS9LDGy0QQ4Ky1SvtQTCOrf1Fta2T6N2%2BGQ4G0nRt40tatmxrcebeTO1U5NDt087LOu7Nl2aQ8snyR8im2CdyoAmxRJMOpfI6cKhpSqqoG4KKKTWAAMmZre6pZo/6RPU8z/PDnWsBzmOr4bnaB5jk7/ae/KHG/dhFk5Ufmzt2c4XUuAU5YHkJHoHUbR2Bv4/H9cYCYk%2BLtgeiMVASBsCoBQnCdAhRSAeCYOgAA7soEAyML7ACMEwOEC12BvmyPodA6AmA1hoq8NKDF/4R2Zu7O%2BntIQBiDHaEMIwWCBmDDWAaR1QxhEGGwW0AJwp%2BBAefEMPDgBNEwCgtBfcMFhGwTDXBD9/r9kIcQyOEBWGMOENfHgTZShiL4XUEYwRlD0HaO0MMk1LCR3rLYux9i7ERzEtQ2%2BPk6FfAYcGbhbCmEcMznGeWIw2A1kFiHUKLJHaCJ9llW0rQyAmEQiwNQR9H6S1iXCYwRgEkjBlhbTJLATBKIcX4fIRDuo%2BCfrCF%2BfsA55WyBEo6QJow1R/so2xJQTpHXQB4CANVqk5XioHL4DS9pNJADVToj9inTNsaiRuFZS5kXSfk7JvA9ErJdgswm6QMnaLYkQCANj/AEFEXocR2BMCQk0ew3m/t%2BbDO0JEviX0baNOeSAUhdFWnTN4DwWJ8TElqFQfoZCvhrlMJEcoGkwhQhnIkcoDwSQWQnM/J1GqvyjnFJEhVS68yPYcw8T47R3itHCD8fVAJPBQzBOUKEoqhxHlvOBJhPpO8oVfgBUhNQVyiVkuUDSkZJYxnLNIFkpMujI7/NMICnlpKawCsZaM95KyQZ2EOVM/wWgL7bC0HeVAyE8GspAlKhJXLZU3IVayJlmKUEgBFWKogjg%2BLqraQ48F2ibWTNdcobFdxpKkn9fSR47cFL0iUidawqApDaKFEQ9I5gNJBqePyXUK8jTWGyNkdUKwhQXlnsqbIABNLeSal6bD0umzN2bc35qLSWpyp9XLMkPjfFltCCUASqWygAst25UF4EQ1iNb4UCNYP5IVQjWOcC4rw3mwHeEY3S51vmZf9YRAUUVsVzKwlJ3rjYl22YjDWBCiEiIRAMfIBAwiWI1X4CAE60IbkmjVRJqFIS8X4h8r%2BFi1lrNKEu28liGKWDEL6x%2B%2BK/LDuUAAVRBqUlcUTkjPGKL4RZVEtCsJddMpGvb%2B3ir0a0Gk6A4Q4EvVIb5xSoMDSAvoHwcI5KQiUCc89BBL1hBrNBp1n6Y7hhYuEBMpAbUzP8BYtg6B8JSATLu6ZuqJAlEWdgg176gRQEIwSEj2AyMQl0VC5CKEf1AO9gB%2BdYHvW4vFlLdtkHn5stg5NeDlygGP2Q8vNDH8MOYCw8UnDfaB2Ah02p4jpH0jfxtVRi2NG6MMa%2BMxxErGr3EJg1x5pgEQZ8aYAJoTwmfX8vE3hSTOS/oyfnXJ02HF9W/GU86wLGmtOmccS45xbtXHs2s12kCuG/NDpsyBUdVEH1TrPJea8t5QzGZXcA7mWUN24VIIuAYHMiu2P3andWfUGyqLPXFtjTAb3euSPevTQHwwvofVVz9nzsA/olTpiA43jvKBA/V2xEH/xQbswxBziHjlsBQ2V6i6AVzKEQQt7AXmHGdfw1CojtWQsUYcR/S78P7HhaYpF%2BE0XshMeYRehLHHkvjNS5NdLmXb3ZfrKJvLBXpPFJq8Fp0uSEaKcqzxFTWW71080yFj4OmAB%2BD6f1umyKUCAl2vbC/G9dgjemvXTOe/WczkdXuQne3BwHjnV12Jc5sNDDngeg/B/YyH/mCMw/p6FsniOv7I7saj6M6P6MeEhLF3H7GktjJ4/ysQ/HETs/JzlsTEnsBSdbft/wnOtNwa/psi6jX/qK7bW4jtSueu%2BGN919rI6x26cnaeGdI351jYL0QbPl32xRPXdoTdc3QfZAUQCGn81i6rbLutk9u2XfxevU%2Bsnh3UIPdO3p870ZLtS7/Xd4vD2nsx9ZkntrQEQIffDF9pz3rteocPQDoHIPiBg5tcbv9Ee4dhdT8jB3mPscsZ2/jj3ROGIk992T/3InctB5D0thxR%2BGex0PczvBH7Ddpl70zcucGc%2BcBd0JhcoAxdOYvhlBJcedpdUJZcsUZ8m55lrorM3tT8l8t8NdI519/s9cd9PxADbED8AsQCtMbcXtT9qMiRaMMcncYsccu9EtONb9YQ0tvcMtH8w9n8A8qdg9CsLNkgv99oy8MCmZmsmtNlhEPNoFfsTBG8KxlcvgoN09KkF8s9%2Bs9NBt89l0i9l1vs/BCC3MGVMMfM8MTdod1NzdKc38RCbVZNSASgZtUVt1HNshNC%2BsBt4Di8xkPNgC7DQCrs0D0IZD4849IIpsRgFCSDfBUEFDCQmBlDQ9bcsCVdT9NCoM%2Btx09C89zxZ1RtF0AjV8tdftXNN9iCDcKDTcQjqC/d/ckYrcyEHD8thCVC7F3C2J5td9IQfCaw/DxsxkEjgigtQiSFv1wiE9vU1DsgT9M9lAcjT88ic8UJ9Ciji8jDbxS9o9H4TDz5Kiddqj1d9dd8IA6jbCJi6tX8Oj39RD/Aeia9d868%2BpFEvhBj1iaxxspiyFDjkhowxjxD5daxoiXtMj1DsjfNB0tDqls8ztyjbEzDTigdbxLiYSbCQTI5A97inCydni%2BjPw3j4YBFPjMSx0hiCiQMqS30kSHEgSDdsSpD0CLN5iNCKS4S2U1jETNdkTjiN8049cKhsBjAMTrDD8qCQsUD6xcTqd0jilCTa9688Evi/CaTlB%2Bch96T7FGSLjmSLNZiMi59sCliVilieTtS%2BT6wUShSziSBgBgAfBxS/NJSGjpScShCHibVxCQYFMKt/8VNxjYcpAf0ABWXAdY0E2PSImMuQ2I84naFItIj/VQyEztbQ5Yzk3IhEgo6dLYww0o4wnUpDAUogs4sYq48QmggQuxFoz%2BNou4%2BU1M7oqvWbIk7AAYzkvrQfOk7ID9Efa3R7M6T9MYv3askXGAr4SEfw5dKXKMpo2spchxaM6Q8I%2BYxYzM80zMy03PfM4bQs2c3YqiMvA4ksn7P7XXCs2ozEt0m46UpszohUhxJU14lUopbLL43slCYfL9MhGsDU6Ar%2BcXI8kzRAhcp/WsgE/wPU0gg0yOI0tcySFuJNENTuMNbuZYvTXkVubSVNCtKUbtawFYAAaRLTJDLSsjHjhCItIvrRPhcn3mbVdFTPZOyL033GtPThNm7Q4pGCQhQnhAfQgCRn3OXFXCQFDEQRXASHaObIsxcJKGkokqnyxEVHZxA0XLsRAHZ39KU0%2BL4rZ0gorEO0EtfR/IMtQk4ogDEpkskoOWUoSGUBMTMQMwWLgLMUgNMXZ1BMQqSnTI0MMp1JW06l4qsv4pYDMuECQDkk/EwHMpEo1lsokqkrsprOXIcVEqG2KMLyLNvDkqfJbM1RK1cLKz/wGKCtwFMqEu1O8MqogEcqQDcpnMl02VmJQrJDQruHDVWCQFYSQQADUv4cKk08LBQCK4QVhNRrA2QLxFwBq55oNcByLHhKK00pQpqZq5qFrZ4lr6LbRG0mKXQVC2Kljniax28o5agxo%2BrMAkEK8EyVhbqkEpEBoPAr54RpYyxwT/KTSsizq2zUUHrMoRgnr%2BrEEg5gBq8h1oJOzvZUEBpuZPqiciqhFN8oNniUsuDorwa4RJCcUfrLM/qoSAaobZsokMbAa2IsbfAwa7qIb8oqaKApZYaxkcb6a8bgKe9vVMaQBTh51m5A1Or6g5JQ0GQTpu02JgBsAOyRqyQxrdJrIaKp4JRcBFxRQTJlqrRS0LJy0lbu0Va1aNbJ59rd4m1jrnyibWs7pwNT9zqU9Sbq8abvjI59ycqF1QKS8HbMzebgZTz49vYKhkIshJbSBpaOyEQfIVDNBWNUodLUlAYdAQVrrPdKaybUUabwiFNg79kIAlBeb2akFBz/ytK2weA/kpbfAEjIUxMWEaJvAWBGCEUkhC7kExdkVyby7Vyi5lYD004kZk7kauCMko0MxvdUp4qpyJxe9Rcubpy4CEDD8ZdwiQr/sB7QUERUt5FWgRoJFzKQZESLNQ7w7QdI6fxhIj5Ca1AxBaN0h4618yy0Nj6ZbT6iAo6BKwcCqHiGUiBSsb5qEIjwjn6I637z6cNK6QGfI1kDNwwcAfBPwgGIHX6oGdMxg2ISIyANxEr1tgHkGfxoGQY4H504aj6kHd8z6mA/00GjASBBMHxLiyGdpQHKGbsmwYHlAiGEGWTljGHPqo7qGMG6G2QGGw6X7yHmH2HOGSHI5cHxGfIRGT65H8HWHJGihiHwjCC9c7qmgL6kZf0dM5TCrHiko7ambowqypTv9p7%2BCKxebSBEFEIvwQzP7wjkhXziT3zpzjKuSQJeb08/c06nbCdYR0q7Ft7d6LlzLQnbEaS/cR7UAx7fJJ79ibGlzRimTLGwjuG/K0ziaFiycoNFRom/BB7N6uCmgHGkdNzqkQZZGmGoGvHUmnimbimTLwnLJ4qH0vLFQBIZdWnkhYnvGIB4nEmJ7OayFwLecem7UZcvKoAKnxm6IQLpnF6JVvGMrplpmBdS6oLzzew9mjiUNvaX56DG6otmD8mbGIBtUB5hBowwEIEoEYE2J4F7rGnydAnZsab5VsBKmhybLen%2B85lIyVni8ZSNnikxlR9WnwJ1nhNODOzWHI5pKEhdGNZ9G9FDHvSyds69lSADkBpmNhAd4PyIWvJT9pmHQtAAQ4QO7UV%2Bn/dnidn/coXrdmWLpy6vAFwa70ARgPBSB0BMwEhUM2U6W2Ijj2VRG4QEjflu6KxFLkY4lCgIBQJenBLhI5WcmcmNzbbHbZt0rPmM7gnfAztAEuKg7tEeHRGOzo6b69BUB767FJZSnU7TH07qbjXNkY6aJPxHXltm9VZN916U6t62gInOmjtJpD72xr7b6HXI5V6n7eHdN1Xg2h7fBR9HzsWbGFW6mwdR8ZjCbkg82FGxGEHWGoVEEv6AFvVUERnWhx64rFmwdWhEEzB63G3InM3/7YzyDeHsHKI82CHJopHEHrXQcqHYQaHMH6HwHx3%2BjdFVH4HpHH4h3UGp3BGsG12fpF3CG1GuGLNNGzjtHP705EC/0sX8SbHDWPWLH3SrG/c7GHH0lzdhJXHmn3WXiuHLmPm3Wgn/HvGXXAIGW/B2m96Bs/dNK4XZl3lgTMmawO2knm3NWi3Z9rb/rMz1KDnCCh3GbP2EOw2On973RhctmrTgdiBE0gC02ymM3v1z2DGvSr3plcWzgCWLYiWSX3myXyWljKXjAjFaWWn2XbEmXoOBDWWS7xOFdOWhseW%2BWBWhXwEIxRWmaJXbQpWZWu732/BKW41UATBmksCZXuPhMgOQm/dzOLcmndPAWNi/dQXjDpPycVNEOxmkcGy6I5XkhFK/cBolW99xPcO3p8PSgwPImumSPZw7ORIuLyc1Wwc3Om2C3nORNC3e2/BvW47I5WPc786zGQBW7i6vlmXfkNPpbEzfATlcs674pWAm7EVVZnq27gKxXBNtPuHV6S2LE63HQEmG2kPLsIAntL6MusIA2rXFHSCaO/aevlAkuu2v5RdBcBBUOSmN7gYFvkn/j5l2qhbg0RaO5urMLni5atIU1xqla5RlQVhJ5RQVqHg1qJrrvbup5TbDrnR3JLadXvVPEmFQwIl3UyVI46UMZBVrPbdViBlXpweEWGVRsp7Hs8JLB0rLqfRKZmuQZ3rB5OyzXJsQbaU1PLajxE6tCQZcjoehl6lFUhV3l0VuHJZjc1dfxvBfB6eLNJZW6QY6a3mQvoarqMfwa5kLNE2g2NY/viUyYN6geQZAfeUV6Ju0NzYKVUZ%2BpdYHwbUal7lqerUlVP064lURfFexf1tgZ%2BackGJzfm2s7N8rj7HHHWhnGL7ifbEFW1UtU%2B4dVC8AyuzrDXAFoVNSmgfzF0ubf%2B6NY7fiMX3QjnfUb5WSqSh3fsBtUgg9V9LvgI/MT/eYZA/pfeUQ/sm1urb74SbMPDjbSVpgvCnowqXBO2up07PDjyv4QxikZq/jXPOrss3mPilfPvGq%2BKWa%2BBOaX6/ouZm6S4vikEuoBZ6JnYDSPoxVm9EyPkCUOxvMC8nqm2UinNzO/WncjaneGKHSWZl2/a%2BR/hPvGV/7Or/F/i8QPO%2BROXODny/H7D1jm2VTnGDHcT%2BKjUVbn7m4CSBNAlgSvMGaP7bLC0j36lBr%2BWIYEN7Ec75Un%2BPyd5FU0tzIDawdPQCBi0lSV1pWBuatl0Vd4J9FWzzFVtPwL6Gki%2BuXfFhACphKArEYgB/jJx4CY0GUn7DhrrWIAEglKlHZQCWAFYRhRkHXCzDQIOQ2obmV8aMMxgMQXJIQcvOVLclqTyCaecNfXq8j142piuEPSFuXTYEy9qu0KWFLwguTN1OobXLQhimk6%2BU48HVA7oQCO5dxGQzxIUI6BQhndk0I8Z7pKBu53chQGaMitrQoq60qK%2BkF7n4ICHvdGKn3FtKxXTKRwJezCBsHnzlQ5d/EcsKlCMBchQIq4lMUZGa2iQjAXBbgogT3RTiBtw%2B62RIaGGyFwhB61MFIcGAV690W8R6dbHHECRCCSw9GNgHUIpjXwGItQ3IU8gJpjcfukPPVqilcGQJ0qoPcJKoPSodDMhB0O8L8Q/69ZKedSWHlgK4JW9EelgZHqj02zo8bq4NLHh9XLw6lhE0wwSpgGeJSImWpnWxkzRuFD9gB9QwQKUAdj3Z6YoGdKuD3%2BF2hC8aA71CcNboYD7ETiUEaT1KZfcGIjwiAS%2BReFuC3hOQ0FDzj4BfDRoPw06O0FaYAjnCQIu8CCOmRgjmuEIzAfAI56k90kXKe8OGEkGDwBIHKaVGaieGtlP2rwkAEMNBStNihkCaMFwmeB9DPwwPMnLD1S4bNheBBN/mnCgywjtA5jW8jpnt7R8tMF9S9qUPj6/1SqtIpJAiGjAbIwyfAb4QEUlHTIToWvQZFsNUFjIDeQqMMuvyQqHtZRa2SiPKI3osglREpFUVHycavtCBLvesAqz1FqADRIAI0SaOxFmibOS5S0ZsJUG69ae%2BvHOJ2UdGh9uGYgsgvWCtEw9bR7yYYTXH4BYjVhk%2BX4c1Q17eN%2BRKEQUXtB6Eii7QrTX5DcLYHZDTBFg6rs8zgQIJpKQMZTtkKsGxiKwcrLMRIM94ACQAMguFHIPZGKlkRAo7kW4LqG8i/cuYqntsPUHVx8hQ45/hdjZZk5mxbgi5K2JKH1CDBWQIwbIMkSNd2B1eSweXR2Yjjf8OdWgWOP/5SDJxpyEwV4Ufbziaxi494eiM%2BEQBTRy6ZQOWIf5ribRSYtQS8i3FCpzRjiVAfuJsaHjIEx4sxp7WUDnioUJyYwecmvFIo1O6KB8dYLaqE1Tq2hMwNRLAjA0eYNw3uDgDwgzggxV1GcL/R/CfVyedBC2BxJ8DvpqJFgQzEbxaEVC3RGcJiFwiCRwg1GrQAYdYxY68SxAnEp5FCGUl0YV02g9cumU4R1iRgKQQ4pLFkncSliiNdSfCFklGJIQKQIdOZM4qZ1duFEnSRbCkldR8W5KWsd0JGDrA6JWURrpxEITJJWJlEl%2BIqFxDcBsOronqHriSQ/gTAGopjlqOSBhTygwkMwK9gEa0M32XweGPixUzedjk8kOgcRHxb/hlA6wcFtMn8kIIxgkIXKTkmLH0BvcNYHyXTywKxTUikIFKRFKqpr9m453ebtgh/A%2BhhpAw%2BAeGAWCDhLAPAWeErgCqn4Lw3KSKZeVRKSIOp8UxaRiwRSBi4%2BSGIqfVLKkVSkptiHpISxkSYJ5E7xMktkF0leS/ExgCbN9TZAFT6w1UwKXVJKkNTMRTUxLK1M/TrTipTERrogmMBeFNpzqDwJQJtQ5M4yyFewaLXQqwyaEeTW6VxL%2Bn48eYb02qV8HWAtT6gUI40uh1L6hTwpr/FaXaSBwAydpq3SIvLXkhwghprwe0EzLgGTRJp002aeBnmlLFwZk/UwlFLIgxSNAqRCAJtIraQzu%2Bo3fqW3EO6hokZLWEvhmRfiMT8IFyG4b5KyFLiapySVBFjKWnZAUeygFWXhDVkojmIMknwHJKoS0z9uMshwWLR6r7kPBCtdanCHCFTwVQuAWeGyAe5PcruPg17qKE9neyohZ8A%2BCxWRlEzERqhU/HwFBT21H4yVNcHyyGzSs0qrtbKtsRTkLhoE9/dYb4EjTRphAsae1oUjx6YRhE%2B5LUZLHP53gLBk0OObUEeHUj2Jd%2BE7KflrlCdP2DkluSeCZ7PoO5w/OuQVwPwM9SeagfTmkQYiFymEJc%2BNM0PKFr0kqQ2cSsnIo4qVJoXLc8GnIkoLzYYYk1vJRDdpZysJm81OSMU67G9Kh7o1LJFwYgf0bqsVCLrVXp5VVGqzAnjhlVaqXzRJS8tvJtj6ohgue3NaZJ3La6CjmuWk7hpRMf4HNhEDzYAV2LAFSJGRdzNAEAKeagCexv/WghZzJwkjikfeR9IZkjKtVEJn8tsN7B7YaMBZZPIItTMJE6iSgE80uUZxNIeZfeXWLQrSQ2Ke0jKsYsBQVwFYO8nelUiheIuSB9ToF3MnciZLUEyjyZK0L7I/Fb4aw7cIAc/BcyUCALTh9NMdHDxS7epNRrE5ICwvjRsLraJnbwtmWA7fE%2BFzqP3IIu7l81n2/omPniL9z%2B0JFEiqRWyRkU1MB5sIMmVUQpmXIVFBuNvjxLRwMFzmkIHRa3X0U7C6ObRT0o4WOl%2BB3GcNDMhnm/h2KL5fMisLBTBxOKgmRXQrs12bZ/EvOOnZQGYoM4WLboVi7cjkvMoYdJOXyYcvwvJwlKvmLikRQGIf49KjWZS1utb3IXeL/cviuaXkz9pDkD%2B9mdXMEpOIIx85Z%2BGJUwRwX1htFyEXRfdQPFIsycCCzBS82wVfBJCe4qTjY1hY7iZkCLZFgQMlkmL/AdSwzuMmM4TtyS1hHJTwp%2BL39YFVVRxUPK7lBNVRbi9UWIomXiKplXMmZalg87zLPsiy5aSEtIirKv%2BsS2cfWHiXkj9lO7H6IcowUgCTlvPc5doJhYUj9m3GbAeEouIMKycYxAtoXydH8zFF0Us4uiTpU2MXlDS1KDalvCcLYSUA3khACGUetQVjvAMdCofqsrBZZxEUmKU5WgLJ5PKhBocp8DGABVJebhesRUyirSA0YcVaIqlUVEZVeBKWOgEdLOlFVxSblW8rnxhYLVTpLJc0p1XOo9VBq1xRKvcXGr%2BSpqy6kS3nQJS0lTyvwAqxspDYDVopTzDA0mhELWZRmMFj6ptK0L/VIYeVaQCDV4l0lP9UrOGoXCRrMMMa4DKBgzGiDnxeLA5O6sK7q9xp68hIB/I5Y8At5kiRqpClYCiM0UfVZhUPNvGzYuhiLHgE%2BKZwvjK1QK8BdWrti1rW1nwtYc51%2BT3ZPhra6ru2ulqdr2AtSntRYMaQiC0hw6itQ1TsrKAGBxahtWXR4BloZwLAQopImBjdI61SAYcvJ2wnhAkEcgndbIWQq2yuqXcYRBKCFD9oVCv6/9QOlyA%2BhUUUicOdGGrGQgDhioGwJYAeD0BZgNYQcCOSlnIUK5CZNkAQC0CwQeBEG5itGBuEYTP2kIP9XhlA36sYhoAEAHMOKhVgAKBM2xJLH/UpBLAlC8MJBpAD7lIQ2G3DfiEJA1geATA4cjWC43xEPlVIyOCxtVD0AON1G6MDxq%2BB8aIEAmmlMJqE0ibxNUa/Af0WEnSbSerGngPJq41KbsgKmvDYJuUAablAqGsTYRr5o6aTOUmhOjOFY0PATNDmszRZrU2aaawTYLTQ5ok16aXNURWmZhoJ6gRHVFSVBFxuI13CmaZG4DdKCZn0sFNtG4OEVC%2BjVgpoTG%2BsDJrY0gxTNQ2d9NFtyVNSAKgWl0EUsUKdT9Nrmk8Kxrk2TRitC4UrZavK0iaKt6WhIrVsKT1boRbm1UMZpa1eaStPEMrTWG602auNvW5MtKIa06B3NRWsbW1om0daptImh4FVq9EgA5tShBbYNpPC5gzgFwFbdVu43jb%2Byk25QNtpQ07bFRjm1hH1sO3yyA04W6wMImgzWBRQH8S2l9p%2B2gQUtYG8VrFoc3QavgsG%2BDYhumCabrZzcCLb7AAAaKoRUBeAI0Xb4tCI77b9uB1UauNdG7LYxqoVx9JYbIawKBGcCjaLtZm0CCjuVBo6aw00ACvZou37a6toWt7RhRiIE9buFO6DCsAx27asdiWr4DjqB2Ua0tBOzLaHAY25aSdvcnQLgHWXnbdtZmvnaBAF2baWd6W4LVw053MbSeJ2tiBcHY3U61dV2jXVrus1dbWdu25IgdoG1OtSeawEWieHN2Pb1dlOzXSsG123a7dj2vXfIrHkzhjd5wC5M1oYitbzwkIK3b7ts0ibBwAemjQ7o53kSbZH2vXByDiTGgxQ2gUXOrk6CplGQvFQSlLH7HPAsg%2BgMFCUHEDxh4gVwf6ORovDRgfNPA5kZpw%2BXZBm9renDapvb0gAmtKmMxJHDMAosogXwHvSADb2EgiNqoB4MPvaBmAT22UlMO2EZDK6zmbPZTuLsb3JBxd0YOPdGE32MFBRga0zOvpOizxAp8BWBGYM0xsQ99/gRBDFWdJI0i9FmRkEKHiDYSMoM4OMOgHL2%2BBUdF4J/fWAP0gA6dIB1vRTusBFLGMMgTUGABkD5TwiEBqAwzpb3T7YD8Br4MgYIDIHUDGG71IyBWCfSIwskE8HXrAhI7ZwmB3qJ%2BABA8hI4EBo/XajwFWLWD3ugXcfvWVTbUDZOMfZR0hBcH%2BdKwQ/ZQeAD8HnUS%2BlfRfsfiMhFwgyKWN4F2zCsYMgOyFCezAMVgX9rPCAKIZ90SG3dNGgNQcnMRSyu4diZSGVqAPKBm9Oh5IFPqi0daO90tXTd%2B2cNla59bG6Q71JtRCGEgSW/tNGBcNOqfDDwPw2lLkPp6/UbIGQHiKYCyAwyMgcgGwFkCWBUj6AWQAsX4CfDRAEgMAohtSNEAMjCRvETWLDKWAzAg4N0IsDdBugmwCwRDQAE4wy7R5gLIEHCpHWgIAKo2kbKPkBsjMgVI3cxR6lGZAmRvEXAFgAoAMAOAfAMQDICUBqAdAbsKwA4BoBBAggEQOIEkDSAUDWkMEJSByl/A4wvIVfOLVWCxEsgJAXTMkkJB3GTUZg8qY6AfVTsCAagcBJgkb3BC9Qg0gDaUhZ78SbANUVNMIktoMyANWcZQGyGVDih%2By/aAyQeHAknRG52mTEQcMsDWJMIUJ9HTCdAgXgJQEoWeFSOSCMh0TGIpHjMDiP2HktfsDkMwRTBgnBQEJ1MniajikwaDIB5MH4ApNATixWJnE/9A5Mwm49vJ1E8oEpOfCsT9AWk%2BLoMiARGTCOzCpLTiSmBsJvKF4%2BoZf1sRfAsIT498avhCCiAvx1aiEOUBCgp4yoIUJqDhB8BiKkZKAA1ECTtAod1gBDUhssBeo/jy8ZvdYHtOOnSgVpjWracDMrBIyMp5Htie9PmR/jzekXM3sVOwhGTLgCxP6fDO4AfT5p/4wqcpMQAQzNpu0w6YjNUmhTswbM49wtPi6RcCphk4KDsAWI8zoKH0zYCz0cppQ3aFYDdwL0rgP9l%2BrCmXuTKWnZN2E%2BoCOZSAea7jde6%2BiMHH3rE/QOhpGA1AhgjA4TCJ0CEibhCsaaKxFEiiDGG6NgmpIFCAHJtcCDrBcUBSwEebEAnmPN55qGS1Gb3BAgQ653AIiYvApADzz518/CffObnPzkzN8x%2BZSDbnVQu50ipedKDHn5%2B0FmIBebmYwX56UBe89ZsfPc7/AG%2BlXeod33thlzXJhU3HrhC4AZ4fAUkyDFlMFx/o4ul83xDj0gwaLQIei1F0IvcGNQJF6wGRdC0Dnr9YwW/eK0a4P7SAOhvQ2/thr9mFDJ0b/Swj/0ngADdhkA44f8CMW%2BIGBtHSDGQNIGUD3DFS7gDUvo7Jo%2BBwg8QesMnQyDD0igyYfgI/66ddB9S9hEYNqQlLZQkYDCdYtiHJqJFuEykAlCYxbzsFhfTpcB20X1QbFhi8FaYthWWLgOyamxeIukXyL0V3HURYjMpBvLEoFU6ZeUBKHiAKhg4Dhc0PVdtDyLV/b4CgC6XmLOmdyz7s8tpXVQEoCxMevDAjdqFVh2xDYY612GHDkcH86paJMknIzDEXq3pf6uJWhc0F/y8hcexQXTzk19ysLgeA2DrG4kBI50ZkApGBjkxrIzke2PFiCj%2BxnnF2BKNlHzE5AcBKwmprCQ1r3R8gL0f6PpGtrQx2QKMZADjGTrFRkAIOEHBmAHglgN0JYDDKLAeA9AN0IOHoAPA3Q6x2QA8FSMPXMjT1kY%2BQAmNTHyAMxhAPAAgBzHBWagVnhQCoCJVvwuNiMaQFaBuhkNXgJgKijuYgTBju9YwIZxkD0BUjbQfhEQAvBKFBjOAJCBwB8Cc2%2B9eGwoHc0euqyEmvrRm6kYvhJHHrcWXo1tcSPsBOAu1oQHoH0B3NIAeIsYGpqFvBBIwG4bgHkf4BIbnKF4LIMEFaAJAMw%2BgUY3sakAMBEjyR2G4MeGM/bu0ygYAFGmUBugzAPAMwHJrKCEgu%2BEARY7Q0OuMBRghNnwJ1DJCeVcjAgfgMdblt4jzrOAfVVdZrGDgWjZgMMsDfLoQ2WjiwJsIsEsCDgwy11no30ZR5w3triNsY0jZOuo3EAmNtANjdxsrGCbONyO8TdJvk3vAVN6gPoFpvPB6bsgJm%2BQBZtGJ2bqRTm1%2BAVu83HrhAfjaxjtCDGRb8QA46PcluDGZb9djY4rYNvK2DAatq65rZ4Ha3dbD4fW3Hb4BG3ggJt5yubaQCW3rbhR6QIOrWsbWq7CNl227Y9te2fbftsTE0AsRB3CAIdskN2HDsd3xW4DixLHcEAJ2pjSdqNZdftsyAbrd1yu07eesiBXrddxO%2BQBrE8A/7YZFo26DDKDguwtRmYIsEWBJ6pbMNza/DeGMIPVraNpuw4I8Bt2mASAO5owFIA8OQAb9qWx/awcyBsN14PYKKFdvu2yIf9326UEAdd98gWQb%2BzI89ve35H/toByw9OuEPFgNRh4IhvqMl26jtDwcFDbQeO3HrzDnB29fwdS2eAVjph9g%2BRvlHyAsCX0LPsHBAA%3D%3D%3D) is how GodBolt compares the CMSIS and CPPReg versions. Looking at the assembly, it's pretty darn close, with the only diffirence being when to save registers onto the stack (in this case having no performance penalty). In this case (as well as others which have been tested), there is **no** performance penalty which is checked by comparing the assembly. ![Assembly Comparison](Assembly_Comparison.PNG) - -## Full working example - -Lets say we are using a Cortex M0 based microcontroller like the [CY8C4013SXI-400](https://www.digikey.com/product-detail/en/cypress-semiconductor-corp/CY8C4013SXI-400/CY8C4013SXI-400-ND/4842995), the smallest ARM based microcontroller avaliable on Digikey at $1.32 in single unity quantities. It has a meager 8 kB of flash, 2kB of RAM, and runs at 16 Mhz. \ No newline at end of file