From 523d29b84567888b0e8876ddb1b08d73dae10597 Mon Sep 17 00:00:00 2001 From: madmaxoft Date: Thu, 5 Jun 2014 21:25:18 +0200 Subject: [PATCH] docs/Generator: Added basic terrain composition. --- docs/Generator.html | 32 +++++++++++++++++++++++++++++++- docs/img/perlincompositor1.jpg | Bin 0 -> 15457 bytes docs/img/perlincompositor2.jpg | Bin 0 -> 29005 bytes docs/img/perlincompositor3.jpg | Bin 0 -> 21119 bytes 4 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 docs/img/perlincompositor1.jpg create mode 100644 docs/img/perlincompositor2.jpg create mode 100644 docs/img/perlincompositor3.jpg diff --git a/docs/Generator.html b/docs/Generator.html index 860144338..4647a2165 100644 --- a/docs/Generator.html +++ b/docs/Generator.html @@ -341,7 +341,7 @@ than the columns further away. The following image shows the output of MCServer' generator (each block type represents a different biome - ocean in the front (stone), plains and ice plains behind it (lapis, whitewool), extreme hills back right (soulsand), desert hills back left (mossy cobble)):

- +

One key observation about this whole approach is that in order for it to work, the biomes must be available for columns outside the currently generated chunk, otherwise the columns at the chunk's edge would @@ -356,6 +356,36 @@ would become impossible to apply the averaging.


Terrain composition

+

As with the other generators, the composition generator category has its easy and debugging items, too. +There's the "special" composition of "all the blocks are the same type", which fills the entire column, from +the bottom to the height, with a single blocktype. This generator is useful when testing the generators in +the other categories, to speed up the generation by leaving out unnecessary calculations. Another special +compositor is a similar one, that fills all blocks with the same type, but the type varies for each biome. +This way it's easy to see the generated biomes and possibly the heights for those biomes, as shown in the +previous section on the height averaging screenshot.

+ +

For a natural look, we need to put together a more complicated algorithm. The standard set forth in +MineCraft is that the top of the world is covered in grass, then there are a few blocks of dirt and finally +stone. This basic layout is then varied for different biomes - deserts have sand and sandstone instead of the +grass and dirt layer. Mushroom biomes have mycelium in place of the grass. This per-biome dependency is +trivial to implement - when compositing, simply use the appropriate layout for the column's biome.

+ +

The next change concerns oceans. The generated heightmap doesn't include any waterlevel indication +whatsoever. So it's up to the terrain compositor to actually decide where to place water. We do this by +configuration - simply have a value in the config file specifying the sealevel height. The compositor then +has to add water above any column which has a height lower than that. Additionally, the water needs to +override per-biome layout selection - we don't want grass blocks to generate under water when the terrain +height in the plains biome drops below the sealevel accidentally.

+ +

The final feature in the compositor is the decision between multiple composition layouts within a single +biome. A megataiga biome contains patches of non-grass dirt and podzol blocks, and the ocean floor can be +made of dirt, gravel, sand or clay. A simple 2D Perlin noise can be used to select the layout to use for a +specific column - simply threshold the noise's value by as many thresholds as there are layout variations, +and use the layout corresponding to the threshold:

+ + + +

(TODO)

