From edb41bdb3a1d32302d80dbdcfde7bee00f49de08 Mon Sep 17 00:00:00 2001 From: parsons Date: Tue, 12 May 2026 01:34:05 +0100 Subject: [PATCH] Pissed about trying to fix a number of bugs --- Core/Cpu/Z80.cs | 1 + Core/Video/SmsVdp.cs | 37 +++++++++++++++++++++++++++++++--- Desktop/Desktop.csproj | 12 +++++++++++ Desktop/Form1.Designer.cs | 14 ------------- Desktop/Form1.cs | 31 +++++++++++++++++++++++++--- Desktop/ROMS/SMSTestSuite.sms | Bin 0 -> 32768 bytes Desktop/ROMS/zexall.sms | Bin 0 -> 65536 bytes Desktop/ROMS/zexdoc.sms | Bin 0 -> 65536 bytes 8 files changed, 75 insertions(+), 20 deletions(-) create mode 100644 Desktop/ROMS/SMSTestSuite.sms create mode 100644 Desktop/ROMS/zexall.sms create mode 100644 Desktop/ROMS/zexdoc.sms diff --git a/Core/Cpu/Z80.cs b/Core/Cpu/Z80.cs index 23e27d5..8bb241c 100644 --- a/Core/Cpu/Z80.cs +++ b/Core/Cpu/Z80.cs @@ -190,6 +190,7 @@ namespace Core.Cpu // Fetch the next opcode and increment the Program Counter byte opcode = ReadMemory(PC++); + R = (byte)((R + 1) & 0x7F); int tStates = ExecuteOpcode(opcode); TotalTStates += tStates; diff --git a/Core/Video/SmsVdp.cs b/Core/Video/SmsVdp.cs index 0547b8f..3a3451a 100644 --- a/Core/Video/SmsVdp.cs +++ b/Core/Video/SmsVdp.cs @@ -18,9 +18,12 @@ namespace Core.Video private int _tStateCounter = 0; private int _currentScanline = 0; + private int _lineCounter = 0; private byte _statusRegister = 0x00; - public bool InterruptPending => (_statusRegister & 0x80) != 0 && (Registers[1] & 0x20) != 0; + public bool InterruptPending => + ((_statusRegister & 0x80) != 0 && (Registers[1] & 0x20) != 0) || // VBlank + ((_statusRegister & 0x40) != 0 && (Registers[0] & 0x10) != 0); // Line Interrupt public byte ReadDataPort() // Port 0xBE { @@ -110,6 +113,20 @@ namespace Core.Video if (_tStateCounter >= 228) { _tStateCounter -= 228; + //// --- LINE INTERRUPT LOGIC --- + //if (_currentScanline <= 192) + //{ + // _lineCounter--; + // if (_lineCounter < 0) + // { + // _lineCounter = Registers[10]; // Reload counter + // _statusRegister |= 0x40; // Set Line Interrupt Flag (Bit 6) + // } + //} + //else + //{ + // _lineCounter = Registers[10]; // Reload outside active display + //} _currentScanline++; // Line 192 is the exact moment the screen finishes drawing! @@ -117,8 +134,16 @@ namespace Core.Video { _statusRegister |= 0x80; // Set Bit 7 (VBlank Flag) to 1 - RenderBackground(); // <--- DRAW THE FRAME! - RenderSprites(); + if ((Registers[1] & 0x40) != 0) + { + RenderBackground(); + RenderSprites(); + } + else + { + // Screen is off! Fill it with black (or the background color) + Array.Fill(FrameBuffer, unchecked((int)0xFF000000)); + } } // End of the NTSC frame (262 lines) @@ -220,6 +245,7 @@ namespace Core.Video // 3. Register 1 determines sprite size (8x8 or 8x16) bool is8x16 = (Registers[1] & 0x02) != 0; + bool shiftSpritesLeft = (Registers[0] & 0x08) != 0; // The SMS can draw a maximum of 64 sprites for (int i = 0; i < 64; i++) @@ -261,6 +287,11 @@ namespace Core.Video for (int px = 0; px < 8; px++) { int screenX = x + px; + // THE FIX: Shift the pixel left if commanded! + if (shiftSpritesLeft) screenX -= 8; + + // If it shifted off the left edge, skip it! + if (screenX < 0 || screenX >= 256) continue; // If this pixel is off the right side of the screen, skip it if (screenX >= 256) continue; diff --git a/Desktop/Desktop.csproj b/Desktop/Desktop.csproj index 8cd674b..ea2517e 100644 --- a/Desktop/Desktop.csproj +++ b/Desktop/Desktop.csproj @@ -11,8 +11,11 @@ + + + @@ -22,12 +25,21 @@ Always + + Always + Always Always + + Always + + + Always + diff --git a/Desktop/Form1.Designer.cs b/Desktop/Form1.Designer.cs index 4543a60..9e9b85d 100644 --- a/Desktop/Form1.Designer.cs +++ b/Desktop/Form1.Designer.cs @@ -28,7 +28,6 @@ /// private void InitializeComponent() { - pbScreen = new PictureBox(); menuStrip1 = new MenuStrip(); fileToolStripMenuItem = new ToolStripMenuItem(); openToolStripMenuItem = new ToolStripMenuItem(); @@ -41,19 +40,9 @@ resetToolStripMenuItem = new ToolStripMenuItem(); helpToolStripMenuItem = new ToolStripMenuItem(); aboutToolStripMenuItem = new ToolStripMenuItem(); - ((System.ComponentModel.ISupportInitialize)pbScreen).BeginInit(); menuStrip1.SuspendLayout(); SuspendLayout(); // - // pbScreen - // - pbScreen.Location = new Point(12, 36); - pbScreen.Name = "pbScreen"; - pbScreen.Size = new Size(768, 576); - pbScreen.SizeMode = PictureBoxSizeMode.Zoom; - pbScreen.TabIndex = 1; - pbScreen.TabStop = false; - // // menuStrip1 // menuStrip1.ImageScalingSize = new Size(24, 24); @@ -145,13 +134,11 @@ AutoScaleDimensions = new SizeF(10F, 25F); AutoScaleMode = AutoScaleMode.Font; ClientSize = new Size(791, 622); - Controls.Add(pbScreen); Controls.Add(menuStrip1); MainMenuStrip = menuStrip1; Margin = new Padding(4); Name = "ParsonsForm1"; Text = "Form1"; - ((System.ComponentModel.ISupportInitialize)pbScreen).EndInit(); menuStrip1.ResumeLayout(false); menuStrip1.PerformLayout(); ResumeLayout(false); @@ -159,7 +146,6 @@ } #endregion - private PictureBox pbScreen; private MenuStrip menuStrip1; private ToolStripMenuItem fileToolStripMenuItem; private ToolStripMenuItem openToolStripMenuItem; diff --git a/Desktop/Form1.cs b/Desktop/Form1.cs index 55ef98f..f9d2d33 100644 --- a/Desktop/Form1.cs +++ b/Desktop/Form1.cs @@ -40,6 +40,8 @@ namespace Desktop this.KeyPreview = true; this.KeyDown += Form1_KeyDown; this.KeyUp += Form1_KeyUp; + this.DoubleBuffered = true; + this.ResizeRedraw = true; } private void DrawScreen() @@ -48,11 +50,34 @@ namespace Desktop var data = _screenBitmap.LockBits(new Rectangle(0, 0, 256, 192), ImageLockMode.WriteOnly, PixelFormat.Format32bppArgb); Marshal.Copy(_machine.VideoProcessor.FrameBuffer, 0, data.Scan0, _machine.VideoProcessor.FrameBuffer.Length); _screenBitmap.UnlockBits(data); - - // Update the PictureBox - pbScreen.Image = _screenBitmap; + this.Invalidate(); TotalFrameCount++; } + protected override void OnPaint(PaintEventArgs e) + { + // Always call the base method so Windows can draw your MenuStrip! + base.OnPaint(e); + + if (_screenBitmap != null) + { + // 1. Set the rendering mode for perfect, chunky retro pixels! + e.Graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.NearestNeighbor; + e.Graphics.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.Half; + + // 2. Calculate the drawing area. + // We start drawing BELOW the MenuStrip so it doesn't get covered up. + int topOffset = menuStrip1.Height; // Change 'menuStrip1' if your menu has a different (Name) + Rectangle renderArea = new Rectangle( + 0, + topOffset, + this.ClientSize.Width, + this.ClientSize.Height - topOffset + ); + + // 3. Blast the bitmap directly onto the graphics card buffer! + e.Graphics.DrawImage(_screenBitmap, renderArea); + } + } public void StartEmulator() { diff --git a/Desktop/ROMS/SMSTestSuite.sms b/Desktop/ROMS/SMSTestSuite.sms new file mode 100644 index 0000000000000000000000000000000000000000..9105845f3c9c66eb59acfe0c2d386496b279536b GIT binary patch literal 32768 zcmd?Re_WH*`!IgpJ7XI#83WWQ#O{d-q6uo*L}bHXsHu>Onr46sN-94D1XJ0P6jKXJ z%gP_@of!lbmL(P?gQ=*9nE0cz$p`_Hj3ELOw%yNl-^0}R=l%IUpV#yH{_(tC&uI5K z=Q`K9&h_hD_jS&hb=+Gx##}EO1w$z>4>^HLR)OiKK5G$jgcth-r zOdMio&X2_}7@pgp0DZOqQlylgYLnkPHa7oiO?YF?KJ@UZj7b5&dMt{|;PM~!=)p74gx|0;x}~I@Q_#iowDgkP74!P#wXJY z;?vU8AUtDb;-h+0+{!-a{Ecbp@$2ZBNeRh-(3NZB`#Pd#M@LM9DamV-*VD`6)~7wH zu8ogh2@&fPSHk@C^@%C*X+cv~$FEqE2GcXvuBBJ7_-QaZF)2Q7ePa4Xn7TeWg`U4U zZe?<2-++~LS_*c>!&0QXVhz0vqUJ}?D^@3_&~Yq_Fn!LGttrXtmLs*5eVyTJf}{0CowH85eZL?Pl!)Si>JpuI~C@~txLuh6XGYGaH;frQ4raxr#3jWeiO1lvqsPFU=YpT3qt+*< zC#P>riRbX)=_Wfo7@i!3t@Pye$W&rl%G$V%baYZ;x?|+Dbs1|DS0pB9q|pKKSdT-z z5st1oaj(Uvtw?6Mj*mc_{C^FIh;a0Fgf-TMNdYi|X6M8NQ(k_Xzo$D}L-McIh4r4_ zqFCxAO|7JWx_2znkXqS+Xj0G$_-EK**QBWi3f%7<gXDB-o zalZSsE({kCjuOD&Q?$s>)7>%}WW3Q--*iomUT!*t;h*6RI6kbiPIc4RthehchX}%= z9Sye1)TwY?kEYIVDaEiryWaf0nWibRd$-IP@kLy9<7l`Z`-@$Dc@$#NvYWqGC(}L6 zl4Q0LfR$YQe3yLQ?f09;n0xA*#^cp7^nY-3BsRwR9htG(ht`;6aZRZ(Sfn_?RRxMu9Qs-I z$zo{`tD5Wb;6~i&Lu=#^;wwu76bc^B($?3WL^~;5oMl8Ic4irHW1k@_5zR$$c5|)5 zgM$h-)+$DEwIZJ3`z(4+^2+$NArKLdYb-G>Xiog9xT)(CH^kH22j;|KbX!k93UV_Y zVEW(SeNdVPc9qcFG6`6aiEBH2{>&+9Bc6iKPfS{ck%8?Qfppfdp=Zu~ME4OPpy$P} zN=!})fmu;=gI5QZ`Ny(W>EMi}9o|2rDzCL*^osgW7#Kpj+Fb2lLGGv~{z{y2WNBCSB zpB}#=J$@zn;s(?K7@LgfO2!GDot?%EyD^XRdMN#Iic$Lu14FM+$sgVrWq-!WPwR z+AM|Hij6PSxMfNsQWTI?!{4GrZPw1&i2MplOh@HaJIj;Wq`Zd0===Jn~4(0bI(|ncVM7Aj0RQ0I^Jld^9v6 z53+YTjs(U8A=}E~S|VeDGqwzGxj0y7RoT$q-u~w!(G+dWgonmV#yGwWjN|R_ZxSl* zsaXB?OYT$ac2=#%YG!(XE34dH$?R0lY}LY6YdSJ9ru~uLCqC+FYsS6#$(6=zyD`&j z9N&(-+e3|+_l?=+v$4j^PGffaB`{`ou_P}{6C0Dv#)Nih5)7K=1~x?$7+*CT7q;65 zov}5&9A#^2sL9H*HB|JWWy7HO(Xgz#Zb1|Fvwal})xRR5F{#s-(1q=WEnVW61^+Zd zk}I31(LzNE8@B|;=j{eJ2@Bgvi&)s)3vLo)_I+a}3uif`jhVJS4(-Nln=!MO6U1uF z?qz#WT^!V69N&$#wkKg79OeUoz*yZe+*ti!fO{8GG;Z%OWSmf;M~NjgJpc76?MYR z*2xLfWz76{f$YZdHWa9X2|8w;JDR=h%OGPGmpjNt^u?B6Ho zHjcL-DHNU4C?_x~1ZA>3GW|cpAF=`?`5sQyosT@F>yfAY7yXF)xcLvtV_n!dw=Il% z*O=MXmqk2|Lm{gwn}cal$m+^w@r50(PpH%WY&iriQlAlW!6p#MfYFJSO>5emAV3Ly-dGqpOPdeEaU%IX~L3n7auheI+Y0%v?J z{gYtXkd*B?KnmBDG~YHJbFZg$8XhnJN0uVt#g)&?oY?7|x#?MjZw(lTo!6a%+1}?I zy$t>Qxr(k_NeeZV;g9JEgH+JeVGMNLYRf`z}EqL}a$axns{ z)+t;c0rOIu6o>KqHNx9d6kAxhY+cP%iEK5OSkgndgp&4lWR6}AK8_&v;5bEh1dFZ0 zj87Q+L{H)}#g{ADo?(x%=fo&BFJ)oUlA58eGFN<4W5K@dD9(6N_nJG-Pa4-Cb!Qdq zP~kYt4<_1>nr(tD^Ql+Z6E3UZV}b}Up?W$-dz}X+7czH69a}2+uh%MkJlWctn`#vw zv$fGAOj7gw5XE}C#;M#ED>mM5pL z{)nDMdO)PMHNk7;m3{~@$sbz&Ob*O{4&DQa>O9Y@cK3VLxKhxl|_ygVcQAF>YS zxXt)u;_EUnjdaj(^#7CgW(Lu?<3-8RxO6lFcci0n9~+;RMu(0Kqtlb=wefKq;-9h> zrYwp{voVj5rX}?y9LLe)p2(&=Ha($acIAZQa=Yn1+gQDg?N1BcO9g!wd0Ew~H zSpj^EG|ttds-JoErT&RCh@$xaA0FE7*Gl4A zqP~`6ZVFo=iR^k1js}O!*xJgq95N@en~%pbL!ZnX__55;Co>0rEHm`U%z+=v3=WxJ zbI1Z=tjvmak6N5$*kUDvFitXTv62DCP6s9{8H90?VIM0QgmIE#i=(&XW**JEj9(RbOMq$+fGocu(gJ5b+WC2$y#$ zzU7Xyax)yq5A43VuQp^=C9d@U3QnxVJvFX3*S|hm%{H09$Zlg$bEq@iwy;|RE4TY*Hy}^-_K9sVe&ERA z9~uv{mIxCWPg%nNk5K+NH281r{VxY2vusderLP)&G84FK?W7s5ef_MuLB)PKD|;s?)0hl6v{aHwx(4{}=nPk{#6F1%T(ke91JI>hQ=nMM z4LOH{*ReIsS=mF8YGwl-Ri<+|Vr*q&(xBxqMVKh==4#x5>Qjsy;NUY5;}BPiVP|$y ze9p4^6$d%aJ$E1m#}%z8r ze{OB6S?#UhX8&0+d2_8BY`pFk9M0WPZ8>`lH-(!o@mR5v?8XFUx?jTT@_X|zb#LN` z;{Zp8pWj@+ghW|GHac%QFhT9H9oRuv}ljayctm>S#VP;W#*SaN?lz z4>ON=;RU}SeTH!C40_dX;Yi#G@1-&RFz?YaX_Id&d*H|7Hu(8rck5#gPO}{FXg3D~ zs184tk*6~O$1A>{!pe*n)qLl~mcYV-X(6}M4Y=$$Mw}71er0AH-j$@YS6_HEis!JZ z5O_I04dy0ell=g_aB36+$BlXZ+2_ZN8P`{NLFuTBeQvy?GG^>^>@ls14teTu_Q^wA zdQSYx#JFimam&}nBSj>=L>Wx8H#^vxGAD9A%w-?kr2m{NvxxuY1KbS^otCjKgbvR7 z4+u|=fWSaJA;v4dr1ZpuL`>1SYbWkxSV0E{0*$hApcKr=5ea2hfV#Hdy;R)mV39== z$2Ca}5o{UzN@dM%MacTA)sbNoO_hvYS;-!v-f`M8_SMRo@$xNWV=DXhL0i(tF0HIN zB#69DVJsUPTebFK(#SA= z-}YY_=Ggt$(cJF;58BW|8@g$Ol{Qd{n!hD7U-kxscEWUB=2^4YOXgOS+h68f^P{(n zU(%-nj}4B9?nL*6@cK;lVr?wws|-$b8lL@U!Tf0v;q=qHKK4?0eg=CFJ2@k9ZF=8E z^`GB91mVr&+Qj89OIN3-r=*1h1+7Xr$ib!^&I^qwvX ztL*e2U9G-R7k2Z0Gg&0y;|;^4$h!M%>wB8=ac_UU?taKec%8T@sF@1zs(vv*6q0te zi`Pekhcw*aURJXTPp}Y9A^iN7W@0A+B0Ciz#(fMwjK~CG6#5s`-9K-vhUt}~hZs+} z1UR+U#0+UQ%pYdV6d9|@C9D}148x}%emiU0742iwuSQ5guL!A3^IPv1HasV0=iWu` z9VkS`)v+6{hJ}tzy?Xu(Mp74BlAA3-lDjQ=_xr1|{SuOmO+OEA&Wvzl!erc_l2ZY^ z>R;~ZJUu+`=^TG7#PS5hm;ygnoKFtPxLSJ7*ko(6DK=c)lG}MUB>7UMgJ|{HCS!vw z=^0ysZ~H$pNgIb;`_tBdNonqrsN2tTg!<^#jI|PX?){)Cs{vZn!vbTXv}u9GXZ!fLI~>j5`GuzON^O= zjhPB#rW>pCch1|!_s6%nEy>-MAVo%AHKuv^Ei|t8^g}E!Pkdm4JphnP;~@7xP#VNB zHZ@2+fO|K1da@Q6oayI@-|-+F0)yOJFbzj6TV{U;)!gkde(&sEwZ@p?VNCbr-Y98a z#`XPe+5H>>Jf7fpV?!8Y%N$T*%k;8kdfGBQ&S%?y(EIs?q+dPt%gB)!iZZTFwl#5i zzMi#2&77gAdt|HWXUY%o(mM63Jv6}0mhCdhhUU+9#ln>}TLXK#&bk1yhG||V{zr_N z1B{uNN=l8HzQ#;h7=s>T%*4}rr~jY^hYC&`8;nhgGec2hgKP^yiy=U{BRpLD}j6oi$66Q@7U%o1Uz9)Q~H;=IE#k`wH_V&m0PnpD4YzWUO6WA=d3 z0H;Zadfu4iWlZRwU9Gt=d04XsA%4aTFJpTD^VgpA0Ke>O=ly<`{qm2aKH@}?HVnCC zU5oQaZj~T;XNU699u7}?iuohMIOb4otfimJww-dWv=18(e$Uyey{6Mns9zaD?Vh4v zZ~)0!TlN4ubNV+wTekQVt>B>9{Z0iq)tvB?d7zT!Vs*QpOlV6|*b;{Psc;^STzT6P zeE!7F?fCuR{1JTT=PY#|;yliIn)4SfCtNCAYFvJGX?E#w;kim(hq#V&o#y(5_=LDZTqFKf z+$`=8^ZH5q4e2+o-?V;TxSepTaI10q)vejB!;L4AN`^?rNv27T_@DKk;jb7n`k%j% zSQ|NH41U=^NBOvSOdlSLC2%&57vbh~m^sXOk1>-v8(e1&lhn04+^#Xq4VzHcKKA3Q z=N}>3vhgm0dK5Za+1RPT(3x$_99BvX^kbbJbIUq&c3peT$N)canCN@j%mvo$f5@|= zw;QuvaNK!;^MK&j9kU|7mwU%~smJh|Fh659Gz;xKT57~`be$Q)N;7hXI2e#?-ta>b z)BjWFf?*0AzhxLZ%ssNsyonpL@vM8D`SoT=m%D>RRKS^<;DG<`zl!tNbH1se372>^ z!P7wLmEkqM!;I7MY(j@Td1e`>ldw2lWut%fjLMh*jCGD+g&xicX+$NR7*^MAhz?-L zzyCcXda{!&BL1X@SIaBly}?_?o5=I#St%2BhWdiqM{S{2Q}Zb`HJW;c>POkZ41d6N zxB#c%TPOk@?1wza1r20DDy)Hch=C;#4N))~B47%rArvOS^LV`<49`L!1i)|@3PUiz z^aUUAhCv{M0ni`3z!N<1qTC%M;0FEhPYka3=K{|7_izL+u-_2Yt>Q;Goabq`${fKu z*MD{^);5*+UY*Okx6zh45DgaTmu>q@_O&fj7Kv|WJoj?u>_;}%39#1z;^Pl+1a2Au zKdj~6Mq?^wa(g5a2|8O>KDNXCUijU*Bqaln$6#^+v9s14KD^_TpS>NFW9!VnM8*1 z-o+ z8N%9}6g)L|3C_O`I%lA+;^B1K(Vt$(%C+wzt?bP#wd#HrPkhl22%Xy0nhVx(n zfyFncy|-Vz2FA@1Lt=egseD{W=_|tFhCN34CpqQ<5FU2TfT1H`6aKq`o; zG*nino{eB$rgDF!h~y*cO(Ath^ni+`=xdaPdTnS5HSaJ*j#E1dsUzTai3;YQrr-@q z`M6R2noikWibA-174$RbH_ed)7}TiQTbvf{!7~b7VnA)o@q| zZ~iRTF9gGwF6!pE-7Q?F zliMST$>?DJ$HM(uX*0T|9;DtH@|GGh4KNp($}u2 z-+{09LsU#u)aClim#fb2AM`ho{57!ti;B4K$@zkK^yTu!r#yA#CSs$fseYA|zkFm$ zEP3$2>p_>SYe3hZtG=8>jFN%-%D0p*W@`6;-C4RKCn4vpSKx?)XL;sNE6 z({Hzyl*X;8+TeYoRKBKQP05C($ECL7jotEsV~6qrRWPt+N6h|JbxU`Nj@9M1L2kj` z)|{nNw*Q^)E%~OTtYlk@ydZ0t+}(K^bQ-oE={Fd@eNp>7NN%^9*Zc(U*X=F|QmrbH zRIK<(zHfh!d_wo!oZuhlH|F%KNc&iB`Vx*SHp>6PK=WH;!3+a0VHYC{LL|-kK@rjU_Gb5|5E` zD@^7GlMl-m?>cZ{%7m{=#~4IMecI) znGC7j!(}vfoGU@hQ1qwRg2^<4t*vaydByzjnASgaaG$7M2glnfcu z8$#-~eKvO%d5O%MO(yRpKhO1)D?eJgdF=eDD?K6lK%u(WuYrsyIdo(c<0*I*a+dA- zJQnnlWiJHn%VTzhwf&kqeZmVA^;?U3`TL=>DP3CAk#BqB46A2qZ8yqdj<{~hzxl6} zf`e6m{N-8jY~xpp!glqqfWvcyf_pNF=&fS;{^_b<`o}Z$;l;3jN%3n=OuqP=A%Brw zqw*GVZX>dTVLy*KS@88PJe`@o0Lk?lcgeg})2n1mO7P*st`^o%DvFv# z38~8C{i*kV>!6etYMh{pq8?Ji!9vZ#Orw~}JlOkb_XRk1;8?-2lEdDqwa4}!mRA-J zyqS1~8SPqmBO_;5|$H=i`<;RX2wqGSmoho{hxQQJLETlKr`C}&Ro!-O6R^IxISP#Er{i65F!{m>TTZrUjbq6sQ9DOx7 z|IAPMzq%gzEx`KrUzUZ?_(AWiG>EbcbzT!Tkd(KtaF=i+PB4t z;&tzDYgq#RniA;r`{V7`yT6P1MG1GhCfs?jJ@&y~U%tJk$E9bqA?+&DQs7&4e0$6G zXQ+?Mgn`tiag70nvN?QeZf{s7kD9XatChVS8wgds$^_IKmK^fd&#P8#Z?7A0d_!5{ z8xkllCnI-}&M)P(N}HGWvbOqd5LR_}MVL=4Y@b999XVLmQkC41)T_TexFGRT*`+EQ zk^MbC{1r&OS0%9)_!kT)jmobr%7kl6!@#vxwQ6;l_rSq}y<0tRABm}pIP=Y!-kO~E zJAM-$8E)O}-J$ImH?CveMNqyE4X}!d-8<$eoLvfKzZTb44fNk)h%0GfHXUx?pWrS( zp1rr*Z+qRglFFNc@5`u}Z3DMnKl0HhX=Cn@yXTJ8)}Djf$l4i^L2aV~gX|@(9iI|& zc)^$7FJnAEI{F?#nBfpoQxmdQiwbn0=$y~bXjfZV* zZ@pDt-}roWkCgOUNW;|Ay4UlTkxTI2VrBy=VrCMnibQU?cA`0wwdis&{XG3FMc;22wt&3g*i@Y_}F}Ii8XH&L3bo;%%>lX#3JaV)biJ zy$bKZgkmW5(qD(Fz+8Nr&tCxtVP1Z=Dy!^=6@w$?%hm5NM+e&vm3=P142!>nUr5x; z55hVox0WgMeut*E*McJ9wS4&Sw`ug$`-=R#X83gH%i_yFZ|_gk`B8_+(XvCtza>}e z*Eqya+Ad9&7EZ1+e|n=}=W!Bi+NJ!c`smHi;o2%8WK^xMzU^{*=m zIp4iMOst#RD(z^^lzXnobKYINDepJK-17b2iANgyA6wP^{=K8+wVyiGl1T6S`@!4u z?Q<<>W_Aiy-#&j*WVisRez|v^x^KjQM-2^@NawhkG&hK=8>O^>~OX&t+#w{M~TVxg|7{VOFyYB53TdN z2jgfjQ166YZRcA&>qfrtO=FpNu9IXkd=uByc<9E1YU#bwZT0WxomumK%U>nKb2EeD z>-zn&Xn#>COsZObo%wrH$Eey-wMm}q>q}cpJ4$;`<{V>=b?j^$nLkYMLvP1dus_-Y zEAms)zR#bwt@{jIZSCHb3JnDzEmJh*X=`e#YgIRYUblC`&1Igy%l((F_;B1!C2_c-=6{+0=7D>A zC2zOY1}&BE4L;DQ2l_2=FEj%s=r`EH*lj)1JHUHBFuEwFh?X$+&LU~yNM=k~c{#0O z%B6+TMP~fHIjvz34b+7TilU2XA;ZL!L`w_pptUlZa;ZtKX*ZcSt0d}6AT;TA3#(dM za;wxWq8%mxt+t|~u~A*5QTd8>%8r!OcC%T@&)Y5#3Qe1tsvN!9u2P=`pD?Yi7LnC0 zDwR%!GpOseW{U-Y5(?dfglMv}vQl(rFjWYNfxDL1{&%?-4A{X1%tTxvG6gnaO$wlp*}m{L+GDl;=RRsCV^ zS?!zKk!QW$++nCv-;wkAGDJ0754x$X)R;nye1zvDVAW=q7WOZC{&<{V+gj>rscWgz>UCmdey|iU?cWb!y&I8nHbabZ?+%0Nd z6sOael10VQ#nDAl-4viq?a1{;i{7j=w^RuMvP3f3X2zVE85ZV)qKZJRj*UxYj-5_P zOG^b13i)qt&#huiLXuO(Y(_I}G(m+RpzngU>9+0&V-3>{|dk@<)Px$M+-`#V<4 z9T-F9GKC9VBog_g!2Wlc9)__=3#S!zUMpU-4BY?fY`tExq#V_G?M95orT@r9B{Aii zeMLnKe(oIY`P^Q_6fqK}v&UwaGx)gES+uNZ(cSOv)0U#n9<}A#U0WgA13zdR(4rgY zOuGK%8V2r}v3%9)21jad71ikxxYeG6+*d*n>6@CC%3x0A;gGH<${wAlVy zxMtqS>%|L;3vaZQpo@+i7_?|4`f4GvR$N?Uv7;5JLKUM@VKkslcA^*nJf2V}S5bwN z5L|9SjhiUMx7+PKW{MD@g!+^-pWV*bEl~ki1Fqs4SQK=l80i*;*A`waj6_%C72pV) z^v)|kEc-!oN>f5>mbriNuOdzPtdeLGQyz0<0lI)jQyxt+0@Fq%XH-F&cX+ zj?~z<+$pwy*;|TMqUSTV?vdd_43ZD-+)2Ol;7-@w2X~`eGrPMxrG=N-U_kK}uo}Q9 zis3+0tjWwoCqtXuZ_w%WbW2ZrxS1CYP*}L&^UsT-T^1BaFN(evsQzNnqQL%zZxt~= zFwFB8nfkW)qKizMxhL9E%(ODa*2E&le(MxtolvyXjuvI23o&FA6-Di#EyW8y47V1> z-a%hFrE-zG(0A>DgTu{uis*zm5AYLRjGosiy~A=xfP!guU&X%w6F++6YxG~oy8`#E+~BE`?)2PB?}8* zEsH5<$_p3hrX7h8Mw~Q3)ED+scHDVgHUDM*i*7Pm?VlWknO<%_q2M##&71ZO(~Otj zcNYOjM9-Ff;`S}kUi$P6MU7k-fhTqr`(N(m`a z_gEmh+(}`<2g2XEq>G|MKRFju911*0Y(!hD_jJ}c4$kOWR0{aA7n0a z450Pl`9hTjTo4ddq++6b!t-&3K@qlfN99aRac6jaj|y~r1US!YW33Sy3zTi^7iC@{_Qv|PlqW06YrmAmvF z0sBm%ZS-s*(BQgFuG+)DbEi^nj@`8cNQ3sfhYxqlXKSX&j}fgFB>y5pz5f1aa_05L zq&U$y+DQ(9GX@jhLxJ7R$^9))|uC-e1Yq{0u@Lb9V#C&zGMh z=KMqcs&zyQs(u~@dow9_((}r-dP7*)MWR%av^4$inVF3~l_eMbs;WMm*3n^csj`ms zHk1r}pO~gT+%t5K`@pZ;hPAi%dR9~r_~;`Uj2jmW($v(H{o~|Hza2Y7WAKdk|a_Q3BxouWPV{pee4ZtPqoS~ zAgCpnWQ~EA7Qm|s%OWUdAQ@s_P%bTd#RTM}Yc+{jbqerm!f&J*-u1tD5b!!;TFe`D zQ>J{RnLeFt-u#e^Cc(jhgwCre8Z@sv?f5%w&uN}38~aT8TP1)0{T69%mI$h#hC4 zr5y`XCswP>udEk?)A7B#l<+Qb{|dvfvN~=>lQrjaX)>{0t4Oupjze%W{V z7fIU|vdhp7?~&U5JH5$Yuhl(ETFwFKxDDiZ{g33UEA8@S{2w{E48>wing zZv$gN_%4xjl8Hk}WlsA}GR=IERE^N@Bifentz-L_yjgH=Tt_RJI4^}{#qIif@0?s= zVw(I<@~XCUKS{01$jdkoe<0*Y%JR=kf3I3FZfez~#;)>@_imn15$h{2{^M5DH@|(Uq2;v5aAGfPSjiTpt@CTaEGkn(bW0y_!{B(Uwu_r*Cm zhcN$_EFM`%SaKt1{(FQ&#*)#xq?+Kf=&K>ShuH zuH>AV7*w{;s?8a9pKNL%C4svZx6REBmHhen;ErE%&m0*j|2yy5YDEY!@XZA+2itnP z2g(<~CwJ>zrk%ZZ{(O4S{;l%V`T~%7=eHIAeCo=v#^bwA=9H6!6CYMJZkyQw;uqz| z3#obXmv-eJA7~P92rAfcW9-)-3$-B!=B!zsPY$Oyj9kG?moM=@o;osB-di=Y%G72) zNOOs9T*J`TczLhhRtj+$y()+SA@#_s>57@E5QOu1|2 zxBfiYN%Yg^*@!3EZ7|fWo^G~GZZG-fR_?oU$sM`=M&0h1odYMUOqD5l2hZ&(S!^#p z^JCfTU>V@L^VU$|IU;G^`JM)-C729af#TVLI`%K1+|&!yxXG8OlqQqz257W-z%W`f z(7Kaq0gnfIJ)SF2l+FewD<*9?)QPqNk>e&z{mNw;UuY_oNw3QVw|);vF1`!wR$Vp324jheoAq0KMRKR}*M0R-q8dX|15QAQg%dx*$Q}u^ix2i?>E$HEgp< ztHqN9hLC*ZMt2Seg}R7M$byfM(74et^LQem7kC9zL?{;f$YeUaxWzQbe0lK#ytSuD zY_Kv^?B*swekuIf0Kt8)*fmUhM~{6%pUo*+ogBn!cL{`{Ww6zlR%b4NSQHN z(tCwFIbmvQ$_jHMW*(mo7AbWg@$r$R#KxLXK1v0I(kY{~YMGDBEm&(Z#fo*Iv|6dt zYGRc-ArPK`;MIdbs0+n3U#(VYQSBDs@hQw}iO?+KhnzmC1FcZvqm0$-0r|(9Bdyt8 z?*;A@pJz%@hT*XbrL%*ce#ma%aN~yN09Ijy=(4mrHRi>7maIQdCIT0UKr9x!=}^Hs z9Zkz)O=!YXjxtGX*)4{(W6#tqd@KED+^A+-LF}vSM&OdDM(Q&eb~bu z#MG-%%{ns@;1MgKK(`mC(yQ6cq+Vy`xri8n8P$^F?hb<3*c6$}$49I?MtH82OMp^9 z3Ejj#x;zwJ%Sy#Z=yR_ujv@j#u`D<^7JUD_AQH*=KJMxiv70hDI0fxSxluxJBZN>UKpyqVa5-&4Dq(KAJJ?BQqmGE& z#{{w{cOB-cLI@3xMFiZ^0tiG-K7>8ha??eCyIzg6n%F5vfQx{Kz6dBjx;v^-ufBX) zi9(xVV~-7lVA@IGf|Vvv1_X#iKx=}PIJIGL zq3=Fz(+8jpdjs{awbFVveoz9WtkKK0J#5UffSs}+R3EHmb;aZ9W#gvr*h8bTQ0ZE& z9Jiu?o+r`oI6H0-pGPPyT3M@(rLlbJwOJ^IWGe9CO>C~%H`RZiwjH~*TA>Tysh_he z5_#hdZmnoBdTKqQPmy zSgj2MgB3Jtd|1U8e{ge#Q3>|!-M4SAHtXnjj^^hhf&%=pSIIUlF0RhbdXboqVL@-g ziQmxZW$wYTdRzd=xmIgkj0(t7Jo5}9hmN@LEEc^$v=*%%Yv$OvxaA3YkOWUT7>uG? z1ly-4XwB;I$y4X(L7tMUjMXBdN%m&iAih9r74N>NcjB|=LZ?Qhp}ju5h{iZ((%MCU z6#>y}^(dY|JV?K1kB+rBXnpWU{p;4nYgf#gxn$lFtp=s{88v(M+O@OMPzh2o(eA|; z1|!kdq3bZ%pzMqp&02|Ic*6AUTA_O8 zoT-z;^%w_YLvvH)dY*tkDD6!gD;LkcxEmdiwLTWOHfCYL8XpVR_E@l{$AYyy7Odg1 z;Os8PprO*<0!FOGmnhm%t=8aEEViPcxOnhXgSD&*aOo(4TRGZLq=#l!!k_+nn#Mj{ zIpw%=fTbLW4d1DJ{+sV;NACmJpN`-UKmGJa-9fCZ+_$&m&2;T<5xliy$3g8a4DH%1 zcU)~~wtcwTK%0ZsWSR8_TCFvqkDwk+Am;N=^R*9v_8*EI@i01J!RPZYX-z{j`FtEF z$8lP1Jw@~Z z$AIT(i|4=>ut(0ygNLRX{2yoaBzQRY!&79^eE*@%id%l{H?jPy)i|_B6)<#^CdePC zkMQ)VNEPdVT7U=yYQ&diIjVyE?b=20j#Yw3IlHNaig*l6b-wr{+L3;f+@ZD$B_*xQ*`WM=Kn2QzDNE3YUN zE$(0L!tZQX~=M@-VYmSc;(n^szJ@ z+knZO<&6dtSPX16#fkrn)e2_uZY!=0Yo+~1efDOcM{GW;w}RR|Dv;Bqg$=u$Y6I<{ zwgYX2*w{cT&{$Ecxd#4_UzFtxLj3==_5-|r$68{u;Kx|Y=FridKvNJF zr%}g-!C(!j(qhAS>`gKybqYL)J02&VQbhR9E@GvaNcu_K0*@nEt^`3570!-WYhr)R3`42_a&aG47_|U{mmr?PjIYEDKbDh>!Pf1mC6-5{QAn9E6H| zoJ$2-(~x=-B2Xd>V?sILv0Y#}h|0m74;Bj|h=oI9+z7%jbq_YlL1{KY?jDf6M_`0- zZ73O~8vhZ|_z1^;Bp1&jDl%_13EM|pN%qc|d9fs6jlbvYV2R)(xw5||(RJN^`9z;* zUXX)a9ztX*2f})ZctGTA*>O>*sVvVh=(4wLcE^~8;}xn=@cIgYvQ!#7(>ruqNz&Mu z4J##~^IlYXvPhDpWD4p>Tz1XAFOT)mOir3wpOCw?e#7x? zKQm!I2kwXqcSQiNHbvRyU%z86$%t7ooMe{nTXUUwu6U>1X+zaGe&fdSX-7!tg>v8W zL3QLcUitU|s>y5XGzaT8l}~Q056M>~n98@cc&iQ;uPXDd^2*FAuN~*pCW0l4vdFUf zKQ7=8LzZ7DPKVf`Rdtu3qrHm^gm;efCWGsIVEl#p98u!PP_N8{!y09+G~pg2Z%Mt! z_|!^QtHPG3Hnin2#Ux_$)%ujGsw-8YgUk5|=>=7Hb3%RP-;$K{4!^a(F#}%M6>|v2 z`{uM?mY*zFKtfes%(h#(-sN7xX!+K<4U@_nKT+MvNz31MzRbr*m5}>R{y-+N5sW$G zUz&4?IVWz+i;$()Z>p{OL=yb2#I3$;K>6MKB;v5Obp8D2R+8mW z`D&oG>U^EL{LGAc6QiVB%oEy`H4%*uCUmGK7}PDy1dHg^nh56r2ytMrv>qt?MZyH6 z@`#3&MR^IFr$WyJ?C)gf>Q;93k+>hyfwN%0OFZ|oyuc%6SS*a481SFt8|{O96R!5YmZV7G<}}!Gx71(k+?`50w_x#2!%)IKKcBtV+A` z{Pac^P08_UW6>y;ysi{1|WphFvq3qE~xd~2d-aJ(s-zC?3&=b08l9% z%1))rR0??w0O!Hrx&~@dgCRX=6Gn;u7zH;<6uujYL`Ivm^m$4Utk&g&#*_~#JszCs zWxQN4g$mgh2yQ}TbcZ&UJwPIES#%HezuLR@=qRc*f2-^EEB(%+(@98D-A$T2gmhYL zI}Ld-h*2>{L{y?f+S%hU?mU!+84?~z18R2Q_{u7ZAZbyFf-d4ZqBD{-AYjvG(51_9 zK*q2xxa!Fs#ldxyr1$q#g#gYuGdsKg>>o?0y5Id?_q*S{RrjlVt8e+^A2HkX*hfs? zPRyGA*n>>yNkh5ACe*w3;@zXztk8nks2cre}mN62&=L1Zgxr10X%{G<2GiG zBx0ou(>n358zUHl@Q4O}Oe91y5^=)_mtFcqG#la+f#D%15gP*CZZMd2(j$`H#W_rY zR%t{SiZmt?6aY!HF-*V;dY0F5=@ZPU#r4b&B%U@TsDLt!DD?{D$5^A^&jm~aMO;?= zFo`8-_KKokE9Mp_3~_F-M@XkhhY6^}5ayKp80})xHD)`kM}4tq+J$5Yv8hs`hH zDFz=PW70ru$ZTMC3_6l@s{vI<>&2}xxCc6a)(BhRa|&*xj|DMq;~E{)mExH~7te4+ zUM!EBv`)K0uhSNAr=1qzxl!Ogj#10OMU#U&4Q8CPc~$@+k-(kY$Srv4wOY7ngNVUy zvjAz;;$-0tP_m6&%yEN~n_~nrn%$ofEU0-0ww||BcQAXY5)aQ z2*e-}eZ(Imejlj_k_wL~X=->7dQrC4M@9Rn>>!mL;3e588wINN>d0VXCyN8B#U7qV zXeUl$zNP}IsGdQpXMpEES~G;UDIKSAy}DOfDyeo%78Wa%78XZ^cHCO zq#59vRHhZn0T?RE-CACGHBglRstBk8a0vmITmblp79^UF*n`CG5z93*v_a@70~UIN zd{P0hUL6&ysRfD34We8@>#-FB%{_!BBLk|D9`4dnt#ni^O%0f-UO}Z^0q*kfTphWC zG&(gEAdo|X8~;(dO`@#tkYtGDwaLaJz?R5y1o&y+z~D2Gu5@M%99z<*_le zl}Q&+S`DDuYD!}=lg@-4TWuDBiP^YZa}h%4Ihg43@f;)Lg+LbpU94qdiNN$y0lJL< zcQdg}i_jXRa*!%G6RRqiI2ma*@HM~(fWOqhF7t5*C_zv{poAeg4R9Tfh8iZ$Kspo0 zEG^SFLF$@X#%Bx6aP3t-KBa((&9zKyf&83W=HxfOXd2k$` zb48Gwh@`)U2lUP36oHwp2gSf{)J_!V2{-YZwKs{ksJ7`_-M8`Y!~Y8`5!>zhJMto? zAE8=5(K6E_2drMA|G5*ZDH!1+YBqWxG_ zmEhy|;5S7xQXO9%DX+ zL0!b`kPzR)tggE;bpNBEmnh^pEA+Ba5ivj_5;EvS>7AI}%r(SM3xDww2m&VH0ahOx zqBTX^Q0y=({hUIjM#NjOAq_X<^J!CLq88)QMH___OHiU_^ zayp9eXNY1OhR{oT#SYc+6?h=mNSHl=U9nh9`j8FjbR1!&!O+e%G{I3~H@FP`2G|)N zknCNOJ^neYibOIJt~pU?)^HKmFrUM?mQsP`;D&Jy)|&;ZXq!Bq#~s@$WxJQ_8*$$@*l zw#LbC8Y`g{)wq=|?0`@s-d6K{zCc^U+kVLq9n%A5qEUIkJlK}5`yljT=wPdo)+Xj< z*;uN@WMge|-SJu?AO%BWp3#quU|X{M>|on_3hH1hQm{Z~CS>SQ?_k^S#z?<2)v(_g zD@fM@*7iPOYY(<6Dd}3mLa7$ysD!rPkI5K&7#Yw*LOrbQXx$$a1CS~PC@Gn+6DAx} zkOx~oFm7XsdB=?}L+B6nAJ!gPh%b{G;-q-d@-5a5SP+zN(*2c-}+ZC_>s&02J5s-o*u6TVrdA+ag zRRz`8iWDr6nF$&4dSBbFG14x0eHV;_E_nSl!q)b+Dk1v z^efftFV0oncd^&I+a9Ug6zUCiw<>9EjJ&>1@%p26Pu3CvDHvjk*VmEPyW7?)sP0yz zV1dj`$dK2&+a4PuJqE8o2CqXGy#6?0Yr9*Olyt%C>spYb652M5$&lBftcQf)^(X2! zD+VA{3{cWqn6MKjY*dilt()M%*t{p<*>x?O>w9b0F2or+$?H#ocK_T>psl^Y>-W#y z2>e>|diR*u?&W&X`}ldU1G5AewQ{Q0fm#5R;)*e^12r2c#YK;*UcY~? z>OLloF#5wgBpB4|MBLCcB5kAbKg$c>k^fusu;HTe|C@QL!JiN^j<91E1Jq#^>luflQ;3Jg{wHm!<^ZOa_1mo zz6n)pb@E$nw;{~E9YgYuJp9H0zcHKtNMpE@iGS}#lw8b;7UAf~WBOH2zKY)?tl{?p zabF%YJ;0g1r;M2%EoS-+{6@6yraKwEh&Ff%QJVXcn_=L<|&%$W|@0ZJ&j4y4Up52-}0TToyZn(qi*iLswS@iAXOc z%)?@uk_=stlNo-N2NErJ5=U28L+oZ&Y7@@0gVJzOZdA>Ug7NIv2^2QHYiP8gA!f5R zl$MspY*?}z8f}c>$9-qT<4B)F`cLyBrLW=`!0{H2cX1s3ekA9k zk;u8f;fQ(<5!ig8VC>ky=HoF?Jpdz|R1d%$uyRoQtzrys>unkPkr^vj0UobBxUX&Ca3|uX2K=jk$Y5d(N?DnCjFo5R32^{f znRyy!m;Bsd7VDt@=4BH@ z8XbOW&;X2TCr5v1ydGJo&cmt{9ik0N>F?LfqKQ%Wz(iG}V2d_I8UAHh=KVzarY4on>qUhr2&!bDD9ns~{!RT+JhojRM z|8()v#j6&tTm0zaeT%J2Y)ddc1Y)B89$^)FmLG3^u>elMR*zu?Ryhupk3;8iRpU6H z3JnZs{|)Qau9$F-h%Y6@gcx##tAsV@bD*szhSh{$rQ%orO){(ydX*CvjFASef z*5j?TRcsn%gLIlY4qZ-A04FSR3#_V_P3{GxVS!#Yl^~JT_Tm==fH=eB==XXtQn}VK z*J?6#H41aBViVV}(lxAb9V;X(*^U!)uVKD58Yo~B?-jK$15o`q1R4CVUqh5Ne}xCu zs4QEZC*<)D4Z%5O(cOFH-FbTF2D?`VR6#w3@}pQv}SOn7rT`Pnt@ zgEA@l=cVJSlFheuR5tt)Wj?ov615l5)K!kdj^53T{1c2EqxzrJBog+yXIz?~oi$%H1F(3AKKS z`;Z(oB->_TLuZyKINXj;qbeEuSO!~R(&sPd56}5lXSenbKP{b2I_!Ur!-rLq?v3dn z!wDM#|0y|q>y~sf{7kyKCH!o2&<&B)}2(GwG47j1VJR1qD@o2AOKw zv0Wu~D1_l#w?fNvq~&?ivX!*-DO$Ed%X6xhzA-IZ)6mkVYEen5mhhA5r29!2m-NKb zNzb;l>gToON3}D&weON&oY^na9*ZZB4Foo&@x49$zx?qRR3)KuOWN~Hx^ipU^IZDa z@g^%f_CX2Td1m=bEnidzwxm0%15c;xWqe@pgTU7GjzC`;W}Y%jbC8^~=ae5L?2g!% zrq2=*^SKmXAGArAC?6~Qz{;x6bX0$F%7!u^{1RkPot-2F32b`Imy`6Sg@I59ly_{no^c%Ao3FE$k2uj7sv(#Nl3 z$Gs`RKQkqSrXBA@<}>VRhA$hoEpxIF_Y3Kfg3m_9Q2nSqlslRenl>th%%k2=2p=)! zqccOb3y=Q{GOjEibLmn-?_Ivkew|@uiifZ@ISAP~_S1V@HEx!1<+(E%m;Lw;*%T7c z6OcLX1@}lN8}Yt)p~&za?cU0z_#)hF7@*@PJCF1i*uOd9wMeJ;nA&&lEnSL@LNDr- zJC5`-`?nYO$}ybhZCr_!Z>J0PxtRL_866<}fIQmhFKJmh`fhoV`?qOaqS&<8DtDyZ z#;AAk^uPmhU9vuttRGFfS=V8(?Xmj_{DNd)S=mc>gi4w=Zb#NxUQ{Hu` zcUkxe+B%%JjR%BF5l)#+mX%KrZ;@%YJ6Q3we5wJ-X5_Km@rjcK^|syhY}3C!*nvHd z*LUb_E`vf`)ueC#>Y*cDE~P^5=V1}mYFyznq%aOm&#DT0zpHSF6n?BKB%-45B}F0p z;@(CI;hb@WTS;L83j0)r@$V|ESq6onWr~GFR206WD1>|6+esmOTz-X8<;%j)k-{M; zeCoTJmXoH{%dAvaBCcxDcYO7^qKTU41@it*oRodYPYyP8pq*Z)c4D5FWzQ?J=T&(} z;58h-kw@Gb`j*jkEH$TIpdGiLms9gqXq${L6=Hj19lnIRqbaamPF+n|D`i^(FFbbe5E(M5mhqQ1vbi(Sh-1VAB}}>4Q!B83#A3A zrF+|!<3p$Bz%#PaHb2?tULM#YD-9n344OCaoJ?NX>t0R{p{)?Fq~22A2n(>qV;6~R zm6ev53>Y_!=I{o2pKC>GspL_V_o~WoAkNLI@+$$iE3yj5Q%Vu#e&UF$x+Vgy3#^xu zqoHzr$aqQ*7(F~WYVhAZ%F1uV4$#*m+gorCMOTfD+CrLoTT{oW&(T33iLy)Z9aT$v z;AyqM9x5>KtZK=k;8?9bLAs)_%XGrkK=ksw$}w7C;WRH-lJQpXOmp{ zkZc4h`H6KPby^)TQ!iWU@s;SD!Luv;U&{hx*XI)WP5SJLlp|$7s#%#QeJL*Rro0pU zW~UvrRJQ+5xv6lf=%bUvH@tf$b=t(u9oB*UO-%iaxpzl`v19!d7Biq|R6f$5V?WWp z$A0Xp)XQI3`%m~E?oM=i^OGl%o`gI+w_mR8mpcOoDDisw{X^34kf=iV=0xBN)|GR7=N`rrP1rM6tmas3C> zML}5~&Ilq#=LL_G}2!fWi?<_Ys4$AK7ox?9BRhR$&`LBE6 tf4^b;U)+y=Y|Hv9=FVi7*NA1((XQQH%e!uDzCj|fOlJ3wH*8?n{uk9$b#wp# literal 0 HcmV?d00001 diff --git a/Desktop/ROMS/zexall.sms b/Desktop/ROMS/zexall.sms new file mode 100644 index 0000000000000000000000000000000000000000..906d6157cd34382ebe9b4509acefec1b73070dc2 GIT binary patch literal 65536 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 B>$v~` literal 0 HcmV?d00001 diff --git a/Desktop/ROMS/zexdoc.sms b/Desktop/ROMS/zexdoc.sms new file mode 100644 index 0000000000000000000000000000000000000000..84403119d027ac7f937e18c86171c20d876f30b9 GIT binary patch literal 65536 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