diff --git a/docs/img/perlincompositor1.jpg b/docs/img/perlincompositor1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0d8f93cd9f8ab097c5c2c8014f462067520a0f41 GIT binary patch literal 15457 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 WhNmW0qX!m#;7oX#iZ<+@ss9b!au8Sm literal 0 HcmV?d00001 diff --git a/docs/img/perlincompositor2.jpg b/docs/img/perlincompositor2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..11fc5b51d4dfb429c154a092d397a99ed9879f6c GIT binary patch literal 29005 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⁡)wwK3ug@o#K*>DKHXc|rMPaDG_FsLv_oYeZvoAH3hXLQ_Jrr_J&(MWs>rSguZCc^J>I7d|8=uH$`HIZB zzAQg~J3p$g%0I{TtZVz$QhBU9jX>n{PnW)=dv?AAqxt>r?R>0sH(HXaZI240pd0~I zRLNJ*^= zQ__GnAy1bkoWpG-Y&LUH&oJhI89ci|tc$ynGtF7KlOWbT-cD!%@!g%>YhK3e@y&AM zA*({pQV5_9iL9+Ae=(y0x}0zgHu^vp1AsbI5L|q{Y75!24>d7_V%v(`-mWUOXvQ^W z+K$(Ev72``3FfkHChN^jdp9SV%a%-s>pEz;t=W>O%NH~Onvr1ErI^MlzRVhuH`-_eZUP7ub{O{&SoYI$ zD{jSu5kMN&F!ZbXk@D*XjZX=574=zGSIRth!ooKm1sP1;<)oIbi zQ>jR{RfxXb0_~1iW>L^SRMQMIT-+qLr4=LP zV^f@;b6oW=IH;(!{{SzU>foGkwWn64SjwAD`s*v~xn8%wTWQ?TZLXMM!wyAJvS!n6 zgf4S!Dft`wr_!aCahhv^b8hh-q;P!?V_VdP{pjw$s~%<#5}|rEe}_H%yGePk#b|aq zV)U-2!FUzPY10lXr?8x0R;K~G3h`GUjFVKYr34DmjFS`W`}^^zlScL*l44P5?2xq`?nm|c>@Bq&xO{XwCgQ@uT73zAH7Xf zd&^h;UoD05R+?Z_Q&C+9QC+QuE1U6diyo(@%WmTjjnTJtVbIr7@+ywC&v=_tTPq1> z1AL!$G#y>f3Zv?4I;t)WPh&dD4xE)ut*OoE7jJc-+etV2)dn~EslonL4eiF<^G}8^ z?A;~{W?)?x=V9HCEPpa<+qpZ>SwS+d{WxcM!Vf4?aHl-)?L>gRnt9a*I<5`EfVn^z?99DwQb^T`+= zTA_RXsCwX37ck%6N}p&{Si#QKIjgscl&tB=&Tdw+(Cfz1h93=1ikg(KChYE&`BGQ; z9A>K6Cb_$b4&z;3tq0z&Ug{DU*5{N$kCR%q130XxqdBe3HWG2g0BXR$D5)80&9%AO zIH{W7+JGrWIjh#~j8uM3DZp)@3*L4Xsm(bik(}bHwo6b1g|}2PMVhe`WYoqkC<7Kq zaA_0eHK9CMsuBzu0JR+09csPZ#|N5#xfN3B$rJ%j?rf7(gXO97s}oI%B2P*Hy=uFN zt$TPu1B#(#5y;}Vts%%10bSw1=~SjnS4M4ey(*mcN78^f$r7tPe$~)Dk@Tn@&)R@F z=_4YlND7+hX0^cSS$9xi^q>mX@({wh4LWX>&m!TgR>`r70P115+P!J*eYd@1iAY+l zJmhzv4dvAEdeo;;$m?8>+D`7ZI$RUpfI2U>Zar%Kg!y63a?waht$jX17*GdaqFywS zVooKD>~ZcZsIt1oIj$>4R+4+0g&2xQ`8~kzT^+Guiq4B}3A48_ry6*PMjCCWX3}kZ zo}VMIvbxSWt@|nR2Q|dmJ7iZ!Vlo;+4nCFb`bU$C|T>j2f+jO?={$0N#kwO9}EWUdm3Kv`5?1@Tjha(rYR%@JqJ-r*>rr97LtkTF3k^Z@FpZYZha; z_oqo9Wi^h|?KI@M&wAA1BGh9H4Rd#P{{S)Kx=G(~HJdbhjR0cBZ}W7nhfB5T#a4n0 zu;RKMJ|&7HBk-y+O%2#_i<7e4vXRFGVWnk3>S{z-rd`oGxb~*n*bC3}o5duz+(Xd^ zZ^o)>HpfkoZf$a@oH~w`%PP}~=WE^keNS$NTZXMas>Y-CzMk#>0G9jtUu%{ohZRwy z=CqN;#kxqp#40ZqD3NG65T6CQw_X(=U}7Wp^E42FXh-S z zuUlym6TV<(ll#(h`3{1ebECl^&y*F1Mo*NF%9ZMGWKxC=d#+OTNn7r{+WWl>Ynx-w z6`3`$&r05s3%hOz`&3^1IR1vKw6^4s$uhV1OiiEAQSD;BEj>ZtD$80v`u^^}dfj}{ zf^7-yRpzl{+Pb8Ozxumbo85p>`kelhuWaM*S;&9gWk1Y{uV}xd%$^dW(b<37(f
Oa6jN6{{SOVm$XBP3&wxjjF0I_)q>sFsNgXZ_#ox!ujO+Z z+Q@=9t-CvH0g*@AY$F--(ETb2Zyxcyn^iHycxOBl^r)UDoOXA9M_wBx#nyM693r=J zR!i^S(H36vHIT;yPdg5~IuFK(=Z0tUH?!SMbts5(N?V(ga2OWKDGsG_(h>^$h zTxaDA)K+tqN^$m*ew# z>yj{Qq7vtdcCqAQs45j@O-V}KR>wPa008k=7w7>s(_b*=xvfQpO1>Ese?hRW#Dy6}o3QSJww`>bysh_=CntE;`fG*oYPAgW{BBWH7HoJi0wFC(g VgCi;rRyd^Hw;W>R?G<)^|Ji^@M>PNd literal 0 HcmV?d00001 diff --git a/docs/img/perlincompositor3.jpg b/docs/img/perlincompositor3.jpg new file mode 100644 index 0000000000000000000000000000000000000000..46a2583bacb13a375744e9866b439d7458be07a4 GIT binary patch literal 21119 zcmeFYbyQs2)-PCiLI{L}!l4Kb1;O1Rcz~dVOOOB+Ah^4R;2PXr3WB=^m*BzO-5t6( z_q*ra)8Bhzbicn|kI|bk*{iDd*n7>jru?St$3KrtfLAgS(h>j!1O$K-{15QBjO`@u zWM%>YNK4ZLo&f*=L;x!SA^-)_A)&w0QveR{y-EIgw+4?He5%pO~EbGd;7svbwguvAMOqb9{1oc7Abrb$#>17Xp0S{(bz5 zvHu%i*l@lOk&%&*(VqB1Ky-u?5;ii*TNc#UB8q4R)^EsJy`SNTMrM?^J*Qw(Is$&O z89~RTWM8H_eq!w}&i>qGQaot8x{D;8O7D#%QP7mffT1f^SQ^kcC83x!=pVO&c;Do&&kqEv zHuVeniE|X*C`jxbRJ*4<0w~^({W*pfeJed6bxk0YPF_z5lV;ztdiS;}b%stuKh5fg zZC7XnU+7^~(Top3EQlS?^j(lyer%hT>Vy&A(;DNEi&Mw#^cgDo5AlbR76*wgjvo6JT<}1xoAY1 z+9&z(QC~3QyF8w&h4F=={z28H^j26P2^w}8z4BZx3MJ$zg#~GS8>bB--qUSN)2wh^ zO~IU2$v)A>eZV*50co$48(&4@%|;rOTa~Y&I(`up5GMAh>S=D#3@o>HIJi6;#}baj z6`v&!&=aLEGOI3m1TY-AixFzc$#fmjRWEbZr_}2Sg zDvWV#aO|XE*oi>(?RmUU4-nMb9&m=wDNcSlJGWHaG;A*BdIj6PE9!vMKL}U}Zvws-a_N46tRp$rFG#!k=Xs&6ESgAu0hzztFy*ZLkc z*st>DY{UCGw(FY@%cN^&g+5Hh-m!X{9DlH!H~2R1(c<_BFyYvBq}82KMWQSKcmS6^ z(RX7dDwRzCYKeXXkek48L*@Y_6~xD_-J80es~|L8jX}r!nb_2klx$;=2eZ5aN$Yv( zm_j3G6sJmzWmc2rtbF{(!;cQB&kS^j-zawJ+df~7v66SIKbrjTTDkQzF8V2d*WOet zQS>Sl^%s)qi!QV(w_}`ej3P?;UUK3hx;C`QrldB)%ZrWJ+qwHv49YxWmc5SM;3Kv| zj(0^g2e8%`gkh->!p4%HMAo=?itD#HYF-$J?X`MpZtk9iVRwCEN${-f>`yplPm4<{ z8Ro+V5=@g&C-%Qf!>4gXk$Q+xlZa*Ob_mK_xAmcg4RL2N#_5E|rmXVyy3LNQIebjx zcgF%|X4eLFSTo2?;1}Fs((_)9HRooiiTh7iaCw>}?WHgEm+jx}YPH#HW1H7ay|FVw zAh1-_66zG{fhiv&W1FXv)K*v3*Mw53zMx(%1BmSJfd_wWU}34TU)#C6AauIXl_ykb z90p@sM&frwwtbRBIs)!+poBK6#eHqF#1SV%(a8!?Ni}!QWb7EA;Bzn9I9AOIDWQ)H z>p#*_*Zl=&!Xv*pk|K2-VTYsbtIbFR1t!jXlOW!c_{43(1s7h0js9N>yI={t={ z@Qi_hli0jMOIn_x3(g!x!MY$z=%-_e?0f*JwWYwd&`^27sm!U&$-v$T55qt=W%NRV zPG#mY3f>423eZYntn{294h(jtwy{2eA?>(A^j1I!y@t7r6Ct^ugZYOE4!!%CYN|d% zfHE=TG+<8DsrJDS+Gfh?Qfq^jvoUY((8jiGuY-5?_eq#?QYBtC9Na>DX66Q=to;@Y z5q(W0_ywS#5{F}x+TZx{S?@+!A^=vmy9A|lOS|o=x}?(d!9%yRj#i4?xnu5FQpYvl z-j3RB8&s!YX0Do(C&vt{2`1aYNFo_$*)32W`7cBj z36w({I04r|jj(YS*U2B6IA5PDTP?)vuJQzfOOJ+qtn4{8V6poQH)|n$?g-oG9Pve0 zR*GfgpQ~kMzl{*BMUqppUhqTSTiY3P$w})VeAn6RXn85eKY7zxfuAl(&7sgl&CPR0 z&~sVJvDat+hey`WQfY3#qx%Q*Z|hS5(AoNR7u|e3He!PFx;5mX8JE3m9J` z6sa%J9HUfwn@}YaPze?*N9?{d2 z$R&(%rt76_{7pb;;op_xOj43;BAu2#B$%D(QINA>=9p&EQF~&~xZIDQF=ZCbrpoJ) zyA8SEya^8y{Jq9O-tF~T@qS4%eA`7c5+Tq~b7HO#mRt^kWPcox;+U->Q~KGYpSQudChy!mam&foB?+}ef1yj&y%TAp89Rc>!{Sy{WYNqjQ7oawE=a>N+ug>meQh(2E|8j= ze#}k}vzBgzaei&i##jlCEw4Q2;@b#5$sf-{zFz){Ti0;C4z2Tc0I+;yo2i%Ctnz!` z#K&9Kk0qw3)A}>-e7oJc!Fo)tcw{iRg>gipiXEEy^M%8@7N2{l@#I0Y@me^q=nLj+ z>pzfLYhyP?{`#+-JL^ZKjq`+OyX$$%sXozZ^}4b1y3CP>7#@bn7C0CBSq#FYxpgqY ztAs`&V0{~6KmToYyb!&2m;y}m^rda5W?ZFkQ`)8Q+IwGf-?PK3sderz)w%T8Q8M7> z8kdWf{*0}Z#ZWhJc6Y9xx#Gsm5)!qTTXE-E+xZ2IwW>C5bOZd|k&fX5iMj)MoNUpz zx9UczkZ;Z^pQ$8&t8kn-ec<03`&#hM>I7+;AGqQ-#W=tv!F@PZ$b>L8j;{9xJ>GL6O{u^S#8H+B)98WTKkJ)0U z7R9QvIJb*dA{B&*AQCy8+Z30Xv0vS)BcF`ClIyvKqV)_DO7=*h zk2cfv$u}u$KzDibLjNH~QNy5of_^MyE%wiAGfjbm0+;IQi1KJ57Jbq5bDAnXy^#ZU z*;6yS5x#v442uYndvP4KA|Tgy6&KAVlM!*?mY1S94#MN~|6v&qgb0L)|3BmLS0?BG z^BIqm`a_S`GkoS;H9tC~@nX}IIzjjG=Y?^eSoUTni0ex}g8L2DcL12|2z!G&NIq<6 zoaB42;lz(~>K5*SQ*`<7d2;g=qfBsNJq6$>ivLA!m-+HjkV~%D?$^ejtqLe7T(;bx znR40CH!LCdQI1S+yt}aYJTmKcZf`g!loDe&0hzErrZ-_3Wz!nkA3_`gRruH*E=8`V z#PjY1CrZ(is(nV-0x)L(V12~%y$%kpEo5)zp+xocf~EF%Ui_dj+U&L7!BUt)Z7Qvk zLu(`Sh~0<@!QW}oN_l=cwBaUhAPT)`Z>?x-C@Nt+2L zjPbiB`db#d$H;{hdW#CDt8Zv zuRozo?n%_*8B*gBENn2gUemniq^ps#w;y3k(zC>VcU1r(YwQ$7#1?7Tn&B6z&p!wzgE&_y@h6=&4B~41Ys#)Vah;-(P=Yl5M>>)6^Q-C zkoA8lxRJ(gyIh8zHI$&Q5Lr`34`VAZMkCnprJ0|igX6J%^MYcGg?>IU_7Md~QTT7N zbTaIWcR?Op^Jc6_Ze(zx87J*3+bZ5s_E)c!(_!Xog0A3Ps^yaK&dsu6u!qbB-9RXE zcj8^_Zx*yZw12gc-gGQKFH})eDT^`v)s8)KfL3NI$TfEU%x6CB=bU$6s>=OKo3vMV zQuQ$fh9=#65)t)TYCbH8>2 za6zA%`x~UN%$&NK#7W116|P_vZX;_Sdisku3MvR{m9sBWWVS7eGt7)FJIc-leM+tz zMH{B9_>)vSp##y(*B?EVw}fssnxchAEZF(pqGY;tCr}DG4;MTF&`+(eLzs)=c>8Ov zy_!kN+}XsdDq}BuUmJvffv4!$rP-Nq3JFML$^_c-M)WA?>ZAt`T8~I<`fvFl^;IO~ zHfUp2iY14{KKzRAks(cnnzQ}(w#2XKoQ?Dgv+7_CS%T(@$qi)WC9oG;c)a^J0jQ83&j11!^InsO( z&iY#~dJ(h?;A!J%FMkQcD1Q`7KVOuz;Myp~Pfo?)w2#)hn-`dAol|2E&p_fTLT0`L z*w@Ea+ci$Z>w1FH3{jrNk&E}MiTd0;#DutF3wg_r0A#Ez+F~K(UTY@*V$$P;99n0~ z97mFtT(C_eVcCW4*S$R?>R_HM(+%+`PJCm72#?G{k?ig2lj7^n zm4aR{HCzl;o*Wn8$$9y%9Ab9B{_OX4JL6LmD8Mci%I|q^LAdoba6lyM>c=uj1T+>1 zf@SQ+9*6sVntE1OW#n@&0mp7eB)*2V=XX4-q(hJ&w`hBXEspS%f)`rYh*}ki;GtX{ zv!3vg3{MAU);Ou3YjBaCDghlh&kp`{Wk6;y?f-(BGJ?Wt^1g>QE6h+VHssEC@Lc@* zkkglhSy9KgDtR4FnF*)$=+y_%K=p(i2VhL&0>FJ_-m%Q1a7-K z*KkAa99V~`(yIMr`iUskoYY11)!HL~{)`apqP}xx*!x@qK~Ldl_1M1BLLV>yxK(sF zTyV+pDHt4EL*rPB0#rRGqD<>`?Ke*1{$u=cG0uE~3%5qtMv&>q2g+b+VT7&YeWzz% znCIR2mNV92sy=R5K;qAc{8DpnLn64uaJTTC{~3H?V2;ifCJm(rZ@t}(zP1e2j#^A3 zpgh0~43K2)?O)S}C3(|qfjjTS3YyD{=5)Eqc-rY6fW!zIW#_o?2uO(KJyE($4O9?+Z)xz1 zxX)Wbtf7R(%Hqe;hqQ0MJQRsh>7{E&qh;Me*Ccbt2kMy-uY@Tg%%CypnZa}jx)(z; zH%Kq{u!pfXp{2qCtO8g9&|Wvk<;aYA%8R5>zcqg}ntrQ;=2h+A!rJ}gA@RQR9_PI%pm)h+kzYy&i>mfJ8^T|R^cDL5iQJS>-!(qV- z<;%FOLqoP#{u8|Tl6$O(U{Hq|&5KllW5!9W>*sbbqrJfCjOU9mU7=&3_X;ECu4vQA zyMQ%I!&r~q@Z*c(!dsb`t(EQRogbv#j;l?WM23`XjVFddQJlyRlmKwhxSMnFyiC`O z)IRxMWV&IvjmSNVb_#GxucVSXrGFQXob%7Tt&HwfHV(v zlDMNpvcXXiKvB1T5vx*};G?Cl;h}RfJRc58y(;QB-NI|9v0`2L@FS;-3v=l8a#@SYlY1dN30GU+ZZxtcNZ)8&aXcf>G-n|$gxBX86` zh8X}iZsvc3;D_icMK0f`?8&pnOog?56{@J8|JT} z3B&V)t~hHwCrtc?2Z=M4j!`pQ5e7XQxtSqjJbB?AW10C9ufx^P$Dmr`Qx30kmu8#V z;X02ze#!)NdcACER6n9>Xj6zS)mNPn&G^&$lc| zZ}85j|3>w#z9__3can&=K#q1?yZ;zzGZ8#dg%y}+H!%2_q3q3w^c>pepz~o6yH?8U zqYfL^ycp{df7jYC?!>a|zEfocc8cN-|Mn_Rp5YuoYFMwUyl4JwY1Dhi@bqIz7RGzE^&t=_=!I zHiX1jb!HSPvNN)=iaC@g4G&)_A>e2t*D~~GzFx7CAQ3_uZRC7!nr*tKRGM9c^e6a+ zzLDaWG1fPGHqiX7*n{)t`Jg+lxTZp4^z2tw_!Dl(;84y>Fr+vQ$8=;j@k4d7XrG`H zTsU8Zr3D(EmzaZ3cWh&M=(_FDhPfQZH0FA(?1{wLKSL?(Q8QqUQ|vGKG(|49*vLZ| z@*V0Q1Res(3rw3aN9~fl`4xNl`)pu*sIzAPgsYY2ID&Pi&(7kf4oJ~QpMA1ZR+}dc z=>Q#)mL2hz27g=~Z|u)@Xklo;?*+kW><_YKa2unY{-pi?ofPMU;*rD0%%dUlnAzhL z4GyUL1ysP4Jafe5#ySbgJ$I-?efhP!TYW`FP-u1waNhaN^Ma!E;_x@7WxFoW*&aZQ zEzu*uZn6p3FK?4a#oeSRIqZ00tFF^)VdGB~vgE6}`{&Mn`Omq#zya9@J>i^)@KvNM zg)2 z`B>Seizw0q)|MaJI!15AtzY*df1|V*iCH5&(ZjnEw4fUN735qzywba8KGpH!(pSk< z?ej_Y1M$&IyA{@(H<`!ypEI}6JXb6<1&Ab5_j^tOv#--uY=3)d9_2YiPR~81f-gC? z(r^=k%Jq^yMY&h#+UkbMi85#G^Y%P>UTyflbU0+o48GfY8X^X-b1V{@B^t7;T{qQ| zs8O8w9xN^=wtZhwNp(D|96zbJW4&wj(0+)WS77WM4`(;Xn?uVUQK<}-nN=$bJLtXa zynE$D@9M)x*r09m{kwHk#gk)@`j;P4qpn$TXOb`^nY+zH68s=$`yddwBCf-0Tl7vH zT*kRoD!90U8_G}^7XP(i=MbOFbCEJ_w7x+r$Z~(w)$Fypwy}=9ND2LN;m8A}CZZ;7 zW*MMRvtzH^dPv5v(>wJiXj#59$`k7mpyQg%6?oHSCW>_pgTuYs#f+5Crkq9; zIQGWe`Zh1^gW5(kT(BdxL+v>|kGIiozuy(@H45k8$@}XTR9$;U4*R)O%83I>I*(_C zPvv)srC0~L0qA$V;H|KBnNtwq6{qO|b<613z_)LX-&_g~B&!?~)oKh1D@tP9d-}&6 zOXznyR_K=sb-;oJ-lqxp-28;#+N-3DZevH>EOT%2+D|`ew?L(y*lB&WF1N%SPAhbU zkvnh+Ra^R}BB`<8^1u!as;Wd!W!hA*HrxZ1-03(oOIx=dh_|uwq2+V+kAN(VND2_- z0s9)>B2YHz;GH9uWoE50yR=W>*!7}(r~B@#wS@4hxC8IJa7flT6OP@$e#rXxuUcO@ zkzE!>n8m4`CZtyf^I#p*uaqjPWRL#TR~@&z)sdKMb48RR*qd(-tg?2A@Az(pU!CGi zDYPfk(7nMdxvO&yY{Jm_B6PH_&+oI_N;pSxDQjg750uxtAN)|DPL9iG0pdy8`uV(C zUDGu88ze$l1CZXa+6R@*Uc@M>3OpxWEny)2tmfCW>2%(*g$DY3 zOeF7W&*gB*GK4mepAnO07#A|l z2he+r@G%R1&usSeRT*a-(r>O0zn@n3)Z99Qfp)6>82^M_Fq}48xVfN$#tBb$*6cH3 z&uOj@b}Rk-k;?&?(j1$fM-_NhcRpc<3YGAMPM_jh5yIQy9c5=wTlk%J&H`%WvlMuQ zR}j@ldym;-bL$}eXGmGcj$uL03}>A9An?5XaOv;^_+$?{l#(!?@TY>MmvSvyTHKwJ z=!L>dQcdW?GZYuScFyD(bNXM+10m9z>q-3fYBcphLgKvaBc`bU+hwNfm^4 zf>>LTkiT4fQ}y7PPQr+zs7H>VesfKfPOye(eXaJ(cBV7c_!PnC6-v(|K=Ay$5g2H1 zD>dlux42N}sf;08$)H#o{~<=!n1DpZf?`{H!rW9Dn6N^#ZV-W${|FGuaUUko7p#fr zja*3Dxc>48c7pe$?(|Bbnc4x6ijj@87zv8#9DF>b%_gHE#bVN(%QTwY25)GfHL60^$9(A z$Jz;99Tx7fg(Y?MedQ(RrL-29XLQAo%tkr(BirI+<3cd_!#hH5O^+cmxT4zq14}^C z?`X%k=5)+$$iVm~pD2+|N!7!ayuBX*h#Xy8E;?Q11>&F0^K6ML4Bz54fD9gxnp{&8 z3^9`oP*U>A@gb(e$~y{mJRB>V_*L?0t=J(oPaf;D0i(O94sb2$6r^fu_! zGk)dkL?`F|%TV@7>X)b81bQNoN{;~eqK;wRc|HP4)XyMw%Kog0VF$t2JWRb=9J-l1 z=G8y1uMIv544JD}`I&T<8 zt}OYlH@y@n?@@lFw%X@SdIn)<|F)+L!F8yP0q{iyG@D>=M1A;k#7mpmBKp6G$!P&F z(<|4nHKcETB6RS(X6Xz01#qJsQJli?V8T}l1z+kL#*D1uL^dU!BW(~fUs4)AT*JWJ znL7qadd72DAK*rD4FHag9f;yfM(m6ZciDx1z_8)vWX<*sH@_$9IFNS}e*jA?Brcxu zu(-aBb(BKh!H(cHO6!@RpZNWTweR}25D%pH2vBuT!-lA^)}Ok6ntDJvc*x@bI%k>J z9g=K^7dqKEEsLIZz8}fok=kLI+h_FN4c;<^wHK(^}?Fov0jRg2RFb?+=4$e{m(PTfNdgFji3&x#osQNi`vm8;=p6JkK<7|K1^z><`Q+$;?@zXQ>kd*+y%e-&E^`sPA#`e^9N9-TNxf|I-wXQ1&Uo zuA)2@UoLF#{Piane3oW=lGivrSsnqCu&7ma9%Ci5FRRzH=e*2|1O@O6<|<9P+a~LH zPD$tCUFvwy;jaLf24tpwKO0!(ziafck5sd}4X@Avr`3C?-9UD>z9#r!LF%2M#@h%BBZD^J3Ms=VL}GHIGW5H+ z*Or1#UOB9&?-VUaw=b`=~Q`18CvB3-<0g%)G22 z_+|*4te&f@Ak>cY`LAaSe|E5IiHH-F?cD zq}On?co)3o>30ft`vRZWC5BJl&swNi=l7nij&T(nHI6OiPUTp_!sDn4F}XZD`||pp z;Nvo5foFLT4nwC4ST{@bDbp2166ZUE`Id+p0WxI8`9VaBrl_=Xz2Y8}wpqW|M6aqU zzTvhDmy?l1|Nlvr$H~m4PvJm{k?}%Tn)nID0i8u=ngOoFlJg);6wk0lg zDxPgqsk|PV85t!kM%RYZ_u%EX%3UBn&({B^$sk{#>`#ZAM@si-WwdIwWlsD~%d+-8 z@H8PD-T3Mzta4?Qrr~?l-F{(9&m?dY#pr1Pyd!<-w#0dVR=!+Nsk=?Uzqx#fEz*nJ zxWZq*>iePIpCEpC(y{9vdI`fC<#Qm$HOPp)pi@LFF71hF?F{qNB{fH#A5A>K{1x`91n%4i;R7G5OKE-ODwggn$NH+8ZyL*p_iHs}p0}Zlic51Ph-F-MoVFaXPg3 zuV1GNz{MCA^5m3|xYT~KF(tj;5Z^&N#yT#h-`&ZX_v0e?#MyEge={|Iw28;?lEc4? zdZ`+!)|j}{V6O!oORNSZoW9@KDj}#$7!%acK>I=rn#>zJo05*x@<}gPlff(-fyj|n9LWOs<&OZs)S#a$K8ydDe8Uu1Rlm#Q!V7{ldCxupe!y9 z=#lAKvj?m++ru)fHnp^fzJC*3Q>+X9VDH$ z;(&rb5B280|KfrR81Ivz>per7bz^~EFkzV;0qOhE=$?G*J8c8^Q@R>Mq0B<@N6$sJE$YwRsG7USbu}`AZ`FTaAW%+3yK%bUTkcd+G!coNHsRK zk;{IX0s>sLZ~$rteyub0n-SOD)o70Z-LfJDkx%c8wC{3QC4WBx&UZJQ8nE_H3e)B* zZqu%b4CZsg;bjl-dbrfT4cEWUm6bZL9|0O^{pDUieFGwnzMTt=m3-L5e`m%=#%6vW z5T3vDyt%K>Ir?@d&}wtEiLK)Sd2A1{KmXIkYAL?QzQWJTJI}W|K3;`DVZc|wzAh;R zpPx>C(RG=iOJh~-&*TnAjEFwoqSBXQx&_C&Gk7EW2lxp5Hh#);KA4hQ;Gs%6`b~`% zSy^E&E{4GoNgL=$yCKkpbVkz=u_?Cra!OH4^Zn@X+nM~PN5F82Yj{9q(3u=L5&PR@ zw^8l~8Uckf(pD8g!lU(6UsN(u;|>gIKCFbM!1Rj;`zk$w1QQ`mw}>mq3OrtfMExVJ zArACi#d_7fe9tfSO4^=N4M%{LxBP+tq#d3=8cU~|=m(rddb6Sz^m_7FWs!!^Xdcqg zY+97ihnqBo4>!RleQ`U^mZg-b%LCC;zY@Zg%;|5nNpZO~WnOqRr^C0&{-1bP{OAV6 z_p6#mr!Q&l)&LW0Gk6nPb@egf_+^LTTZ^PLu{zJ2^WLy{YEr9S@0~M6aX02CNdww* zFc~oG)()@PYERhX4dC|KbR!vn(t!O_J9h|l{3PmCd0bntYl=YNF&TV+4>3Q&wF^*^ zf{utZ)B)>jnS{40qb_};LKYP|-dXsF14svO0~}yOSN%bBg*N^9e7$!HHSsWyS*sdd z(&!dGL5D~t z(?JXkQSL`9cY|EZB-P~O?_^G7y0B^}9|1D^93}4-A>~l5oWAG?SKnRPEVD8*&galC z%-?%2Idx3gxhW7;tYNKcg{wuxUxx1J zkYIZd*8xVioK3bA09^Evd2lQtN5T6D zr+yo$SgxzWm`?AX;K9vPW%-|m^Y8(C|JE|o^LzgXcUI4viB`2ofRBC5i2a|9wC`pr zzv#Lge0|eey{}AakI!--Slp7X2>X>v6ySWLx3K{tXk@{fS6`p*%5pxPWFyM0Z7Fyj zsUt9-4H0(sTC+14S2LP`&NH^}UUNB~sH(?&8R+5F@l&f){t2BzV&ZK9%tvI70XCpB| zpE7p_j~=H)EYP(&DMIuy^TuzcdaM<&JCMYe%f{|^#}t0n-w4jTT=3E=+Bn8_dZ7Sl z0SI1b=9=IhH?x)AbJ+w724mB+b1DyIU#>6F+gn0HR((f5WPbEkfs*)onklD~^l%35 zENaDLh4;J0ZVH4#Z6>zUaQ7WG%q|U)`Xe*>Z5%Pe?~xzuH|)-JrtxAsljznir%F|IwL5k^bF!0>!BDYXWqQ( zCU2|{R-of@R>EFw?z6*7zI;l;3 z=dYpc4xmrXbG%UZP`;g9cG^CKfPXY6&*|`Of|Hp>n*;q>oi?2MCm?DN8&iexlSJi|@)v4dvi&Nby>tq1%r5Lw-B&}8oJNEWbI*=nQ-Z|UKbpWfjK z2HxH6pyw6taMr6PX)k^t4tvcZnW`J0pAg zk69?sz?AR}Q1kk?N%+sR{R7r<%#5(C?9$jDJ0-z0Jq5-6YZs7OMZM3(4BvNYHF&mC zLjkqf1*UK%N7A=_`BS=9vm%^<)ZdFQ=w68a`fd?LPGl-9{1mPxXs+;m9{fvtm2uhC zs1!v6q;PKNW7cs-UE$vX$qcS0ueKlXn`587=5>}G!c^byxdcRCK?0}Tk7YH3H`MJK zK0{vdM1A5xIQFVL2PEIS7kR^Ay<5C0JlR!oEo*4SZV==vn?VI!@_dt;N6<<#jOIP)d>QmWRvCO` z8u_DbX--Pe>I(hhCap)spv>O--S}k64UX8ctcF%ntzEz4OOm=pPNB^Ve55>s)WEBz zBHtW`&kl~Co*KcU6iTSvlqX5lPcHeIt!ItCFeFMr7=^Q; z#qWYep+Hwx3c=M#RajDVdUMyG;<(gJ)jlwX9+r-K$8~h|Dtb4>UA)rb5s<J; z&XaEB*K%yg!5r@fTmU@Ojk3R7?q)7BjX(863CQt>kHVD?puhW%nD7Mbg6CdZ=yl)Z zjCbGimm~v@5CcC6^n&`zEgNNv=if?K5ryXEt4*i%10%)Vb@)lp&1l=)pPp;y{oARd z)8@+OSV|0-&4VrBayk)Sw;HyXz<-aUW>+8)f{Y+*@^Jy72N8vi1+5QX+2u_ee=Y3T+h2#bq&Sk7~-*>>q0!zHOK8=G|8+DyYmgwtunY^3G*WC z(U;&rO7QcGsEiQAfsvLBOpSX zyC;mZJN{f?&}PNjuB`7IpA;(ofE^8)?n4>YRFuhAx!w2=Io)C#xv7*EUz* z9o`^J!qLg`(!UkoM(<5&>S6~9#gYPRXZI{h%Y~w@i0=BzKE*9mEOCNmGejC&Xpy7^ zJMwBOu%GA`MK?XGlwT1T14xli-dsePOo9fick!B`&1_2lZ?J*3)VD2_l=mThmx5KZ z9Z9Btd^0oL*7sV?-n=V>c;igi_I$!gww+6}sa?*Qs7)VJmboo@+Ow-kNbYy#Acu;k zhG<9=ap@*}qr*A!^aQ>Q&1J4iaGvV3(vIRs(Z*1kW~d6c0_+ge#DPl(XuwrZwC;RK z#*0L6CNG99v^OsIMAr{h>%cQ(w^Ns0su3*c?0C>pQQS$DeyF%E_n>vt z%{r3=Dq-wz>xghletE9feeJEw#9)OJN}S)b^HnwA*&TSR@B_vsl3>-=lC89X!QPx@ z(-*WMug^K~ReKA7NB5-9IA-r#9s%<3?9COxZCl(G@7o>7us}y7=4EM)}qgzOp7+aQFQj$aU7Rr&Hf6ip7nrp1l*s2hl9V_S{d zyn6mpSIs8-XlQ=o5dizh=K_C+L>QhWfftzngQAfH&niD6sBkoCPDzwQi>79>{1q>g zZxD9Xm@ILJ`c^iCWyFZ2T3ry*wsrAJckwhQPPG>VUCFWPeSbr8;`K@2L0rTwQO^&< z&%c#^pT#d(9_}Y?opX(zIxA^m>>0!3qP zB&(|9*}>f^vm~>C0@`I`K|cq>>o?o2uona|D(T7F&Bj;WvvA|N`j_ebEA{R!alrS2 z;9!$G4CkHu@$9Y|IPNNzg2r!Cm6$)M+p2cBaOf3eMLQJ<+P z&hF(lI^dlU4igacDecYL9(|?RwMbDLg0-$E#&D4s8>1y`n}$*Ot8!#vd+g27ywn=) z7WikbIH4H6R17^P0O#iVPW-cOaiL(kO)AS#2=8dsVD2A#fZ(Ng{B+a(BcSIb>7Msg zp_X}JRvIIr6@&L4OY92rn;qhS#ZeF#P8rXNG%QGRr72~k15paf3ctGi*7XctFA85z zgXOr8;6QM}Z}{aTmGt4B!uE+{gjK!Q22PDyb_dKqGkIM@GdvR$H^37QR9kZS>eLxu z(ud9SoDN3L?|JW^!)RfZ{m`yzQqFnP2VwXfTmU$V3Mbhojl+z0jjImaciY;i@OwTv zM*vv1qrP#5w18v{9Rw)ql1D1oVY|5(E}o&Mc{cQp74iYgbJQNJqxtJyaW>YQuafox z<6&K;Q$D7Ng9qPjOv>Ud_pBt=wJ|$AbsH1UJ<**CXLZG}^~ld9G|6r7T?!7*_HU+o zSAW(mA96!M{o|NX@QfbqKZF%7xac>bWlduT78=3dR!qN<)F86mObuVY>b2sJ7|5Xt z4dzYlB*xZz4WhF_@;xEn3cONAG$Lpr}G4!TF(yyo8R(Qc~>^rOilK&4%isUdpBog++n%w7PVFi z$mme0_*`IWvh`gU3rMc(Hd(CPzjhT*UX;X@kP#Ha`r_&DmisxrFGbfyu~E-5$EeQg(FwocxA zTYj|)3bjy#$Xh0lPf0!n=l`LH&@KEL7o2@@9sPp*0c%dE>;8 zIoXc&y-L{OBOp*=2wwbc-MCq3Ah7_(=k8ELuoXf#4{AQ#s^z%7GmiVj+IJA}R^x1M z%FbTY+_=Es zQgP8&N02fs` z8o8>`FHw_SEX1MPetna84Dys8N6BZ3k z#%hVPXHeyfdGy`>dYuujo4WXemMf6eQ%g&U;!`7~J13Mcr%#I8a%=vFYw#>e!gvN1 zK|}Y+8B(ihf#v>MWqsm;K5|)u#1iod=1Xxs?L_k}xGd))sM*a<+wI=EHrTw6sI~4T zI7cH1TDm1H5vQY~GC>=W+9d~P^pzoF&nXuMct@viH`L!J@;?F=$zfBQW8n;mPp>@u z-IDzzsZWH^<)&Cs6EA`%kE1O{?q|71T6FJ;eqw&$K?{XCx{@YXE@xKr<&dor@ESfK zvRy^-L0;+^$111rvu^If`ftYJQ-ewUrE5)ZT2om(Sp~S%BFernu$8Zo_H|!_PWTUk zH#(Oyz6HWFV#{7PtihXZ&x<%=>F-Zjpg{`JZ)xHvGVVk`VbDxiP?3yE?sh-CdmD&T z^Qv7K-jGL=yMdTNeeu*U1P@PCEyV8{2*TK6yEnVfOOD1#$t!8Qo!Of&4Wy^F2OB4h z%$`-h{pg8JKyzC72$+F*o=!aiNI=UfTd=vKJE6GWxdnyT4m&GJ9wk`=_9pWOvK*ab zo+Xh#?7N)q3h8P8uS%{w9LjzTPbpJ~!erkfJ7pP>m?8|aWf{9{*&50+##BaxNJPkz zC7;P|Qe!D=*|+RV_N5F44aPPY=k2??&UMapzJJc2@B82T`#tylJoo)P&x^N6;`VoX zt0yVpuh$kaJ`@fJqEqHh#axD`ROmmadnC_6;#t7?6!oNzq35avGA^NF zH8wpN%m@XHiq$FEcujLA(&b zop`p*c+E*!RY!07bZC>a+X|WN8?2F-7;vvzOP=etdt-}lUak83Hx~^J*(|)YQwFL4 zKLHekZ@R=d*;$~3%ey|1n;lfvBHz*AEXbT46Rd)VC0vQ>fEULqOE#WB^qI9g>l)|g zmqr%8Z-cHn`la@T<|$823#y}XY6a#v!jX5%9vc}%-I0qY-V9?fTd!hndayc8B0?z2 zwq|l>hq=F1^Ag?ngEJ-Lp4LzT!;GCxOW8G-&4w18eC5*QI#j5KV3JGt*cJPjyc38V zv~Y{Ugx$s1{Mk-&LguF(d`jz2`ADd>b;$}i2S}~6f8tKw!#Pwm*@IPi&^4nC#NuZl z6+)GY9Ig|xvQgD~_jTl+vb@}A*wO?o%X&ff09*166t%kg>=(OL&*4@YCI6>#TH$sj ze(Szka8(b-ZvWI*a78~(_gDJQO^yY4?PhP*jXkQsmBD~o{o50leB6>aLyargXnVZD zNg4K;JR&h7IIHQ-Y=*yCEUI0sKrzw8p8W436c7n~*hV`?#Z|}EQeF{`JF@e=%KP2tO>G5=8*R_~?Anjl#N0LKHE?jpdC#EurPiCf zS4wwO$tda81l@MUu`)+DwZjS2aD1xh%ULsQX415FxU{0o zNtgN(ptu2$6$UCy%UOG$!g3vJVzJCq_PPHKy{=|lN44*AW+#_ko`=?9Hyad9@EtVK z!fNuv|DgJBWS3-jOu58kPxH_sarcJ3UwAsjeZ$tw|KtxP6p_~?@fvk*x6PFLu1w?Rt{|Z=*60bZBMB#0{+?NI}S5~E`o;9Kvn)g!*IyXbr!fK zV=Lc4d#tcHSe>Yx6LeRUd7_d+r`bAE_8slCqQXPu*OOQ?a%gj*LFUSf=G0Im``XR5 zXJ+;nqJo!M*0*4Xj#lQBRMfdy58uwfqTiKqFDOrYl{b1(@57r=Ra5s|a2Z;x`J9&$ z3F-R^{Cf!S&k|3S9N2a1U|Lyavb6*uA zTwtVh(qZ3dAgPCQ^D3D{%SJ#R%``$$gT zO8@fhL=Z1iAYQemBKh00&BJgB>3il+wo0uzJ1nF0E@QHV@Q!5qkTi>w*QR1rWJiP( z_KA^@&Z1F$e@*OQ_NS-av?BB*r3XrphqyB3LWBk5^fnbb`kx9L+}qg$5di7Z@Eb^+ z+~wJ!#)~l2VeJ{W;f0z8o0hC52Vt_nA*K;OfktrHa3q@+I9Qb8C&j#IS;F0T2p1s~ z2>BejzdxfqZ=5GR{6z3-kn`%&?%+1JN7W6HxC(_{=64m@5z4}+S!b~skBrW)yE2K0 zMSQIu8gj^eNE#|lCe=H?O9G4HWTF7-I(YVr0slA%>FDiNld0?^&_v`?4;x(X$7PyF za9w;kdrn_&n+`fNwonpKJYCy8{we__8f-bzi_P@v>m;*qhy}WYQ0(;QL^F=LmQ`l1 zKH+rUCkPL+y`mzdiqIs>It#eHs&cH(noie^rQ~ZrFfj-Tt;c-4AJ6EU^VF+hXFxQ60!?gfRCNDBb~Kh1FE@9b(fUpR z_YO5381%iZ>L0(Y#pp**cbNtiU9y=+W8?hsLs2aXs3~8PC5eRYS&l!9eBbbm%#uI zE)|r>iV!|W%+Zfa8}b=dso)=Sg~v+13IqPWBcKT+FLDFBiSd-n*e$T#i-RI-#lsT# zKy7LN{+DX06z&&2W8V6gCU`Fm3>WqReCBw6keukOkw9=NjuXA@8|VmF1vi9%^P;Cc z`&s-RBXt&*wN=7UlJ~ohuA%PS`Pj1?3nM}c5Us;SIDKMLIRY zqg)1MSeKEx>9 z0^nZ^`a0-Oj2eTR5p)v3=0Hcx0vWKSw__ANbKaQM;TQ7}$oh~+WZuV(v$qS~zqU0MYM8B~c7@Z&Wckfp=yWNF3W@C*?{{gJ_ zbMS_*z^GeFsqQjwnHqPB)t#4C5nda0B6DLYQAVf3PpVA+S1i4%T9A0osw0pq^*yaVuH4sr zC&lWkzq8~+%iq-Yr(20LwhA%Uy#`Y4Jzjv(x6Hd;_+VvvgN)UcR#A+B*+$3Dw& zA)3^9dD(&`z>5_}(L|X!ckz9}^SLQz__!fefkGU#!7VNf28U@q1hJdObB#($+*Jc{ ziGKEBLSNlMBWXjo@6ZYp=>Jb z7->sc-@QVCW%$bPB5b1_WC-6oG5Jg|xn_+2gI!F=dcxi!y$odN`!1txRZlwa`37dD z4`EsRM5y!;h$SFpM10#f>*mWa>Jx)`a{GA3@g*N1$eNsh%@l zNopjl)AQ@HmxpBYMWREsC-mt2^gNQV`T6DEte32SJ*C>vA