From 6dfb5daab649ab3b218302baf3ca30153013ef03 Mon Sep 17 00:00:00 2001 From: wwf2023 <1092923610@qq.com> Date: Tue, 5 Nov 2024 20:55:34 +0800 Subject: [PATCH] lab3 test1 --- labcodes/lab3/bin/bootblock | Bin 0 -> 512 bytes labcodes/lab3/bin/kernel | Bin 0 -> 170136 bytes labcodes/lab3/bin/sign | Bin 0 -> 23304 bytes labcodes/lab3/bin/swap.img | Bin 0 -> 134217728 bytes labcodes/lab3/bin/ucore.img | Bin 0 -> 5120000 bytes labcodes/lab3/kern/driver/console.c | 3 + labcodes/lab3/kern/driver/picirq.c | 54 +- labcodes/lab3/kern/fs/swapfs.c | 4 + labcodes/lab3/kern/mm/default_pmm.c | 22 +- labcodes/lab3/kern/mm/swap.c | 5 +- labcodes/lab3/kern/mm/vmm.c | 117 +- labcodes/lab3/kern/trap/trap.c | 30 +- labcodes/lab3/kern/trap/trapentry.S | 11 +- labcodes/lab3/obj/boot/bootasm.d | 1 + labcodes/lab3/obj/boot/bootasm.o | Bin 0 -> 2268 bytes labcodes/lab3/obj/boot/bootmain.d | 2 + labcodes/lab3/obj/boot/bootmain.o | Bin 0 -> 3984 bytes labcodes/lab3/obj/bootblock.asm | 354 + labcodes/lab3/obj/bootblock.o | Bin 0 -> 4408 bytes labcodes/lab3/obj/bootblock.out | Bin 0 -> 446 bytes labcodes/lab3/obj/kern/debug/kdebug.d | 5 + labcodes/lab3/obj/kern/debug/kdebug.o | Bin 0 -> 7700 bytes labcodes/lab3/obj/kern/debug/kmonitor.d | 4 + labcodes/lab3/obj/kern/debug/kmonitor.o | Bin 0 -> 5856 bytes labcodes/lab3/obj/kern/debug/panic.d | 3 + labcodes/lab3/obj/kern/debug/panic.o | Bin 0 -> 2704 bytes labcodes/lab3/obj/kern/driver/clock.d | 3 + labcodes/lab3/obj/kern/driver/clock.o | Bin 0 -> 1824 bytes labcodes/lab3/obj/kern/driver/console.d | 5 + labcodes/lab3/obj/kern/driver/console.o | Bin 0 -> 14804 bytes labcodes/lab3/obj/kern/driver/ide.d | 4 + labcodes/lab3/obj/kern/driver/ide.o | Bin 0 -> 10408 bytes labcodes/lab3/obj/kern/driver/intr.d | 2 + labcodes/lab3/obj/kern/driver/intr.o | Bin 0 -> 1448 bytes labcodes/lab3/obj/kern/driver/picirq.d | 2 + labcodes/lab3/obj/kern/driver/picirq.o | Bin 0 -> 3140 bytes labcodes/lab3/obj/kern/fs/swapfs.d | 5 + labcodes/lab3/obj/kern/fs/swapfs.o | Bin 0 -> 4128 bytes labcodes/lab3/obj/kern/init/entry.d | 2 + labcodes/lab3/obj/kern/init/entry.o | Bin 0 -> 25640 bytes labcodes/lab3/obj/kern/init/init.d | 7 + labcodes/lab3/obj/kern/init/init.o | Bin 0 -> 4936 bytes labcodes/lab3/obj/kern/libs/readline.d | 2 + labcodes/lab3/obj/kern/libs/readline.o | Bin 0 -> 2136 bytes labcodes/lab3/obj/kern/libs/stdio.d | 2 + labcodes/lab3/obj/kern/libs/stdio.o | Bin 0 -> 2932 bytes labcodes/lab3/obj/kern/mm/default_pmm.d | 4 + labcodes/lab3/obj/kern/mm/default_pmm.o | Bin 0 -> 18952 bytes labcodes/lab3/obj/kern/mm/pmm.d | 5 + labcodes/lab3/obj/kern/mm/pmm.o | Bin 0 -> 32000 bytes labcodes/lab3/obj/kern/mm/swap.d | 5 + labcodes/lab3/obj/kern/mm/swap.o | Bin 0 -> 15632 bytes labcodes/lab3/obj/kern/mm/swap_fifo.d | 5 + labcodes/lab3/obj/kern/mm/swap_fifo.o | Bin 0 -> 7632 bytes labcodes/lab3/obj/kern/mm/vmm.d | 5 + labcodes/lab3/obj/kern/mm/vmm.o | Bin 0 -> 16724 bytes labcodes/lab3/obj/kern/trap/trap.d | 6 + labcodes/lab3/obj/kern/trap/trap.o | Bin 0 -> 11968 bytes labcodes/lab3/obj/kern/trap/trapentry.d | 2 + labcodes/lab3/obj/kern/trap/trapentry.o | Bin 0 -> 1180 bytes labcodes/lab3/obj/kern/trap/vectors.d | 1 + labcodes/lab3/obj/kern/trap/vectors.o | Bin 0 -> 30360 bytes labcodes/lab3/obj/kernel.asm | 17007 ++++++++++++++++++++++ labcodes/lab3/obj/kernel.sym | 537 + labcodes/lab3/obj/libs/printfmt.d | 2 + labcodes/lab3/obj/libs/printfmt.o | Bin 0 -> 9372 bytes labcodes/lab3/obj/libs/rand.d | 2 + labcodes/lab3/obj/libs/rand.o | Bin 0 -> 2180 bytes labcodes/lab3/obj/libs/string.d | 2 + labcodes/lab3/obj/libs/string.o | Bin 0 -> 7536 bytes labcodes/lab3/obj/sign/tools/sign.d | 1 + labcodes/lab3/obj/sign/tools/sign.o | Bin 0 -> 17456 bytes labcodes/lab3/tools/gdbinit | 4 +- 73 files changed, 18210 insertions(+), 27 deletions(-) create mode 100644 labcodes/lab3/bin/bootblock create mode 100755 labcodes/lab3/bin/kernel create mode 100755 labcodes/lab3/bin/sign create mode 100644 labcodes/lab3/bin/swap.img create mode 100644 labcodes/lab3/bin/ucore.img create mode 100644 labcodes/lab3/obj/boot/bootasm.d create mode 100644 labcodes/lab3/obj/boot/bootasm.o create mode 100644 labcodes/lab3/obj/boot/bootmain.d create mode 100644 labcodes/lab3/obj/boot/bootmain.o create mode 100644 labcodes/lab3/obj/bootblock.asm create mode 100755 labcodes/lab3/obj/bootblock.o create mode 100755 labcodes/lab3/obj/bootblock.out create mode 100644 labcodes/lab3/obj/kern/debug/kdebug.d create mode 100644 labcodes/lab3/obj/kern/debug/kdebug.o create mode 100644 labcodes/lab3/obj/kern/debug/kmonitor.d create mode 100644 labcodes/lab3/obj/kern/debug/kmonitor.o create mode 100644 labcodes/lab3/obj/kern/debug/panic.d create mode 100644 labcodes/lab3/obj/kern/debug/panic.o create mode 100644 labcodes/lab3/obj/kern/driver/clock.d create mode 100644 labcodes/lab3/obj/kern/driver/clock.o create mode 100644 labcodes/lab3/obj/kern/driver/console.d create mode 100644 labcodes/lab3/obj/kern/driver/console.o create mode 100644 labcodes/lab3/obj/kern/driver/ide.d create mode 100644 labcodes/lab3/obj/kern/driver/ide.o create mode 100644 labcodes/lab3/obj/kern/driver/intr.d create mode 100644 labcodes/lab3/obj/kern/driver/intr.o create mode 100644 labcodes/lab3/obj/kern/driver/picirq.d create mode 100644 labcodes/lab3/obj/kern/driver/picirq.o create mode 100644 labcodes/lab3/obj/kern/fs/swapfs.d create mode 100644 labcodes/lab3/obj/kern/fs/swapfs.o create mode 100644 labcodes/lab3/obj/kern/init/entry.d create mode 100644 labcodes/lab3/obj/kern/init/entry.o create mode 100644 labcodes/lab3/obj/kern/init/init.d create mode 100644 labcodes/lab3/obj/kern/init/init.o create mode 100644 labcodes/lab3/obj/kern/libs/readline.d create mode 100644 labcodes/lab3/obj/kern/libs/readline.o create mode 100644 labcodes/lab3/obj/kern/libs/stdio.d create mode 100644 labcodes/lab3/obj/kern/libs/stdio.o create mode 100644 labcodes/lab3/obj/kern/mm/default_pmm.d create mode 100644 labcodes/lab3/obj/kern/mm/default_pmm.o create mode 100644 labcodes/lab3/obj/kern/mm/pmm.d create mode 100644 labcodes/lab3/obj/kern/mm/pmm.o create mode 100644 labcodes/lab3/obj/kern/mm/swap.d create mode 100644 labcodes/lab3/obj/kern/mm/swap.o create mode 100644 labcodes/lab3/obj/kern/mm/swap_fifo.d create mode 100644 labcodes/lab3/obj/kern/mm/swap_fifo.o create mode 100644 labcodes/lab3/obj/kern/mm/vmm.d create mode 100644 labcodes/lab3/obj/kern/mm/vmm.o create mode 100644 labcodes/lab3/obj/kern/trap/trap.d create mode 100644 labcodes/lab3/obj/kern/trap/trap.o create mode 100644 labcodes/lab3/obj/kern/trap/trapentry.d create mode 100644 labcodes/lab3/obj/kern/trap/trapentry.o create mode 100644 labcodes/lab3/obj/kern/trap/vectors.d create mode 100644 labcodes/lab3/obj/kern/trap/vectors.o create mode 100644 labcodes/lab3/obj/kernel.asm create mode 100644 labcodes/lab3/obj/kernel.sym create mode 100644 labcodes/lab3/obj/libs/printfmt.d create mode 100644 labcodes/lab3/obj/libs/printfmt.o create mode 100644 labcodes/lab3/obj/libs/rand.d create mode 100644 labcodes/lab3/obj/libs/rand.o create mode 100644 labcodes/lab3/obj/libs/string.d create mode 100644 labcodes/lab3/obj/libs/string.o create mode 100644 labcodes/lab3/obj/sign/tools/sign.d create mode 100644 labcodes/lab3/obj/sign/tools/sign.o diff --git a/labcodes/lab3/bin/bootblock b/labcodes/lab3/bin/bootblock new file mode 100644 index 0000000000000000000000000000000000000000..b04b04f58b3af9b64903fdd9b677a794735388c2 GIT binary patch literal 512 zcmezM$M8VkjlKhY7oMc7U@HB!;o`FtDC_>SgtX&q3=IrGkY;#$KTAW}4uuy$_D&Iy z$gTiK-{7;N#T+0tmIkl+nvaX5{RgtsntwBtUg2jH+fmD}a3HPu1S7xFfmgXT91LkY z1Q@`UJ?MMUcVREc;5`gA3=A(80$H#Bg?2s-@3j%=JQddX=szO^!@-xFniqmQkM%k- zHoxKMtbMclJ5aRK^@DZko8qj_TW?ej*f^Aa-}MP7x`FZCuFpWa%k{&%Zr2aHzJT<< z-~h9~g4qIK_BSwFLWQ5_!MhC#owwe>jp_WpvjOOgT_1od{(Q>)@A{$f7y}c~T@xds zqT}LY4~H6_?0mY5L4biFYzG4aBSY{D@Bjb*H`;>O^{zf{rS=PDfK2}FraC~XcLqrO z;4@andzPPzCAytCnhz^|s#IyUg4XJSDAb}xMT-?RYSdjfYSbu*XrAx)%-p-P8)EI}_x$mEK9Bd4 z&7M1R=FFKhXU?2CGxzRd-}td9DJjaix~Q&7-(`hIAaT>JT_kIS@*pQyWvHGyKa0s( zVSYZ_pQ89llO$#GS*|zo@hMiyU#e6$lYild{xX8eS9c@`+2o9$?|+uS&l31q0zXUO zX9@f)fuAMtvjl#Yz|Ru+Spq*x;AaW^EP?-%1U9Ms-YWCBU74P6uc0cfA<*A~?i8No?8>A}l$QiG{Ekqzzb?JGl9?2i`+`Lf6o#`(w2)3*g5x%(4fdVakBgdkd z=)>(SJp!d8FCrn5u2UmSJ(j6knfm1qw&-#L_36rgD8;H<-~9$)x3U9$Z6d;2lnnY> z1NE(HVfRf;iY>rRzeTxA>f3(ks?_3sAzv#y<$dHqp;i>91WVdNC9TU>dcc0n2ki8^ z!vghfYEhO!-3Zk7qPAEb@_P8Y;eW5XTTI>`HJLOPejdRtA(9rY1@rM9H+t~5-mEes zq);iogIRH5<(dXC*_)H0TbRDWRrq7NqM?s27M5MQxhsI}Yb7UfW&1O0_O)@WxcY1A zKLzzCR7uIH*rAzE`}V9TX@yFQIv0WhN{D3AGapyWeR~?}_o%vED|AKZyB;VP@d#dP zyqcAf-lzeUQ+oa{Z5BMz?x1f!Mn(uIdrf5Q!?*vMe(0oNV@f!sadT6b;1+P0(wO;pL2BmX;ZeTqx;Hdh{Xr;MfQn+Z zr~=vm>K%%O3erdU`p!FqOd%Kjtcw(Mid&lv@+*oVmn@>U7NQ9;t9&bJZ1?pI`SzdT z+nagAK!}DysLPagI|XBBn&$6k!_a8x!YJSVMQGaoA8Fc7;d8&OFP9)`o63Ot6DSa~ zDNwqbmT?dp&laW!i@`I{vXR1}vi{F7K)zQ0!-wFjrB1#gpYA^d#3E<-TITh{cOiOy zY1rRm6PnTUT@WBTmi6*VCS+HptWx!bBYl1>Tdz-ah zwsE|D{XMm+d0Dv5kh}yWkr4Fl4gue{%Oa8^M0RN+yDcIcNTdV>c8%JyctOawJGdo5 zZfz-zAv85I$k#GzOYL!;BDADHe=>r_u;vFM!F1$OXrY3vJfEQX&<(qSzQ$M|CL5uG zeI$eZM!}US>~wI?7Uu=1d>Nth((|@cUqR6fY>|{#8ri5DxzlRozxK0{AlryW9*?h% zjm+Fw(9MucjUA%9C>_ck^6f-_?3B{YqqbZ#83_j{jZrgtsee@GnPqiOc!K1-B~{teSv|yGj^DWG8^_sWR?vQOqWX0@AbzVkS0yR=vDq_ z#puUv5{%VhoFx9W50eh8q|CjkIYXJY(WG65IR|*ZVA>j!#<>h>Q<-+7Nu#rZwE0Z? zHPW>ALW*ham|9k>}oFVAYHwU3PQwO#Y}id&rYModPb5}48S zyvE?>PzlE9Zul*xr0cuY%cH30kfy%%T_P+hB=(Fi?!M0HegZq8PF?kc4BG zg-SMrirRwPG3RW@oRdcP6_b~lCa+#3Z5kFTX>)B*S~^j(P)#758Y*gCacO&~C$TT2qq6A}U ziBe7%rAdpNmOvqkY%S#y0*io_<-RX)|Bc*ZNrC&XalcRQ_sRXYxc@=!e~|m{o%RP> zJllNxRYT7(JfX~uYG%;4575kQ>azQEO6JD!n9J_NZf1qwdl%}wbLO1$`I z=!ZJn2;OJkLsq`eL2yM+B>X_wwHK z?`k4ZbD(Xh)Uc(QwuVWkQk&8vJ1~yg*`vOF3rWBz1Zw|vT@I#fH3-`zsxC87V ze4&OV-3K^MVI)jHiVsjog@x(9q$pkCsDS1%u(y}L2LCc|TmveBz3KiQfxSKamTWN+vc($QLvc^5KX-NBA!JWI4yHqsgGlJPhfM16IV9T>MK| ztGFU1L}9YT!id%$_8od&YpskEOKZVUpveQRaCP?;trt+#Z}viWzy9w!xdPPVI=L8k zj!rTT;OOd=fa5yZH#S@*=pn1iCZkv2NcACr8F=~1X%K-VkD*1c>#;43S?D&ZYdepnm`2y6%t|hYw7j>o)bZZNrj7 zF%ykRXvavc48LJACyl zG%v8dU=6=z!ipY`BEb1-X?USeXEzmqAPvMc5;^+Tvrfz5>Lse05 zT-Ohpb0z2ggFkC;hx{Tp!Atm<^TWrXlE`NX-fdst?ql!V0|RYoS>zq9fpi8U4yL5-cX-u=yuWfQCs}OR`X8A0|9g{M}rY6Q`|AZ8?;JP57iwF zy0*WMbz?g0NDIW&5(sw}o9Nq@IAsZ0Obz=7G=LCf|5~6vL-`Td*&k@?kG?YlC&7!l zc;b?lVvI}l$TwIr`~x7S;csZRyXNsq0*4a^|ETnT(({E4$xH0LGZtPTURW53cVWi zg}3>hYCz#o$<|O&IOKaO_^;r*!Oi=>oEzL8{4RI}M#xhu9b~L(n?nt2Sr zLiPts`gTcgjUler94c6V^;)8^SFBtLX)^}XB{^fcWV8mmplBdG9sa2Ckn3_F#f&@A zC7c4^)!(W0s0pgyM%AzQijwNk(m)siSA?HH?o@=Vw)uAEvXHL@|5a=RG!2T2FcB84 zML=sw*`E1$@8yVbAi5<1kCqjM$lqO1+Jhx65JIMt z4$CsyGm=uJ;aTXDZ;}@J-F}C*g`=_*Vs-&k@*4sHc!R$=6@3Q*9E`R^ z0%;-)cn2ynAMna0TdDI?rkd3a_cl-%4m*a*-mdfeg9XGe6NZ3}2y{R2Lc}Uh6?*`x zjOHGmL`GVYw2HZSVxXm17vH+1KDz-d&OaV}Y$YE@g22`T@uB-X2LiDB{2ml``n>Lo z_Vy+985~pdA$G(!vQrwz03mCh=*#$|va77JqfnMCBn@{iEOc7t#?)oEY8wCr_I+s& z<05z`m_GwyXfTb$8(2YL8gW(-;6s~*F9TbE0cWq|Kg+R{aF-K^khlo&$%*jJa;z)d zwFMC9eTi)WkyMTI{&K7{+_i?_WVtwL8t0?sSa-NF);+T78~uI{Qsf?J!L7uh|m8w1>&Zt zqkMZY#kZYHXrFdf;9>m)1$u`wQx#^WuYyS*Xb^Brh$oDEp>nQMyS4z8Ydv8<>OWXFWeh48-q*h%{qynhQ5wNEDJ7I#gA{2x{$ z|9j+rkNh7#vwVBn+9x?QmT!LT{b1wmdm1yJX~as2_1xaS@pf1ZnozDa;{KL*TN+tl zF%W;DKU~Luwu8EHC6M;gYNWl$G~+HH?NtxbUO5D5R!D{w!L(=>q*);irhQ6!#$15EFUj8*vyf(m4w&|J52Tsk z8SwV8-fxL#q>Z#6nD#yKjD(E{$F#R29+heCD9JqdJ8?T3fi8aE&UTiW z(XBv%H{W8{7^7k z8(ugV>AW$>I{otlCEjy@#1|UkiH6I~5x5BsqaT4XR>>ef1`<)3zc~pSwR-D`YzzWm z>!vV}l=dLL(lI@ytp||PbT7Z0yME5ypPAR1aqztakSq6}+jkk$67Cx0PAU_gP~XES zy3MzD8ia}M;mnl2?vTKE2<$y{K6fC{4s~l*IMx?IqJE2d;s4OZ-8VgmZbInuANZ01 z3q)+0jYe=M^JcK46A}1Ex)W1o$KKz>iC9)QH)7!EQiBaf=1ss@sxd$;*CZdux1LRFF?)<1PfY6GIo}11Fua7|aP%h|;lB!`&1QzwTC3QX$VOnn-uX70t}ohBkS28|6B7r+ha-v~bpl4*lz8z6h! z9T~qfWd2Mt^Fandp;yXVIlb;ZeBR$lq@ZAPB!g#FFlx|}zYwzsm`1RbvX-bDBB)-2 z^dymTH4>UoXp;ZQa&Ta8|IF*~#Fv7W z^}U%V#R7X5WG?*x#G@bTvB$x2E_gLtbeT)jP}Ht~59%H4 zP>1}8|Hfh2Dr;$5?YHS!<(#7k;8CSerm!x^~k!%X0ViC|XjY(P?ZQ&)suuzD8D zI~~41%YSG3bSUKG=-aCwK&N9pR>r!ojHRxGU!S1heGP?5tYc-|9osE)Rpz>Bo4Cb% z!>${`lOj8zPnVZw{wZ^H_kMw`=`UZUu2Rw0kq96qx8lQo&fuN8Dl>YS2C||T z5;!D!p1$uLJzE2ZMn`HOJ33SYeWE95;IQa18aO=4I1tG7jrP>Q5z#IhI5PU}50Z6M zv{eH~M?coUG0}H4aBTE-4fKod(10iUtOoi=pVYu{(Z6Wm_~<$fIsCCP&}az{Sy>8n`6Nqeno#G`d9tmqnk@z?A3)4O||5Km%7q@7BOC zqqk^aYV>*yOp69IP#V2j1Jk3w(!h-9EDe-Jr)r=)I#~lVqeU9HGV0a9tmqjUsED4d zfvciCDgzE@M?D&t6Fpo5bE5}qpfZ}KfvV_!1Xh4t9sNoJzlwgMftu)h8mNu#(ttnu zvIgp+&ud^_^dB0SAAL*%3!)EcU}5xL4O|_)Lj%8#uGGLa(d#r&A6=w@MbSD9ERN0* zU{(XnQFNMymk^$$;cE#OYM2L6qN6pulyJU=ml4j<@NWqB)$nzMGc>%Mu+ngla2rhO zRch962}d-Hqtz<9Tf^5AZq)D!!do?b1K~{?zLD^H4X-4;O2fY+e6xmcBD`F~zbAZ+ zhPja%t=8}@gv&I1E8$Btd>i5M8or%yfrjrOJVL{NAe^gVp1X}6t>HTfXKDB@!l@d* zoA6%D;%GYqebE*TuOi%};njq9YWQBl+cnI+;OJ8tUQ2j`hVLW1R>SubzFor)5WZf+ z>j*b!_)moW8h()QEDb+I_;L-eCtR%IKNI$9nDcRTq=p|MJXpgU2zxaA7sA;Z{wv{h z4L?eFKlXRf_QwdfYWQ!2n>GA6;awWuNO*^axdRssYxoJmk7@Wx!s|3l-ywRZh8Y8k zuGBDNTG6E%ewy$C4L?J8j)ud8r)hXI;Yk|aLby=F&k`Q3VJ@tr`5JzXaE^u%Du@1S zcpKpi4RgyNsx2F;Wr77(C~i<=W6&Z z!rbygyLJ=K((v1aQ#Je!;k`IF1e|vXw`jPDaFd4LBfL|??-Smx;SUHurQv468#MeO z;k6q6i16(irso~KUc(W>4H}LT_G|bP!m~6SBYe4rTL>3x_*24O4Sz;>q=r8yJXpi6 zggqMmf^fEmza*Tl;jakq|61DKMz~eOUlVTDFm~^t{~F#yc!!4f5)NzlTf&cNcpu?) z8vc&(of_Uxc%_EFC%ja{KM-D^VFpy9a{%MGS*VYiCT=ix3-_j38!BA!?1tyIxhcb} zs^HOvloP_ho&?T-8+?YHnx~S?ex4pLMv!oSNd5z7TUraUP^GoqTga_Vy$e!|hzVWn z$@)8$h7~UMY}`hwcIlE;}Sk zlIYR^J9G~hx^3GE(n*W~1)j2Q1LNQ%)ud4XSr7pC#JR=Llx7b4<8*80vbo5iKp+N| z#Ucm1HKw2}HU>iYD{0JpC~IY?4;zo-DUEA11k8+WzGjL`wiug3SeY~hOLoh#bA5&z z=ZkmqX#Y+gAm1hO+>Im04zLSSb>mNgmRUSUcVJ=Cnmdg??%!C0l7~^g^m*op>1Z$< z55AD6*wNhmiC}B71<_)8I3ayL8rXsbehiD6)*!Y%x%-I|xvfj;TUn-V2V>irOF51x zOg_<&o*7s!x9LW3I4q2Q(%FNsy27?iL_`-6(e2Qp+m3CNP{|Gv9eOp4!|iQ>Eg3;b zNY3V?Udjf0n3UO0*@|hzmL{bo$L+O{kliTK0V}krx2q{1oDS=1RV_NUFY6j7lVeBMlK8n7D#^`v%k`}rNo$E9WyweSTeBIIM zDE$Lr45~xB1J!|mA~-5-)VeuP-yBzKtamjlO_~*K>Ow1;4DPN#{Vo^RFGJwwq#?k0 z!(k&^*uW4Fbx%_JBjB_iSnZ2`n%ZMCTHAx2T2Z13EIW#Y@D8*{dRnxI!>GVf6Ff+R z@l|&P6J<~$OCPzGJJA){#FegNkD0EJ?%j%ALFwMD>|P8o^f$WeDe2y)LP$aP#^yng z@fx9+P}jOrCdyDYHMUs;d##rEs*rD0sAR3v`C!qg)dn1%mU=g^-t|G>x{z;usAQeg zyDo$j)N4jd=CZG_C`>jC+kAIwiQTCs7Mp2_tAl)Mu$9vxvF=QCW5yFnozBV1>GXcD zQTHJH+e7$E7{b4kjY%A$&k%&0gC)@Kn`xU?21~9F`j+D^=vx}XA8xbwjepCff!Bvh zmO8+4w$uqU%0M!6M4_=W5E(3oRMG;zDA-8L!D7+_^)1GZ?M!M!8ql0ZT=uG*43L74 zNTVT`yh5?zXhf?YZN_(-A3cu;!P<1$ z+@!JxS!LJjvYbqwfES3_=~%WMw-4%DJe4IUl>R8Udf<*vBG}U+I3-T77)3&TQZavT zem`SWV~q^@6p#MiHJ*~nYvT~ z2I5JgOOq3lM3>G*l4D7=hY@$xpqD)A#hPMQK|{r3+X;{HKz^w9k+%oxx4RC4He8dF z+EZY)=PL%FF(twY<*e9B_YGznexR9T;UO-m7Y;I)T@BpG_Jc53N?J!X>fV@{MBHl; zzZJwIA0j#cRY~Iv@CiI|&7AKYFPKBdam!LExD@_d}9VNxDD+wE4Xj7nmliO6y z&2N+FooCTY2fYOI)DSFLy3MyiYv~3&dL`y*gP5lcVxAt;d5?((Kjvt#WtFF<^iB89)$jtVOa;mqlhzzJX(E6EYEf5809th@WC#(_p^N;%qJ3vl(@QMcy+B)2 z5^1hS7NiO9g-(l+=Gs90+PE}v5)zUxfRp5!xW|$z;1O%5uhzdH4JMC~G%$rVPoTcZ zO!G}i1uwP=*6M;}D6*ql=aRa_DsvXfX!bB?=zjkpsftT2^ehM6gT+OBJVq$Y=TW62 zTps8|(xXTc>TuUrk*}cd&Jg}eRvAIv9;m-PE+{^@EK*9*oMhaQI1&8P;^a5~B;!re z2i)ZY>6Ib;mE3GdUmvKyK7lkQ#&`#eNFqJeB0UJC(HSHfS&FeHYmD82h-Z{9q8Ym^ zsdTAT`qS+w?V50r%z6+3!7d~?JWeniC%7Pq;0%l4orWNbLqL@46cTjn*v+IuT?hWF z$jeaZ1k-SP68Tvc`7tDKT6-%BI+i#92gpzovSJv39sg0J$5pBqT>UW?Fj4~_*^ps zL;keL8$fWo9g&%otWC$GJvT)3SCih84x6oM{nhx%MZd_x*(x340~>2{(DP2fFMAW8 zKW5|Kh463;AQzcgJP(jNuy=SCUOj?)IjA)d_i~4mRQC?X4Gv%p!50o>9ds`N=l=7A zyL;@rj0WfKBq@0>zfex@K2NxN*S^aruJrQ6iB{R>V$eKLQ73 z9^g=N)H*l99b}L+wPYo+Wmb020V&>w+(1#4Bu_{=y_5its z8KFxsN>(8Vld}Dg{~(YNEV;8IULc%}URrhybd!OOk~;(8_Q0#{!RLej?uZ=HLBDFx@rZ_L>INyZu)GBT^OOyyv8*Q_nSV5uUS{OQEGRG*&~~@ z>GeJ4=)%Mw)ddC%I*QtKo2@8@#lHP0-wuj>JJKQc9n9AYyfbjrAHBLGGr*ln%yZw;c?sCn*l$lzDV~o(0CFow=#*bN&&`a)zQk}}_JH=xxTDnNkJ?K; zLVu@@((Z%wUenVYzOB+)UxpN87(a{gS*#Dy@)meGrsc2`E!b1y^o~U&{zu>y>6sC) ztl`TPxOO)Q*|Ax)VW~ToRq|$&*HBD{DE>$U*Ev?6mr%S%!0SI z#Fs&qm-w>zC5H4S%f9oS7OXfjbDvm9L6FJ+3?qX{Rvo+l!8*hO4n!EtHLxRBH{~(t z#K)4Iq2PKl&QLI(wFvX~nve{IHR%{gksGicj%)xEktg9eM&7_bLzEjW4pH}#fl243hI%#vG3Ig740z7eUCZ_XSeagXYhOzBOq?2$fDr^pwG zKtw7*AU-EhXEsL;bKi%8c)fIRTS$r9l)3B?&<0LlINsKsF#&Ht=V@YA;Q=}9TCy{E!ZZ{27RI0US zP|aEb+q+Xq+UQ_`eWQv^P#dYwSUlfu*4LC=-@8_Q+yBn`nzU02iVzS+2bR2YrqflC zT;T-`PgL>yFg77V5g7t4n3=&5mC%2b@TE`aGE9s)4cwPNILWWl$dz|_Y0M)1UN2w{ z5;0=*iMrm8J48?qr6j;SxRB(x8O-%%Z9_^jXN-Zzd%hF)KZ3Rh`(XG8(uBYh8+aL1 zH;Ig{UyeANfzC&T4H@VN_Mh6LOASM4$!i!>A^_b)yt>Q?qYxS5lOP(OQ3qq5K@t5O zsj)aSc0Dgb+6Jo!o~!KX%Qm(`)WF6>G)u`09PhwP4_>;}Dyz42F#BUeeIiB~^k0Vh zI{FH}HW})p8a0<@^At^18Skh$~$kpdZm)ud^JbSdOiBe)09AozkuCUt8! zj3(heHpg)nr#Zf&jC`sY&JG(tkWyQSflk44OB>5o(T;N3FD8YbgD>3wo_I7Nf>W;f2snklVR8J`- zon3-5ZfDmfmAT0(^Y6zE&#u+v#4lDeVytw8R{e?y~SJ;`n$ZL*t*2 zgny5PKg!{hQ!<{_&?QDBl~`?+=q@$L*2IOMTRL!FQkgYYnb#hR%OgGpAP;K{^o064 zvb{Ws*8LW(>p;sGoL4?${as8~CzV-em6<4Igy*|Z#;N8HNktyCig+xR<3r7K;jw%E zOBb%UD82EhHPp6#`XfW_VXM?Cr<8t#Migaz62BWP{A%Dk>g$@UYN(o#)qSYA)A9N@ zi_nQuvB>IIDASp&Hd;m6{%Y54WW=+JrtUn8&gP^xJY~^Y4?6JkIf}n&>AdQvts)DZ zs*lQLWc__97?-A5vQ**y1^IAT-Aw0mJW%UN#lc)mkS!J$38N7UFG*I*+hz|}bv_H~5NQ9B9z>JeNV{m+7KPidoM;6uY zaZXAi?d@qK_&bj+^peu`#H8XbO?J zP*GFf3&A%we{>jwsjqGR0N+i)S2n-L`%ryT-aZ(qY=kwl5FgSn0ELeV+9|6*`%KX0 zlDDY`-*;PVNC$*8!fv}XX+))Wk~F?|ku>i^^}9MH?IGz8*0i_d+tR^y zu>$laWnk<0cnr*m!kdG|vSWg`ucfzR2VSpB>QIn=qZ1MH zVqp(@va);WAqp=&jS)1N9OwsA(T{|pCpd)HCs8@iqOx45ND$gRU53D1^d@921g4XKwe7~}zPsGajht{S!ey&4=EpGd zGB3lxc%Q<&0Rp29vKIN)&>o;^XRiix-9Q`fsK9f`1=tQ+O#s^v&fD!&-3i;$xaUF_ zLT5TpeIL)#->qWc4*EwCIo;ORP{9h@?B^us#CLj@(?fZgyTRt!W}=p~R#RLAH1=m?1}K=DHN`bn_{f2ey(`LR+`l6$;lX1@G_vLA3Y?Vc_ zkC9nt1aNO8C%4>#sYLe-)QwldYzH3h!6HWf;>+=CakamR8@pA>~8$2$GPp_-Tan^SBgA#aPro;@hxxpn)5GiUM;t2arf$qkPN`W^*H0<6+A4LjKH@#Ri5iP8>>Qavbf^kWL+(k4|+lUg|JA}xqWC#)6sBoTVqA~Zr++6`G?;+EyN zmq%|?b5hqp9^?MNnSU4XwOto;&hC{uQ5j86#z!lJ+jU68_OGgDEJ4z*CnIaza$qN%ZOPI`qpxKVCxg@iDEB z8~E%+$zw(z*9Yp?yZWey*3u-hZ(C%0fo!|j&#sv_Oah#64wR=0w)xiTvz}{t8h{VA zt(9}2Yvmm1I-R!;nmfw3F7X`bJxTSxXVrVlYE-3z=h8-g9M2DRG zj?3(#x21GouQ4B+lIr4Kw*15Ts$27-#5fB;>>(YLN^6T6s?E;@AH zgDc>0H~<`OLu?UF5qOfG$(B2$2eX$cRG`Ir(4yBJRfvF=E;icKkGldqUr3!IJ6c(r zsCz3va8!l3z=Ns~a#STNiO=sWK1YGicnKXux(#b`s9q>rRL?o0oSQ^tzeVM%dlIS0 z&XXPo#Yx4!w~9T5Vy;3R3>eaz1N_Jvx55PdO5*vAf%-;sTJNSLQeDv3j=X;bQjWYk z(Fo6Ox3)!CugW;T39`h3%bZZ;858@2qEB0Q?C)snzQZ|=xWhh<2z$JW=U;4lT(_fx zZM}mH`~DVb_i_USDY;z55OWQ3x_w%DvCdK zh4<%)Dc)g(_KE&ZJz2}Yog9pY^U@i?IE6#+(`xQeD6lB(yNl~5>|aY=o+Qk(EzCw> zCf3C_9}h-}NaSW_CAbG>q+XOnu*f2~7z9C~j1=w{3NXcScdHW$#TJDzn!@#@P$m=# z4&ZDg^Dxn(@ZFul!(*gyoKWzPg5!pD!oy^X!V{XpZc=FaJ>>unpH~MPhbK)7w#)sA zU2v&IVZOz~-9jOOhfXM5Zc#WzQxHjBE))_Z*-i6sND>cIEec=3Wk6qu9FFYBLwBPd zNff4A6#k+qh(7GPse?YGYYIb?D46AuD07vjAia63P$;l_^B_&(%p?l4EFOkv3ep#o zghE1J^w1QFk|@l!D8%S07@h1b6d*~y0N9kBmQ>a(*@gc{P&R4F&{NmAB&k%DRpUY_ zg#@#Xl_4gPyaPd<#UR$|8k`u!v$&1)1LYr&LAXbE=@+=`Xs+k_f}zMivFI3N0^Wo7* z8IZv*q@|A9qQiFC$fRT8lv!<+Ib6zQNIfXy)-yb*jB#G2o)2!br?x^?MmFu@7bX>d z)T(kVii1rp8kyW$Alz6#XpM+9!mx=Uh&Ie;hM?hp6PFL1in;v9({6Py=(h;VBk{W> zr&;9O!k_KJFIEAMtNK)iQSO)6gghjN%w|@G93sHY3QDE~qOy>*fZ0Z5)dMkGYIOcG05-JcvZRs+m`0CSs9T+28Q z=@D*K#qVE`TBZWL1sms01&9pM`)wEOZ%62T+2&nE=yNzm7fl`0}@&E{luN?3HDnd7jE!5{syK)j=yzozEg zx?VI-Dzo)cudL5?y-z09dz@8o8tTRQV67VRR8F7oVF8Qe>CnX?^hd$}R{L2}dpJ-Z zHmy#sJXBLuC8SfI3u-byj?=jK{<3!hJFVZK$z z@luB#Y+HHQx)93k$Zpi;Iv6gb!6G?n5bvnXdbVmxqC4E8`!DzgqRx-uB(WZ)F5{Uu z{1VLow^X_4zfg*bE5lD@eDOZ2hPA@(vo6tSnbWtT8q=ksHbyitKBPQm-l<5YD0OPE>EqAQ+QpDW?Bo9p-B|ZvYOh2=^qUUgynszhKJt^1-t=dhw+$4 zCs8=ZqHwoEA=TpHLZKj!r)qJJOQK-T_=*%R7Ye(?RATqL4psW={RMQ<1m8 z7c67^dD3JX!}p*%e!}q}gn87`yW!{-?y3R_-C<>fLDzkNbW{>^3oM#1-$)9rWX1$h z@q?lG1!w%I1}4Qe{MZHzm9G`{087sqi<%uIY}jZd{zT8y;k-D?NAU;wCMH$9%&K@Y zDkjhTrP^KEXO%H60e}fRnF;xF7C7!}k)Inw`s`nl=^XcsxX!8Q&SZ)tjbTi-De?`F zJJq7!Tl_qK1Inf5Tn?5apDs(#BD9$^Nhsl0$bSj0pjomaELbC(3EaVe6H1R@lrKwm z<=G{mx`0$~1Jx*BJP$VoFLZ|LjNtwQUZ#N(Na4x20wAv=@>N7$q4`UH5DAwu;TkEe z(bIt58|VehJ%hP?92f7MXypL5i273lMXg=PJv7;UfB}(>HqKD)(>U-}-59FgwUasc zpN(v%>|@s*g6h_=x*bbV-RDw`41&5-#9@LL#-F{0CE})^6#o#O34ZQv+24VT(py>j z2A2K{63i+hbE$0Z_?nR9{MvD%uq!?!6Ec(g4+fbS$@~IjVsl}`Ox;DTd~b88hz~ls z@5w#?Rd!qx#vPy5Vtfv!%J`4z)UL4%)4@6A%HwGI{?t0%YZ(urmiGdv1;6AayO6YU zdRgPH!SH~{e|hPcc`-Wb`Zwe)9&wxOv>*7H(GjSXW@0+nMN=;(6M1mVP`5sY<*ch1 zsbQNUPa;?iWsnCx%1!BBy7Xd}j)g?E1@|T3ZjN+a!)@lcq0BYT^aQGTN&4nb((x^ohi7zG&{0ee_MjJ`V)=4H1B+?Nfm_KOd6rDY9Q=e-eJrUna{9nW?<8_} z#L&cq3hpqcn{u7si=`8RmUDn&oZ14gmpnXKR1iCS*;|=QpTRbhLB#I?gM51nh=&Fc0izG7;3`jzW73aPk*jti$-D#wqx@;1p+TH{T zLt^+Tp||p5jgHNS2?hLywl5Mp3@?9wD~a>=B3WfF zZjPNM?qk2ecl{Qn1-@If2rGY42iTIcASUVQ7#=B-M5pUfJlMLT8o%YrE?D-K|3sd@ zTJTtVkxXCv5C+$K@=FYY#bmO^CY`;A6)eqf+7js z5W^C|VQc`%iip~avT(Mr2-LC)(LbXH)P1=!dK#LE(`*G(^e+LS7#1=TcF`}T%wUWL zX^1D)!klE#ZlzFXa0)Mdx%>7`Z9iIRvpcgN>-Lw>e9a7V4j^0aYA}Hb{h8+

Di>S;KW73x!l{}ub@ ze$?{L?AElDAD$t!=i`(&g7`_Vo=~0Ow!p{jLHxwde}cVOB6ti-ScRP@W;xZs73c19 zgUmQEX^3w{xPIbRa6~4ph?%tTvPm=}en&TO7n-)Gj`NcVlrefms(b;{)*R<_A*3Qi z)(AV&0Oth?a3Ccz%LAi`sIu4aPNLD1h9+!y>JSk&Ug-0*8;9`~7G(&j-{IM(|@T=Y=Hqy7hE)8I;H!9LeVD5uWPzYzwA<*KK!TXL(8GojY9?>sMbjO3!Q6_lK zjy1ILQ;A<`BBKxTM-4QnE)59c9)P3KL+X0q7D~ZcOd5v$&aAAu;|zL!9UEFe)CG0D z0>1Pv+k8A#rDA!+uA}q8%=|iZ5a?uy)x%E^ArJm{mIM?v%FspdgamoiV*I!$A^1Ep z0k_2pP1ZCQ>FNZei=kLC`m(I7V9^-{x@_?HwSkG-w1B|{;Re7gL{Kt28(tC5i92#)LH{u^Bp_UaqzHl;1iG3=@2iOG<>uq z@WJsTj2~zaOLO3>hXlL#8i>Hbh5%t{n&5u_}7b9TOZI zO65)}EIH}iiIeg?RkfaqTF;!S(z1%mD?KNjbdnlS+oOjXP26<}dSNLbl^7yMfp1Rud8jojgRavV7m1nAn)#WoPO6PbCUhTrU)2rsxp58-wJmr=CnuQ)u{(=GdBNupb zt7k2&&69M0`2zoe(#uNyr3Xr{Ec4(>qNC2&oRu#qpHb&8oj#}BGq-$h6>6MWRpqaS zocyOlQ0Je+Dm@;<@tLQ4h755?4H=^I2GpKT*$${3M8VD~pHt2L@K)4T&naE#@y}vs zRMh%CRWm&^s^-outt_iONwL8dl{2ecJl@pIE%jGaReDONSJnAZvfRk!BsINs#%zC0 z>5Ot!Ox8T^J*n3Ek?WaRQ#!Z&B;`4%M=v$0s>*|k7J5o+uB@92N!EID=aw!&gYr)5 zp-Qy$9d0})4yZkmR!Ci3J_j6@vt#3xd&p~LcVKQ^Wo^ZkmE~og+F3*&n3r2o2Dy0#dB%BtQ}LNFY3jLW7oUC3 zxbfpAjq^>+^PB)ZI5|H*&(nX5CtsD;qBiNgnWYtT%0(Zf6+_EvD(02f3Q(R0EHp2=sAALk_t!ctY9 zLc?ZMR(VDXns?m9^W(TWXOJg>QXGYy+{rbd4APu28zL+$tto@x%RS>9xhjZ92CN5t zRGp{J9jl7Rsw*5Jg!)c^D34T z1(mL>=D>lu;iw#fYe4=87$FS#j!82+CSBPviR7JONp%CM8ki+L=H<4c+P;O9lk1*2 zr}RpP1oU>W8h1hQ_%R&OetB);?ev85P(_DZp+0>@n;LyAgkXUpsm9}MTzl$Xw~u7cH37hq)1oKrPlopV9S1h40!(n<*5w_rwjd0Bax z8do{5bWTN?=Yr}Pm>)rOUd4=Z&jc8uv*$s6B&)ntb)0*~O81>xg&v(zURw*BI-cktD@2wvnndfhv>VB+i%DLE zU+?=fK9Az_0zR+f^A0{=;nU@otnlIZ`Y9H`PcbE;-cPWZN^)Q~ZmG<1X{X zGeM&BOpxl3Ne^dg`P^#A?1Y&$<>gbEkf&_fkW&#&WzAHg@P4@J-$}{b>JB0Tes#XG zO6NfwPWrg23 z6ZW+f8V5a_0d>G6fYrk+IBnWER+s9@2IH0EbQbmd{Ik8@i#oyfU^y@cQNiL)ac0je zHAvO|@*k<#U(UMt5G@)dE+dxkoLUn!}m`pUA38mDe* zTy7nvhv6qr_2+4(<5*Hz-Nx-?YY`Yok^VGw8;g zQP#O4f-xSU?JrNj7t;BbnmQewJCLQMLX0!1PRyjXh#XRy*Ccw{`hf>s5+sa`JrJ)a z4>khB_axuc63;dAeX$Y7kMSL^Cq7RI$5>1VEoI+bZ1u;K{3~3Xc(b%kHw`@yuaIlJ zPCbm{rL|B_w#4Mj5n7B+g{EQ21<~*Eq%u9wtX=}g+RivCDSDNpjsK;eMf0ltHBdb< z3Aq(mE7|={q0tUl{ayi@#aOaQa$L!#6nihpom@OA?+R&-SPzR^O!FLM!XsrZ7EibD zKyszJ4$FsrlL4pa zxz=AZV{UbB?z}2^nFI3-PtI+w+`Dz?-axNOxjE&Pxw$i{DiN2MF{`x3DQ)^1INFZH zrIOrpT(>1(o^yP^7&ieSl8#poc1kYR1Pk(LJQrZihp3MJ2Qy3CdJRG=5Cf1-=>(}G zS)_P;@VpP018YYokv6On9?P)&lSd59A9nHx?b12c75e2^JIdyNovR$vbKvO;bIkP8 zGQ?sQOs$M5Kff$IH5qhYEfm{4zp$T1=UdA!rQ(HO@OF3NenoP|IQIvbA$(XV|^GeIgYPgbI zz(QpewX=m66RhKE8OsqYA^VRJgJ08s3>8jjR#cuYLCFJ@(jI|eSrzGeFw5yR=hVu& zxnst_*x9$RUiR(q#M==`9#mf3iAnYkl~!G?_2dMS7T<@`*RBs+H+Qb9D;jm~+^HCa zbu+|C(vuwLPuGUbn_KFZK-`8wt76J>k}N72JToG_1oi|5rM611ClFJkD0(PAoa(8Z z)f|1LJd^1d8jD60o#VM+vhN~H^qRez>M0dhxD51X)vmj2VdSY!yl~~X+hfL@Tj)FY z{HZz^Ra|)K)Z(*$;hQ?4q)7AQLBlE#A%rH(lbB#!lAh`1S5{Qg_lW!b`G!9>%;pf| z&-iS)12qMMA%@A~7^XE>%%EmGL)nq~_OD_{%+$D-ehj zWtqXD$3j!%QcW5cBhU>U%9S3lTt~dJpNKd8C*p~z_;G$uNgS!CCf=Twcsnxjc2wf+ zFqzY=5UxF;VS$dt%YyvUq%y-4`P0VBS;G8pw!gZjeBO{V=W+a(qN7H8+=Oz(-hNaG z=1D*Ty6%ub35IEBaxt)C00Lv1`MW%DlJX{F|4m{F|LlgCRKd7n#afMSjI@~Na)6Kwom~D`-h8RxV zoa_!F+zcnKlQY7;ImNxf>tsM8xn9)iCcAaAK3uHj!1y}(0Qgg*lgH z*Ouy;FsTymdFYk4Ox@%f0bdXNh)UTHA$bq%HYfMFr9D(x6}(`Hn;Ea-bR84Lbcpb% zM9If^w1GMsju**8jTwR*?3r$Mtyt5EwWP;th$02VzxYY?5n(O!kh~#{lK)$|pU9Tf zgE^SHfIXb0Aw|)lHsM`5##&oL$9-FNkao+kh1O|| zquL2^IP;2*osg;rTP78?l_w(R??jm$S94~q%s(@0G5I+07hyyuw5jl69M4o?W1yCM zvok9Yu+c$rIczo`YXeT) zZo%gze46n244-y<;HVEDamuNujT}`veFg$fN|?YTjm;UATUj?}PM-QUkQII&CzSq% z55MitzfB&~ZU_9axxX9VYk$JWruF|-c;M2k@RDU&;c@uxjK|}wyl;Vfq$Q^fChv8m zJLP|ge4cbss=UvF2}%)`2}Nav4*|?0eF`xDd$D&LhkL3tH~nCRm-!l;Ox4qcv+%kU zC;bq0s0;T|hq>_K>Sz}}N*(LMM=OsD_rp8k9XiLUfi9e*hPrUB8Ugrta9F0gs8a#c zNg9n0uXFLq!H4NQlhA;Vb9q%C2SghWSKZ7V;Vc(ELgl*fQHn<70(uCyRSU69^IZTD(CkuYoz|@DA4E!bFHx1khm}SEJXRaoEhw*6!4&{7k7e^-3aHlV?nxVS7@Ks_V z+6}(P#h>e-L*msI{yfzkIY;CCHR%s@@qcaMUt`Iz9=1haUTFB?F1#3{&`EDl{atv8 zHBPTp;t(Rws{-mYeA_Z)kurQ{f`<{{hc-lDq&YTZ9MWk6JdpWnd^h03>w3dK@%duz z21!+lFMeJHm}7^RR~?}NfseG>b(E496G-|os-MB~0+K$KbdNg8P492%&++OEH~n~Z zwhQN|^IUj<#-RY*E zq#khLe(GTt9;O}z{DP4cb@B^KZu_f{L;Xbf3<~!TeRKj6~eu&{yLcN_La-44pxV`a3_I148!LB5{s5L&mh6=5eR4rTf*MH-IHS_>JdAJKa90_<8;5ZM% zai=dYv^>tkDI)XZP1#3LHorqzXQWbwW2~}gS#m2-nJ)daWIp08=a)fNI_1gBtIiQy zq2Y6_G38aX^iF%(_A|gw1Jdwr_5;fQLgbxm_)krBY-u4<_2mWicze$i+sGWI$9W#_ zdMo6BbJj(s-p=~nv5jTG^`PF%fY0$l*d8yHhBv0$vRa zVEO><1}1NV)8gaq1q*)Nf5J*7y6^;dKJcmwTo1*oCRnz20z3t$>;!eW1ME%~yxkTOS!k4N)y6|OcjSEjv>n->h3*O?wm#b|S z{GtnApz`oV&`rsx|lq|nWUf2Df5@Eq04 zh3Be17JRq`^OYUEylSragAOc@l$vzUyB^8rsWy2R&+XBZfdVYkmV zaPs)7H|cm8e*13?Y|mN8>1xHtc4X3ov|`kC6Yz5YSEu2e6W~>VIllPQ#)LV(b{U!g z)g5q@8VH!ntFCrHw0)7K=Zh^{(cpR8tc27x!LBI<9+bR1a4l)>yi!WQ@Fw-41;=(*l* z`g7v%>o#st$GhoURh|n!tA<$cITk$Dg}18nEO@E~&#>StE%+J>=5JbQ9=54~1qUs7 zg$3Vh!D}t}K^NYx_zN?d=63b01wUuO^m#STi|SrvI|qYr#KQa2NP}4$k2ge3T3CRQ+7|b(I77eq(=V1OIAZ+PcjKrVVT~Fy6S| z{(*t{yzl1*ZUX$Bfp-J$27}iCMs@){#K1cNA7kJ~z~nQ`f97h!cP{wJ15OU$+tVFC ziZ7GZmsh=O*~2Dl-Tj`mo_b%M?&5!7*|%mj-A!*+b1e8*F8ra`tFsIbgAd9IPX@dS z`S_B{>&}AI|Ie)0#b>T}??n`)pNs#UwLWdL)^}~z`tECZwGRESRe=Q;x^SCipWEOm z=*z3xtXR_?HO)=`R#m$2UKMZScha6xG^hdj>@T8)`487zCmjz^KVV>cexzT?s|lY~ z`0#4N=RSNM0Y3Zg703-=kdNaT5LPLe_T=)aloZZ`yu7MQ3Vq;bOkJF#nI7gpb2Z`n zP<;Mr=r_Cc9ji?`BT|fN%Y5|-aNYwx{b9nkKfDL&Cy=%WZ;m)9KL6Tlx6M}i4!~>| z>AY#B#{jQFI>@OX3>NpD?W5E+Fc!mYD7}t`{#n>ZMK`yWI zN!)-pUNu(u)9^TJjXzG-?>hZFYfXBdWyj7_ml6RN*DP0PP~iCbVw}3cO&@2)Z6>HY z-1G}9nHP)9>r7iVVB9%!rv1Ogq<1FsO`v%fa47RBJ@HHc;8lPrb6#H8S`nUX>AxK> zz0{J=WtM!VBL1&0ubOJ<_B7CP(x-u{15Z_#xp1lFyOxWrHvN~jOh?&gO_;a)#(uPIK5iis2-RGS0d}+C zo-TZd)u(-|wb)_Synnd6TjGUfKi@5Tq`KIJkHQLDUtUnW%7s1FI_o%zA#615;&@Ds zD~3%uel_8<2%i^$&%O&oCU5-&IRF)H&*hg~oL}N?A7sS|2V1_@5H-@pABysrxUU5w1NcL%BnN{{zZWPYBz3(i={M2ROXO0&Wlp&$wD} zxdqo*a1d|~@JVyEl}-{~GyDD-=}U2cyvuW;tHazsa&`b1gCZ?nOdp~_z=f8q#z{4!*#r zp1qv*UhAgcX6eK2GM1gPzjbkXSh2Vs;R3~Nv4U@LZ!DcW~9_@VsPfu=o{ zha-Iz(&O_>Z<3bFi<;uPnr-RoVG>(D%g}rpG$|{#moN)ER~1-xrobJw zUTD=&jRKr=toRRe^hKW}Zi~*7dB*AcRR#@;#7alJ$B8UD%ZrMV0uZuHIJp|aH|2G$>Nc{d5@q!nu#rJl3OzUtx>seiiki>$cQ1?puty;%0odCR@v5AeMXecFI;u3t7881Eix z-(q0e?T-x%G_}Wqc^~FKb2Z^Rf=|yw^xRhno$&zXxcCBm4hP%-nAfEi%zOG;yqvbD zWIB5Lf45hpOFI^~OXFNGkLlBhfQxpoLW6?ucj0lW-h~Shanu*_f9Jv@)$J}kO8VOA z-`m`_RH*x1oC?{0blUr%i!)MjUEq}6>ZZ?CueoLCTJgh5wcAav7Wr2hnZJXw9rv?p z4K~|bXW5@RYs}8G{De9=N8#}Koy*TiYoB5iR*G?+56W`-uFhKP)mdYFfy^lm%>gcc zp%vpD#~+7~i+wc3g~z$`2-B;q^aX$&xn1ni{I$e*14iFETc^|a2pPFujN`1eZEJ%X{CQ^!C$)YDmmA~Th{fxo4(eK)-b-E=Ei~VSMq97 z!M|S}Vx`CTYaUR15jZa|P6ovHW!9-tZu&Yk)`cICeHjOzXKgh6pt{(FA68cZc69sj z-p*JkR1004aS|tYbhW>W^N0$#IFG2`TXfEKaSGLaF3vdhFkpvHk&ClIJz|x;+)Xc3 zPg`ZTS!HLsIDb*wU7WwDS1mf%x;TY$21mDjoch$FbG?i6SM?dvopEQc$DMv@0s+eE zA*25{qin}<$4H94ylSI0?lxNXYLjKJHYV7szqtH#Zm*tkaW-1^YNItyH(IfdCuLpl z^zVCa*+SWWC#RejIGZ{B5_56>E^8=9CY{+L?$2&9GHFHGjxu?M)yU<=4BX9yH(R!7 zyJd^ETDIsp%N9LvwQ;-HqSsL`{ljUPyT`*-<=lPpq42{2uL7Ko4=*oH%Q;tad^?Ww zp5<4+XZh9dSvKl@i=X$cJ?;-I-rluh&hM)Khq?Cvud3+!zGwD6f{M~XM35jwI;2rm zKo3Z$Ql*EG1c;=OgeD-NiC{sofFKyajvW=1Vr+nl6h&?eU=Zwr1$%whnmzO1D?q%T z@A}^FxxUfE`DLB8r_Y+QXV1RE1{_tNQ%?W){RaI=XSz+x97+pc9#voS7uxB~kO$*u z{*Cty)}(J&jw_+_jjGKGB=s& z{=Cz1{i?+uJHDuD@%N4!R4w*s@!RM(tXf>faiglmml1Ql`W^8}B`Xk?MY-y(j7pb9 z4bpM>Rt-86bU25dpzELQo@VNS;oOcxHLg-A^^90`__;$g|z*F=(@KpVn zU}r(2)C2L@k{#Wz*INQ4o~7Ru{66?PeN^xd;6m;0kkD92hxe=tb+|{OP}el2%3;mX zbp(fdA?E5Pkk8ev!1Hthc)so^IJ~dDK!^SEV%-xui*qWSaiEy9Lw6tVg zR6Qx$^;4Sjh+R}|(5(X`en#^>)5j^SLi(0t469<+6?xpd)yC(dny#!ji8yQ)aoDQQ zwHHU#t0KLxiS%w4c4oV71pVzM?fhqyMp3OG-=X6Lv&~`0I-zZOL)ex#bT}q|Qx6W* zNq?6P$LG6sxbC_~XOWJqhb~X}o(NxF%>P(dLf@0DV|@R zk`Fwx30#yy3fubtF*h6}_7)BjjLGi@ygb2#73QarD8;nu0;^5HTS z_G`3rmULXW9iWpV=9QCF*k|RdF$gPPO#l}tK2n_>-wO-(UriVD$LXej33RSi_dx$z z<*YvS`|4T9XDOZ!2KuvAxVLJy*jqJQg?pi{BFjYjl+&5LV%wwd+mZ=LgE~-{r zV*l?I^Qn8qo|${aKAC$(|57AuY?0WTT_pBnuMzvJ*U;*h3wMorLh$q8b?Pp#C&9eG+WEN!`aM)X=p-qg7r3}>ht4Bv z7<3*{$%4lcJ3kLYpZYuKP=814{QMd^>uIJHWL%W)0EKIP>xHdeuWlAPO9Z=_0bhF; z$z2?3)CtS(LFgyZ2s(^IJ?K2Do)Xu_Lf(T$yDn}?YNxoi6LcO|Z$sw^wGaHH+Ao;b z1KH77U7a9y@th2QE>q=U52I$!t;?&W(0M{Ngw7M{V!^Gz&nbR3E(q%>)fT)_wF5t| zIubh@%g-1lP&+N8i`ag4wajw|*Y;l{Wa3RiRBN7B=D4QZ`|E z-LPJjWfRsy=QUvyUMpo2UVu*7HsMw1ye@3Q>!obMhtMh8CLD#%HenOC37fD@Nt^ID z^vkvhXI|*?VY{#i+l5WouB1)42>NB)gci`*A#B19VH0);o3KOJgdHlh2|LU^0xyhQR+GG$RkH9Is1Dn=l4CZDozhUK6;A)^&d%E@XXjUagSp5VOvh ztE(3G7xGbpClEK}3(0@EmuU{ki%1-fIcu_(alAh*ocq@nW6s)QzF)`eIdOU0iu~t` zd7Klj&m@^SKBtlMwmoz%EOno{FXTPMJ<}vJuXooDg-(pw`*gESBagk8+cb_Mokv8v z-n2R#FLq_`XKQBeZ3Q~b#QvG)W{iEv`o9!$h&BEN`thn9fy;+Sq0>XG2_%VqO{eBh z;7<>+*DFcfo9H3-wI+#vs)yJgm?YK&dWieTN%TZl;J93tf|EpF);% z0>`a`h+7BIemjciVmgSu0UgwSdo}L{J4)>8aN0#KpXbuuofyYhG>#EAc8o}Giddsd z6ZdD+#GEu;w88P>e&__VCb^WthaxPH&ptC?cYka-Ed(8eU66=AB)S0MVzK{Zu~{b!;;>kS_r(^g7@^+` ze4|)DT%>wHzDTSYE;8r71b!}2L!h%njT9WtVVBY!%OGLAJ`>JKZ>KwTPJV}YPV)}6 z8uGi$o|6}-d<#jH=S{CzF6&;y2DDw)7VX*b@z;C1HNoF8m_8Ztnjm|btdqiy^njZas;a_`C~ zqI^FQ<@>3yEuWG_4_s7zCdMu^1)zHTYx;k}FoI=q+BQitnN zE%jy4Z>f1rDF~~T?gnnHuL3vGncy!~4)}MK2d=3ngB$2+;5a>%n!^qu?0z6u60c8r(u{ z0Jl`nf?KJL;MVGSaJ+f}oS-%nziHFEh4@38UgjWO1YAdb3a+QV0>`Lt!1dK}a6@$h z+(`WdZmfO*H&uUvo2kFSG}>$G@~4$L1Ke7b2gj*%!11agm`+**w^KF1?bUhUPO1+0 z5_KWCvuXhDq8fp(P|d(m)dGB_iUs#j@!(#nJ-D~(2=1dU0bixMg8Qp0zynk_@L<&w zJVf;d4^#cY!_`3W2sIcyS`7y$tC8R_YBV@irGnE`Iyha82TxF$;0%=wzDDJOv(#j8 zwwemgQPaVB>N;?~Dg+m(x!|d4A$Xcv1fH&L1kY5rf@i6v;Oo>K;5q7U@LaVLJWs6x zU$54J7pnWfH>d}|H>&mEo77|Ao7EHGTh%k*+thR5rRsU`ooWmCF7*<4nR*$#LTv-D zR6D@;s5im)s@>oswHLfby$iliy$`-$eF%O)9RNS94uc<2N5JdVr{KrcSKueqH{d7L zaWLJ}0Y9UD0za#M0Y9()1izsE2ERy$D!MklMV$fOs>*|3QfGl*Q5C_js>|o3Er>b!2eMR;P+Kq@JFf>_<*_; zd{A`;m#8TCu<8!}MD+lFs``LGQ~ki7tN!4x)DZC3YAE;{H5~k{N(O(YQo!GQ>-X-3FYd zbK$1bC(% z1)imo!G$^vJV%cM&(#ya3v?FvdYuDas3(CJ>nY$H^)&EJ`daW3JsW(ho&&y3&ja6~ zZvfw^7lZH8H-Ycgw}Dsa+rcaKo#54a1^8Zl54cFL2CviW!1w9`WX0a{VjNp{t>)a{|tUd{|bIj{{`N! z{{jC;>lV%qe5lKTKhkG{59qVOAL~ls5?uv+SXTod)wRH%>e}GXbRF=Qx<2?T-2nWx zZUjEAn}NU8Ex_ODR^Ssl9{i(D1plPlfq&JPfPd4Mfq&Osz<=p(;J@{i;D2-y*z@{= zeeWu8#2WxE?_CW((;Egp%Nqec#~TAa*BcA2=%sU?fY;cS>A6(zN9(<8^1GtfQGq|z01bne~8@QQw7r42%9NfZN0dDQx z3vT1B0mpjlzzN<%;6(2ca9i(Da0l-xa7S+gxRduR_%iQBaA$8bxQn+He1-QaIO@F) z?&fU=_waUtle}Hvp57jCAMZVIU++KQe%=S*0p20-K(7Qm$om9*wf8xAsP`p!nD;e! zr1u?ol=lO8wD%)8#rq9B*82mT>iq>C=Xot%+aK>mz!SW3;E7%ZaHe-IILoU9&h@H; zCwVo&d0s8>WUnrGidPRj)vFJ_)@ux&;WYuz^qPTZd#%BRUMzTy*A_hA>jYllT?)S5 zyBxg8yAr(EO9J2M^#$MJ4FoUo27_<)hJ$bSlEHU)Dd0Q3ap2|NMDX2S7I=l12VUh( z1+Vs|gYWgO1F!Ywf!BEp!1sBJ!4G;%zz=!1fgkqn0zc}l1V84j0zdAp1wZ9I2!7go z7`(xI9Q>TO0ld+B7W};TB6ySc5_q%sGI)!(4P5NK1%BCk8~lp*4)}HNKj3ZN2jK1A zA@G~t5%62yr{JC5SK!^=x8ObA_u#$W&)|LDAK>@Azrg!Fua#>rA9&@#A9`njKk_Pq z4|&zVAA2>xC0=dt5w9Njs8=8Ssn;0%h1VSXrPmVtl@|v-=CuPK_d0;T^)3Vd;9UVe z;dKN5==B8u;`Ian>h%Zz<_!V=>5TyY<&6UW?TrO%e>~XpGr+!|4KC;BgUkDq!Dsr{ zf-Cs5!RPpMz~}ncgDd+tf~)v9gRA;W!8QD4;F|v3;Pd>|;M)E=@CE+;;5z;z;ClWO z;28fYaDD$da6^9+xRJjF+}M8w+|=I=ZsxxMZtm{_xANZwxAxxyxA8v&$NL|H6a2&A zME^5zd;e>22mctjqyGc=QvVn5W&UsA&i>!v%YDDKtN&N{XMm&r+2AYvO5h%T6>ySY z6WrUs0Nlr~3-0S*1n%!&3?AS&1rPLFfrt3<;H&*a@KC=ac!b{>Jksw99_4ojkMVnf zQ~W;QvHk#Xx_>ozoIeaa-X9IV#!m%L^wYta{x#qnKL?!aPXbT!r+^Fm8Q{tOEbtV6 zE_k}X5PYq_2t32T1$>=!R2QTs;126WU2H)&& z1mEJn0AAv61uykq1>f$!4!*;G6THmd4PNf=1>f!O2jAm=1YYGI1h4i#0k82t2e0+N z1h4atgCFoufFJaK0zc&c4qos71Af%kZCw3-%r6Ii(ysu1%0CzUv|knctbZQ(Isbg{ zM*l+ai+%&}CchDQv)>H-lHVF!?8ky%_S=GA^E-iG_b&x+^DhU#;a>@U(@z4w<@W{e z@&|%<`-8!I{Ndnt{bcYyKLz}rKMwr9KN0+ap9TKV&jTOyr-Bdp)4?D6*MUFr=Yfy- z3&2PH#o*8VCEzdo+rVG?cY(k0SAviEtH8(owczjl2f;u14}(wmkAr{qH-LZfp9TNw zzX<-re+m4j|1$V5e;Zgu-U92$+h8y94)~17f57D;AArk84uQ{(906B|d5g z9=KtoKDbe&F}O*jIk;)0CAe864%{-*4%{lz0o*!r88|L-1voy^4V)0^32qnZ2W}tf z5AF~d0=^_N0(@y?6!@~pSa8?Kc<|+s4Dc0^Y;gBTKKRPWWN?qjwcuWn+2G!hIp98# z>%mt=ZUpy_+zcKNSqdH;Sq2^wxf^_SWHoqrWF2@!|i^ zkxk(A$QJOp$SdHC$ae5GkvG5-BfG%ak$1s4k@vv4kq^Q7k&nRzk;CB0kB42~2 zM~;E7jr;(f75N2xUF0|L?8x8Xxe-6k)&F^sGr;pBXM-0;DuHi^Q~@uF)CAuYxd41~ zq%QcD$VK4WA{T>~Mw)_ekF)~c6^REgizI@VM>>L6MmmG{6*w<@Yj)lz~4l4ysQ7mBIUr}MJj;5kDLqsAyO6mQ{+7G z&yn-NzeFws{~l=o{v*-|{AZ*Y@o}?<$5X9|q);MeP2%c zFA^6Khx@VJu2A-8u-L;nSnS~(VxBkIX8jp{T7RaIuYsfUg+v^#HDT?y*QU|6^85-J zpC4@8f+v$62s%Mc7%V$F_ z-)qoJ?Bi`F&M0ecp2u{4-hpdx7yEnfFz0DZw{ciUI(HHmQCOVkYb=Lpyqlzfi>ehO z|5u1J+*XQb=U0in!K=-4NsrjHe2w@di2cBcY6yAn;_N55d{`~^vaSxE?;<^ZKK%y7 z=U(v)&b?w^YZ0DkkE&JT-3P18o@&0F<*&e>b?PnfeP-{gi}OOnr-pf^Be=FEouC%R z`8Md>Pj4&2S)wiy9PXuGBA&syRXiVhn|UUbujc*m;ki=X z%=?mD9)69m9yI&#pQrpUq-)ALcc>4=p_p{IPJTz%eq{COPt=F7J+5c5aZx(uB-~f| zsHhK*iTd!EIJ4z(@y>-ODGkn_r^NGF8^nI*XT+ZHXT{#{XT|x+&xz-YH=1{{xI7=1 z=<3o8HHCt5`I8Cx262}11~nV;c~R7{&7zKN7IkckS_Azp>S6F!QQx-GZuh`N>1mD4 z;FnC@b9L+$#HWUM_f}2w9EXeZPUsYyb97xA4?*5v)V(FN!`g+rM7$eriK-0wt*R#Y zHu2uBrREtizM9YKX+kwIg{BlIxvHNQdi~)8ThH@nyyIS;IiCgg%^a>`Le}pZH=5i`!iR#q;0o zusivV%jGTcEWlghS%975%)njdoDlMw^mm)HKwZAQf;>qO&xaMf^EBii3cGzkb+vUMN-g(tgOCN$b*k9AVWH z=PbpT=k#5Ceud7*rtZ0X(Cu9rjS|oAj}p)9-y@!@S|y&-Uv19s4dOG}JhSh@x)^>Q zrjzi3LW-)x>IK2!IUb*gvwT0H)8m}}C*nE%BZ{AoaOoWb|Ldu5pdX`tB6e}O20BO8 z&(Qf){YmW7J{>xv)ES-&ca*9CzDLyruTu5EtHpEuqZOYS<-%PBKi?Pc=KI1t^c8|843l@KRL; z+)Y&_cJW+@uzpt6NbYPek8>_>5ZZJ0wK(wF{98i*)*}7hq{FuNCiue^BydqW#hX-& zi>g1(*f_)L-vxbbYZcofUp!;ti?bPhO-J}yf6fqRMV=wfT`Z>uK&PA@4=%576kG&8 zOTQ*~r{H~p4}dFZh5BDXJbP6^htGyr&@G{Jt~i_YTpd2MTv6W)or?N?a3%eQ;KSf5 zn%k7C8yh;g`qoUGx7JKGMjdFTT7a9YSa6=|Ah4hJFp53$7`i zIjW`SLS9QR1=rTkfiKYE`Du0Z0m$p>Zw3DbuBYqTN<;6U*Kyz&Jw)(CaDBZ*@O|J0 zdWYcm!Hx8v#4bM{z0~Dro~juM3Y*UORdtA6{%nFyW8DZkjdfFSGu=mU8o0T>LGW^L zOTAg}>)_Vl)w$-2|MdI}y)n5VTnyUtMpR$74$@bGu${c@Od9 zmU*n@+CHB<$DtJmL7IO{=-)2n|0|^5ka+)PF5l!cVx9C^Mw{DmC+$uth^kA>nY8>< zlzMS`9M?E{UyP0kkmOx-Q)1UQRqE{gPY`3UMDr}LE0>F*(?$0e{tO0p)$U1jI!{2H zz1&sLB^_4>#=)N%=Ka6U|4hg)(|5to%e0%#)7hl@0m!5JX>fPFAKXKK1WwXl3H}b; zQ&*?=eFLFo6@>%sl>Zowae`|I$z%K_q9OWNZNJ1|%` z7u*RvMDzQ0U0(I*>hd8$JR_NC&T@3|90Q#pda>~57Qy#`uhzwa-vbZTp^X}HU!9Xv`;1CQ1>61%iax;#wFO6Vl2hlyQU7C~pU-TYTr2zY}2S#Sl|w+!7{aA)vDohmpJoT+aGXY1wQ9Q`nOlHLr?)31W__3PjQ zy-V<3!TSV%NbK6$mZ&So8R~PAyS#lB@;rSE*XHT(z*F>Zg8u?~IGm=?|2(;EIC7vGfRWF3l*h?lDUAxue9pDn^O(SVmJ^mFjHcvy$SIOk8Ng zIW>(b_7_g$SP{3e=6zE9Bg=bQt*A;hYnYkVPad~Sx6E~$)r#rk(pW;wWc(1ref%EsZ+?v;yQ z7IApjUP~&*@%vbv<8yeNKg{91gDmk5#~g8vcdj{a?ywDO7KQb_2+MCAmIa3q#c3(b z1tP4;=01qK@3V~jIkoKm{k~5X3XALHnv<^me|oQ{vGwPPll%$dKbOCZ<8z;=TeCc0 zpfB!zp$u^#6U0J#KCgLKBQ&{J#aukjGZ||VIo35q*Rm_;G#ZM6w2A8Qbn}vM7 z-~{3rtJ76*U%?rIrwhK1*!llt^N_a?J3sddK1j@QQ_ZRtU)UnlZ`U%Aw;}l;V&~^l z;)bMNkMiVR;v!%;Rz-Iy0$d)C4_xy;-H-D9s!rE6I)s_t>>#P^D}TqNGRv`*a9 zTqkV%I&s#}I%PaGey*caMFYq8-QFg2=lNXT!-adB`WQM(&3QF0KYK#w5qeXTQipAv z`$7JMy^`bql!)^Nk+&N}-aae(g=fV(8lE#}L;Y_3UqJr<`y5#JP5FiGJiQaW>T3;ykF`qAYfces;I$XLnOv z0~e*!@p^!Fhm~mGY{Sjx=TRrK&<)J)7 zsYImxh{(eurXS%jqVzTeYG%gq8A@%4Tzq7|X;n;o66ud_Hap?`(^46#00&a5r)PjvRI z4)4E|*WtO8T3@b%i=%YHT{po!!4>pC@HsjiTt(*#E(BNA;o3q~{V3$sHJ?e&E=s3A zKM$^9&U$il)n2_^9jKw+gHBC#h}hYj!O*F$!?lI#`V;8a(#Hi?z+AqT4$ly-rQ1SY zTXzuL1$==xujvAvD&#Z3b@Yvb*MjTn^@2BmFVtJWG1|S0f!^gU)<_%Zub|UV|1G$& z?IfbAk!~Tl54f=&2EJHl2%ao>Cb+h~Q}A-ZtH3Sv1H|2Io!>`xW`t$7GxFUN6RiB? z^VO$V`IDqS&+x!}V&pmG2btn`~M0wXVK7cH{OPLf_R5 z*5Nwf;>Po07dJVFRR^d`)RDr0Y)ZgIt-)zLM*qDBw~zXTw>C^Xi0+C)Y#z)A-}^s)YV_X=mp5@%=;kTpwEZbvD!81?PMo zAj)*0DAPfjj)*mm-p8%mfv?t=6T5YulkYuK?4hsBQ0p4C?dNSv>GgQtqM{psR8jC1q|=*-cXf|m$hE_kir`@swKgW%ir zKJYS8_wLr=nT;#;5z=w?MCMO9du<7QbGn?4tXD41tiy3@V)JlRzp~qMd(tT)-OBV~ zM|;LZKJOO!yjyeIXGi;0bhys5SCsW$9m5LbqH3>h5FqhBO;ar6m}3QZ0l%lY+}TCd z`}(Q?i9gV(;1BgA!HWeyCOB;42lU&JAJFfCKh_@#4%_m_x~@$Z!{#?|JFGX2@W$v{F z`o~0B9}{-qn7+jL$o?GDox$JgE5JX9d+sMRk5QfNIys;Dk`nrG{ad&rb?+(Z z`c0&(n&;XYt!a1_$WM066$2!$?zxqZDD6JE2=bai%Vy7pYO)>U;dnj^BtArlpY=w#UXE-w$O+?+EbNp8U7GW&2rd zHT zboP2er;9fn+|?Tk?&jrydw4epzFqK2aFSO9?&&=Z?&a~`(X#T*^>NZZySSCmbuL`y zP4s!!=IyWn|E+w3x6`@xlVsAT%PD_eQDIrXYUYM+E;9i-1HDSDOfE{hm%@AH1HG<+ z*vON>gH2s^VLb|ecBp~SdBdES?!wvtovTg$yM9X6Z5M|U@`Jjd` zuh>P^Xi?9TMO_->)d*BbC&jBLIJ7fky|DhIdPAU-?u`;0)|v6%ILI@+Mc|2^8#~c@ zySEndN!~Vap7#dv>DsteF}92QDK;2vlNSthW$I4j<@8P!X`Cu-(KIj2lj(dMzq-Ks z^8oyrCGu*v@MpHLV{{IQjS#I>dSPD85%y}H=lUaBCl_hI!FvwZF7{p*d<=YxSH)V{ zsJg`q&yK#;8v*&PUKV(%cbnif;5)q61%EF1Y@14Y-?3K}e5Y4SFu%i#9lh7jb2TWc z=xh_n@AmEluk>CJ{4scy=ljl|RbD0Vy|&ep)u`;@&@@ax`O!3)9Ly_>;1 zyt|3ry=k^Z?%p(ywVVx?wwhD!##cOMbK@&H|8n)PgmhhfV_r>RwYF_AI^4D8owoLH z-PxEz_^iQx zFCOh^zty+xfyP5B}0STX1dg*WP8|Z@m8C zV_vS{aEOm@}`1Y3T_Sl+Y8sL|M5COuKX^m)V(FumvbS3tj(p9HS$_ZJ+Fb!+<* zAiuzOYeZ31$Ilh=e8DpW-z4}p!FPZ!^m%Q89qpm@L;F+Te;^Q(yn(+S+|YlLxN2Nb z=l`U-%|8{>$EB-;nDy(DPDA?MM&(6c2=!TsTnT+#e3-{mSgEAXdERo& z>F!Iq5e%oRtElH!_@Nz$`rKaF(VkVmc7TS%dfwf?67ueTKfwdQJ^aDoo_?y}3~+D% zW^f;WCAhDthxs<`oIlrD<~&?vS+2dd)_?mN(&%MZuZgG3sK_}2v9lmA2fJi(K}L;Y#s;r{jD5vD!5 z^m5u=dS$<0)lGU=(H|QqjnaOmkt{Q%a`8(f=Xb_2bDO!uUbu_ooIfo8hPcqmFN_a4 zD<)+5e0qt{`C72Mcfk3)iYn=R`ey&>i}GO@e;N0`wco5MC79Fr48@@XaS<`ctru}2 zeLMGmV{g?k@{{v_OiI<_nZo}U62q{z5y#j-j|%w-Aur!H)VW-6rr`O+oUR`!U0lAL z&&=#~6d^Fz7i$O&%>Ix-r-4`lY#{bgG!Xkh8i{u;H5K~`nyCTo2|3;q9`;i$%(_+} zZ>7?W2J5s|If4toZNz)l;?<3iC#YM9@1!&q()Y=>k=07*vy?uoY(88+wsP@P#6=|I z^4)8%B~&+1CtS!tu3Y<&s|)7eqS(pDT>4#v;TWK!**{R9uI2nMqHx<27ZG!~>}Xvp z0K=U{{&yDp5V{zDuCV^Rc#=P(tep zU;ay2>{%4MDw%r;KYIy3dz<|#MdW9Ujlnb4|Fcs|=gDg}&YYIFEpuAf@$=5kMd``& zaNIRWh5gZR@jkWTD(sI&h`li*aW9znf`;R$RPj7}ny9Pk;`!NhQ4hzfM{I<6Z|7rz zHwb=CFs~W1WBqLb5>HTXf-}^9!H2+E=DY&_li#Hn(ZLVQ<-ysivEUYhTMG`~;gv1U zF33^tX&ZhPqYv~4iDy~|sdUH-)Fkj^#qahyK;>0P(K@*e9<_4rf4{NJ;}h3rxu5#Q z%H^D>YLG62Ly-X;YDgYN8wIoBeA;#^1~ z&cm*jIe%PUl{JQWpRVa+^JI8><>K-7+Q4^?ryI>PFBNHDD(w92qRrke-Xnhp#sRdp zrn*{Bd2gY!D9n8!zl&;6;CRnrIL2Nk+R-x853yF1?p8ho{pF$^-K}`;z>e1F#B=B? z#Cz^ms3U<2>8v#S1_S+->O08q5$}S(N1bo$5}z?rM{wA7R;zGt(rVQYI``5Y@4!>u z8#xkOWX>xH!YvZdJ*`pU`|Q@JaLr_`dXBEW$(C1*@s*2%Yh8`u^gbxc=s{5~4~e~A z51W4BAzRibw>$Q;gg$HopC+9c`ewIZ@Lz&!bPU>5YsAM{E{@OhB0kRxd;5ZTm-LIG z?Q9Zz6gR8J6t3HUl@9+CR9h1x_CJw6O1bgLEa+?&^=dPE0N!sIw!tmtU6bq;%V*QK zdtPQU{F!0)KREwif&4{vJ6}kS-_dzjfW$AUb%LJ&7mIfaziQ5z;h&;(GQv;Ld5xY< z4qTL4dp*>X?czPoZ-{d?-V*0*yrsrKf2VjK@lNrs)m`c?=IeQ%jSxH*{E-TuZU0E+Lw-Po>v#vuv+W$Cs5+>g zARSj9e#)p^9LN*YHe8#i_7S`CI`tCFImU61%u9fS-qH_U8OKtcHU>Ro8((Q`dt( zSGNjY2L3|b4gTEh%L?N5xq1%ruheG2+rZzbufX4lXYqbeD&pdHLY*Nvd=~FV6$kl` zsss2Z)k$!8ui+;(5b__@D8XaEzo>D7v%tTqJn(O-Q1E=g3k9zR|Dhfd{2cgC^`YSK zUdCT4<_wqizf?T<7j?DZ;oyH%8d&RGu&1X9z7BkbUMo0!2C$r7FXZkyHQrCV1M&*u z8NhS(2as3Phrw0!58$feIlgN856G+QNI93r>bkt(vjtZsc5R_|mTOZpR9%w0`aA&g zs^Zzes=6`!si|9o&(}%d+Ildt>yP%(xTOj8DTNd*?wb-U^LWOM6?r_<#maf?*WWUy zB;7KP6>}`}diYGsyvDxJGVi5aZh1Med&Y1dG5b}_|B!p!>g*8my1`GTujKV5r?XS& zxO^_5-#M??mC$FnpNc z+EKMa`E-&Ok(}p@%Y=RoEzT5@jNNg;e+sU6X{b|AaDrgIp4M#n3w7fz)Peu`xptiP z`Q*oXT-!)pWPD}+FBZ?OG%?Rvbfq|Odbg7PNa7-5PUASsJO|9T%wzalE%SW#UgARf zb}p(~Ii#>!i?K=@asE=A7}Lgy=WF6jJlF%;mm=0K+NnMyi=!!eA$@Zl?q-?mFo{sF zm`muxbIAdu!|AG&T{>MkBrhU4r|SmG;oO7-*3sDoBK}=O{JV&GN>?$5?JDLe-DyS} zxG0@yFoAFxd0j}~WsMIr>9=*H!*QNLao%M0=}+Uzp5ylxbM4+@U8s+kclQx_+gIdm zKQY(tht)nle{v+ky-JM(_g9O-1H?FO0FC+sN9(KNT)}~2PBBQlJA1I=xe_~m9`;~> z#6wK^1@a;4E6A@F=K&5?wK0wwD#mrg#5sY(R5I=xTa91-*ClA)bxF}nN=fLEs7|3%}GjOiz3!X$P_td^^8+m7v>o=#^TEcZ{se`X1Pt~35rqMHWXHa|PbpWxcL;@Y|5+PUW1i|N`JtI?mh z(DE%^LS|7KeZC|ASCX9jFJ{?)x%GdR|9`pu&;C;DgT3G%spUghE! zh>Iw6?vG^ON`F$^^7+fS(>?F}R+qq^0p!mQ#Dzwa)|0!2{G?#c^ZBI1`mD-*kaN7w zY=;;m?=grH>cS)y-&SM5bh1Q_A-P_XXem~uq|=bT-=?_rA}%84 zvKV2R`_K%_VIMk#q=Ad7p(5Xgi+md?)+k1azG<{-iEC3tK8!W}>~spNkbW;K&NLiR z^GS!}e0DxP^Jw+yPxX}GZNx<+IiuaSoLYG;Xc^4Vf-e6|{6d}00B;y%u7 zoIntzoXdsI98(8eyh^iM0COg)OUv~LYo8dS?i1^f@2Ob2b^?`qA$iU7 z@dC?i>*iVJIk>CmC(nJBS{-@s#@!1jAwRi{PN#D{$=Q|Ahv(hwO6bGS4zD9Wxs9x# z_{;i9BFfLh{AC>N4-|FsQ!}@6`TRK2K1!@nj}mi}d&INkt1yF%Qt7sZ|DzS#OqZYU zz|Swu9bgyMamZ(w{?Y0G2>GYNW_~K_`8UF59;cCG;P{zzwui1yJ1%0=ZiSzkP@r=*eI=ruaj(Gm7qOJx1E9#5D zm37$mtLOnF|G?IhvieZA13%jMEI@o}*qY7pIZwprd=a18x+cP{t?Pj6=q`e<1lQ9; z1djyQ*P{hb5Ij+Emf)%2i}Wpm?*KQ@&x7mfHwC{9Zmi!G{2{oBJ|Orr!CwmgT5xy| zqNzT|<{a&v(^bLE#IyO0b+`|$vF-((mgaeUSGNyMb#-Y5okAD3g`<$S)XBKEwRZPv zX&pwKP1;6>bK5q03iM<33UIs*=eF^Bqmb_+cJY}tEsW2vBzJ9X9^?u7Z(Q42YcI$k zj!y*KPFEIu9=N@(1MZ;1Gfq3`c93_{;eC)!=FC72fzP50&-J}TPlf(vdZplSKXYfj z0rJi|eAb|=J_vbNeFS{D{z>p3;Ha+WyEI01BXBp}PVlARD|L$CY{B7uiX^=j@+AF) z;FrMd^bx_I3l5)I=&gT;ytmd77tg-h2lvypz*p%D!2@(R!M(t}b&lZhKEhx<4f3IS zp5U9o!}U|(5qb-;vrF9fwYog$2e~ghHySYaedk-|^=G$s{ckqejV(8mKBu^tKF+q3 z5VIX{I>kcAwRhIxw%N#r`k?TB@_ZpT_3UIV|>@;>4u%X^3iTjn+G6w7iA+|_yZ zlgl*A>hKyniA?-md9jYmf96*rlux7|L(FbDaYOpPa)xWC&LVIdNfS1FoUq~JM4vK2 z^eGc`ed8-%dyVb}&eVMb4+CfGv4TUpovW8Xo~Iud{0z82zYm@w&QqPHzlVI9J`=X( zS{<(S&D7yD6fu!M1HJ1( zhx5eu^gQV77j5SQ9gb~2&?}(xfp+s;y8o`%K>m?_4E&Bb$M{RV0rIc(i-L;Wtu!Arm+ygR|8y>MKV>}`X5j2AxtIL7-5@>DNu zk7-`m2FH76q1|P8;rQnouNukSeOvC=TwCKlu`1Q`LdrjGQ*|wKdu(UfX02&c%&x7; z`JgMW68fFX%k2Z?woHGTYh9j{(BI$Lv@pA|SsL+uvnv;Oqi}hRnmK`Fm(Yh@BqnI5 zEbmHOr~=nl@JPW~g5`eoStKt~!J5o+q4VF~r^eyZWz=Tfsu^?H?^D}I`Y+ZG!wRk) z#9zk!xAR)v`KY_epZ`Cck2-|Ph3#ac!k~=iTjs<>)!F=IT$C(kIl)!I=ZZC@N-7TW zO4ub$&t8fBhn3Cx(ls{RTncvg|>uD};**-5Pc_DqXdrUC@P4i0rGA>GYh{L$m z67R69rDB9mbHRND^Zj3TQFXpq^W0>^l5^fFfr^>4v;Lc;!})fU;(v&^i1_6AlZgDR z!(YZlX?I;1&$=R>bwxbun!Vh70qckHtSi=XFZ>_Jll@7f&(Jw^4~XK)ZID^E!9Pjf zm~^T?TDiD)_b|_g5_1|^e@&%Oo=x&1l5=_&S?2OuZJGPi=PdI&!v~f*C(6@=zKFhK z=u@4zkiOZ)3BLS-P|m+aP3)MMFBbQ&n~41YO<+^#88o_+5IE*3;O1hDvALQ9c?3HO2I~kbztYeO!8(J+0Is(&usYN6LeOajl*{oht(q7^_DpwUa%aF z2~*e$<7gfv+HblUL-G&&TtEx@evPgzq;F|A=uhKH=-*iS>>?e`hx+p>7k_N^=}#3& z3iH3A;QvWH6G^{_{HV?zk&CLy0T`ZX$~utGf<@>1JE0Aqsp{J+_cL|HFTU2yI7;y%LlrVj8=e8%!X=qwWZMiz;^`ip3%L*Syc${eoO-9mQ{oO~(X z6dI)!|FA7Dqtl?B&T_H;WVyH(uw1-z@NRKm;BIvvu3bU9xt%{N#C@n`;$4Kx)icmp zqn-n=74KZTUpzDNfY{UWpxBfAh}hqxWN@`w`F3 z$(>IBS#fXT1#xfUMb!X0TgCl_msB_}F2;#~d|pil=)WS~zxE29*yqA}l~30*E=nf| z^Yg0gqLd46tjO}kkndFC_<5%a*A?Fu`)78G{WH7O!?<>jcvspURV?H?zYqZhu{Y@cc@}v3={FC|x{G0j>{JT2G zclv+OQ|uv!`+xovd&2)xouH$2xQ^=S!H`G9J6X=qOCdi?-vK^buLINjxxkh5^MW@C z-XgeI@OE$&{T6tJ+6lf+?FCoY?+|w(+unteT8=(RmRV(xU^m9#al#mq7t-%M2h6n0 zW0L8XdCaibGLJEqS(a;tbh&!K%0D6<{=1kyXEKm0p%2ITbUH5nti$nVS3;i;h@T=q z8xsG1J)L<@Ttv)%?zYVR?{OP0p>edw)wVRYAq}0aK5bH>Z;ylK7 zy0yK4_6upAH@Wcxm*X_+XIW#3wxmCgbT~i9ofOYI%ZTTx;{<1^Id6N4c=i?!iI zm&n6j`eMYtmu@CF95eJ5X9@Px?V;0O4--5RJU}Od2bwkEwKgBPKJ!n-_ILg&q0cx5 za%uG0N%^pz^m&fMEax~INzP?HhTaRX$NI_F9Vg~IWPLs_rjUi!@toJWDDCD6>)W|v zjC8IT7o98iR8$n>pNeAcRtfhMcwRgUVO3IhgDabN9J}WVxjyhu#rF5}dj;|QljN6J z=AQ;z=JuXqnfJqFTjsWZt!0^?@*c-V8%7CzzeJyfq|f`!cQN-IBsg90WWj%nxYg+$ z#yN;v=`tklGwjpQH+x-ihXDmG3TN)WYk50H{?%Mvp=DU4VTM^e=4@W z^H&Ldn$jnZbU1I{rZjdXE+Xdq>}mNNVs=sZ&fGwSac(H$+(^W^p@?%sv3H`Om>)I7 zteWT4&4QrF|0ZTn-G7Te&t(SN`2S7uzedD=@+t9eXMA^O5>{PQxtIk}db@TwXZgv@ zDY!n&r{CH_r;FLMQE0=ul;mZF5%WQh5P4mq7Kg!`-0{v zwkv_oJYk>b(W*u$zd~?#!ITBY@!myV_p3(fZAjl$7gsK>Ph4nzRZ6zsM4KmJxh%0- zoZeeS-MdYs_coE5S4WI<$umkVSFvd_=U7^`?!;cn-GloI>%OZ{yEb$~fOi z@*9fs4}9@H2%_o}v3_z?h4&LbHDwd%ewK7hj~n_pL{FUOunUEnStZIcKZb%0DoutSN=0frwM!s`48f~ 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 literal 0 HcmV?d00001 diff --git a/labcodes/lab3/bin/sign b/labcodes/lab3/bin/sign new file mode 100755 index 0000000000000000000000000000000000000000..c67eea1f474b660c6ac8f3cd113f659071f6bd7b GIT binary patch literal 23304 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 zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjm>oJ0000000P=rrgaii; z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=0qoF$000000FeJ{BP2L*;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4q%541ONa40D$~o8zI4g0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KZ~!}WAOHXW0089w z+6V~_95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fdkl~0|5X4001EW*G5Qi;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jjM^9S8sb0002_zcxaG0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNq!T=s*Af z0002U|Fsbk95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddDyLk9u?0000${;!RY;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jedu9Xb#I00000@_%iF1P2ZrIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxiJ z?9hP#00000kpF8VBsg&3z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)V22I_00000fc#$@A;EzI z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede06TOb000000ObGL2nh}xIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!1K6Ph0RR9103iR@Mo4hrz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)9Ka482mk;8008;F zHbQ~}2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede-~e{$KmY&$007AUwGk2=IB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|&4}2Lb>9002P#uZ@u4z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95{d-IuHN= z0002;e{F;W2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J^Xw(18E|0001x|7#;8IB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yRZhYkb)0001h{9hX(!GQw@4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`?Q zJ9Hob00000%I z004meUmGF8fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB)YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd R0RsjM7%*VKfB^&dfdF^_00961 literal 0 HcmV?d00001 diff --git a/labcodes/lab3/bin/ucore.img b/labcodes/lab3/bin/ucore.img new file mode 100644 index 0000000000000000000000000000000000000000..13e60d9dd34d0c106435da110f22eb216655e69c GIT binary patch literal 5120000 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 z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBoLf7_vB0RR91fI@ z88BeLfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 jV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz`#EcT)d> 8); } } - +/** + * 启用指定的中断源 + * 此函数通过更新中断掩码寄存器来启用特定的中断源 + * + * @param irq 要启用的中断源的编号 + */ void pic_enable(unsigned int irq) { + // 更新中断掩码,清除对应IRQ的掩码位以启用中断 pic_setmask(irq_mask & ~(1 << irq)); } /* pic_init - initialize the 8259A interrupt controllers */ +// 初始化可编程中断控制器(PIC) +// 此函数配置 PIC 以准备处理系统中的中断 void pic_init(void) { + // 标记 PIC 初始化完成 did_init = 1; // mask all interrupts + // 屏蔽所有中断 + // 初始时,屏蔽所有中断以防止在设置过程中发生意外中断 outb(IO_PIC1 + 1, 0xFF); outb(IO_PIC2 + 1, 0xFF); // Set up master (8259A-1) + // 配置主 PIC(8259A-1) + // 配置主 PIC 芯片 // ICW1: 0001g0hi // g: 0 = edge triggering, 1 = level triggering // h: 0 = cascaded PICs, 1 = master only // i: 0 = no ICW4, 1 = ICW4 required + // ICW1: 0001g0hi + // g: 0 = 边沿触发,1 = 电平触发 + // h: 0 = 级联 PIC,1 = 仅主 PIC + // i: 0 = 不需要 ICW4,1 = 需要 ICW4 outb(IO_PIC1, 0x11); + // ICW2: 中断向量偏移 // ICW2: Vector offset outb(IO_PIC1 + 1, IRQ_OFFSET); // ICW3: (master PIC) bit mask of IR lines connected to slaves // (slave PIC) 3-bit # of slave's connection to master + // ICW3: (主 PIC)IR 线连接到从 PIC 的位掩码 + // (从 PIC)从 PIC 连接到主 PIC 的 3 位编号 outb(IO_PIC1 + 1, 1 << IRQ_SLAVE); // ICW4: 000nbmap @@ -59,26 +88,41 @@ pic_init(void) { // can be hardwired). // a: 1 = Automatic EOI mode // p: 0 = MCS-80/85 mode, 1 = intel x86 mode + // ICW4: 000nbmap + // n: 1 = 特殊全嵌套模式 + // b: 1 = 缓冲模式 + // m: 0 = 从 PIC,1 = 主 PIC + // (当 b 为 0 时忽略,因为主/从角色可以硬连线) + // a: 1 = 自动 EOI 模式 + // p: 0 = MCS-80/85 模式,1 = Intel x86 模式 outb(IO_PIC1 + 1, 0x3); // Set up slave (8259A-2) + // 配置从 PIC(8259A-2) outb(IO_PIC2, 0x11); // ICW1 outb(IO_PIC2 + 1, IRQ_OFFSET + 8); // ICW2 outb(IO_PIC2 + 1, IRQ_SLAVE); // ICW3 // NB Automatic EOI mode doesn't tend to work on the slave. // Linux source code says it's "to be investigated". + // 注意:自动 EOI 模式通常在从 PIC 上不起作用 + // Linux 源代码中提到这是“待调查”的问题 outb(IO_PIC2 + 1, 0x3); // ICW4 // OCW3: 0ef01prs // ef: 0x = NOP, 10 = clear specific mask, 11 = set specific mask // p: 0 = no polling, 1 = polling mode // rs: 0x = NOP, 10 = read IRR, 11 = read ISR - outb(IO_PIC1, 0x68); // clear specific mask - outb(IO_PIC1, 0x0a); // read IRR by default + // OCW3: 0ef01prs + // ef: 0x = 无操作,10 = 清除特定掩码,11 = 设置特定掩码 + // p: 0 = 无轮询,1 = 轮询模式 + // rs: 0x = 无操作,10 = 读取 IRR,11 = 读取 ISR + outb(IO_PIC1, 0x68); // clear specific mask// 清除特定掩码 + outb(IO_PIC1, 0x0a); // read IRR by default// 默认读取 IRR outb(IO_PIC2, 0x68); // OCW3 outb(IO_PIC2, 0x0a); // OCW3 - + + // 如果有自定义的中断掩码,则设置中断掩码 if (irq_mask != 0xFFFF) { pic_setmask(irq_mask); } diff --git a/labcodes/lab3/kern/fs/swapfs.c b/labcodes/lab3/kern/fs/swapfs.c index d9f6090a..11469749 100644 --- a/labcodes/lab3/kern/fs/swapfs.c +++ b/labcodes/lab3/kern/fs/swapfs.c @@ -15,6 +15,10 @@ swapfs_init(void) { max_swap_offset = ide_device_size(SWAP_DEV_NO) / (PGSIZE / SECTSIZE); } +//entry:表示要读取的交换条目。page:指向要填充的内存页的指针。 +//函数返回 ide_read_secs 的结果,表示读取操作是否成功 +//计算交换条目的偏移量 swap_offset(entry)。 +//使用 ide_read_secs 函数从交换设备 SWAP_DEV_NO 中读取指定数量的扇区(PAGE_NSECT)到内存页 page2kva(page) 中。 int swapfs_read(swap_entry_t entry, struct Page *page) { return ide_read_secs(SWAP_DEV_NO, swap_offset(entry) * PAGE_NSECT, page2kva(page), PAGE_NSECT); diff --git a/labcodes/lab3/kern/mm/default_pmm.c b/labcodes/lab3/kern/mm/default_pmm.c index c0649e49..30947df5 100644 --- a/labcodes/lab3/kern/mm/default_pmm.c +++ b/labcodes/lab3/kern/mm/default_pmm.c @@ -163,7 +163,7 @@ default_init_memmap(struct Page *base, size_t n) { base->property = n; SetPageProperty(base);// 设置当前页的有效标志 nr_free += n;// 更新空闲页计数 - list_add(&free_list, &(base->page_link));// 将该块添加到空闲列表中 + list_add_before(&free_list, &(base->page_link));// 将该块添加到空闲列表中 } //用于分配指定数量的连续物理页。该函数实现了首次适应内存分配算法。 @@ -184,12 +184,14 @@ default_alloc_pages(size_t n) { } } if (page != NULL) {// 如果找到合适的块 - list_del(&(page->page_link));// 从空闲列表中删除该块 + //list_del(&(page->page_link));// 从空闲列表中删除该块 if (page->property > n) { struct Page *p = page + n;// 指向剩余的页 p->property = page->property - n;// 更新剩余块的页数 - list_add(&free_list, &(p->page_link));// 将剩余块添加回空闲列表 + SetPageProperty(p); + list_add_after(&(page->page_link), &(p->page_link));// 将剩余块添加回空闲列表 } + list_del(&(page->page_link)); nr_free -= n;// 减少空闲页的计数 ClearPageProperty(page);// 清除已分配页的属性 } @@ -228,7 +230,19 @@ default_free_pages(struct Page *base, size_t n) { } } nr_free += n;// 更新空闲页的计数 - list_add(&free_list, &(base->page_link));// 将释放的页块添加到空闲列表中 + le = list_next(&free_list); + while (le != &free_list) + { + p = le2page(le, page_link); + if (base + base->property <= p) + { + assert(base + base->property != p); + break; + } + le = list_next(le); + } + + list_add_before(le, &(base->page_link));// 将释放的页块添加到空闲列表中 } //用于返回当前系统中可用的空闲页的数量。 diff --git a/labcodes/lab3/kern/mm/swap.c b/labcodes/lab3/kern/mm/swap.c index 0ce392fd..6f38077c 100644 --- a/labcodes/lab3/kern/mm/swap.c +++ b/labcodes/lab3/kern/mm/swap.c @@ -116,16 +116,19 @@ swap_out(struct mm_struct *mm, int n, int in_tick) return i; } +//实现一个页交换功能。 int swap_in(struct mm_struct *mm, uintptr_t addr, struct Page **ptr_result) { + //分配一个新的页面result struct Page *result = alloc_page(); assert(result!=NULL); - + //获取虚拟地址 addr 对应的页表项指针 ptep pte_t *ptep = get_pte(mm->pgdir, addr, 0); // cprintf("SWAP: load ptep %x swap entry %d to vaddr 0x%08x, page %x, No %d\n", ptep, (*ptep)>>8, addr, result, (result-pages)); int r; + //从交换文件中读取数据到新分配的页面 result 中 if ((r = swapfs_read((*ptep), result)) != 0) { assert(r!=0); diff --git a/labcodes/lab3/kern/mm/vmm.c b/labcodes/lab3/kern/mm/vmm.c index bbef092d..901c81c1 100644 --- a/labcodes/lab3/kern/mm/vmm.c +++ b/labcodes/lab3/kern/mm/vmm.c @@ -428,35 +428,51 @@ volatile unsigned int pgfault_num=0; * -- The U/S flag (bit 2) indicates whether the processor was executing at user mode (1) * or supervisor mode (0) at the time of the exception. */ +/** + * 处理给定内存管理上下文的页面错误。 + * + * @param mm 指向内存管理结构的指针。 + * @param error_code 页面错误发生时硬件提供的错误代码。 + * @param addr 引发页面错误的线性地址。 + * + * @return 成功返回0,失败返回负错误码。 + */ int do_pgfault(struct mm_struct *mm, uint32_t error_code, uintptr_t addr) { - int ret = -E_INVAL; + int ret = -E_INVAL;// 初始化返回值为无效错误 //try to find a vma which include addr + // 尝试找到包含 addr 的 vma struct vma_struct *vma = find_vma(mm, addr); - pgfault_num++; + pgfault_num++;// 增加页面错误计数 + // 检查 addr 是否在 mm 的 vma 范围内 //If the addr is in the range of a mm's vma? if (vma == NULL || vma->vm_start > addr) { cprintf("not valid addr %x, and can not find it in vma\n", addr); - goto failed; + goto failed;// 跳转到错误处理部分 } //check the error_code + // 检查错误代码 switch (error_code & 3) { default: + /* 默认错误代码标志:3 (W/R=1, P=1): 写操作,存在 */ /* error code flag : default is 3 ( W/R=1, P=1): write, present */ case 2: /* error code flag : (W/R=1, P=0): write, not present */ + /* 错误代码标志:(W/R=1, P=0): 写操作,不存在 */ if (!(vma->vm_flags & VM_WRITE)) { cprintf("do_pgfault failed: error code flag = write AND not present, but the addr's vma cannot write\n"); - goto failed; + goto failed;// 跳转到错误处理部分 } break; case 1: /* error code flag : (W/R=0, P=1): read, present */ + /* 错误代码标志:(W/R=0, P=1): 读操作,存在 */ cprintf("do_pgfault failed: error code flag = read AND present\n"); - goto failed; + goto failed;// 跳转到错误处理部分 case 0: /* error code flag : (W/R=0, P=0): read, not present */ + /* 错误代码标志:(W/R=0, P=0): 读操作,不存在 */ if (!(vma->vm_flags & (VM_READ | VM_EXEC))) { cprintf("do_pgfault failed: error code flag = read AND not present, but the addr's vma cannot read or exec\n"); - goto failed; + goto failed;// 跳转到错误处理部分 } } /* IF (write an existed addr ) OR @@ -465,13 +481,18 @@ do_pgfault(struct mm_struct *mm, uint32_t error_code, uintptr_t addr) { * THEN * continue process */ - uint32_t perm = PTE_U; + /* 如果 (写入已存在的地址) 或 + * (写入不存在的地址且地址可写) 或 + * (读取不存在的地址且地址可读) + * 则继续处理 + */ + uint32_t perm = PTE_U;// 初始化权限标志为用户可访问 if (vma->vm_flags & VM_WRITE) { - perm |= PTE_W; + perm |= PTE_W;// 如果 vma 可写,则设置写权限 } - addr = ROUNDDOWN(addr, PGSIZE); + addr = ROUNDDOWN(addr, PGSIZE);// 将地址对齐到页边界 - ret = -E_NO_MEM; + ret = -E_NO_MEM;// 初始化返回值为内存不足错误 pte_t *ptep=NULL; /*LAB3 EXERCISE 1: YOUR CODE @@ -491,12 +512,31 @@ do_pgfault(struct mm_struct *mm, uint32_t error_code, uintptr_t addr) { * mm->pgdir : the PDT of these vma * */ + /* LAB3 练习 1: 你的代码 + * 可能需要帮助的注释,以下注释可以帮助你完成代码 + * + * 一些有用的宏和定义,你可以在下面的实现中使用它们。 + * 宏或函数: + * get_pte : 获取一个页表项并返回该页表项的内核虚拟地址 + * 如果包含该页表项的页表不存在,则分配一个页表 (注意第三个参数 '1') + * pgdir_alloc_page : 调用 alloc_page 和 page_insert 函数分配一页大小的内存并设置 + * 地址映射 pa<--->la 与页目录表 pgdir + * 定义: + * VM_WRITE : 如果 vma->vm_flags & VM_WRITE == 1/0,则 vma 是可写/不可写的 + * PTE_W 0x002 // 页表/目录项标志位:可写 + * PTE_U 0x004 // 页表/目录项标志位:用户可访问 + * 变量: + * mm->pgdir : 这些 vma 的页目录表 + * + */ #if 0 /*LAB3 EXERCISE 1: YOUR CODE*/ + /* LAB3 练习 1: 你的代码*/ ptep = ??? //(1) try to find a pte, if pte's PT(Page Table) isn't existed, then create a PT. + // (1) 尝试找到一个页表项,如果该页表项的页表不存在,则创建一个页表。 if (*ptep == 0) { //(2) if the phy addr isn't exist, then alloc a page & map the phy addr with logical addr - + // (2) 如果物理地址不存在,则分配一页内存并映射物理地址与逻辑地址 } else { /*LAB3 EXERCISE 2: YOUR CODE @@ -509,22 +549,71 @@ do_pgfault(struct mm_struct *mm, uint32_t error_code, uintptr_t addr) { * find the addr of disk page, read the content of disk page into this memroy page * page_insert : build the map of phy addr of an Page with the linear addr la * swap_map_swappable : set the page swappable + */ + /* LAB3 练习 2: 你的代码 + * 现在我们认为这个页表项是一个交换项,我们应该从磁盘加载数据到一个具有物理地址的页面, + * 并映射物理地址与逻辑地址,触发交换管理器记录该页面的访问情况。 + * + * 一些有用的宏和定义,你可以在下面的实现中使用它们。 + * 宏或函数: + * swap_in(mm, addr, &page) : 分配一个内存页面,然后根据 addr 的页表项中的交换项, + * 找到磁盘页面的地址,将磁盘页面的内容读入该内存页面 + * page_insert : 根据 mm 和 addr 设置物理地址与逻辑地址的映射 + * swap_map_swappable : 设置页面可交换 */ if(swap_init_ok) { struct Page *page=NULL; //(1)According to the mm AND addr, try to load the content of right disk page + // (1) 根据 mm 和 addr,尝试从正确的磁盘页面加载内容到 page 管理的内存中 // into the memory which page managed. + // (2) 根据 mm、addr 和 page,设置物理地址与逻辑地址的映射 //(2) According to the mm, addr AND page, setup the map of phy addr <---> logical addr //(3) make the page swappable. + // (3) 使页面可交换 } else { cprintf("no swap_init_ok but ptep is %x, failed\n",*ptep); - goto failed; + goto failed;// 跳转到错误处理部分 } } + #endif - ret = 0; + // try to find a pte, if pte's PT(Page Table) isn't existed, then create a PT. + // (notice the 3th parameter '1') + // 尝试找到一个页表项 pte,如果包含该 pte 的页表不存在,则创建一个页表。 + // 注意第三个参数 '1' 表示如果需要,可以创建新的页表。 + if ((ptep = get_pte(mm->pgdir, addr, 1)) == NULL) { + cprintf("get_pte in do_pgfault failed\n");// 输出错误信息 + goto failed;// 跳转到错误处理部分 + } + // 如果页表项 pte 的物理地址不存在,则分配一页内存并映射物理地址与逻辑地址 + if (*ptep == 0) { // if the phy addr isn't exist, then alloc a page & map the phy addr with logical addr + if (pgdir_alloc_page(mm->pgdir, addr, perm) == NULL) { + cprintf("pgdir_alloc_page in do_pgfault failed\n");// 输出错误信息 + goto failed;// 跳转到错误处理部分 + } + } + else { // if this pte is a swap entry, then load data from disk to a page with phy addr + // and call page_insert to map the phy addr with logical addr + // 如果页表项 pte 是一个交换项,则从磁盘加载数据到 + //一个具有物理地址的页面,并映射物理地址与逻辑地址 + if(swap_init_ok) {// 检查交换初始化是否成功 + struct Page *page=NULL;// 声明一个页面指针 + if ((ret = swap_in(mm, addr, &page)) != 0) { + cprintf("swap_in in do_pgfault failed\n"); + goto failed; + } + page_insert(mm->pgdir, page, addr, perm);// 设置物理地址与逻辑地址的映射 + swap_map_swappable(mm, addr, page, 1);// 设置页面可交换 + page->pra_vaddr = addr;// 记录页面的虚拟地址 + } + else { + cprintf("no swap_init_ok but ptep is %x, failed\n",*ptep); + goto failed;// 跳转到错误处理部分 + } + } + ret = 0;// 设置返回值为成功 failed: - return ret; + return ret;// 返回结果 } diff --git a/labcodes/lab3/kern/trap/trap.c b/labcodes/lab3/kern/trap/trap.c index 2e6bcf05..ce2599e6 100644 --- a/labcodes/lab3/kern/trap/trap.c +++ b/labcodes/lab3/kern/trap/trap.c @@ -161,7 +161,13 @@ print_regs(struct pushregs *regs) { cprintf(" ecx 0x%08x\n", regs->reg_ecx); cprintf(" eax 0x%08x\n", regs->reg_eax); } - +/** + * 打印关于页面故障的详细信息。 + * + * 此函数用于输出页面故障的详细信息,包括故障地址、访问类型(读/写)、访问模式(用户/内核)以及故障类型(未找到页面/保护故障)。 + * + * @param tf 指向 trapframe 结构的指针,包含故障发生时的寄存器状态和错误代码。 + */ static inline void print_pgfault(struct trapframe *tf) { /* error_code: @@ -169,19 +175,39 @@ print_pgfault(struct trapframe *tf) { * bit 1 == 0 means read, 1 means write * bit 2 == 0 means kernel, 1 means user * */ + /* error_code: + * bit 0 == 0 表示未找到页面,1 表示保护故障 + * bit 1 == 0 表示读操作,1 表示写操作 + * bit 2 == 0 表示内核模式,1 表示用户模式 + * */ cprintf("page fault at 0x%08x: %c/%c [%s].\n", rcr2(), (tf->tf_err & 4) ? 'U' : 'K', (tf->tf_err & 2) ? 'W' : 'R', (tf->tf_err & 1) ? "protection fault" : "no page found"); } +/** + * 页面故障处理函数 + * + * 此函数负责处理页面故障异常,它首先打印出页面故障的信息, + * 然后根据是否有有效的内存管理结构来决定是否进行页面故障处理, + * 如果没有有效的内存管理结构,则引发系统崩溃 + * + * @param tf 指向陷阱帧的指针,包含故障发生时的CPU状态信息 + * @return 返回页面故障处理的结果,或者在无法处理时引发系统崩溃 + */ static int pgfault_handler(struct trapframe *tf) { + // 声明一个外部变量,用于检查内存管理结构 extern struct mm_struct *check_mm_struct; + // 打印页面故障信息 print_pgfault(tf); + // 检查是否存在有效的内存管理结构 if (check_mm_struct != NULL) { + // 如果存在,调用页面故障处理函数 return do_pgfault(check_mm_struct, tf->tf_err, rcr2()); } + // 如果没有有效的内存管理结构,引发系统崩溃 panic("unhandled page fault.\n"); } @@ -190,6 +216,7 @@ extern struct mm_struct *check_mm_struct; struct trapframe switchk2u, *switchu2k; //定义了一个名为 trap_dispatch 的静态函数,根据发生的陷阱类型进行相应的处理。 +// 参数 tf 是指向陷阱帧的指针,包含了关于陷阱发生时的CPU状态信息。 static void trap_dispatch(struct trapframe *tf) { char c; @@ -198,6 +225,7 @@ trap_dispatch(struct trapframe *tf) { //通过 switch 语句根据 tf->tf_trapno 的值来分发不同的陷阱处理逻辑。 switch (tf->tf_trapno) { case T_PGFLT: //page fault + // 处理页故障中断 if ((ret = pgfault_handler(tf)) != 0) { print_trapframe(tf); panic("handle pgfault failed. %e\n", ret); diff --git a/labcodes/lab3/kern/trap/trapentry.S b/labcodes/lab3/kern/trap/trapentry.S index 55e29b70..1fa87512 100644 --- a/labcodes/lab3/kern/trap/trapentry.S +++ b/labcodes/lab3/kern/trap/trapentry.S @@ -1,11 +1,13 @@ #include # vectors.S sends all traps here. +# 定义了一个全局标签 __alltraps,这是处理所有异常的入口点。 .text .globl __alltraps __alltraps: # push registers to build a trap frame # therefore make the stack look like a struct trapframe + # 通过 push 指令,将数据段寄存器和所有通用寄存器(使用 pushal)的值压入栈中,以保存当前状态。 pushl %ds pushl %es pushl %fs @@ -13,32 +15,39 @@ __alltraps: pushal # load GD_KDATA into %ds and %es to set up data segments for kernel + # 将常量 GD_KDATA 加载到 %eax 中,然后将其值复制到 %ds 和 %es 中,设置内核的数据段。 movl $GD_KDATA, %eax movw %ax, %ds movw %ax, %es # push %esp to pass a pointer to the trapframe as an argument to trap() + # 将 %esp 压栈,以将指向 trapframe 的指针作为参数传递给 trap() pushl %esp # call trap(tf), where tf=%esp + # 调用 trap(tf),其中 tf=%esp call trap - # pop the pushed stack pointer + # pop the pushed stack pointer弹出之前压入的栈指针 popl %esp # return falls through to trapret... + # 返回后继续执行到 trapret... .globl __trapret __trapret: # restore registers from stack + # 定义了返回的入口点 __trapret。 popal # restore %ds, %es, %fs and %gs + # 这里会恢复之前保存的寄存器 popl %gs popl %fs popl %es popl %ds # get rid of the trap number and error code + # 通过 iret 指令返回中断处理 addl $0x8, %esp iret diff --git a/labcodes/lab3/obj/boot/bootasm.d b/labcodes/lab3/obj/boot/bootasm.d new file mode 100644 index 00000000..08146746 --- /dev/null +++ b/labcodes/lab3/obj/boot/bootasm.d @@ -0,0 +1 @@ +obj/boot/bootasm.o obj/boot/bootasm.d: boot/bootasm.S boot/asm.h diff --git a/labcodes/lab3/obj/boot/bootasm.o b/labcodes/lab3/obj/boot/bootasm.o new file mode 100644 index 0000000000000000000000000000000000000000..c1351642f78541fa53085ff53d15cc9aa3508572 GIT binary patch literal 2268 zcma)-Piz!r7{;G%D?x2&H5D7FS`BD1IJ?DFK`U2fddB*)nMF%30w#z;b5ZC9t>&33yBAVjqCf&yx+(A=iryj{GR9i z{?0e=H}lTe`0iLN22*0_#7zgRt&3`sA%@V6+i_!UxY_uw(QGXLTsqw`cjN5kt0h%G zT|H7czYYs*T^auVo34e*(%`D-FZ&qzDm$9VUA)U*&o(;~*ETGk@2j*#R~G-k+?Af# z#(wk+HYc{c0)lc9Nt9Qt# zQE{;ok6HbcI1_&w&ssf#QLCRp+Ui|+-s%+gT0M$=RzHWF)oC2G`UOl{y%&eA9*1Xj z24$=FW6J86P__CX-mv-*e5)rhXZ6c?%j#D!Z}nlkZFN4%R`D*5;C&k};UnsJP@Rnz zi<9n~x%7U=|CcY+YC)Vg&#yY>iFJ^F;O{33a?+xR$sOQ&i+N#kgZ_T;CKu_qisvDU zhQ8i%M3{VI%O}N~9HLK&H+eyy5pQyUp6|lEKYG3o^M2@G6K`^lE9O3%cfk7N;=_Fs z(!U$h+&b-kGSVycADgPs%Po6g;>CPs!X3+}b7OnjtV^3dkjQ7p@)P@z%Zz5>mjiEm z!WlMVJ7(*(LOEY8S8Mfo_<>gs@?i+Y+Dw4T^vtwBrIDkhpj7sY>=G3H@=^G+(=(80 z)DL`#RZl{%%Ch?8&`*=H`Fy6Bd^|o7cF1An`HM+C_nDv0LFG2(4yCKiDmgCOGoQ&o zxuE<+c~W^wc~*H&c|mzaxuX14`Ma`9=HNWN$^qq&GO0`{$CZbaCFQL0xbj2g3FYU? zGs-39x5{PZ56V^LZ%Te(xz287zjCuOp&U`d@#m|7R}cpEh*L(@%da~@`B(sls^kS8 zoPzI1R`Mh4fL^ TMrg)kpZ0mbkVWnJk9L0np<(pZ literal 0 HcmV?d00001 diff --git a/labcodes/lab3/obj/boot/bootmain.d b/labcodes/lab3/obj/boot/bootmain.d new file mode 100644 index 00000000..c0d98e63 --- /dev/null +++ b/labcodes/lab3/obj/boot/bootmain.d @@ -0,0 +1,2 @@ +obj/boot/bootmain.o obj/boot/bootmain.d: boot/bootmain.c libs/defs.h \ + libs/x86.h libs/elf.h diff --git a/labcodes/lab3/obj/boot/bootmain.o b/labcodes/lab3/obj/boot/bootmain.o new file mode 100644 index 0000000000000000000000000000000000000000..c72e25d0a0da0d07b6a528c4edddda1156d4be4d GIT binary patch literal 3984 zcmd^CU2GIp6h7M@ElL3qO(STER_W@pbY^F_yIl&c-Ih&?q@fh3qRV!7w!6~($<8bm zqENz*E~JXa2Omt3_-0~4;)7UUAcP-%A{t+aF@yjq0igm459oT%oild_dC+%Ha_4;a zyWhQY@3}v7XJ_x~K9|b{wz;4dsyTqojaG>!Tr13hMi?qz+Az6%Uitg=yDn5veEiBR z_u0YnsmX5F?rRO@cdmVV2ibD(Ot^H-c(Z)&TFbHJU8OryH<3N!x;}La{r=vW>j!#g zrfyUH=>~y+7kHk)e+b;vGI#d*>qnZ)=dR0U%6Gn*z|Ks~pyJ-mY^8T**D0t0xccG7 zS6_Q0_WFq-<-78wDVPVa{wUyJ2B-TgmCCM8!aH%erIm*lA)NcQ--B-Q6XK6wu6O+s zx@9yS=xNw}qWM7o#RG%4pT}x2JqMpxFCK0}l^`l-r(l1jQa+oyaTMOKR8lvt{zXlY zjl#`3fZ2$W)FreX~HlzbEjuV8+ioVUzjI zlJ^7QJA+MiBBF0K5P@Od zuNIF@2qV5;;th^{F$|A7`05@RhQ}no$+0gI@T}yMuteg7Si_W!;0a-!sTQuTTOC4D zp8`C!ghfDyE{RjnBk>j(a$s6BXK?I$h{ITtMc@^PqyG{4F7!0s%ZwjFOm<8>t;czE z2IrIL=Tkc)`MjBpXL8q&3;Zr$}@>0&ojOO%YGx9>CxnV3bVk{dE2E6G9M)5x^qKE}KV16+V0c#!tG!LpD zCqM=+uh-%s-m@PL0>=%h9ztd%T?3SXHC66mP#j!9qTX`baxtl zRgY!kqnShp5IfjLD9qr&gTik?sa>zdmNI#pJ9 z>ES99ZKzZ?;P?CdVUMB)Jqn4l@kBb4v-KWD(=2|gUNkcK9QR5I*!{|x#cehjQmxJw z(zq^}R8`F)4JYXjSY&D}K5E#?V9+AD`mmIen(%Qs}!%!&ZN9`$6aB~_ywIG9PPf;Ppdl9>V z9L65!tq|K9=g|d37z(k1O@u@U3b7O(5yo~_(KLv9Sv^}Ntze_n5iP|Eb|DrY!!6C# zIoP;HaXl&lUdI>}z~~pvX1R3j<*MKz;n?Mcbca|Oc=o(V;lv|DuW|sZdU`sVTZcyQ z1S&NvidXZtEmcY)tL#u!Z=2?38jr^Xd|tY?uLalJ4X%Z=>+0UabJK%7-2urC(W84# z!`_;g8|%B@tzEmXZg+jn-V@!Yx=(kX#0pqUTDlLCR-C~?A8D*#y{~pR3I1Vx#0$0# zeycc(=_XHiQ8H?;2J_TUyY2b(fpDDTd~i#O>XF`s-&-07`9)ZTyvBYb`vQ9!GnIeF z{wVvi?5Ek&^_X-`?AzE!*>7e)&i)|#W9%=ozsG(7e$=SFG#h3`wH=L}`F0itqj3C`P z8ZiBvt_?NLCZd=*k1@0Rfl#a=nt%Fd=)y$Sj0@`wdb$^ph7!FmfXRL*LTJT?=%2_o z`&}!MAWZKkdkPz(ci2W{l%niyzR$jhF=4kycWA;iwPaD$r7b9)b{95c&N+^090%R! us9ECeaX8yT8jhfV)(*<$c&Q%MagLV+Pa|iW-9Ne~I(2tZm$F6ZZQb9wudHwY literal 0 HcmV?d00001 diff --git a/labcodes/lab3/obj/bootblock.asm b/labcodes/lab3/obj/bootblock.asm new file mode 100644 index 00000000..5cb635ae --- /dev/null +++ b/labcodes/lab3/obj/bootblock.asm @@ -0,0 +1,354 @@ + +obj/bootblock.o: file format elf32-i386 + + +Disassembly of section .startup: + +00007c00 : +# start address should be 0:7c00, in real mode, the beginning address of the running bootloader +# 起始地址应该是 0:7c00,在实模式下,这是运行的引导加载程序的起始地址。 +.globl start # 表示将 start 标签声明为全局可见的入口点。 +start: # 定义 start 标签 +.code16 # Assemble for 16-bit mode 指示编译器将后续代码编译为 16 位模式 + cli # Disable interrupts 禁用中断 + 7c00: fa cli + cld # String operations increment 清除方向标志(DF),使字符串操作在内存中从低地址到高地址进行增量操作。 + 7c01: fc cld + + # Set up the important data segment registers (DS, ES, SS). + xorw %ax, %ax # Segment number zero 将寄存器 AX 清零,准备将其作为段寄存器的值。 + 7c02: 31 c0 xor %eax,%eax + movw %ax, %ds # -> Data Segment 将 AX(值为 0)存入数据段寄存器 DS,初始化数据段为 0。 + 7c04: 8e d8 mov %eax,%ds + movw %ax, %es # -> Extra Segment 将 AX(仍然是 0)存入附加段寄存器 ES,初始化附加段为 0。 + 7c06: 8e c0 mov %eax,%es + movw %ax, %ss # -> Stack Segment 将 AX(仍然是 0)存入栈段寄存器 SS,初始化栈段为 0。 + 7c08: 8e d0 mov %eax,%ss + +00007c0a : + # Enable A20: + # For backwards compatibility with the earliest PCs, physical + # address line 20 is tied low, so that addresses higher than + # 1MB wrap around to zero by default. This code undoes this. +seta20.1: + inb $0x64, %al # Wait for not busy(8042 input buffer empty). 设置标签 seta20.1,从 I/O 端口 0x64 读取数据到寄存器 AL,等待8042控制器输入缓冲区为空。 + 7c0a: e4 64 in $0x64,%al + testb $0x2, %al + 7c0c: a8 02 test $0x2,%al + jnz seta20.1 # 测试 AL 中的第 2 位,如果不为零,则跳回 seta20.1,表示8042仍在忙。 + 7c0e: 75 fa jne 7c0a + + movb $0xd1, %al # 0xd1 -> port 0x64 将值 0xd1 存入 AL,这个值将被写入端口 0x64。 + 7c10: b0 d1 mov $0xd1,%al + outb %al, $0x64 # 0xd1 means: write data to 8042's P2 port 将 AL 的值(即 0xd1)写入端口 0x64 + 7c12: e6 64 out %al,$0x64 + +00007c14 : + +seta20.2: + inb $0x64, %al # Wait for not busy(8042 input buffer empty). 设置标签 seta20.2,同样从端口 0x64 读取数据到 AL,等待8042输入缓冲区为空。 + 7c14: e4 64 in $0x64,%al + testb $0x2, %al + 7c16: a8 02 test $0x2,%al + jnz seta20.2 # 再次测试 AL 中的第 2 位,如果不为零,则跳回 seta20.2。 + 7c18: 75 fa jne 7c14 + + movb $0xdf, %al # 0xdf -> port 0x60 将值 0xdf 存入 AL,此值将被写入端口 0x60。 + 7c1a: b0 df mov $0xdf,%al + outb %al, $0x60 # 0xdf = 11011111, means set P2's A20 bit(the 1 bit) to 1 将 AL 的值(即 0xdf)写入端口 0x60,这将设置8042控制器的 A20 地址线为高(1),允许访问超过1MB的内存。 + 7c1c: e6 60 out %al,$0x60 + +00007c1e : + +probe_memory: + movl $0, 0x8000 + 7c1e: 66 c7 06 00 80 movw $0x8000,(%esi) + 7c23: 00 00 add %al,(%eax) + 7c25: 00 00 add %al,(%eax) + xorl %ebx, %ebx + 7c27: 66 31 db xor %bx,%bx + movw $0x8004, %di + 7c2a: bf .byte 0xbf + 7c2b: 04 80 add $0x80,%al + +00007c2d : +start_probe: + movl $0xE820, %eax + 7c2d: 66 b8 20 e8 mov $0xe820,%ax + 7c31: 00 00 add %al,(%eax) + movl $20, %ecx + 7c33: 66 b9 14 00 mov $0x14,%cx + 7c37: 00 00 add %al,(%eax) + movl $SMAP, %edx + 7c39: 66 ba 50 41 mov $0x4150,%dx + 7c3d: 4d dec %ebp + 7c3e: 53 push %ebx + int $0x15 + 7c3f: cd 15 int $0x15 + jnc cont + 7c41: 73 08 jae 7c4b + movw $12345, 0x8000 + 7c43: c7 06 00 80 39 30 movl $0x30398000,(%esi) + jmp finish_probe + 7c49: eb 0e jmp 7c59 + +00007c4b : +cont: + addw $20, %di + 7c4b: 83 c7 14 add $0x14,%edi + incl 0x8000 + 7c4e: 66 ff 06 incw (%esi) + 7c51: 00 80 66 83 fb 00 add %al,0xfb8366(%eax) + cmpl $0, %ebx + jnz start_probe + 7c57: 75 d4 jne 7c2d + +00007c59 : + + # Switch from real to protected mode, using a bootstrap GDT + # and segment translation that makes virtual addresses + # identical to physical addresses, so that the + # effective memory map does not change during the switch. + lgdt gdtdesc #加载全局描述符表寄存器(GDTR)到 gdtdesc,以便设置保护模式的段描述符。 + 7c59: 0f 01 16 lgdtl (%esi) + 7c5c: b8 7d 0f 20 c0 mov $0xc0200f7d,%eax + movl %cr0, %eax #将控制寄存器 CR0 的值加载到寄存器 EAX 中 + orl $CR0_PE_ON, %eax #将 CR0 中的保护模式开启标志(CR0_PE_ON)与 EAX 相或,以便设置 CR0 的保护模式位。 + 7c61: 66 83 c8 01 or $0x1,%ax + movl %eax, %cr0 #将修改后的 EAX 的值存回 CR0,使处理器进入保护模式。 + 7c65: 0f 22 c0 mov %eax,%cr0 + + # Jump to next instruction, but in 32-bit code segment. + # Switches processor into 32-bit mode. + ljmp $PROT_MODE_CSEG, $protcseg #执行远跳转到保护模式的代码段 PROT_MODE_CSEG 和偏移地址 protcseg,实现模式切换并开始执行32位代码。 + 7c68: ea .byte 0xea + 7c69: 6d insl (%dx),%es:(%edi) + 7c6a: 7c 08 jl 7c74 + ... + +00007c6d : + +.code32 # Assemble for 32-bit mode +protcseg: #定义标签 protcseg,表示保护模式下的代码段开始。 + # Set up the protected-mode data segment registers + movw $PROT_MODE_DSEG, %ax # Our data segment selector 将数据段选择子 PROT_MODE_DSEG 的值加载到寄存器 AX 中。 + 7c6d: 66 b8 10 00 mov $0x10,%ax + movw %ax, %ds # -> DS: Data Segment 将 AX 中的数据段选择子存入数据段寄存器 DS,设置数据段 + 7c71: 8e d8 mov %eax,%ds + movw %ax, %es # -> ES: Extra Segment 将 AX 中的数据段选择子存入附加段寄存器 ES,设置附加段 + 7c73: 8e c0 mov %eax,%es + movw %ax, %fs # -> FS 将 AX 中的数据段选择子存入段寄存器 FS,设置 FS 段。 + 7c75: 8e e0 mov %eax,%fs + movw %ax, %gs # -> GS 将 AX 中的数据段选择子存入段寄存器 GS + 7c77: 8e e8 mov %eax,%gs + movw %ax, %ss # -> SS: Stack Segment 将 AX 中的数据段选择子存入栈段寄存器 SS,设置栈段。 + 7c79: 8e d0 mov %eax,%ss + + # Set up the stack pointer and call into C. The stack region is from 0--start(0x7c00) + movl $0x0, %ebp + 7c7b: bd 00 00 00 00 mov $0x0,%ebp + movl $start, %esp + 7c80: bc 00 7c 00 00 mov $0x7c00,%esp + call bootmain + 7c85: e8 a1 00 00 00 call 7d2b + +00007c8a : + + # If bootmain returns (it shouldn't), loop. +spin: + jmp spin + 7c8a: eb fe jmp 7c8a + +Disassembly of section .text: + +00007c8c : +/* * + * readseg - read @count bytes at @offset from kernel into virtual address @va, + * might copy more than asked. + * */ +static void +readseg(uintptr_t va, uint32_t count, uint32_t offset) { + 7c8c: 55 push %ebp + 7c8d: 89 e5 mov %esp,%ebp + 7c8f: 57 push %edi + uintptr_t end_va = va + count; + 7c90: 8d 3c 10 lea (%eax,%edx,1),%edi + + // round down to sector boundary + va -= offset % SECTSIZE; + 7c93: 89 ca mov %ecx,%edx +readseg(uintptr_t va, uint32_t count, uint32_t offset) { + 7c95: 56 push %esi + va -= offset % SECTSIZE; + 7c96: 81 e2 ff 01 00 00 and $0x1ff,%edx + + // translate from bytes to sectors; kernel starts at sector 1 + uint32_t secno = (offset / SECTSIZE) + 1; + 7c9c: c1 e9 09 shr $0x9,%ecx + va -= offset % SECTSIZE; + 7c9f: 29 d0 sub %edx,%eax +readseg(uintptr_t va, uint32_t count, uint32_t offset) { + 7ca1: 53 push %ebx + va -= offset % SECTSIZE; + 7ca2: 89 c6 mov %eax,%esi + uint32_t secno = (offset / SECTSIZE) + 1; + 7ca4: 8d 41 01 lea 0x1(%ecx),%eax +readseg(uintptr_t va, uint32_t count, uint32_t offset) { + 7ca7: 83 ec 08 sub $0x8,%esp + uintptr_t end_va = va + count; + 7caa: 89 7d ec mov %edi,-0x14(%ebp) +static inline void invlpg(void *addr) __attribute__((always_inline)); + +static inline uint8_t +inb(uint16_t port) { + uint8_t data; + asm volatile ("inb %1, %0" : "=a" (data) : "d" (port) : "memory"); + 7cad: bb f7 01 00 00 mov $0x1f7,%ebx + uint32_t secno = (offset / SECTSIZE) + 1; + 7cb2: 89 45 f0 mov %eax,-0x10(%ebp) + + // If this is too slow, we could read lots of sectors at a time. + // We'd write more to memory than asked, but it doesn't matter -- + // we load in increasing order. + for (; va < end_va; va += SECTSIZE, secno ++) { + 7cb5: 3b 75 ec cmp -0x14(%ebp),%esi + 7cb8: 73 6a jae 7d24 + 7cba: 89 da mov %ebx,%edx + 7cbc: ec in (%dx),%al + while ((inb(0x1F7) & 0xC0) != 0x40) + 7cbd: 24 c0 and $0xc0,%al + 7cbf: 3c 40 cmp $0x40,%al + 7cc1: 75 f7 jne 7cba + : "memory", "cc"); +} + +static inline void +outb(uint16_t port, uint8_t data) { + asm volatile ("outb %0, %1" :: "a" (data), "d" (port) : "memory"); + 7cc3: ba f2 01 00 00 mov $0x1f2,%edx + 7cc8: b0 01 mov $0x1,%al + 7cca: ee out %al,(%dx) + 7ccb: ba f3 01 00 00 mov $0x1f3,%edx + 7cd0: 8a 45 f0 mov -0x10(%ebp),%al + 7cd3: ee out %al,(%dx) + outb(0x1F4, (secno >> 8) & 0xFF); + 7cd4: 8b 45 f0 mov -0x10(%ebp),%eax + 7cd7: ba f4 01 00 00 mov $0x1f4,%edx + 7cdc: c1 e8 08 shr $0x8,%eax + 7cdf: ee out %al,(%dx) + outb(0x1F5, (secno >> 16) & 0xFF); + 7ce0: 8b 45 f0 mov -0x10(%ebp),%eax + 7ce3: ba f5 01 00 00 mov $0x1f5,%edx + 7ce8: c1 e8 10 shr $0x10,%eax + 7ceb: ee out %al,(%dx) + outb(0x1F6, ((secno >> 24) & 0xF) | 0xE0); + 7cec: 8b 45 f0 mov -0x10(%ebp),%eax + 7cef: ba f6 01 00 00 mov $0x1f6,%edx + 7cf4: c1 e8 18 shr $0x18,%eax + 7cf7: 24 0f and $0xf,%al + 7cf9: 0c e0 or $0xe0,%al + 7cfb: ee out %al,(%dx) + 7cfc: b0 20 mov $0x20,%al + 7cfe: 89 da mov %ebx,%edx + 7d00: ee out %al,(%dx) + asm volatile ("inb %1, %0" : "=a" (data) : "d" (port) : "memory"); + 7d01: 89 da mov %ebx,%edx + 7d03: ec in (%dx),%al + while ((inb(0x1F7) & 0xC0) != 0x40) + 7d04: 24 c0 and $0xc0,%al + 7d06: 3c 40 cmp $0x40,%al + 7d08: 75 f7 jne 7d01 + asm volatile ( + 7d0a: 89 f7 mov %esi,%edi + 7d0c: b9 80 00 00 00 mov $0x80,%ecx + 7d11: ba f0 01 00 00 mov $0x1f0,%edx + 7d16: fc cld + 7d17: f2 6d repnz insl (%dx),%es:(%edi) + for (; va < end_va; va += SECTSIZE, secno ++) { + 7d19: ff 45 f0 incl -0x10(%ebp) + 7d1c: 81 c6 00 02 00 00 add $0x200,%esi + 7d22: eb 91 jmp 7cb5 + readsect((void *)va, secno); + } +} + 7d24: 58 pop %eax + 7d25: 5a pop %edx + 7d26: 5b pop %ebx + 7d27: 5e pop %esi + 7d28: 5f pop %edi + 7d29: 5d pop %ebp + 7d2a: c3 ret + +00007d2b : + +/* bootmain - the entry of bootloader */ +void +bootmain(void) { + 7d2b: 55 push %ebp + // read the 1st page off disk + readseg((uintptr_t)ELFHDR, SECTSIZE * 8, 0); + 7d2c: 31 c9 xor %ecx,%ecx +bootmain(void) { + 7d2e: 89 e5 mov %esp,%ebp + readseg((uintptr_t)ELFHDR, SECTSIZE * 8, 0); + 7d30: ba 00 10 00 00 mov $0x1000,%edx +bootmain(void) { + 7d35: 56 push %esi + readseg((uintptr_t)ELFHDR, SECTSIZE * 8, 0); + 7d36: b8 00 00 01 00 mov $0x10000,%eax +bootmain(void) { + 7d3b: 53 push %ebx + readseg((uintptr_t)ELFHDR, SECTSIZE * 8, 0); + 7d3c: e8 4b ff ff ff call 7c8c + + // is this a valid ELF? + if (ELFHDR->e_magic != ELF_MAGIC) { + 7d41: 81 3d 00 00 01 00 7f cmpl $0x464c457f,0x10000 + 7d48: 45 4c 46 + 7d4b: 75 3f jne 7d8c + } + + struct proghdr *ph, *eph; + + // load each program segment (ignores ph flags) + ph = (struct proghdr *)((uintptr_t)ELFHDR + ELFHDR->e_phoff); + 7d4d: a1 1c 00 01 00 mov 0x1001c,%eax + eph = ph + ELFHDR->e_phnum; + 7d52: 0f b7 35 2c 00 01 00 movzwl 0x1002c,%esi + ph = (struct proghdr *)((uintptr_t)ELFHDR + ELFHDR->e_phoff); + 7d59: 8d 98 00 00 01 00 lea 0x10000(%eax),%ebx + eph = ph + ELFHDR->e_phnum; + 7d5f: c1 e6 05 shl $0x5,%esi + 7d62: 01 de add %ebx,%esi + for (; ph < eph; ph ++) { + 7d64: 39 f3 cmp %esi,%ebx + 7d66: 73 18 jae 7d80 + readseg(ph->p_va & 0xFFFFFF, ph->p_memsz, ph->p_offset); + 7d68: 8b 43 08 mov 0x8(%ebx),%eax + for (; ph < eph; ph ++) { + 7d6b: 83 c3 20 add $0x20,%ebx + readseg(ph->p_va & 0xFFFFFF, ph->p_memsz, ph->p_offset); + 7d6e: 8b 4b e4 mov -0x1c(%ebx),%ecx + 7d71: 8b 53 f4 mov -0xc(%ebx),%edx + 7d74: 25 ff ff ff 00 and $0xffffff,%eax + 7d79: e8 0e ff ff ff call 7c8c + 7d7e: eb e4 jmp 7d64 + } + + // call the entry point from the ELF header + // note: does not return + ((void (*)(void))(ELFHDR->e_entry & 0xFFFFFF))(); + 7d80: a1 18 00 01 00 mov 0x10018,%eax + 7d85: 25 ff ff ff 00 and $0xffffff,%eax + 7d8a: ff d0 call *%eax +} + +static inline void +outw(uint16_t port, uint16_t data) { + asm volatile ("outw %0, %1" :: "a" (data), "d" (port) : "memory"); + 7d8c: ba 00 8a ff ff mov $0xffff8a00,%edx + 7d91: 89 d0 mov %edx,%eax + 7d93: 66 ef out %ax,(%dx) + 7d95: b8 00 8e ff ff mov $0xffff8e00,%eax + 7d9a: 66 ef out %ax,(%dx) + 7d9c: eb fe jmp 7d9c diff --git a/labcodes/lab3/obj/bootblock.o b/labcodes/lab3/obj/bootblock.o new file mode 100755 index 0000000000000000000000000000000000000000..3a1b3fbe654167065b4e9fc60067af253d069418 GIT binary patch literal 4408 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 A8~^|S literal 0 HcmV?d00001 diff --git a/labcodes/lab3/obj/kern/debug/panic.d b/labcodes/lab3/obj/kern/debug/panic.d new file mode 100644 index 00000000..084ebb66 --- /dev/null +++ b/labcodes/lab3/obj/kern/debug/panic.d @@ -0,0 +1,3 @@ +obj/kern/debug/panic.o obj/kern/debug/panic.d: kern/debug/panic.c \ + libs/defs.h libs/stdio.h libs/stdarg.h kern/driver/intr.h \ + kern/debug/kmonitor.h kern/trap/trap.h diff --git a/labcodes/lab3/obj/kern/debug/panic.o b/labcodes/lab3/obj/kern/debug/panic.o new file mode 100644 index 0000000000000000000000000000000000000000..b96eab54e3e8c064ff8fbc46dcf963bc98851cd9 GIT binary patch literal 2704 zcma)8&2Jl35T6Y$n2@hl1xka!f&}6w+1QTrft^T%*omO1g0>M7P&sRRlbHA;T5r;V zP>BSUhyo}_Bsir10yi!wQi*cl0{0$rK|*RTR5>Dr-|y{vTQ^b>BaP=bA8+Qpx3jbU zBLD83Wm#g#k|*S$CejlPJZU8cq({1CVe8K??+@Ij<<{Q%M+c{fxaiyb*{%H1cD`dP z*B9N+Mk$`gYth^B7=j7!OKQC{D z_?%n}@p<_m#Jy4qakqRD;+U+4_!U_Lz6;(2AK{Tc&=^9|o|Y7c;G1B!m${Q};9b~w z54{@m9$wd&_dv?YKmZiJ&~o-cVLT}(L*ett$*@cYX4pr-A}QqDgycTy+T)L=L&&$m zS;UyV(Up@Fg`%8{;%zWEt@cc<4E}>)&8b&Pc1c!UuRcw#SShVIp2{&6 z7iTSlmE$V?gh?YCPN7<920Iz&POdv%JriuCwd~_6n5?`HUYc8NIZHCGF4C>W)K$eC zKi1#O^p`X3F_5%N(|1a%G2g>)5u9l^@!UnFzI<|p%+JndVgn1s^}4?vOD65KofuB8 zD>ZpDm9i7*xHijKK2MPK*=4alk6OJQk;vERjdQSZ29VgxGSd~k)%I2=XI>1cjDHMfrNdc$|^`AZAK>cWFH?n)uJc@+Mi#BU3Z6V7G!iJFOe zJ$)qh8^5P-f=R#P9(Ex4Wn&EcmfwPYt($p!$|QiDWYj@m#+$e(9IdaB!Q78o11OA3 z3>=S8cB=WWdevuq;Y lA!HYr|3jFs2h3cp_p%751DheUKfar-aX+H2XM!M2+`oRge1QM} literal 0 HcmV?d00001 diff --git a/labcodes/lab3/obj/kern/driver/clock.d b/labcodes/lab3/obj/kern/driver/clock.d new file mode 100644 index 00000000..bdff3ffd --- /dev/null +++ b/labcodes/lab3/obj/kern/driver/clock.d @@ -0,0 +1,3 @@ +obj/kern/driver/clock.o obj/kern/driver/clock.d: kern/driver/clock.c \ + libs/x86.h libs/defs.h kern/trap/trap.h libs/stdio.h libs/stdarg.h \ + kern/driver/picirq.h diff --git a/labcodes/lab3/obj/kern/driver/clock.o b/labcodes/lab3/obj/kern/driver/clock.o new file mode 100644 index 0000000000000000000000000000000000000000..621e9a16d966fcd3554e8567fa51fcae9eeb6ffb GIT binary patch literal 1824 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 W2MJODv0eMv?@{#2dw!4t-hTqys%QiN literal 0 HcmV?d00001 diff --git a/labcodes/lab3/obj/kern/driver/ide.d b/labcodes/lab3/obj/kern/driver/ide.d new file mode 100644 index 00000000..8b6e6cf0 --- /dev/null +++ b/labcodes/lab3/obj/kern/driver/ide.d @@ -0,0 +1,4 @@ +obj/kern/driver/ide.o obj/kern/driver/ide.d: kern/driver/ide.c \ + libs/defs.h libs/stdio.h libs/stdarg.h kern/trap/trap.h \ + kern/driver/picirq.h kern/fs/fs.h kern/mm/mmu.h kern/driver/ide.h \ + libs/x86.h kern/debug/assert.h diff --git a/labcodes/lab3/obj/kern/driver/ide.o b/labcodes/lab3/obj/kern/driver/ide.o new file mode 100644 index 0000000000000000000000000000000000000000..ff1525f333f8d9f6f585ebfa29a2c7dd9ee8d1c5 GIT binary patch literal 10408 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 Y51muk4j2A=u*rK3g?*IS* literal 0 HcmV?d00001 diff --git a/labcodes/lab3/obj/kern/driver/intr.d b/labcodes/lab3/obj/kern/driver/intr.d new file mode 100644 index 00000000..d0f9177c --- /dev/null +++ b/labcodes/lab3/obj/kern/driver/intr.d @@ -0,0 +1,2 @@ +obj/kern/driver/intr.o obj/kern/driver/intr.d: kern/driver/intr.c \ + libs/x86.h libs/defs.h kern/driver/intr.h diff --git a/labcodes/lab3/obj/kern/driver/intr.o b/labcodes/lab3/obj/kern/driver/intr.o new file mode 100644 index 0000000000000000000000000000000000000000..ae30eda041cbc61fe690d88a4c1694d2a98aa496 GIT binary patch literal 1448 zcma)6U279T6uq0K60s?@_*NfU5KN`rd=QER#cI~phoVIYh$vwBTq&ZlTaUX8<)A|%ap1`Sjj0wz##*VeR9!r;p0YCt z{YH|;z0ez$$7fgU?qP})Zu{XdqalBvA?wX%W4_e#Mo}`FuU754U0JSf zaUPh%{8f!&5AXF8*8?VTid_>W!8j4ycN14^Z#Wb?4tk)aWY+^tY}|u>5P=pAlE7ZS z+FAyovz>B-ZhI?s`vKPaU*k8#KBixYNFA}dk6OU=ctP_Hz8y{YgLfJ^d;Bk61stPI z2?zceZuWte3coP+{V04DPJ63+$?uIEI@eo)n>7(i3F7=;7&B{KK!GvWr+q-eHH>kL zenq3He`7IYCcT9kV{A*=cO*A-OyK@#tYy!^&9cut2kYh>SuK=h1Hzj?_JZdlkMlSu ad)`;zEudzMI<({PEN=$MmKsSPhW8uZ9iKb^ literal 0 HcmV?d00001 diff --git a/labcodes/lab3/obj/kern/driver/picirq.d b/labcodes/lab3/obj/kern/driver/picirq.d new file mode 100644 index 00000000..2de8ab18 --- /dev/null +++ b/labcodes/lab3/obj/kern/driver/picirq.d @@ -0,0 +1,2 @@ +obj/kern/driver/picirq.o obj/kern/driver/picirq.d: kern/driver/picirq.c \ + libs/defs.h libs/x86.h kern/driver/picirq.h diff --git a/labcodes/lab3/obj/kern/driver/picirq.o b/labcodes/lab3/obj/kern/driver/picirq.o new file mode 100644 index 0000000000000000000000000000000000000000..dfe6e15530ccd3816950c4451023e53b232bf6e7 GIT binary patch literal 3140 zcma)8ZERCj7=F7IoCGLeQ33=?L|g^#)~@S53JD)A^eQ1no$^Cc+VzfBwr;j}WD+xG zl*j@<7UK`1{1`FOKPLV#VTNFU5GBm83=|ARNSJ{DmKlhkK-hfVbI&=uekAy&r|)x~ z_c`x*&)eI3@2>d9^&XFhlzFI}CT2vXC!I)GxJvTTbZY9o`d(?y-grezZ@jcOUTXQ2 zg9rI*_c6NxjPKB~mXq-Zi)l~%zV8smK+}WKKHosRbo_dSZ{U~{A3KQnBg7veJ~rCd z*IU|hLL~Ph`C%?&&+#8ddWZM_G3+}!>>HTGTkKyvydNogy-Tha$H&Jf7R64AI4{HI zgNy0A_^EMZKZWdrqkZ6p4uU()+-Yz_f;;O6cV;HIGvLk&?mVwO=LdHV+9Y5_XPKV_r1?L*=?M6jJZdwlO2{VTs1yUWc%cd zI~f?0oqULh^ZT201YiofnV~XnJT1alDG-qXzf|H^;d>;`xNtYH(tPFOkGk+6@DdER zUod(Yz<$H%$Ed(yi_udK5O^+4ld~Aj(-Fq=HNQaA`w;W@F}Pl~7$scTq&jeuaZc9M zvj7&Og#yo){3eGMYbUTtuY+GIHJi1@PmH7Bd*DmBMAri^k@3yI{lI*#E~$|r2#uu{cn8C8Sd=gQBr7zL%8agE4x02)5y7c#cwS zG&bocjT1DYu}QyboS=Ien}o|>7@v0vdd9|e&ek|V3pFP-%-VR2RcB3s+RLr&)Y=39InA?`OGJZrw zBov@bE|bjVbGFD=Bl3lveBnTJMJO1q3)j~~!u3%N>!OryZ*LU|Y67Hkg#&z$WYMxk zc`ewuR-~&9(2n+8M(BY>v;$ErXw9XIRbBNFBm3WHe_UMTa!$y5TlrMF)oNTXw&qSX z@;(vgIFSI_6Am?m8zOa~2JX>6yAg3tAi5!QJgxxRux?$Wzp^RanYTOr!JrW~s#gR% z#WdI*3K`YmfTZ<**|YOy^1M^wnLpL*-GkrXk4s-s#xiAIx~={Kg8KX00O9SRTuEiz zE1nTN;im+@Kg<>pBCgkiZ}*wX!0`P`)jtdK8q8I_JfHXkbf?k z#e1T}r`e-`opS!MoPUG#9RFT=zOQ;v_;RUxN$PCL|0w;R($C;^(1)ex`?&`<^RL}~1&SYL*DO!|!UWE9_Svr}n!yWse&LItbUu&pkej7-W-k&!MI$zZZ5 z7o^gVl7V|do0W$w-)>vRhD}W?AZXt1Xsv9rrI2c~u;2f+MG)c``uP(E7WXHafMaa@ ztmW6k)fjBU=mS5Gred&$e}7Q)tem42!e*ck_-Ipj85q_p-5dlshcbn^9#sR!Sl5L` zPe>u_xCXApT^~=fGBycb)z=8D_5`GT2p(~5px`>h7;|2>1UBUBMj6L=Y?NN{wkk{# zD&JPAQ|D)0kJPYJ=Y0d%eU2<9bHVW$`Tb0tgY&9ffb=`^^~3YK68DvLGcY)p`@A0^ WxDuQ)Ro_eyZe0%+s%JWDmF_QJrz8~s literal 0 HcmV?d00001 diff --git a/labcodes/lab3/obj/kern/fs/swapfs.d b/labcodes/lab3/obj/kern/fs/swapfs.d new file mode 100644 index 00000000..4a52b61b --- /dev/null +++ b/labcodes/lab3/obj/kern/fs/swapfs.d @@ -0,0 +1,5 @@ +obj/kern/fs/swapfs.o obj/kern/fs/swapfs.d: kern/fs/swapfs.c \ + kern/mm/swap.h libs/defs.h kern/mm/memlayout.h libs/atomic.h libs/list.h \ + kern/mm/pmm.h kern/mm/mmu.h kern/debug/assert.h kern/mm/vmm.h \ + kern/sync/sync.h libs/x86.h kern/driver/intr.h kern/fs/swapfs.h \ + kern/fs/fs.h kern/driver/ide.h diff --git a/labcodes/lab3/obj/kern/fs/swapfs.o b/labcodes/lab3/obj/kern/fs/swapfs.o new file mode 100644 index 0000000000000000000000000000000000000000..1eb3e4ccafc93b7c30d28e16bb1ffe44df09d048 GIT binary patch literal 4128 zcmbVPU1(e98GdCetJ^p~&DJiXaVJ)lMwzTwvh2vxJd))&rAC<%Ejncn>Kty{M?ZjP>fWb}uP{*TbF&23+w+uqn5U7Oqb8FS3c zZS^05YRyTH{>Dj$Mw8hZvn_6rx!*?5C|g z?z^!${B!8#`6v|%9A)8WI8SwC@7++IJgTom9VGO?z!`#tT4AMIo>loaF-(jp`kX}R)s|vv$!yf`)HF`2fo{S_%&Y~kV zIdV?!1>Ayv8vOGZw}98dRo{R+asf|Gj#TAyG0a$!BTvZ}z;|N{nCGh;z^mY-67V|s zPEMCCIqULBO#gU<8*(1lF*&!u=(sTpEp5skm`ftIdZ{e!B`2Qk+w6rWWm{hJtX zC-4X^xxH49Ysf{f-#yw2jz)_4Mx#(`EOvT++iT{e=gxbDUawnj9iGVMGqZRW)N@ij zi|RR*neD?cm8ncriiMft%=EFs%v41XR}0Ibij=^=;u)!sktM$y_QJkVOlrks!N^6( z-N2vkdd(CZRf?&MDyG~+y6Md95wK&K*_GfdDlCh7UeLN=ve5ThWe6o*SSeE(FXW5I zilxcvVyP0rW0mYgcCt`uwcYuE{>2PLYI^;}p4SgAQ#qB%P8XFDGu7ID_ae13YUTL} zmeBTtu;z8c{^fFZW*XjzcWd0bn0q!qjl#8Q*=;ua%rcqD778kPMeIUL8Hpw2nm9{P z>h-;4#^iAfTs^e9{I0hW8iOgnqR+L{Ioj)Vatr1ZU3G}qYgT6VQJXForuMBKBOH8$blpk~-2~+N}>$lx{+soZ^=RVj>@l~Z} znRNy3^61Hv<<#M7eW@ERrSkb)F*h-uUs7WJ`-MVoqL?vi)XDD(DRJezB)&V6cwjV{ z{1NUu-#qs1!|#@y*gJA<=o@=>J^3Cyw2j|k+W4y?vVU_=^2B?4lPRd4#^8JNDU8TI zbWS@!mBLuXcou`de0F?J-RAQPm_ESZcYVia@iw3LVLFbw|C0|x;{?};lJZaWuC@yP zqO@Nxu5So3xm_#eI1S_N&EF+nrd2o)od^?wDKjW1zsbt7IpoUNg-{MT_`tkm&jw}_;5Z$4rSZ$ z?|={8t=BxXTjXVK-A=qGG5crImtnHpvSSdWci3g&wrL1;TgoEN1C?{U1o zH=sNV9qU62MfH_|?VNzJ0we$1Sh91Sgo2pIM|u^-UeQoJIWLLtOZsts(pOMKRzvlq zjpKshN{PoA78@h_kQOkA?Yw8LB53~uR~|a*2mw_alb4k>{};r>-Q;oG{K$# literal 0 HcmV?d00001 diff --git a/labcodes/lab3/obj/kern/init/entry.d b/labcodes/lab3/obj/kern/init/entry.d new file mode 100644 index 00000000..c6b2d371 --- /dev/null +++ b/labcodes/lab3/obj/kern/init/entry.d @@ -0,0 +1,2 @@ +obj/kern/init/entry.o obj/kern/init/entry.d: kern/init/entry.S \ + kern/mm/mmu.h kern/mm/memlayout.h diff --git a/labcodes/lab3/obj/kern/init/entry.o b/labcodes/lab3/obj/kern/init/entry.o new file mode 100644 index 0000000000000000000000000000000000000000..f3e6b8d88e79e25140e965988ab31da6c8742a88 GIT binary patch literal 25640 zcmeI*y^khIeFyN`dpPbeFZ-N1%*z?5JFqzeo~`o>oG~^nc?}6cBPR|lUGLtV%!1h~ z?T#fAxg(=*RJcP6kbhfp>8JXO_C|GJ<4 z&NI@^Z1v1P{^d8ne(Tn)aMNyuLwIKvLcD+d%pYBKFNY6?4}>2Xceh{qkK3_+@J@KT z{L}i2+b`9BdHPefKUrU?Kiv2I$^P);{o$wo`Q*uypZ(W9Y^^2G5@-pu1X=fT3sQ>5Fc<=6p-#E|ihWCf3 zPqVw>L*d!;__k-R+ud;VaWj4{eE2;6NcgSu_@m*s&*K-ue*eJU?%Eo!M*H~F;djpC zm%``Ii&c~m*2~GUVr`7zy8j*{ytqi4!=DA?wgMu-g)rw!R4JdA6`EC z{>5LN4$!)mKue${&=P0~v;JO1bN6$c}FfuVySyAX6Bbn5itRY*<-zI1)*8^bBMQ zBNH=~g_Vu)ym}&uj-G)`VPs;avaqrdKBAsTqN8UZQy7_;sVuB)SPgYJ5=nIQ3}gx; z6El^Cm5uOG^+XaKJp-A-$iz%#VPzwHOg)iAN6$c}FfuVySy+;YcLW(KC=Kj7-c_ z7FIUGC)E>4bo2~l3L_IUm4%fJtKJSrB8iTkflOg!Vy3dNvSEGP;YcLW(KC=Kj7-c_ z7FIT_v^yM$BszKqGKGWL&edImCuk%^hg!pcVYta>7ej-G)`VPs;avaqsYb>iVjB+=0`kSUBz%v2Uu zHp1_!Cz9ys8ORhyCT1!ND;wc+>WL&edImCuk%^hg!pcT?Sv`?NN6$c}FfuVySya3qrG=o!cqMkZz|3o9GpkJS@N zbo2~l3L_IUm4%g!@Fn#`5*AX6Bbn5itRY=l2kPbAUNGmt5aOw3dkRyM+)t0$7^=o!cq zMkZz|3o9GpYwC$4I(h~&g^`Jw%EHR_weY{S{d@accDPxWAI#ose*L!q_R9U)ciR5F zLV)_Wph0>NP&)c8KRs&&N~$#Z&+4slR*b`&0inr~ccg z{_@n9Q~!fg|F5V1-%kB}>i55pnj3+nGde+J0TyU-0hp{@8icrtQbs+jG2ozqg(D-M7Wu?DyZzKI^6c literal 0 HcmV?d00001 diff --git a/labcodes/lab3/obj/kern/init/init.d b/labcodes/lab3/obj/kern/init/init.d new file mode 100644 index 00000000..fa29b734 --- /dev/null +++ b/labcodes/lab3/obj/kern/init/init.d @@ -0,0 +1,7 @@ +obj/kern/init/init.o obj/kern/init/init.d: kern/init/init.c libs/defs.h \ + libs/stdio.h libs/stdarg.h libs/string.h kern/driver/console.h \ + kern/debug/kdebug.h kern/trap/trap.h kern/driver/picirq.h \ + kern/driver/clock.h kern/driver/intr.h kern/mm/pmm.h kern/mm/mmu.h \ + kern/mm/memlayout.h libs/atomic.h libs/list.h kern/debug/assert.h \ + kern/mm/vmm.h kern/sync/sync.h libs/x86.h kern/driver/ide.h \ + kern/mm/swap.h kern/debug/kmonitor.h diff --git a/labcodes/lab3/obj/kern/init/init.o b/labcodes/lab3/obj/kern/init/init.o new file mode 100644 index 0000000000000000000000000000000000000000..c95a9509672f430cb47aeac1d2c39aabe12d5259 GIT binary patch literal 4936 zcma)9ZERa-6+U*o)s*yuF<7>?<8C-CUK-DKoV0Tq$jD9GL4w$pY#nRlU0>fMCb1p) zUiSma78a;xB}3hQAdmnR0YXAT;s+lSo3w~+YC#kUX+IDWQhpSvVv$y=&>s*jJm>wm zzP>GDM>;;w`FPL!dC&X$`O&c>kw}CzMQ9tfG@?s;q$ejtH|?R_G}-+7(t7u+Z0Y5n zrkRLeG!rq#7h?$)S2wq|w#3iH(G4~%k8U6=2KT-;cPsFNppzKdyYGwsJJDmDGvBJ` z^Ud|CH)U9JYV)P>j^)XYm!{&&qw(fgqN6#Hh&N9pV$E1Wbb5YyYO~c~d2|ntlw-BO z6h^f3*| zq`T;Lr7>2=6ZX4B4tANeR~}4(_mMoiY`>R|`fUvw^YQ)kn2!_mq>sBWYDp$NK+pO( zNsf;nq%ZsU0M&flOP-H2bjHUydJfnIFM>C)Qs)$g5VWc!i#6~f_!Y2TpI;~&1icQv z0OobQq;Lo1I|}pqtSNjaB$G)GOCWGQu%3f-KWyt@-B%2ocL6%*-=i?+XEN#25(xYm z`jFC08m1)hKE&%hxj>%bK%Oy$Tl+W?$Y}<~HcFlF91rB=K$DII;vWsfe~vy0Pff+| zhh#EoTmpd~3&cM~cPNjE6WBU4Pty~={YzB$@iX+Yk53Tq36n`v^cv&}`umiy5PcVT z5%>o7`nL+R>kk2ZMPWVa&1LiiX{G(_Maus|VJ||x1zaf^%^iL{d8x>uW ziIchm&`|OJ@Z&2gg5wtg@h53JJVPpe!;k-JApUG%4ZlVoRvr_l{4O6qPh9nxOsvFx z5(0lc@SVOuS>L`y2Z1NiuUKn)%8ua18L8SHao(Q3ehgqvYo8xFqa%cyIhh^*2*Oj32fD8()k7132-KW zvjN}W&WReLhoGOf&Tu!{y}OWNoJrRm$^Sl?rg2@8I7u2o~b$|LvO%9l8`DZ zQ!(so!JL9(RPL#=XU`VATA|@Obv>q#i;syje@mz1dfMJL5!^=;$0k!FPfR3@nroC@ zW4>mU%GDVol}b^UyJH7+mGZ_g7G=ihDoM?-U1P}TI<2%)o947>uGXlhr^k@9Fua;! z@H7mgQY$$IJos4K{cbY*f95k;$ZTsdR6qA=J!s*=#DEODZ#wuK$s* zJWi3b@yOneSnNf7(_B~e_qhm6kL-$nGy2(`w<-G}$VKo2VBc5V8GGdIT`>bDzOR1@ z&VYUYk)>_ZZ^{_XeHQ!|@P4o#bG+sM9?bs&cL)7;tB==V=Ni5m^haNl0kCl&YhbQ{ zJ0bl(9(^0LRP%$6YaZ7?-+!d#H{jzMcR1)j<#)kWpAhC#jQ%NVvo^H9pb7O90|?MI z+@^e=>b|0Qar0Y9&yRI}{4sIM2!6R9>bbF>pLcpLtXt5T7QuHwpJPQ4->v#x!Y0-m z3>2|`Rx6OKp9|^V3hCd6uJ?=k`+3O!>yZ9NNWT=){~Xf)8q%+X^!Gygf1odd`Hb>- zIszNS^SKAQKBMgKfv(RZ>-tV6fQ;f}?xKXB|5BPUsm>SEBjBB{b$PlD`kI6*?+I>e^T~$l#Jp{!~JiEC@ZGrg@JvKN8&oNVLF7N+Y~#lbi}D2cO);M-LLe&>rfrP474K{!6*|IDyd z$;A167EZofI0j25YIv8@v5bOBScf3#d_6F7%@4+L4ow>Kcyt@~alS9Yxm^Wv9Dis0 zE%E=YVKCE=ac*WId3=0ta~$`V2kSlo>6e&zF)&8m*9d%!wW|}!xn640{kx~pHtiVO`x&<4+xhSJInt9IH_hU literal 0 HcmV?d00001 diff --git a/labcodes/lab3/obj/kern/libs/readline.d b/labcodes/lab3/obj/kern/libs/readline.d new file mode 100644 index 00000000..656abf96 --- /dev/null +++ b/labcodes/lab3/obj/kern/libs/readline.d @@ -0,0 +1,2 @@ +obj/kern/libs/readline.o obj/kern/libs/readline.d: kern/libs/readline.c \ + libs/stdio.h libs/defs.h libs/stdarg.h diff --git a/labcodes/lab3/obj/kern/libs/readline.o b/labcodes/lab3/obj/kern/libs/readline.o new file mode 100644 index 0000000000000000000000000000000000000000..ff86b2d49d90136bac3939da6bc1486807bd25d6 GIT binary patch literal 2136 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 literal 0 HcmV?d00001 diff --git a/labcodes/lab3/obj/kern/mm/swap_fifo.d b/labcodes/lab3/obj/kern/mm/swap_fifo.d new file mode 100644 index 00000000..34b94a67 --- /dev/null +++ b/labcodes/lab3/obj/kern/mm/swap_fifo.d @@ -0,0 +1,5 @@ +obj/kern/mm/swap_fifo.o obj/kern/mm/swap_fifo.d: kern/mm/swap_fifo.c \ + libs/defs.h libs/x86.h libs/stdio.h libs/stdarg.h libs/string.h \ + kern/mm/swap.h kern/mm/memlayout.h libs/atomic.h libs/list.h \ + kern/mm/pmm.h kern/mm/mmu.h kern/debug/assert.h kern/mm/vmm.h \ + kern/sync/sync.h kern/driver/intr.h kern/mm/swap_fifo.h diff --git a/labcodes/lab3/obj/kern/mm/swap_fifo.o b/labcodes/lab3/obj/kern/mm/swap_fifo.o new file mode 100644 index 0000000000000000000000000000000000000000..65e6f5a255e3b67f61cfb92a7a738a6c19e75c70 GIT binary patch literal 7632 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 literal 0 HcmV?d00001 diff --git a/labcodes/lab3/obj/kern/mm/vmm.d b/labcodes/lab3/obj/kern/mm/vmm.d new file mode 100644 index 00000000..76e91d77 --- /dev/null +++ b/labcodes/lab3/obj/kern/mm/vmm.d @@ -0,0 +1,5 @@ +obj/kern/mm/vmm.o obj/kern/mm/vmm.d: kern/mm/vmm.c kern/mm/vmm.h \ + libs/defs.h libs/list.h kern/mm/memlayout.h libs/atomic.h \ + kern/sync/sync.h libs/x86.h kern/driver/intr.h kern/mm/mmu.h \ + libs/string.h kern/debug/assert.h libs/stdio.h libs/stdarg.h \ + libs/error.h kern/mm/pmm.h kern/mm/swap.h diff --git a/labcodes/lab3/obj/kern/mm/vmm.o b/labcodes/lab3/obj/kern/mm/vmm.o new file mode 100644 index 0000000000000000000000000000000000000000..7029430d4e557317fa4f0f57514dd47357b8bef6 GIT binary patch literal 16724 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 literal 0 HcmV?d00001 diff --git a/labcodes/lab3/obj/kern/trap/trap.d b/labcodes/lab3/obj/kern/trap/trap.d new file mode 100644 index 00000000..be994543 --- /dev/null +++ b/labcodes/lab3/obj/kern/trap/trap.d @@ -0,0 +1,6 @@ +obj/kern/trap/trap.o obj/kern/trap/trap.d: kern/trap/trap.c libs/defs.h \ + kern/mm/mmu.h kern/mm/memlayout.h libs/atomic.h libs/list.h \ + kern/driver/clock.h kern/trap/trap.h libs/x86.h libs/stdio.h \ + libs/stdarg.h kern/debug/assert.h kern/driver/console.h kern/mm/vmm.h \ + kern/sync/sync.h kern/driver/intr.h kern/mm/swap.h kern/mm/pmm.h \ + kern/debug/kdebug.h diff --git a/labcodes/lab3/obj/kern/trap/trap.o b/labcodes/lab3/obj/kern/trap/trap.o new file mode 100644 index 0000000000000000000000000000000000000000..fd575bf936a817d7f83177174d8b3ac9feb95d74 GIT binary patch literal 11968 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 literal 0 HcmV?d00001 diff --git a/labcodes/lab3/obj/kernel.asm b/labcodes/lab3/obj/kernel.asm new file mode 100644 index 00000000..485bab55 --- /dev/null +++ b/labcodes/lab3/obj/kernel.asm @@ -0,0 +1,17007 @@ + +bin/kernel: file format elf32-i386 + + +Disassembly of section .text: + +c0100000 : + +.text +.globl kern_entry +kern_entry: + # load pa of boot pgdir + movl $REALLOC(__boot_pgdir), %eax +c0100000: b8 00 30 12 00 mov $0x123000,%eax + movl %eax, %cr3 +c0100005: 0f 22 d8 mov %eax,%cr3 + + # enable paging + movl %cr0, %eax +c0100008: 0f 20 c0 mov %cr0,%eax + orl $(CR0_PE | CR0_PG | CR0_AM | CR0_WP | CR0_NE | CR0_TS | CR0_EM | CR0_MP), %eax +c010000b: 0d 2f 00 05 80 or $0x8005002f,%eax + andl $~(CR0_TS | CR0_EM), %eax +c0100010: 83 e0 f3 and $0xfffffff3,%eax + movl %eax, %cr0 +c0100013: 0f 22 c0 mov %eax,%cr0 + + # update eip + # now, eip = 0x1..... + leal next, %eax +c0100016: 8d 05 1e 00 10 c0 lea 0xc010001e,%eax + # set eip = KERNBASE + 0x1..... + jmp *%eax +c010001c: ff e0 jmp *%eax + +c010001e : +next: + + # unmap va 0 ~ 4M, it's temporary mapping + xorl %eax, %eax +c010001e: 31 c0 xor %eax,%eax + movl %eax, __boot_pgdir +c0100020: a3 00 30 12 c0 mov %eax,0xc0123000 + + # set ebp, esp + movl $0x0, %ebp +c0100025: bd 00 00 00 00 mov $0x0,%ebp + # the kernel stack region is from bootstack -- bootstacktop, + # the kernel stack size is KSTACKSIZE (8KB)defined in memlayout.h + movl $bootstacktop, %esp +c010002a: bc 00 20 12 c0 mov $0xc0122000,%esp + # now kernel stack is ready , call the first C function + call kern_init +c010002f: e8 02 00 00 00 call c0100036 + +c0100034 : + +# should never get here +spin: + jmp spin +c0100034: eb fe jmp c0100034 + +c0100036 : +int kern_init(void) __attribute__((noreturn)); +void grade_backtrace(void); +static void lab1_switch_test(void); + +int +kern_init(void) { +c0100036: 55 push %ebp +c0100037: 89 e5 mov %esp,%ebp +c0100039: 83 ec 28 sub $0x28,%esp + extern char edata[], end[]; //声明外部变量 edata 和 end + memset(edata, 0, end - edata); // 将数据段清零 +c010003c: b8 74 61 12 c0 mov $0xc0126174,%eax +c0100041: 2d 00 50 12 c0 sub $0xc0125000,%eax +c0100046: 89 44 24 08 mov %eax,0x8(%esp) +c010004a: c7 44 24 04 00 00 00 movl $0x0,0x4(%esp) +c0100051: 00 +c0100052: c7 04 24 00 50 12 c0 movl $0xc0125000,(%esp) +c0100059: e8 70 8b 00 00 call c0108bce + + cons_init(); // init the console 初始化控制台 +c010005e: e8 51 15 00 00 call c01015b4 + + const char *message = "(THU.CST) os is loading ..."; +c0100063: c7 45 f4 60 8d 10 c0 movl $0xc0108d60,-0xc(%ebp) + cprintf("%s\n\n", message);// 将消息输出到控制台 +c010006a: 8b 45 f4 mov -0xc(%ebp),%eax +c010006d: 89 44 24 04 mov %eax,0x4(%esp) +c0100071: c7 04 24 7c 8d 10 c0 movl $0xc0108d7c,(%esp) +c0100078: e8 f8 02 00 00 call c0100375 + + print_kerninfo();// 输出内核信息的函数 +c010007d: e8 16 08 00 00 call c0100898 + + grade_backtrace(); //调用回溯函数,通常用于调试,显示函数调用栈。 +c0100082: e8 a4 00 00 00 call c010012b + + pmm_init(); // init physical memory management初始化物理内存管理 +c0100087: e8 e9 4d 00 00 call c0104e75 + + pic_init(); // init interrupt controller初始化可编程中断控制器 +c010008c: e8 01 1f 00 00 call c0101f92 + idt_init(); // init interrupt descriptor table初始化中断描述符表 +c0100091: e8 65 20 00 00 call c01020fb + + vmm_init(); // init virtual memory management 初始化虚拟内存管理 +c0100096: e8 83 75 00 00 call c010761e + + ide_init(); // init ide devices初始化IDE设备 +c010009b: e8 4e 16 00 00 call c01016ee + swap_init(); // init swap 初始化交换分区 +c01000a0: e8 4f 61 00 00 call c01061f4 + + clock_init(); // init clock interrupt 初始化时钟中断 +c01000a5: e8 69 0c 00 00 call c0100d13 + intr_enable(); // enable irq interrupt启用中断 +c01000aa: e8 41 1e 00 00 call c0101ef0 + + //LAB1: CAHLLENGE 1 If you try to do it, uncomment lab1_switch_test() + // user/kernel mode switch test + lab1_switch_test(); +c01000af: e8 76 01 00 00 call c010022a + + /* do nothing */ + while (1); +c01000b4: eb fe jmp c01000b4 + +c01000b6 : +} + +//不进行内联的回溯函数,调用 mon_backtrace 显示当前的调用栈。 +void __attribute__((noinline)) +grade_backtrace2(int arg0, int arg1, int arg2, int arg3) { +c01000b6: 55 push %ebp +c01000b7: 89 e5 mov %esp,%ebp +c01000b9: 83 ec 18 sub $0x18,%esp + mon_backtrace(0, NULL, NULL); +c01000bc: c7 44 24 08 00 00 00 movl $0x0,0x8(%esp) +c01000c3: 00 +c01000c4: c7 44 24 04 00 00 00 movl $0x0,0x4(%esp) +c01000cb: 00 +c01000cc: c7 04 24 00 00 00 00 movl $0x0,(%esp) +c01000d3: e8 56 0b 00 00 call c0100c2e +} +c01000d8: 90 nop +c01000d9: 89 ec mov %ebp,%esp +c01000db: 5d pop %ebp +c01000dc: c3 ret + +c01000dd : +//不进行内联的回溯函数,传递参数到 grade_backtrace2 +void __attribute__((noinline)) +grade_backtrace1(int arg0, int arg1) { +c01000dd: 55 push %ebp +c01000de: 89 e5 mov %esp,%ebp +c01000e0: 83 ec 18 sub $0x18,%esp +c01000e3: 89 5d fc mov %ebx,-0x4(%ebp) + grade_backtrace2(arg0, (int)&arg0, arg1, (int)&arg1); +c01000e6: 8d 4d 0c lea 0xc(%ebp),%ecx +c01000e9: 8b 55 0c mov 0xc(%ebp),%edx +c01000ec: 8d 5d 08 lea 0x8(%ebp),%ebx +c01000ef: 8b 45 08 mov 0x8(%ebp),%eax +c01000f2: 89 4c 24 0c mov %ecx,0xc(%esp) +c01000f6: 89 54 24 08 mov %edx,0x8(%esp) +c01000fa: 89 5c 24 04 mov %ebx,0x4(%esp) +c01000fe: 89 04 24 mov %eax,(%esp) +c0100101: e8 b0 ff ff ff call c01000b6 +} +c0100106: 90 nop +c0100107: 8b 5d fc mov -0x4(%ebp),%ebx +c010010a: 89 ec mov %ebp,%esp +c010010c: 5d pop %ebp +c010010d: c3 ret + +c010010e : +//不进行内联的回溯函数,传递参数到 grade_backtrace1 +void __attribute__((noinline)) +grade_backtrace0(int arg0, int arg1, int arg2) { +c010010e: 55 push %ebp +c010010f: 89 e5 mov %esp,%ebp +c0100111: 83 ec 18 sub $0x18,%esp + grade_backtrace1(arg0, arg2); +c0100114: 8b 45 10 mov 0x10(%ebp),%eax +c0100117: 89 44 24 04 mov %eax,0x4(%esp) +c010011b: 8b 45 08 mov 0x8(%ebp),%eax +c010011e: 89 04 24 mov %eax,(%esp) +c0100121: e8 b7 ff ff ff call c01000dd +} +c0100126: 90 nop +c0100127: 89 ec mov %ebp,%esp +c0100129: 5d pop %ebp +c010012a: c3 ret + +c010012b : +//触发回溯的起始点,传递初始化函数地址。 +void +grade_backtrace(void) { +c010012b: 55 push %ebp +c010012c: 89 e5 mov %esp,%ebp +c010012e: 83 ec 18 sub $0x18,%esp + grade_backtrace0(0, (int)kern_init, 0xffff0000); +c0100131: b8 36 00 10 c0 mov $0xc0100036,%eax +c0100136: c7 44 24 08 00 00 ff movl $0xffff0000,0x8(%esp) +c010013d: ff +c010013e: 89 44 24 04 mov %eax,0x4(%esp) +c0100142: c7 04 24 00 00 00 00 movl $0x0,(%esp) +c0100149: e8 c0 ff ff ff call c010010e +} +c010014e: 90 nop +c010014f: 89 ec mov %ebp,%esp +c0100151: 5d pop %ebp +c0100152: c3 ret + +c0100153 : +//打印当前的段寄存器状态。 +static void +lab1_print_cur_status(void) { +c0100153: 55 push %ebp +c0100154: 89 e5 mov %esp,%ebp +c0100156: 83 ec 28 sub $0x28,%esp + static int round = 0; + uint16_t reg1, reg2, reg3, reg4; + //嵌入汇编代码,确保编译器不优化这些代码。 + asm volatile ( +c0100159: 8c 4d f6 mov %cs,-0xa(%ebp) +c010015c: 8c 5d f4 mov %ds,-0xc(%ebp) +c010015f: 8c 45 f2 mov %es,-0xe(%ebp) +c0100162: 8c 55 f0 mov %ss,-0x10(%ebp) + "mov %%cs, %0;"// 将当前代码段寄存器的值移动到 reg1 + "mov %%ds, %1;" + "mov %%es, %2;" + "mov %%ss, %3;" + : "=m"(reg1), "=m"(reg2), "=m"(reg3), "=m"(reg4)); + cprintf("%d: @ring %d\n", round, reg1 & 3);//打印当前的 round、权限级(ring)和各段寄存器的值。 +c0100165: 0f b7 45 f6 movzwl -0xa(%ebp),%eax +c0100169: 83 e0 03 and $0x3,%eax +c010016c: 89 c2 mov %eax,%edx +c010016e: a1 00 50 12 c0 mov 0xc0125000,%eax +c0100173: 89 54 24 08 mov %edx,0x8(%esp) +c0100177: 89 44 24 04 mov %eax,0x4(%esp) +c010017b: c7 04 24 81 8d 10 c0 movl $0xc0108d81,(%esp) +c0100182: e8 ee 01 00 00 call c0100375 + cprintf("%d: cs = %x\n", round, reg1); +c0100187: 0f b7 45 f6 movzwl -0xa(%ebp),%eax +c010018b: 89 c2 mov %eax,%edx +c010018d: a1 00 50 12 c0 mov 0xc0125000,%eax +c0100192: 89 54 24 08 mov %edx,0x8(%esp) +c0100196: 89 44 24 04 mov %eax,0x4(%esp) +c010019a: c7 04 24 8f 8d 10 c0 movl $0xc0108d8f,(%esp) +c01001a1: e8 cf 01 00 00 call c0100375 + cprintf("%d: ds = %x\n", round, reg2); +c01001a6: 0f b7 45 f4 movzwl -0xc(%ebp),%eax +c01001aa: 89 c2 mov %eax,%edx +c01001ac: a1 00 50 12 c0 mov 0xc0125000,%eax +c01001b1: 89 54 24 08 mov %edx,0x8(%esp) +c01001b5: 89 44 24 04 mov %eax,0x4(%esp) +c01001b9: c7 04 24 9d 8d 10 c0 movl $0xc0108d9d,(%esp) +c01001c0: e8 b0 01 00 00 call c0100375 + cprintf("%d: es = %x\n", round, reg3); +c01001c5: 0f b7 45 f2 movzwl -0xe(%ebp),%eax +c01001c9: 89 c2 mov %eax,%edx +c01001cb: a1 00 50 12 c0 mov 0xc0125000,%eax +c01001d0: 89 54 24 08 mov %edx,0x8(%esp) +c01001d4: 89 44 24 04 mov %eax,0x4(%esp) +c01001d8: c7 04 24 ab 8d 10 c0 movl $0xc0108dab,(%esp) +c01001df: e8 91 01 00 00 call c0100375 + cprintf("%d: ss = %x\n", round, reg4); +c01001e4: 0f b7 45 f0 movzwl -0x10(%ebp),%eax +c01001e8: 89 c2 mov %eax,%edx +c01001ea: a1 00 50 12 c0 mov 0xc0125000,%eax +c01001ef: 89 54 24 08 mov %edx,0x8(%esp) +c01001f3: 89 44 24 04 mov %eax,0x4(%esp) +c01001f7: c7 04 24 b9 8d 10 c0 movl $0xc0108db9,(%esp) +c01001fe: e8 72 01 00 00 call c0100375 + round ++;//将 round 增加1,以便每次调用时记录状态。 +c0100203: a1 00 50 12 c0 mov 0xc0125000,%eax +c0100208: 40 inc %eax +c0100209: a3 00 50 12 c0 mov %eax,0xc0125000 +} +c010020e: 90 nop +c010020f: 89 ec mov %ebp,%esp +c0100211: 5d pop %ebp +c0100212: c3 ret + +c0100213 : + +static void +lab1_switch_to_user(void) { +c0100213: 55 push %ebp +c0100214: 89 e5 mov %esp,%ebp + // 从内核模式切换到用户模式 + //LAB1 CHALLENGE 1 : TODO + asm volatile ( +c0100216: 83 ec 08 sub $0x8,%esp +c0100219: cd 78 int $0x78 +c010021b: 89 ec mov %ebp,%esp + "int %0 \n"//通过触发一个中断,将控制权转移到内核,切换到用户模式。 + "movl %%ebp, %%esp"// 将基指针(EBP)值移动到堆栈指针(ESP),恢复堆栈指针。 + : + : "i"(T_SWITCH_TOU)//T_SWITCH_TOU是一个常量,表示切换到用户态的中断号。传入常量 T_SWITCH_TOU + ); +} +c010021d: 90 nop +c010021e: 5d pop %ebp +c010021f: c3 ret + +c0100220 : + +static void +lab1_switch_to_kernel(void) { +c0100220: 55 push %ebp +c0100221: 89 e5 mov %esp,%ebp + // 从用户模式切换到内核模式 + //LAB1 CHALLENGE 1 : TODO + asm volatile ( +c0100223: cd 79 int $0x79 +c0100225: 89 ec mov %ebp,%esp + "int %0 \n"// 同样触发中断,这里用的是 T_SWITCH_TOK,从用户态切换回内核态。 + "movl %%ebp, %%esp \n"//恢复堆栈指针 + : + : "i"(T_SWITCH_TOK)//传入常量 T_SWITCH_TOU + ); +} +c0100227: 90 nop +c0100228: 5d pop %ebp +c0100229: c3 ret + +c010022a : + +//测试用户模式和内核模式切换。 +//调用 lab1_print_cur_status 打印当前状态,进行模式切换,然后再次打印状态。 +static void +lab1_switch_test(void) { +c010022a: 55 push %ebp +c010022b: 89 e5 mov %esp,%ebp +c010022d: 83 ec 18 sub $0x18,%esp + lab1_print_cur_status(); +c0100230: e8 1e ff ff ff call c0100153 + cprintf("+++ switch to user mode +++\n"); +c0100235: c7 04 24 c8 8d 10 c0 movl $0xc0108dc8,(%esp) +c010023c: e8 34 01 00 00 call c0100375 + lab1_switch_to_user(); +c0100241: e8 cd ff ff ff call c0100213 + lab1_print_cur_status(); +c0100246: e8 08 ff ff ff call c0100153 + cprintf("+++ switch to kernel mode +++\n"); +c010024b: c7 04 24 e8 8d 10 c0 movl $0xc0108de8,(%esp) +c0100252: e8 1e 01 00 00 call c0100375 + lab1_switch_to_kernel(); +c0100257: e8 c4 ff ff ff call c0100220 + lab1_print_cur_status(); +c010025c: e8 f2 fe ff ff call c0100153 +} +c0100261: 90 nop +c0100262: 89 ec mov %ebp,%esp +c0100264: 5d pop %ebp +c0100265: c3 ret + +c0100266 : + * The readline() function returns the text of the line read. If some errors + * are happened, NULL is returned. The return value is a global variable, + * thus it should be copied before it is used. + * */ +char * +readline(const char *prompt) { +c0100266: 55 push %ebp +c0100267: 89 e5 mov %esp,%ebp +c0100269: 83 ec 28 sub $0x28,%esp + if (prompt != NULL) { +c010026c: 83 7d 08 00 cmpl $0x0,0x8(%ebp) +c0100270: 74 13 je c0100285 + cprintf("%s", prompt); +c0100272: 8b 45 08 mov 0x8(%ebp),%eax +c0100275: 89 44 24 04 mov %eax,0x4(%esp) +c0100279: c7 04 24 07 8e 10 c0 movl $0xc0108e07,(%esp) +c0100280: e8 f0 00 00 00 call c0100375 + } + int i = 0, c; +c0100285: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) + while (1) { + c = getchar(); +c010028c: e8 73 01 00 00 call c0100404 +c0100291: 89 45 f0 mov %eax,-0x10(%ebp) + if (c < 0) { +c0100294: 83 7d f0 00 cmpl $0x0,-0x10(%ebp) +c0100298: 79 07 jns c01002a1 + return NULL; +c010029a: b8 00 00 00 00 mov $0x0,%eax +c010029f: eb 78 jmp c0100319 + } + else if (c >= ' ' && i < BUFSIZE - 1) { +c01002a1: 83 7d f0 1f cmpl $0x1f,-0x10(%ebp) +c01002a5: 7e 28 jle c01002cf +c01002a7: 81 7d f4 fe 03 00 00 cmpl $0x3fe,-0xc(%ebp) +c01002ae: 7f 1f jg c01002cf + cputchar(c); +c01002b0: 8b 45 f0 mov -0x10(%ebp),%eax +c01002b3: 89 04 24 mov %eax,(%esp) +c01002b6: e8 e2 00 00 00 call c010039d + buf[i ++] = c; +c01002bb: 8b 45 f4 mov -0xc(%ebp),%eax +c01002be: 8d 50 01 lea 0x1(%eax),%edx +c01002c1: 89 55 f4 mov %edx,-0xc(%ebp) +c01002c4: 8b 55 f0 mov -0x10(%ebp),%edx +c01002c7: 88 90 20 50 12 c0 mov %dl,-0x3fedafe0(%eax) +c01002cd: eb 45 jmp c0100314 + } + else if (c == '\b' && i > 0) { +c01002cf: 83 7d f0 08 cmpl $0x8,-0x10(%ebp) +c01002d3: 75 16 jne c01002eb +c01002d5: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) +c01002d9: 7e 10 jle c01002eb + cputchar(c); +c01002db: 8b 45 f0 mov -0x10(%ebp),%eax +c01002de: 89 04 24 mov %eax,(%esp) +c01002e1: e8 b7 00 00 00 call c010039d + i --; +c01002e6: ff 4d f4 decl -0xc(%ebp) +c01002e9: eb 29 jmp c0100314 + } + else if (c == '\n' || c == '\r') { +c01002eb: 83 7d f0 0a cmpl $0xa,-0x10(%ebp) +c01002ef: 74 06 je c01002f7 +c01002f1: 83 7d f0 0d cmpl $0xd,-0x10(%ebp) +c01002f5: 75 95 jne c010028c + cputchar(c); +c01002f7: 8b 45 f0 mov -0x10(%ebp),%eax +c01002fa: 89 04 24 mov %eax,(%esp) +c01002fd: e8 9b 00 00 00 call c010039d + buf[i] = '\0'; +c0100302: 8b 45 f4 mov -0xc(%ebp),%eax +c0100305: 05 20 50 12 c0 add $0xc0125020,%eax +c010030a: c6 00 00 movb $0x0,(%eax) + return buf; +c010030d: b8 20 50 12 c0 mov $0xc0125020,%eax +c0100312: eb 05 jmp c0100319 + c = getchar(); +c0100314: e9 73 ff ff ff jmp c010028c + } + } +} +c0100319: 89 ec mov %ebp,%esp +c010031b: 5d pop %ebp +c010031c: c3 ret + +c010031d : +/* * + * cputch - writes a single character @c to stdout, and it will + * increace the value of counter pointed by @cnt. + * */ +static void +cputch(int c, int *cnt) { +c010031d: 55 push %ebp +c010031e: 89 e5 mov %esp,%ebp +c0100320: 83 ec 18 sub $0x18,%esp + cons_putc(c); +c0100323: 8b 45 08 mov 0x8(%ebp),%eax +c0100326: 89 04 24 mov %eax,(%esp) +c0100329: e8 b5 12 00 00 call c01015e3 + (*cnt) ++; +c010032e: 8b 45 0c mov 0xc(%ebp),%eax +c0100331: 8b 00 mov (%eax),%eax +c0100333: 8d 50 01 lea 0x1(%eax),%edx +c0100336: 8b 45 0c mov 0xc(%ebp),%eax +c0100339: 89 10 mov %edx,(%eax) +} +c010033b: 90 nop +c010033c: 89 ec mov %ebp,%esp +c010033e: 5d pop %ebp +c010033f: c3 ret + +c0100340 : + * + * Call this function if you are already dealing with a va_list. + * Or you probably want cprintf() instead. + * */ +int +vcprintf(const char *fmt, va_list ap) { +c0100340: 55 push %ebp +c0100341: 89 e5 mov %esp,%ebp +c0100343: 83 ec 28 sub $0x28,%esp + int cnt = 0; +c0100346: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) + vprintfmt((void*)cputch, &cnt, fmt, ap); +c010034d: 8b 45 0c mov 0xc(%ebp),%eax +c0100350: 89 44 24 0c mov %eax,0xc(%esp) +c0100354: 8b 45 08 mov 0x8(%ebp),%eax +c0100357: 89 44 24 08 mov %eax,0x8(%esp) +c010035b: 8d 45 f4 lea -0xc(%ebp),%eax +c010035e: 89 44 24 04 mov %eax,0x4(%esp) +c0100362: c7 04 24 1d 03 10 c0 movl $0xc010031d,(%esp) +c0100369: e8 b3 7f 00 00 call c0108321 + return cnt; +c010036e: 8b 45 f4 mov -0xc(%ebp),%eax +} +c0100371: 89 ec mov %ebp,%esp +c0100373: 5d pop %ebp +c0100374: c3 ret + +c0100375 : + * + * The return value is the number of characters which would be + * written to stdout. + * */ +int +cprintf(const char *fmt, ...) { +c0100375: 55 push %ebp +c0100376: 89 e5 mov %esp,%ebp +c0100378: 83 ec 28 sub $0x28,%esp + va_list ap; + int cnt; + va_start(ap, fmt); +c010037b: 8d 45 0c lea 0xc(%ebp),%eax +c010037e: 89 45 f0 mov %eax,-0x10(%ebp) + cnt = vcprintf(fmt, ap); +c0100381: 8b 45 f0 mov -0x10(%ebp),%eax +c0100384: 89 44 24 04 mov %eax,0x4(%esp) +c0100388: 8b 45 08 mov 0x8(%ebp),%eax +c010038b: 89 04 24 mov %eax,(%esp) +c010038e: e8 ad ff ff ff call c0100340 +c0100393: 89 45 f4 mov %eax,-0xc(%ebp) + va_end(ap); + return cnt; +c0100396: 8b 45 f4 mov -0xc(%ebp),%eax +} +c0100399: 89 ec mov %ebp,%esp +c010039b: 5d pop %ebp +c010039c: c3 ret + +c010039d : + +/* cputchar - writes a single character to stdout */ +void +cputchar(int c) { +c010039d: 55 push %ebp +c010039e: 89 e5 mov %esp,%ebp +c01003a0: 83 ec 18 sub $0x18,%esp + cons_putc(c); +c01003a3: 8b 45 08 mov 0x8(%ebp),%eax +c01003a6: 89 04 24 mov %eax,(%esp) +c01003a9: e8 35 12 00 00 call c01015e3 +} +c01003ae: 90 nop +c01003af: 89 ec mov %ebp,%esp +c01003b1: 5d pop %ebp +c01003b2: c3 ret + +c01003b3 : +/* * + * cputs- writes the string pointed by @str to stdout and + * appends a newline character. + * */ +int +cputs(const char *str) { +c01003b3: 55 push %ebp +c01003b4: 89 e5 mov %esp,%ebp +c01003b6: 83 ec 28 sub $0x28,%esp + int cnt = 0; +c01003b9: c7 45 f0 00 00 00 00 movl $0x0,-0x10(%ebp) + char c; + while ((c = *str ++) != '\0') { +c01003c0: eb 13 jmp c01003d5 + cputch(c, &cnt); +c01003c2: 0f be 45 f7 movsbl -0x9(%ebp),%eax +c01003c6: 8d 55 f0 lea -0x10(%ebp),%edx +c01003c9: 89 54 24 04 mov %edx,0x4(%esp) +c01003cd: 89 04 24 mov %eax,(%esp) +c01003d0: e8 48 ff ff ff call c010031d + while ((c = *str ++) != '\0') { +c01003d5: 8b 45 08 mov 0x8(%ebp),%eax +c01003d8: 8d 50 01 lea 0x1(%eax),%edx +c01003db: 89 55 08 mov %edx,0x8(%ebp) +c01003de: 0f b6 00 movzbl (%eax),%eax +c01003e1: 88 45 f7 mov %al,-0x9(%ebp) +c01003e4: 80 7d f7 00 cmpb $0x0,-0x9(%ebp) +c01003e8: 75 d8 jne c01003c2 + } + cputch('\n', &cnt); +c01003ea: 8d 45 f0 lea -0x10(%ebp),%eax +c01003ed: 89 44 24 04 mov %eax,0x4(%esp) +c01003f1: c7 04 24 0a 00 00 00 movl $0xa,(%esp) +c01003f8: e8 20 ff ff ff call c010031d + return cnt; +c01003fd: 8b 45 f0 mov -0x10(%ebp),%eax +} +c0100400: 89 ec mov %ebp,%esp +c0100402: 5d pop %ebp +c0100403: c3 ret + +c0100404 : + +/* getchar - reads a single non-zero character from stdin */ +int +getchar(void) { +c0100404: 55 push %ebp +c0100405: 89 e5 mov %esp,%ebp +c0100407: 83 ec 18 sub $0x18,%esp + int c; + while ((c = cons_getc()) == 0) +c010040a: 90 nop +c010040b: e8 12 12 00 00 call c0101622 +c0100410: 89 45 f4 mov %eax,-0xc(%ebp) +c0100413: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) +c0100417: 74 f2 je c010040b + /* do nothing */; + return c; +c0100419: 8b 45 f4 mov -0xc(%ebp),%eax +} +c010041c: 89 ec mov %ebp,%esp +c010041e: 5d pop %ebp +c010041f: c3 ret + +c0100420 : + * stab_binsearch(stabs, &left, &right, N_SO, 0xf0100184); + * will exit setting left = 118, right = 554. + * */ +static void +stab_binsearch(const struct stab *stabs, int *region_left, int *region_right, + int type, uintptr_t addr) { +c0100420: 55 push %ebp +c0100421: 89 e5 mov %esp,%ebp +c0100423: 83 ec 20 sub $0x20,%esp + int l = *region_left, r = *region_right, any_matches = 0; +c0100426: 8b 45 0c mov 0xc(%ebp),%eax +c0100429: 8b 00 mov (%eax),%eax +c010042b: 89 45 fc mov %eax,-0x4(%ebp) +c010042e: 8b 45 10 mov 0x10(%ebp),%eax +c0100431: 8b 00 mov (%eax),%eax +c0100433: 89 45 f8 mov %eax,-0x8(%ebp) +c0100436: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) + + while (l <= r) { +c010043d: e9 ca 00 00 00 jmp c010050c + int true_m = (l + r) / 2, m = true_m; +c0100442: 8b 55 fc mov -0x4(%ebp),%edx +c0100445: 8b 45 f8 mov -0x8(%ebp),%eax +c0100448: 01 d0 add %edx,%eax +c010044a: 89 c2 mov %eax,%edx +c010044c: c1 ea 1f shr $0x1f,%edx +c010044f: 01 d0 add %edx,%eax +c0100451: d1 f8 sar %eax +c0100453: 89 45 ec mov %eax,-0x14(%ebp) +c0100456: 8b 45 ec mov -0x14(%ebp),%eax +c0100459: 89 45 f0 mov %eax,-0x10(%ebp) + + // search for earliest stab with right type + while (m >= l && stabs[m].n_type != type) { +c010045c: eb 03 jmp c0100461 + m --; +c010045e: ff 4d f0 decl -0x10(%ebp) + while (m >= l && stabs[m].n_type != type) { +c0100461: 8b 45 f0 mov -0x10(%ebp),%eax +c0100464: 3b 45 fc cmp -0x4(%ebp),%eax +c0100467: 7c 1f jl c0100488 +c0100469: 8b 55 f0 mov -0x10(%ebp),%edx +c010046c: 89 d0 mov %edx,%eax +c010046e: 01 c0 add %eax,%eax +c0100470: 01 d0 add %edx,%eax +c0100472: c1 e0 02 shl $0x2,%eax +c0100475: 89 c2 mov %eax,%edx +c0100477: 8b 45 08 mov 0x8(%ebp),%eax +c010047a: 01 d0 add %edx,%eax +c010047c: 0f b6 40 04 movzbl 0x4(%eax),%eax +c0100480: 0f b6 c0 movzbl %al,%eax +c0100483: 39 45 14 cmp %eax,0x14(%ebp) +c0100486: 75 d6 jne c010045e + } + if (m < l) { // no match in [l, m] +c0100488: 8b 45 f0 mov -0x10(%ebp),%eax +c010048b: 3b 45 fc cmp -0x4(%ebp),%eax +c010048e: 7d 09 jge c0100499 + l = true_m + 1; +c0100490: 8b 45 ec mov -0x14(%ebp),%eax +c0100493: 40 inc %eax +c0100494: 89 45 fc mov %eax,-0x4(%ebp) + continue; +c0100497: eb 73 jmp c010050c + } + + // actual binary search + any_matches = 1; +c0100499: c7 45 f4 01 00 00 00 movl $0x1,-0xc(%ebp) + if (stabs[m].n_value < addr) { +c01004a0: 8b 55 f0 mov -0x10(%ebp),%edx +c01004a3: 89 d0 mov %edx,%eax +c01004a5: 01 c0 add %eax,%eax +c01004a7: 01 d0 add %edx,%eax +c01004a9: c1 e0 02 shl $0x2,%eax +c01004ac: 89 c2 mov %eax,%edx +c01004ae: 8b 45 08 mov 0x8(%ebp),%eax +c01004b1: 01 d0 add %edx,%eax +c01004b3: 8b 40 08 mov 0x8(%eax),%eax +c01004b6: 39 45 18 cmp %eax,0x18(%ebp) +c01004b9: 76 11 jbe c01004cc + *region_left = m; +c01004bb: 8b 45 0c mov 0xc(%ebp),%eax +c01004be: 8b 55 f0 mov -0x10(%ebp),%edx +c01004c1: 89 10 mov %edx,(%eax) + l = true_m + 1; +c01004c3: 8b 45 ec mov -0x14(%ebp),%eax +c01004c6: 40 inc %eax +c01004c7: 89 45 fc mov %eax,-0x4(%ebp) +c01004ca: eb 40 jmp c010050c + } else if (stabs[m].n_value > addr) { +c01004cc: 8b 55 f0 mov -0x10(%ebp),%edx +c01004cf: 89 d0 mov %edx,%eax +c01004d1: 01 c0 add %eax,%eax +c01004d3: 01 d0 add %edx,%eax +c01004d5: c1 e0 02 shl $0x2,%eax +c01004d8: 89 c2 mov %eax,%edx +c01004da: 8b 45 08 mov 0x8(%ebp),%eax +c01004dd: 01 d0 add %edx,%eax +c01004df: 8b 40 08 mov 0x8(%eax),%eax +c01004e2: 39 45 18 cmp %eax,0x18(%ebp) +c01004e5: 73 14 jae c01004fb + *region_right = m - 1; +c01004e7: 8b 45 f0 mov -0x10(%ebp),%eax +c01004ea: 8d 50 ff lea -0x1(%eax),%edx +c01004ed: 8b 45 10 mov 0x10(%ebp),%eax +c01004f0: 89 10 mov %edx,(%eax) + r = m - 1; +c01004f2: 8b 45 f0 mov -0x10(%ebp),%eax +c01004f5: 48 dec %eax +c01004f6: 89 45 f8 mov %eax,-0x8(%ebp) +c01004f9: eb 11 jmp c010050c + } else { + // exact match for 'addr', but continue loop to find + // *region_right + *region_left = m; +c01004fb: 8b 45 0c mov 0xc(%ebp),%eax +c01004fe: 8b 55 f0 mov -0x10(%ebp),%edx +c0100501: 89 10 mov %edx,(%eax) + l = m; +c0100503: 8b 45 f0 mov -0x10(%ebp),%eax +c0100506: 89 45 fc mov %eax,-0x4(%ebp) + addr ++; +c0100509: ff 45 18 incl 0x18(%ebp) + while (l <= r) { +c010050c: 8b 45 fc mov -0x4(%ebp),%eax +c010050f: 3b 45 f8 cmp -0x8(%ebp),%eax +c0100512: 0f 8e 2a ff ff ff jle c0100442 + } + } + + if (!any_matches) { +c0100518: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) +c010051c: 75 0f jne c010052d + *region_right = *region_left - 1; +c010051e: 8b 45 0c mov 0xc(%ebp),%eax +c0100521: 8b 00 mov (%eax),%eax +c0100523: 8d 50 ff lea -0x1(%eax),%edx +c0100526: 8b 45 10 mov 0x10(%ebp),%eax +c0100529: 89 10 mov %edx,(%eax) + l = *region_right; + for (; l > *region_left && stabs[l].n_type != type; l --) + /* do nothing */; + *region_left = l; + } +} +c010052b: eb 3e jmp c010056b + l = *region_right; +c010052d: 8b 45 10 mov 0x10(%ebp),%eax +c0100530: 8b 00 mov (%eax),%eax +c0100532: 89 45 fc mov %eax,-0x4(%ebp) + for (; l > *region_left && stabs[l].n_type != type; l --) +c0100535: eb 03 jmp c010053a +c0100537: ff 4d fc decl -0x4(%ebp) +c010053a: 8b 45 0c mov 0xc(%ebp),%eax +c010053d: 8b 00 mov (%eax),%eax +c010053f: 39 45 fc cmp %eax,-0x4(%ebp) +c0100542: 7e 1f jle c0100563 +c0100544: 8b 55 fc mov -0x4(%ebp),%edx +c0100547: 89 d0 mov %edx,%eax +c0100549: 01 c0 add %eax,%eax +c010054b: 01 d0 add %edx,%eax +c010054d: c1 e0 02 shl $0x2,%eax +c0100550: 89 c2 mov %eax,%edx +c0100552: 8b 45 08 mov 0x8(%ebp),%eax +c0100555: 01 d0 add %edx,%eax +c0100557: 0f b6 40 04 movzbl 0x4(%eax),%eax +c010055b: 0f b6 c0 movzbl %al,%eax +c010055e: 39 45 14 cmp %eax,0x14(%ebp) +c0100561: 75 d4 jne c0100537 + *region_left = l; +c0100563: 8b 45 0c mov 0xc(%ebp),%eax +c0100566: 8b 55 fc mov -0x4(%ebp),%edx +c0100569: 89 10 mov %edx,(%eax) +} +c010056b: 90 nop +c010056c: 89 ec mov %ebp,%esp +c010056e: 5d pop %ebp +c010056f: c3 ret + +c0100570 : + * the specified instruction address, @addr. Returns 0 if information + * was found, and negative if not. But even if it returns negative it + * has stored some information into '*info'. + * */ +int +debuginfo_eip(uintptr_t addr, struct eipdebuginfo *info) { +c0100570: 55 push %ebp +c0100571: 89 e5 mov %esp,%ebp +c0100573: 83 ec 58 sub $0x58,%esp + const struct stab *stabs, *stab_end; + const char *stabstr, *stabstr_end; + + info->eip_file = ""; +c0100576: 8b 45 0c mov 0xc(%ebp),%eax +c0100579: c7 00 0c 8e 10 c0 movl $0xc0108e0c,(%eax) + info->eip_line = 0; +c010057f: 8b 45 0c mov 0xc(%ebp),%eax +c0100582: c7 40 04 00 00 00 00 movl $0x0,0x4(%eax) + info->eip_fn_name = ""; +c0100589: 8b 45 0c mov 0xc(%ebp),%eax +c010058c: c7 40 08 0c 8e 10 c0 movl $0xc0108e0c,0x8(%eax) + info->eip_fn_namelen = 9; +c0100593: 8b 45 0c mov 0xc(%ebp),%eax +c0100596: c7 40 0c 09 00 00 00 movl $0x9,0xc(%eax) + info->eip_fn_addr = addr; +c010059d: 8b 45 0c mov 0xc(%ebp),%eax +c01005a0: 8b 55 08 mov 0x8(%ebp),%edx +c01005a3: 89 50 10 mov %edx,0x10(%eax) + info->eip_fn_narg = 0; +c01005a6: 8b 45 0c mov 0xc(%ebp),%eax +c01005a9: c7 40 14 00 00 00 00 movl $0x0,0x14(%eax) + + stabs = __STAB_BEGIN__; +c01005b0: c7 45 f4 ac ad 10 c0 movl $0xc010adac,-0xc(%ebp) + stab_end = __STAB_END__; +c01005b7: c7 45 f0 74 ae 11 c0 movl $0xc011ae74,-0x10(%ebp) + stabstr = __STABSTR_BEGIN__; +c01005be: c7 45 ec 75 ae 11 c0 movl $0xc011ae75,-0x14(%ebp) + stabstr_end = __STABSTR_END__; +c01005c5: c7 45 e8 ed fc 11 c0 movl $0xc011fced,-0x18(%ebp) + + // String table validity checks + if (stabstr_end <= stabstr || stabstr_end[-1] != 0) { +c01005cc: 8b 45 e8 mov -0x18(%ebp),%eax +c01005cf: 3b 45 ec cmp -0x14(%ebp),%eax +c01005d2: 76 0b jbe c01005df +c01005d4: 8b 45 e8 mov -0x18(%ebp),%eax +c01005d7: 48 dec %eax +c01005d8: 0f b6 00 movzbl (%eax),%eax +c01005db: 84 c0 test %al,%al +c01005dd: 74 0a je c01005e9 + return -1; +c01005df: b8 ff ff ff ff mov $0xffffffff,%eax +c01005e4: e9 ab 02 00 00 jmp c0100894 + // 'eip'. First, we find the basic source file containing 'eip'. + // Then, we look in that source file for the function. Then we look + // for the line number. + + // Search the entire set of stabs for the source file (type N_SO). + int lfile = 0, rfile = (stab_end - stabs) - 1; +c01005e9: c7 45 e4 00 00 00 00 movl $0x0,-0x1c(%ebp) +c01005f0: 8b 45 f0 mov -0x10(%ebp),%eax +c01005f3: 2b 45 f4 sub -0xc(%ebp),%eax +c01005f6: c1 f8 02 sar $0x2,%eax +c01005f9: 69 c0 ab aa aa aa imul $0xaaaaaaab,%eax,%eax +c01005ff: 48 dec %eax +c0100600: 89 45 e0 mov %eax,-0x20(%ebp) + stab_binsearch(stabs, &lfile, &rfile, N_SO, addr); +c0100603: 8b 45 08 mov 0x8(%ebp),%eax +c0100606: 89 44 24 10 mov %eax,0x10(%esp) +c010060a: c7 44 24 0c 64 00 00 movl $0x64,0xc(%esp) +c0100611: 00 +c0100612: 8d 45 e0 lea -0x20(%ebp),%eax +c0100615: 89 44 24 08 mov %eax,0x8(%esp) +c0100619: 8d 45 e4 lea -0x1c(%ebp),%eax +c010061c: 89 44 24 04 mov %eax,0x4(%esp) +c0100620: 8b 45 f4 mov -0xc(%ebp),%eax +c0100623: 89 04 24 mov %eax,(%esp) +c0100626: e8 f5 fd ff ff call c0100420 + if (lfile == 0) +c010062b: 8b 45 e4 mov -0x1c(%ebp),%eax +c010062e: 85 c0 test %eax,%eax +c0100630: 75 0a jne c010063c + return -1; +c0100632: b8 ff ff ff ff mov $0xffffffff,%eax +c0100637: e9 58 02 00 00 jmp c0100894 + + // Search within that file's stabs for the function definition + // (N_FUN). + int lfun = lfile, rfun = rfile; +c010063c: 8b 45 e4 mov -0x1c(%ebp),%eax +c010063f: 89 45 dc mov %eax,-0x24(%ebp) +c0100642: 8b 45 e0 mov -0x20(%ebp),%eax +c0100645: 89 45 d8 mov %eax,-0x28(%ebp) + int lline, rline; + stab_binsearch(stabs, &lfun, &rfun, N_FUN, addr); +c0100648: 8b 45 08 mov 0x8(%ebp),%eax +c010064b: 89 44 24 10 mov %eax,0x10(%esp) +c010064f: c7 44 24 0c 24 00 00 movl $0x24,0xc(%esp) +c0100656: 00 +c0100657: 8d 45 d8 lea -0x28(%ebp),%eax +c010065a: 89 44 24 08 mov %eax,0x8(%esp) +c010065e: 8d 45 dc lea -0x24(%ebp),%eax +c0100661: 89 44 24 04 mov %eax,0x4(%esp) +c0100665: 8b 45 f4 mov -0xc(%ebp),%eax +c0100668: 89 04 24 mov %eax,(%esp) +c010066b: e8 b0 fd ff ff call c0100420 + + if (lfun <= rfun) { +c0100670: 8b 55 dc mov -0x24(%ebp),%edx +c0100673: 8b 45 d8 mov -0x28(%ebp),%eax +c0100676: 39 c2 cmp %eax,%edx +c0100678: 7f 78 jg c01006f2 + // stabs[lfun] points to the function name + // in the string table, but check bounds just in case. + if (stabs[lfun].n_strx < stabstr_end - stabstr) { +c010067a: 8b 45 dc mov -0x24(%ebp),%eax +c010067d: 89 c2 mov %eax,%edx +c010067f: 89 d0 mov %edx,%eax +c0100681: 01 c0 add %eax,%eax +c0100683: 01 d0 add %edx,%eax +c0100685: c1 e0 02 shl $0x2,%eax +c0100688: 89 c2 mov %eax,%edx +c010068a: 8b 45 f4 mov -0xc(%ebp),%eax +c010068d: 01 d0 add %edx,%eax +c010068f: 8b 10 mov (%eax),%edx +c0100691: 8b 45 e8 mov -0x18(%ebp),%eax +c0100694: 2b 45 ec sub -0x14(%ebp),%eax +c0100697: 39 c2 cmp %eax,%edx +c0100699: 73 22 jae c01006bd + info->eip_fn_name = stabstr + stabs[lfun].n_strx; +c010069b: 8b 45 dc mov -0x24(%ebp),%eax +c010069e: 89 c2 mov %eax,%edx +c01006a0: 89 d0 mov %edx,%eax +c01006a2: 01 c0 add %eax,%eax +c01006a4: 01 d0 add %edx,%eax +c01006a6: c1 e0 02 shl $0x2,%eax +c01006a9: 89 c2 mov %eax,%edx +c01006ab: 8b 45 f4 mov -0xc(%ebp),%eax +c01006ae: 01 d0 add %edx,%eax +c01006b0: 8b 10 mov (%eax),%edx +c01006b2: 8b 45 ec mov -0x14(%ebp),%eax +c01006b5: 01 c2 add %eax,%edx +c01006b7: 8b 45 0c mov 0xc(%ebp),%eax +c01006ba: 89 50 08 mov %edx,0x8(%eax) + } + info->eip_fn_addr = stabs[lfun].n_value; +c01006bd: 8b 45 dc mov -0x24(%ebp),%eax +c01006c0: 89 c2 mov %eax,%edx +c01006c2: 89 d0 mov %edx,%eax +c01006c4: 01 c0 add %eax,%eax +c01006c6: 01 d0 add %edx,%eax +c01006c8: c1 e0 02 shl $0x2,%eax +c01006cb: 89 c2 mov %eax,%edx +c01006cd: 8b 45 f4 mov -0xc(%ebp),%eax +c01006d0: 01 d0 add %edx,%eax +c01006d2: 8b 50 08 mov 0x8(%eax),%edx +c01006d5: 8b 45 0c mov 0xc(%ebp),%eax +c01006d8: 89 50 10 mov %edx,0x10(%eax) + addr -= info->eip_fn_addr; +c01006db: 8b 45 0c mov 0xc(%ebp),%eax +c01006de: 8b 40 10 mov 0x10(%eax),%eax +c01006e1: 29 45 08 sub %eax,0x8(%ebp) + // Search within the function definition for the line number. + lline = lfun; +c01006e4: 8b 45 dc mov -0x24(%ebp),%eax +c01006e7: 89 45 d4 mov %eax,-0x2c(%ebp) + rline = rfun; +c01006ea: 8b 45 d8 mov -0x28(%ebp),%eax +c01006ed: 89 45 d0 mov %eax,-0x30(%ebp) +c01006f0: eb 15 jmp c0100707 + } else { + // Couldn't find function stab! Maybe we're in an assembly + // file. Search the whole file for the line number. + info->eip_fn_addr = addr; +c01006f2: 8b 45 0c mov 0xc(%ebp),%eax +c01006f5: 8b 55 08 mov 0x8(%ebp),%edx +c01006f8: 89 50 10 mov %edx,0x10(%eax) + lline = lfile; +c01006fb: 8b 45 e4 mov -0x1c(%ebp),%eax +c01006fe: 89 45 d4 mov %eax,-0x2c(%ebp) + rline = rfile; +c0100701: 8b 45 e0 mov -0x20(%ebp),%eax +c0100704: 89 45 d0 mov %eax,-0x30(%ebp) + } + info->eip_fn_namelen = strfind(info->eip_fn_name, ':') - info->eip_fn_name; +c0100707: 8b 45 0c mov 0xc(%ebp),%eax +c010070a: 8b 40 08 mov 0x8(%eax),%eax +c010070d: c7 44 24 04 3a 00 00 movl $0x3a,0x4(%esp) +c0100714: 00 +c0100715: 89 04 24 mov %eax,(%esp) +c0100718: e8 29 83 00 00 call c0108a46 +c010071d: 8b 55 0c mov 0xc(%ebp),%edx +c0100720: 8b 4a 08 mov 0x8(%edx),%ecx +c0100723: 29 c8 sub %ecx,%eax +c0100725: 89 c2 mov %eax,%edx +c0100727: 8b 45 0c mov 0xc(%ebp),%eax +c010072a: 89 50 0c mov %edx,0xc(%eax) + + // Search within [lline, rline] for the line number stab. + // If found, set info->eip_line to the right line number. + // If not found, return -1. + stab_binsearch(stabs, &lline, &rline, N_SLINE, addr); +c010072d: 8b 45 08 mov 0x8(%ebp),%eax +c0100730: 89 44 24 10 mov %eax,0x10(%esp) +c0100734: c7 44 24 0c 44 00 00 movl $0x44,0xc(%esp) +c010073b: 00 +c010073c: 8d 45 d0 lea -0x30(%ebp),%eax +c010073f: 89 44 24 08 mov %eax,0x8(%esp) +c0100743: 8d 45 d4 lea -0x2c(%ebp),%eax +c0100746: 89 44 24 04 mov %eax,0x4(%esp) +c010074a: 8b 45 f4 mov -0xc(%ebp),%eax +c010074d: 89 04 24 mov %eax,(%esp) +c0100750: e8 cb fc ff ff call c0100420 + if (lline <= rline) { +c0100755: 8b 55 d4 mov -0x2c(%ebp),%edx +c0100758: 8b 45 d0 mov -0x30(%ebp),%eax +c010075b: 39 c2 cmp %eax,%edx +c010075d: 7f 23 jg c0100782 + info->eip_line = stabs[rline].n_desc; +c010075f: 8b 45 d0 mov -0x30(%ebp),%eax +c0100762: 89 c2 mov %eax,%edx +c0100764: 89 d0 mov %edx,%eax +c0100766: 01 c0 add %eax,%eax +c0100768: 01 d0 add %edx,%eax +c010076a: c1 e0 02 shl $0x2,%eax +c010076d: 89 c2 mov %eax,%edx +c010076f: 8b 45 f4 mov -0xc(%ebp),%eax +c0100772: 01 d0 add %edx,%eax +c0100774: 0f b7 40 06 movzwl 0x6(%eax),%eax +c0100778: 89 c2 mov %eax,%edx +c010077a: 8b 45 0c mov 0xc(%ebp),%eax +c010077d: 89 50 04 mov %edx,0x4(%eax) + + // Search backwards from the line number for the relevant filename stab. + // We can't just use the "lfile" stab because inlined functions + // can interpolate code from a different file! + // Such included source files use the N_SOL stab type. + while (lline >= lfile +c0100780: eb 11 jmp c0100793 + return -1; +c0100782: b8 ff ff ff ff mov $0xffffffff,%eax +c0100787: e9 08 01 00 00 jmp c0100894 + && stabs[lline].n_type != N_SOL + && (stabs[lline].n_type != N_SO || !stabs[lline].n_value)) { + lline --; +c010078c: 8b 45 d4 mov -0x2c(%ebp),%eax +c010078f: 48 dec %eax +c0100790: 89 45 d4 mov %eax,-0x2c(%ebp) + while (lline >= lfile +c0100793: 8b 55 d4 mov -0x2c(%ebp),%edx +c0100796: 8b 45 e4 mov -0x1c(%ebp),%eax + && (stabs[lline].n_type != N_SO || !stabs[lline].n_value)) { +c0100799: 39 c2 cmp %eax,%edx +c010079b: 7c 56 jl c01007f3 + && stabs[lline].n_type != N_SOL +c010079d: 8b 45 d4 mov -0x2c(%ebp),%eax +c01007a0: 89 c2 mov %eax,%edx +c01007a2: 89 d0 mov %edx,%eax +c01007a4: 01 c0 add %eax,%eax +c01007a6: 01 d0 add %edx,%eax +c01007a8: c1 e0 02 shl $0x2,%eax +c01007ab: 89 c2 mov %eax,%edx +c01007ad: 8b 45 f4 mov -0xc(%ebp),%eax +c01007b0: 01 d0 add %edx,%eax +c01007b2: 0f b6 40 04 movzbl 0x4(%eax),%eax +c01007b6: 3c 84 cmp $0x84,%al +c01007b8: 74 39 je c01007f3 + && (stabs[lline].n_type != N_SO || !stabs[lline].n_value)) { +c01007ba: 8b 45 d4 mov -0x2c(%ebp),%eax +c01007bd: 89 c2 mov %eax,%edx +c01007bf: 89 d0 mov %edx,%eax +c01007c1: 01 c0 add %eax,%eax +c01007c3: 01 d0 add %edx,%eax +c01007c5: c1 e0 02 shl $0x2,%eax +c01007c8: 89 c2 mov %eax,%edx +c01007ca: 8b 45 f4 mov -0xc(%ebp),%eax +c01007cd: 01 d0 add %edx,%eax +c01007cf: 0f b6 40 04 movzbl 0x4(%eax),%eax +c01007d3: 3c 64 cmp $0x64,%al +c01007d5: 75 b5 jne c010078c +c01007d7: 8b 45 d4 mov -0x2c(%ebp),%eax +c01007da: 89 c2 mov %eax,%edx +c01007dc: 89 d0 mov %edx,%eax +c01007de: 01 c0 add %eax,%eax +c01007e0: 01 d0 add %edx,%eax +c01007e2: c1 e0 02 shl $0x2,%eax +c01007e5: 89 c2 mov %eax,%edx +c01007e7: 8b 45 f4 mov -0xc(%ebp),%eax +c01007ea: 01 d0 add %edx,%eax +c01007ec: 8b 40 08 mov 0x8(%eax),%eax +c01007ef: 85 c0 test %eax,%eax +c01007f1: 74 99 je c010078c + } + if (lline >= lfile && stabs[lline].n_strx < stabstr_end - stabstr) { +c01007f3: 8b 55 d4 mov -0x2c(%ebp),%edx +c01007f6: 8b 45 e4 mov -0x1c(%ebp),%eax +c01007f9: 39 c2 cmp %eax,%edx +c01007fb: 7c 42 jl c010083f +c01007fd: 8b 45 d4 mov -0x2c(%ebp),%eax +c0100800: 89 c2 mov %eax,%edx +c0100802: 89 d0 mov %edx,%eax +c0100804: 01 c0 add %eax,%eax +c0100806: 01 d0 add %edx,%eax +c0100808: c1 e0 02 shl $0x2,%eax +c010080b: 89 c2 mov %eax,%edx +c010080d: 8b 45 f4 mov -0xc(%ebp),%eax +c0100810: 01 d0 add %edx,%eax +c0100812: 8b 10 mov (%eax),%edx +c0100814: 8b 45 e8 mov -0x18(%ebp),%eax +c0100817: 2b 45 ec sub -0x14(%ebp),%eax +c010081a: 39 c2 cmp %eax,%edx +c010081c: 73 21 jae c010083f + info->eip_file = stabstr + stabs[lline].n_strx; +c010081e: 8b 45 d4 mov -0x2c(%ebp),%eax +c0100821: 89 c2 mov %eax,%edx +c0100823: 89 d0 mov %edx,%eax +c0100825: 01 c0 add %eax,%eax +c0100827: 01 d0 add %edx,%eax +c0100829: c1 e0 02 shl $0x2,%eax +c010082c: 89 c2 mov %eax,%edx +c010082e: 8b 45 f4 mov -0xc(%ebp),%eax +c0100831: 01 d0 add %edx,%eax +c0100833: 8b 10 mov (%eax),%edx +c0100835: 8b 45 ec mov -0x14(%ebp),%eax +c0100838: 01 c2 add %eax,%edx +c010083a: 8b 45 0c mov 0xc(%ebp),%eax +c010083d: 89 10 mov %edx,(%eax) + } + + // Set eip_fn_narg to the number of arguments taken by the function, + // or 0 if there was no containing function. + if (lfun < rfun) { +c010083f: 8b 55 dc mov -0x24(%ebp),%edx +c0100842: 8b 45 d8 mov -0x28(%ebp),%eax +c0100845: 39 c2 cmp %eax,%edx +c0100847: 7d 46 jge c010088f + for (lline = lfun + 1; +c0100849: 8b 45 dc mov -0x24(%ebp),%eax +c010084c: 40 inc %eax +c010084d: 89 45 d4 mov %eax,-0x2c(%ebp) +c0100850: eb 16 jmp c0100868 + lline < rfun && stabs[lline].n_type == N_PSYM; + lline ++) { + info->eip_fn_narg ++; +c0100852: 8b 45 0c mov 0xc(%ebp),%eax +c0100855: 8b 40 14 mov 0x14(%eax),%eax +c0100858: 8d 50 01 lea 0x1(%eax),%edx +c010085b: 8b 45 0c mov 0xc(%ebp),%eax +c010085e: 89 50 14 mov %edx,0x14(%eax) + lline ++) { +c0100861: 8b 45 d4 mov -0x2c(%ebp),%eax +c0100864: 40 inc %eax +c0100865: 89 45 d4 mov %eax,-0x2c(%ebp) + lline < rfun && stabs[lline].n_type == N_PSYM; +c0100868: 8b 55 d4 mov -0x2c(%ebp),%edx +c010086b: 8b 45 d8 mov -0x28(%ebp),%eax +c010086e: 39 c2 cmp %eax,%edx +c0100870: 7d 1d jge c010088f +c0100872: 8b 45 d4 mov -0x2c(%ebp),%eax +c0100875: 89 c2 mov %eax,%edx +c0100877: 89 d0 mov %edx,%eax +c0100879: 01 c0 add %eax,%eax +c010087b: 01 d0 add %edx,%eax +c010087d: c1 e0 02 shl $0x2,%eax +c0100880: 89 c2 mov %eax,%edx +c0100882: 8b 45 f4 mov -0xc(%ebp),%eax +c0100885: 01 d0 add %edx,%eax +c0100887: 0f b6 40 04 movzbl 0x4(%eax),%eax +c010088b: 3c a0 cmp $0xa0,%al +c010088d: 74 c3 je c0100852 + } + } + return 0; +c010088f: b8 00 00 00 00 mov $0x0,%eax +} +c0100894: 89 ec mov %ebp,%esp +c0100896: 5d pop %ebp +c0100897: c3 ret + +c0100898 : + * print_kerninfo - print the information about kernel, including the location + * of kernel entry, the start addresses of data and text segements, the start + * address of free memory and how many memory that kernel has used. + * */ +void +print_kerninfo(void) { +c0100898: 55 push %ebp +c0100899: 89 e5 mov %esp,%ebp +c010089b: 83 ec 18 sub $0x18,%esp + extern char etext[], edata[], end[], kern_init[]; + cprintf("Special kernel symbols:\n"); +c010089e: c7 04 24 16 8e 10 c0 movl $0xc0108e16,(%esp) +c01008a5: e8 cb fa ff ff call c0100375 + cprintf(" entry 0x%08x (phys)\n", kern_init); +c01008aa: c7 44 24 04 36 00 10 movl $0xc0100036,0x4(%esp) +c01008b1: c0 +c01008b2: c7 04 24 2f 8e 10 c0 movl $0xc0108e2f,(%esp) +c01008b9: e8 b7 fa ff ff call c0100375 + cprintf(" etext 0x%08x (phys)\n", etext); +c01008be: c7 44 24 04 5a 8d 10 movl $0xc0108d5a,0x4(%esp) +c01008c5: c0 +c01008c6: c7 04 24 47 8e 10 c0 movl $0xc0108e47,(%esp) +c01008cd: e8 a3 fa ff ff call c0100375 + cprintf(" edata 0x%08x (phys)\n", edata); +c01008d2: c7 44 24 04 00 50 12 movl $0xc0125000,0x4(%esp) +c01008d9: c0 +c01008da: c7 04 24 5f 8e 10 c0 movl $0xc0108e5f,(%esp) +c01008e1: e8 8f fa ff ff call c0100375 + cprintf(" end 0x%08x (phys)\n", end); +c01008e6: c7 44 24 04 74 61 12 movl $0xc0126174,0x4(%esp) +c01008ed: c0 +c01008ee: c7 04 24 77 8e 10 c0 movl $0xc0108e77,(%esp) +c01008f5: e8 7b fa ff ff call c0100375 + cprintf("Kernel executable memory footprint: %dKB\n", (end - kern_init + 1023)/1024); +c01008fa: b8 74 61 12 c0 mov $0xc0126174,%eax +c01008ff: 2d 36 00 10 c0 sub $0xc0100036,%eax +c0100904: 05 ff 03 00 00 add $0x3ff,%eax +c0100909: 8d 90 ff 03 00 00 lea 0x3ff(%eax),%edx +c010090f: 85 c0 test %eax,%eax +c0100911: 0f 48 c2 cmovs %edx,%eax +c0100914: c1 f8 0a sar $0xa,%eax +c0100917: 89 44 24 04 mov %eax,0x4(%esp) +c010091b: c7 04 24 90 8e 10 c0 movl $0xc0108e90,(%esp) +c0100922: e8 4e fa ff ff call c0100375 +} +c0100927: 90 nop +c0100928: 89 ec mov %ebp,%esp +c010092a: 5d pop %ebp +c010092b: c3 ret + +c010092c : +/* * + * print_debuginfo - read and print the stat information for the address @eip, + * and info.eip_fn_addr should be the first address of the related function. + * */ +void +print_debuginfo(uintptr_t eip) { +c010092c: 55 push %ebp +c010092d: 89 e5 mov %esp,%ebp +c010092f: 81 ec 48 01 00 00 sub $0x148,%esp + struct eipdebuginfo info; + if (debuginfo_eip(eip, &info) != 0) { +c0100935: 8d 45 dc lea -0x24(%ebp),%eax +c0100938: 89 44 24 04 mov %eax,0x4(%esp) +c010093c: 8b 45 08 mov 0x8(%ebp),%eax +c010093f: 89 04 24 mov %eax,(%esp) +c0100942: e8 29 fc ff ff call c0100570 +c0100947: 85 c0 test %eax,%eax +c0100949: 74 15 je c0100960 + cprintf(" : -- 0x%08x --\n", eip); +c010094b: 8b 45 08 mov 0x8(%ebp),%eax +c010094e: 89 44 24 04 mov %eax,0x4(%esp) +c0100952: c7 04 24 ba 8e 10 c0 movl $0xc0108eba,(%esp) +c0100959: e8 17 fa ff ff call c0100375 + } + fnname[j] = '\0'; + cprintf(" %s:%d: %s+%d\n", info.eip_file, info.eip_line, + fnname, eip - info.eip_fn_addr); + } +} +c010095e: eb 6c jmp c01009cc + for (j = 0; j < info.eip_fn_namelen; j ++) { +c0100960: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) +c0100967: eb 1b jmp c0100984 + fnname[j] = info.eip_fn_name[j]; +c0100969: 8b 55 e4 mov -0x1c(%ebp),%edx +c010096c: 8b 45 f4 mov -0xc(%ebp),%eax +c010096f: 01 d0 add %edx,%eax +c0100971: 0f b6 10 movzbl (%eax),%edx +c0100974: 8d 8d dc fe ff ff lea -0x124(%ebp),%ecx +c010097a: 8b 45 f4 mov -0xc(%ebp),%eax +c010097d: 01 c8 add %ecx,%eax +c010097f: 88 10 mov %dl,(%eax) + for (j = 0; j < info.eip_fn_namelen; j ++) { +c0100981: ff 45 f4 incl -0xc(%ebp) +c0100984: 8b 45 e8 mov -0x18(%ebp),%eax +c0100987: 39 45 f4 cmp %eax,-0xc(%ebp) +c010098a: 7c dd jl c0100969 + fnname[j] = '\0'; +c010098c: 8d 95 dc fe ff ff lea -0x124(%ebp),%edx +c0100992: 8b 45 f4 mov -0xc(%ebp),%eax +c0100995: 01 d0 add %edx,%eax +c0100997: c6 00 00 movb $0x0,(%eax) + fnname, eip - info.eip_fn_addr); +c010099a: 8b 55 ec mov -0x14(%ebp),%edx + cprintf(" %s:%d: %s+%d\n", info.eip_file, info.eip_line, +c010099d: 8b 45 08 mov 0x8(%ebp),%eax +c01009a0: 29 d0 sub %edx,%eax +c01009a2: 89 c1 mov %eax,%ecx +c01009a4: 8b 55 e0 mov -0x20(%ebp),%edx +c01009a7: 8b 45 dc mov -0x24(%ebp),%eax +c01009aa: 89 4c 24 10 mov %ecx,0x10(%esp) +c01009ae: 8d 8d dc fe ff ff lea -0x124(%ebp),%ecx +c01009b4: 89 4c 24 0c mov %ecx,0xc(%esp) +c01009b8: 89 54 24 08 mov %edx,0x8(%esp) +c01009bc: 89 44 24 04 mov %eax,0x4(%esp) +c01009c0: c7 04 24 d6 8e 10 c0 movl $0xc0108ed6,(%esp) +c01009c7: e8 a9 f9 ff ff call c0100375 +} +c01009cc: 90 nop +c01009cd: 89 ec mov %ebp,%esp +c01009cf: 5d pop %ebp +c01009d0: c3 ret + +c01009d1 : + +static __noinline uint32_t +read_eip(void) { +c01009d1: 55 push %ebp +c01009d2: 89 e5 mov %esp,%ebp +c01009d4: 83 ec 10 sub $0x10,%esp + uint32_t eip; + asm volatile("movl 4(%%ebp), %0" : "=r" (eip)); +c01009d7: 8b 45 04 mov 0x4(%ebp),%eax +c01009da: 89 45 fc mov %eax,-0x4(%ebp) + return eip; +c01009dd: 8b 45 fc mov -0x4(%ebp),%eax +} +c01009e0: 89 ec mov %ebp,%esp +c01009e2: 5d pop %ebp +c01009e3: c3 ret + +c01009e4 : + * + * Note that, the length of ebp-chain is limited. In boot/bootasm.S, before jumping + * to the kernel entry, the value of ebp has been set to zero, that's the boundary. + * */ +void +print_stackframe(void) { +c01009e4: 55 push %ebp +c01009e5: 89 e5 mov %esp,%ebp + * (3.4) call print_debuginfo(eip-1) to print the C calling function name and line number, etc. + * (3.5) popup a calling stackframe + * NOTICE: the calling funciton's return addr eip = ss:[ebp+4] + * the calling funciton's ebp = ss:[ebp] + */ +} +c01009e7: 90 nop +c01009e8: 5d pop %ebp +c01009e9: c3 ret + +c01009ea : +#define MAXARGS 16 +#define WHITESPACE " \t\n\r" + +/* parse - parse the command buffer into whitespace-separated arguments */ +static int +parse(char *buf, char **argv) { +c01009ea: 55 push %ebp +c01009eb: 89 e5 mov %esp,%ebp +c01009ed: 83 ec 28 sub $0x28,%esp + int argc = 0; +c01009f0: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) + while (1) { + // find global whitespace + while (*buf != '\0' && strchr(WHITESPACE, *buf) != NULL) { +c01009f7: eb 0c jmp c0100a05 + *buf ++ = '\0'; +c01009f9: 8b 45 08 mov 0x8(%ebp),%eax +c01009fc: 8d 50 01 lea 0x1(%eax),%edx +c01009ff: 89 55 08 mov %edx,0x8(%ebp) +c0100a02: c6 00 00 movb $0x0,(%eax) + while (*buf != '\0' && strchr(WHITESPACE, *buf) != NULL) { +c0100a05: 8b 45 08 mov 0x8(%ebp),%eax +c0100a08: 0f b6 00 movzbl (%eax),%eax +c0100a0b: 84 c0 test %al,%al +c0100a0d: 74 1d je c0100a2c +c0100a0f: 8b 45 08 mov 0x8(%ebp),%eax +c0100a12: 0f b6 00 movzbl (%eax),%eax +c0100a15: 0f be c0 movsbl %al,%eax +c0100a18: 89 44 24 04 mov %eax,0x4(%esp) +c0100a1c: c7 04 24 68 8f 10 c0 movl $0xc0108f68,(%esp) +c0100a23: e8 ea 7f 00 00 call c0108a12 +c0100a28: 85 c0 test %eax,%eax +c0100a2a: 75 cd jne c01009f9 + } + if (*buf == '\0') { +c0100a2c: 8b 45 08 mov 0x8(%ebp),%eax +c0100a2f: 0f b6 00 movzbl (%eax),%eax +c0100a32: 84 c0 test %al,%al +c0100a34: 74 65 je c0100a9b + break; + } + + // save and scan past next arg + if (argc == MAXARGS - 1) { +c0100a36: 83 7d f4 0f cmpl $0xf,-0xc(%ebp) +c0100a3a: 75 14 jne c0100a50 + cprintf("Too many arguments (max %d).\n", MAXARGS); +c0100a3c: c7 44 24 04 10 00 00 movl $0x10,0x4(%esp) +c0100a43: 00 +c0100a44: c7 04 24 6d 8f 10 c0 movl $0xc0108f6d,(%esp) +c0100a4b: e8 25 f9 ff ff call c0100375 + } + argv[argc ++] = buf; +c0100a50: 8b 45 f4 mov -0xc(%ebp),%eax +c0100a53: 8d 50 01 lea 0x1(%eax),%edx +c0100a56: 89 55 f4 mov %edx,-0xc(%ebp) +c0100a59: 8d 14 85 00 00 00 00 lea 0x0(,%eax,4),%edx +c0100a60: 8b 45 0c mov 0xc(%ebp),%eax +c0100a63: 01 c2 add %eax,%edx +c0100a65: 8b 45 08 mov 0x8(%ebp),%eax +c0100a68: 89 02 mov %eax,(%edx) + while (*buf != '\0' && strchr(WHITESPACE, *buf) == NULL) { +c0100a6a: eb 03 jmp c0100a6f + buf ++; +c0100a6c: ff 45 08 incl 0x8(%ebp) + while (*buf != '\0' && strchr(WHITESPACE, *buf) == NULL) { +c0100a6f: 8b 45 08 mov 0x8(%ebp),%eax +c0100a72: 0f b6 00 movzbl (%eax),%eax +c0100a75: 84 c0 test %al,%al +c0100a77: 74 8c je c0100a05 +c0100a79: 8b 45 08 mov 0x8(%ebp),%eax +c0100a7c: 0f b6 00 movzbl (%eax),%eax +c0100a7f: 0f be c0 movsbl %al,%eax +c0100a82: 89 44 24 04 mov %eax,0x4(%esp) +c0100a86: c7 04 24 68 8f 10 c0 movl $0xc0108f68,(%esp) +c0100a8d: e8 80 7f 00 00 call c0108a12 +c0100a92: 85 c0 test %eax,%eax +c0100a94: 74 d6 je c0100a6c + while (*buf != '\0' && strchr(WHITESPACE, *buf) != NULL) { +c0100a96: e9 6a ff ff ff jmp c0100a05 + break; +c0100a9b: 90 nop + } + } + return argc; +c0100a9c: 8b 45 f4 mov -0xc(%ebp),%eax +} +c0100a9f: 89 ec mov %ebp,%esp +c0100aa1: 5d pop %ebp +c0100aa2: c3 ret + +c0100aa3 : +/* * + * runcmd - parse the input string, split it into separated arguments + * and then lookup and invoke some related commands/ + * */ +static int +runcmd(char *buf, struct trapframe *tf) { +c0100aa3: 55 push %ebp +c0100aa4: 89 e5 mov %esp,%ebp +c0100aa6: 83 ec 68 sub $0x68,%esp +c0100aa9: 89 5d fc mov %ebx,-0x4(%ebp) + char *argv[MAXARGS]; + int argc = parse(buf, argv); +c0100aac: 8d 45 b0 lea -0x50(%ebp),%eax +c0100aaf: 89 44 24 04 mov %eax,0x4(%esp) +c0100ab3: 8b 45 08 mov 0x8(%ebp),%eax +c0100ab6: 89 04 24 mov %eax,(%esp) +c0100ab9: e8 2c ff ff ff call c01009ea +c0100abe: 89 45 f0 mov %eax,-0x10(%ebp) + if (argc == 0) { +c0100ac1: 83 7d f0 00 cmpl $0x0,-0x10(%ebp) +c0100ac5: 75 0a jne c0100ad1 + return 0; +c0100ac7: b8 00 00 00 00 mov $0x0,%eax +c0100acc: e9 83 00 00 00 jmp c0100b54 + } + int i; + for (i = 0; i < NCOMMANDS; i ++) { +c0100ad1: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) +c0100ad8: eb 5a jmp c0100b34 + if (strcmp(commands[i].name, argv[0]) == 0) { +c0100ada: 8b 55 b0 mov -0x50(%ebp),%edx +c0100add: 8b 4d f4 mov -0xc(%ebp),%ecx +c0100ae0: 89 c8 mov %ecx,%eax +c0100ae2: 01 c0 add %eax,%eax +c0100ae4: 01 c8 add %ecx,%eax +c0100ae6: c1 e0 02 shl $0x2,%eax +c0100ae9: 05 00 20 12 c0 add $0xc0122000,%eax +c0100aee: 8b 00 mov (%eax),%eax +c0100af0: 89 54 24 04 mov %edx,0x4(%esp) +c0100af4: 89 04 24 mov %eax,(%esp) +c0100af7: e8 7a 7e 00 00 call c0108976 +c0100afc: 85 c0 test %eax,%eax +c0100afe: 75 31 jne c0100b31 + return commands[i].func(argc - 1, argv + 1, tf); +c0100b00: 8b 55 f4 mov -0xc(%ebp),%edx +c0100b03: 89 d0 mov %edx,%eax +c0100b05: 01 c0 add %eax,%eax +c0100b07: 01 d0 add %edx,%eax +c0100b09: c1 e0 02 shl $0x2,%eax +c0100b0c: 05 08 20 12 c0 add $0xc0122008,%eax +c0100b11: 8b 10 mov (%eax),%edx +c0100b13: 8d 45 b0 lea -0x50(%ebp),%eax +c0100b16: 83 c0 04 add $0x4,%eax +c0100b19: 8b 4d f0 mov -0x10(%ebp),%ecx +c0100b1c: 8d 59 ff lea -0x1(%ecx),%ebx +c0100b1f: 8b 4d 0c mov 0xc(%ebp),%ecx +c0100b22: 89 4c 24 08 mov %ecx,0x8(%esp) +c0100b26: 89 44 24 04 mov %eax,0x4(%esp) +c0100b2a: 89 1c 24 mov %ebx,(%esp) +c0100b2d: ff d2 call *%edx +c0100b2f: eb 23 jmp c0100b54 + for (i = 0; i < NCOMMANDS; i ++) { +c0100b31: ff 45 f4 incl -0xc(%ebp) +c0100b34: 8b 45 f4 mov -0xc(%ebp),%eax +c0100b37: 83 f8 02 cmp $0x2,%eax +c0100b3a: 76 9e jbe c0100ada + } + } + cprintf("Unknown command '%s'\n", argv[0]); +c0100b3c: 8b 45 b0 mov -0x50(%ebp),%eax +c0100b3f: 89 44 24 04 mov %eax,0x4(%esp) +c0100b43: c7 04 24 8b 8f 10 c0 movl $0xc0108f8b,(%esp) +c0100b4a: e8 26 f8 ff ff call c0100375 + return 0; +c0100b4f: b8 00 00 00 00 mov $0x0,%eax +} +c0100b54: 8b 5d fc mov -0x4(%ebp),%ebx +c0100b57: 89 ec mov %ebp,%esp +c0100b59: 5d pop %ebp +c0100b5a: c3 ret + +c0100b5b : + +/***** Implementations of basic kernel monitor commands *****/ + +void +kmonitor(struct trapframe *tf) { +c0100b5b: 55 push %ebp +c0100b5c: 89 e5 mov %esp,%ebp +c0100b5e: 83 ec 28 sub $0x28,%esp + cprintf("Welcome to the kernel debug monitor!!\n"); +c0100b61: c7 04 24 a4 8f 10 c0 movl $0xc0108fa4,(%esp) +c0100b68: e8 08 f8 ff ff call c0100375 + cprintf("Type 'help' for a list of commands.\n"); +c0100b6d: c7 04 24 cc 8f 10 c0 movl $0xc0108fcc,(%esp) +c0100b74: e8 fc f7 ff ff call c0100375 + + if (tf != NULL) { +c0100b79: 83 7d 08 00 cmpl $0x0,0x8(%ebp) +c0100b7d: 74 0b je c0100b8a + print_trapframe(tf); +c0100b7f: 8b 45 08 mov 0x8(%ebp),%eax +c0100b82: 89 04 24 mov %eax,(%esp) +c0100b85: e8 2c 17 00 00 call c01022b6 + } + + char *buf; + while (1) { + if ((buf = readline("K> ")) != NULL) { +c0100b8a: c7 04 24 f1 8f 10 c0 movl $0xc0108ff1,(%esp) +c0100b91: e8 d0 f6 ff ff call c0100266 +c0100b96: 89 45 f4 mov %eax,-0xc(%ebp) +c0100b99: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) +c0100b9d: 74 eb je c0100b8a + if (runcmd(buf, tf) < 0) { +c0100b9f: 8b 45 08 mov 0x8(%ebp),%eax +c0100ba2: 89 44 24 04 mov %eax,0x4(%esp) +c0100ba6: 8b 45 f4 mov -0xc(%ebp),%eax +c0100ba9: 89 04 24 mov %eax,(%esp) +c0100bac: e8 f2 fe ff ff call c0100aa3 +c0100bb1: 85 c0 test %eax,%eax +c0100bb3: 78 02 js c0100bb7 + if ((buf = readline("K> ")) != NULL) { +c0100bb5: eb d3 jmp c0100b8a + break; +c0100bb7: 90 nop + } + } + } +} +c0100bb8: 90 nop +c0100bb9: 89 ec mov %ebp,%esp +c0100bbb: 5d pop %ebp +c0100bbc: c3 ret + +c0100bbd : + +/* mon_help - print the information about mon_* functions */ +int +mon_help(int argc, char **argv, struct trapframe *tf) { +c0100bbd: 55 push %ebp +c0100bbe: 89 e5 mov %esp,%ebp +c0100bc0: 83 ec 28 sub $0x28,%esp + int i; + for (i = 0; i < NCOMMANDS; i ++) { +c0100bc3: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) +c0100bca: eb 3d jmp c0100c09 + cprintf("%s - %s\n", commands[i].name, commands[i].desc); +c0100bcc: 8b 55 f4 mov -0xc(%ebp),%edx +c0100bcf: 89 d0 mov %edx,%eax +c0100bd1: 01 c0 add %eax,%eax +c0100bd3: 01 d0 add %edx,%eax +c0100bd5: c1 e0 02 shl $0x2,%eax +c0100bd8: 05 04 20 12 c0 add $0xc0122004,%eax +c0100bdd: 8b 10 mov (%eax),%edx +c0100bdf: 8b 4d f4 mov -0xc(%ebp),%ecx +c0100be2: 89 c8 mov %ecx,%eax +c0100be4: 01 c0 add %eax,%eax +c0100be6: 01 c8 add %ecx,%eax +c0100be8: c1 e0 02 shl $0x2,%eax +c0100beb: 05 00 20 12 c0 add $0xc0122000,%eax +c0100bf0: 8b 00 mov (%eax),%eax +c0100bf2: 89 54 24 08 mov %edx,0x8(%esp) +c0100bf6: 89 44 24 04 mov %eax,0x4(%esp) +c0100bfa: c7 04 24 f5 8f 10 c0 movl $0xc0108ff5,(%esp) +c0100c01: e8 6f f7 ff ff call c0100375 + for (i = 0; i < NCOMMANDS; i ++) { +c0100c06: ff 45 f4 incl -0xc(%ebp) +c0100c09: 8b 45 f4 mov -0xc(%ebp),%eax +c0100c0c: 83 f8 02 cmp $0x2,%eax +c0100c0f: 76 bb jbe c0100bcc + } + return 0; +c0100c11: b8 00 00 00 00 mov $0x0,%eax +} +c0100c16: 89 ec mov %ebp,%esp +c0100c18: 5d pop %ebp +c0100c19: c3 ret + +c0100c1a : +/* * + * mon_kerninfo - call print_kerninfo in kern/debug/kdebug.c to + * print the memory occupancy in kernel. + * */ +int +mon_kerninfo(int argc, char **argv, struct trapframe *tf) { +c0100c1a: 55 push %ebp +c0100c1b: 89 e5 mov %esp,%ebp +c0100c1d: 83 ec 08 sub $0x8,%esp + print_kerninfo(); +c0100c20: e8 73 fc ff ff call c0100898 + return 0; +c0100c25: b8 00 00 00 00 mov $0x0,%eax +} +c0100c2a: 89 ec mov %ebp,%esp +c0100c2c: 5d pop %ebp +c0100c2d: c3 ret + +c0100c2e : +/* * + * mon_backtrace - call print_stackframe in kern/debug/kdebug.c to + * print a backtrace of the stack. + * */ +int +mon_backtrace(int argc, char **argv, struct trapframe *tf) { +c0100c2e: 55 push %ebp +c0100c2f: 89 e5 mov %esp,%ebp +c0100c31: 83 ec 08 sub $0x8,%esp + print_stackframe(); +c0100c34: e8 ab fd ff ff call c01009e4 + return 0; +c0100c39: b8 00 00 00 00 mov $0x0,%eax +} +c0100c3e: 89 ec mov %ebp,%esp +c0100c40: 5d pop %ebp +c0100c41: c3 ret + +c0100c42 <__panic>: +/* * + * __panic - __panic is called on unresolvable fatal errors. it prints + * "panic: 'message'", and then enters the kernel monitor. + * */ +void +__panic(const char *file, int line, const char *fmt, ...) { +c0100c42: 55 push %ebp +c0100c43: 89 e5 mov %esp,%ebp +c0100c45: 83 ec 28 sub $0x28,%esp + if (is_panic) { +c0100c48: a1 20 54 12 c0 mov 0xc0125420,%eax +c0100c4d: 85 c0 test %eax,%eax +c0100c4f: 75 5b jne c0100cac <__panic+0x6a> + goto panic_dead; + } + is_panic = 1; +c0100c51: c7 05 20 54 12 c0 01 movl $0x1,0xc0125420 +c0100c58: 00 00 00 + + // print the 'message' + va_list ap; + va_start(ap, fmt); +c0100c5b: 8d 45 14 lea 0x14(%ebp),%eax +c0100c5e: 89 45 f4 mov %eax,-0xc(%ebp) + cprintf("kernel panic at %s:%d:\n ", file, line); +c0100c61: 8b 45 0c mov 0xc(%ebp),%eax +c0100c64: 89 44 24 08 mov %eax,0x8(%esp) +c0100c68: 8b 45 08 mov 0x8(%ebp),%eax +c0100c6b: 89 44 24 04 mov %eax,0x4(%esp) +c0100c6f: c7 04 24 fe 8f 10 c0 movl $0xc0108ffe,(%esp) +c0100c76: e8 fa f6 ff ff call c0100375 + vcprintf(fmt, ap); +c0100c7b: 8b 45 f4 mov -0xc(%ebp),%eax +c0100c7e: 89 44 24 04 mov %eax,0x4(%esp) +c0100c82: 8b 45 10 mov 0x10(%ebp),%eax +c0100c85: 89 04 24 mov %eax,(%esp) +c0100c88: e8 b3 f6 ff ff call c0100340 + cprintf("\n"); +c0100c8d: c7 04 24 1a 90 10 c0 movl $0xc010901a,(%esp) +c0100c94: e8 dc f6 ff ff call c0100375 + + cprintf("stack trackback:\n"); +c0100c99: c7 04 24 1c 90 10 c0 movl $0xc010901c,(%esp) +c0100ca0: e8 d0 f6 ff ff call c0100375 + print_stackframe(); +c0100ca5: e8 3a fd ff ff call c01009e4 +c0100caa: eb 01 jmp c0100cad <__panic+0x6b> + goto panic_dead; +c0100cac: 90 nop + + va_end(ap); + +panic_dead: + intr_disable(); +c0100cad: e8 46 12 00 00 call c0101ef8 + while (1) { + kmonitor(NULL); +c0100cb2: c7 04 24 00 00 00 00 movl $0x0,(%esp) +c0100cb9: e8 9d fe ff ff call c0100b5b +c0100cbe: eb f2 jmp c0100cb2 <__panic+0x70> + +c0100cc0 <__warn>: + } +} + +/* __warn - like panic, but don't */ +void +__warn(const char *file, int line, const char *fmt, ...) { +c0100cc0: 55 push %ebp +c0100cc1: 89 e5 mov %esp,%ebp +c0100cc3: 83 ec 28 sub $0x28,%esp + va_list ap; + va_start(ap, fmt); +c0100cc6: 8d 45 14 lea 0x14(%ebp),%eax +c0100cc9: 89 45 f4 mov %eax,-0xc(%ebp) + cprintf("kernel warning at %s:%d:\n ", file, line); +c0100ccc: 8b 45 0c mov 0xc(%ebp),%eax +c0100ccf: 89 44 24 08 mov %eax,0x8(%esp) +c0100cd3: 8b 45 08 mov 0x8(%ebp),%eax +c0100cd6: 89 44 24 04 mov %eax,0x4(%esp) +c0100cda: c7 04 24 2e 90 10 c0 movl $0xc010902e,(%esp) +c0100ce1: e8 8f f6 ff ff call c0100375 + vcprintf(fmt, ap); +c0100ce6: 8b 45 f4 mov -0xc(%ebp),%eax +c0100ce9: 89 44 24 04 mov %eax,0x4(%esp) +c0100ced: 8b 45 10 mov 0x10(%ebp),%eax +c0100cf0: 89 04 24 mov %eax,(%esp) +c0100cf3: e8 48 f6 ff ff call c0100340 + cprintf("\n"); +c0100cf8: c7 04 24 1a 90 10 c0 movl $0xc010901a,(%esp) +c0100cff: e8 71 f6 ff ff call c0100375 + va_end(ap); +} +c0100d04: 90 nop +c0100d05: 89 ec mov %ebp,%esp +c0100d07: 5d pop %ebp +c0100d08: c3 ret + +c0100d09 : + +bool +is_kernel_panic(void) { +c0100d09: 55 push %ebp +c0100d0a: 89 e5 mov %esp,%ebp + return is_panic; +c0100d0c: a1 20 54 12 c0 mov 0xc0125420,%eax +} +c0100d11: 5d pop %ebp +c0100d12: c3 ret + +c0100d13 : +/* * + * clock_init - initialize 8253 clock to interrupt 100 times per second, + * and then enable IRQ_TIMER. + * */ +void +clock_init(void) { +c0100d13: 55 push %ebp +c0100d14: 89 e5 mov %esp,%ebp +c0100d16: 83 ec 28 sub $0x28,%esp +c0100d19: 66 c7 45 ee 43 00 movw $0x43,-0x12(%ebp) +c0100d1f: c6 45 ed 34 movb $0x34,-0x13(%ebp) + : "memory", "cc"); +} + +static inline void +outb(uint16_t port, uint8_t data) { + asm volatile ("outb %0, %1" :: "a" (data), "d" (port) : "memory"); +c0100d23: 0f b6 45 ed movzbl -0x13(%ebp),%eax +c0100d27: 0f b7 55 ee movzwl -0x12(%ebp),%edx +c0100d2b: ee out %al,(%dx) +} +c0100d2c: 90 nop +c0100d2d: 66 c7 45 f2 40 00 movw $0x40,-0xe(%ebp) +c0100d33: c6 45 f1 9c movb $0x9c,-0xf(%ebp) + asm volatile ("outb %0, %1" :: "a" (data), "d" (port) : "memory"); +c0100d37: 0f b6 45 f1 movzbl -0xf(%ebp),%eax +c0100d3b: 0f b7 55 f2 movzwl -0xe(%ebp),%edx +c0100d3f: ee out %al,(%dx) +} +c0100d40: 90 nop +c0100d41: 66 c7 45 f6 40 00 movw $0x40,-0xa(%ebp) +c0100d47: c6 45 f5 2e movb $0x2e,-0xb(%ebp) + asm volatile ("outb %0, %1" :: "a" (data), "d" (port) : "memory"); +c0100d4b: 0f b6 45 f5 movzbl -0xb(%ebp),%eax +c0100d4f: 0f b7 55 f6 movzwl -0xa(%ebp),%edx +c0100d53: ee out %al,(%dx) +} +c0100d54: 90 nop + outb(TIMER_MODE, TIMER_SEL0 | TIMER_RATEGEN | TIMER_16BIT); + outb(IO_TIMER1, TIMER_DIV(100) % 256); + outb(IO_TIMER1, TIMER_DIV(100) / 256); + + // initialize time counter 'ticks' to zero + ticks = 0; +c0100d55: c7 05 24 54 12 c0 00 movl $0x0,0xc0125424 +c0100d5c: 00 00 00 + + cprintf("++ setup timer interrupts\n"); +c0100d5f: c7 04 24 4c 90 10 c0 movl $0xc010904c,(%esp) +c0100d66: e8 0a f6 ff ff call c0100375 + pic_enable(IRQ_TIMER); +c0100d6b: c7 04 24 00 00 00 00 movl $0x0,(%esp) +c0100d72: e8 e6 11 00 00 call c0101f5d +} +c0100d77: 90 nop +c0100d78: 89 ec mov %ebp,%esp +c0100d7a: 5d pop %ebp +c0100d7b: c3 ret + +c0100d7c <__intr_save>: +#include +#include +#include + +static inline bool +__intr_save(void) { +c0100d7c: 55 push %ebp +c0100d7d: 89 e5 mov %esp,%ebp +c0100d7f: 83 ec 18 sub $0x18,%esp +} + +static inline uint32_t +read_eflags(void) { + uint32_t eflags; + asm volatile ("pushfl; popl %0" : "=r" (eflags)); +c0100d82: 9c pushf +c0100d83: 58 pop %eax +c0100d84: 89 45 f4 mov %eax,-0xc(%ebp) + return eflags; +c0100d87: 8b 45 f4 mov -0xc(%ebp),%eax + if (read_eflags() & FL_IF) { +c0100d8a: 25 00 02 00 00 and $0x200,%eax +c0100d8f: 85 c0 test %eax,%eax +c0100d91: 74 0c je c0100d9f <__intr_save+0x23> + intr_disable(); +c0100d93: e8 60 11 00 00 call c0101ef8 + return 1; +c0100d98: b8 01 00 00 00 mov $0x1,%eax +c0100d9d: eb 05 jmp c0100da4 <__intr_save+0x28> + } + return 0; +c0100d9f: b8 00 00 00 00 mov $0x0,%eax +} +c0100da4: 89 ec mov %ebp,%esp +c0100da6: 5d pop %ebp +c0100da7: c3 ret + +c0100da8 <__intr_restore>: + +static inline void +__intr_restore(bool flag) { +c0100da8: 55 push %ebp +c0100da9: 89 e5 mov %esp,%ebp +c0100dab: 83 ec 08 sub $0x8,%esp + if (flag) { +c0100dae: 83 7d 08 00 cmpl $0x0,0x8(%ebp) +c0100db2: 74 05 je c0100db9 <__intr_restore+0x11> + intr_enable(); +c0100db4: e8 37 11 00 00 call c0101ef0 + } +} +c0100db9: 90 nop +c0100dba: 89 ec mov %ebp,%esp +c0100dbc: 5d pop %ebp +c0100dbd: c3 ret + +c0100dbe : +#include +#include + +/* stupid I/O delay routine necessitated by historical PC design flaws */ +static void +delay(void) { +c0100dbe: 55 push %ebp +c0100dbf: 89 e5 mov %esp,%ebp +c0100dc1: 83 ec 10 sub $0x10,%esp +c0100dc4: 66 c7 45 f2 84 00 movw $0x84,-0xe(%ebp) + asm volatile ("inb %1, %0" : "=a" (data) : "d" (port) : "memory"); +c0100dca: 0f b7 45 f2 movzwl -0xe(%ebp),%eax +c0100dce: 89 c2 mov %eax,%edx +c0100dd0: ec in (%dx),%al +c0100dd1: 88 45 f1 mov %al,-0xf(%ebp) +c0100dd4: 66 c7 45 f6 84 00 movw $0x84,-0xa(%ebp) +c0100dda: 0f b7 45 f6 movzwl -0xa(%ebp),%eax +c0100dde: 89 c2 mov %eax,%edx +c0100de0: ec in (%dx),%al +c0100de1: 88 45 f5 mov %al,-0xb(%ebp) +c0100de4: 66 c7 45 fa 84 00 movw $0x84,-0x6(%ebp) +c0100dea: 0f b7 45 fa movzwl -0x6(%ebp),%eax +c0100dee: 89 c2 mov %eax,%edx +c0100df0: ec in (%dx),%al +c0100df1: 88 45 f9 mov %al,-0x7(%ebp) +c0100df4: 66 c7 45 fe 84 00 movw $0x84,-0x2(%ebp) +c0100dfa: 0f b7 45 fe movzwl -0x2(%ebp),%eax +c0100dfe: 89 c2 mov %eax,%edx +c0100e00: ec in (%dx),%al +c0100e01: 88 45 fd mov %al,-0x3(%ebp) + inb(0x84); + inb(0x84); + inb(0x84); + inb(0x84); +} +c0100e04: 90 nop +c0100e05: 89 ec mov %ebp,%esp +c0100e07: 5d pop %ebp +c0100e08: c3 ret + +c0100e09 : +static uint16_t addr_6845; + +/* TEXT-mode CGA/VGA display output */ + +static void +cga_init(void) { +c0100e09: 55 push %ebp +c0100e0a: 89 e5 mov %esp,%ebp +c0100e0c: 83 ec 20 sub $0x20,%esp + volatile uint16_t *cp = (uint16_t *)(CGA_BUF + KERNBASE); +c0100e0f: c7 45 fc 00 80 0b c0 movl $0xc00b8000,-0x4(%ebp) + uint16_t was = *cp; +c0100e16: 8b 45 fc mov -0x4(%ebp),%eax +c0100e19: 0f b7 00 movzwl (%eax),%eax +c0100e1c: 66 89 45 fa mov %ax,-0x6(%ebp) + *cp = (uint16_t) 0xA55A; +c0100e20: 8b 45 fc mov -0x4(%ebp),%eax +c0100e23: 66 c7 00 5a a5 movw $0xa55a,(%eax) + if (*cp != 0xA55A) { +c0100e28: 8b 45 fc mov -0x4(%ebp),%eax +c0100e2b: 0f b7 00 movzwl (%eax),%eax +c0100e2e: 0f b7 c0 movzwl %ax,%eax +c0100e31: 3d 5a a5 00 00 cmp $0xa55a,%eax +c0100e36: 74 12 je c0100e4a + cp = (uint16_t*)(MONO_BUF + KERNBASE); +c0100e38: c7 45 fc 00 00 0b c0 movl $0xc00b0000,-0x4(%ebp) + addr_6845 = MONO_BASE; +c0100e3f: 66 c7 05 46 54 12 c0 movw $0x3b4,0xc0125446 +c0100e46: b4 03 +c0100e48: eb 13 jmp c0100e5d + } else { + *cp = was; +c0100e4a: 8b 45 fc mov -0x4(%ebp),%eax +c0100e4d: 0f b7 55 fa movzwl -0x6(%ebp),%edx +c0100e51: 66 89 10 mov %dx,(%eax) + addr_6845 = CGA_BASE; +c0100e54: 66 c7 05 46 54 12 c0 movw $0x3d4,0xc0125446 +c0100e5b: d4 03 + } + + // Extract cursor location + uint32_t pos; + outb(addr_6845, 14); +c0100e5d: 0f b7 05 46 54 12 c0 movzwl 0xc0125446,%eax +c0100e64: 66 89 45 e6 mov %ax,-0x1a(%ebp) +c0100e68: c6 45 e5 0e movb $0xe,-0x1b(%ebp) + asm volatile ("outb %0, %1" :: "a" (data), "d" (port) : "memory"); +c0100e6c: 0f b6 45 e5 movzbl -0x1b(%ebp),%eax +c0100e70: 0f b7 55 e6 movzwl -0x1a(%ebp),%edx +c0100e74: ee out %al,(%dx) +} +c0100e75: 90 nop + pos = inb(addr_6845 + 1) << 8; +c0100e76: 0f b7 05 46 54 12 c0 movzwl 0xc0125446,%eax +c0100e7d: 40 inc %eax +c0100e7e: 0f b7 c0 movzwl %ax,%eax +c0100e81: 66 89 45 ea mov %ax,-0x16(%ebp) + asm volatile ("inb %1, %0" : "=a" (data) : "d" (port) : "memory"); +c0100e85: 0f b7 45 ea movzwl -0x16(%ebp),%eax +c0100e89: 89 c2 mov %eax,%edx +c0100e8b: ec in (%dx),%al +c0100e8c: 88 45 e9 mov %al,-0x17(%ebp) + return data; +c0100e8f: 0f b6 45 e9 movzbl -0x17(%ebp),%eax +c0100e93: 0f b6 c0 movzbl %al,%eax +c0100e96: c1 e0 08 shl $0x8,%eax +c0100e99: 89 45 f4 mov %eax,-0xc(%ebp) + outb(addr_6845, 15); +c0100e9c: 0f b7 05 46 54 12 c0 movzwl 0xc0125446,%eax +c0100ea3: 66 89 45 ee mov %ax,-0x12(%ebp) +c0100ea7: c6 45 ed 0f movb $0xf,-0x13(%ebp) + asm volatile ("outb %0, %1" :: "a" (data), "d" (port) : "memory"); +c0100eab: 0f b6 45 ed movzbl -0x13(%ebp),%eax +c0100eaf: 0f b7 55 ee movzwl -0x12(%ebp),%edx +c0100eb3: ee out %al,(%dx) +} +c0100eb4: 90 nop + pos |= inb(addr_6845 + 1); +c0100eb5: 0f b7 05 46 54 12 c0 movzwl 0xc0125446,%eax +c0100ebc: 40 inc %eax +c0100ebd: 0f b7 c0 movzwl %ax,%eax +c0100ec0: 66 89 45 f2 mov %ax,-0xe(%ebp) + asm volatile ("inb %1, %0" : "=a" (data) : "d" (port) : "memory"); +c0100ec4: 0f b7 45 f2 movzwl -0xe(%ebp),%eax +c0100ec8: 89 c2 mov %eax,%edx +c0100eca: ec in (%dx),%al +c0100ecb: 88 45 f1 mov %al,-0xf(%ebp) + return data; +c0100ece: 0f b6 45 f1 movzbl -0xf(%ebp),%eax +c0100ed2: 0f b6 c0 movzbl %al,%eax +c0100ed5: 09 45 f4 or %eax,-0xc(%ebp) + + crt_buf = (uint16_t*) cp; +c0100ed8: 8b 45 fc mov -0x4(%ebp),%eax +c0100edb: a3 40 54 12 c0 mov %eax,0xc0125440 + crt_pos = pos; +c0100ee0: 8b 45 f4 mov -0xc(%ebp),%eax +c0100ee3: 0f b7 c0 movzwl %ax,%eax +c0100ee6: 66 a3 44 54 12 c0 mov %ax,0xc0125444 +} +c0100eec: 90 nop +c0100eed: 89 ec mov %ebp,%esp +c0100eef: 5d pop %ebp +c0100ef0: c3 ret + +c0100ef1 : + +static bool serial_exists = 0; + +static void +serial_init(void) { +c0100ef1: 55 push %ebp +c0100ef2: 89 e5 mov %esp,%ebp +c0100ef4: 83 ec 48 sub $0x48,%esp +c0100ef7: 66 c7 45 d2 fa 03 movw $0x3fa,-0x2e(%ebp) +c0100efd: c6 45 d1 00 movb $0x0,-0x2f(%ebp) + asm volatile ("outb %0, %1" :: "a" (data), "d" (port) : "memory"); +c0100f01: 0f b6 45 d1 movzbl -0x2f(%ebp),%eax +c0100f05: 0f b7 55 d2 movzwl -0x2e(%ebp),%edx +c0100f09: ee out %al,(%dx) +} +c0100f0a: 90 nop +c0100f0b: 66 c7 45 d6 fb 03 movw $0x3fb,-0x2a(%ebp) +c0100f11: c6 45 d5 80 movb $0x80,-0x2b(%ebp) + asm volatile ("outb %0, %1" :: "a" (data), "d" (port) : "memory"); +c0100f15: 0f b6 45 d5 movzbl -0x2b(%ebp),%eax +c0100f19: 0f b7 55 d6 movzwl -0x2a(%ebp),%edx +c0100f1d: ee out %al,(%dx) +} +c0100f1e: 90 nop +c0100f1f: 66 c7 45 da f8 03 movw $0x3f8,-0x26(%ebp) +c0100f25: c6 45 d9 0c movb $0xc,-0x27(%ebp) + asm volatile ("outb %0, %1" :: "a" (data), "d" (port) : "memory"); +c0100f29: 0f b6 45 d9 movzbl -0x27(%ebp),%eax +c0100f2d: 0f b7 55 da movzwl -0x26(%ebp),%edx +c0100f31: ee out %al,(%dx) +} +c0100f32: 90 nop +c0100f33: 66 c7 45 de f9 03 movw $0x3f9,-0x22(%ebp) +c0100f39: c6 45 dd 00 movb $0x0,-0x23(%ebp) + asm volatile ("outb %0, %1" :: "a" (data), "d" (port) : "memory"); +c0100f3d: 0f b6 45 dd movzbl -0x23(%ebp),%eax +c0100f41: 0f b7 55 de movzwl -0x22(%ebp),%edx +c0100f45: ee out %al,(%dx) +} +c0100f46: 90 nop +c0100f47: 66 c7 45 e2 fb 03 movw $0x3fb,-0x1e(%ebp) +c0100f4d: c6 45 e1 03 movb $0x3,-0x1f(%ebp) + asm volatile ("outb %0, %1" :: "a" (data), "d" (port) : "memory"); +c0100f51: 0f b6 45 e1 movzbl -0x1f(%ebp),%eax +c0100f55: 0f b7 55 e2 movzwl -0x1e(%ebp),%edx +c0100f59: ee out %al,(%dx) +} +c0100f5a: 90 nop +c0100f5b: 66 c7 45 e6 fc 03 movw $0x3fc,-0x1a(%ebp) +c0100f61: c6 45 e5 00 movb $0x0,-0x1b(%ebp) + asm volatile ("outb %0, %1" :: "a" (data), "d" (port) : "memory"); +c0100f65: 0f b6 45 e5 movzbl -0x1b(%ebp),%eax +c0100f69: 0f b7 55 e6 movzwl -0x1a(%ebp),%edx +c0100f6d: ee out %al,(%dx) +} +c0100f6e: 90 nop +c0100f6f: 66 c7 45 ea f9 03 movw $0x3f9,-0x16(%ebp) +c0100f75: c6 45 e9 01 movb $0x1,-0x17(%ebp) + asm volatile ("outb %0, %1" :: "a" (data), "d" (port) : "memory"); +c0100f79: 0f b6 45 e9 movzbl -0x17(%ebp),%eax +c0100f7d: 0f b7 55 ea movzwl -0x16(%ebp),%edx +c0100f81: ee out %al,(%dx) +} +c0100f82: 90 nop +c0100f83: 66 c7 45 ee fd 03 movw $0x3fd,-0x12(%ebp) + asm volatile ("inb %1, %0" : "=a" (data) : "d" (port) : "memory"); +c0100f89: 0f b7 45 ee movzwl -0x12(%ebp),%eax +c0100f8d: 89 c2 mov %eax,%edx +c0100f8f: ec in (%dx),%al +c0100f90: 88 45 ed mov %al,-0x13(%ebp) + return data; +c0100f93: 0f b6 45 ed movzbl -0x13(%ebp),%eax + // Enable rcv interrupts + outb(COM1 + COM_IER, COM_IER_RDI); + + // Clear any preexisting overrun indications and interrupts + // Serial port doesn't exist if COM_LSR returns 0xFF + serial_exists = (inb(COM1 + COM_LSR) != 0xFF); +c0100f97: 3c ff cmp $0xff,%al +c0100f99: 0f 95 c0 setne %al +c0100f9c: 0f b6 c0 movzbl %al,%eax +c0100f9f: a3 48 54 12 c0 mov %eax,0xc0125448 +c0100fa4: 66 c7 45 f2 fa 03 movw $0x3fa,-0xe(%ebp) + asm volatile ("inb %1, %0" : "=a" (data) : "d" (port) : "memory"); +c0100faa: 0f b7 45 f2 movzwl -0xe(%ebp),%eax +c0100fae: 89 c2 mov %eax,%edx +c0100fb0: ec in (%dx),%al +c0100fb1: 88 45 f1 mov %al,-0xf(%ebp) +c0100fb4: 66 c7 45 f6 f8 03 movw $0x3f8,-0xa(%ebp) +c0100fba: 0f b7 45 f6 movzwl -0xa(%ebp),%eax +c0100fbe: 89 c2 mov %eax,%edx +c0100fc0: ec in (%dx),%al +c0100fc1: 88 45 f5 mov %al,-0xb(%ebp) + (void) inb(COM1+COM_IIR); + (void) inb(COM1+COM_RX); + + if (serial_exists) { +c0100fc4: a1 48 54 12 c0 mov 0xc0125448,%eax +c0100fc9: 85 c0 test %eax,%eax +c0100fcb: 74 0c je c0100fd9 + pic_enable(IRQ_COM1); +c0100fcd: c7 04 24 04 00 00 00 movl $0x4,(%esp) +c0100fd4: e8 84 0f 00 00 call c0101f5d + } +} +c0100fd9: 90 nop +c0100fda: 89 ec mov %ebp,%esp +c0100fdc: 5d pop %ebp +c0100fdd: c3 ret + +c0100fde : + +static void +lpt_putc_sub(int c) { +c0100fde: 55 push %ebp +c0100fdf: 89 e5 mov %esp,%ebp +c0100fe1: 83 ec 20 sub $0x20,%esp + int i; + for (i = 0; !(inb(LPTPORT + 1) & 0x80) && i < 12800; i ++) { +c0100fe4: c7 45 fc 00 00 00 00 movl $0x0,-0x4(%ebp) +c0100feb: eb 08 jmp c0100ff5 + delay(); +c0100fed: e8 cc fd ff ff call c0100dbe + for (i = 0; !(inb(LPTPORT + 1) & 0x80) && i < 12800; i ++) { +c0100ff2: ff 45 fc incl -0x4(%ebp) +c0100ff5: 66 c7 45 fa 79 03 movw $0x379,-0x6(%ebp) +c0100ffb: 0f b7 45 fa movzwl -0x6(%ebp),%eax +c0100fff: 89 c2 mov %eax,%edx +c0101001: ec in (%dx),%al +c0101002: 88 45 f9 mov %al,-0x7(%ebp) + return data; +c0101005: 0f b6 45 f9 movzbl -0x7(%ebp),%eax +c0101009: 84 c0 test %al,%al +c010100b: 78 09 js c0101016 +c010100d: 81 7d fc ff 31 00 00 cmpl $0x31ff,-0x4(%ebp) +c0101014: 7e d7 jle c0100fed + } + outb(LPTPORT + 0, c); +c0101016: 8b 45 08 mov 0x8(%ebp),%eax +c0101019: 0f b6 c0 movzbl %al,%eax +c010101c: 66 c7 45 ee 78 03 movw $0x378,-0x12(%ebp) +c0101022: 88 45 ed mov %al,-0x13(%ebp) + asm volatile ("outb %0, %1" :: "a" (data), "d" (port) : "memory"); +c0101025: 0f b6 45 ed movzbl -0x13(%ebp),%eax +c0101029: 0f b7 55 ee movzwl -0x12(%ebp),%edx +c010102d: ee out %al,(%dx) +} +c010102e: 90 nop +c010102f: 66 c7 45 f2 7a 03 movw $0x37a,-0xe(%ebp) +c0101035: c6 45 f1 0d movb $0xd,-0xf(%ebp) + asm volatile ("outb %0, %1" :: "a" (data), "d" (port) : "memory"); +c0101039: 0f b6 45 f1 movzbl -0xf(%ebp),%eax +c010103d: 0f b7 55 f2 movzwl -0xe(%ebp),%edx +c0101041: ee out %al,(%dx) +} +c0101042: 90 nop +c0101043: 66 c7 45 f6 7a 03 movw $0x37a,-0xa(%ebp) +c0101049: c6 45 f5 08 movb $0x8,-0xb(%ebp) + asm volatile ("outb %0, %1" :: "a" (data), "d" (port) : "memory"); +c010104d: 0f b6 45 f5 movzbl -0xb(%ebp),%eax +c0101051: 0f b7 55 f6 movzwl -0xa(%ebp),%edx +c0101055: ee out %al,(%dx) +} +c0101056: 90 nop + outb(LPTPORT + 2, 0x08 | 0x04 | 0x01); + outb(LPTPORT + 2, 0x08); +} +c0101057: 90 nop +c0101058: 89 ec mov %ebp,%esp +c010105a: 5d pop %ebp +c010105b: c3 ret + +c010105c : + +/* lpt_putc - copy console output to parallel port */ +static void +lpt_putc(int c) { +c010105c: 55 push %ebp +c010105d: 89 e5 mov %esp,%ebp +c010105f: 83 ec 04 sub $0x4,%esp + if (c != '\b') { +c0101062: 83 7d 08 08 cmpl $0x8,0x8(%ebp) +c0101066: 74 0d je c0101075 + lpt_putc_sub(c); +c0101068: 8b 45 08 mov 0x8(%ebp),%eax +c010106b: 89 04 24 mov %eax,(%esp) +c010106e: e8 6b ff ff ff call c0100fde + else { + lpt_putc_sub('\b'); + lpt_putc_sub(' '); + lpt_putc_sub('\b'); + } +} +c0101073: eb 24 jmp c0101099 + lpt_putc_sub('\b'); +c0101075: c7 04 24 08 00 00 00 movl $0x8,(%esp) +c010107c: e8 5d ff ff ff call c0100fde + lpt_putc_sub(' '); +c0101081: c7 04 24 20 00 00 00 movl $0x20,(%esp) +c0101088: e8 51 ff ff ff call c0100fde + lpt_putc_sub('\b'); +c010108d: c7 04 24 08 00 00 00 movl $0x8,(%esp) +c0101094: e8 45 ff ff ff call c0100fde +} +c0101099: 90 nop +c010109a: 89 ec mov %ebp,%esp +c010109c: 5d pop %ebp +c010109d: c3 ret + +c010109e : + +/* cga_putc - print character to console */ +static void +cga_putc(int c) { +c010109e: 55 push %ebp +c010109f: 89 e5 mov %esp,%ebp +c01010a1: 83 ec 38 sub $0x38,%esp +c01010a4: 89 5d fc mov %ebx,-0x4(%ebp) + // set black on white + if (!(c & ~0xFF)) { +c01010a7: 8b 45 08 mov 0x8(%ebp),%eax +c01010aa: 25 00 ff ff ff and $0xffffff00,%eax +c01010af: 85 c0 test %eax,%eax +c01010b1: 75 07 jne c01010ba + c |= 0x0700; +c01010b3: 81 4d 08 00 07 00 00 orl $0x700,0x8(%ebp) + } + + switch (c & 0xff) { +c01010ba: 8b 45 08 mov 0x8(%ebp),%eax +c01010bd: 0f b6 c0 movzbl %al,%eax +c01010c0: 83 f8 0d cmp $0xd,%eax +c01010c3: 74 72 je c0101137 +c01010c5: 83 f8 0d cmp $0xd,%eax +c01010c8: 0f 8f a3 00 00 00 jg c0101171 +c01010ce: 83 f8 08 cmp $0x8,%eax +c01010d1: 74 0a je c01010dd +c01010d3: 83 f8 0a cmp $0xa,%eax +c01010d6: 74 4c je c0101124 +c01010d8: e9 94 00 00 00 jmp c0101171 + case '\b': + if (crt_pos > 0) { +c01010dd: 0f b7 05 44 54 12 c0 movzwl 0xc0125444,%eax +c01010e4: 85 c0 test %eax,%eax +c01010e6: 0f 84 af 00 00 00 je c010119b + crt_pos --; +c01010ec: 0f b7 05 44 54 12 c0 movzwl 0xc0125444,%eax +c01010f3: 48 dec %eax +c01010f4: 0f b7 c0 movzwl %ax,%eax +c01010f7: 66 a3 44 54 12 c0 mov %ax,0xc0125444 + crt_buf[crt_pos] = (c & ~0xff) | ' '; +c01010fd: 8b 45 08 mov 0x8(%ebp),%eax +c0101100: 98 cwtl +c0101101: 25 00 ff ff ff and $0xffffff00,%eax +c0101106: 98 cwtl +c0101107: 83 c8 20 or $0x20,%eax +c010110a: 98 cwtl +c010110b: 8b 0d 40 54 12 c0 mov 0xc0125440,%ecx +c0101111: 0f b7 15 44 54 12 c0 movzwl 0xc0125444,%edx +c0101118: 01 d2 add %edx,%edx +c010111a: 01 ca add %ecx,%edx +c010111c: 0f b7 c0 movzwl %ax,%eax +c010111f: 66 89 02 mov %ax,(%edx) + } + break; +c0101122: eb 77 jmp c010119b + case '\n': + crt_pos += CRT_COLS; +c0101124: 0f b7 05 44 54 12 c0 movzwl 0xc0125444,%eax +c010112b: 83 c0 50 add $0x50,%eax +c010112e: 0f b7 c0 movzwl %ax,%eax +c0101131: 66 a3 44 54 12 c0 mov %ax,0xc0125444 + case '\r': + crt_pos -= (crt_pos % CRT_COLS); +c0101137: 0f b7 1d 44 54 12 c0 movzwl 0xc0125444,%ebx +c010113e: 0f b7 0d 44 54 12 c0 movzwl 0xc0125444,%ecx +c0101145: ba cd cc cc cc mov $0xcccccccd,%edx +c010114a: 89 c8 mov %ecx,%eax +c010114c: f7 e2 mul %edx +c010114e: c1 ea 06 shr $0x6,%edx +c0101151: 89 d0 mov %edx,%eax +c0101153: c1 e0 02 shl $0x2,%eax +c0101156: 01 d0 add %edx,%eax +c0101158: c1 e0 04 shl $0x4,%eax +c010115b: 29 c1 sub %eax,%ecx +c010115d: 89 ca mov %ecx,%edx +c010115f: 0f b7 d2 movzwl %dx,%edx +c0101162: 89 d8 mov %ebx,%eax +c0101164: 29 d0 sub %edx,%eax +c0101166: 0f b7 c0 movzwl %ax,%eax +c0101169: 66 a3 44 54 12 c0 mov %ax,0xc0125444 + break; +c010116f: eb 2b jmp c010119c + default: + crt_buf[crt_pos ++] = c; // write the character +c0101171: 8b 0d 40 54 12 c0 mov 0xc0125440,%ecx +c0101177: 0f b7 05 44 54 12 c0 movzwl 0xc0125444,%eax +c010117e: 8d 50 01 lea 0x1(%eax),%edx +c0101181: 0f b7 d2 movzwl %dx,%edx +c0101184: 66 89 15 44 54 12 c0 mov %dx,0xc0125444 +c010118b: 01 c0 add %eax,%eax +c010118d: 8d 14 01 lea (%ecx,%eax,1),%edx +c0101190: 8b 45 08 mov 0x8(%ebp),%eax +c0101193: 0f b7 c0 movzwl %ax,%eax +c0101196: 66 89 02 mov %ax,(%edx) + break; +c0101199: eb 01 jmp c010119c + break; +c010119b: 90 nop + } + + // What is the purpose of this? + if (crt_pos >= CRT_SIZE) { +c010119c: 0f b7 05 44 54 12 c0 movzwl 0xc0125444,%eax +c01011a3: 3d cf 07 00 00 cmp $0x7cf,%eax +c01011a8: 76 5e jbe c0101208 + int i; + memmove(crt_buf, crt_buf + CRT_COLS, (CRT_SIZE - CRT_COLS) * sizeof(uint16_t)); +c01011aa: a1 40 54 12 c0 mov 0xc0125440,%eax +c01011af: 8d 90 a0 00 00 00 lea 0xa0(%eax),%edx +c01011b5: a1 40 54 12 c0 mov 0xc0125440,%eax +c01011ba: c7 44 24 08 00 0f 00 movl $0xf00,0x8(%esp) +c01011c1: 00 +c01011c2: 89 54 24 04 mov %edx,0x4(%esp) +c01011c6: 89 04 24 mov %eax,(%esp) +c01011c9: e8 42 7a 00 00 call c0108c10 + for (i = CRT_SIZE - CRT_COLS; i < CRT_SIZE; i ++) { +c01011ce: c7 45 f4 80 07 00 00 movl $0x780,-0xc(%ebp) +c01011d5: eb 15 jmp c01011ec + crt_buf[i] = 0x0700 | ' '; +c01011d7: 8b 15 40 54 12 c0 mov 0xc0125440,%edx +c01011dd: 8b 45 f4 mov -0xc(%ebp),%eax +c01011e0: 01 c0 add %eax,%eax +c01011e2: 01 d0 add %edx,%eax +c01011e4: 66 c7 00 20 07 movw $0x720,(%eax) + for (i = CRT_SIZE - CRT_COLS; i < CRT_SIZE; i ++) { +c01011e9: ff 45 f4 incl -0xc(%ebp) +c01011ec: 81 7d f4 cf 07 00 00 cmpl $0x7cf,-0xc(%ebp) +c01011f3: 7e e2 jle c01011d7 + } + crt_pos -= CRT_COLS; +c01011f5: 0f b7 05 44 54 12 c0 movzwl 0xc0125444,%eax +c01011fc: 83 e8 50 sub $0x50,%eax +c01011ff: 0f b7 c0 movzwl %ax,%eax +c0101202: 66 a3 44 54 12 c0 mov %ax,0xc0125444 + } + + // move that little blinky thing + outb(addr_6845, 14); +c0101208: 0f b7 05 46 54 12 c0 movzwl 0xc0125446,%eax +c010120f: 66 89 45 e6 mov %ax,-0x1a(%ebp) +c0101213: c6 45 e5 0e movb $0xe,-0x1b(%ebp) + asm volatile ("outb %0, %1" :: "a" (data), "d" (port) : "memory"); +c0101217: 0f b6 45 e5 movzbl -0x1b(%ebp),%eax +c010121b: 0f b7 55 e6 movzwl -0x1a(%ebp),%edx +c010121f: ee out %al,(%dx) +} +c0101220: 90 nop + outb(addr_6845 + 1, crt_pos >> 8); +c0101221: 0f b7 05 44 54 12 c0 movzwl 0xc0125444,%eax +c0101228: c1 e8 08 shr $0x8,%eax +c010122b: 0f b7 c0 movzwl %ax,%eax +c010122e: 0f b6 c0 movzbl %al,%eax +c0101231: 0f b7 15 46 54 12 c0 movzwl 0xc0125446,%edx +c0101238: 42 inc %edx +c0101239: 0f b7 d2 movzwl %dx,%edx +c010123c: 66 89 55 ea mov %dx,-0x16(%ebp) +c0101240: 88 45 e9 mov %al,-0x17(%ebp) + asm volatile ("outb %0, %1" :: "a" (data), "d" (port) : "memory"); +c0101243: 0f b6 45 e9 movzbl -0x17(%ebp),%eax +c0101247: 0f b7 55 ea movzwl -0x16(%ebp),%edx +c010124b: ee out %al,(%dx) +} +c010124c: 90 nop + outb(addr_6845, 15); +c010124d: 0f b7 05 46 54 12 c0 movzwl 0xc0125446,%eax +c0101254: 66 89 45 ee mov %ax,-0x12(%ebp) +c0101258: c6 45 ed 0f movb $0xf,-0x13(%ebp) + asm volatile ("outb %0, %1" :: "a" (data), "d" (port) : "memory"); +c010125c: 0f b6 45 ed movzbl -0x13(%ebp),%eax +c0101260: 0f b7 55 ee movzwl -0x12(%ebp),%edx +c0101264: ee out %al,(%dx) +} +c0101265: 90 nop + outb(addr_6845 + 1, crt_pos); +c0101266: 0f b7 05 44 54 12 c0 movzwl 0xc0125444,%eax +c010126d: 0f b6 c0 movzbl %al,%eax +c0101270: 0f b7 15 46 54 12 c0 movzwl 0xc0125446,%edx +c0101277: 42 inc %edx +c0101278: 0f b7 d2 movzwl %dx,%edx +c010127b: 66 89 55 f2 mov %dx,-0xe(%ebp) +c010127f: 88 45 f1 mov %al,-0xf(%ebp) + asm volatile ("outb %0, %1" :: "a" (data), "d" (port) : "memory"); +c0101282: 0f b6 45 f1 movzbl -0xf(%ebp),%eax +c0101286: 0f b7 55 f2 movzwl -0xe(%ebp),%edx +c010128a: ee out %al,(%dx) +} +c010128b: 90 nop +} +c010128c: 90 nop +c010128d: 8b 5d fc mov -0x4(%ebp),%ebx +c0101290: 89 ec mov %ebp,%esp +c0101292: 5d pop %ebp +c0101293: c3 ret + +c0101294 : + +static void +serial_putc_sub(int c) { +c0101294: 55 push %ebp +c0101295: 89 e5 mov %esp,%ebp +c0101297: 83 ec 10 sub $0x10,%esp + int i; + for (i = 0; !(inb(COM1 + COM_LSR) & COM_LSR_TXRDY) && i < 12800; i ++) { +c010129a: c7 45 fc 00 00 00 00 movl $0x0,-0x4(%ebp) +c01012a1: eb 08 jmp c01012ab + delay(); +c01012a3: e8 16 fb ff ff call c0100dbe + for (i = 0; !(inb(COM1 + COM_LSR) & COM_LSR_TXRDY) && i < 12800; i ++) { +c01012a8: ff 45 fc incl -0x4(%ebp) +c01012ab: 66 c7 45 fa fd 03 movw $0x3fd,-0x6(%ebp) + asm volatile ("inb %1, %0" : "=a" (data) : "d" (port) : "memory"); +c01012b1: 0f b7 45 fa movzwl -0x6(%ebp),%eax +c01012b5: 89 c2 mov %eax,%edx +c01012b7: ec in (%dx),%al +c01012b8: 88 45 f9 mov %al,-0x7(%ebp) + return data; +c01012bb: 0f b6 45 f9 movzbl -0x7(%ebp),%eax +c01012bf: 0f b6 c0 movzbl %al,%eax +c01012c2: 83 e0 20 and $0x20,%eax +c01012c5: 85 c0 test %eax,%eax +c01012c7: 75 09 jne c01012d2 +c01012c9: 81 7d fc ff 31 00 00 cmpl $0x31ff,-0x4(%ebp) +c01012d0: 7e d1 jle c01012a3 + } + outb(COM1 + COM_TX, c); +c01012d2: 8b 45 08 mov 0x8(%ebp),%eax +c01012d5: 0f b6 c0 movzbl %al,%eax +c01012d8: 66 c7 45 f6 f8 03 movw $0x3f8,-0xa(%ebp) +c01012de: 88 45 f5 mov %al,-0xb(%ebp) + asm volatile ("outb %0, %1" :: "a" (data), "d" (port) : "memory"); +c01012e1: 0f b6 45 f5 movzbl -0xb(%ebp),%eax +c01012e5: 0f b7 55 f6 movzwl -0xa(%ebp),%edx +c01012e9: ee out %al,(%dx) +} +c01012ea: 90 nop +} +c01012eb: 90 nop +c01012ec: 89 ec mov %ebp,%esp +c01012ee: 5d pop %ebp +c01012ef: c3 ret + +c01012f0 : + +/* serial_putc - print character to serial port */ +static void +serial_putc(int c) { +c01012f0: 55 push %ebp +c01012f1: 89 e5 mov %esp,%ebp +c01012f3: 83 ec 04 sub $0x4,%esp + if (c != '\b') { +c01012f6: 83 7d 08 08 cmpl $0x8,0x8(%ebp) +c01012fa: 74 0d je c0101309 + serial_putc_sub(c); +c01012fc: 8b 45 08 mov 0x8(%ebp),%eax +c01012ff: 89 04 24 mov %eax,(%esp) +c0101302: e8 8d ff ff ff call c0101294 + else { + serial_putc_sub('\b'); + serial_putc_sub(' '); + serial_putc_sub('\b'); + } +} +c0101307: eb 24 jmp c010132d + serial_putc_sub('\b'); +c0101309: c7 04 24 08 00 00 00 movl $0x8,(%esp) +c0101310: e8 7f ff ff ff call c0101294 + serial_putc_sub(' '); +c0101315: c7 04 24 20 00 00 00 movl $0x20,(%esp) +c010131c: e8 73 ff ff ff call c0101294 + serial_putc_sub('\b'); +c0101321: c7 04 24 08 00 00 00 movl $0x8,(%esp) +c0101328: e8 67 ff ff ff call c0101294 +} +c010132d: 90 nop +c010132e: 89 ec mov %ebp,%esp +c0101330: 5d pop %ebp +c0101331: c3 ret + +c0101332 : +/* * + * cons_intr - called by device interrupt routines to feed input + * characters into the circular console input buffer. + * */ +static void +cons_intr(int (*proc)(void)) { +c0101332: 55 push %ebp +c0101333: 89 e5 mov %esp,%ebp +c0101335: 83 ec 18 sub $0x18,%esp + int c; + while ((c = (*proc)()) != -1) { +c0101338: eb 33 jmp c010136d + if (c != 0) { +c010133a: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) +c010133e: 74 2d je c010136d + cons.buf[cons.wpos ++] = c; +c0101340: a1 64 56 12 c0 mov 0xc0125664,%eax +c0101345: 8d 50 01 lea 0x1(%eax),%edx +c0101348: 89 15 64 56 12 c0 mov %edx,0xc0125664 +c010134e: 8b 55 f4 mov -0xc(%ebp),%edx +c0101351: 88 90 60 54 12 c0 mov %dl,-0x3fedaba0(%eax) + if (cons.wpos == CONSBUFSIZE) { +c0101357: a1 64 56 12 c0 mov 0xc0125664,%eax +c010135c: 3d 00 02 00 00 cmp $0x200,%eax +c0101361: 75 0a jne c010136d + cons.wpos = 0; +c0101363: c7 05 64 56 12 c0 00 movl $0x0,0xc0125664 +c010136a: 00 00 00 + while ((c = (*proc)()) != -1) { +c010136d: 8b 45 08 mov 0x8(%ebp),%eax +c0101370: ff d0 call *%eax +c0101372: 89 45 f4 mov %eax,-0xc(%ebp) +c0101375: 83 7d f4 ff cmpl $0xffffffff,-0xc(%ebp) +c0101379: 75 bf jne c010133a + } + } + } +} +c010137b: 90 nop +c010137c: 90 nop +c010137d: 89 ec mov %ebp,%esp +c010137f: 5d pop %ebp +c0101380: c3 ret + +c0101381 : + +/* serial_proc_data - get data from serial port */ +static int +serial_proc_data(void) { +c0101381: 55 push %ebp +c0101382: 89 e5 mov %esp,%ebp +c0101384: 83 ec 10 sub $0x10,%esp +c0101387: 66 c7 45 fa fd 03 movw $0x3fd,-0x6(%ebp) + asm volatile ("inb %1, %0" : "=a" (data) : "d" (port) : "memory"); +c010138d: 0f b7 45 fa movzwl -0x6(%ebp),%eax +c0101391: 89 c2 mov %eax,%edx +c0101393: ec in (%dx),%al +c0101394: 88 45 f9 mov %al,-0x7(%ebp) + return data; +c0101397: 0f b6 45 f9 movzbl -0x7(%ebp),%eax + if (!(inb(COM1 + COM_LSR) & COM_LSR_DATA)) { +c010139b: 0f b6 c0 movzbl %al,%eax +c010139e: 83 e0 01 and $0x1,%eax +c01013a1: 85 c0 test %eax,%eax +c01013a3: 75 07 jne c01013ac + return -1; +c01013a5: b8 ff ff ff ff mov $0xffffffff,%eax +c01013aa: eb 2a jmp c01013d6 +c01013ac: 66 c7 45 f6 f8 03 movw $0x3f8,-0xa(%ebp) + asm volatile ("inb %1, %0" : "=a" (data) : "d" (port) : "memory"); +c01013b2: 0f b7 45 f6 movzwl -0xa(%ebp),%eax +c01013b6: 89 c2 mov %eax,%edx +c01013b8: ec in (%dx),%al +c01013b9: 88 45 f5 mov %al,-0xb(%ebp) + return data; +c01013bc: 0f b6 45 f5 movzbl -0xb(%ebp),%eax + } + int c = inb(COM1 + COM_RX); +c01013c0: 0f b6 c0 movzbl %al,%eax +c01013c3: 89 45 fc mov %eax,-0x4(%ebp) + if (c == 127) { +c01013c6: 83 7d fc 7f cmpl $0x7f,-0x4(%ebp) +c01013ca: 75 07 jne c01013d3 + c = '\b'; +c01013cc: c7 45 fc 08 00 00 00 movl $0x8,-0x4(%ebp) + } + return c; +c01013d3: 8b 45 fc mov -0x4(%ebp),%eax +} +c01013d6: 89 ec mov %ebp,%esp +c01013d8: 5d pop %ebp +c01013d9: c3 ret + +c01013da : + +/* serial_intr - try to feed input characters from serial port */ +void +serial_intr(void) { +c01013da: 55 push %ebp +c01013db: 89 e5 mov %esp,%ebp +c01013dd: 83 ec 18 sub $0x18,%esp + if (serial_exists) { +c01013e0: a1 48 54 12 c0 mov 0xc0125448,%eax +c01013e5: 85 c0 test %eax,%eax +c01013e7: 74 0c je c01013f5 + cons_intr(serial_proc_data); +c01013e9: c7 04 24 81 13 10 c0 movl $0xc0101381,(%esp) +c01013f0: e8 3d ff ff ff call c0101332 + } +} +c01013f5: 90 nop +c01013f6: 89 ec mov %ebp,%esp +c01013f8: 5d pop %ebp +c01013f9: c3 ret + +c01013fa : + * + * The kbd_proc_data() function gets data from the keyboard. + * If we finish a character, return it, else 0. And return -1 if no data. + * */ +static int +kbd_proc_data(void) { +c01013fa: 55 push %ebp +c01013fb: 89 e5 mov %esp,%ebp +c01013fd: 83 ec 38 sub $0x38,%esp +c0101400: 66 c7 45 f0 64 00 movw $0x64,-0x10(%ebp) + asm volatile ("inb %1, %0" : "=a" (data) : "d" (port) : "memory"); +c0101406: 8b 45 f0 mov -0x10(%ebp),%eax +c0101409: 89 c2 mov %eax,%edx +c010140b: ec in (%dx),%al +c010140c: 88 45 ef mov %al,-0x11(%ebp) + return data; +c010140f: 0f b6 45 ef movzbl -0x11(%ebp),%eax + int c; + uint8_t data; + static uint32_t shift; + + if ((inb(KBSTATP) & KBS_DIB) == 0) { +c0101413: 0f b6 c0 movzbl %al,%eax +c0101416: 83 e0 01 and $0x1,%eax +c0101419: 85 c0 test %eax,%eax +c010141b: 75 0a jne c0101427 + return -1; +c010141d: b8 ff ff ff ff mov $0xffffffff,%eax +c0101422: e9 56 01 00 00 jmp c010157d +c0101427: 66 c7 45 ec 60 00 movw $0x60,-0x14(%ebp) + asm volatile ("inb %1, %0" : "=a" (data) : "d" (port) : "memory"); +c010142d: 8b 45 ec mov -0x14(%ebp),%eax +c0101430: 89 c2 mov %eax,%edx +c0101432: ec in (%dx),%al +c0101433: 88 45 eb mov %al,-0x15(%ebp) + return data; +c0101436: 0f b6 45 eb movzbl -0x15(%ebp),%eax + } + + data = inb(KBDATAP); +c010143a: 88 45 f3 mov %al,-0xd(%ebp) + + if (data == 0xE0) { +c010143d: 80 7d f3 e0 cmpb $0xe0,-0xd(%ebp) +c0101441: 75 17 jne c010145a + // E0 escape character + shift |= E0ESC; +c0101443: a1 68 56 12 c0 mov 0xc0125668,%eax +c0101448: 83 c8 40 or $0x40,%eax +c010144b: a3 68 56 12 c0 mov %eax,0xc0125668 + return 0; +c0101450: b8 00 00 00 00 mov $0x0,%eax +c0101455: e9 23 01 00 00 jmp c010157d + } else if (data & 0x80) { +c010145a: 0f b6 45 f3 movzbl -0xd(%ebp),%eax +c010145e: 84 c0 test %al,%al +c0101460: 79 45 jns c01014a7 + // Key released + data = (shift & E0ESC ? data : data & 0x7F); +c0101462: a1 68 56 12 c0 mov 0xc0125668,%eax +c0101467: 83 e0 40 and $0x40,%eax +c010146a: 85 c0 test %eax,%eax +c010146c: 75 08 jne c0101476 +c010146e: 0f b6 45 f3 movzbl -0xd(%ebp),%eax +c0101472: 24 7f and $0x7f,%al +c0101474: eb 04 jmp c010147a +c0101476: 0f b6 45 f3 movzbl -0xd(%ebp),%eax +c010147a: 88 45 f3 mov %al,-0xd(%ebp) + shift &= ~(shiftcode[data] | E0ESC); +c010147d: 0f b6 45 f3 movzbl -0xd(%ebp),%eax +c0101481: 0f b6 80 40 20 12 c0 movzbl -0x3feddfc0(%eax),%eax +c0101488: 0c 40 or $0x40,%al +c010148a: 0f b6 c0 movzbl %al,%eax +c010148d: f7 d0 not %eax +c010148f: 89 c2 mov %eax,%edx +c0101491: a1 68 56 12 c0 mov 0xc0125668,%eax +c0101496: 21 d0 and %edx,%eax +c0101498: a3 68 56 12 c0 mov %eax,0xc0125668 + return 0; +c010149d: b8 00 00 00 00 mov $0x0,%eax +c01014a2: e9 d6 00 00 00 jmp c010157d + } else if (shift & E0ESC) { +c01014a7: a1 68 56 12 c0 mov 0xc0125668,%eax +c01014ac: 83 e0 40 and $0x40,%eax +c01014af: 85 c0 test %eax,%eax +c01014b1: 74 11 je c01014c4 + // Last character was an E0 escape; or with 0x80 + data |= 0x80; +c01014b3: 80 4d f3 80 orb $0x80,-0xd(%ebp) + shift &= ~E0ESC; +c01014b7: a1 68 56 12 c0 mov 0xc0125668,%eax +c01014bc: 83 e0 bf and $0xffffffbf,%eax +c01014bf: a3 68 56 12 c0 mov %eax,0xc0125668 + } + + shift |= shiftcode[data]; +c01014c4: 0f b6 45 f3 movzbl -0xd(%ebp),%eax +c01014c8: 0f b6 80 40 20 12 c0 movzbl -0x3feddfc0(%eax),%eax +c01014cf: 0f b6 d0 movzbl %al,%edx +c01014d2: a1 68 56 12 c0 mov 0xc0125668,%eax +c01014d7: 09 d0 or %edx,%eax +c01014d9: a3 68 56 12 c0 mov %eax,0xc0125668 + shift ^= togglecode[data]; +c01014de: 0f b6 45 f3 movzbl -0xd(%ebp),%eax +c01014e2: 0f b6 80 40 21 12 c0 movzbl -0x3feddec0(%eax),%eax +c01014e9: 0f b6 d0 movzbl %al,%edx +c01014ec: a1 68 56 12 c0 mov 0xc0125668,%eax +c01014f1: 31 d0 xor %edx,%eax +c01014f3: a3 68 56 12 c0 mov %eax,0xc0125668 + + c = charcode[shift & (CTL | SHIFT)][data]; +c01014f8: a1 68 56 12 c0 mov 0xc0125668,%eax +c01014fd: 83 e0 03 and $0x3,%eax +c0101500: 8b 14 85 40 25 12 c0 mov -0x3feddac0(,%eax,4),%edx +c0101507: 0f b6 45 f3 movzbl -0xd(%ebp),%eax +c010150b: 01 d0 add %edx,%eax +c010150d: 0f b6 00 movzbl (%eax),%eax +c0101510: 0f b6 c0 movzbl %al,%eax +c0101513: 89 45 f4 mov %eax,-0xc(%ebp) + if (shift & CAPSLOCK) { +c0101516: a1 68 56 12 c0 mov 0xc0125668,%eax +c010151b: 83 e0 08 and $0x8,%eax +c010151e: 85 c0 test %eax,%eax +c0101520: 74 22 je c0101544 + if ('a' <= c && c <= 'z') +c0101522: 83 7d f4 60 cmpl $0x60,-0xc(%ebp) +c0101526: 7e 0c jle c0101534 +c0101528: 83 7d f4 7a cmpl $0x7a,-0xc(%ebp) +c010152c: 7f 06 jg c0101534 + c += 'A' - 'a'; +c010152e: 83 6d f4 20 subl $0x20,-0xc(%ebp) +c0101532: eb 10 jmp c0101544 + else if ('A' <= c && c <= 'Z') +c0101534: 83 7d f4 40 cmpl $0x40,-0xc(%ebp) +c0101538: 7e 0a jle c0101544 +c010153a: 83 7d f4 5a cmpl $0x5a,-0xc(%ebp) +c010153e: 7f 04 jg c0101544 + c += 'a' - 'A'; +c0101540: 83 45 f4 20 addl $0x20,-0xc(%ebp) + } + + // Process special keys + // Ctrl-Alt-Del: reboot + if (!(~shift & (CTL | ALT)) && c == KEY_DEL) { +c0101544: a1 68 56 12 c0 mov 0xc0125668,%eax +c0101549: f7 d0 not %eax +c010154b: 83 e0 06 and $0x6,%eax +c010154e: 85 c0 test %eax,%eax +c0101550: 75 28 jne c010157a +c0101552: 81 7d f4 e9 00 00 00 cmpl $0xe9,-0xc(%ebp) +c0101559: 75 1f jne c010157a + cprintf("Rebooting!\n"); +c010155b: c7 04 24 67 90 10 c0 movl $0xc0109067,(%esp) +c0101562: e8 0e ee ff ff call c0100375 +c0101567: 66 c7 45 e8 92 00 movw $0x92,-0x18(%ebp) +c010156d: c6 45 e7 03 movb $0x3,-0x19(%ebp) + asm volatile ("outb %0, %1" :: "a" (data), "d" (port) : "memory"); +c0101571: 0f b6 45 e7 movzbl -0x19(%ebp),%eax +c0101575: 8b 55 e8 mov -0x18(%ebp),%edx +c0101578: ee out %al,(%dx) +} +c0101579: 90 nop + outb(0x92, 0x3); // courtesy of Chris Frost + } + return c; +c010157a: 8b 45 f4 mov -0xc(%ebp),%eax +} +c010157d: 89 ec mov %ebp,%esp +c010157f: 5d pop %ebp +c0101580: c3 ret + +c0101581 : + +/* kbd_intr - try to feed input characters from keyboard */ +static void +kbd_intr(void) { +c0101581: 55 push %ebp +c0101582: 89 e5 mov %esp,%ebp +c0101584: 83 ec 18 sub $0x18,%esp + cons_intr(kbd_proc_data); +c0101587: c7 04 24 fa 13 10 c0 movl $0xc01013fa,(%esp) +c010158e: e8 9f fd ff ff call c0101332 +} +c0101593: 90 nop +c0101594: 89 ec mov %ebp,%esp +c0101596: 5d pop %ebp +c0101597: c3 ret + +c0101598 : + +static void +kbd_init(void) { +c0101598: 55 push %ebp +c0101599: 89 e5 mov %esp,%ebp +c010159b: 83 ec 18 sub $0x18,%esp + // drain the kbd buffer + kbd_intr(); +c010159e: e8 de ff ff ff call c0101581 + pic_enable(IRQ_KBD); +c01015a3: c7 04 24 01 00 00 00 movl $0x1,(%esp) +c01015aa: e8 ae 09 00 00 call c0101f5d +} +c01015af: 90 nop +c01015b0: 89 ec mov %ebp,%esp +c01015b2: 5d pop %ebp +c01015b3: c3 ret + +c01015b4 : + +/* cons_init - initializes the console devices */ +void +cons_init(void) { +c01015b4: 55 push %ebp +c01015b5: 89 e5 mov %esp,%ebp +c01015b7: 83 ec 18 sub $0x18,%esp + cga_init(); +c01015ba: e8 4a f8 ff ff call c0100e09 + serial_init(); +c01015bf: e8 2d f9 ff ff call c0100ef1 + kbd_init(); +c01015c4: e8 cf ff ff ff call c0101598 + if (!serial_exists) { +c01015c9: a1 48 54 12 c0 mov 0xc0125448,%eax +c01015ce: 85 c0 test %eax,%eax +c01015d0: 75 0c jne c01015de + cprintf("serial port does not exist!!\n"); +c01015d2: c7 04 24 73 90 10 c0 movl $0xc0109073,(%esp) +c01015d9: e8 97 ed ff ff call c0100375 + } +} +c01015de: 90 nop +c01015df: 89 ec mov %ebp,%esp +c01015e1: 5d pop %ebp +c01015e2: c3 ret + +c01015e3 : + +/* cons_putc - print a single character @c to console devices */ +void +cons_putc(int c) { +c01015e3: 55 push %ebp +c01015e4: 89 e5 mov %esp,%ebp +c01015e6: 83 ec 28 sub $0x28,%esp + bool intr_flag; + local_intr_save(intr_flag); +c01015e9: e8 8e f7 ff ff call c0100d7c <__intr_save> +c01015ee: 89 45 f4 mov %eax,-0xc(%ebp) + { + lpt_putc(c); +c01015f1: 8b 45 08 mov 0x8(%ebp),%eax +c01015f4: 89 04 24 mov %eax,(%esp) +c01015f7: e8 60 fa ff ff call c010105c + cga_putc(c); +c01015fc: 8b 45 08 mov 0x8(%ebp),%eax +c01015ff: 89 04 24 mov %eax,(%esp) +c0101602: e8 97 fa ff ff call c010109e + serial_putc(c); +c0101607: 8b 45 08 mov 0x8(%ebp),%eax +c010160a: 89 04 24 mov %eax,(%esp) +c010160d: e8 de fc ff ff call c01012f0 + } + local_intr_restore(intr_flag); +c0101612: 8b 45 f4 mov -0xc(%ebp),%eax +c0101615: 89 04 24 mov %eax,(%esp) +c0101618: e8 8b f7 ff ff call c0100da8 <__intr_restore> +} +c010161d: 90 nop +c010161e: 89 ec mov %ebp,%esp +c0101620: 5d pop %ebp +c0101621: c3 ret + +c0101622 : +/* * + * cons_getc - return the next input character from console, + * or 0 if none waiting. + * */ +int +cons_getc(void) { +c0101622: 55 push %ebp +c0101623: 89 e5 mov %esp,%ebp +c0101625: 83 ec 28 sub $0x28,%esp + int c = 0; +c0101628: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) + bool intr_flag; + local_intr_save(intr_flag); +c010162f: e8 48 f7 ff ff call c0100d7c <__intr_save> +c0101634: 89 45 f0 mov %eax,-0x10(%ebp) + { + // poll for any pending input characters, + // so that this function works even when interrupts are disabled + // (e.g., when called from the kernel monitor). + serial_intr(); +c0101637: e8 9e fd ff ff call c01013da + kbd_intr(); +c010163c: e8 40 ff ff ff call c0101581 + + // grab the next character from the input buffer. + if (cons.rpos != cons.wpos) { +c0101641: 8b 15 60 56 12 c0 mov 0xc0125660,%edx +c0101647: a1 64 56 12 c0 mov 0xc0125664,%eax +c010164c: 39 c2 cmp %eax,%edx +c010164e: 74 31 je c0101681 + c = cons.buf[cons.rpos ++]; +c0101650: a1 60 56 12 c0 mov 0xc0125660,%eax +c0101655: 8d 50 01 lea 0x1(%eax),%edx +c0101658: 89 15 60 56 12 c0 mov %edx,0xc0125660 +c010165e: 0f b6 80 60 54 12 c0 movzbl -0x3fedaba0(%eax),%eax +c0101665: 0f b6 c0 movzbl %al,%eax +c0101668: 89 45 f4 mov %eax,-0xc(%ebp) + if (cons.rpos == CONSBUFSIZE) { +c010166b: a1 60 56 12 c0 mov 0xc0125660,%eax +c0101670: 3d 00 02 00 00 cmp $0x200,%eax +c0101675: 75 0a jne c0101681 + cons.rpos = 0; +c0101677: c7 05 60 56 12 c0 00 movl $0x0,0xc0125660 +c010167e: 00 00 00 + } + } + } + local_intr_restore(intr_flag); +c0101681: 8b 45 f0 mov -0x10(%ebp),%eax +c0101684: 89 04 24 mov %eax,(%esp) +c0101687: e8 1c f7 ff ff call c0100da8 <__intr_restore> + return c; +c010168c: 8b 45 f4 mov -0xc(%ebp),%eax +} +c010168f: 89 ec mov %ebp,%esp +c0101691: 5d pop %ebp +c0101692: c3 ret + +c0101693 : + unsigned int size; // Size in Sectors + unsigned char model[41]; // Model in String +} ide_devices[MAX_IDE]; + +static int +ide_wait_ready(unsigned short iobase, bool check_error) { +c0101693: 55 push %ebp +c0101694: 89 e5 mov %esp,%ebp +c0101696: 83 ec 14 sub $0x14,%esp +c0101699: 8b 45 08 mov 0x8(%ebp),%eax +c010169c: 66 89 45 ec mov %ax,-0x14(%ebp) + int r; + while ((r = inb(iobase + ISA_STATUS)) & IDE_BSY) +c01016a0: 90 nop +c01016a1: 8b 45 ec mov -0x14(%ebp),%eax +c01016a4: 83 c0 07 add $0x7,%eax +c01016a7: 0f b7 c0 movzwl %ax,%eax +c01016aa: 66 89 45 fa mov %ax,-0x6(%ebp) + asm volatile ("inb %1, %0" : "=a" (data) : "d" (port) : "memory"); +c01016ae: 0f b7 45 fa movzwl -0x6(%ebp),%eax +c01016b2: 89 c2 mov %eax,%edx +c01016b4: ec in (%dx),%al +c01016b5: 88 45 f9 mov %al,-0x7(%ebp) + return data; +c01016b8: 0f b6 45 f9 movzbl -0x7(%ebp),%eax +c01016bc: 0f b6 c0 movzbl %al,%eax +c01016bf: 89 45 fc mov %eax,-0x4(%ebp) +c01016c2: 8b 45 fc mov -0x4(%ebp),%eax +c01016c5: 25 80 00 00 00 and $0x80,%eax +c01016ca: 85 c0 test %eax,%eax +c01016cc: 75 d3 jne c01016a1 + /* nothing */; + if (check_error && (r & (IDE_DF | IDE_ERR)) != 0) { +c01016ce: 83 7d 0c 00 cmpl $0x0,0xc(%ebp) +c01016d2: 74 11 je c01016e5 +c01016d4: 8b 45 fc mov -0x4(%ebp),%eax +c01016d7: 83 e0 21 and $0x21,%eax +c01016da: 85 c0 test %eax,%eax +c01016dc: 74 07 je c01016e5 + return -1; +c01016de: b8 ff ff ff ff mov $0xffffffff,%eax +c01016e3: eb 05 jmp c01016ea + } + return 0; +c01016e5: b8 00 00 00 00 mov $0x0,%eax +} +c01016ea: 89 ec mov %ebp,%esp +c01016ec: 5d pop %ebp +c01016ed: c3 ret + +c01016ee : + +void +ide_init(void) { +c01016ee: 55 push %ebp +c01016ef: 89 e5 mov %esp,%ebp +c01016f1: 57 push %edi +c01016f2: 53 push %ebx +c01016f3: 81 ec 50 02 00 00 sub $0x250,%esp + static_assert((SECTSIZE % 4) == 0); + unsigned short ideno, iobase; + for (ideno = 0; ideno < MAX_IDE; ideno ++) { +c01016f9: 66 c7 45 f6 00 00 movw $0x0,-0xa(%ebp) +c01016ff: e9 bd 02 00 00 jmp c01019c1 + /* assume that no device here */ + ide_devices[ideno].valid = 0; +c0101704: 0f b7 55 f6 movzwl -0xa(%ebp),%edx +c0101708: 89 d0 mov %edx,%eax +c010170a: c1 e0 03 shl $0x3,%eax +c010170d: 29 d0 sub %edx,%eax +c010170f: c1 e0 03 shl $0x3,%eax +c0101712: 05 80 56 12 c0 add $0xc0125680,%eax +c0101717: c6 00 00 movb $0x0,(%eax) + + iobase = IO_BASE(ideno); +c010171a: 0f b7 45 f6 movzwl -0xa(%ebp),%eax +c010171e: d1 e8 shr %eax +c0101720: 0f b7 c0 movzwl %ax,%eax +c0101723: 8b 04 85 94 90 10 c0 mov -0x3fef6f6c(,%eax,4),%eax +c010172a: 66 89 45 ea mov %ax,-0x16(%ebp) + + /* wait device ready */ + ide_wait_ready(iobase, 0); +c010172e: 0f b7 45 ea movzwl -0x16(%ebp),%eax +c0101732: c7 44 24 04 00 00 00 movl $0x0,0x4(%esp) +c0101739: 00 +c010173a: 89 04 24 mov %eax,(%esp) +c010173d: e8 51 ff ff ff call c0101693 + + /* step1: select drive */ + outb(iobase + ISA_SDH, 0xE0 | ((ideno & 1) << 4)); +c0101742: 0f b7 45 f6 movzwl -0xa(%ebp),%eax +c0101746: c1 e0 04 shl $0x4,%eax +c0101749: 24 10 and $0x10,%al +c010174b: 0c e0 or $0xe0,%al +c010174d: 0f b6 c0 movzbl %al,%eax +c0101750: 0f b7 55 ea movzwl -0x16(%ebp),%edx +c0101754: 83 c2 06 add $0x6,%edx +c0101757: 0f b7 d2 movzwl %dx,%edx +c010175a: 66 89 55 ca mov %dx,-0x36(%ebp) +c010175e: 88 45 c9 mov %al,-0x37(%ebp) + asm volatile ("outb %0, %1" :: "a" (data), "d" (port) : "memory"); +c0101761: 0f b6 45 c9 movzbl -0x37(%ebp),%eax +c0101765: 0f b7 55 ca movzwl -0x36(%ebp),%edx +c0101769: ee out %al,(%dx) +} +c010176a: 90 nop + ide_wait_ready(iobase, 0); +c010176b: 0f b7 45 ea movzwl -0x16(%ebp),%eax +c010176f: c7 44 24 04 00 00 00 movl $0x0,0x4(%esp) +c0101776: 00 +c0101777: 89 04 24 mov %eax,(%esp) +c010177a: e8 14 ff ff ff call c0101693 + + /* step2: send ATA identify command */ + outb(iobase + ISA_COMMAND, IDE_CMD_IDENTIFY); +c010177f: 0f b7 45 ea movzwl -0x16(%ebp),%eax +c0101783: 83 c0 07 add $0x7,%eax +c0101786: 0f b7 c0 movzwl %ax,%eax +c0101789: 66 89 45 ce mov %ax,-0x32(%ebp) +c010178d: c6 45 cd ec movb $0xec,-0x33(%ebp) + asm volatile ("outb %0, %1" :: "a" (data), "d" (port) : "memory"); +c0101791: 0f b6 45 cd movzbl -0x33(%ebp),%eax +c0101795: 0f b7 55 ce movzwl -0x32(%ebp),%edx +c0101799: ee out %al,(%dx) +} +c010179a: 90 nop + ide_wait_ready(iobase, 0); +c010179b: 0f b7 45 ea movzwl -0x16(%ebp),%eax +c010179f: c7 44 24 04 00 00 00 movl $0x0,0x4(%esp) +c01017a6: 00 +c01017a7: 89 04 24 mov %eax,(%esp) +c01017aa: e8 e4 fe ff ff call c0101693 + + /* step3: polling */ + if (inb(iobase + ISA_STATUS) == 0 || ide_wait_ready(iobase, 1) != 0) { +c01017af: 0f b7 45 ea movzwl -0x16(%ebp),%eax +c01017b3: 83 c0 07 add $0x7,%eax +c01017b6: 0f b7 c0 movzwl %ax,%eax +c01017b9: 66 89 45 d2 mov %ax,-0x2e(%ebp) + asm volatile ("inb %1, %0" : "=a" (data) : "d" (port) : "memory"); +c01017bd: 0f b7 45 d2 movzwl -0x2e(%ebp),%eax +c01017c1: 89 c2 mov %eax,%edx +c01017c3: ec in (%dx),%al +c01017c4: 88 45 d1 mov %al,-0x2f(%ebp) + return data; +c01017c7: 0f b6 45 d1 movzbl -0x2f(%ebp),%eax +c01017cb: 84 c0 test %al,%al +c01017cd: 0f 84 e4 01 00 00 je c01019b7 +c01017d3: 0f b7 45 ea movzwl -0x16(%ebp),%eax +c01017d7: c7 44 24 04 01 00 00 movl $0x1,0x4(%esp) +c01017de: 00 +c01017df: 89 04 24 mov %eax,(%esp) +c01017e2: e8 ac fe ff ff call c0101693 +c01017e7: 85 c0 test %eax,%eax +c01017e9: 0f 85 c8 01 00 00 jne c01019b7 + continue ; + } + + /* device is ok */ + ide_devices[ideno].valid = 1; +c01017ef: 0f b7 55 f6 movzwl -0xa(%ebp),%edx +c01017f3: 89 d0 mov %edx,%eax +c01017f5: c1 e0 03 shl $0x3,%eax +c01017f8: 29 d0 sub %edx,%eax +c01017fa: c1 e0 03 shl $0x3,%eax +c01017fd: 05 80 56 12 c0 add $0xc0125680,%eax +c0101802: c6 00 01 movb $0x1,(%eax) + + /* read identification space of the device */ + unsigned int buffer[128]; + insl(iobase + ISA_DATA, buffer, sizeof(buffer) / sizeof(unsigned int)); +c0101805: 0f b7 45 ea movzwl -0x16(%ebp),%eax +c0101809: 89 45 c4 mov %eax,-0x3c(%ebp) +c010180c: 8d 85 bc fd ff ff lea -0x244(%ebp),%eax +c0101812: 89 45 c0 mov %eax,-0x40(%ebp) +c0101815: c7 45 bc 80 00 00 00 movl $0x80,-0x44(%ebp) + asm volatile ( +c010181c: 8b 55 c4 mov -0x3c(%ebp),%edx +c010181f: 8b 4d c0 mov -0x40(%ebp),%ecx +c0101822: 8b 45 bc mov -0x44(%ebp),%eax +c0101825: 89 cb mov %ecx,%ebx +c0101827: 89 df mov %ebx,%edi +c0101829: 89 c1 mov %eax,%ecx +c010182b: fc cld +c010182c: f2 6d repnz insl (%dx),%es:(%edi) +c010182e: 89 c8 mov %ecx,%eax +c0101830: 89 fb mov %edi,%ebx +c0101832: 89 5d c0 mov %ebx,-0x40(%ebp) +c0101835: 89 45 bc mov %eax,-0x44(%ebp) +} +c0101838: 90 nop + + unsigned char *ident = (unsigned char *)buffer; +c0101839: 8d 85 bc fd ff ff lea -0x244(%ebp),%eax +c010183f: 89 45 e4 mov %eax,-0x1c(%ebp) + unsigned int sectors; + unsigned int cmdsets = *(unsigned int *)(ident + IDE_IDENT_CMDSETS); +c0101842: 8b 45 e4 mov -0x1c(%ebp),%eax +c0101845: 8b 80 a4 00 00 00 mov 0xa4(%eax),%eax +c010184b: 89 45 e0 mov %eax,-0x20(%ebp) + /* device use 48-bits or 28-bits addressing */ + if (cmdsets & (1 << 26)) { +c010184e: 8b 45 e0 mov -0x20(%ebp),%eax +c0101851: 25 00 00 00 04 and $0x4000000,%eax +c0101856: 85 c0 test %eax,%eax +c0101858: 74 0e je c0101868 + sectors = *(unsigned int *)(ident + IDE_IDENT_MAX_LBA_EXT); +c010185a: 8b 45 e4 mov -0x1c(%ebp),%eax +c010185d: 8b 80 c8 00 00 00 mov 0xc8(%eax),%eax +c0101863: 89 45 f0 mov %eax,-0x10(%ebp) +c0101866: eb 09 jmp c0101871 + } + else { + sectors = *(unsigned int *)(ident + IDE_IDENT_MAX_LBA); +c0101868: 8b 45 e4 mov -0x1c(%ebp),%eax +c010186b: 8b 40 78 mov 0x78(%eax),%eax +c010186e: 89 45 f0 mov %eax,-0x10(%ebp) + } + ide_devices[ideno].sets = cmdsets; +c0101871: 0f b7 55 f6 movzwl -0xa(%ebp),%edx +c0101875: 89 d0 mov %edx,%eax +c0101877: c1 e0 03 shl $0x3,%eax +c010187a: 29 d0 sub %edx,%eax +c010187c: c1 e0 03 shl $0x3,%eax +c010187f: 8d 90 84 56 12 c0 lea -0x3feda97c(%eax),%edx +c0101885: 8b 45 e0 mov -0x20(%ebp),%eax +c0101888: 89 02 mov %eax,(%edx) + ide_devices[ideno].size = sectors; +c010188a: 0f b7 55 f6 movzwl -0xa(%ebp),%edx +c010188e: 89 d0 mov %edx,%eax +c0101890: c1 e0 03 shl $0x3,%eax +c0101893: 29 d0 sub %edx,%eax +c0101895: c1 e0 03 shl $0x3,%eax +c0101898: 8d 90 88 56 12 c0 lea -0x3feda978(%eax),%edx +c010189e: 8b 45 f0 mov -0x10(%ebp),%eax +c01018a1: 89 02 mov %eax,(%edx) + + /* check if supports LBA */ + assert((*(unsigned short *)(ident + IDE_IDENT_CAPABILITIES) & 0x200) != 0); +c01018a3: 8b 45 e4 mov -0x1c(%ebp),%eax +c01018a6: 83 c0 62 add $0x62,%eax +c01018a9: 0f b7 00 movzwl (%eax),%eax +c01018ac: 25 00 02 00 00 and $0x200,%eax +c01018b1: 85 c0 test %eax,%eax +c01018b3: 75 24 jne c01018d9 +c01018b5: c7 44 24 0c 9c 90 10 movl $0xc010909c,0xc(%esp) +c01018bc: c0 +c01018bd: c7 44 24 08 df 90 10 movl $0xc01090df,0x8(%esp) +c01018c4: c0 +c01018c5: c7 44 24 04 7d 00 00 movl $0x7d,0x4(%esp) +c01018cc: 00 +c01018cd: c7 04 24 f4 90 10 c0 movl $0xc01090f4,(%esp) +c01018d4: e8 69 f3 ff ff call c0100c42 <__panic> + + unsigned char *model = ide_devices[ideno].model, *data = ident + IDE_IDENT_MODEL; +c01018d9: 0f b7 55 f6 movzwl -0xa(%ebp),%edx +c01018dd: 89 d0 mov %edx,%eax +c01018df: c1 e0 03 shl $0x3,%eax +c01018e2: 29 d0 sub %edx,%eax +c01018e4: c1 e0 03 shl $0x3,%eax +c01018e7: 05 80 56 12 c0 add $0xc0125680,%eax +c01018ec: 83 c0 0c add $0xc,%eax +c01018ef: 89 45 dc mov %eax,-0x24(%ebp) +c01018f2: 8b 45 e4 mov -0x1c(%ebp),%eax +c01018f5: 83 c0 36 add $0x36,%eax +c01018f8: 89 45 d8 mov %eax,-0x28(%ebp) + unsigned int i, length = 40; +c01018fb: c7 45 d4 28 00 00 00 movl $0x28,-0x2c(%ebp) + for (i = 0; i < length; i += 2) { +c0101902: c7 45 ec 00 00 00 00 movl $0x0,-0x14(%ebp) +c0101909: eb 34 jmp c010193f + model[i] = data[i + 1], model[i + 1] = data[i]; +c010190b: 8b 45 ec mov -0x14(%ebp),%eax +c010190e: 8d 50 01 lea 0x1(%eax),%edx +c0101911: 8b 45 d8 mov -0x28(%ebp),%eax +c0101914: 01 c2 add %eax,%edx +c0101916: 8b 4d dc mov -0x24(%ebp),%ecx +c0101919: 8b 45 ec mov -0x14(%ebp),%eax +c010191c: 01 c8 add %ecx,%eax +c010191e: 0f b6 12 movzbl (%edx),%edx +c0101921: 88 10 mov %dl,(%eax) +c0101923: 8b 55 d8 mov -0x28(%ebp),%edx +c0101926: 8b 45 ec mov -0x14(%ebp),%eax +c0101929: 01 c2 add %eax,%edx +c010192b: 8b 45 ec mov -0x14(%ebp),%eax +c010192e: 8d 48 01 lea 0x1(%eax),%ecx +c0101931: 8b 45 dc mov -0x24(%ebp),%eax +c0101934: 01 c8 add %ecx,%eax +c0101936: 0f b6 12 movzbl (%edx),%edx +c0101939: 88 10 mov %dl,(%eax) + for (i = 0; i < length; i += 2) { +c010193b: 83 45 ec 02 addl $0x2,-0x14(%ebp) +c010193f: 8b 45 ec mov -0x14(%ebp),%eax +c0101942: 3b 45 d4 cmp -0x2c(%ebp),%eax +c0101945: 72 c4 jb c010190b + } + do { + model[i] = '\0'; +c0101947: 8b 55 dc mov -0x24(%ebp),%edx +c010194a: 8b 45 ec mov -0x14(%ebp),%eax +c010194d: 01 d0 add %edx,%eax +c010194f: c6 00 00 movb $0x0,(%eax) + } while (i -- > 0 && model[i] == ' '); +c0101952: 8b 45 ec mov -0x14(%ebp),%eax +c0101955: 8d 50 ff lea -0x1(%eax),%edx +c0101958: 89 55 ec mov %edx,-0x14(%ebp) +c010195b: 85 c0 test %eax,%eax +c010195d: 74 0f je c010196e +c010195f: 8b 55 dc mov -0x24(%ebp),%edx +c0101962: 8b 45 ec mov -0x14(%ebp),%eax +c0101965: 01 d0 add %edx,%eax +c0101967: 0f b6 00 movzbl (%eax),%eax +c010196a: 3c 20 cmp $0x20,%al +c010196c: 74 d9 je c0101947 + + cprintf("ide %d: %10u(sectors), '%s'.\n", ideno, ide_devices[ideno].size, ide_devices[ideno].model); +c010196e: 0f b7 55 f6 movzwl -0xa(%ebp),%edx +c0101972: 89 d0 mov %edx,%eax +c0101974: c1 e0 03 shl $0x3,%eax +c0101977: 29 d0 sub %edx,%eax +c0101979: c1 e0 03 shl $0x3,%eax +c010197c: 05 80 56 12 c0 add $0xc0125680,%eax +c0101981: 8d 48 0c lea 0xc(%eax),%ecx +c0101984: 0f b7 55 f6 movzwl -0xa(%ebp),%edx +c0101988: 89 d0 mov %edx,%eax +c010198a: c1 e0 03 shl $0x3,%eax +c010198d: 29 d0 sub %edx,%eax +c010198f: c1 e0 03 shl $0x3,%eax +c0101992: 05 88 56 12 c0 add $0xc0125688,%eax +c0101997: 8b 10 mov (%eax),%edx +c0101999: 0f b7 45 f6 movzwl -0xa(%ebp),%eax +c010199d: 89 4c 24 0c mov %ecx,0xc(%esp) +c01019a1: 89 54 24 08 mov %edx,0x8(%esp) +c01019a5: 89 44 24 04 mov %eax,0x4(%esp) +c01019a9: c7 04 24 06 91 10 c0 movl $0xc0109106,(%esp) +c01019b0: e8 c0 e9 ff ff call c0100375 +c01019b5: eb 01 jmp c01019b8 + continue ; +c01019b7: 90 nop + for (ideno = 0; ideno < MAX_IDE; ideno ++) { +c01019b8: 0f b7 45 f6 movzwl -0xa(%ebp),%eax +c01019bc: 40 inc %eax +c01019bd: 66 89 45 f6 mov %ax,-0xa(%ebp) +c01019c1: 0f b7 45 f6 movzwl -0xa(%ebp),%eax +c01019c5: 83 f8 03 cmp $0x3,%eax +c01019c8: 0f 86 36 fd ff ff jbe c0101704 + } + + // enable ide interrupt + pic_enable(IRQ_IDE1); +c01019ce: c7 04 24 0e 00 00 00 movl $0xe,(%esp) +c01019d5: e8 83 05 00 00 call c0101f5d + pic_enable(IRQ_IDE2); +c01019da: c7 04 24 0f 00 00 00 movl $0xf,(%esp) +c01019e1: e8 77 05 00 00 call c0101f5d +} +c01019e6: 90 nop +c01019e7: 81 c4 50 02 00 00 add $0x250,%esp +c01019ed: 5b pop %ebx +c01019ee: 5f pop %edi +c01019ef: 5d pop %ebp +c01019f0: c3 ret + +c01019f1 : + +bool +ide_device_valid(unsigned short ideno) { +c01019f1: 55 push %ebp +c01019f2: 89 e5 mov %esp,%ebp +c01019f4: 83 ec 04 sub $0x4,%esp +c01019f7: 8b 45 08 mov 0x8(%ebp),%eax +c01019fa: 66 89 45 fc mov %ax,-0x4(%ebp) + return VALID_IDE(ideno); +c01019fe: 0f b7 45 fc movzwl -0x4(%ebp),%eax +c0101a02: 83 f8 03 cmp $0x3,%eax +c0101a05: 77 21 ja c0101a28 +c0101a07: 0f b7 55 fc movzwl -0x4(%ebp),%edx +c0101a0b: 89 d0 mov %edx,%eax +c0101a0d: c1 e0 03 shl $0x3,%eax +c0101a10: 29 d0 sub %edx,%eax +c0101a12: c1 e0 03 shl $0x3,%eax +c0101a15: 05 80 56 12 c0 add $0xc0125680,%eax +c0101a1a: 0f b6 00 movzbl (%eax),%eax +c0101a1d: 84 c0 test %al,%al +c0101a1f: 74 07 je c0101a28 +c0101a21: b8 01 00 00 00 mov $0x1,%eax +c0101a26: eb 05 jmp c0101a2d +c0101a28: b8 00 00 00 00 mov $0x0,%eax +} +c0101a2d: 89 ec mov %ebp,%esp +c0101a2f: 5d pop %ebp +c0101a30: c3 ret + +c0101a31 : + +size_t +ide_device_size(unsigned short ideno) { +c0101a31: 55 push %ebp +c0101a32: 89 e5 mov %esp,%ebp +c0101a34: 83 ec 08 sub $0x8,%esp +c0101a37: 8b 45 08 mov 0x8(%ebp),%eax +c0101a3a: 66 89 45 fc mov %ax,-0x4(%ebp) + if (ide_device_valid(ideno)) { +c0101a3e: 0f b7 45 fc movzwl -0x4(%ebp),%eax +c0101a42: 89 04 24 mov %eax,(%esp) +c0101a45: e8 a7 ff ff ff call c01019f1 +c0101a4a: 85 c0 test %eax,%eax +c0101a4c: 74 17 je c0101a65 + return ide_devices[ideno].size; +c0101a4e: 0f b7 55 fc movzwl -0x4(%ebp),%edx +c0101a52: 89 d0 mov %edx,%eax +c0101a54: c1 e0 03 shl $0x3,%eax +c0101a57: 29 d0 sub %edx,%eax +c0101a59: c1 e0 03 shl $0x3,%eax +c0101a5c: 05 88 56 12 c0 add $0xc0125688,%eax +c0101a61: 8b 00 mov (%eax),%eax +c0101a63: eb 05 jmp c0101a6a + } + return 0; +c0101a65: b8 00 00 00 00 mov $0x0,%eax +} +c0101a6a: 89 ec mov %ebp,%esp +c0101a6c: 5d pop %ebp +c0101a6d: c3 ret + +c0101a6e : + +int +ide_read_secs(unsigned short ideno, uint32_t secno, void *dst, size_t nsecs) { +c0101a6e: 55 push %ebp +c0101a6f: 89 e5 mov %esp,%ebp +c0101a71: 57 push %edi +c0101a72: 53 push %ebx +c0101a73: 83 ec 50 sub $0x50,%esp +c0101a76: 8b 45 08 mov 0x8(%ebp),%eax +c0101a79: 66 89 45 c4 mov %ax,-0x3c(%ebp) + assert(nsecs <= MAX_NSECS && VALID_IDE(ideno)); +c0101a7d: 81 7d 14 80 00 00 00 cmpl $0x80,0x14(%ebp) +c0101a84: 77 23 ja c0101aa9 +c0101a86: 0f b7 45 c4 movzwl -0x3c(%ebp),%eax +c0101a8a: 83 f8 03 cmp $0x3,%eax +c0101a8d: 77 1a ja c0101aa9 +c0101a8f: 0f b7 55 c4 movzwl -0x3c(%ebp),%edx +c0101a93: 89 d0 mov %edx,%eax +c0101a95: c1 e0 03 shl $0x3,%eax +c0101a98: 29 d0 sub %edx,%eax +c0101a9a: c1 e0 03 shl $0x3,%eax +c0101a9d: 05 80 56 12 c0 add $0xc0125680,%eax +c0101aa2: 0f b6 00 movzbl (%eax),%eax +c0101aa5: 84 c0 test %al,%al +c0101aa7: 75 24 jne c0101acd +c0101aa9: c7 44 24 0c 24 91 10 movl $0xc0109124,0xc(%esp) +c0101ab0: c0 +c0101ab1: c7 44 24 08 df 90 10 movl $0xc01090df,0x8(%esp) +c0101ab8: c0 +c0101ab9: c7 44 24 04 9f 00 00 movl $0x9f,0x4(%esp) +c0101ac0: 00 +c0101ac1: c7 04 24 f4 90 10 c0 movl $0xc01090f4,(%esp) +c0101ac8: e8 75 f1 ff ff call c0100c42 <__panic> + assert(secno < MAX_DISK_NSECS && secno + nsecs <= MAX_DISK_NSECS); +c0101acd: 81 7d 0c ff ff ff 0f cmpl $0xfffffff,0xc(%ebp) +c0101ad4: 77 0f ja c0101ae5 +c0101ad6: 8b 55 0c mov 0xc(%ebp),%edx +c0101ad9: 8b 45 14 mov 0x14(%ebp),%eax +c0101adc: 01 d0 add %edx,%eax +c0101ade: 3d 00 00 00 10 cmp $0x10000000,%eax +c0101ae3: 76 24 jbe c0101b09 +c0101ae5: c7 44 24 0c 4c 91 10 movl $0xc010914c,0xc(%esp) +c0101aec: c0 +c0101aed: c7 44 24 08 df 90 10 movl $0xc01090df,0x8(%esp) +c0101af4: c0 +c0101af5: c7 44 24 04 a0 00 00 movl $0xa0,0x4(%esp) +c0101afc: 00 +c0101afd: c7 04 24 f4 90 10 c0 movl $0xc01090f4,(%esp) +c0101b04: e8 39 f1 ff ff call c0100c42 <__panic> + unsigned short iobase = IO_BASE(ideno), ioctrl = IO_CTRL(ideno); +c0101b09: 0f b7 45 c4 movzwl -0x3c(%ebp),%eax +c0101b0d: d1 e8 shr %eax +c0101b0f: 0f b7 c0 movzwl %ax,%eax +c0101b12: 8b 04 85 94 90 10 c0 mov -0x3fef6f6c(,%eax,4),%eax +c0101b19: 66 89 45 f2 mov %ax,-0xe(%ebp) +c0101b1d: 0f b7 45 c4 movzwl -0x3c(%ebp),%eax +c0101b21: d1 e8 shr %eax +c0101b23: 0f b7 c0 movzwl %ax,%eax +c0101b26: 0f b7 04 85 96 90 10 movzwl -0x3fef6f6a(,%eax,4),%eax +c0101b2d: c0 +c0101b2e: 66 89 45 f0 mov %ax,-0x10(%ebp) + + ide_wait_ready(iobase, 0); +c0101b32: 0f b7 45 f2 movzwl -0xe(%ebp),%eax +c0101b36: c7 44 24 04 00 00 00 movl $0x0,0x4(%esp) +c0101b3d: 00 +c0101b3e: 89 04 24 mov %eax,(%esp) +c0101b41: e8 4d fb ff ff call c0101693 + + // generate interrupt + outb(ioctrl + ISA_CTRL, 0); +c0101b46: 8b 45 f0 mov -0x10(%ebp),%eax +c0101b49: 83 c0 02 add $0x2,%eax +c0101b4c: 0f b7 c0 movzwl %ax,%eax +c0101b4f: 66 89 45 d6 mov %ax,-0x2a(%ebp) +c0101b53: c6 45 d5 00 movb $0x0,-0x2b(%ebp) + asm volatile ("outb %0, %1" :: "a" (data), "d" (port) : "memory"); +c0101b57: 0f b6 45 d5 movzbl -0x2b(%ebp),%eax +c0101b5b: 0f b7 55 d6 movzwl -0x2a(%ebp),%edx +c0101b5f: ee out %al,(%dx) +} +c0101b60: 90 nop + outb(iobase + ISA_SECCNT, nsecs); +c0101b61: 8b 45 14 mov 0x14(%ebp),%eax +c0101b64: 0f b6 c0 movzbl %al,%eax +c0101b67: 0f b7 55 f2 movzwl -0xe(%ebp),%edx +c0101b6b: 83 c2 02 add $0x2,%edx +c0101b6e: 0f b7 d2 movzwl %dx,%edx +c0101b71: 66 89 55 da mov %dx,-0x26(%ebp) +c0101b75: 88 45 d9 mov %al,-0x27(%ebp) + asm volatile ("outb %0, %1" :: "a" (data), "d" (port) : "memory"); +c0101b78: 0f b6 45 d9 movzbl -0x27(%ebp),%eax +c0101b7c: 0f b7 55 da movzwl -0x26(%ebp),%edx +c0101b80: ee out %al,(%dx) +} +c0101b81: 90 nop + outb(iobase + ISA_SECTOR, secno & 0xFF); +c0101b82: 8b 45 0c mov 0xc(%ebp),%eax +c0101b85: 0f b6 c0 movzbl %al,%eax +c0101b88: 0f b7 55 f2 movzwl -0xe(%ebp),%edx +c0101b8c: 83 c2 03 add $0x3,%edx +c0101b8f: 0f b7 d2 movzwl %dx,%edx +c0101b92: 66 89 55 de mov %dx,-0x22(%ebp) +c0101b96: 88 45 dd mov %al,-0x23(%ebp) + asm volatile ("outb %0, %1" :: "a" (data), "d" (port) : "memory"); +c0101b99: 0f b6 45 dd movzbl -0x23(%ebp),%eax +c0101b9d: 0f b7 55 de movzwl -0x22(%ebp),%edx +c0101ba1: ee out %al,(%dx) +} +c0101ba2: 90 nop + outb(iobase + ISA_CYL_LO, (secno >> 8) & 0xFF); +c0101ba3: 8b 45 0c mov 0xc(%ebp),%eax +c0101ba6: c1 e8 08 shr $0x8,%eax +c0101ba9: 0f b6 c0 movzbl %al,%eax +c0101bac: 0f b7 55 f2 movzwl -0xe(%ebp),%edx +c0101bb0: 83 c2 04 add $0x4,%edx +c0101bb3: 0f b7 d2 movzwl %dx,%edx +c0101bb6: 66 89 55 e2 mov %dx,-0x1e(%ebp) +c0101bba: 88 45 e1 mov %al,-0x1f(%ebp) + asm volatile ("outb %0, %1" :: "a" (data), "d" (port) : "memory"); +c0101bbd: 0f b6 45 e1 movzbl -0x1f(%ebp),%eax +c0101bc1: 0f b7 55 e2 movzwl -0x1e(%ebp),%edx +c0101bc5: ee out %al,(%dx) +} +c0101bc6: 90 nop + outb(iobase + ISA_CYL_HI, (secno >> 16) & 0xFF); +c0101bc7: 8b 45 0c mov 0xc(%ebp),%eax +c0101bca: c1 e8 10 shr $0x10,%eax +c0101bcd: 0f b6 c0 movzbl %al,%eax +c0101bd0: 0f b7 55 f2 movzwl -0xe(%ebp),%edx +c0101bd4: 83 c2 05 add $0x5,%edx +c0101bd7: 0f b7 d2 movzwl %dx,%edx +c0101bda: 66 89 55 e6 mov %dx,-0x1a(%ebp) +c0101bde: 88 45 e5 mov %al,-0x1b(%ebp) + asm volatile ("outb %0, %1" :: "a" (data), "d" (port) : "memory"); +c0101be1: 0f b6 45 e5 movzbl -0x1b(%ebp),%eax +c0101be5: 0f b7 55 e6 movzwl -0x1a(%ebp),%edx +c0101be9: ee out %al,(%dx) +} +c0101bea: 90 nop + outb(iobase + ISA_SDH, 0xE0 | ((ideno & 1) << 4) | ((secno >> 24) & 0xF)); +c0101beb: 8b 45 c4 mov -0x3c(%ebp),%eax +c0101bee: c0 e0 04 shl $0x4,%al +c0101bf1: 24 10 and $0x10,%al +c0101bf3: 88 c2 mov %al,%dl +c0101bf5: 8b 45 0c mov 0xc(%ebp),%eax +c0101bf8: c1 e8 18 shr $0x18,%eax +c0101bfb: 24 0f and $0xf,%al +c0101bfd: 08 d0 or %dl,%al +c0101bff: 0c e0 or $0xe0,%al +c0101c01: 0f b6 c0 movzbl %al,%eax +c0101c04: 0f b7 55 f2 movzwl -0xe(%ebp),%edx +c0101c08: 83 c2 06 add $0x6,%edx +c0101c0b: 0f b7 d2 movzwl %dx,%edx +c0101c0e: 66 89 55 ea mov %dx,-0x16(%ebp) +c0101c12: 88 45 e9 mov %al,-0x17(%ebp) + asm volatile ("outb %0, %1" :: "a" (data), "d" (port) : "memory"); +c0101c15: 0f b6 45 e9 movzbl -0x17(%ebp),%eax +c0101c19: 0f b7 55 ea movzwl -0x16(%ebp),%edx +c0101c1d: ee out %al,(%dx) +} +c0101c1e: 90 nop + outb(iobase + ISA_COMMAND, IDE_CMD_READ); +c0101c1f: 0f b7 45 f2 movzwl -0xe(%ebp),%eax +c0101c23: 83 c0 07 add $0x7,%eax +c0101c26: 0f b7 c0 movzwl %ax,%eax +c0101c29: 66 89 45 ee mov %ax,-0x12(%ebp) +c0101c2d: c6 45 ed 20 movb $0x20,-0x13(%ebp) + asm volatile ("outb %0, %1" :: "a" (data), "d" (port) : "memory"); +c0101c31: 0f b6 45 ed movzbl -0x13(%ebp),%eax +c0101c35: 0f b7 55 ee movzwl -0x12(%ebp),%edx +c0101c39: ee out %al,(%dx) +} +c0101c3a: 90 nop + + int ret = 0; +c0101c3b: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) + for (; nsecs > 0; nsecs --, dst += SECTSIZE) { +c0101c42: eb 58 jmp c0101c9c + if ((ret = ide_wait_ready(iobase, 1)) != 0) { +c0101c44: 0f b7 45 f2 movzwl -0xe(%ebp),%eax +c0101c48: c7 44 24 04 01 00 00 movl $0x1,0x4(%esp) +c0101c4f: 00 +c0101c50: 89 04 24 mov %eax,(%esp) +c0101c53: e8 3b fa ff ff call c0101693 +c0101c58: 89 45 f4 mov %eax,-0xc(%ebp) +c0101c5b: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) +c0101c5f: 75 43 jne c0101ca4 + goto out; + } + insl(iobase, dst, SECTSIZE / sizeof(uint32_t)); +c0101c61: 0f b7 45 f2 movzwl -0xe(%ebp),%eax +c0101c65: 89 45 d0 mov %eax,-0x30(%ebp) +c0101c68: 8b 45 10 mov 0x10(%ebp),%eax +c0101c6b: 89 45 cc mov %eax,-0x34(%ebp) +c0101c6e: c7 45 c8 80 00 00 00 movl $0x80,-0x38(%ebp) + asm volatile ( +c0101c75: 8b 55 d0 mov -0x30(%ebp),%edx +c0101c78: 8b 4d cc mov -0x34(%ebp),%ecx +c0101c7b: 8b 45 c8 mov -0x38(%ebp),%eax +c0101c7e: 89 cb mov %ecx,%ebx +c0101c80: 89 df mov %ebx,%edi +c0101c82: 89 c1 mov %eax,%ecx +c0101c84: fc cld +c0101c85: f2 6d repnz insl (%dx),%es:(%edi) +c0101c87: 89 c8 mov %ecx,%eax +c0101c89: 89 fb mov %edi,%ebx +c0101c8b: 89 5d cc mov %ebx,-0x34(%ebp) +c0101c8e: 89 45 c8 mov %eax,-0x38(%ebp) +} +c0101c91: 90 nop + for (; nsecs > 0; nsecs --, dst += SECTSIZE) { +c0101c92: ff 4d 14 decl 0x14(%ebp) +c0101c95: 81 45 10 00 02 00 00 addl $0x200,0x10(%ebp) +c0101c9c: 83 7d 14 00 cmpl $0x0,0x14(%ebp) +c0101ca0: 75 a2 jne c0101c44 + } + +out: +c0101ca2: eb 01 jmp c0101ca5 + goto out; +c0101ca4: 90 nop + return ret; +c0101ca5: 8b 45 f4 mov -0xc(%ebp),%eax +} +c0101ca8: 83 c4 50 add $0x50,%esp +c0101cab: 5b pop %ebx +c0101cac: 5f pop %edi +c0101cad: 5d pop %ebp +c0101cae: c3 ret + +c0101caf : + +int +ide_write_secs(unsigned short ideno, uint32_t secno, const void *src, size_t nsecs) { +c0101caf: 55 push %ebp +c0101cb0: 89 e5 mov %esp,%ebp +c0101cb2: 56 push %esi +c0101cb3: 53 push %ebx +c0101cb4: 83 ec 50 sub $0x50,%esp +c0101cb7: 8b 45 08 mov 0x8(%ebp),%eax +c0101cba: 66 89 45 c4 mov %ax,-0x3c(%ebp) + assert(nsecs <= MAX_NSECS && VALID_IDE(ideno)); +c0101cbe: 81 7d 14 80 00 00 00 cmpl $0x80,0x14(%ebp) +c0101cc5: 77 23 ja c0101cea +c0101cc7: 0f b7 45 c4 movzwl -0x3c(%ebp),%eax +c0101ccb: 83 f8 03 cmp $0x3,%eax +c0101cce: 77 1a ja c0101cea +c0101cd0: 0f b7 55 c4 movzwl -0x3c(%ebp),%edx +c0101cd4: 89 d0 mov %edx,%eax +c0101cd6: c1 e0 03 shl $0x3,%eax +c0101cd9: 29 d0 sub %edx,%eax +c0101cdb: c1 e0 03 shl $0x3,%eax +c0101cde: 05 80 56 12 c0 add $0xc0125680,%eax +c0101ce3: 0f b6 00 movzbl (%eax),%eax +c0101ce6: 84 c0 test %al,%al +c0101ce8: 75 24 jne c0101d0e +c0101cea: c7 44 24 0c 24 91 10 movl $0xc0109124,0xc(%esp) +c0101cf1: c0 +c0101cf2: c7 44 24 08 df 90 10 movl $0xc01090df,0x8(%esp) +c0101cf9: c0 +c0101cfa: c7 44 24 04 bc 00 00 movl $0xbc,0x4(%esp) +c0101d01: 00 +c0101d02: c7 04 24 f4 90 10 c0 movl $0xc01090f4,(%esp) +c0101d09: e8 34 ef ff ff call c0100c42 <__panic> + assert(secno < MAX_DISK_NSECS && secno + nsecs <= MAX_DISK_NSECS); +c0101d0e: 81 7d 0c ff ff ff 0f cmpl $0xfffffff,0xc(%ebp) +c0101d15: 77 0f ja c0101d26 +c0101d17: 8b 55 0c mov 0xc(%ebp),%edx +c0101d1a: 8b 45 14 mov 0x14(%ebp),%eax +c0101d1d: 01 d0 add %edx,%eax +c0101d1f: 3d 00 00 00 10 cmp $0x10000000,%eax +c0101d24: 76 24 jbe c0101d4a +c0101d26: c7 44 24 0c 4c 91 10 movl $0xc010914c,0xc(%esp) +c0101d2d: c0 +c0101d2e: c7 44 24 08 df 90 10 movl $0xc01090df,0x8(%esp) +c0101d35: c0 +c0101d36: c7 44 24 04 bd 00 00 movl $0xbd,0x4(%esp) +c0101d3d: 00 +c0101d3e: c7 04 24 f4 90 10 c0 movl $0xc01090f4,(%esp) +c0101d45: e8 f8 ee ff ff call c0100c42 <__panic> + unsigned short iobase = IO_BASE(ideno), ioctrl = IO_CTRL(ideno); +c0101d4a: 0f b7 45 c4 movzwl -0x3c(%ebp),%eax +c0101d4e: d1 e8 shr %eax +c0101d50: 0f b7 c0 movzwl %ax,%eax +c0101d53: 8b 04 85 94 90 10 c0 mov -0x3fef6f6c(,%eax,4),%eax +c0101d5a: 66 89 45 f2 mov %ax,-0xe(%ebp) +c0101d5e: 0f b7 45 c4 movzwl -0x3c(%ebp),%eax +c0101d62: d1 e8 shr %eax +c0101d64: 0f b7 c0 movzwl %ax,%eax +c0101d67: 0f b7 04 85 96 90 10 movzwl -0x3fef6f6a(,%eax,4),%eax +c0101d6e: c0 +c0101d6f: 66 89 45 f0 mov %ax,-0x10(%ebp) + + ide_wait_ready(iobase, 0); +c0101d73: 0f b7 45 f2 movzwl -0xe(%ebp),%eax +c0101d77: c7 44 24 04 00 00 00 movl $0x0,0x4(%esp) +c0101d7e: 00 +c0101d7f: 89 04 24 mov %eax,(%esp) +c0101d82: e8 0c f9 ff ff call c0101693 + + // generate interrupt + outb(ioctrl + ISA_CTRL, 0); +c0101d87: 8b 45 f0 mov -0x10(%ebp),%eax +c0101d8a: 83 c0 02 add $0x2,%eax +c0101d8d: 0f b7 c0 movzwl %ax,%eax +c0101d90: 66 89 45 d6 mov %ax,-0x2a(%ebp) +c0101d94: c6 45 d5 00 movb $0x0,-0x2b(%ebp) + asm volatile ("outb %0, %1" :: "a" (data), "d" (port) : "memory"); +c0101d98: 0f b6 45 d5 movzbl -0x2b(%ebp),%eax +c0101d9c: 0f b7 55 d6 movzwl -0x2a(%ebp),%edx +c0101da0: ee out %al,(%dx) +} +c0101da1: 90 nop + outb(iobase + ISA_SECCNT, nsecs); +c0101da2: 8b 45 14 mov 0x14(%ebp),%eax +c0101da5: 0f b6 c0 movzbl %al,%eax +c0101da8: 0f b7 55 f2 movzwl -0xe(%ebp),%edx +c0101dac: 83 c2 02 add $0x2,%edx +c0101daf: 0f b7 d2 movzwl %dx,%edx +c0101db2: 66 89 55 da mov %dx,-0x26(%ebp) +c0101db6: 88 45 d9 mov %al,-0x27(%ebp) + asm volatile ("outb %0, %1" :: "a" (data), "d" (port) : "memory"); +c0101db9: 0f b6 45 d9 movzbl -0x27(%ebp),%eax +c0101dbd: 0f b7 55 da movzwl -0x26(%ebp),%edx +c0101dc1: ee out %al,(%dx) +} +c0101dc2: 90 nop + outb(iobase + ISA_SECTOR, secno & 0xFF); +c0101dc3: 8b 45 0c mov 0xc(%ebp),%eax +c0101dc6: 0f b6 c0 movzbl %al,%eax +c0101dc9: 0f b7 55 f2 movzwl -0xe(%ebp),%edx +c0101dcd: 83 c2 03 add $0x3,%edx +c0101dd0: 0f b7 d2 movzwl %dx,%edx +c0101dd3: 66 89 55 de mov %dx,-0x22(%ebp) +c0101dd7: 88 45 dd mov %al,-0x23(%ebp) + asm volatile ("outb %0, %1" :: "a" (data), "d" (port) : "memory"); +c0101dda: 0f b6 45 dd movzbl -0x23(%ebp),%eax +c0101dde: 0f b7 55 de movzwl -0x22(%ebp),%edx +c0101de2: ee out %al,(%dx) +} +c0101de3: 90 nop + outb(iobase + ISA_CYL_LO, (secno >> 8) & 0xFF); +c0101de4: 8b 45 0c mov 0xc(%ebp),%eax +c0101de7: c1 e8 08 shr $0x8,%eax +c0101dea: 0f b6 c0 movzbl %al,%eax +c0101ded: 0f b7 55 f2 movzwl -0xe(%ebp),%edx +c0101df1: 83 c2 04 add $0x4,%edx +c0101df4: 0f b7 d2 movzwl %dx,%edx +c0101df7: 66 89 55 e2 mov %dx,-0x1e(%ebp) +c0101dfb: 88 45 e1 mov %al,-0x1f(%ebp) + asm volatile ("outb %0, %1" :: "a" (data), "d" (port) : "memory"); +c0101dfe: 0f b6 45 e1 movzbl -0x1f(%ebp),%eax +c0101e02: 0f b7 55 e2 movzwl -0x1e(%ebp),%edx +c0101e06: ee out %al,(%dx) +} +c0101e07: 90 nop + outb(iobase + ISA_CYL_HI, (secno >> 16) & 0xFF); +c0101e08: 8b 45 0c mov 0xc(%ebp),%eax +c0101e0b: c1 e8 10 shr $0x10,%eax +c0101e0e: 0f b6 c0 movzbl %al,%eax +c0101e11: 0f b7 55 f2 movzwl -0xe(%ebp),%edx +c0101e15: 83 c2 05 add $0x5,%edx +c0101e18: 0f b7 d2 movzwl %dx,%edx +c0101e1b: 66 89 55 e6 mov %dx,-0x1a(%ebp) +c0101e1f: 88 45 e5 mov %al,-0x1b(%ebp) + asm volatile ("outb %0, %1" :: "a" (data), "d" (port) : "memory"); +c0101e22: 0f b6 45 e5 movzbl -0x1b(%ebp),%eax +c0101e26: 0f b7 55 e6 movzwl -0x1a(%ebp),%edx +c0101e2a: ee out %al,(%dx) +} +c0101e2b: 90 nop + outb(iobase + ISA_SDH, 0xE0 | ((ideno & 1) << 4) | ((secno >> 24) & 0xF)); +c0101e2c: 8b 45 c4 mov -0x3c(%ebp),%eax +c0101e2f: c0 e0 04 shl $0x4,%al +c0101e32: 24 10 and $0x10,%al +c0101e34: 88 c2 mov %al,%dl +c0101e36: 8b 45 0c mov 0xc(%ebp),%eax +c0101e39: c1 e8 18 shr $0x18,%eax +c0101e3c: 24 0f and $0xf,%al +c0101e3e: 08 d0 or %dl,%al +c0101e40: 0c e0 or $0xe0,%al +c0101e42: 0f b6 c0 movzbl %al,%eax +c0101e45: 0f b7 55 f2 movzwl -0xe(%ebp),%edx +c0101e49: 83 c2 06 add $0x6,%edx +c0101e4c: 0f b7 d2 movzwl %dx,%edx +c0101e4f: 66 89 55 ea mov %dx,-0x16(%ebp) +c0101e53: 88 45 e9 mov %al,-0x17(%ebp) + asm volatile ("outb %0, %1" :: "a" (data), "d" (port) : "memory"); +c0101e56: 0f b6 45 e9 movzbl -0x17(%ebp),%eax +c0101e5a: 0f b7 55 ea movzwl -0x16(%ebp),%edx +c0101e5e: ee out %al,(%dx) +} +c0101e5f: 90 nop + outb(iobase + ISA_COMMAND, IDE_CMD_WRITE); +c0101e60: 0f b7 45 f2 movzwl -0xe(%ebp),%eax +c0101e64: 83 c0 07 add $0x7,%eax +c0101e67: 0f b7 c0 movzwl %ax,%eax +c0101e6a: 66 89 45 ee mov %ax,-0x12(%ebp) +c0101e6e: c6 45 ed 30 movb $0x30,-0x13(%ebp) + asm volatile ("outb %0, %1" :: "a" (data), "d" (port) : "memory"); +c0101e72: 0f b6 45 ed movzbl -0x13(%ebp),%eax +c0101e76: 0f b7 55 ee movzwl -0x12(%ebp),%edx +c0101e7a: ee out %al,(%dx) +} +c0101e7b: 90 nop + + int ret = 0; +c0101e7c: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) + for (; nsecs > 0; nsecs --, src += SECTSIZE) { +c0101e83: eb 58 jmp c0101edd + if ((ret = ide_wait_ready(iobase, 1)) != 0) { +c0101e85: 0f b7 45 f2 movzwl -0xe(%ebp),%eax +c0101e89: c7 44 24 04 01 00 00 movl $0x1,0x4(%esp) +c0101e90: 00 +c0101e91: 89 04 24 mov %eax,(%esp) +c0101e94: e8 fa f7 ff ff call c0101693 +c0101e99: 89 45 f4 mov %eax,-0xc(%ebp) +c0101e9c: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) +c0101ea0: 75 43 jne c0101ee5 + goto out; + } + outsl(iobase, src, SECTSIZE / sizeof(uint32_t)); +c0101ea2: 0f b7 45 f2 movzwl -0xe(%ebp),%eax +c0101ea6: 89 45 d0 mov %eax,-0x30(%ebp) +c0101ea9: 8b 45 10 mov 0x10(%ebp),%eax +c0101eac: 89 45 cc mov %eax,-0x34(%ebp) +c0101eaf: c7 45 c8 80 00 00 00 movl $0x80,-0x38(%ebp) + asm volatile ( +c0101eb6: 8b 55 d0 mov -0x30(%ebp),%edx +c0101eb9: 8b 4d cc mov -0x34(%ebp),%ecx +c0101ebc: 8b 45 c8 mov -0x38(%ebp),%eax +c0101ebf: 89 cb mov %ecx,%ebx +c0101ec1: 89 de mov %ebx,%esi +c0101ec3: 89 c1 mov %eax,%ecx +c0101ec5: fc cld +c0101ec6: f2 6f repnz outsl %ds:(%esi),(%dx) +c0101ec8: 89 c8 mov %ecx,%eax +c0101eca: 89 f3 mov %esi,%ebx +c0101ecc: 89 5d cc mov %ebx,-0x34(%ebp) +c0101ecf: 89 45 c8 mov %eax,-0x38(%ebp) +} +c0101ed2: 90 nop + for (; nsecs > 0; nsecs --, src += SECTSIZE) { +c0101ed3: ff 4d 14 decl 0x14(%ebp) +c0101ed6: 81 45 10 00 02 00 00 addl $0x200,0x10(%ebp) +c0101edd: 83 7d 14 00 cmpl $0x0,0x14(%ebp) +c0101ee1: 75 a2 jne c0101e85 + } + +out: +c0101ee3: eb 01 jmp c0101ee6 + goto out; +c0101ee5: 90 nop + return ret; +c0101ee6: 8b 45 f4 mov -0xc(%ebp),%eax +} +c0101ee9: 83 c4 50 add $0x50,%esp +c0101eec: 5b pop %ebx +c0101eed: 5e pop %esi +c0101eee: 5d pop %ebp +c0101eef: c3 ret + +c0101ef0 : +#include +#include + +/* intr_enable - enable irq interrupt */ +void +intr_enable(void) { +c0101ef0: 55 push %ebp +c0101ef1: 89 e5 mov %esp,%ebp + asm volatile ("sti"); +c0101ef3: fb sti +} +c0101ef4: 90 nop + sti(); +} +c0101ef5: 90 nop +c0101ef6: 5d pop %ebp +c0101ef7: c3 ret + +c0101ef8 : + +/* intr_disable - disable irq interrupt */ +void +intr_disable(void) { +c0101ef8: 55 push %ebp +c0101ef9: 89 e5 mov %esp,%ebp + asm volatile ("cli" ::: "memory"); +c0101efb: fa cli +} +c0101efc: 90 nop + cli(); +} +c0101efd: 90 nop +c0101efe: 5d pop %ebp +c0101eff: c3 ret + +c0101f00 : + * 此函数用于更新内部的IRQ掩码,并在设备初始化后,将掩码值写入到两个级联的可编程中断控制器(PIC)中 + * + * @param mask 一个16位的掩码值,用于配置IRQ线的掩码 + */ +static void +pic_setmask(uint16_t mask) { +c0101f00: 55 push %ebp +c0101f01: 89 e5 mov %esp,%ebp +c0101f03: 83 ec 14 sub $0x14,%esp +c0101f06: 8b 45 08 mov 0x8(%ebp),%eax +c0101f09: 66 89 45 ec mov %ax,-0x14(%ebp) + // 更新内部的IRQ掩码 + irq_mask = mask; +c0101f0d: 8b 45 ec mov -0x14(%ebp),%eax +c0101f10: 66 a3 50 25 12 c0 mov %ax,0xc0122550 + // 仅在设备已初始化的情况下执行后续操作 + if (did_init) { +c0101f16: a1 60 57 12 c0 mov 0xc0125760,%eax +c0101f1b: 85 c0 test %eax,%eax +c0101f1d: 74 39 je c0101f58 + // 向主PIC发送低8位的掩码 + outb(IO_PIC1 + 1, mask); +c0101f1f: 8b 45 ec mov -0x14(%ebp),%eax +c0101f22: 0f b6 c0 movzbl %al,%eax +c0101f25: 66 c7 45 fa 21 00 movw $0x21,-0x6(%ebp) +c0101f2b: 88 45 f9 mov %al,-0x7(%ebp) + asm volatile ("outb %0, %1" :: "a" (data), "d" (port) : "memory"); +c0101f2e: 0f b6 45 f9 movzbl -0x7(%ebp),%eax +c0101f32: 0f b7 55 fa movzwl -0x6(%ebp),%edx +c0101f36: ee out %al,(%dx) +} +c0101f37: 90 nop + // 向从PIC发送高8位的掩码 + outb(IO_PIC2 + 1, mask >> 8); +c0101f38: 0f b7 45 ec movzwl -0x14(%ebp),%eax +c0101f3c: c1 e8 08 shr $0x8,%eax +c0101f3f: 0f b7 c0 movzwl %ax,%eax +c0101f42: 0f b6 c0 movzbl %al,%eax +c0101f45: 66 c7 45 fe a1 00 movw $0xa1,-0x2(%ebp) +c0101f4b: 88 45 fd mov %al,-0x3(%ebp) + asm volatile ("outb %0, %1" :: "a" (data), "d" (port) : "memory"); +c0101f4e: 0f b6 45 fd movzbl -0x3(%ebp),%eax +c0101f52: 0f b7 55 fe movzwl -0x2(%ebp),%edx +c0101f56: ee out %al,(%dx) +} +c0101f57: 90 nop + } +} +c0101f58: 90 nop +c0101f59: 89 ec mov %ebp,%esp +c0101f5b: 5d pop %ebp +c0101f5c: c3 ret + +c0101f5d : + * 此函数通过更新中断掩码寄存器来启用特定的中断源 + * + * @param irq 要启用的中断源的编号 + */ +void +pic_enable(unsigned int irq) { +c0101f5d: 55 push %ebp +c0101f5e: 89 e5 mov %esp,%ebp +c0101f60: 83 ec 04 sub $0x4,%esp + // 更新中断掩码,清除对应IRQ的掩码位以启用中断 + pic_setmask(irq_mask & ~(1 << irq)); +c0101f63: 8b 45 08 mov 0x8(%ebp),%eax +c0101f66: ba 01 00 00 00 mov $0x1,%edx +c0101f6b: 88 c1 mov %al,%cl +c0101f6d: d3 e2 shl %cl,%edx +c0101f6f: 89 d0 mov %edx,%eax +c0101f71: 98 cwtl +c0101f72: f7 d0 not %eax +c0101f74: 0f bf d0 movswl %ax,%edx +c0101f77: 0f b7 05 50 25 12 c0 movzwl 0xc0122550,%eax +c0101f7e: 98 cwtl +c0101f7f: 21 d0 and %edx,%eax +c0101f81: 98 cwtl +c0101f82: 0f b7 c0 movzwl %ax,%eax +c0101f85: 89 04 24 mov %eax,(%esp) +c0101f88: e8 73 ff ff ff call c0101f00 +} +c0101f8d: 90 nop +c0101f8e: 89 ec mov %ebp,%esp +c0101f90: 5d pop %ebp +c0101f91: c3 ret + +c0101f92 : + +/* pic_init - initialize the 8259A interrupt controllers */ +// 初始化可编程中断控制器(PIC) +// 此函数配置 PIC 以准备处理系统中的中断 +void +pic_init(void) { +c0101f92: 55 push %ebp +c0101f93: 89 e5 mov %esp,%ebp +c0101f95: 83 ec 44 sub $0x44,%esp + // 标记 PIC 初始化完成 + did_init = 1; +c0101f98: c7 05 60 57 12 c0 01 movl $0x1,0xc0125760 +c0101f9f: 00 00 00 +c0101fa2: 66 c7 45 ca 21 00 movw $0x21,-0x36(%ebp) +c0101fa8: c6 45 c9 ff movb $0xff,-0x37(%ebp) + asm volatile ("outb %0, %1" :: "a" (data), "d" (port) : "memory"); +c0101fac: 0f b6 45 c9 movzbl -0x37(%ebp),%eax +c0101fb0: 0f b7 55 ca movzwl -0x36(%ebp),%edx +c0101fb4: ee out %al,(%dx) +} +c0101fb5: 90 nop +c0101fb6: 66 c7 45 ce a1 00 movw $0xa1,-0x32(%ebp) +c0101fbc: c6 45 cd ff movb $0xff,-0x33(%ebp) + asm volatile ("outb %0, %1" :: "a" (data), "d" (port) : "memory"); +c0101fc0: 0f b6 45 cd movzbl -0x33(%ebp),%eax +c0101fc4: 0f b7 55 ce movzwl -0x32(%ebp),%edx +c0101fc8: ee out %al,(%dx) +} +c0101fc9: 90 nop +c0101fca: 66 c7 45 d2 20 00 movw $0x20,-0x2e(%ebp) +c0101fd0: c6 45 d1 11 movb $0x11,-0x2f(%ebp) + asm volatile ("outb %0, %1" :: "a" (data), "d" (port) : "memory"); +c0101fd4: 0f b6 45 d1 movzbl -0x2f(%ebp),%eax +c0101fd8: 0f b7 55 d2 movzwl -0x2e(%ebp),%edx +c0101fdc: ee out %al,(%dx) +} +c0101fdd: 90 nop +c0101fde: 66 c7 45 d6 21 00 movw $0x21,-0x2a(%ebp) +c0101fe4: c6 45 d5 20 movb $0x20,-0x2b(%ebp) + asm volatile ("outb %0, %1" :: "a" (data), "d" (port) : "memory"); +c0101fe8: 0f b6 45 d5 movzbl -0x2b(%ebp),%eax +c0101fec: 0f b7 55 d6 movzwl -0x2a(%ebp),%edx +c0101ff0: ee out %al,(%dx) +} +c0101ff1: 90 nop +c0101ff2: 66 c7 45 da 21 00 movw $0x21,-0x26(%ebp) +c0101ff8: c6 45 d9 04 movb $0x4,-0x27(%ebp) + asm volatile ("outb %0, %1" :: "a" (data), "d" (port) : "memory"); +c0101ffc: 0f b6 45 d9 movzbl -0x27(%ebp),%eax +c0102000: 0f b7 55 da movzwl -0x26(%ebp),%edx +c0102004: ee out %al,(%dx) +} +c0102005: 90 nop +c0102006: 66 c7 45 de 21 00 movw $0x21,-0x22(%ebp) +c010200c: c6 45 dd 03 movb $0x3,-0x23(%ebp) + asm volatile ("outb %0, %1" :: "a" (data), "d" (port) : "memory"); +c0102010: 0f b6 45 dd movzbl -0x23(%ebp),%eax +c0102014: 0f b7 55 de movzwl -0x22(%ebp),%edx +c0102018: ee out %al,(%dx) +} +c0102019: 90 nop +c010201a: 66 c7 45 e2 a0 00 movw $0xa0,-0x1e(%ebp) +c0102020: c6 45 e1 11 movb $0x11,-0x1f(%ebp) + asm volatile ("outb %0, %1" :: "a" (data), "d" (port) : "memory"); +c0102024: 0f b6 45 e1 movzbl -0x1f(%ebp),%eax +c0102028: 0f b7 55 e2 movzwl -0x1e(%ebp),%edx +c010202c: ee out %al,(%dx) +} +c010202d: 90 nop +c010202e: 66 c7 45 e6 a1 00 movw $0xa1,-0x1a(%ebp) +c0102034: c6 45 e5 28 movb $0x28,-0x1b(%ebp) + asm volatile ("outb %0, %1" :: "a" (data), "d" (port) : "memory"); +c0102038: 0f b6 45 e5 movzbl -0x1b(%ebp),%eax +c010203c: 0f b7 55 e6 movzwl -0x1a(%ebp),%edx +c0102040: ee out %al,(%dx) +} +c0102041: 90 nop +c0102042: 66 c7 45 ea a1 00 movw $0xa1,-0x16(%ebp) +c0102048: c6 45 e9 02 movb $0x2,-0x17(%ebp) + asm volatile ("outb %0, %1" :: "a" (data), "d" (port) : "memory"); +c010204c: 0f b6 45 e9 movzbl -0x17(%ebp),%eax +c0102050: 0f b7 55 ea movzwl -0x16(%ebp),%edx +c0102054: ee out %al,(%dx) +} +c0102055: 90 nop +c0102056: 66 c7 45 ee a1 00 movw $0xa1,-0x12(%ebp) +c010205c: c6 45 ed 03 movb $0x3,-0x13(%ebp) + asm volatile ("outb %0, %1" :: "a" (data), "d" (port) : "memory"); +c0102060: 0f b6 45 ed movzbl -0x13(%ebp),%eax +c0102064: 0f b7 55 ee movzwl -0x12(%ebp),%edx +c0102068: ee out %al,(%dx) +} +c0102069: 90 nop +c010206a: 66 c7 45 f2 20 00 movw $0x20,-0xe(%ebp) +c0102070: c6 45 f1 68 movb $0x68,-0xf(%ebp) + asm volatile ("outb %0, %1" :: "a" (data), "d" (port) : "memory"); +c0102074: 0f b6 45 f1 movzbl -0xf(%ebp),%eax +c0102078: 0f b7 55 f2 movzwl -0xe(%ebp),%edx +c010207c: ee out %al,(%dx) +} +c010207d: 90 nop +c010207e: 66 c7 45 f6 20 00 movw $0x20,-0xa(%ebp) +c0102084: c6 45 f5 0a movb $0xa,-0xb(%ebp) + asm volatile ("outb %0, %1" :: "a" (data), "d" (port) : "memory"); +c0102088: 0f b6 45 f5 movzbl -0xb(%ebp),%eax +c010208c: 0f b7 55 f6 movzwl -0xa(%ebp),%edx +c0102090: ee out %al,(%dx) +} +c0102091: 90 nop +c0102092: 66 c7 45 fa a0 00 movw $0xa0,-0x6(%ebp) +c0102098: c6 45 f9 68 movb $0x68,-0x7(%ebp) + asm volatile ("outb %0, %1" :: "a" (data), "d" (port) : "memory"); +c010209c: 0f b6 45 f9 movzbl -0x7(%ebp),%eax +c01020a0: 0f b7 55 fa movzwl -0x6(%ebp),%edx +c01020a4: ee out %al,(%dx) +} +c01020a5: 90 nop +c01020a6: 66 c7 45 fe a0 00 movw $0xa0,-0x2(%ebp) +c01020ac: c6 45 fd 0a movb $0xa,-0x3(%ebp) + asm volatile ("outb %0, %1" :: "a" (data), "d" (port) : "memory"); +c01020b0: 0f b6 45 fd movzbl -0x3(%ebp),%eax +c01020b4: 0f b7 55 fe movzwl -0x2(%ebp),%edx +c01020b8: ee out %al,(%dx) +} +c01020b9: 90 nop + + outb(IO_PIC2, 0x68); // OCW3 + outb(IO_PIC2, 0x0a); // OCW3 + + // 如果有自定义的中断掩码,则设置中断掩码 + if (irq_mask != 0xFFFF) { +c01020ba: 0f b7 05 50 25 12 c0 movzwl 0xc0122550,%eax +c01020c1: 3d ff ff 00 00 cmp $0xffff,%eax +c01020c6: 74 0f je c01020d7 + pic_setmask(irq_mask); +c01020c8: 0f b7 05 50 25 12 c0 movzwl 0xc0122550,%eax +c01020cf: 89 04 24 mov %eax,(%esp) +c01020d2: e8 29 fe ff ff call c0101f00 + } +} +c01020d7: 90 nop +c01020d8: 89 ec mov %ebp,%esp +c01020da: 5d pop %ebp +c01020db: c3 ret + +c01020dc : +#include +#include + +#define TICK_NUM 100 + +static void print_ticks() { +c01020dc: 55 push %ebp +c01020dd: 89 e5 mov %esp,%ebp +c01020df: 83 ec 18 sub $0x18,%esp + cprintf("%d ticks\n",TICK_NUM); +c01020e2: c7 44 24 04 64 00 00 movl $0x64,0x4(%esp) +c01020e9: 00 +c01020ea: c7 04 24 a0 91 10 c0 movl $0xc01091a0,(%esp) +c01020f1: e8 7f e2 ff ff call c0100375 +#ifdef DEBUG_GRADE + cprintf("End of Test.\n"); + panic("EOT: kernel seems ok.");//panic 是一个用于处理内核崩溃的函数,它会打印出错误信息并导致系统停止运行。 +#endif +} +c01020f6: 90 nop +c01020f7: 89 ec mov %ebp,%esp +c01020f9: 5d pop %ebp +c01020fa: c3 ret + +c01020fb : + sizeof(idt) - 1, (uintptr_t)idt +}; + +/* idt_init - initialize IDT to each of the entry points in kern/trap/vectors.S */ +void +idt_init(void) { +c01020fb: 55 push %ebp +c01020fc: 89 e5 mov %esp,%ebp +c01020fe: 83 ec 10 sub $0x10,%esp + * Notice: the argument of lidt is idt_pd. try to find it! + */ + + extern uintptr_t __vectors[];//声明了一个外部数组 __vectors,该数组存储中断服务例程(ISR)的地址。 + int i; + for (i = 0; i < sizeof(idt) / sizeof(struct gatedesc); i ++) { +c0102101: c7 45 fc 00 00 00 00 movl $0x0,-0x4(%ebp) +c0102108: e9 c4 00 00 00 jmp c01021d1 + SETGATE(idt[i], 0, GD_KTEXT, __vectors[i], DPL_KERNEL); +c010210d: 8b 45 fc mov -0x4(%ebp),%eax +c0102110: 8b 04 85 e0 25 12 c0 mov -0x3fedda20(,%eax,4),%eax +c0102117: 0f b7 d0 movzwl %ax,%edx +c010211a: 8b 45 fc mov -0x4(%ebp),%eax +c010211d: 66 89 14 c5 e0 57 12 mov %dx,-0x3feda820(,%eax,8) +c0102124: c0 +c0102125: 8b 45 fc mov -0x4(%ebp),%eax +c0102128: 66 c7 04 c5 e2 57 12 movw $0x8,-0x3feda81e(,%eax,8) +c010212f: c0 08 00 +c0102132: 8b 45 fc mov -0x4(%ebp),%eax +c0102135: 0f b6 14 c5 e4 57 12 movzbl -0x3feda81c(,%eax,8),%edx +c010213c: c0 +c010213d: 80 e2 e0 and $0xe0,%dl +c0102140: 88 14 c5 e4 57 12 c0 mov %dl,-0x3feda81c(,%eax,8) +c0102147: 8b 45 fc mov -0x4(%ebp),%eax +c010214a: 0f b6 14 c5 e4 57 12 movzbl -0x3feda81c(,%eax,8),%edx +c0102151: c0 +c0102152: 80 e2 1f and $0x1f,%dl +c0102155: 88 14 c5 e4 57 12 c0 mov %dl,-0x3feda81c(,%eax,8) +c010215c: 8b 45 fc mov -0x4(%ebp),%eax +c010215f: 0f b6 14 c5 e5 57 12 movzbl -0x3feda81b(,%eax,8),%edx +c0102166: c0 +c0102167: 80 e2 f0 and $0xf0,%dl +c010216a: 80 ca 0e or $0xe,%dl +c010216d: 88 14 c5 e5 57 12 c0 mov %dl,-0x3feda81b(,%eax,8) +c0102174: 8b 45 fc mov -0x4(%ebp),%eax +c0102177: 0f b6 14 c5 e5 57 12 movzbl -0x3feda81b(,%eax,8),%edx +c010217e: c0 +c010217f: 80 e2 ef and $0xef,%dl +c0102182: 88 14 c5 e5 57 12 c0 mov %dl,-0x3feda81b(,%eax,8) +c0102189: 8b 45 fc mov -0x4(%ebp),%eax +c010218c: 0f b6 14 c5 e5 57 12 movzbl -0x3feda81b(,%eax,8),%edx +c0102193: c0 +c0102194: 80 e2 9f and $0x9f,%dl +c0102197: 88 14 c5 e5 57 12 c0 mov %dl,-0x3feda81b(,%eax,8) +c010219e: 8b 45 fc mov -0x4(%ebp),%eax +c01021a1: 0f b6 14 c5 e5 57 12 movzbl -0x3feda81b(,%eax,8),%edx +c01021a8: c0 +c01021a9: 80 ca 80 or $0x80,%dl +c01021ac: 88 14 c5 e5 57 12 c0 mov %dl,-0x3feda81b(,%eax,8) +c01021b3: 8b 45 fc mov -0x4(%ebp),%eax +c01021b6: 8b 04 85 e0 25 12 c0 mov -0x3fedda20(,%eax,4),%eax +c01021bd: c1 e8 10 shr $0x10,%eax +c01021c0: 0f b7 d0 movzwl %ax,%edx +c01021c3: 8b 45 fc mov -0x4(%ebp),%eax +c01021c6: 66 89 14 c5 e6 57 12 mov %dx,-0x3feda81a(,%eax,8) +c01021cd: c0 + for (i = 0; i < sizeof(idt) / sizeof(struct gatedesc); i ++) { +c01021ce: ff 45 fc incl -0x4(%ebp) +c01021d1: 8b 45 fc mov -0x4(%ebp),%eax +c01021d4: 3d ff 00 00 00 cmp $0xff,%eax +c01021d9: 0f 86 2e ff ff ff jbe c010210d + //宏用于配置每个 IDT 条目.0 表示最高特权级(内核级)GD_KTEXT: 指向内核代码段的选择子,确保 ISR 在内核代码段中执行。 + //__vectors[i]: 对应中断的 ISR 地址,DPL_KERNEL: 描述符特权级,表示该中断只能由内核级代码触发。 + // set for switch from user to kernel + //SETGATE 这行代码特别设置了 T_SWITCH_TOK(一个特定的中断向量,用于用户态到内核态的切换)的 IDT 条目。 + //DPL_USER 表示该中断可以由用户态代码触发 + SETGATE(idt[T_SWITCH_TOK], 0, GD_KTEXT, __vectors[T_SWITCH_TOK], DPL_USER); +c01021df: a1 c4 27 12 c0 mov 0xc01227c4,%eax +c01021e4: 0f b7 c0 movzwl %ax,%eax +c01021e7: 66 a3 a8 5b 12 c0 mov %ax,0xc0125ba8 +c01021ed: 66 c7 05 aa 5b 12 c0 movw $0x8,0xc0125baa +c01021f4: 08 00 +c01021f6: 0f b6 05 ac 5b 12 c0 movzbl 0xc0125bac,%eax +c01021fd: 24 e0 and $0xe0,%al +c01021ff: a2 ac 5b 12 c0 mov %al,0xc0125bac +c0102204: 0f b6 05 ac 5b 12 c0 movzbl 0xc0125bac,%eax +c010220b: 24 1f and $0x1f,%al +c010220d: a2 ac 5b 12 c0 mov %al,0xc0125bac +c0102212: 0f b6 05 ad 5b 12 c0 movzbl 0xc0125bad,%eax +c0102219: 24 f0 and $0xf0,%al +c010221b: 0c 0e or $0xe,%al +c010221d: a2 ad 5b 12 c0 mov %al,0xc0125bad +c0102222: 0f b6 05 ad 5b 12 c0 movzbl 0xc0125bad,%eax +c0102229: 24 ef and $0xef,%al +c010222b: a2 ad 5b 12 c0 mov %al,0xc0125bad +c0102230: 0f b6 05 ad 5b 12 c0 movzbl 0xc0125bad,%eax +c0102237: 0c 60 or $0x60,%al +c0102239: a2 ad 5b 12 c0 mov %al,0xc0125bad +c010223e: 0f b6 05 ad 5b 12 c0 movzbl 0xc0125bad,%eax +c0102245: 0c 80 or $0x80,%al +c0102247: a2 ad 5b 12 c0 mov %al,0xc0125bad +c010224c: a1 c4 27 12 c0 mov 0xc01227c4,%eax +c0102251: c1 e8 10 shr $0x10,%eax +c0102254: 0f b7 c0 movzwl %ax,%eax +c0102257: 66 a3 ae 5b 12 c0 mov %ax,0xc0125bae +c010225d: c7 45 f8 60 25 12 c0 movl $0xc0122560,-0x8(%ebp) + asm volatile ("lidt (%0)" :: "r" (pd) : "memory"); +c0102264: 8b 45 f8 mov -0x8(%ebp),%eax +c0102267: 0f 01 18 lidtl (%eax) +} +c010226a: 90 nop + // load the IDT + //使用 lidt 指令将 IDT 描述符加载到 CPU 中 + lidt(&idt_pd); +} +c010226b: 90 nop +c010226c: 89 ec mov %ebp,%esp +c010226e: 5d pop %ebp +c010226f: c3 ret + +c0102270 : + +static const char * +trapname(int trapno) { +c0102270: 55 push %ebp +c0102271: 89 e5 mov %esp,%ebp + "Alignment Check", + "Machine-Check", + "SIMD Floating-Point Exception" + }; + //如果 trapno 小于数组长度,则返回对应的异常名称。 + if (trapno < sizeof(excnames)/sizeof(const char * const)) { +c0102273: 8b 45 08 mov 0x8(%ebp),%eax +c0102276: 83 f8 13 cmp $0x13,%eax +c0102279: 77 0c ja c0102287 + return excnames[trapno]; +c010227b: 8b 45 08 mov 0x8(%ebp),%eax +c010227e: 8b 04 85 00 96 10 c0 mov -0x3fef6a00(,%eax,4),%eax +c0102285: eb 18 jmp c010229f + } + //如果 trapno 在 IRQ_OFFSET 和 IRQ_OFFSET + 16 之间,表示它是一个硬件中断 + if (trapno >= IRQ_OFFSET && trapno < IRQ_OFFSET + 16) { +c0102287: 83 7d 08 1f cmpl $0x1f,0x8(%ebp) +c010228b: 7e 0d jle c010229a +c010228d: 83 7d 08 2f cmpl $0x2f,0x8(%ebp) +c0102291: 7f 07 jg c010229a + return "Hardware Interrupt"; +c0102293: b8 aa 91 10 c0 mov $0xc01091aa,%eax +c0102298: eb 05 jmp c010229f + } + return "(unknown trap)"; +c010229a: b8 bd 91 10 c0 mov $0xc01091bd,%eax +} +c010229f: 5d pop %ebp +c01022a0: c3 ret + +c01022a1 : + +/* trap_in_kernel - test if trap happened in kernel */ +bool +trap_in_kernel(struct trapframe *tf) { +c01022a1: 55 push %ebp +c01022a2: 89 e5 mov %esp,%ebp + return (tf->tf_cs == (uint16_t)KERNEL_CS); +c01022a4: 8b 45 08 mov 0x8(%ebp),%eax +c01022a7: 0f b7 40 3c movzwl 0x3c(%eax),%eax +c01022ab: 83 f8 08 cmp $0x8,%eax +c01022ae: 0f 94 c0 sete %al +c01022b1: 0f b6 c0 movzbl %al,%eax + //函数通过检查 tf 中的 tf_cs 字段来判断当前处于哪个特权级,tf_cs 存储了当前代码段选择子的值 + //当 tf->tf_cs 等于 KERNEL_CS 时,表示陷阱发生在内核模式下 +} +c01022b4: 5d pop %ebp +c01022b5: c3 ret + +c01022b6 : + "TF", "IF", "DF", "OF", NULL, NULL, "NT", NULL, + "RF", "VM", "AC", "VIF", "VIP", "ID", NULL, NULL, +}; +//struct trapframe *tf,一个指向 trapframe 结构的指针,包含有关陷阱发生时的 CPU 状态的信息。 +void +print_trapframe(struct trapframe *tf) { +c01022b6: 55 push %ebp +c01022b7: 89 e5 mov %esp,%ebp +c01022b9: 83 ec 28 sub $0x28,%esp + cprintf("trapframe at %p\n", tf); //打印陷阱框架地址 +c01022bc: 8b 45 08 mov 0x8(%ebp),%eax +c01022bf: 89 44 24 04 mov %eax,0x4(%esp) +c01022c3: c7 04 24 fe 91 10 c0 movl $0xc01091fe,(%esp) +c01022ca: e8 a6 e0 ff ff call c0100375 + print_regs(&tf->tf_regs); //打印寄存器状态 +c01022cf: 8b 45 08 mov 0x8(%ebp),%eax +c01022d2: 89 04 24 mov %eax,(%esp) +c01022d5: e8 8f 01 00 00 call c0102469 + //打印数据段(DS)、扩展段(ES)、文件段(FS)、通用段(GS)的值。 + cprintf(" ds 0x----%04x\n", tf->tf_ds); +c01022da: 8b 45 08 mov 0x8(%ebp),%eax +c01022dd: 0f b7 40 2c movzwl 0x2c(%eax),%eax +c01022e1: 89 44 24 04 mov %eax,0x4(%esp) +c01022e5: c7 04 24 0f 92 10 c0 movl $0xc010920f,(%esp) +c01022ec: e8 84 e0 ff ff call c0100375 + cprintf(" es 0x----%04x\n", tf->tf_es); +c01022f1: 8b 45 08 mov 0x8(%ebp),%eax +c01022f4: 0f b7 40 28 movzwl 0x28(%eax),%eax +c01022f8: 89 44 24 04 mov %eax,0x4(%esp) +c01022fc: c7 04 24 22 92 10 c0 movl $0xc0109222,(%esp) +c0102303: e8 6d e0 ff ff call c0100375 + cprintf(" fs 0x----%04x\n", tf->tf_fs); +c0102308: 8b 45 08 mov 0x8(%ebp),%eax +c010230b: 0f b7 40 24 movzwl 0x24(%eax),%eax +c010230f: 89 44 24 04 mov %eax,0x4(%esp) +c0102313: c7 04 24 35 92 10 c0 movl $0xc0109235,(%esp) +c010231a: e8 56 e0 ff ff call c0100375 + cprintf(" gs 0x----%04x\n", tf->tf_gs); +c010231f: 8b 45 08 mov 0x8(%ebp),%eax +c0102322: 0f b7 40 20 movzwl 0x20(%eax),%eax +c0102326: 89 44 24 04 mov %eax,0x4(%esp) +c010232a: c7 04 24 48 92 10 c0 movl $0xc0109248,(%esp) +c0102331: e8 3f e0 ff ff call c0100375 + // 打印陷阱号(trap number)及其对应的名称,通过调用 trapname 函数获取。 + cprintf(" trap 0x%08x %s\n", tf->tf_trapno, trapname(tf->tf_trapno)); +c0102336: 8b 45 08 mov 0x8(%ebp),%eax +c0102339: 8b 40 30 mov 0x30(%eax),%eax +c010233c: 89 04 24 mov %eax,(%esp) +c010233f: e8 2c ff ff ff call c0102270 +c0102344: 8b 55 08 mov 0x8(%ebp),%edx +c0102347: 8b 52 30 mov 0x30(%edx),%edx +c010234a: 89 44 24 08 mov %eax,0x8(%esp) +c010234e: 89 54 24 04 mov %edx,0x4(%esp) +c0102352: c7 04 24 5b 92 10 c0 movl $0xc010925b,(%esp) +c0102359: e8 17 e0 ff ff call c0100375 + cprintf(" err 0x%08x\n", tf->tf_err);// 如果有错误代码,打印该字段的值。 +c010235e: 8b 45 08 mov 0x8(%ebp),%eax +c0102361: 8b 40 34 mov 0x34(%eax),%eax +c0102364: 89 44 24 04 mov %eax,0x4(%esp) +c0102368: c7 04 24 6d 92 10 c0 movl $0xc010926d,(%esp) +c010236f: e8 01 e0 ff ff call c0100375 + cprintf(" eip 0x%08x\n", tf->tf_eip);//打印当前执行的指令指针(EIP),指向出错或中断的指令。 +c0102374: 8b 45 08 mov 0x8(%ebp),%eax +c0102377: 8b 40 38 mov 0x38(%eax),%eax +c010237a: 89 44 24 04 mov %eax,0x4(%esp) +c010237e: c7 04 24 7c 92 10 c0 movl $0xc010927c,(%esp) +c0102385: e8 eb df ff ff call c0100375 + cprintf(" cs 0x----%04x\n", tf->tf_cs);//打印代码段寄存器(CS)的值。 +c010238a: 8b 45 08 mov 0x8(%ebp),%eax +c010238d: 0f b7 40 3c movzwl 0x3c(%eax),%eax +c0102391: 89 44 24 04 mov %eax,0x4(%esp) +c0102395: c7 04 24 8b 92 10 c0 movl $0xc010928b,(%esp) +c010239c: e8 d4 df ff ff call c0100375 + cprintf(" flag 0x%08x ", tf->tf_eflags);// 打印标志寄存器(EFLAGS)的值 +c01023a1: 8b 45 08 mov 0x8(%ebp),%eax +c01023a4: 8b 40 40 mov 0x40(%eax),%eax +c01023a7: 89 44 24 04 mov %eax,0x4(%esp) +c01023ab: c7 04 24 9e 92 10 c0 movl $0xc010929e,(%esp) +c01023b2: e8 be df ff ff call c0100375 + //使用循环遍历 IA32flags 数组,j 表示当前标志位的位掩码。 + int i, j; + for (i = 0, j = 1; i < sizeof(IA32flags) / sizeof(IA32flags[0]); i ++, j <<= 1) { +c01023b7: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) +c01023be: c7 45 f0 01 00 00 00 movl $0x1,-0x10(%ebp) +c01023c5: eb 3d jmp c0102404 + if ((tf->tf_eflags & j) && IA32flags[i] != NULL) { +c01023c7: 8b 45 08 mov 0x8(%ebp),%eax +c01023ca: 8b 50 40 mov 0x40(%eax),%edx +c01023cd: 8b 45 f0 mov -0x10(%ebp),%eax +c01023d0: 21 d0 and %edx,%eax +c01023d2: 85 c0 test %eax,%eax +c01023d4: 74 28 je c01023fe +c01023d6: 8b 45 f4 mov -0xc(%ebp),%eax +c01023d9: 8b 04 85 80 25 12 c0 mov -0x3fedda80(,%eax,4),%eax +c01023e0: 85 c0 test %eax,%eax +c01023e2: 74 1a je c01023fe + cprintf("%s,", IA32flags[i]); +c01023e4: 8b 45 f4 mov -0xc(%ebp),%eax +c01023e7: 8b 04 85 80 25 12 c0 mov -0x3fedda80(,%eax,4),%eax +c01023ee: 89 44 24 04 mov %eax,0x4(%esp) +c01023f2: c7 04 24 ad 92 10 c0 movl $0xc01092ad,(%esp) +c01023f9: e8 77 df ff ff call c0100375 + for (i = 0, j = 1; i < sizeof(IA32flags) / sizeof(IA32flags[0]); i ++, j <<= 1) { +c01023fe: ff 45 f4 incl -0xc(%ebp) +c0102401: d1 65 f0 shll -0x10(%ebp) +c0102404: 8b 45 f4 mov -0xc(%ebp),%eax +c0102407: 83 f8 17 cmp $0x17,%eax +c010240a: 76 bb jbe c01023c7 + } + } + //通过位掩码 FL_IOPL_MASK 获取和打印当前的 I/O 特权级别。 + cprintf("IOPL=%d\n", (tf->tf_eflags & FL_IOPL_MASK) >> 12); +c010240c: 8b 45 08 mov 0x8(%ebp),%eax +c010240f: 8b 40 40 mov 0x40(%eax),%eax +c0102412: c1 e8 0c shr $0xc,%eax +c0102415: 83 e0 03 and $0x3,%eax +c0102418: 89 44 24 04 mov %eax,0x4(%esp) +c010241c: c7 04 24 b1 92 10 c0 movl $0xc01092b1,(%esp) +c0102423: e8 4d df ff ff call c0100375 + //如果陷阱不是在内核中发生的(通过 trap_in_kernel 判断), + //则打印栈指针(ESP)和栈段(SS)寄存器的值。 + if (!trap_in_kernel(tf)) { +c0102428: 8b 45 08 mov 0x8(%ebp),%eax +c010242b: 89 04 24 mov %eax,(%esp) +c010242e: e8 6e fe ff ff call c01022a1 +c0102433: 85 c0 test %eax,%eax +c0102435: 75 2d jne c0102464 + cprintf(" esp 0x%08x\n", tf->tf_esp); +c0102437: 8b 45 08 mov 0x8(%ebp),%eax +c010243a: 8b 40 44 mov 0x44(%eax),%eax +c010243d: 89 44 24 04 mov %eax,0x4(%esp) +c0102441: c7 04 24 ba 92 10 c0 movl $0xc01092ba,(%esp) +c0102448: e8 28 df ff ff call c0100375 + cprintf(" ss 0x----%04x\n", tf->tf_ss); +c010244d: 8b 45 08 mov 0x8(%ebp),%eax +c0102450: 0f b7 40 48 movzwl 0x48(%eax),%eax +c0102454: 89 44 24 04 mov %eax,0x4(%esp) +c0102458: c7 04 24 c9 92 10 c0 movl $0xc01092c9,(%esp) +c010245f: e8 11 df ff ff call c0100375 + } +} +c0102464: 90 nop +c0102465: 89 ec mov %ebp,%esp +c0102467: 5d pop %ebp +c0102468: c3 ret + +c0102469 : +//定义了一个名为 print_regs 的函数, +//打印出存储在 struct pushregs 结构体中的寄存器值。 +void +print_regs(struct pushregs *regs) { +c0102469: 55 push %ebp +c010246a: 89 e5 mov %esp,%ebp +c010246c: 83 ec 18 sub $0x18,%esp + cprintf(" edi 0x%08x\n", regs->reg_edi); +c010246f: 8b 45 08 mov 0x8(%ebp),%eax +c0102472: 8b 00 mov (%eax),%eax +c0102474: 89 44 24 04 mov %eax,0x4(%esp) +c0102478: c7 04 24 dc 92 10 c0 movl $0xc01092dc,(%esp) +c010247f: e8 f1 de ff ff call c0100375 + cprintf(" esi 0x%08x\n", regs->reg_esi); +c0102484: 8b 45 08 mov 0x8(%ebp),%eax +c0102487: 8b 40 04 mov 0x4(%eax),%eax +c010248a: 89 44 24 04 mov %eax,0x4(%esp) +c010248e: c7 04 24 eb 92 10 c0 movl $0xc01092eb,(%esp) +c0102495: e8 db de ff ff call c0100375 + cprintf(" ebp 0x%08x\n", regs->reg_ebp); +c010249a: 8b 45 08 mov 0x8(%ebp),%eax +c010249d: 8b 40 08 mov 0x8(%eax),%eax +c01024a0: 89 44 24 04 mov %eax,0x4(%esp) +c01024a4: c7 04 24 fa 92 10 c0 movl $0xc01092fa,(%esp) +c01024ab: e8 c5 de ff ff call c0100375 + cprintf(" oesp 0x%08x\n", regs->reg_oesp);//打印旧的栈指针(OESP),这个寄存器通常在陷阱或中断发生时用于记录上一个栈指针。 +c01024b0: 8b 45 08 mov 0x8(%ebp),%eax +c01024b3: 8b 40 0c mov 0xc(%eax),%eax +c01024b6: 89 44 24 04 mov %eax,0x4(%esp) +c01024ba: c7 04 24 09 93 10 c0 movl $0xc0109309,(%esp) +c01024c1: e8 af de ff ff call c0100375 + cprintf(" ebx 0x%08x\n", regs->reg_ebx); +c01024c6: 8b 45 08 mov 0x8(%ebp),%eax +c01024c9: 8b 40 10 mov 0x10(%eax),%eax +c01024cc: 89 44 24 04 mov %eax,0x4(%esp) +c01024d0: c7 04 24 18 93 10 c0 movl $0xc0109318,(%esp) +c01024d7: e8 99 de ff ff call c0100375 + cprintf(" edx 0x%08x\n", regs->reg_edx); +c01024dc: 8b 45 08 mov 0x8(%ebp),%eax +c01024df: 8b 40 14 mov 0x14(%eax),%eax +c01024e2: 89 44 24 04 mov %eax,0x4(%esp) +c01024e6: c7 04 24 27 93 10 c0 movl $0xc0109327,(%esp) +c01024ed: e8 83 de ff ff call c0100375 + cprintf(" ecx 0x%08x\n", regs->reg_ecx); +c01024f2: 8b 45 08 mov 0x8(%ebp),%eax +c01024f5: 8b 40 18 mov 0x18(%eax),%eax +c01024f8: 89 44 24 04 mov %eax,0x4(%esp) +c01024fc: c7 04 24 36 93 10 c0 movl $0xc0109336,(%esp) +c0102503: e8 6d de ff ff call c0100375 + cprintf(" eax 0x%08x\n", regs->reg_eax); +c0102508: 8b 45 08 mov 0x8(%ebp),%eax +c010250b: 8b 40 1c mov 0x1c(%eax),%eax +c010250e: 89 44 24 04 mov %eax,0x4(%esp) +c0102512: c7 04 24 45 93 10 c0 movl $0xc0109345,(%esp) +c0102519: e8 57 de ff ff call c0100375 +} +c010251e: 90 nop +c010251f: 89 ec mov %ebp,%esp +c0102521: 5d pop %ebp +c0102522: c3 ret + +c0102523 : + * 此函数用于输出页面故障的详细信息,包括故障地址、访问类型(读/写)、访问模式(用户/内核)以及故障类型(未找到页面/保护故障)。 + * + * @param tf 指向 trapframe 结构的指针,包含故障发生时的寄存器状态和错误代码。 + */ +static inline void +print_pgfault(struct trapframe *tf) { +c0102523: 55 push %ebp +c0102524: 89 e5 mov %esp,%ebp +c0102526: 83 ec 38 sub $0x38,%esp +c0102529: 89 5d fc mov %ebx,-0x4(%ebp) + * bit 2 == 0 表示内核模式,1 表示用户模式 + * */ + cprintf("page fault at 0x%08x: %c/%c [%s].\n", rcr2(), + (tf->tf_err & 4) ? 'U' : 'K', + (tf->tf_err & 2) ? 'W' : 'R', + (tf->tf_err & 1) ? "protection fault" : "no page found"); +c010252c: 8b 45 08 mov 0x8(%ebp),%eax +c010252f: 8b 40 34 mov 0x34(%eax),%eax +c0102532: 83 e0 01 and $0x1,%eax + cprintf("page fault at 0x%08x: %c/%c [%s].\n", rcr2(), +c0102535: 85 c0 test %eax,%eax +c0102537: 74 07 je c0102540 +c0102539: bb 54 93 10 c0 mov $0xc0109354,%ebx +c010253e: eb 05 jmp c0102545 +c0102540: bb 65 93 10 c0 mov $0xc0109365,%ebx + (tf->tf_err & 2) ? 'W' : 'R', +c0102545: 8b 45 08 mov 0x8(%ebp),%eax +c0102548: 8b 40 34 mov 0x34(%eax),%eax +c010254b: 83 e0 02 and $0x2,%eax + cprintf("page fault at 0x%08x: %c/%c [%s].\n", rcr2(), +c010254e: 85 c0 test %eax,%eax +c0102550: 74 07 je c0102559 +c0102552: b9 57 00 00 00 mov $0x57,%ecx +c0102557: eb 05 jmp c010255e +c0102559: b9 52 00 00 00 mov $0x52,%ecx + (tf->tf_err & 4) ? 'U' : 'K', +c010255e: 8b 45 08 mov 0x8(%ebp),%eax +c0102561: 8b 40 34 mov 0x34(%eax),%eax +c0102564: 83 e0 04 and $0x4,%eax + cprintf("page fault at 0x%08x: %c/%c [%s].\n", rcr2(), +c0102567: 85 c0 test %eax,%eax +c0102569: 74 07 je c0102572 +c010256b: ba 55 00 00 00 mov $0x55,%edx +c0102570: eb 05 jmp c0102577 +c0102572: ba 4b 00 00 00 mov $0x4b,%edx +} + +static inline uintptr_t +rcr2(void) { + uintptr_t cr2; + asm volatile ("mov %%cr2, %0" : "=r" (cr2) :: "memory"); +c0102577: 0f 20 d0 mov %cr2,%eax +c010257a: 89 45 f4 mov %eax,-0xc(%ebp) + return cr2; +c010257d: 8b 45 f4 mov -0xc(%ebp),%eax +c0102580: 89 5c 24 10 mov %ebx,0x10(%esp) +c0102584: 89 4c 24 0c mov %ecx,0xc(%esp) +c0102588: 89 54 24 08 mov %edx,0x8(%esp) +c010258c: 89 44 24 04 mov %eax,0x4(%esp) +c0102590: c7 04 24 74 93 10 c0 movl $0xc0109374,(%esp) +c0102597: e8 d9 dd ff ff call c0100375 +} +c010259c: 90 nop +c010259d: 8b 5d fc mov -0x4(%ebp),%ebx +c01025a0: 89 ec mov %ebp,%esp +c01025a2: 5d pop %ebp +c01025a3: c3 ret + +c01025a4 : + * + * @param tf 指向陷阱帧的指针,包含故障发生时的CPU状态信息 + * @return 返回页面故障处理的结果,或者在无法处理时引发系统崩溃 + */ +static int +pgfault_handler(struct trapframe *tf) { +c01025a4: 55 push %ebp +c01025a5: 89 e5 mov %esp,%ebp +c01025a7: 83 ec 28 sub $0x28,%esp + // 声明一个外部变量,用于检查内存管理结构 + extern struct mm_struct *check_mm_struct; + // 打印页面故障信息 + print_pgfault(tf); +c01025aa: 8b 45 08 mov 0x8(%ebp),%eax +c01025ad: 89 04 24 mov %eax,(%esp) +c01025b0: e8 6e ff ff ff call c0102523 + // 检查是否存在有效的内存管理结构 + if (check_mm_struct != NULL) { +c01025b5: a1 6c 61 12 c0 mov 0xc012616c,%eax +c01025ba: 85 c0 test %eax,%eax +c01025bc: 74 26 je c01025e4 + asm volatile ("mov %%cr2, %0" : "=r" (cr2) :: "memory"); +c01025be: 0f 20 d0 mov %cr2,%eax +c01025c1: 89 45 f4 mov %eax,-0xc(%ebp) + return cr2; +c01025c4: 8b 4d f4 mov -0xc(%ebp),%ecx + // 如果存在,调用页面故障处理函数 + return do_pgfault(check_mm_struct, tf->tf_err, rcr2()); +c01025c7: 8b 45 08 mov 0x8(%ebp),%eax +c01025ca: 8b 50 34 mov 0x34(%eax),%edx +c01025cd: a1 6c 61 12 c0 mov 0xc012616c,%eax +c01025d2: 89 4c 24 08 mov %ecx,0x8(%esp) +c01025d6: 89 54 24 04 mov %edx,0x4(%esp) +c01025da: 89 04 24 mov %eax,(%esp) +c01025dd: e8 ab 57 00 00 call c0107d8d +c01025e2: eb 1c jmp c0102600 + } + // 如果没有有效的内存管理结构,引发系统崩溃 + panic("unhandled page fault.\n"); +c01025e4: c7 44 24 08 97 93 10 movl $0xc0109397,0x8(%esp) +c01025eb: c0 +c01025ec: c7 44 24 04 d3 00 00 movl $0xd3,0x4(%esp) +c01025f3: 00 +c01025f4: c7 04 24 ae 93 10 c0 movl $0xc01093ae,(%esp) +c01025fb: e8 42 e6 ff ff call c0100c42 <__panic> +} +c0102600: 89 ec mov %ebp,%esp +c0102602: 5d pop %ebp +c0102603: c3 ret + +c0102604 : + +struct trapframe switchk2u, *switchu2k; +//定义了一个名为 trap_dispatch 的静态函数,根据发生的陷阱类型进行相应的处理。 +// 参数 tf 是指向陷阱帧的指针,包含了关于陷阱发生时的CPU状态信息。 +static void +trap_dispatch(struct trapframe *tf) { +c0102604: 55 push %ebp +c0102605: 89 e5 mov %esp,%ebp +c0102607: 83 ec 28 sub $0x28,%esp +c010260a: 89 5d fc mov %ebx,-0x4(%ebp) + char c; + + int ret; + //通过 switch 语句根据 tf->tf_trapno 的值来分发不同的陷阱处理逻辑。 + switch (tf->tf_trapno) { +c010260d: 8b 45 08 mov 0x8(%ebp),%eax +c0102610: 8b 40 30 mov 0x30(%eax),%eax +c0102613: 83 f8 79 cmp $0x79,%eax +c0102616: 0f 84 a2 01 00 00 je c01027be +c010261c: 83 f8 79 cmp $0x79,%eax +c010261f: 0f 87 16 02 00 00 ja c010283b +c0102625: 83 f8 2f cmp $0x2f,%eax +c0102628: 77 1e ja c0102648 +c010262a: 83 f8 0e cmp $0xe,%eax +c010262d: 0f 82 08 02 00 00 jb c010283b +c0102633: 83 e8 0e sub $0xe,%eax +c0102636: 83 f8 21 cmp $0x21,%eax +c0102639: 0f 87 fc 01 00 00 ja c010283b +c010263f: 8b 04 85 18 94 10 c0 mov -0x3fef6be8(,%eax,4),%eax +c0102646: ff e0 jmp *%eax +c0102648: 83 f8 78 cmp $0x78,%eax +c010264b: 0f 84 e3 00 00 00 je c0102734 +c0102651: e9 e5 01 00 00 jmp c010283b + case T_PGFLT: //page fault + // 处理页故障中断 + if ((ret = pgfault_handler(tf)) != 0) { +c0102656: 8b 45 08 mov 0x8(%ebp),%eax +c0102659: 89 04 24 mov %eax,(%esp) +c010265c: e8 43 ff ff ff call c01025a4 +c0102661: 89 45 f0 mov %eax,-0x10(%ebp) +c0102664: 83 7d f0 00 cmpl $0x0,-0x10(%ebp) +c0102668: 0f 84 05 02 00 00 je c0102873 + print_trapframe(tf); +c010266e: 8b 45 08 mov 0x8(%ebp),%eax +c0102671: 89 04 24 mov %eax,(%esp) +c0102674: e8 3d fc ff ff call c01022b6 + panic("handle pgfault failed. %e\n", ret); +c0102679: 8b 45 f0 mov -0x10(%ebp),%eax +c010267c: 89 44 24 0c mov %eax,0xc(%esp) +c0102680: c7 44 24 08 bf 93 10 movl $0xc01093bf,0x8(%esp) +c0102687: c0 +c0102688: c7 44 24 04 e7 00 00 movl $0xe7,0x4(%esp) +c010268f: 00 +c0102690: c7 04 24 ae 93 10 c0 movl $0xc01093ae,(%esp) +c0102697: e8 a6 e5 ff ff call c0100c42 <__panic> + /* handle the timer interrupt */ + /* (1) After a timer interrupt, you should record this event using a global variable (increase it), such as ticks in kern/driver/clock.c + * (2) Every TICK_NUM cycle, you can print some info using a funciton, such as print_ticks(). + * (3) Too Simple? Yes, I think so! + */ + ticks ++; //记录中断事件 +c010269c: a1 24 54 12 c0 mov 0xc0125424,%eax +c01026a1: 40 inc %eax +c01026a2: a3 24 54 12 c0 mov %eax,0xc0125424 + if (ticks % TICK_NUM == 0) +c01026a7: 8b 0d 24 54 12 c0 mov 0xc0125424,%ecx +c01026ad: ba 1f 85 eb 51 mov $0x51eb851f,%edx +c01026b2: 89 c8 mov %ecx,%eax +c01026b4: f7 e2 mul %edx +c01026b6: c1 ea 05 shr $0x5,%edx +c01026b9: 89 d0 mov %edx,%eax +c01026bb: c1 e0 02 shl $0x2,%eax +c01026be: 01 d0 add %edx,%eax +c01026c0: 8d 14 85 00 00 00 00 lea 0x0(,%eax,4),%edx +c01026c7: 01 d0 add %edx,%eax +c01026c9: c1 e0 02 shl $0x2,%eax +c01026cc: 29 c1 sub %eax,%ecx +c01026ce: 89 ca mov %ecx,%edx +c01026d0: 85 d2 test %edx,%edx +c01026d2: 0f 85 9e 01 00 00 jne c0102876 + { + print_ticks(); +c01026d8: e8 ff f9 ff ff call c01020dc + }//每经过 TICK_NUM 次周期时,调用 print_ticks() 打印信息。 + break; +c01026dd: e9 94 01 00 00 jmp c0102876 + //处理串口中断,调用 cons_getc() 从串口读取字符并打印。 + case IRQ_OFFSET + IRQ_COM1: + c = cons_getc(); +c01026e2: e8 3b ef ff ff call c0101622 +c01026e7: 88 45 f7 mov %al,-0x9(%ebp) + cprintf("serial [%03d] %c\n", c, c); +c01026ea: 0f be 55 f7 movsbl -0x9(%ebp),%edx +c01026ee: 0f be 45 f7 movsbl -0x9(%ebp),%eax +c01026f2: 89 54 24 08 mov %edx,0x8(%esp) +c01026f6: 89 44 24 04 mov %eax,0x4(%esp) +c01026fa: c7 04 24 da 93 10 c0 movl $0xc01093da,(%esp) +c0102701: e8 6f dc ff ff call c0100375 + break; +c0102706: e9 72 01 00 00 jmp c010287d + //处理键盘中断,调用 cons_getc() 读取键盘输入并打印。 + case IRQ_OFFSET + IRQ_KBD: + c = cons_getc(); +c010270b: e8 12 ef ff ff call c0101622 +c0102710: 88 45 f7 mov %al,-0x9(%ebp) + cprintf("kbd [%03d] %c\n", c, c); +c0102713: 0f be 55 f7 movsbl -0x9(%ebp),%edx +c0102717: 0f be 45 f7 movsbl -0x9(%ebp),%eax +c010271b: 89 54 24 08 mov %edx,0x8(%esp) +c010271f: 89 44 24 04 mov %eax,0x4(%esp) +c0102723: c7 04 24 ec 93 10 c0 movl $0xc01093ec,(%esp) +c010272a: e8 46 dc ff ff call c0100375 + break; +c010272f: e9 49 01 00 00 jmp c010287d + //LAB1 CHALLENGE 1 : YOUR CODE you should modify below codes. + case T_SWITCH_TOU://表示发生了从内核模式切换到用户模式的请求。 + if (tf->tf_cs != USER_CS) {//判断当前是否在内核模式下 +c0102734: 8b 45 08 mov 0x8(%ebp),%eax +c0102737: 0f b7 40 3c movzwl 0x3c(%eax),%eax +c010273b: 83 f8 1b cmp $0x1b,%eax +c010273e: 0f 84 35 01 00 00 je c0102879 + switchk2u = *tf; //保存当前陷阱框架 +c0102744: 8b 4d 08 mov 0x8(%ebp),%ecx +c0102747: b8 4c 00 00 00 mov $0x4c,%eax +c010274c: 83 e0 fc and $0xfffffffc,%eax +c010274f: 89 c3 mov %eax,%ebx +c0102751: b8 00 00 00 00 mov $0x0,%eax +c0102756: 8b 14 01 mov (%ecx,%eax,1),%edx +c0102759: 89 90 80 57 12 c0 mov %edx,-0x3feda880(%eax) +c010275f: 83 c0 04 add $0x4,%eax +c0102762: 39 d8 cmp %ebx,%eax +c0102764: 72 f0 jb c0102756 + switchk2u.tf_cs = USER_CS;//设置用户模式的段寄存器 +c0102766: 66 c7 05 bc 57 12 c0 movw $0x1b,0xc01257bc +c010276d: 1b 00 + //将数据段和栈段寄存器 都设置为 USER_DS(用户数据段) + switchk2u.tf_ds = switchk2u.tf_es = switchk2u.tf_ss = USER_DS; +c010276f: 66 c7 05 c8 57 12 c0 movw $0x23,0xc01257c8 +c0102776: 23 00 +c0102778: 0f b7 05 c8 57 12 c0 movzwl 0xc01257c8,%eax +c010277f: 66 a3 a8 57 12 c0 mov %ax,0xc01257a8 +c0102785: 0f b7 05 a8 57 12 c0 movzwl 0xc01257a8,%eax +c010278c: 66 a3 ac 57 12 c0 mov %ax,0xc01257ac + switchk2u.tf_esp = (uint32_t)tf + sizeof(struct trapframe) - 8; +c0102792: 8b 45 08 mov 0x8(%ebp),%eax +c0102795: 83 c0 44 add $0x44,%eax +c0102798: a3 c4 57 12 c0 mov %eax,0xc01257c4 + + // set eflags, make sure ucore can use io under user mode. + // if CPL > IOPL, then cpu will generate a general protection. + switchk2u.tf_eflags |= FL_IOPL_MASK;//允许用户模式下进行 I/O 操作 +c010279d: a1 c0 57 12 c0 mov 0xc01257c0,%eax +c01027a2: 0d 00 30 00 00 or $0x3000,%eax +c01027a7: a3 c0 57 12 c0 mov %eax,0xc01257c0 + + // set temporary stack + // then iret will jump to the right stack + *((uint32_t *)tf - 1) = (uint32_t)&switchk2u; +c01027ac: 8b 45 08 mov 0x8(%ebp),%eax +c01027af: 83 e8 04 sub $0x4,%eax +c01027b2: ba 80 57 12 c0 mov $0xc0125780,%edx +c01027b7: 89 10 mov %edx,(%eax) + } + break; +c01027b9: e9 bb 00 00 00 jmp c0102879 + case T_SWITCH_TOK://T_SWITCH_TOK 表示发生了从用户模式切换到内核模式的请求。 + if (tf->tf_cs != KERNEL_CS) { //判断当前是否在用户模式下 +c01027be: 8b 45 08 mov 0x8(%ebp),%eax +c01027c1: 0f b7 40 3c movzwl 0x3c(%eax),%eax +c01027c5: 83 f8 08 cmp $0x8,%eax +c01027c8: 0f 84 ae 00 00 00 je c010287c + tf->tf_cs = KERNEL_CS; +c01027ce: 8b 45 08 mov 0x8(%ebp),%eax +c01027d1: 66 c7 40 3c 08 00 movw $0x8,0x3c(%eax) + tf->tf_ds = tf->tf_es = KERNEL_DS; +c01027d7: 8b 45 08 mov 0x8(%ebp),%eax +c01027da: 66 c7 40 28 10 00 movw $0x10,0x28(%eax) +c01027e0: 8b 45 08 mov 0x8(%ebp),%eax +c01027e3: 0f b7 50 28 movzwl 0x28(%eax),%edx +c01027e7: 8b 45 08 mov 0x8(%ebp),%eax +c01027ea: 66 89 50 2c mov %dx,0x2c(%eax) + //设置内核模式的段寄存器 + tf->tf_eflags &= ~FL_IOPL_MASK; //清除 I/O 权限标志 +c01027ee: 8b 45 08 mov 0x8(%ebp),%eax +c01027f1: 8b 40 40 mov 0x40(%eax),%eax +c01027f4: 25 ff cf ff ff and $0xffffcfff,%eax +c01027f9: 89 c2 mov %eax,%edx +c01027fb: 8b 45 08 mov 0x8(%ebp),%eax +c01027fe: 89 50 40 mov %edx,0x40(%eax) + switchu2k = (struct trapframe *)(tf->tf_esp - (sizeof(struct trapframe) - 8)); +c0102801: 8b 45 08 mov 0x8(%ebp),%eax +c0102804: 8b 40 44 mov 0x44(%eax),%eax +c0102807: 83 e8 44 sub $0x44,%eax +c010280a: a3 cc 57 12 c0 mov %eax,0xc01257cc + //使用 memmove 将当前的陷阱框架(除了最后8个字节)复制到新的陷阱框架位置 switchu2k + memmove(switchu2k, tf, sizeof(struct trapframe) - 8); +c010280f: a1 cc 57 12 c0 mov 0xc01257cc,%eax +c0102814: c7 44 24 08 44 00 00 movl $0x44,0x8(%esp) +c010281b: 00 +c010281c: 8b 55 08 mov 0x8(%ebp),%edx +c010281f: 89 54 24 04 mov %edx,0x4(%esp) +c0102823: 89 04 24 mov %eax,(%esp) +c0102826: e8 e5 63 00 00 call c0108c10 + //将新的陷阱框架地址 switchu2k 存储到当前陷阱框架之前的一个栈位置 + *((uint32_t *)tf - 1) = (uint32_t)switchu2k; +c010282b: 8b 15 cc 57 12 c0 mov 0xc01257cc,%edx +c0102831: 8b 45 08 mov 0x8(%ebp),%eax +c0102834: 83 e8 04 sub $0x4,%eax +c0102837: 89 10 mov %edx,(%eax) + } + break; +c0102839: eb 41 jmp c010287c + break; + default: + // in kernel, it must be a mistake + //检查当前陷阱框架的代码段寄存器 tf->tf_cs 的特权级 + //(tf->tf_cs & 3) == 0 检查是否在内核模式中 + if ((tf->tf_cs & 3) == 0) { +c010283b: 8b 45 08 mov 0x8(%ebp),%eax +c010283e: 0f b7 40 3c movzwl 0x3c(%eax),%eax +c0102842: 83 e0 03 and $0x3,%eax +c0102845: 85 c0 test %eax,%eax +c0102847: 75 34 jne c010287d + print_trapframe(tf); +c0102849: 8b 45 08 mov 0x8(%ebp),%eax +c010284c: 89 04 24 mov %eax,(%esp) +c010284f: e8 62 fa ff ff call c01022b6 + panic("unexpected trap in kernel.\n"); +c0102854: c7 44 24 08 fb 93 10 movl $0xc01093fb,0x8(%esp) +c010285b: c0 +c010285c: c7 44 24 04 2f 01 00 movl $0x12f,0x4(%esp) +c0102863: 00 +c0102864: c7 04 24 ae 93 10 c0 movl $0xc01093ae,(%esp) +c010286b: e8 d2 e3 ff ff call c0100c42 <__panic> + break; +c0102870: 90 nop +c0102871: eb 0a jmp c010287d + break; +c0102873: 90 nop +c0102874: eb 07 jmp c010287d + break; +c0102876: 90 nop +c0102877: eb 04 jmp c010287d + break; +c0102879: 90 nop +c010287a: eb 01 jmp c010287d + break; +c010287c: 90 nop + } + } +} +c010287d: 90 nop +c010287e: 8b 5d fc mov -0x4(%ebp),%ebx +c0102881: 89 ec mov %ebp,%esp +c0102883: 5d pop %ebp +c0102884: c3 ret + +c0102885 : + * trap - handles or dispatches an exception/interrupt. if and when trap() returns, + * the code in kern/trap/trapentry.S restores the old CPU state saved in the + * trapframe and then uses the iret instruction to return from the exception. + * */ +void +trap(struct trapframe *tf) { +c0102885: 55 push %ebp +c0102886: 89 e5 mov %esp,%ebp +c0102888: 83 ec 18 sub $0x18,%esp + // dispatch based on what type of trap occurred + //该行代码调用 trap_dispatch 函数,将陷阱帧传递给它。 + trap_dispatch(tf); +c010288b: 8b 45 08 mov 0x8(%ebp),%eax +c010288e: 89 04 24 mov %eax,(%esp) +c0102891: e8 6e fd ff ff call c0102604 +} +c0102896: 90 nop +c0102897: 89 ec mov %ebp,%esp +c0102899: 5d pop %ebp +c010289a: c3 ret + +c010289b <__alltraps>: +.globl __alltraps +__alltraps: + # push registers to build a trap frame + # therefore make the stack look like a struct trapframe + # 通过 push 指令,将数据段寄存器和所有通用寄存器(使用 pushal)的值压入栈中,以保存当前状态。 + pushl %ds +c010289b: 1e push %ds + pushl %es +c010289c: 06 push %es + pushl %fs +c010289d: 0f a0 push %fs + pushl %gs +c010289f: 0f a8 push %gs + pushal +c01028a1: 60 pusha + + # load GD_KDATA into %ds and %es to set up data segments for kernel + # 将常量 GD_KDATA 加载到 %eax 中,然后将其值复制到 %ds 和 %es 中,设置内核的数据段。 + movl $GD_KDATA, %eax +c01028a2: b8 10 00 00 00 mov $0x10,%eax + movw %ax, %ds +c01028a7: 8e d8 mov %eax,%ds + movw %ax, %es +c01028a9: 8e c0 mov %eax,%es + + # push %esp to pass a pointer to the trapframe as an argument to trap() + # 将 %esp 压栈,以将指向 trapframe 的指针作为参数传递给 trap() + pushl %esp +c01028ab: 54 push %esp + + # call trap(tf), where tf=%esp + # 调用 trap(tf),其中 tf=%esp + call trap +c01028ac: e8 d4 ff ff ff call c0102885 + + # pop the pushed stack pointer弹出之前压入的栈指针 + popl %esp +c01028b1: 5c pop %esp + +c01028b2 <__trapret>: + # 返回后继续执行到 trapret... +.globl __trapret +__trapret: + # restore registers from stack + # 定义了返回的入口点 __trapret。 + popal +c01028b2: 61 popa + + # restore %ds, %es, %fs and %gs + # 这里会恢复之前保存的寄存器 + popl %gs +c01028b3: 0f a9 pop %gs + popl %fs +c01028b5: 0f a1 pop %fs + popl %es +c01028b7: 07 pop %es + popl %ds +c01028b8: 1f pop %ds + + # get rid of the trap number and error code + # 通过 iret 指令返回中断处理 + addl $0x8, %esp +c01028b9: 83 c4 08 add $0x8,%esp + iret +c01028bc: cf iret + +c01028bd : +# handler +.text +.globl __alltraps +.globl vector0 +vector0: + pushl $0 +c01028bd: 6a 00 push $0x0 + pushl $0 +c01028bf: 6a 00 push $0x0 + jmp __alltraps +c01028c1: e9 d5 ff ff ff jmp c010289b <__alltraps> + +c01028c6 : +.globl vector1 +vector1: + pushl $0 +c01028c6: 6a 00 push $0x0 + pushl $1 +c01028c8: 6a 01 push $0x1 + jmp __alltraps +c01028ca: e9 cc ff ff ff jmp c010289b <__alltraps> + +c01028cf : +.globl vector2 +vector2: + pushl $0 +c01028cf: 6a 00 push $0x0 + pushl $2 +c01028d1: 6a 02 push $0x2 + jmp __alltraps +c01028d3: e9 c3 ff ff ff jmp c010289b <__alltraps> + +c01028d8 : +.globl vector3 +vector3: + pushl $0 +c01028d8: 6a 00 push $0x0 + pushl $3 +c01028da: 6a 03 push $0x3 + jmp __alltraps +c01028dc: e9 ba ff ff ff jmp c010289b <__alltraps> + +c01028e1 : +.globl vector4 +vector4: + pushl $0 +c01028e1: 6a 00 push $0x0 + pushl $4 +c01028e3: 6a 04 push $0x4 + jmp __alltraps +c01028e5: e9 b1 ff ff ff jmp c010289b <__alltraps> + +c01028ea : +.globl vector5 +vector5: + pushl $0 +c01028ea: 6a 00 push $0x0 + pushl $5 +c01028ec: 6a 05 push $0x5 + jmp __alltraps +c01028ee: e9 a8 ff ff ff jmp c010289b <__alltraps> + +c01028f3 : +.globl vector6 +vector6: + pushl $0 +c01028f3: 6a 00 push $0x0 + pushl $6 +c01028f5: 6a 06 push $0x6 + jmp __alltraps +c01028f7: e9 9f ff ff ff jmp c010289b <__alltraps> + +c01028fc : +.globl vector7 +vector7: + pushl $0 +c01028fc: 6a 00 push $0x0 + pushl $7 +c01028fe: 6a 07 push $0x7 + jmp __alltraps +c0102900: e9 96 ff ff ff jmp c010289b <__alltraps> + +c0102905 : +.globl vector8 +vector8: + pushl $8 +c0102905: 6a 08 push $0x8 + jmp __alltraps +c0102907: e9 8f ff ff ff jmp c010289b <__alltraps> + +c010290c : +.globl vector9 +vector9: + pushl $0 +c010290c: 6a 00 push $0x0 + pushl $9 +c010290e: 6a 09 push $0x9 + jmp __alltraps +c0102910: e9 86 ff ff ff jmp c010289b <__alltraps> + +c0102915 : +.globl vector10 +vector10: + pushl $10 +c0102915: 6a 0a push $0xa + jmp __alltraps +c0102917: e9 7f ff ff ff jmp c010289b <__alltraps> + +c010291c : +.globl vector11 +vector11: + pushl $11 +c010291c: 6a 0b push $0xb + jmp __alltraps +c010291e: e9 78 ff ff ff jmp c010289b <__alltraps> + +c0102923 : +.globl vector12 +vector12: + pushl $12 +c0102923: 6a 0c push $0xc + jmp __alltraps +c0102925: e9 71 ff ff ff jmp c010289b <__alltraps> + +c010292a : +.globl vector13 +vector13: + pushl $13 +c010292a: 6a 0d push $0xd + jmp __alltraps +c010292c: e9 6a ff ff ff jmp c010289b <__alltraps> + +c0102931 : +.globl vector14 +vector14: + pushl $14 +c0102931: 6a 0e push $0xe + jmp __alltraps +c0102933: e9 63 ff ff ff jmp c010289b <__alltraps> + +c0102938 : +.globl vector15 +vector15: + pushl $0 +c0102938: 6a 00 push $0x0 + pushl $15 +c010293a: 6a 0f push $0xf + jmp __alltraps +c010293c: e9 5a ff ff ff jmp c010289b <__alltraps> + +c0102941 : +.globl vector16 +vector16: + pushl $0 +c0102941: 6a 00 push $0x0 + pushl $16 +c0102943: 6a 10 push $0x10 + jmp __alltraps +c0102945: e9 51 ff ff ff jmp c010289b <__alltraps> + +c010294a : +.globl vector17 +vector17: + pushl $17 +c010294a: 6a 11 push $0x11 + jmp __alltraps +c010294c: e9 4a ff ff ff jmp c010289b <__alltraps> + +c0102951 : +.globl vector18 +vector18: + pushl $0 +c0102951: 6a 00 push $0x0 + pushl $18 +c0102953: 6a 12 push $0x12 + jmp __alltraps +c0102955: e9 41 ff ff ff jmp c010289b <__alltraps> + +c010295a : +.globl vector19 +vector19: + pushl $0 +c010295a: 6a 00 push $0x0 + pushl $19 +c010295c: 6a 13 push $0x13 + jmp __alltraps +c010295e: e9 38 ff ff ff jmp c010289b <__alltraps> + +c0102963 : +.globl vector20 +vector20: + pushl $0 +c0102963: 6a 00 push $0x0 + pushl $20 +c0102965: 6a 14 push $0x14 + jmp __alltraps +c0102967: e9 2f ff ff ff jmp c010289b <__alltraps> + +c010296c : +.globl vector21 +vector21: + pushl $0 +c010296c: 6a 00 push $0x0 + pushl $21 +c010296e: 6a 15 push $0x15 + jmp __alltraps +c0102970: e9 26 ff ff ff jmp c010289b <__alltraps> + +c0102975 : +.globl vector22 +vector22: + pushl $0 +c0102975: 6a 00 push $0x0 + pushl $22 +c0102977: 6a 16 push $0x16 + jmp __alltraps +c0102979: e9 1d ff ff ff jmp c010289b <__alltraps> + +c010297e : +.globl vector23 +vector23: + pushl $0 +c010297e: 6a 00 push $0x0 + pushl $23 +c0102980: 6a 17 push $0x17 + jmp __alltraps +c0102982: e9 14 ff ff ff jmp c010289b <__alltraps> + +c0102987 : +.globl vector24 +vector24: + pushl $0 +c0102987: 6a 00 push $0x0 + pushl $24 +c0102989: 6a 18 push $0x18 + jmp __alltraps +c010298b: e9 0b ff ff ff jmp c010289b <__alltraps> + +c0102990 : +.globl vector25 +vector25: + pushl $0 +c0102990: 6a 00 push $0x0 + pushl $25 +c0102992: 6a 19 push $0x19 + jmp __alltraps +c0102994: e9 02 ff ff ff jmp c010289b <__alltraps> + +c0102999 : +.globl vector26 +vector26: + pushl $0 +c0102999: 6a 00 push $0x0 + pushl $26 +c010299b: 6a 1a push $0x1a + jmp __alltraps +c010299d: e9 f9 fe ff ff jmp c010289b <__alltraps> + +c01029a2 : +.globl vector27 +vector27: + pushl $0 +c01029a2: 6a 00 push $0x0 + pushl $27 +c01029a4: 6a 1b push $0x1b + jmp __alltraps +c01029a6: e9 f0 fe ff ff jmp c010289b <__alltraps> + +c01029ab : +.globl vector28 +vector28: + pushl $0 +c01029ab: 6a 00 push $0x0 + pushl $28 +c01029ad: 6a 1c push $0x1c + jmp __alltraps +c01029af: e9 e7 fe ff ff jmp c010289b <__alltraps> + +c01029b4 : +.globl vector29 +vector29: + pushl $0 +c01029b4: 6a 00 push $0x0 + pushl $29 +c01029b6: 6a 1d push $0x1d + jmp __alltraps +c01029b8: e9 de fe ff ff jmp c010289b <__alltraps> + +c01029bd : +.globl vector30 +vector30: + pushl $0 +c01029bd: 6a 00 push $0x0 + pushl $30 +c01029bf: 6a 1e push $0x1e + jmp __alltraps +c01029c1: e9 d5 fe ff ff jmp c010289b <__alltraps> + +c01029c6 : +.globl vector31 +vector31: + pushl $0 +c01029c6: 6a 00 push $0x0 + pushl $31 +c01029c8: 6a 1f push $0x1f + jmp __alltraps +c01029ca: e9 cc fe ff ff jmp c010289b <__alltraps> + +c01029cf : +.globl vector32 +vector32: + pushl $0 +c01029cf: 6a 00 push $0x0 + pushl $32 +c01029d1: 6a 20 push $0x20 + jmp __alltraps +c01029d3: e9 c3 fe ff ff jmp c010289b <__alltraps> + +c01029d8 : +.globl vector33 +vector33: + pushl $0 +c01029d8: 6a 00 push $0x0 + pushl $33 +c01029da: 6a 21 push $0x21 + jmp __alltraps +c01029dc: e9 ba fe ff ff jmp c010289b <__alltraps> + +c01029e1 : +.globl vector34 +vector34: + pushl $0 +c01029e1: 6a 00 push $0x0 + pushl $34 +c01029e3: 6a 22 push $0x22 + jmp __alltraps +c01029e5: e9 b1 fe ff ff jmp c010289b <__alltraps> + +c01029ea : +.globl vector35 +vector35: + pushl $0 +c01029ea: 6a 00 push $0x0 + pushl $35 +c01029ec: 6a 23 push $0x23 + jmp __alltraps +c01029ee: e9 a8 fe ff ff jmp c010289b <__alltraps> + +c01029f3 : +.globl vector36 +vector36: + pushl $0 +c01029f3: 6a 00 push $0x0 + pushl $36 +c01029f5: 6a 24 push $0x24 + jmp __alltraps +c01029f7: e9 9f fe ff ff jmp c010289b <__alltraps> + +c01029fc : +.globl vector37 +vector37: + pushl $0 +c01029fc: 6a 00 push $0x0 + pushl $37 +c01029fe: 6a 25 push $0x25 + jmp __alltraps +c0102a00: e9 96 fe ff ff jmp c010289b <__alltraps> + +c0102a05 : +.globl vector38 +vector38: + pushl $0 +c0102a05: 6a 00 push $0x0 + pushl $38 +c0102a07: 6a 26 push $0x26 + jmp __alltraps +c0102a09: e9 8d fe ff ff jmp c010289b <__alltraps> + +c0102a0e : +.globl vector39 +vector39: + pushl $0 +c0102a0e: 6a 00 push $0x0 + pushl $39 +c0102a10: 6a 27 push $0x27 + jmp __alltraps +c0102a12: e9 84 fe ff ff jmp c010289b <__alltraps> + +c0102a17 : +.globl vector40 +vector40: + pushl $0 +c0102a17: 6a 00 push $0x0 + pushl $40 +c0102a19: 6a 28 push $0x28 + jmp __alltraps +c0102a1b: e9 7b fe ff ff jmp c010289b <__alltraps> + +c0102a20 : +.globl vector41 +vector41: + pushl $0 +c0102a20: 6a 00 push $0x0 + pushl $41 +c0102a22: 6a 29 push $0x29 + jmp __alltraps +c0102a24: e9 72 fe ff ff jmp c010289b <__alltraps> + +c0102a29 : +.globl vector42 +vector42: + pushl $0 +c0102a29: 6a 00 push $0x0 + pushl $42 +c0102a2b: 6a 2a push $0x2a + jmp __alltraps +c0102a2d: e9 69 fe ff ff jmp c010289b <__alltraps> + +c0102a32 : +.globl vector43 +vector43: + pushl $0 +c0102a32: 6a 00 push $0x0 + pushl $43 +c0102a34: 6a 2b push $0x2b + jmp __alltraps +c0102a36: e9 60 fe ff ff jmp c010289b <__alltraps> + +c0102a3b : +.globl vector44 +vector44: + pushl $0 +c0102a3b: 6a 00 push $0x0 + pushl $44 +c0102a3d: 6a 2c push $0x2c + jmp __alltraps +c0102a3f: e9 57 fe ff ff jmp c010289b <__alltraps> + +c0102a44 : +.globl vector45 +vector45: + pushl $0 +c0102a44: 6a 00 push $0x0 + pushl $45 +c0102a46: 6a 2d push $0x2d + jmp __alltraps +c0102a48: e9 4e fe ff ff jmp c010289b <__alltraps> + +c0102a4d : +.globl vector46 +vector46: + pushl $0 +c0102a4d: 6a 00 push $0x0 + pushl $46 +c0102a4f: 6a 2e push $0x2e + jmp __alltraps +c0102a51: e9 45 fe ff ff jmp c010289b <__alltraps> + +c0102a56 : +.globl vector47 +vector47: + pushl $0 +c0102a56: 6a 00 push $0x0 + pushl $47 +c0102a58: 6a 2f push $0x2f + jmp __alltraps +c0102a5a: e9 3c fe ff ff jmp c010289b <__alltraps> + +c0102a5f : +.globl vector48 +vector48: + pushl $0 +c0102a5f: 6a 00 push $0x0 + pushl $48 +c0102a61: 6a 30 push $0x30 + jmp __alltraps +c0102a63: e9 33 fe ff ff jmp c010289b <__alltraps> + +c0102a68 : +.globl vector49 +vector49: + pushl $0 +c0102a68: 6a 00 push $0x0 + pushl $49 +c0102a6a: 6a 31 push $0x31 + jmp __alltraps +c0102a6c: e9 2a fe ff ff jmp c010289b <__alltraps> + +c0102a71 : +.globl vector50 +vector50: + pushl $0 +c0102a71: 6a 00 push $0x0 + pushl $50 +c0102a73: 6a 32 push $0x32 + jmp __alltraps +c0102a75: e9 21 fe ff ff jmp c010289b <__alltraps> + +c0102a7a : +.globl vector51 +vector51: + pushl $0 +c0102a7a: 6a 00 push $0x0 + pushl $51 +c0102a7c: 6a 33 push $0x33 + jmp __alltraps +c0102a7e: e9 18 fe ff ff jmp c010289b <__alltraps> + +c0102a83 : +.globl vector52 +vector52: + pushl $0 +c0102a83: 6a 00 push $0x0 + pushl $52 +c0102a85: 6a 34 push $0x34 + jmp __alltraps +c0102a87: e9 0f fe ff ff jmp c010289b <__alltraps> + +c0102a8c : +.globl vector53 +vector53: + pushl $0 +c0102a8c: 6a 00 push $0x0 + pushl $53 +c0102a8e: 6a 35 push $0x35 + jmp __alltraps +c0102a90: e9 06 fe ff ff jmp c010289b <__alltraps> + +c0102a95 : +.globl vector54 +vector54: + pushl $0 +c0102a95: 6a 00 push $0x0 + pushl $54 +c0102a97: 6a 36 push $0x36 + jmp __alltraps +c0102a99: e9 fd fd ff ff jmp c010289b <__alltraps> + +c0102a9e : +.globl vector55 +vector55: + pushl $0 +c0102a9e: 6a 00 push $0x0 + pushl $55 +c0102aa0: 6a 37 push $0x37 + jmp __alltraps +c0102aa2: e9 f4 fd ff ff jmp c010289b <__alltraps> + +c0102aa7 : +.globl vector56 +vector56: + pushl $0 +c0102aa7: 6a 00 push $0x0 + pushl $56 +c0102aa9: 6a 38 push $0x38 + jmp __alltraps +c0102aab: e9 eb fd ff ff jmp c010289b <__alltraps> + +c0102ab0 : +.globl vector57 +vector57: + pushl $0 +c0102ab0: 6a 00 push $0x0 + pushl $57 +c0102ab2: 6a 39 push $0x39 + jmp __alltraps +c0102ab4: e9 e2 fd ff ff jmp c010289b <__alltraps> + +c0102ab9 : +.globl vector58 +vector58: + pushl $0 +c0102ab9: 6a 00 push $0x0 + pushl $58 +c0102abb: 6a 3a push $0x3a + jmp __alltraps +c0102abd: e9 d9 fd ff ff jmp c010289b <__alltraps> + +c0102ac2 : +.globl vector59 +vector59: + pushl $0 +c0102ac2: 6a 00 push $0x0 + pushl $59 +c0102ac4: 6a 3b push $0x3b + jmp __alltraps +c0102ac6: e9 d0 fd ff ff jmp c010289b <__alltraps> + +c0102acb : +.globl vector60 +vector60: + pushl $0 +c0102acb: 6a 00 push $0x0 + pushl $60 +c0102acd: 6a 3c push $0x3c + jmp __alltraps +c0102acf: e9 c7 fd ff ff jmp c010289b <__alltraps> + +c0102ad4 : +.globl vector61 +vector61: + pushl $0 +c0102ad4: 6a 00 push $0x0 + pushl $61 +c0102ad6: 6a 3d push $0x3d + jmp __alltraps +c0102ad8: e9 be fd ff ff jmp c010289b <__alltraps> + +c0102add : +.globl vector62 +vector62: + pushl $0 +c0102add: 6a 00 push $0x0 + pushl $62 +c0102adf: 6a 3e push $0x3e + jmp __alltraps +c0102ae1: e9 b5 fd ff ff jmp c010289b <__alltraps> + +c0102ae6 : +.globl vector63 +vector63: + pushl $0 +c0102ae6: 6a 00 push $0x0 + pushl $63 +c0102ae8: 6a 3f push $0x3f + jmp __alltraps +c0102aea: e9 ac fd ff ff jmp c010289b <__alltraps> + +c0102aef : +.globl vector64 +vector64: + pushl $0 +c0102aef: 6a 00 push $0x0 + pushl $64 +c0102af1: 6a 40 push $0x40 + jmp __alltraps +c0102af3: e9 a3 fd ff ff jmp c010289b <__alltraps> + +c0102af8 : +.globl vector65 +vector65: + pushl $0 +c0102af8: 6a 00 push $0x0 + pushl $65 +c0102afa: 6a 41 push $0x41 + jmp __alltraps +c0102afc: e9 9a fd ff ff jmp c010289b <__alltraps> + +c0102b01 : +.globl vector66 +vector66: + pushl $0 +c0102b01: 6a 00 push $0x0 + pushl $66 +c0102b03: 6a 42 push $0x42 + jmp __alltraps +c0102b05: e9 91 fd ff ff jmp c010289b <__alltraps> + +c0102b0a : +.globl vector67 +vector67: + pushl $0 +c0102b0a: 6a 00 push $0x0 + pushl $67 +c0102b0c: 6a 43 push $0x43 + jmp __alltraps +c0102b0e: e9 88 fd ff ff jmp c010289b <__alltraps> + +c0102b13 : +.globl vector68 +vector68: + pushl $0 +c0102b13: 6a 00 push $0x0 + pushl $68 +c0102b15: 6a 44 push $0x44 + jmp __alltraps +c0102b17: e9 7f fd ff ff jmp c010289b <__alltraps> + +c0102b1c : +.globl vector69 +vector69: + pushl $0 +c0102b1c: 6a 00 push $0x0 + pushl $69 +c0102b1e: 6a 45 push $0x45 + jmp __alltraps +c0102b20: e9 76 fd ff ff jmp c010289b <__alltraps> + +c0102b25 : +.globl vector70 +vector70: + pushl $0 +c0102b25: 6a 00 push $0x0 + pushl $70 +c0102b27: 6a 46 push $0x46 + jmp __alltraps +c0102b29: e9 6d fd ff ff jmp c010289b <__alltraps> + +c0102b2e : +.globl vector71 +vector71: + pushl $0 +c0102b2e: 6a 00 push $0x0 + pushl $71 +c0102b30: 6a 47 push $0x47 + jmp __alltraps +c0102b32: e9 64 fd ff ff jmp c010289b <__alltraps> + +c0102b37 : +.globl vector72 +vector72: + pushl $0 +c0102b37: 6a 00 push $0x0 + pushl $72 +c0102b39: 6a 48 push $0x48 + jmp __alltraps +c0102b3b: e9 5b fd ff ff jmp c010289b <__alltraps> + +c0102b40 : +.globl vector73 +vector73: + pushl $0 +c0102b40: 6a 00 push $0x0 + pushl $73 +c0102b42: 6a 49 push $0x49 + jmp __alltraps +c0102b44: e9 52 fd ff ff jmp c010289b <__alltraps> + +c0102b49 : +.globl vector74 +vector74: + pushl $0 +c0102b49: 6a 00 push $0x0 + pushl $74 +c0102b4b: 6a 4a push $0x4a + jmp __alltraps +c0102b4d: e9 49 fd ff ff jmp c010289b <__alltraps> + +c0102b52 : +.globl vector75 +vector75: + pushl $0 +c0102b52: 6a 00 push $0x0 + pushl $75 +c0102b54: 6a 4b push $0x4b + jmp __alltraps +c0102b56: e9 40 fd ff ff jmp c010289b <__alltraps> + +c0102b5b : +.globl vector76 +vector76: + pushl $0 +c0102b5b: 6a 00 push $0x0 + pushl $76 +c0102b5d: 6a 4c push $0x4c + jmp __alltraps +c0102b5f: e9 37 fd ff ff jmp c010289b <__alltraps> + +c0102b64 : +.globl vector77 +vector77: + pushl $0 +c0102b64: 6a 00 push $0x0 + pushl $77 +c0102b66: 6a 4d push $0x4d + jmp __alltraps +c0102b68: e9 2e fd ff ff jmp c010289b <__alltraps> + +c0102b6d : +.globl vector78 +vector78: + pushl $0 +c0102b6d: 6a 00 push $0x0 + pushl $78 +c0102b6f: 6a 4e push $0x4e + jmp __alltraps +c0102b71: e9 25 fd ff ff jmp c010289b <__alltraps> + +c0102b76 : +.globl vector79 +vector79: + pushl $0 +c0102b76: 6a 00 push $0x0 + pushl $79 +c0102b78: 6a 4f push $0x4f + jmp __alltraps +c0102b7a: e9 1c fd ff ff jmp c010289b <__alltraps> + +c0102b7f : +.globl vector80 +vector80: + pushl $0 +c0102b7f: 6a 00 push $0x0 + pushl $80 +c0102b81: 6a 50 push $0x50 + jmp __alltraps +c0102b83: e9 13 fd ff ff jmp c010289b <__alltraps> + +c0102b88 : +.globl vector81 +vector81: + pushl $0 +c0102b88: 6a 00 push $0x0 + pushl $81 +c0102b8a: 6a 51 push $0x51 + jmp __alltraps +c0102b8c: e9 0a fd ff ff jmp c010289b <__alltraps> + +c0102b91 : +.globl vector82 +vector82: + pushl $0 +c0102b91: 6a 00 push $0x0 + pushl $82 +c0102b93: 6a 52 push $0x52 + jmp __alltraps +c0102b95: e9 01 fd ff ff jmp c010289b <__alltraps> + +c0102b9a : +.globl vector83 +vector83: + pushl $0 +c0102b9a: 6a 00 push $0x0 + pushl $83 +c0102b9c: 6a 53 push $0x53 + jmp __alltraps +c0102b9e: e9 f8 fc ff ff jmp c010289b <__alltraps> + +c0102ba3 : +.globl vector84 +vector84: + pushl $0 +c0102ba3: 6a 00 push $0x0 + pushl $84 +c0102ba5: 6a 54 push $0x54 + jmp __alltraps +c0102ba7: e9 ef fc ff ff jmp c010289b <__alltraps> + +c0102bac : +.globl vector85 +vector85: + pushl $0 +c0102bac: 6a 00 push $0x0 + pushl $85 +c0102bae: 6a 55 push $0x55 + jmp __alltraps +c0102bb0: e9 e6 fc ff ff jmp c010289b <__alltraps> + +c0102bb5 : +.globl vector86 +vector86: + pushl $0 +c0102bb5: 6a 00 push $0x0 + pushl $86 +c0102bb7: 6a 56 push $0x56 + jmp __alltraps +c0102bb9: e9 dd fc ff ff jmp c010289b <__alltraps> + +c0102bbe : +.globl vector87 +vector87: + pushl $0 +c0102bbe: 6a 00 push $0x0 + pushl $87 +c0102bc0: 6a 57 push $0x57 + jmp __alltraps +c0102bc2: e9 d4 fc ff ff jmp c010289b <__alltraps> + +c0102bc7 : +.globl vector88 +vector88: + pushl $0 +c0102bc7: 6a 00 push $0x0 + pushl $88 +c0102bc9: 6a 58 push $0x58 + jmp __alltraps +c0102bcb: e9 cb fc ff ff jmp c010289b <__alltraps> + +c0102bd0 : +.globl vector89 +vector89: + pushl $0 +c0102bd0: 6a 00 push $0x0 + pushl $89 +c0102bd2: 6a 59 push $0x59 + jmp __alltraps +c0102bd4: e9 c2 fc ff ff jmp c010289b <__alltraps> + +c0102bd9 : +.globl vector90 +vector90: + pushl $0 +c0102bd9: 6a 00 push $0x0 + pushl $90 +c0102bdb: 6a 5a push $0x5a + jmp __alltraps +c0102bdd: e9 b9 fc ff ff jmp c010289b <__alltraps> + +c0102be2 : +.globl vector91 +vector91: + pushl $0 +c0102be2: 6a 00 push $0x0 + pushl $91 +c0102be4: 6a 5b push $0x5b + jmp __alltraps +c0102be6: e9 b0 fc ff ff jmp c010289b <__alltraps> + +c0102beb : +.globl vector92 +vector92: + pushl $0 +c0102beb: 6a 00 push $0x0 + pushl $92 +c0102bed: 6a 5c push $0x5c + jmp __alltraps +c0102bef: e9 a7 fc ff ff jmp c010289b <__alltraps> + +c0102bf4 : +.globl vector93 +vector93: + pushl $0 +c0102bf4: 6a 00 push $0x0 + pushl $93 +c0102bf6: 6a 5d push $0x5d + jmp __alltraps +c0102bf8: e9 9e fc ff ff jmp c010289b <__alltraps> + +c0102bfd : +.globl vector94 +vector94: + pushl $0 +c0102bfd: 6a 00 push $0x0 + pushl $94 +c0102bff: 6a 5e push $0x5e + jmp __alltraps +c0102c01: e9 95 fc ff ff jmp c010289b <__alltraps> + +c0102c06 : +.globl vector95 +vector95: + pushl $0 +c0102c06: 6a 00 push $0x0 + pushl $95 +c0102c08: 6a 5f push $0x5f + jmp __alltraps +c0102c0a: e9 8c fc ff ff jmp c010289b <__alltraps> + +c0102c0f : +.globl vector96 +vector96: + pushl $0 +c0102c0f: 6a 00 push $0x0 + pushl $96 +c0102c11: 6a 60 push $0x60 + jmp __alltraps +c0102c13: e9 83 fc ff ff jmp c010289b <__alltraps> + +c0102c18 : +.globl vector97 +vector97: + pushl $0 +c0102c18: 6a 00 push $0x0 + pushl $97 +c0102c1a: 6a 61 push $0x61 + jmp __alltraps +c0102c1c: e9 7a fc ff ff jmp c010289b <__alltraps> + +c0102c21 : +.globl vector98 +vector98: + pushl $0 +c0102c21: 6a 00 push $0x0 + pushl $98 +c0102c23: 6a 62 push $0x62 + jmp __alltraps +c0102c25: e9 71 fc ff ff jmp c010289b <__alltraps> + +c0102c2a : +.globl vector99 +vector99: + pushl $0 +c0102c2a: 6a 00 push $0x0 + pushl $99 +c0102c2c: 6a 63 push $0x63 + jmp __alltraps +c0102c2e: e9 68 fc ff ff jmp c010289b <__alltraps> + +c0102c33 : +.globl vector100 +vector100: + pushl $0 +c0102c33: 6a 00 push $0x0 + pushl $100 +c0102c35: 6a 64 push $0x64 + jmp __alltraps +c0102c37: e9 5f fc ff ff jmp c010289b <__alltraps> + +c0102c3c : +.globl vector101 +vector101: + pushl $0 +c0102c3c: 6a 00 push $0x0 + pushl $101 +c0102c3e: 6a 65 push $0x65 + jmp __alltraps +c0102c40: e9 56 fc ff ff jmp c010289b <__alltraps> + +c0102c45 : +.globl vector102 +vector102: + pushl $0 +c0102c45: 6a 00 push $0x0 + pushl $102 +c0102c47: 6a 66 push $0x66 + jmp __alltraps +c0102c49: e9 4d fc ff ff jmp c010289b <__alltraps> + +c0102c4e : +.globl vector103 +vector103: + pushl $0 +c0102c4e: 6a 00 push $0x0 + pushl $103 +c0102c50: 6a 67 push $0x67 + jmp __alltraps +c0102c52: e9 44 fc ff ff jmp c010289b <__alltraps> + +c0102c57 : +.globl vector104 +vector104: + pushl $0 +c0102c57: 6a 00 push $0x0 + pushl $104 +c0102c59: 6a 68 push $0x68 + jmp __alltraps +c0102c5b: e9 3b fc ff ff jmp c010289b <__alltraps> + +c0102c60 : +.globl vector105 +vector105: + pushl $0 +c0102c60: 6a 00 push $0x0 + pushl $105 +c0102c62: 6a 69 push $0x69 + jmp __alltraps +c0102c64: e9 32 fc ff ff jmp c010289b <__alltraps> + +c0102c69 : +.globl vector106 +vector106: + pushl $0 +c0102c69: 6a 00 push $0x0 + pushl $106 +c0102c6b: 6a 6a push $0x6a + jmp __alltraps +c0102c6d: e9 29 fc ff ff jmp c010289b <__alltraps> + +c0102c72 : +.globl vector107 +vector107: + pushl $0 +c0102c72: 6a 00 push $0x0 + pushl $107 +c0102c74: 6a 6b push $0x6b + jmp __alltraps +c0102c76: e9 20 fc ff ff jmp c010289b <__alltraps> + +c0102c7b : +.globl vector108 +vector108: + pushl $0 +c0102c7b: 6a 00 push $0x0 + pushl $108 +c0102c7d: 6a 6c push $0x6c + jmp __alltraps +c0102c7f: e9 17 fc ff ff jmp c010289b <__alltraps> + +c0102c84 : +.globl vector109 +vector109: + pushl $0 +c0102c84: 6a 00 push $0x0 + pushl $109 +c0102c86: 6a 6d push $0x6d + jmp __alltraps +c0102c88: e9 0e fc ff ff jmp c010289b <__alltraps> + +c0102c8d : +.globl vector110 +vector110: + pushl $0 +c0102c8d: 6a 00 push $0x0 + pushl $110 +c0102c8f: 6a 6e push $0x6e + jmp __alltraps +c0102c91: e9 05 fc ff ff jmp c010289b <__alltraps> + +c0102c96 : +.globl vector111 +vector111: + pushl $0 +c0102c96: 6a 00 push $0x0 + pushl $111 +c0102c98: 6a 6f push $0x6f + jmp __alltraps +c0102c9a: e9 fc fb ff ff jmp c010289b <__alltraps> + +c0102c9f : +.globl vector112 +vector112: + pushl $0 +c0102c9f: 6a 00 push $0x0 + pushl $112 +c0102ca1: 6a 70 push $0x70 + jmp __alltraps +c0102ca3: e9 f3 fb ff ff jmp c010289b <__alltraps> + +c0102ca8 : +.globl vector113 +vector113: + pushl $0 +c0102ca8: 6a 00 push $0x0 + pushl $113 +c0102caa: 6a 71 push $0x71 + jmp __alltraps +c0102cac: e9 ea fb ff ff jmp c010289b <__alltraps> + +c0102cb1 : +.globl vector114 +vector114: + pushl $0 +c0102cb1: 6a 00 push $0x0 + pushl $114 +c0102cb3: 6a 72 push $0x72 + jmp __alltraps +c0102cb5: e9 e1 fb ff ff jmp c010289b <__alltraps> + +c0102cba : +.globl vector115 +vector115: + pushl $0 +c0102cba: 6a 00 push $0x0 + pushl $115 +c0102cbc: 6a 73 push $0x73 + jmp __alltraps +c0102cbe: e9 d8 fb ff ff jmp c010289b <__alltraps> + +c0102cc3 : +.globl vector116 +vector116: + pushl $0 +c0102cc3: 6a 00 push $0x0 + pushl $116 +c0102cc5: 6a 74 push $0x74 + jmp __alltraps +c0102cc7: e9 cf fb ff ff jmp c010289b <__alltraps> + +c0102ccc : +.globl vector117 +vector117: + pushl $0 +c0102ccc: 6a 00 push $0x0 + pushl $117 +c0102cce: 6a 75 push $0x75 + jmp __alltraps +c0102cd0: e9 c6 fb ff ff jmp c010289b <__alltraps> + +c0102cd5 : +.globl vector118 +vector118: + pushl $0 +c0102cd5: 6a 00 push $0x0 + pushl $118 +c0102cd7: 6a 76 push $0x76 + jmp __alltraps +c0102cd9: e9 bd fb ff ff jmp c010289b <__alltraps> + +c0102cde : +.globl vector119 +vector119: + pushl $0 +c0102cde: 6a 00 push $0x0 + pushl $119 +c0102ce0: 6a 77 push $0x77 + jmp __alltraps +c0102ce2: e9 b4 fb ff ff jmp c010289b <__alltraps> + +c0102ce7 : +.globl vector120 +vector120: + pushl $0 +c0102ce7: 6a 00 push $0x0 + pushl $120 +c0102ce9: 6a 78 push $0x78 + jmp __alltraps +c0102ceb: e9 ab fb ff ff jmp c010289b <__alltraps> + +c0102cf0 : +.globl vector121 +vector121: + pushl $0 +c0102cf0: 6a 00 push $0x0 + pushl $121 +c0102cf2: 6a 79 push $0x79 + jmp __alltraps +c0102cf4: e9 a2 fb ff ff jmp c010289b <__alltraps> + +c0102cf9 : +.globl vector122 +vector122: + pushl $0 +c0102cf9: 6a 00 push $0x0 + pushl $122 +c0102cfb: 6a 7a push $0x7a + jmp __alltraps +c0102cfd: e9 99 fb ff ff jmp c010289b <__alltraps> + +c0102d02 : +.globl vector123 +vector123: + pushl $0 +c0102d02: 6a 00 push $0x0 + pushl $123 +c0102d04: 6a 7b push $0x7b + jmp __alltraps +c0102d06: e9 90 fb ff ff jmp c010289b <__alltraps> + +c0102d0b : +.globl vector124 +vector124: + pushl $0 +c0102d0b: 6a 00 push $0x0 + pushl $124 +c0102d0d: 6a 7c push $0x7c + jmp __alltraps +c0102d0f: e9 87 fb ff ff jmp c010289b <__alltraps> + +c0102d14 : +.globl vector125 +vector125: + pushl $0 +c0102d14: 6a 00 push $0x0 + pushl $125 +c0102d16: 6a 7d push $0x7d + jmp __alltraps +c0102d18: e9 7e fb ff ff jmp c010289b <__alltraps> + +c0102d1d : +.globl vector126 +vector126: + pushl $0 +c0102d1d: 6a 00 push $0x0 + pushl $126 +c0102d1f: 6a 7e push $0x7e + jmp __alltraps +c0102d21: e9 75 fb ff ff jmp c010289b <__alltraps> + +c0102d26 : +.globl vector127 +vector127: + pushl $0 +c0102d26: 6a 00 push $0x0 + pushl $127 +c0102d28: 6a 7f push $0x7f + jmp __alltraps +c0102d2a: e9 6c fb ff ff jmp c010289b <__alltraps> + +c0102d2f : +.globl vector128 +vector128: + pushl $0 +c0102d2f: 6a 00 push $0x0 + pushl $128 +c0102d31: 68 80 00 00 00 push $0x80 + jmp __alltraps +c0102d36: e9 60 fb ff ff jmp c010289b <__alltraps> + +c0102d3b : +.globl vector129 +vector129: + pushl $0 +c0102d3b: 6a 00 push $0x0 + pushl $129 +c0102d3d: 68 81 00 00 00 push $0x81 + jmp __alltraps +c0102d42: e9 54 fb ff ff jmp c010289b <__alltraps> + +c0102d47 : +.globl vector130 +vector130: + pushl $0 +c0102d47: 6a 00 push $0x0 + pushl $130 +c0102d49: 68 82 00 00 00 push $0x82 + jmp __alltraps +c0102d4e: e9 48 fb ff ff jmp c010289b <__alltraps> + +c0102d53 : +.globl vector131 +vector131: + pushl $0 +c0102d53: 6a 00 push $0x0 + pushl $131 +c0102d55: 68 83 00 00 00 push $0x83 + jmp __alltraps +c0102d5a: e9 3c fb ff ff jmp c010289b <__alltraps> + +c0102d5f : +.globl vector132 +vector132: + pushl $0 +c0102d5f: 6a 00 push $0x0 + pushl $132 +c0102d61: 68 84 00 00 00 push $0x84 + jmp __alltraps +c0102d66: e9 30 fb ff ff jmp c010289b <__alltraps> + +c0102d6b : +.globl vector133 +vector133: + pushl $0 +c0102d6b: 6a 00 push $0x0 + pushl $133 +c0102d6d: 68 85 00 00 00 push $0x85 + jmp __alltraps +c0102d72: e9 24 fb ff ff jmp c010289b <__alltraps> + +c0102d77 : +.globl vector134 +vector134: + pushl $0 +c0102d77: 6a 00 push $0x0 + pushl $134 +c0102d79: 68 86 00 00 00 push $0x86 + jmp __alltraps +c0102d7e: e9 18 fb ff ff jmp c010289b <__alltraps> + +c0102d83 : +.globl vector135 +vector135: + pushl $0 +c0102d83: 6a 00 push $0x0 + pushl $135 +c0102d85: 68 87 00 00 00 push $0x87 + jmp __alltraps +c0102d8a: e9 0c fb ff ff jmp c010289b <__alltraps> + +c0102d8f : +.globl vector136 +vector136: + pushl $0 +c0102d8f: 6a 00 push $0x0 + pushl $136 +c0102d91: 68 88 00 00 00 push $0x88 + jmp __alltraps +c0102d96: e9 00 fb ff ff jmp c010289b <__alltraps> + +c0102d9b : +.globl vector137 +vector137: + pushl $0 +c0102d9b: 6a 00 push $0x0 + pushl $137 +c0102d9d: 68 89 00 00 00 push $0x89 + jmp __alltraps +c0102da2: e9 f4 fa ff ff jmp c010289b <__alltraps> + +c0102da7 : +.globl vector138 +vector138: + pushl $0 +c0102da7: 6a 00 push $0x0 + pushl $138 +c0102da9: 68 8a 00 00 00 push $0x8a + jmp __alltraps +c0102dae: e9 e8 fa ff ff jmp c010289b <__alltraps> + +c0102db3 : +.globl vector139 +vector139: + pushl $0 +c0102db3: 6a 00 push $0x0 + pushl $139 +c0102db5: 68 8b 00 00 00 push $0x8b + jmp __alltraps +c0102dba: e9 dc fa ff ff jmp c010289b <__alltraps> + +c0102dbf : +.globl vector140 +vector140: + pushl $0 +c0102dbf: 6a 00 push $0x0 + pushl $140 +c0102dc1: 68 8c 00 00 00 push $0x8c + jmp __alltraps +c0102dc6: e9 d0 fa ff ff jmp c010289b <__alltraps> + +c0102dcb : +.globl vector141 +vector141: + pushl $0 +c0102dcb: 6a 00 push $0x0 + pushl $141 +c0102dcd: 68 8d 00 00 00 push $0x8d + jmp __alltraps +c0102dd2: e9 c4 fa ff ff jmp c010289b <__alltraps> + +c0102dd7 : +.globl vector142 +vector142: + pushl $0 +c0102dd7: 6a 00 push $0x0 + pushl $142 +c0102dd9: 68 8e 00 00 00 push $0x8e + jmp __alltraps +c0102dde: e9 b8 fa ff ff jmp c010289b <__alltraps> + +c0102de3 : +.globl vector143 +vector143: + pushl $0 +c0102de3: 6a 00 push $0x0 + pushl $143 +c0102de5: 68 8f 00 00 00 push $0x8f + jmp __alltraps +c0102dea: e9 ac fa ff ff jmp c010289b <__alltraps> + +c0102def : +.globl vector144 +vector144: + pushl $0 +c0102def: 6a 00 push $0x0 + pushl $144 +c0102df1: 68 90 00 00 00 push $0x90 + jmp __alltraps +c0102df6: e9 a0 fa ff ff jmp c010289b <__alltraps> + +c0102dfb : +.globl vector145 +vector145: + pushl $0 +c0102dfb: 6a 00 push $0x0 + pushl $145 +c0102dfd: 68 91 00 00 00 push $0x91 + jmp __alltraps +c0102e02: e9 94 fa ff ff jmp c010289b <__alltraps> + +c0102e07 : +.globl vector146 +vector146: + pushl $0 +c0102e07: 6a 00 push $0x0 + pushl $146 +c0102e09: 68 92 00 00 00 push $0x92 + jmp __alltraps +c0102e0e: e9 88 fa ff ff jmp c010289b <__alltraps> + +c0102e13 : +.globl vector147 +vector147: + pushl $0 +c0102e13: 6a 00 push $0x0 + pushl $147 +c0102e15: 68 93 00 00 00 push $0x93 + jmp __alltraps +c0102e1a: e9 7c fa ff ff jmp c010289b <__alltraps> + +c0102e1f : +.globl vector148 +vector148: + pushl $0 +c0102e1f: 6a 00 push $0x0 + pushl $148 +c0102e21: 68 94 00 00 00 push $0x94 + jmp __alltraps +c0102e26: e9 70 fa ff ff jmp c010289b <__alltraps> + +c0102e2b : +.globl vector149 +vector149: + pushl $0 +c0102e2b: 6a 00 push $0x0 + pushl $149 +c0102e2d: 68 95 00 00 00 push $0x95 + jmp __alltraps +c0102e32: e9 64 fa ff ff jmp c010289b <__alltraps> + +c0102e37 : +.globl vector150 +vector150: + pushl $0 +c0102e37: 6a 00 push $0x0 + pushl $150 +c0102e39: 68 96 00 00 00 push $0x96 + jmp __alltraps +c0102e3e: e9 58 fa ff ff jmp c010289b <__alltraps> + +c0102e43 : +.globl vector151 +vector151: + pushl $0 +c0102e43: 6a 00 push $0x0 + pushl $151 +c0102e45: 68 97 00 00 00 push $0x97 + jmp __alltraps +c0102e4a: e9 4c fa ff ff jmp c010289b <__alltraps> + +c0102e4f : +.globl vector152 +vector152: + pushl $0 +c0102e4f: 6a 00 push $0x0 + pushl $152 +c0102e51: 68 98 00 00 00 push $0x98 + jmp __alltraps +c0102e56: e9 40 fa ff ff jmp c010289b <__alltraps> + +c0102e5b : +.globl vector153 +vector153: + pushl $0 +c0102e5b: 6a 00 push $0x0 + pushl $153 +c0102e5d: 68 99 00 00 00 push $0x99 + jmp __alltraps +c0102e62: e9 34 fa ff ff jmp c010289b <__alltraps> + +c0102e67 : +.globl vector154 +vector154: + pushl $0 +c0102e67: 6a 00 push $0x0 + pushl $154 +c0102e69: 68 9a 00 00 00 push $0x9a + jmp __alltraps +c0102e6e: e9 28 fa ff ff jmp c010289b <__alltraps> + +c0102e73 : +.globl vector155 +vector155: + pushl $0 +c0102e73: 6a 00 push $0x0 + pushl $155 +c0102e75: 68 9b 00 00 00 push $0x9b + jmp __alltraps +c0102e7a: e9 1c fa ff ff jmp c010289b <__alltraps> + +c0102e7f : +.globl vector156 +vector156: + pushl $0 +c0102e7f: 6a 00 push $0x0 + pushl $156 +c0102e81: 68 9c 00 00 00 push $0x9c + jmp __alltraps +c0102e86: e9 10 fa ff ff jmp c010289b <__alltraps> + +c0102e8b : +.globl vector157 +vector157: + pushl $0 +c0102e8b: 6a 00 push $0x0 + pushl $157 +c0102e8d: 68 9d 00 00 00 push $0x9d + jmp __alltraps +c0102e92: e9 04 fa ff ff jmp c010289b <__alltraps> + +c0102e97 : +.globl vector158 +vector158: + pushl $0 +c0102e97: 6a 00 push $0x0 + pushl $158 +c0102e99: 68 9e 00 00 00 push $0x9e + jmp __alltraps +c0102e9e: e9 f8 f9 ff ff jmp c010289b <__alltraps> + +c0102ea3 : +.globl vector159 +vector159: + pushl $0 +c0102ea3: 6a 00 push $0x0 + pushl $159 +c0102ea5: 68 9f 00 00 00 push $0x9f + jmp __alltraps +c0102eaa: e9 ec f9 ff ff jmp c010289b <__alltraps> + +c0102eaf : +.globl vector160 +vector160: + pushl $0 +c0102eaf: 6a 00 push $0x0 + pushl $160 +c0102eb1: 68 a0 00 00 00 push $0xa0 + jmp __alltraps +c0102eb6: e9 e0 f9 ff ff jmp c010289b <__alltraps> + +c0102ebb : +.globl vector161 +vector161: + pushl $0 +c0102ebb: 6a 00 push $0x0 + pushl $161 +c0102ebd: 68 a1 00 00 00 push $0xa1 + jmp __alltraps +c0102ec2: e9 d4 f9 ff ff jmp c010289b <__alltraps> + +c0102ec7 : +.globl vector162 +vector162: + pushl $0 +c0102ec7: 6a 00 push $0x0 + pushl $162 +c0102ec9: 68 a2 00 00 00 push $0xa2 + jmp __alltraps +c0102ece: e9 c8 f9 ff ff jmp c010289b <__alltraps> + +c0102ed3 : +.globl vector163 +vector163: + pushl $0 +c0102ed3: 6a 00 push $0x0 + pushl $163 +c0102ed5: 68 a3 00 00 00 push $0xa3 + jmp __alltraps +c0102eda: e9 bc f9 ff ff jmp c010289b <__alltraps> + +c0102edf : +.globl vector164 +vector164: + pushl $0 +c0102edf: 6a 00 push $0x0 + pushl $164 +c0102ee1: 68 a4 00 00 00 push $0xa4 + jmp __alltraps +c0102ee6: e9 b0 f9 ff ff jmp c010289b <__alltraps> + +c0102eeb : +.globl vector165 +vector165: + pushl $0 +c0102eeb: 6a 00 push $0x0 + pushl $165 +c0102eed: 68 a5 00 00 00 push $0xa5 + jmp __alltraps +c0102ef2: e9 a4 f9 ff ff jmp c010289b <__alltraps> + +c0102ef7 : +.globl vector166 +vector166: + pushl $0 +c0102ef7: 6a 00 push $0x0 + pushl $166 +c0102ef9: 68 a6 00 00 00 push $0xa6 + jmp __alltraps +c0102efe: e9 98 f9 ff ff jmp c010289b <__alltraps> + +c0102f03 : +.globl vector167 +vector167: + pushl $0 +c0102f03: 6a 00 push $0x0 + pushl $167 +c0102f05: 68 a7 00 00 00 push $0xa7 + jmp __alltraps +c0102f0a: e9 8c f9 ff ff jmp c010289b <__alltraps> + +c0102f0f : +.globl vector168 +vector168: + pushl $0 +c0102f0f: 6a 00 push $0x0 + pushl $168 +c0102f11: 68 a8 00 00 00 push $0xa8 + jmp __alltraps +c0102f16: e9 80 f9 ff ff jmp c010289b <__alltraps> + +c0102f1b : +.globl vector169 +vector169: + pushl $0 +c0102f1b: 6a 00 push $0x0 + pushl $169 +c0102f1d: 68 a9 00 00 00 push $0xa9 + jmp __alltraps +c0102f22: e9 74 f9 ff ff jmp c010289b <__alltraps> + +c0102f27 : +.globl vector170 +vector170: + pushl $0 +c0102f27: 6a 00 push $0x0 + pushl $170 +c0102f29: 68 aa 00 00 00 push $0xaa + jmp __alltraps +c0102f2e: e9 68 f9 ff ff jmp c010289b <__alltraps> + +c0102f33 : +.globl vector171 +vector171: + pushl $0 +c0102f33: 6a 00 push $0x0 + pushl $171 +c0102f35: 68 ab 00 00 00 push $0xab + jmp __alltraps +c0102f3a: e9 5c f9 ff ff jmp c010289b <__alltraps> + +c0102f3f : +.globl vector172 +vector172: + pushl $0 +c0102f3f: 6a 00 push $0x0 + pushl $172 +c0102f41: 68 ac 00 00 00 push $0xac + jmp __alltraps +c0102f46: e9 50 f9 ff ff jmp c010289b <__alltraps> + +c0102f4b : +.globl vector173 +vector173: + pushl $0 +c0102f4b: 6a 00 push $0x0 + pushl $173 +c0102f4d: 68 ad 00 00 00 push $0xad + jmp __alltraps +c0102f52: e9 44 f9 ff ff jmp c010289b <__alltraps> + +c0102f57 : +.globl vector174 +vector174: + pushl $0 +c0102f57: 6a 00 push $0x0 + pushl $174 +c0102f59: 68 ae 00 00 00 push $0xae + jmp __alltraps +c0102f5e: e9 38 f9 ff ff jmp c010289b <__alltraps> + +c0102f63 : +.globl vector175 +vector175: + pushl $0 +c0102f63: 6a 00 push $0x0 + pushl $175 +c0102f65: 68 af 00 00 00 push $0xaf + jmp __alltraps +c0102f6a: e9 2c f9 ff ff jmp c010289b <__alltraps> + +c0102f6f : +.globl vector176 +vector176: + pushl $0 +c0102f6f: 6a 00 push $0x0 + pushl $176 +c0102f71: 68 b0 00 00 00 push $0xb0 + jmp __alltraps +c0102f76: e9 20 f9 ff ff jmp c010289b <__alltraps> + +c0102f7b : +.globl vector177 +vector177: + pushl $0 +c0102f7b: 6a 00 push $0x0 + pushl $177 +c0102f7d: 68 b1 00 00 00 push $0xb1 + jmp __alltraps +c0102f82: e9 14 f9 ff ff jmp c010289b <__alltraps> + +c0102f87 : +.globl vector178 +vector178: + pushl $0 +c0102f87: 6a 00 push $0x0 + pushl $178 +c0102f89: 68 b2 00 00 00 push $0xb2 + jmp __alltraps +c0102f8e: e9 08 f9 ff ff jmp c010289b <__alltraps> + +c0102f93 : +.globl vector179 +vector179: + pushl $0 +c0102f93: 6a 00 push $0x0 + pushl $179 +c0102f95: 68 b3 00 00 00 push $0xb3 + jmp __alltraps +c0102f9a: e9 fc f8 ff ff jmp c010289b <__alltraps> + +c0102f9f : +.globl vector180 +vector180: + pushl $0 +c0102f9f: 6a 00 push $0x0 + pushl $180 +c0102fa1: 68 b4 00 00 00 push $0xb4 + jmp __alltraps +c0102fa6: e9 f0 f8 ff ff jmp c010289b <__alltraps> + +c0102fab : +.globl vector181 +vector181: + pushl $0 +c0102fab: 6a 00 push $0x0 + pushl $181 +c0102fad: 68 b5 00 00 00 push $0xb5 + jmp __alltraps +c0102fb2: e9 e4 f8 ff ff jmp c010289b <__alltraps> + +c0102fb7 : +.globl vector182 +vector182: + pushl $0 +c0102fb7: 6a 00 push $0x0 + pushl $182 +c0102fb9: 68 b6 00 00 00 push $0xb6 + jmp __alltraps +c0102fbe: e9 d8 f8 ff ff jmp c010289b <__alltraps> + +c0102fc3 : +.globl vector183 +vector183: + pushl $0 +c0102fc3: 6a 00 push $0x0 + pushl $183 +c0102fc5: 68 b7 00 00 00 push $0xb7 + jmp __alltraps +c0102fca: e9 cc f8 ff ff jmp c010289b <__alltraps> + +c0102fcf : +.globl vector184 +vector184: + pushl $0 +c0102fcf: 6a 00 push $0x0 + pushl $184 +c0102fd1: 68 b8 00 00 00 push $0xb8 + jmp __alltraps +c0102fd6: e9 c0 f8 ff ff jmp c010289b <__alltraps> + +c0102fdb : +.globl vector185 +vector185: + pushl $0 +c0102fdb: 6a 00 push $0x0 + pushl $185 +c0102fdd: 68 b9 00 00 00 push $0xb9 + jmp __alltraps +c0102fe2: e9 b4 f8 ff ff jmp c010289b <__alltraps> + +c0102fe7 : +.globl vector186 +vector186: + pushl $0 +c0102fe7: 6a 00 push $0x0 + pushl $186 +c0102fe9: 68 ba 00 00 00 push $0xba + jmp __alltraps +c0102fee: e9 a8 f8 ff ff jmp c010289b <__alltraps> + +c0102ff3 : +.globl vector187 +vector187: + pushl $0 +c0102ff3: 6a 00 push $0x0 + pushl $187 +c0102ff5: 68 bb 00 00 00 push $0xbb + jmp __alltraps +c0102ffa: e9 9c f8 ff ff jmp c010289b <__alltraps> + +c0102fff : +.globl vector188 +vector188: + pushl $0 +c0102fff: 6a 00 push $0x0 + pushl $188 +c0103001: 68 bc 00 00 00 push $0xbc + jmp __alltraps +c0103006: e9 90 f8 ff ff jmp c010289b <__alltraps> + +c010300b : +.globl vector189 +vector189: + pushl $0 +c010300b: 6a 00 push $0x0 + pushl $189 +c010300d: 68 bd 00 00 00 push $0xbd + jmp __alltraps +c0103012: e9 84 f8 ff ff jmp c010289b <__alltraps> + +c0103017 : +.globl vector190 +vector190: + pushl $0 +c0103017: 6a 00 push $0x0 + pushl $190 +c0103019: 68 be 00 00 00 push $0xbe + jmp __alltraps +c010301e: e9 78 f8 ff ff jmp c010289b <__alltraps> + +c0103023 : +.globl vector191 +vector191: + pushl $0 +c0103023: 6a 00 push $0x0 + pushl $191 +c0103025: 68 bf 00 00 00 push $0xbf + jmp __alltraps +c010302a: e9 6c f8 ff ff jmp c010289b <__alltraps> + +c010302f : +.globl vector192 +vector192: + pushl $0 +c010302f: 6a 00 push $0x0 + pushl $192 +c0103031: 68 c0 00 00 00 push $0xc0 + jmp __alltraps +c0103036: e9 60 f8 ff ff jmp c010289b <__alltraps> + +c010303b : +.globl vector193 +vector193: + pushl $0 +c010303b: 6a 00 push $0x0 + pushl $193 +c010303d: 68 c1 00 00 00 push $0xc1 + jmp __alltraps +c0103042: e9 54 f8 ff ff jmp c010289b <__alltraps> + +c0103047 : +.globl vector194 +vector194: + pushl $0 +c0103047: 6a 00 push $0x0 + pushl $194 +c0103049: 68 c2 00 00 00 push $0xc2 + jmp __alltraps +c010304e: e9 48 f8 ff ff jmp c010289b <__alltraps> + +c0103053 : +.globl vector195 +vector195: + pushl $0 +c0103053: 6a 00 push $0x0 + pushl $195 +c0103055: 68 c3 00 00 00 push $0xc3 + jmp __alltraps +c010305a: e9 3c f8 ff ff jmp c010289b <__alltraps> + +c010305f : +.globl vector196 +vector196: + pushl $0 +c010305f: 6a 00 push $0x0 + pushl $196 +c0103061: 68 c4 00 00 00 push $0xc4 + jmp __alltraps +c0103066: e9 30 f8 ff ff jmp c010289b <__alltraps> + +c010306b : +.globl vector197 +vector197: + pushl $0 +c010306b: 6a 00 push $0x0 + pushl $197 +c010306d: 68 c5 00 00 00 push $0xc5 + jmp __alltraps +c0103072: e9 24 f8 ff ff jmp c010289b <__alltraps> + +c0103077 : +.globl vector198 +vector198: + pushl $0 +c0103077: 6a 00 push $0x0 + pushl $198 +c0103079: 68 c6 00 00 00 push $0xc6 + jmp __alltraps +c010307e: e9 18 f8 ff ff jmp c010289b <__alltraps> + +c0103083 : +.globl vector199 +vector199: + pushl $0 +c0103083: 6a 00 push $0x0 + pushl $199 +c0103085: 68 c7 00 00 00 push $0xc7 + jmp __alltraps +c010308a: e9 0c f8 ff ff jmp c010289b <__alltraps> + +c010308f : +.globl vector200 +vector200: + pushl $0 +c010308f: 6a 00 push $0x0 + pushl $200 +c0103091: 68 c8 00 00 00 push $0xc8 + jmp __alltraps +c0103096: e9 00 f8 ff ff jmp c010289b <__alltraps> + +c010309b : +.globl vector201 +vector201: + pushl $0 +c010309b: 6a 00 push $0x0 + pushl $201 +c010309d: 68 c9 00 00 00 push $0xc9 + jmp __alltraps +c01030a2: e9 f4 f7 ff ff jmp c010289b <__alltraps> + +c01030a7 : +.globl vector202 +vector202: + pushl $0 +c01030a7: 6a 00 push $0x0 + pushl $202 +c01030a9: 68 ca 00 00 00 push $0xca + jmp __alltraps +c01030ae: e9 e8 f7 ff ff jmp c010289b <__alltraps> + +c01030b3 : +.globl vector203 +vector203: + pushl $0 +c01030b3: 6a 00 push $0x0 + pushl $203 +c01030b5: 68 cb 00 00 00 push $0xcb + jmp __alltraps +c01030ba: e9 dc f7 ff ff jmp c010289b <__alltraps> + +c01030bf : +.globl vector204 +vector204: + pushl $0 +c01030bf: 6a 00 push $0x0 + pushl $204 +c01030c1: 68 cc 00 00 00 push $0xcc + jmp __alltraps +c01030c6: e9 d0 f7 ff ff jmp c010289b <__alltraps> + +c01030cb : +.globl vector205 +vector205: + pushl $0 +c01030cb: 6a 00 push $0x0 + pushl $205 +c01030cd: 68 cd 00 00 00 push $0xcd + jmp __alltraps +c01030d2: e9 c4 f7 ff ff jmp c010289b <__alltraps> + +c01030d7 : +.globl vector206 +vector206: + pushl $0 +c01030d7: 6a 00 push $0x0 + pushl $206 +c01030d9: 68 ce 00 00 00 push $0xce + jmp __alltraps +c01030de: e9 b8 f7 ff ff jmp c010289b <__alltraps> + +c01030e3 : +.globl vector207 +vector207: + pushl $0 +c01030e3: 6a 00 push $0x0 + pushl $207 +c01030e5: 68 cf 00 00 00 push $0xcf + jmp __alltraps +c01030ea: e9 ac f7 ff ff jmp c010289b <__alltraps> + +c01030ef : +.globl vector208 +vector208: + pushl $0 +c01030ef: 6a 00 push $0x0 + pushl $208 +c01030f1: 68 d0 00 00 00 push $0xd0 + jmp __alltraps +c01030f6: e9 a0 f7 ff ff jmp c010289b <__alltraps> + +c01030fb : +.globl vector209 +vector209: + pushl $0 +c01030fb: 6a 00 push $0x0 + pushl $209 +c01030fd: 68 d1 00 00 00 push $0xd1 + jmp __alltraps +c0103102: e9 94 f7 ff ff jmp c010289b <__alltraps> + +c0103107 : +.globl vector210 +vector210: + pushl $0 +c0103107: 6a 00 push $0x0 + pushl $210 +c0103109: 68 d2 00 00 00 push $0xd2 + jmp __alltraps +c010310e: e9 88 f7 ff ff jmp c010289b <__alltraps> + +c0103113 : +.globl vector211 +vector211: + pushl $0 +c0103113: 6a 00 push $0x0 + pushl $211 +c0103115: 68 d3 00 00 00 push $0xd3 + jmp __alltraps +c010311a: e9 7c f7 ff ff jmp c010289b <__alltraps> + +c010311f : +.globl vector212 +vector212: + pushl $0 +c010311f: 6a 00 push $0x0 + pushl $212 +c0103121: 68 d4 00 00 00 push $0xd4 + jmp __alltraps +c0103126: e9 70 f7 ff ff jmp c010289b <__alltraps> + +c010312b : +.globl vector213 +vector213: + pushl $0 +c010312b: 6a 00 push $0x0 + pushl $213 +c010312d: 68 d5 00 00 00 push $0xd5 + jmp __alltraps +c0103132: e9 64 f7 ff ff jmp c010289b <__alltraps> + +c0103137 : +.globl vector214 +vector214: + pushl $0 +c0103137: 6a 00 push $0x0 + pushl $214 +c0103139: 68 d6 00 00 00 push $0xd6 + jmp __alltraps +c010313e: e9 58 f7 ff ff jmp c010289b <__alltraps> + +c0103143 : +.globl vector215 +vector215: + pushl $0 +c0103143: 6a 00 push $0x0 + pushl $215 +c0103145: 68 d7 00 00 00 push $0xd7 + jmp __alltraps +c010314a: e9 4c f7 ff ff jmp c010289b <__alltraps> + +c010314f : +.globl vector216 +vector216: + pushl $0 +c010314f: 6a 00 push $0x0 + pushl $216 +c0103151: 68 d8 00 00 00 push $0xd8 + jmp __alltraps +c0103156: e9 40 f7 ff ff jmp c010289b <__alltraps> + +c010315b : +.globl vector217 +vector217: + pushl $0 +c010315b: 6a 00 push $0x0 + pushl $217 +c010315d: 68 d9 00 00 00 push $0xd9 + jmp __alltraps +c0103162: e9 34 f7 ff ff jmp c010289b <__alltraps> + +c0103167 : +.globl vector218 +vector218: + pushl $0 +c0103167: 6a 00 push $0x0 + pushl $218 +c0103169: 68 da 00 00 00 push $0xda + jmp __alltraps +c010316e: e9 28 f7 ff ff jmp c010289b <__alltraps> + +c0103173 : +.globl vector219 +vector219: + pushl $0 +c0103173: 6a 00 push $0x0 + pushl $219 +c0103175: 68 db 00 00 00 push $0xdb + jmp __alltraps +c010317a: e9 1c f7 ff ff jmp c010289b <__alltraps> + +c010317f : +.globl vector220 +vector220: + pushl $0 +c010317f: 6a 00 push $0x0 + pushl $220 +c0103181: 68 dc 00 00 00 push $0xdc + jmp __alltraps +c0103186: e9 10 f7 ff ff jmp c010289b <__alltraps> + +c010318b : +.globl vector221 +vector221: + pushl $0 +c010318b: 6a 00 push $0x0 + pushl $221 +c010318d: 68 dd 00 00 00 push $0xdd + jmp __alltraps +c0103192: e9 04 f7 ff ff jmp c010289b <__alltraps> + +c0103197 : +.globl vector222 +vector222: + pushl $0 +c0103197: 6a 00 push $0x0 + pushl $222 +c0103199: 68 de 00 00 00 push $0xde + jmp __alltraps +c010319e: e9 f8 f6 ff ff jmp c010289b <__alltraps> + +c01031a3 : +.globl vector223 +vector223: + pushl $0 +c01031a3: 6a 00 push $0x0 + pushl $223 +c01031a5: 68 df 00 00 00 push $0xdf + jmp __alltraps +c01031aa: e9 ec f6 ff ff jmp c010289b <__alltraps> + +c01031af : +.globl vector224 +vector224: + pushl $0 +c01031af: 6a 00 push $0x0 + pushl $224 +c01031b1: 68 e0 00 00 00 push $0xe0 + jmp __alltraps +c01031b6: e9 e0 f6 ff ff jmp c010289b <__alltraps> + +c01031bb : +.globl vector225 +vector225: + pushl $0 +c01031bb: 6a 00 push $0x0 + pushl $225 +c01031bd: 68 e1 00 00 00 push $0xe1 + jmp __alltraps +c01031c2: e9 d4 f6 ff ff jmp c010289b <__alltraps> + +c01031c7 : +.globl vector226 +vector226: + pushl $0 +c01031c7: 6a 00 push $0x0 + pushl $226 +c01031c9: 68 e2 00 00 00 push $0xe2 + jmp __alltraps +c01031ce: e9 c8 f6 ff ff jmp c010289b <__alltraps> + +c01031d3 : +.globl vector227 +vector227: + pushl $0 +c01031d3: 6a 00 push $0x0 + pushl $227 +c01031d5: 68 e3 00 00 00 push $0xe3 + jmp __alltraps +c01031da: e9 bc f6 ff ff jmp c010289b <__alltraps> + +c01031df : +.globl vector228 +vector228: + pushl $0 +c01031df: 6a 00 push $0x0 + pushl $228 +c01031e1: 68 e4 00 00 00 push $0xe4 + jmp __alltraps +c01031e6: e9 b0 f6 ff ff jmp c010289b <__alltraps> + +c01031eb : +.globl vector229 +vector229: + pushl $0 +c01031eb: 6a 00 push $0x0 + pushl $229 +c01031ed: 68 e5 00 00 00 push $0xe5 + jmp __alltraps +c01031f2: e9 a4 f6 ff ff jmp c010289b <__alltraps> + +c01031f7 : +.globl vector230 +vector230: + pushl $0 +c01031f7: 6a 00 push $0x0 + pushl $230 +c01031f9: 68 e6 00 00 00 push $0xe6 + jmp __alltraps +c01031fe: e9 98 f6 ff ff jmp c010289b <__alltraps> + +c0103203 : +.globl vector231 +vector231: + pushl $0 +c0103203: 6a 00 push $0x0 + pushl $231 +c0103205: 68 e7 00 00 00 push $0xe7 + jmp __alltraps +c010320a: e9 8c f6 ff ff jmp c010289b <__alltraps> + +c010320f : +.globl vector232 +vector232: + pushl $0 +c010320f: 6a 00 push $0x0 + pushl $232 +c0103211: 68 e8 00 00 00 push $0xe8 + jmp __alltraps +c0103216: e9 80 f6 ff ff jmp c010289b <__alltraps> + +c010321b : +.globl vector233 +vector233: + pushl $0 +c010321b: 6a 00 push $0x0 + pushl $233 +c010321d: 68 e9 00 00 00 push $0xe9 + jmp __alltraps +c0103222: e9 74 f6 ff ff jmp c010289b <__alltraps> + +c0103227 : +.globl vector234 +vector234: + pushl $0 +c0103227: 6a 00 push $0x0 + pushl $234 +c0103229: 68 ea 00 00 00 push $0xea + jmp __alltraps +c010322e: e9 68 f6 ff ff jmp c010289b <__alltraps> + +c0103233 : +.globl vector235 +vector235: + pushl $0 +c0103233: 6a 00 push $0x0 + pushl $235 +c0103235: 68 eb 00 00 00 push $0xeb + jmp __alltraps +c010323a: e9 5c f6 ff ff jmp c010289b <__alltraps> + +c010323f : +.globl vector236 +vector236: + pushl $0 +c010323f: 6a 00 push $0x0 + pushl $236 +c0103241: 68 ec 00 00 00 push $0xec + jmp __alltraps +c0103246: e9 50 f6 ff ff jmp c010289b <__alltraps> + +c010324b : +.globl vector237 +vector237: + pushl $0 +c010324b: 6a 00 push $0x0 + pushl $237 +c010324d: 68 ed 00 00 00 push $0xed + jmp __alltraps +c0103252: e9 44 f6 ff ff jmp c010289b <__alltraps> + +c0103257 : +.globl vector238 +vector238: + pushl $0 +c0103257: 6a 00 push $0x0 + pushl $238 +c0103259: 68 ee 00 00 00 push $0xee + jmp __alltraps +c010325e: e9 38 f6 ff ff jmp c010289b <__alltraps> + +c0103263 : +.globl vector239 +vector239: + pushl $0 +c0103263: 6a 00 push $0x0 + pushl $239 +c0103265: 68 ef 00 00 00 push $0xef + jmp __alltraps +c010326a: e9 2c f6 ff ff jmp c010289b <__alltraps> + +c010326f : +.globl vector240 +vector240: + pushl $0 +c010326f: 6a 00 push $0x0 + pushl $240 +c0103271: 68 f0 00 00 00 push $0xf0 + jmp __alltraps +c0103276: e9 20 f6 ff ff jmp c010289b <__alltraps> + +c010327b : +.globl vector241 +vector241: + pushl $0 +c010327b: 6a 00 push $0x0 + pushl $241 +c010327d: 68 f1 00 00 00 push $0xf1 + jmp __alltraps +c0103282: e9 14 f6 ff ff jmp c010289b <__alltraps> + +c0103287 : +.globl vector242 +vector242: + pushl $0 +c0103287: 6a 00 push $0x0 + pushl $242 +c0103289: 68 f2 00 00 00 push $0xf2 + jmp __alltraps +c010328e: e9 08 f6 ff ff jmp c010289b <__alltraps> + +c0103293 : +.globl vector243 +vector243: + pushl $0 +c0103293: 6a 00 push $0x0 + pushl $243 +c0103295: 68 f3 00 00 00 push $0xf3 + jmp __alltraps +c010329a: e9 fc f5 ff ff jmp c010289b <__alltraps> + +c010329f : +.globl vector244 +vector244: + pushl $0 +c010329f: 6a 00 push $0x0 + pushl $244 +c01032a1: 68 f4 00 00 00 push $0xf4 + jmp __alltraps +c01032a6: e9 f0 f5 ff ff jmp c010289b <__alltraps> + +c01032ab : +.globl vector245 +vector245: + pushl $0 +c01032ab: 6a 00 push $0x0 + pushl $245 +c01032ad: 68 f5 00 00 00 push $0xf5 + jmp __alltraps +c01032b2: e9 e4 f5 ff ff jmp c010289b <__alltraps> + +c01032b7 : +.globl vector246 +vector246: + pushl $0 +c01032b7: 6a 00 push $0x0 + pushl $246 +c01032b9: 68 f6 00 00 00 push $0xf6 + jmp __alltraps +c01032be: e9 d8 f5 ff ff jmp c010289b <__alltraps> + +c01032c3 : +.globl vector247 +vector247: + pushl $0 +c01032c3: 6a 00 push $0x0 + pushl $247 +c01032c5: 68 f7 00 00 00 push $0xf7 + jmp __alltraps +c01032ca: e9 cc f5 ff ff jmp c010289b <__alltraps> + +c01032cf : +.globl vector248 +vector248: + pushl $0 +c01032cf: 6a 00 push $0x0 + pushl $248 +c01032d1: 68 f8 00 00 00 push $0xf8 + jmp __alltraps +c01032d6: e9 c0 f5 ff ff jmp c010289b <__alltraps> + +c01032db : +.globl vector249 +vector249: + pushl $0 +c01032db: 6a 00 push $0x0 + pushl $249 +c01032dd: 68 f9 00 00 00 push $0xf9 + jmp __alltraps +c01032e2: e9 b4 f5 ff ff jmp c010289b <__alltraps> + +c01032e7 : +.globl vector250 +vector250: + pushl $0 +c01032e7: 6a 00 push $0x0 + pushl $250 +c01032e9: 68 fa 00 00 00 push $0xfa + jmp __alltraps +c01032ee: e9 a8 f5 ff ff jmp c010289b <__alltraps> + +c01032f3 : +.globl vector251 +vector251: + pushl $0 +c01032f3: 6a 00 push $0x0 + pushl $251 +c01032f5: 68 fb 00 00 00 push $0xfb + jmp __alltraps +c01032fa: e9 9c f5 ff ff jmp c010289b <__alltraps> + +c01032ff : +.globl vector252 +vector252: + pushl $0 +c01032ff: 6a 00 push $0x0 + pushl $252 +c0103301: 68 fc 00 00 00 push $0xfc + jmp __alltraps +c0103306: e9 90 f5 ff ff jmp c010289b <__alltraps> + +c010330b : +.globl vector253 +vector253: + pushl $0 +c010330b: 6a 00 push $0x0 + pushl $253 +c010330d: 68 fd 00 00 00 push $0xfd + jmp __alltraps +c0103312: e9 84 f5 ff ff jmp c010289b <__alltraps> + +c0103317 : +.globl vector254 +vector254: + pushl $0 +c0103317: 6a 00 push $0x0 + pushl $254 +c0103319: 68 fe 00 00 00 push $0xfe + jmp __alltraps +c010331e: e9 78 f5 ff ff jmp c010289b <__alltraps> + +c0103323 : +.globl vector255 +vector255: + pushl $0 +c0103323: 6a 00 push $0x0 + pushl $255 +c0103325: 68 ff 00 00 00 push $0xff + jmp __alltraps +c010332a: e9 6c f5 ff ff jmp c010289b <__alltraps> + +c010332f : + +extern struct Page *pages; +extern size_t npage; + +static inline ppn_t +page2ppn(struct Page *page) { +c010332f: 55 push %ebp +c0103330: 89 e5 mov %esp,%ebp + return page - pages; +c0103332: 8b 15 00 60 12 c0 mov 0xc0126000,%edx +c0103338: 8b 45 08 mov 0x8(%ebp),%eax +c010333b: 29 d0 sub %edx,%eax +c010333d: c1 f8 05 sar $0x5,%eax +} +c0103340: 5d pop %ebp +c0103341: c3 ret + +c0103342 : + +static inline uintptr_t +page2pa(struct Page *page) { +c0103342: 55 push %ebp +c0103343: 89 e5 mov %esp,%ebp +c0103345: 83 ec 04 sub $0x4,%esp + return page2ppn(page) << PGSHIFT; +c0103348: 8b 45 08 mov 0x8(%ebp),%eax +c010334b: 89 04 24 mov %eax,(%esp) +c010334e: e8 dc ff ff ff call c010332f +c0103353: c1 e0 0c shl $0xc,%eax +} +c0103356: 89 ec mov %ebp,%esp +c0103358: 5d pop %ebp +c0103359: c3 ret + +c010335a : +pde2page(pde_t pde) { + return pa2page(PDE_ADDR(pde)); +} + +static inline int +page_ref(struct Page *page) { +c010335a: 55 push %ebp +c010335b: 89 e5 mov %esp,%ebp + return page->ref; +c010335d: 8b 45 08 mov 0x8(%ebp),%eax +c0103360: 8b 00 mov (%eax),%eax +} +c0103362: 5d pop %ebp +c0103363: c3 ret + +c0103364 : + +static inline void +set_page_ref(struct Page *page, int val) { +c0103364: 55 push %ebp +c0103365: 89 e5 mov %esp,%ebp + page->ref = val; +c0103367: 8b 45 08 mov 0x8(%ebp),%eax +c010336a: 8b 55 0c mov 0xc(%ebp),%edx +c010336d: 89 10 mov %edx,(%eax) +} +c010336f: 90 nop +c0103370: 5d pop %ebp +c0103371: c3 ret + +c0103372 : +#define nr_free (free_area.nr_free) + +//free_list` 用于记录空闲内存块,nr_free` 是空闲内存块的总数。 +//用default_init函数来初始化 `free_list`,并将 `nr_free` 设置为 0。 +static void +default_init(void) { +c0103372: 55 push %ebp +c0103373: 89 e5 mov %esp,%ebp +c0103375: 83 ec 10 sub $0x10,%esp +c0103378: c7 45 fc e4 5f 12 c0 movl $0xc0125fe4,-0x4(%ebp) + * list_init - initialize a new entry + * @elm: new entry to be initialized + * */ +static inline void +list_init(list_entry_t *elm) { + elm->prev = elm->next = elm; +c010337f: 8b 45 fc mov -0x4(%ebp),%eax +c0103382: 8b 55 fc mov -0x4(%ebp),%edx +c0103385: 89 50 04 mov %edx,0x4(%eax) +c0103388: 8b 45 fc mov -0x4(%ebp),%eax +c010338b: 8b 50 04 mov 0x4(%eax),%edx +c010338e: 8b 45 fc mov -0x4(%ebp),%eax +c0103391: 89 10 mov %edx,(%eax) +} +c0103393: 90 nop + list_init(&free_list); + nr_free = 0; +c0103394: c7 05 ec 5f 12 c0 00 movl $0x0,0xc0125fec +c010339b: 00 00 00 +} +c010339e: 90 nop +c010339f: 89 ec mov %ebp,%esp +c01033a1: 5d pop %ebp +c01033a2: c3 ret + +c01033a3 : + +//用于初始化一段连续的物理页,并将它们加入到空闲内存管理系统中. +//struct Page *base:指向要初始化的页块的起始地址。size_t n:要初始化的页的数量。 +static void +default_init_memmap(struct Page *base, size_t n) { +c01033a3: 55 push %ebp +c01033a4: 89 e5 mov %esp,%ebp +c01033a6: 83 ec 48 sub $0x48,%esp + assert(n > 0);// 确保请求的页数大于零 +c01033a9: 83 7d 0c 00 cmpl $0x0,0xc(%ebp) +c01033ad: 75 24 jne c01033d3 +c01033af: c7 44 24 0c 50 96 10 movl $0xc0109650,0xc(%esp) +c01033b6: c0 +c01033b7: c7 44 24 08 56 96 10 movl $0xc0109656,0x8(%esp) +c01033be: c0 +c01033bf: c7 44 24 04 9a 00 00 movl $0x9a,0x4(%esp) +c01033c6: 00 +c01033c7: c7 04 24 6b 96 10 c0 movl $0xc010966b,(%esp) +c01033ce: e8 6f d8 ff ff call c0100c42 <__panic> + struct Page *p = base;// 指向当前初始化的页 +c01033d3: 8b 45 08 mov 0x8(%ebp),%eax +c01033d6: 89 45 f4 mov %eax,-0xc(%ebp) + // 遍历每一页,设置其状态 + for (; p != base + n; p ++) { +c01033d9: eb 7d jmp c0103458 + assert(PageReserved(p));//检查每个页是否被标记为“保留”。若没有被保留,函数将抛出错误。 +c01033db: 8b 45 f4 mov -0xc(%ebp),%eax +c01033de: 83 c0 04 add $0x4,%eax +c01033e1: c7 45 f0 00 00 00 00 movl $0x0,-0x10(%ebp) +c01033e8: 89 45 ec mov %eax,-0x14(%ebp) + * @addr: the address to count from + * */ +static inline bool +test_bit(int nr, volatile void *addr) { + int oldbit; + asm volatile ("btl %2, %1; sbbl %0,%0" : "=r" (oldbit) : "m" (*(volatile long *)addr), "Ir" (nr)); +c01033eb: 8b 45 ec mov -0x14(%ebp),%eax +c01033ee: 8b 55 f0 mov -0x10(%ebp),%edx +c01033f1: 0f a3 10 bt %edx,(%eax) +c01033f4: 19 c0 sbb %eax,%eax +c01033f6: 89 45 e8 mov %eax,-0x18(%ebp) + return oldbit != 0; +c01033f9: 83 7d e8 00 cmpl $0x0,-0x18(%ebp) +c01033fd: 0f 95 c0 setne %al +c0103400: 0f b6 c0 movzbl %al,%eax +c0103403: 85 c0 test %eax,%eax +c0103405: 75 24 jne c010342b +c0103407: c7 44 24 0c 81 96 10 movl $0xc0109681,0xc(%esp) +c010340e: c0 +c010340f: c7 44 24 08 56 96 10 movl $0xc0109656,0x8(%esp) +c0103416: c0 +c0103417: c7 44 24 04 9e 00 00 movl $0x9e,0x4(%esp) +c010341e: 00 +c010341f: c7 04 24 6b 96 10 c0 movl $0xc010966b,(%esp) +c0103426: e8 17 d8 ff ff call c0100c42 <__panic> + p->flags = p->property = 0;//将页的 flags 和 property 字段设置为 0,表示该页未分配、未使用。 +c010342b: 8b 45 f4 mov -0xc(%ebp),%eax +c010342e: c7 40 08 00 00 00 00 movl $0x0,0x8(%eax) +c0103435: 8b 45 f4 mov -0xc(%ebp),%eax +c0103438: 8b 50 08 mov 0x8(%eax),%edx +c010343b: 8b 45 f4 mov -0xc(%ebp),%eax +c010343e: 89 50 04 mov %edx,0x4(%eax) + set_page_ref(p, 0);//将页的引用计数设置为 0,表明没有任何引用指向此页。 +c0103441: c7 44 24 04 00 00 00 movl $0x0,0x4(%esp) +c0103448: 00 +c0103449: 8b 45 f4 mov -0xc(%ebp),%eax +c010344c: 89 04 24 mov %eax,(%esp) +c010344f: e8 10 ff ff ff call c0103364 + for (; p != base + n; p ++) { +c0103454: 83 45 f4 20 addl $0x20,-0xc(%ebp) +c0103458: 8b 45 0c mov 0xc(%ebp),%eax +c010345b: c1 e0 05 shl $0x5,%eax +c010345e: 89 c2 mov %eax,%edx +c0103460: 8b 45 08 mov 0x8(%ebp),%eax +c0103463: 01 d0 add %edx,%eax +c0103465: 39 45 f4 cmp %eax,-0xc(%ebp) +c0103468: 0f 85 6d ff ff ff jne c01033db + } + // 设置第一个页的 property 为块的总数 + base->property = n; +c010346e: 8b 45 08 mov 0x8(%ebp),%eax +c0103471: 8b 55 0c mov 0xc(%ebp),%edx +c0103474: 89 50 08 mov %edx,0x8(%eax) + SetPageProperty(base);// 设置当前页的有效标志 +c0103477: 8b 45 08 mov 0x8(%ebp),%eax +c010347a: 83 c0 04 add $0x4,%eax +c010347d: c7 45 d0 01 00 00 00 movl $0x1,-0x30(%ebp) +c0103484: 89 45 cc mov %eax,-0x34(%ebp) + asm volatile ("btsl %1, %0" :"=m" (*(volatile long *)addr) : "Ir" (nr)); +c0103487: 8b 45 cc mov -0x34(%ebp),%eax +c010348a: 8b 55 d0 mov -0x30(%ebp),%edx +c010348d: 0f ab 10 bts %edx,(%eax) +} +c0103490: 90 nop + nr_free += n;// 更新空闲页计数 +c0103491: 8b 15 ec 5f 12 c0 mov 0xc0125fec,%edx +c0103497: 8b 45 0c mov 0xc(%ebp),%eax +c010349a: 01 d0 add %edx,%eax +c010349c: a3 ec 5f 12 c0 mov %eax,0xc0125fec + list_add_before(&free_list, &(base->page_link));// 将该块添加到空闲列表中 +c01034a1: 8b 45 08 mov 0x8(%ebp),%eax +c01034a4: 83 c0 0c add $0xc,%eax +c01034a7: c7 45 e4 e4 5f 12 c0 movl $0xc0125fe4,-0x1c(%ebp) +c01034ae: 89 45 e0 mov %eax,-0x20(%ebp) + * Insert the new element @elm *before* the element @listelm which + * is already in the list. + * */ +static inline void +list_add_before(list_entry_t *listelm, list_entry_t *elm) { + __list_add(elm, listelm->prev, listelm); +c01034b1: 8b 45 e4 mov -0x1c(%ebp),%eax +c01034b4: 8b 00 mov (%eax),%eax +c01034b6: 8b 55 e0 mov -0x20(%ebp),%edx +c01034b9: 89 55 dc mov %edx,-0x24(%ebp) +c01034bc: 89 45 d8 mov %eax,-0x28(%ebp) +c01034bf: 8b 45 e4 mov -0x1c(%ebp),%eax +c01034c2: 89 45 d4 mov %eax,-0x2c(%ebp) + * This is only for internal list manipulation where we know + * the prev/next entries already! + * */ +static inline void +__list_add(list_entry_t *elm, list_entry_t *prev, list_entry_t *next) { + prev->next = next->prev = elm; +c01034c5: 8b 45 d4 mov -0x2c(%ebp),%eax +c01034c8: 8b 55 dc mov -0x24(%ebp),%edx +c01034cb: 89 10 mov %edx,(%eax) +c01034cd: 8b 45 d4 mov -0x2c(%ebp),%eax +c01034d0: 8b 10 mov (%eax),%edx +c01034d2: 8b 45 d8 mov -0x28(%ebp),%eax +c01034d5: 89 50 04 mov %edx,0x4(%eax) + elm->next = next; +c01034d8: 8b 45 dc mov -0x24(%ebp),%eax +c01034db: 8b 55 d4 mov -0x2c(%ebp),%edx +c01034de: 89 50 04 mov %edx,0x4(%eax) + elm->prev = prev; +c01034e1: 8b 45 dc mov -0x24(%ebp),%eax +c01034e4: 8b 55 d8 mov -0x28(%ebp),%edx +c01034e7: 89 10 mov %edx,(%eax) +} +c01034e9: 90 nop +} +c01034ea: 90 nop +} +c01034eb: 90 nop +c01034ec: 89 ec mov %ebp,%esp +c01034ee: 5d pop %ebp +c01034ef: c3 ret + +c01034f0 : + +//用于分配指定数量的连续物理页。该函数实现了首次适应内存分配算法。 +static struct Page * +default_alloc_pages(size_t n) { +c01034f0: 55 push %ebp +c01034f1: 89 e5 mov %esp,%ebp +c01034f3: 83 ec 68 sub $0x68,%esp + assert(n > 0);// 确保请求的页数大于零 +c01034f6: 83 7d 08 00 cmpl $0x0,0x8(%ebp) +c01034fa: 75 24 jne c0103520 +c01034fc: c7 44 24 0c 50 96 10 movl $0xc0109650,0xc(%esp) +c0103503: c0 +c0103504: c7 44 24 08 56 96 10 movl $0xc0109656,0x8(%esp) +c010350b: c0 +c010350c: c7 44 24 04 ac 00 00 movl $0xac,0x4(%esp) +c0103513: 00 +c0103514: c7 04 24 6b 96 10 c0 movl $0xc010966b,(%esp) +c010351b: e8 22 d7 ff ff call c0100c42 <__panic> + if (n > nr_free) {// 检查请求的页数是否超过空闲页数 +c0103520: a1 ec 5f 12 c0 mov 0xc0125fec,%eax +c0103525: 39 45 08 cmp %eax,0x8(%ebp) +c0103528: 76 0a jbe c0103534 + return NULL; +c010352a: b8 00 00 00 00 mov $0x0,%eax +c010352f: e9 3c 01 00 00 jmp c0103670 + } + struct Page *page = NULL;// 初始化分配的页指针 +c0103534: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) + list_entry_t *le = &free_list;// 初始化链表迭代器 +c010353b: c7 45 f0 e4 5f 12 c0 movl $0xc0125fe4,-0x10(%ebp) + // 遍历空闲列表,寻找第一个满足条件的块 + while ((le = list_next(le)) != &free_list) { +c0103542: eb 1c jmp c0103560 + struct Page *p = le2page(le, page_link);// 将链表节点转换为 Page 结构体 +c0103544: 8b 45 f0 mov -0x10(%ebp),%eax +c0103547: 83 e8 0c sub $0xc,%eax +c010354a: 89 45 ec mov %eax,-0x14(%ebp) + if (p->property >= n) {// 检查当前块的页数是否满足请求 +c010354d: 8b 45 ec mov -0x14(%ebp),%eax +c0103550: 8b 40 08 mov 0x8(%eax),%eax +c0103553: 39 45 08 cmp %eax,0x8(%ebp) +c0103556: 77 08 ja c0103560 + page = p;// 找到合适的块 +c0103558: 8b 45 ec mov -0x14(%ebp),%eax +c010355b: 89 45 f4 mov %eax,-0xc(%ebp) + break;// 退出循环 +c010355e: eb 18 jmp c0103578 +c0103560: 8b 45 f0 mov -0x10(%ebp),%eax +c0103563: 89 45 e4 mov %eax,-0x1c(%ebp) + return listelm->next; +c0103566: 8b 45 e4 mov -0x1c(%ebp),%eax +c0103569: 8b 40 04 mov 0x4(%eax),%eax + while ((le = list_next(le)) != &free_list) { +c010356c: 89 45 f0 mov %eax,-0x10(%ebp) +c010356f: 81 7d f0 e4 5f 12 c0 cmpl $0xc0125fe4,-0x10(%ebp) +c0103576: 75 cc jne c0103544 + } + } + if (page != NULL) {// 如果找到合适的块 +c0103578: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) +c010357c: 0f 84 eb 00 00 00 je c010366d + //list_del(&(page->page_link));// 从空闲列表中删除该块 + if (page->property > n) { +c0103582: 8b 45 f4 mov -0xc(%ebp),%eax +c0103585: 8b 40 08 mov 0x8(%eax),%eax +c0103588: 39 45 08 cmp %eax,0x8(%ebp) +c010358b: 0f 83 88 00 00 00 jae c0103619 + struct Page *p = page + n;// 指向剩余的页 +c0103591: 8b 45 08 mov 0x8(%ebp),%eax +c0103594: c1 e0 05 shl $0x5,%eax +c0103597: 89 c2 mov %eax,%edx +c0103599: 8b 45 f4 mov -0xc(%ebp),%eax +c010359c: 01 d0 add %edx,%eax +c010359e: 89 45 e8 mov %eax,-0x18(%ebp) + p->property = page->property - n;// 更新剩余块的页数 +c01035a1: 8b 45 f4 mov -0xc(%ebp),%eax +c01035a4: 8b 40 08 mov 0x8(%eax),%eax +c01035a7: 2b 45 08 sub 0x8(%ebp),%eax +c01035aa: 89 c2 mov %eax,%edx +c01035ac: 8b 45 e8 mov -0x18(%ebp),%eax +c01035af: 89 50 08 mov %edx,0x8(%eax) + SetPageProperty(p); +c01035b2: 8b 45 e8 mov -0x18(%ebp),%eax +c01035b5: 83 c0 04 add $0x4,%eax +c01035b8: c7 45 cc 01 00 00 00 movl $0x1,-0x34(%ebp) +c01035bf: 89 45 c8 mov %eax,-0x38(%ebp) + asm volatile ("btsl %1, %0" :"=m" (*(volatile long *)addr) : "Ir" (nr)); +c01035c2: 8b 45 c8 mov -0x38(%ebp),%eax +c01035c5: 8b 55 cc mov -0x34(%ebp),%edx +c01035c8: 0f ab 10 bts %edx,(%eax) +} +c01035cb: 90 nop + list_add_after(&(page->page_link), &(p->page_link));// 将剩余块添加回空闲列表 +c01035cc: 8b 45 e8 mov -0x18(%ebp),%eax +c01035cf: 83 c0 0c add $0xc,%eax +c01035d2: 8b 55 f4 mov -0xc(%ebp),%edx +c01035d5: 83 c2 0c add $0xc,%edx +c01035d8: 89 55 e0 mov %edx,-0x20(%ebp) +c01035db: 89 45 dc mov %eax,-0x24(%ebp) + __list_add(elm, listelm, listelm->next); +c01035de: 8b 45 e0 mov -0x20(%ebp),%eax +c01035e1: 8b 40 04 mov 0x4(%eax),%eax +c01035e4: 8b 55 dc mov -0x24(%ebp),%edx +c01035e7: 89 55 d8 mov %edx,-0x28(%ebp) +c01035ea: 8b 55 e0 mov -0x20(%ebp),%edx +c01035ed: 89 55 d4 mov %edx,-0x2c(%ebp) +c01035f0: 89 45 d0 mov %eax,-0x30(%ebp) + prev->next = next->prev = elm; +c01035f3: 8b 45 d0 mov -0x30(%ebp),%eax +c01035f6: 8b 55 d8 mov -0x28(%ebp),%edx +c01035f9: 89 10 mov %edx,(%eax) +c01035fb: 8b 45 d0 mov -0x30(%ebp),%eax +c01035fe: 8b 10 mov (%eax),%edx +c0103600: 8b 45 d4 mov -0x2c(%ebp),%eax +c0103603: 89 50 04 mov %edx,0x4(%eax) + elm->next = next; +c0103606: 8b 45 d8 mov -0x28(%ebp),%eax +c0103609: 8b 55 d0 mov -0x30(%ebp),%edx +c010360c: 89 50 04 mov %edx,0x4(%eax) + elm->prev = prev; +c010360f: 8b 45 d8 mov -0x28(%ebp),%eax +c0103612: 8b 55 d4 mov -0x2c(%ebp),%edx +c0103615: 89 10 mov %edx,(%eax) +} +c0103617: 90 nop +} +c0103618: 90 nop + } + list_del(&(page->page_link)); +c0103619: 8b 45 f4 mov -0xc(%ebp),%eax +c010361c: 83 c0 0c add $0xc,%eax +c010361f: 89 45 bc mov %eax,-0x44(%ebp) + __list_del(listelm->prev, listelm->next); +c0103622: 8b 45 bc mov -0x44(%ebp),%eax +c0103625: 8b 40 04 mov 0x4(%eax),%eax +c0103628: 8b 55 bc mov -0x44(%ebp),%edx +c010362b: 8b 12 mov (%edx),%edx +c010362d: 89 55 b8 mov %edx,-0x48(%ebp) +c0103630: 89 45 b4 mov %eax,-0x4c(%ebp) + * This is only for internal list manipulation where we know + * the prev/next entries already! + * */ +static inline void +__list_del(list_entry_t *prev, list_entry_t *next) { + prev->next = next; +c0103633: 8b 45 b8 mov -0x48(%ebp),%eax +c0103636: 8b 55 b4 mov -0x4c(%ebp),%edx +c0103639: 89 50 04 mov %edx,0x4(%eax) + next->prev = prev; +c010363c: 8b 45 b4 mov -0x4c(%ebp),%eax +c010363f: 8b 55 b8 mov -0x48(%ebp),%edx +c0103642: 89 10 mov %edx,(%eax) +} +c0103644: 90 nop +} +c0103645: 90 nop + nr_free -= n;// 减少空闲页的计数 +c0103646: a1 ec 5f 12 c0 mov 0xc0125fec,%eax +c010364b: 2b 45 08 sub 0x8(%ebp),%eax +c010364e: a3 ec 5f 12 c0 mov %eax,0xc0125fec + ClearPageProperty(page);// 清除已分配页的属性 +c0103653: 8b 45 f4 mov -0xc(%ebp),%eax +c0103656: 83 c0 04 add $0x4,%eax +c0103659: c7 45 c4 01 00 00 00 movl $0x1,-0x3c(%ebp) +c0103660: 89 45 c0 mov %eax,-0x40(%ebp) + asm volatile ("btrl %1, %0" :"=m" (*(volatile long *)addr) : "Ir" (nr)); +c0103663: 8b 45 c0 mov -0x40(%ebp),%eax +c0103666: 8b 55 c4 mov -0x3c(%ebp),%edx +c0103669: 0f b3 10 btr %edx,(%eax) +} +c010366c: 90 nop + } + return page;// 返回分配的页块 +c010366d: 8b 45 f4 mov -0xc(%ebp),%eax +} +c0103670: 89 ec mov %ebp,%esp +c0103672: 5d pop %ebp +c0103673: c3 ret + +c0103674 : + +static void +default_free_pages(struct Page *base, size_t n) { +c0103674: 55 push %ebp +c0103675: 89 e5 mov %esp,%ebp +c0103677: 81 ec 98 00 00 00 sub $0x98,%esp + assert(n > 0);// 确保请求释放的页数大于零 +c010367d: 83 7d 0c 00 cmpl $0x0,0xc(%ebp) +c0103681: 75 24 jne c01036a7 +c0103683: c7 44 24 0c 50 96 10 movl $0xc0109650,0xc(%esp) +c010368a: c0 +c010368b: c7 44 24 08 56 96 10 movl $0xc0109656,0x8(%esp) +c0103692: c0 +c0103693: c7 44 24 04 cb 00 00 movl $0xcb,0x4(%esp) +c010369a: 00 +c010369b: c7 04 24 6b 96 10 c0 movl $0xc010966b,(%esp) +c01036a2: e8 9b d5 ff ff call c0100c42 <__panic> + struct Page *p = base; +c01036a7: 8b 45 08 mov 0x8(%ebp),%eax +c01036aa: 89 45 f4 mov %eax,-0xc(%ebp) + // 遍历释放的页,检查状态并重置 + for (; p != base + n; p ++) { +c01036ad: e9 9d 00 00 00 jmp c010374f + assert(!PageReserved(p) && !PageProperty(p));// 确保页没有被保留并且没有属性 +c01036b2: 8b 45 f4 mov -0xc(%ebp),%eax +c01036b5: 83 c0 04 add $0x4,%eax +c01036b8: c7 45 ec 00 00 00 00 movl $0x0,-0x14(%ebp) +c01036bf: 89 45 e8 mov %eax,-0x18(%ebp) + asm volatile ("btl %2, %1; sbbl %0,%0" : "=r" (oldbit) : "m" (*(volatile long *)addr), "Ir" (nr)); +c01036c2: 8b 45 e8 mov -0x18(%ebp),%eax +c01036c5: 8b 55 ec mov -0x14(%ebp),%edx +c01036c8: 0f a3 10 bt %edx,(%eax) +c01036cb: 19 c0 sbb %eax,%eax +c01036cd: 89 45 e4 mov %eax,-0x1c(%ebp) + return oldbit != 0; +c01036d0: 83 7d e4 00 cmpl $0x0,-0x1c(%ebp) +c01036d4: 0f 95 c0 setne %al +c01036d7: 0f b6 c0 movzbl %al,%eax +c01036da: 85 c0 test %eax,%eax +c01036dc: 75 2c jne c010370a +c01036de: 8b 45 f4 mov -0xc(%ebp),%eax +c01036e1: 83 c0 04 add $0x4,%eax +c01036e4: c7 45 e0 01 00 00 00 movl $0x1,-0x20(%ebp) +c01036eb: 89 45 dc mov %eax,-0x24(%ebp) + asm volatile ("btl %2, %1; sbbl %0,%0" : "=r" (oldbit) : "m" (*(volatile long *)addr), "Ir" (nr)); +c01036ee: 8b 45 dc mov -0x24(%ebp),%eax +c01036f1: 8b 55 e0 mov -0x20(%ebp),%edx +c01036f4: 0f a3 10 bt %edx,(%eax) +c01036f7: 19 c0 sbb %eax,%eax +c01036f9: 89 45 d8 mov %eax,-0x28(%ebp) + return oldbit != 0; +c01036fc: 83 7d d8 00 cmpl $0x0,-0x28(%ebp) +c0103700: 0f 95 c0 setne %al +c0103703: 0f b6 c0 movzbl %al,%eax +c0103706: 85 c0 test %eax,%eax +c0103708: 74 24 je c010372e +c010370a: c7 44 24 0c 94 96 10 movl $0xc0109694,0xc(%esp) +c0103711: c0 +c0103712: c7 44 24 08 56 96 10 movl $0xc0109656,0x8(%esp) +c0103719: c0 +c010371a: c7 44 24 04 cf 00 00 movl $0xcf,0x4(%esp) +c0103721: 00 +c0103722: c7 04 24 6b 96 10 c0 movl $0xc010966b,(%esp) +c0103729: e8 14 d5 ff ff call c0100c42 <__panic> + p->flags = 0;// 清除 flags 字段 +c010372e: 8b 45 f4 mov -0xc(%ebp),%eax +c0103731: c7 40 04 00 00 00 00 movl $0x0,0x4(%eax) + set_page_ref(p, 0);// 清除引用计数 +c0103738: c7 44 24 04 00 00 00 movl $0x0,0x4(%esp) +c010373f: 00 +c0103740: 8b 45 f4 mov -0xc(%ebp),%eax +c0103743: 89 04 24 mov %eax,(%esp) +c0103746: e8 19 fc ff ff call c0103364 + for (; p != base + n; p ++) { +c010374b: 83 45 f4 20 addl $0x20,-0xc(%ebp) +c010374f: 8b 45 0c mov 0xc(%ebp),%eax +c0103752: c1 e0 05 shl $0x5,%eax +c0103755: 89 c2 mov %eax,%edx +c0103757: 8b 45 08 mov 0x8(%ebp),%eax +c010375a: 01 d0 add %edx,%eax +c010375c: 39 45 f4 cmp %eax,-0xc(%ebp) +c010375f: 0f 85 4d ff ff ff jne c01036b2 + } + // 设置基页的属性为释放的页数 + base->property = n; +c0103765: 8b 45 08 mov 0x8(%ebp),%eax +c0103768: 8b 55 0c mov 0xc(%ebp),%edx +c010376b: 89 50 08 mov %edx,0x8(%eax) + SetPageProperty(base);// 设置页的有效标志 +c010376e: 8b 45 08 mov 0x8(%ebp),%eax +c0103771: 83 c0 04 add $0x4,%eax +c0103774: c7 45 d0 01 00 00 00 movl $0x1,-0x30(%ebp) +c010377b: 89 45 cc mov %eax,-0x34(%ebp) + asm volatile ("btsl %1, %0" :"=m" (*(volatile long *)addr) : "Ir" (nr)); +c010377e: 8b 45 cc mov -0x34(%ebp),%eax +c0103781: 8b 55 d0 mov -0x30(%ebp),%edx +c0103784: 0f ab 10 bts %edx,(%eax) +} +c0103787: 90 nop +c0103788: c7 45 d4 e4 5f 12 c0 movl $0xc0125fe4,-0x2c(%ebp) + return listelm->next; +c010378f: 8b 45 d4 mov -0x2c(%ebp),%eax +c0103792: 8b 40 04 mov 0x4(%eax),%eax + // 遍历空闲列表,检查是否需要合并 + list_entry_t *le = list_next(&free_list); +c0103795: 89 45 f0 mov %eax,-0x10(%ebp) + while (le != &free_list) { +c0103798: e9 00 01 00 00 jmp c010389d + p = le2page(le, page_link); +c010379d: 8b 45 f0 mov -0x10(%ebp),%eax +c01037a0: 83 e8 0c sub $0xc,%eax +c01037a3: 89 45 f4 mov %eax,-0xc(%ebp) +c01037a6: 8b 45 f0 mov -0x10(%ebp),%eax +c01037a9: 89 45 c8 mov %eax,-0x38(%ebp) +c01037ac: 8b 45 c8 mov -0x38(%ebp),%eax +c01037af: 8b 40 04 mov 0x4(%eax),%eax + le = list_next(le); +c01037b2: 89 45 f0 mov %eax,-0x10(%ebp) + // 如果当前页块与释放的页块相邻,合并 + if (base + base->property == p) { +c01037b5: 8b 45 08 mov 0x8(%ebp),%eax +c01037b8: 8b 40 08 mov 0x8(%eax),%eax +c01037bb: c1 e0 05 shl $0x5,%eax +c01037be: 89 c2 mov %eax,%edx +c01037c0: 8b 45 08 mov 0x8(%ebp),%eax +c01037c3: 01 d0 add %edx,%eax +c01037c5: 39 45 f4 cmp %eax,-0xc(%ebp) +c01037c8: 75 5d jne c0103827 + base->property += p->property;// 合并当前页块 +c01037ca: 8b 45 08 mov 0x8(%ebp),%eax +c01037cd: 8b 50 08 mov 0x8(%eax),%edx +c01037d0: 8b 45 f4 mov -0xc(%ebp),%eax +c01037d3: 8b 40 08 mov 0x8(%eax),%eax +c01037d6: 01 c2 add %eax,%edx +c01037d8: 8b 45 08 mov 0x8(%ebp),%eax +c01037db: 89 50 08 mov %edx,0x8(%eax) + ClearPageProperty(p);// 清除合并页的属性 +c01037de: 8b 45 f4 mov -0xc(%ebp),%eax +c01037e1: 83 c0 04 add $0x4,%eax +c01037e4: c7 45 b8 01 00 00 00 movl $0x1,-0x48(%ebp) +c01037eb: 89 45 b4 mov %eax,-0x4c(%ebp) + asm volatile ("btrl %1, %0" :"=m" (*(volatile long *)addr) : "Ir" (nr)); +c01037ee: 8b 45 b4 mov -0x4c(%ebp),%eax +c01037f1: 8b 55 b8 mov -0x48(%ebp),%edx +c01037f4: 0f b3 10 btr %edx,(%eax) +} +c01037f7: 90 nop + list_del(&(p->page_link));// 从空闲列表中删除合并页 +c01037f8: 8b 45 f4 mov -0xc(%ebp),%eax +c01037fb: 83 c0 0c add $0xc,%eax +c01037fe: 89 45 c4 mov %eax,-0x3c(%ebp) + __list_del(listelm->prev, listelm->next); +c0103801: 8b 45 c4 mov -0x3c(%ebp),%eax +c0103804: 8b 40 04 mov 0x4(%eax),%eax +c0103807: 8b 55 c4 mov -0x3c(%ebp),%edx +c010380a: 8b 12 mov (%edx),%edx +c010380c: 89 55 c0 mov %edx,-0x40(%ebp) +c010380f: 89 45 bc mov %eax,-0x44(%ebp) + prev->next = next; +c0103812: 8b 45 c0 mov -0x40(%ebp),%eax +c0103815: 8b 55 bc mov -0x44(%ebp),%edx +c0103818: 89 50 04 mov %edx,0x4(%eax) + next->prev = prev; +c010381b: 8b 45 bc mov -0x44(%ebp),%eax +c010381e: 8b 55 c0 mov -0x40(%ebp),%edx +c0103821: 89 10 mov %edx,(%eax) +} +c0103823: 90 nop +} +c0103824: 90 nop +c0103825: eb 76 jmp c010389d + } + else if (p + p->property == base) { +c0103827: 8b 45 f4 mov -0xc(%ebp),%eax +c010382a: 8b 40 08 mov 0x8(%eax),%eax +c010382d: c1 e0 05 shl $0x5,%eax +c0103830: 89 c2 mov %eax,%edx +c0103832: 8b 45 f4 mov -0xc(%ebp),%eax +c0103835: 01 d0 add %edx,%eax +c0103837: 39 45 08 cmp %eax,0x8(%ebp) +c010383a: 75 61 jne c010389d + p->property += base->property;// 合并前一个页块 +c010383c: 8b 45 f4 mov -0xc(%ebp),%eax +c010383f: 8b 50 08 mov 0x8(%eax),%edx +c0103842: 8b 45 08 mov 0x8(%ebp),%eax +c0103845: 8b 40 08 mov 0x8(%eax),%eax +c0103848: 01 c2 add %eax,%edx +c010384a: 8b 45 f4 mov -0xc(%ebp),%eax +c010384d: 89 50 08 mov %edx,0x8(%eax) + ClearPageProperty(base);// 清除当前页的属性 +c0103850: 8b 45 08 mov 0x8(%ebp),%eax +c0103853: 83 c0 04 add $0x4,%eax +c0103856: c7 45 a4 01 00 00 00 movl $0x1,-0x5c(%ebp) +c010385d: 89 45 a0 mov %eax,-0x60(%ebp) + asm volatile ("btrl %1, %0" :"=m" (*(volatile long *)addr) : "Ir" (nr)); +c0103860: 8b 45 a0 mov -0x60(%ebp),%eax +c0103863: 8b 55 a4 mov -0x5c(%ebp),%edx +c0103866: 0f b3 10 btr %edx,(%eax) +} +c0103869: 90 nop + base = p;// 更新 base 指针 +c010386a: 8b 45 f4 mov -0xc(%ebp),%eax +c010386d: 89 45 08 mov %eax,0x8(%ebp) + list_del(&(p->page_link));// 从空闲列表中删除当前页 +c0103870: 8b 45 f4 mov -0xc(%ebp),%eax +c0103873: 83 c0 0c add $0xc,%eax +c0103876: 89 45 b0 mov %eax,-0x50(%ebp) + __list_del(listelm->prev, listelm->next); +c0103879: 8b 45 b0 mov -0x50(%ebp),%eax +c010387c: 8b 40 04 mov 0x4(%eax),%eax +c010387f: 8b 55 b0 mov -0x50(%ebp),%edx +c0103882: 8b 12 mov (%edx),%edx +c0103884: 89 55 ac mov %edx,-0x54(%ebp) +c0103887: 89 45 a8 mov %eax,-0x58(%ebp) + prev->next = next; +c010388a: 8b 45 ac mov -0x54(%ebp),%eax +c010388d: 8b 55 a8 mov -0x58(%ebp),%edx +c0103890: 89 50 04 mov %edx,0x4(%eax) + next->prev = prev; +c0103893: 8b 45 a8 mov -0x58(%ebp),%eax +c0103896: 8b 55 ac mov -0x54(%ebp),%edx +c0103899: 89 10 mov %edx,(%eax) +} +c010389b: 90 nop +} +c010389c: 90 nop + while (le != &free_list) { +c010389d: 81 7d f0 e4 5f 12 c0 cmpl $0xc0125fe4,-0x10(%ebp) +c01038a4: 0f 85 f3 fe ff ff jne c010379d + } + } + nr_free += n;// 更新空闲页的计数 +c01038aa: 8b 15 ec 5f 12 c0 mov 0xc0125fec,%edx +c01038b0: 8b 45 0c mov 0xc(%ebp),%eax +c01038b3: 01 d0 add %edx,%eax +c01038b5: a3 ec 5f 12 c0 mov %eax,0xc0125fec +c01038ba: c7 45 9c e4 5f 12 c0 movl $0xc0125fe4,-0x64(%ebp) + return listelm->next; +c01038c1: 8b 45 9c mov -0x64(%ebp),%eax +c01038c4: 8b 40 04 mov 0x4(%eax),%eax + le = list_next(&free_list); +c01038c7: 89 45 f0 mov %eax,-0x10(%ebp) + while (le != &free_list) +c01038ca: eb 66 jmp c0103932 + { + p = le2page(le, page_link); +c01038cc: 8b 45 f0 mov -0x10(%ebp),%eax +c01038cf: 83 e8 0c sub $0xc,%eax +c01038d2: 89 45 f4 mov %eax,-0xc(%ebp) + if (base + base->property <= p) +c01038d5: 8b 45 08 mov 0x8(%ebp),%eax +c01038d8: 8b 40 08 mov 0x8(%eax),%eax +c01038db: c1 e0 05 shl $0x5,%eax +c01038de: 89 c2 mov %eax,%edx +c01038e0: 8b 45 08 mov 0x8(%ebp),%eax +c01038e3: 01 d0 add %edx,%eax +c01038e5: 39 45 f4 cmp %eax,-0xc(%ebp) +c01038e8: 72 39 jb c0103923 + { + assert(base + base->property != p); +c01038ea: 8b 45 08 mov 0x8(%ebp),%eax +c01038ed: 8b 40 08 mov 0x8(%eax),%eax +c01038f0: c1 e0 05 shl $0x5,%eax +c01038f3: 89 c2 mov %eax,%edx +c01038f5: 8b 45 08 mov 0x8(%ebp),%eax +c01038f8: 01 d0 add %edx,%eax +c01038fa: 39 45 f4 cmp %eax,-0xc(%ebp) +c01038fd: 75 3e jne c010393d +c01038ff: c7 44 24 0c b9 96 10 movl $0xc01096b9,0xc(%esp) +c0103906: c0 +c0103907: c7 44 24 08 56 96 10 movl $0xc0109656,0x8(%esp) +c010390e: c0 +c010390f: c7 44 24 04 ef 00 00 movl $0xef,0x4(%esp) +c0103916: 00 +c0103917: c7 04 24 6b 96 10 c0 movl $0xc010966b,(%esp) +c010391e: e8 1f d3 ff ff call c0100c42 <__panic> +c0103923: 8b 45 f0 mov -0x10(%ebp),%eax +c0103926: 89 45 98 mov %eax,-0x68(%ebp) +c0103929: 8b 45 98 mov -0x68(%ebp),%eax +c010392c: 8b 40 04 mov 0x4(%eax),%eax + break; + } + le = list_next(le); +c010392f: 89 45 f0 mov %eax,-0x10(%ebp) + while (le != &free_list) +c0103932: 81 7d f0 e4 5f 12 c0 cmpl $0xc0125fe4,-0x10(%ebp) +c0103939: 75 91 jne c01038cc +c010393b: eb 01 jmp c010393e + break; +c010393d: 90 nop + } + + list_add_before(le, &(base->page_link));// 将释放的页块添加到空闲列表中 +c010393e: 8b 45 08 mov 0x8(%ebp),%eax +c0103941: 8d 50 0c lea 0xc(%eax),%edx +c0103944: 8b 45 f0 mov -0x10(%ebp),%eax +c0103947: 89 45 94 mov %eax,-0x6c(%ebp) +c010394a: 89 55 90 mov %edx,-0x70(%ebp) + __list_add(elm, listelm->prev, listelm); +c010394d: 8b 45 94 mov -0x6c(%ebp),%eax +c0103950: 8b 00 mov (%eax),%eax +c0103952: 8b 55 90 mov -0x70(%ebp),%edx +c0103955: 89 55 8c mov %edx,-0x74(%ebp) +c0103958: 89 45 88 mov %eax,-0x78(%ebp) +c010395b: 8b 45 94 mov -0x6c(%ebp),%eax +c010395e: 89 45 84 mov %eax,-0x7c(%ebp) + prev->next = next->prev = elm; +c0103961: 8b 45 84 mov -0x7c(%ebp),%eax +c0103964: 8b 55 8c mov -0x74(%ebp),%edx +c0103967: 89 10 mov %edx,(%eax) +c0103969: 8b 45 84 mov -0x7c(%ebp),%eax +c010396c: 8b 10 mov (%eax),%edx +c010396e: 8b 45 88 mov -0x78(%ebp),%eax +c0103971: 89 50 04 mov %edx,0x4(%eax) + elm->next = next; +c0103974: 8b 45 8c mov -0x74(%ebp),%eax +c0103977: 8b 55 84 mov -0x7c(%ebp),%edx +c010397a: 89 50 04 mov %edx,0x4(%eax) + elm->prev = prev; +c010397d: 8b 45 8c mov -0x74(%ebp),%eax +c0103980: 8b 55 88 mov -0x78(%ebp),%edx +c0103983: 89 10 mov %edx,(%eax) +} +c0103985: 90 nop +} +c0103986: 90 nop +} +c0103987: 90 nop +c0103988: 89 ec mov %ebp,%esp +c010398a: 5d pop %ebp +c010398b: c3 ret + +c010398c : + +//用于返回当前系统中可用的空闲页的数量。 +static size_t +default_nr_free_pages(void) { +c010398c: 55 push %ebp +c010398d: 89 e5 mov %esp,%ebp + return nr_free;// 返回当前空闲页的数量 +c010398f: a1 ec 5f 12 c0 mov 0xc0125fec,%eax +} +c0103994: 5d pop %ebp +c0103995: c3 ret + +c0103996 : + +//basic_check 函数用于测试内存分配和释放的基本功能, +//确保在不同情况下内存管理系统的正确性,包括分配、释放、合并和引用计数等操作。 +static void +basic_check(void) { +c0103996: 55 push %ebp +c0103997: 89 e5 mov %esp,%ebp +c0103999: 83 ec 48 sub $0x48,%esp + struct Page *p0, *p1, *p2; + p0 = p1 = p2 = NULL; +c010399c: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) +c01039a3: 8b 45 f4 mov -0xc(%ebp),%eax +c01039a6: 89 45 f0 mov %eax,-0x10(%ebp) +c01039a9: 8b 45 f0 mov -0x10(%ebp),%eax +c01039ac: 89 45 ec mov %eax,-0x14(%ebp) + // 分配三个页面 + assert((p0 = alloc_page()) != NULL); +c01039af: c7 04 24 01 00 00 00 movl $0x1,(%esp) +c01039b6: e8 ec 0e 00 00 call c01048a7 +c01039bb: 89 45 ec mov %eax,-0x14(%ebp) +c01039be: 83 7d ec 00 cmpl $0x0,-0x14(%ebp) +c01039c2: 75 24 jne c01039e8 +c01039c4: c7 44 24 0c d4 96 10 movl $0xc01096d4,0xc(%esp) +c01039cb: c0 +c01039cc: c7 44 24 08 56 96 10 movl $0xc0109656,0x8(%esp) +c01039d3: c0 +c01039d4: c7 44 24 04 05 01 00 movl $0x105,0x4(%esp) +c01039db: 00 +c01039dc: c7 04 24 6b 96 10 c0 movl $0xc010966b,(%esp) +c01039e3: e8 5a d2 ff ff call c0100c42 <__panic> + assert((p1 = alloc_page()) != NULL); +c01039e8: c7 04 24 01 00 00 00 movl $0x1,(%esp) +c01039ef: e8 b3 0e 00 00 call c01048a7 +c01039f4: 89 45 f0 mov %eax,-0x10(%ebp) +c01039f7: 83 7d f0 00 cmpl $0x0,-0x10(%ebp) +c01039fb: 75 24 jne c0103a21 +c01039fd: c7 44 24 0c f0 96 10 movl $0xc01096f0,0xc(%esp) +c0103a04: c0 +c0103a05: c7 44 24 08 56 96 10 movl $0xc0109656,0x8(%esp) +c0103a0c: c0 +c0103a0d: c7 44 24 04 06 01 00 movl $0x106,0x4(%esp) +c0103a14: 00 +c0103a15: c7 04 24 6b 96 10 c0 movl $0xc010966b,(%esp) +c0103a1c: e8 21 d2 ff ff call c0100c42 <__panic> + assert((p2 = alloc_page()) != NULL); +c0103a21: c7 04 24 01 00 00 00 movl $0x1,(%esp) +c0103a28: e8 7a 0e 00 00 call c01048a7 +c0103a2d: 89 45 f4 mov %eax,-0xc(%ebp) +c0103a30: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) +c0103a34: 75 24 jne c0103a5a +c0103a36: c7 44 24 0c 0c 97 10 movl $0xc010970c,0xc(%esp) +c0103a3d: c0 +c0103a3e: c7 44 24 08 56 96 10 movl $0xc0109656,0x8(%esp) +c0103a45: c0 +c0103a46: c7 44 24 04 07 01 00 movl $0x107,0x4(%esp) +c0103a4d: 00 +c0103a4e: c7 04 24 6b 96 10 c0 movl $0xc010966b,(%esp) +c0103a55: e8 e8 d1 ff ff call c0100c42 <__panic> + // 确保所有分配的页面是不同的 + assert(p0 != p1 && p0 != p2 && p1 != p2); +c0103a5a: 8b 45 ec mov -0x14(%ebp),%eax +c0103a5d: 3b 45 f0 cmp -0x10(%ebp),%eax +c0103a60: 74 10 je c0103a72 +c0103a62: 8b 45 ec mov -0x14(%ebp),%eax +c0103a65: 3b 45 f4 cmp -0xc(%ebp),%eax +c0103a68: 74 08 je c0103a72 +c0103a6a: 8b 45 f0 mov -0x10(%ebp),%eax +c0103a6d: 3b 45 f4 cmp -0xc(%ebp),%eax +c0103a70: 75 24 jne c0103a96 +c0103a72: c7 44 24 0c 28 97 10 movl $0xc0109728,0xc(%esp) +c0103a79: c0 +c0103a7a: c7 44 24 08 56 96 10 movl $0xc0109656,0x8(%esp) +c0103a81: c0 +c0103a82: c7 44 24 04 09 01 00 movl $0x109,0x4(%esp) +c0103a89: 00 +c0103a8a: c7 04 24 6b 96 10 c0 movl $0xc010966b,(%esp) +c0103a91: e8 ac d1 ff ff call c0100c42 <__panic> + // 确保页面的引用计数为 0 + assert(page_ref(p0) == 0 && page_ref(p1) == 0 && page_ref(p2) == 0); +c0103a96: 8b 45 ec mov -0x14(%ebp),%eax +c0103a99: 89 04 24 mov %eax,(%esp) +c0103a9c: e8 b9 f8 ff ff call c010335a +c0103aa1: 85 c0 test %eax,%eax +c0103aa3: 75 1e jne c0103ac3 +c0103aa5: 8b 45 f0 mov -0x10(%ebp),%eax +c0103aa8: 89 04 24 mov %eax,(%esp) +c0103aab: e8 aa f8 ff ff call c010335a +c0103ab0: 85 c0 test %eax,%eax +c0103ab2: 75 0f jne c0103ac3 +c0103ab4: 8b 45 f4 mov -0xc(%ebp),%eax +c0103ab7: 89 04 24 mov %eax,(%esp) +c0103aba: e8 9b f8 ff ff call c010335a +c0103abf: 85 c0 test %eax,%eax +c0103ac1: 74 24 je c0103ae7 +c0103ac3: c7 44 24 0c 4c 97 10 movl $0xc010974c,0xc(%esp) +c0103aca: c0 +c0103acb: c7 44 24 08 56 96 10 movl $0xc0109656,0x8(%esp) +c0103ad2: c0 +c0103ad3: c7 44 24 04 0b 01 00 movl $0x10b,0x4(%esp) +c0103ada: 00 +c0103adb: c7 04 24 6b 96 10 c0 movl $0xc010966b,(%esp) +c0103ae2: e8 5b d1 ff ff call c0100c42 <__panic> + // 确保页面地址在合法范围内 + assert(page2pa(p0) < npage * PGSIZE); +c0103ae7: 8b 45 ec mov -0x14(%ebp),%eax +c0103aea: 89 04 24 mov %eax,(%esp) +c0103aed: e8 50 f8 ff ff call c0103342 +c0103af2: 8b 15 04 60 12 c0 mov 0xc0126004,%edx +c0103af8: c1 e2 0c shl $0xc,%edx +c0103afb: 39 d0 cmp %edx,%eax +c0103afd: 72 24 jb c0103b23 +c0103aff: c7 44 24 0c 88 97 10 movl $0xc0109788,0xc(%esp) +c0103b06: c0 +c0103b07: c7 44 24 08 56 96 10 movl $0xc0109656,0x8(%esp) +c0103b0e: c0 +c0103b0f: c7 44 24 04 0d 01 00 movl $0x10d,0x4(%esp) +c0103b16: 00 +c0103b17: c7 04 24 6b 96 10 c0 movl $0xc010966b,(%esp) +c0103b1e: e8 1f d1 ff ff call c0100c42 <__panic> + assert(page2pa(p1) < npage * PGSIZE); +c0103b23: 8b 45 f0 mov -0x10(%ebp),%eax +c0103b26: 89 04 24 mov %eax,(%esp) +c0103b29: e8 14 f8 ff ff call c0103342 +c0103b2e: 8b 15 04 60 12 c0 mov 0xc0126004,%edx +c0103b34: c1 e2 0c shl $0xc,%edx +c0103b37: 39 d0 cmp %edx,%eax +c0103b39: 72 24 jb c0103b5f +c0103b3b: c7 44 24 0c a5 97 10 movl $0xc01097a5,0xc(%esp) +c0103b42: c0 +c0103b43: c7 44 24 08 56 96 10 movl $0xc0109656,0x8(%esp) +c0103b4a: c0 +c0103b4b: c7 44 24 04 0e 01 00 movl $0x10e,0x4(%esp) +c0103b52: 00 +c0103b53: c7 04 24 6b 96 10 c0 movl $0xc010966b,(%esp) +c0103b5a: e8 e3 d0 ff ff call c0100c42 <__panic> + assert(page2pa(p2) < npage * PGSIZE); +c0103b5f: 8b 45 f4 mov -0xc(%ebp),%eax +c0103b62: 89 04 24 mov %eax,(%esp) +c0103b65: e8 d8 f7 ff ff call c0103342 +c0103b6a: 8b 15 04 60 12 c0 mov 0xc0126004,%edx +c0103b70: c1 e2 0c shl $0xc,%edx +c0103b73: 39 d0 cmp %edx,%eax +c0103b75: 72 24 jb c0103b9b +c0103b77: c7 44 24 0c c2 97 10 movl $0xc01097c2,0xc(%esp) +c0103b7e: c0 +c0103b7f: c7 44 24 08 56 96 10 movl $0xc0109656,0x8(%esp) +c0103b86: c0 +c0103b87: c7 44 24 04 0f 01 00 movl $0x10f,0x4(%esp) +c0103b8e: 00 +c0103b8f: c7 04 24 6b 96 10 c0 movl $0xc010966b,(%esp) +c0103b96: e8 a7 d0 ff ff call c0100c42 <__panic> + // 保存当前的空闲页面链表和数量 + list_entry_t free_list_store = free_list; +c0103b9b: a1 e4 5f 12 c0 mov 0xc0125fe4,%eax +c0103ba0: 8b 15 e8 5f 12 c0 mov 0xc0125fe8,%edx +c0103ba6: 89 45 d0 mov %eax,-0x30(%ebp) +c0103ba9: 89 55 d4 mov %edx,-0x2c(%ebp) +c0103bac: c7 45 dc e4 5f 12 c0 movl $0xc0125fe4,-0x24(%ebp) + elm->prev = elm->next = elm; +c0103bb3: 8b 45 dc mov -0x24(%ebp),%eax +c0103bb6: 8b 55 dc mov -0x24(%ebp),%edx +c0103bb9: 89 50 04 mov %edx,0x4(%eax) +c0103bbc: 8b 45 dc mov -0x24(%ebp),%eax +c0103bbf: 8b 50 04 mov 0x4(%eax),%edx +c0103bc2: 8b 45 dc mov -0x24(%ebp),%eax +c0103bc5: 89 10 mov %edx,(%eax) +} +c0103bc7: 90 nop +c0103bc8: c7 45 e0 e4 5f 12 c0 movl $0xc0125fe4,-0x20(%ebp) + return list->next == list; +c0103bcf: 8b 45 e0 mov -0x20(%ebp),%eax +c0103bd2: 8b 40 04 mov 0x4(%eax),%eax +c0103bd5: 39 45 e0 cmp %eax,-0x20(%ebp) +c0103bd8: 0f 94 c0 sete %al +c0103bdb: 0f b6 c0 movzbl %al,%eax + list_init(&free_list);// 初始化空闲列表 + assert(list_empty(&free_list));// 确保空闲列表为空 +c0103bde: 85 c0 test %eax,%eax +c0103be0: 75 24 jne c0103c06 +c0103be2: c7 44 24 0c df 97 10 movl $0xc01097df,0xc(%esp) +c0103be9: c0 +c0103bea: c7 44 24 08 56 96 10 movl $0xc0109656,0x8(%esp) +c0103bf1: c0 +c0103bf2: c7 44 24 04 13 01 00 movl $0x113,0x4(%esp) +c0103bf9: 00 +c0103bfa: c7 04 24 6b 96 10 c0 movl $0xc010966b,(%esp) +c0103c01: e8 3c d0 ff ff call c0100c42 <__panic> + + unsigned int nr_free_store = nr_free;// 保存当前空闲页数量 +c0103c06: a1 ec 5f 12 c0 mov 0xc0125fec,%eax +c0103c0b: 89 45 e8 mov %eax,-0x18(%ebp) + nr_free = 0;// 将空闲页数量设为 0 +c0103c0e: c7 05 ec 5f 12 c0 00 movl $0x0,0xc0125fec +c0103c15: 00 00 00 + // 请求分配页面,但当前没有空闲页面 + assert(alloc_page() == NULL); +c0103c18: c7 04 24 01 00 00 00 movl $0x1,(%esp) +c0103c1f: e8 83 0c 00 00 call c01048a7 +c0103c24: 85 c0 test %eax,%eax +c0103c26: 74 24 je c0103c4c +c0103c28: c7 44 24 0c f6 97 10 movl $0xc01097f6,0xc(%esp) +c0103c2f: c0 +c0103c30: c7 44 24 08 56 96 10 movl $0xc0109656,0x8(%esp) +c0103c37: c0 +c0103c38: c7 44 24 04 18 01 00 movl $0x118,0x4(%esp) +c0103c3f: 00 +c0103c40: c7 04 24 6b 96 10 c0 movl $0xc010966b,(%esp) +c0103c47: e8 f6 cf ff ff call c0100c42 <__panic> + // 释放之前分配的页面 + free_page(p0); +c0103c4c: c7 44 24 04 01 00 00 movl $0x1,0x4(%esp) +c0103c53: 00 +c0103c54: 8b 45 ec mov -0x14(%ebp),%eax +c0103c57: 89 04 24 mov %eax,(%esp) +c0103c5a: e8 b5 0c 00 00 call c0104914 + free_page(p1); +c0103c5f: c7 44 24 04 01 00 00 movl $0x1,0x4(%esp) +c0103c66: 00 +c0103c67: 8b 45 f0 mov -0x10(%ebp),%eax +c0103c6a: 89 04 24 mov %eax,(%esp) +c0103c6d: e8 a2 0c 00 00 call c0104914 + free_page(p2); +c0103c72: c7 44 24 04 01 00 00 movl $0x1,0x4(%esp) +c0103c79: 00 +c0103c7a: 8b 45 f4 mov -0xc(%ebp),%eax +c0103c7d: 89 04 24 mov %eax,(%esp) +c0103c80: e8 8f 0c 00 00 call c0104914 + assert(nr_free == 3);// 确保释放后空闲页数量为 3 +c0103c85: a1 ec 5f 12 c0 mov 0xc0125fec,%eax +c0103c8a: 83 f8 03 cmp $0x3,%eax +c0103c8d: 74 24 je c0103cb3 +c0103c8f: c7 44 24 0c 0b 98 10 movl $0xc010980b,0xc(%esp) +c0103c96: c0 +c0103c97: c7 44 24 08 56 96 10 movl $0xc0109656,0x8(%esp) +c0103c9e: c0 +c0103c9f: c7 44 24 04 1d 01 00 movl $0x11d,0x4(%esp) +c0103ca6: 00 +c0103ca7: c7 04 24 6b 96 10 c0 movl $0xc010966b,(%esp) +c0103cae: e8 8f cf ff ff call c0100c42 <__panic> + // 再次分配三个页面 + assert((p0 = alloc_page()) != NULL); +c0103cb3: c7 04 24 01 00 00 00 movl $0x1,(%esp) +c0103cba: e8 e8 0b 00 00 call c01048a7 +c0103cbf: 89 45 ec mov %eax,-0x14(%ebp) +c0103cc2: 83 7d ec 00 cmpl $0x0,-0x14(%ebp) +c0103cc6: 75 24 jne c0103cec +c0103cc8: c7 44 24 0c d4 96 10 movl $0xc01096d4,0xc(%esp) +c0103ccf: c0 +c0103cd0: c7 44 24 08 56 96 10 movl $0xc0109656,0x8(%esp) +c0103cd7: c0 +c0103cd8: c7 44 24 04 1f 01 00 movl $0x11f,0x4(%esp) +c0103cdf: 00 +c0103ce0: c7 04 24 6b 96 10 c0 movl $0xc010966b,(%esp) +c0103ce7: e8 56 cf ff ff call c0100c42 <__panic> + assert((p1 = alloc_page()) != NULL); +c0103cec: c7 04 24 01 00 00 00 movl $0x1,(%esp) +c0103cf3: e8 af 0b 00 00 call c01048a7 +c0103cf8: 89 45 f0 mov %eax,-0x10(%ebp) +c0103cfb: 83 7d f0 00 cmpl $0x0,-0x10(%ebp) +c0103cff: 75 24 jne c0103d25 +c0103d01: c7 44 24 0c f0 96 10 movl $0xc01096f0,0xc(%esp) +c0103d08: c0 +c0103d09: c7 44 24 08 56 96 10 movl $0xc0109656,0x8(%esp) +c0103d10: c0 +c0103d11: c7 44 24 04 20 01 00 movl $0x120,0x4(%esp) +c0103d18: 00 +c0103d19: c7 04 24 6b 96 10 c0 movl $0xc010966b,(%esp) +c0103d20: e8 1d cf ff ff call c0100c42 <__panic> + assert((p2 = alloc_page()) != NULL); +c0103d25: c7 04 24 01 00 00 00 movl $0x1,(%esp) +c0103d2c: e8 76 0b 00 00 call c01048a7 +c0103d31: 89 45 f4 mov %eax,-0xc(%ebp) +c0103d34: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) +c0103d38: 75 24 jne c0103d5e +c0103d3a: c7 44 24 0c 0c 97 10 movl $0xc010970c,0xc(%esp) +c0103d41: c0 +c0103d42: c7 44 24 08 56 96 10 movl $0xc0109656,0x8(%esp) +c0103d49: c0 +c0103d4a: c7 44 24 04 21 01 00 movl $0x121,0x4(%esp) +c0103d51: 00 +c0103d52: c7 04 24 6b 96 10 c0 movl $0xc010966b,(%esp) +c0103d59: e8 e4 ce ff ff call c0100c42 <__panic> + // 测试空闲页面是否不足 + assert(alloc_page() == NULL); +c0103d5e: c7 04 24 01 00 00 00 movl $0x1,(%esp) +c0103d65: e8 3d 0b 00 00 call c01048a7 +c0103d6a: 85 c0 test %eax,%eax +c0103d6c: 74 24 je c0103d92 +c0103d6e: c7 44 24 0c f6 97 10 movl $0xc01097f6,0xc(%esp) +c0103d75: c0 +c0103d76: c7 44 24 08 56 96 10 movl $0xc0109656,0x8(%esp) +c0103d7d: c0 +c0103d7e: c7 44 24 04 23 01 00 movl $0x123,0x4(%esp) +c0103d85: 00 +c0103d86: c7 04 24 6b 96 10 c0 movl $0xc010966b,(%esp) +c0103d8d: e8 b0 ce ff ff call c0100c42 <__panic> + // 释放 p0,并检查空闲列表 + free_page(p0); +c0103d92: c7 44 24 04 01 00 00 movl $0x1,0x4(%esp) +c0103d99: 00 +c0103d9a: 8b 45 ec mov -0x14(%ebp),%eax +c0103d9d: 89 04 24 mov %eax,(%esp) +c0103da0: e8 6f 0b 00 00 call c0104914 +c0103da5: c7 45 d8 e4 5f 12 c0 movl $0xc0125fe4,-0x28(%ebp) +c0103dac: 8b 45 d8 mov -0x28(%ebp),%eax +c0103daf: 8b 40 04 mov 0x4(%eax),%eax +c0103db2: 39 45 d8 cmp %eax,-0x28(%ebp) +c0103db5: 0f 94 c0 sete %al +c0103db8: 0f b6 c0 movzbl %al,%eax + assert(!list_empty(&free_list));// 确保空闲列表不为空 +c0103dbb: 85 c0 test %eax,%eax +c0103dbd: 74 24 je c0103de3 +c0103dbf: c7 44 24 0c 18 98 10 movl $0xc0109818,0xc(%esp) +c0103dc6: c0 +c0103dc7: c7 44 24 08 56 96 10 movl $0xc0109656,0x8(%esp) +c0103dce: c0 +c0103dcf: c7 44 24 04 26 01 00 movl $0x126,0x4(%esp) +c0103dd6: 00 +c0103dd7: c7 04 24 6b 96 10 c0 movl $0xc010966b,(%esp) +c0103dde: e8 5f ce ff ff call c0100c42 <__panic> + + struct Page *p; + // 重新分配 p0,确保取回的是相同的页面 + assert((p = alloc_page()) == p0); +c0103de3: c7 04 24 01 00 00 00 movl $0x1,(%esp) +c0103dea: e8 b8 0a 00 00 call c01048a7 +c0103def: 89 45 e4 mov %eax,-0x1c(%ebp) +c0103df2: 8b 45 e4 mov -0x1c(%ebp),%eax +c0103df5: 3b 45 ec cmp -0x14(%ebp),%eax +c0103df8: 74 24 je c0103e1e +c0103dfa: c7 44 24 0c 30 98 10 movl $0xc0109830,0xc(%esp) +c0103e01: c0 +c0103e02: c7 44 24 08 56 96 10 movl $0xc0109656,0x8(%esp) +c0103e09: c0 +c0103e0a: c7 44 24 04 2a 01 00 movl $0x12a,0x4(%esp) +c0103e11: 00 +c0103e12: c7 04 24 6b 96 10 c0 movl $0xc010966b,(%esp) +c0103e19: e8 24 ce ff ff call c0100c42 <__panic> + assert(alloc_page() == NULL);// 确保没有更多的页面可分配 +c0103e1e: c7 04 24 01 00 00 00 movl $0x1,(%esp) +c0103e25: e8 7d 0a 00 00 call c01048a7 +c0103e2a: 85 c0 test %eax,%eax +c0103e2c: 74 24 je c0103e52 +c0103e2e: c7 44 24 0c f6 97 10 movl $0xc01097f6,0xc(%esp) +c0103e35: c0 +c0103e36: c7 44 24 08 56 96 10 movl $0xc0109656,0x8(%esp) +c0103e3d: c0 +c0103e3e: c7 44 24 04 2b 01 00 movl $0x12b,0x4(%esp) +c0103e45: 00 +c0103e46: c7 04 24 6b 96 10 c0 movl $0xc010966b,(%esp) +c0103e4d: e8 f0 cd ff ff call c0100c42 <__panic> + + assert(nr_free == 0);// 确保当前空闲页面数量为 0 +c0103e52: a1 ec 5f 12 c0 mov 0xc0125fec,%eax +c0103e57: 85 c0 test %eax,%eax +c0103e59: 74 24 je c0103e7f +c0103e5b: c7 44 24 0c 49 98 10 movl $0xc0109849,0xc(%esp) +c0103e62: c0 +c0103e63: c7 44 24 08 56 96 10 movl $0xc0109656,0x8(%esp) +c0103e6a: c0 +c0103e6b: c7 44 24 04 2d 01 00 movl $0x12d,0x4(%esp) +c0103e72: 00 +c0103e73: c7 04 24 6b 96 10 c0 movl $0xc010966b,(%esp) +c0103e7a: e8 c3 cd ff ff call c0100c42 <__panic> + // 恢复之前的空闲页面链表和数量 + free_list = free_list_store; +c0103e7f: 8b 45 d0 mov -0x30(%ebp),%eax +c0103e82: 8b 55 d4 mov -0x2c(%ebp),%edx +c0103e85: a3 e4 5f 12 c0 mov %eax,0xc0125fe4 +c0103e8a: 89 15 e8 5f 12 c0 mov %edx,0xc0125fe8 + nr_free = nr_free_store; +c0103e90: 8b 45 e8 mov -0x18(%ebp),%eax +c0103e93: a3 ec 5f 12 c0 mov %eax,0xc0125fec + // 释放最后的页面 + free_page(p); +c0103e98: c7 44 24 04 01 00 00 movl $0x1,0x4(%esp) +c0103e9f: 00 +c0103ea0: 8b 45 e4 mov -0x1c(%ebp),%eax +c0103ea3: 89 04 24 mov %eax,(%esp) +c0103ea6: e8 69 0a 00 00 call c0104914 + free_page(p1); +c0103eab: c7 44 24 04 01 00 00 movl $0x1,0x4(%esp) +c0103eb2: 00 +c0103eb3: 8b 45 f0 mov -0x10(%ebp),%eax +c0103eb6: 89 04 24 mov %eax,(%esp) +c0103eb9: e8 56 0a 00 00 call c0104914 + free_page(p2); +c0103ebe: c7 44 24 04 01 00 00 movl $0x1,0x4(%esp) +c0103ec5: 00 +c0103ec6: 8b 45 f4 mov -0xc(%ebp),%eax +c0103ec9: 89 04 24 mov %eax,(%esp) +c0103ecc: e8 43 0a 00 00 call c0104914 +} +c0103ed1: 90 nop +c0103ed2: 89 ec mov %ebp,%esp +c0103ed4: 5d pop %ebp +c0103ed5: c3 ret + +c0103ed6 : + +// LAB2: below code is used to check the first fit allocation algorithm (your EXERCISE 1) +// NOTICE: You SHOULD NOT CHANGE basic_check, default_check functions! +static void +default_check(void) { +c0103ed6: 55 push %ebp +c0103ed7: 89 e5 mov %esp,%ebp +c0103ed9: 81 ec 98 00 00 00 sub $0x98,%esp + int count = 0, total = 0; +c0103edf: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) +c0103ee6: c7 45 f0 00 00 00 00 movl $0x0,-0x10(%ebp) + list_entry_t *le = &free_list; +c0103eed: c7 45 ec e4 5f 12 c0 movl $0xc0125fe4,-0x14(%ebp) + // 遍历空闲列表,计算空闲页面的数量和总属性值 + while ((le = list_next(le)) != &free_list) { +c0103ef4: eb 6a jmp c0103f60 + struct Page *p = le2page(le, page_link); +c0103ef6: 8b 45 ec mov -0x14(%ebp),%eax +c0103ef9: 83 e8 0c sub $0xc,%eax +c0103efc: 89 45 d4 mov %eax,-0x2c(%ebp) + assert(PageProperty(p));// 确保每个页面的属性是有效的 +c0103eff: 8b 45 d4 mov -0x2c(%ebp),%eax +c0103f02: 83 c0 04 add $0x4,%eax +c0103f05: c7 45 d0 01 00 00 00 movl $0x1,-0x30(%ebp) +c0103f0c: 89 45 cc mov %eax,-0x34(%ebp) + asm volatile ("btl %2, %1; sbbl %0,%0" : "=r" (oldbit) : "m" (*(volatile long *)addr), "Ir" (nr)); +c0103f0f: 8b 45 cc mov -0x34(%ebp),%eax +c0103f12: 8b 55 d0 mov -0x30(%ebp),%edx +c0103f15: 0f a3 10 bt %edx,(%eax) +c0103f18: 19 c0 sbb %eax,%eax +c0103f1a: 89 45 c8 mov %eax,-0x38(%ebp) + return oldbit != 0; +c0103f1d: 83 7d c8 00 cmpl $0x0,-0x38(%ebp) +c0103f21: 0f 95 c0 setne %al +c0103f24: 0f b6 c0 movzbl %al,%eax +c0103f27: 85 c0 test %eax,%eax +c0103f29: 75 24 jne c0103f4f +c0103f2b: c7 44 24 0c 56 98 10 movl $0xc0109856,0xc(%esp) +c0103f32: c0 +c0103f33: c7 44 24 08 56 96 10 movl $0xc0109656,0x8(%esp) +c0103f3a: c0 +c0103f3b: c7 44 24 04 40 01 00 movl $0x140,0x4(%esp) +c0103f42: 00 +c0103f43: c7 04 24 6b 96 10 c0 movl $0xc010966b,(%esp) +c0103f4a: e8 f3 cc ff ff call c0100c42 <__panic> + count ++, total += p->property;// 累加页面属性 +c0103f4f: ff 45 f4 incl -0xc(%ebp) +c0103f52: 8b 45 d4 mov -0x2c(%ebp),%eax +c0103f55: 8b 50 08 mov 0x8(%eax),%edx +c0103f58: 8b 45 f0 mov -0x10(%ebp),%eax +c0103f5b: 01 d0 add %edx,%eax +c0103f5d: 89 45 f0 mov %eax,-0x10(%ebp) +c0103f60: 8b 45 ec mov -0x14(%ebp),%eax +c0103f63: 89 45 c4 mov %eax,-0x3c(%ebp) + return listelm->next; +c0103f66: 8b 45 c4 mov -0x3c(%ebp),%eax +c0103f69: 8b 40 04 mov 0x4(%eax),%eax + while ((le = list_next(le)) != &free_list) { +c0103f6c: 89 45 ec mov %eax,-0x14(%ebp) +c0103f6f: 81 7d ec e4 5f 12 c0 cmpl $0xc0125fe4,-0x14(%ebp) +c0103f76: 0f 85 7a ff ff ff jne c0103ef6 + } + // 确保总属性值与空闲页面数量匹配 + assert(total == nr_free_pages()); +c0103f7c: e8 c8 09 00 00 call c0104949 +c0103f81: 8b 55 f0 mov -0x10(%ebp),%edx +c0103f84: 39 d0 cmp %edx,%eax +c0103f86: 74 24 je c0103fac +c0103f88: c7 44 24 0c 66 98 10 movl $0xc0109866,0xc(%esp) +c0103f8f: c0 +c0103f90: c7 44 24 08 56 96 10 movl $0xc0109656,0x8(%esp) +c0103f97: c0 +c0103f98: c7 44 24 04 44 01 00 movl $0x144,0x4(%esp) +c0103f9f: 00 +c0103fa0: c7 04 24 6b 96 10 c0 movl $0xc010966b,(%esp) +c0103fa7: e8 96 cc ff ff call c0100c42 <__panic> + // 调用 basic_check 以验证基本的内存管理功能 + basic_check(); +c0103fac: e8 e5 f9 ff ff call c0103996 + // 分配 5 个页面 + struct Page *p0 = alloc_pages(5), *p1, *p2; +c0103fb1: c7 04 24 05 00 00 00 movl $0x5,(%esp) +c0103fb8: e8 ea 08 00 00 call c01048a7 +c0103fbd: 89 45 e8 mov %eax,-0x18(%ebp) + assert(p0 != NULL);// 确保成功分配 +c0103fc0: 83 7d e8 00 cmpl $0x0,-0x18(%ebp) +c0103fc4: 75 24 jne c0103fea +c0103fc6: c7 44 24 0c 7f 98 10 movl $0xc010987f,0xc(%esp) +c0103fcd: c0 +c0103fce: c7 44 24 08 56 96 10 movl $0xc0109656,0x8(%esp) +c0103fd5: c0 +c0103fd6: c7 44 24 04 49 01 00 movl $0x149,0x4(%esp) +c0103fdd: 00 +c0103fde: c7 04 24 6b 96 10 c0 movl $0xc010966b,(%esp) +c0103fe5: e8 58 cc ff ff call c0100c42 <__panic> + assert(!PageProperty(p0));// 确保分配的页面不带属性 +c0103fea: 8b 45 e8 mov -0x18(%ebp),%eax +c0103fed: 83 c0 04 add $0x4,%eax +c0103ff0: c7 45 c0 01 00 00 00 movl $0x1,-0x40(%ebp) +c0103ff7: 89 45 bc mov %eax,-0x44(%ebp) + asm volatile ("btl %2, %1; sbbl %0,%0" : "=r" (oldbit) : "m" (*(volatile long *)addr), "Ir" (nr)); +c0103ffa: 8b 45 bc mov -0x44(%ebp),%eax +c0103ffd: 8b 55 c0 mov -0x40(%ebp),%edx +c0104000: 0f a3 10 bt %edx,(%eax) +c0104003: 19 c0 sbb %eax,%eax +c0104005: 89 45 b8 mov %eax,-0x48(%ebp) + return oldbit != 0; +c0104008: 83 7d b8 00 cmpl $0x0,-0x48(%ebp) +c010400c: 0f 95 c0 setne %al +c010400f: 0f b6 c0 movzbl %al,%eax +c0104012: 85 c0 test %eax,%eax +c0104014: 74 24 je c010403a +c0104016: c7 44 24 0c 8a 98 10 movl $0xc010988a,0xc(%esp) +c010401d: c0 +c010401e: c7 44 24 08 56 96 10 movl $0xc0109656,0x8(%esp) +c0104025: c0 +c0104026: c7 44 24 04 4a 01 00 movl $0x14a,0x4(%esp) +c010402d: 00 +c010402e: c7 04 24 6b 96 10 c0 movl $0xc010966b,(%esp) +c0104035: e8 08 cc ff ff call c0100c42 <__panic> + // 初始化并检查空闲列表 + list_entry_t free_list_store = free_list; +c010403a: a1 e4 5f 12 c0 mov 0xc0125fe4,%eax +c010403f: 8b 15 e8 5f 12 c0 mov 0xc0125fe8,%edx +c0104045: 89 45 80 mov %eax,-0x80(%ebp) +c0104048: 89 55 84 mov %edx,-0x7c(%ebp) +c010404b: c7 45 b0 e4 5f 12 c0 movl $0xc0125fe4,-0x50(%ebp) + elm->prev = elm->next = elm; +c0104052: 8b 45 b0 mov -0x50(%ebp),%eax +c0104055: 8b 55 b0 mov -0x50(%ebp),%edx +c0104058: 89 50 04 mov %edx,0x4(%eax) +c010405b: 8b 45 b0 mov -0x50(%ebp),%eax +c010405e: 8b 50 04 mov 0x4(%eax),%edx +c0104061: 8b 45 b0 mov -0x50(%ebp),%eax +c0104064: 89 10 mov %edx,(%eax) +} +c0104066: 90 nop +c0104067: c7 45 b4 e4 5f 12 c0 movl $0xc0125fe4,-0x4c(%ebp) + return list->next == list; +c010406e: 8b 45 b4 mov -0x4c(%ebp),%eax +c0104071: 8b 40 04 mov 0x4(%eax),%eax +c0104074: 39 45 b4 cmp %eax,-0x4c(%ebp) +c0104077: 0f 94 c0 sete %al +c010407a: 0f b6 c0 movzbl %al,%eax + list_init(&free_list); + assert(list_empty(&free_list));// 确保空闲列表为空 +c010407d: 85 c0 test %eax,%eax +c010407f: 75 24 jne c01040a5 +c0104081: c7 44 24 0c df 97 10 movl $0xc01097df,0xc(%esp) +c0104088: c0 +c0104089: c7 44 24 08 56 96 10 movl $0xc0109656,0x8(%esp) +c0104090: c0 +c0104091: c7 44 24 04 4e 01 00 movl $0x14e,0x4(%esp) +c0104098: 00 +c0104099: c7 04 24 6b 96 10 c0 movl $0xc010966b,(%esp) +c01040a0: e8 9d cb ff ff call c0100c42 <__panic> + assert(alloc_page() == NULL);// 确保没有页面可分配 +c01040a5: c7 04 24 01 00 00 00 movl $0x1,(%esp) +c01040ac: e8 f6 07 00 00 call c01048a7 +c01040b1: 85 c0 test %eax,%eax +c01040b3: 74 24 je c01040d9 +c01040b5: c7 44 24 0c f6 97 10 movl $0xc01097f6,0xc(%esp) +c01040bc: c0 +c01040bd: c7 44 24 08 56 96 10 movl $0xc0109656,0x8(%esp) +c01040c4: c0 +c01040c5: c7 44 24 04 4f 01 00 movl $0x14f,0x4(%esp) +c01040cc: 00 +c01040cd: c7 04 24 6b 96 10 c0 movl $0xc010966b,(%esp) +c01040d4: e8 69 cb ff ff call c0100c42 <__panic> + + unsigned int nr_free_store = nr_free;// 保存当前空闲页数 +c01040d9: a1 ec 5f 12 c0 mov 0xc0125fec,%eax +c01040de: 89 45 e4 mov %eax,-0x1c(%ebp) + nr_free = 0;// 将空闲页数设为 0 +c01040e1: c7 05 ec 5f 12 c0 00 movl $0x0,0xc0125fec +c01040e8: 00 00 00 + // 释放 3 个页面并确保分配页面时没有足够的空闲页 + free_pages(p0 + 2, 3); +c01040eb: 8b 45 e8 mov -0x18(%ebp),%eax +c01040ee: 83 c0 40 add $0x40,%eax +c01040f1: c7 44 24 04 03 00 00 movl $0x3,0x4(%esp) +c01040f8: 00 +c01040f9: 89 04 24 mov %eax,(%esp) +c01040fc: e8 13 08 00 00 call c0104914 + assert(alloc_pages(4) == NULL);// 确保无法分配 4 个页面 +c0104101: c7 04 24 04 00 00 00 movl $0x4,(%esp) +c0104108: e8 9a 07 00 00 call c01048a7 +c010410d: 85 c0 test %eax,%eax +c010410f: 74 24 je c0104135 +c0104111: c7 44 24 0c 9c 98 10 movl $0xc010989c,0xc(%esp) +c0104118: c0 +c0104119: c7 44 24 08 56 96 10 movl $0xc0109656,0x8(%esp) +c0104120: c0 +c0104121: c7 44 24 04 55 01 00 movl $0x155,0x4(%esp) +c0104128: 00 +c0104129: c7 04 24 6b 96 10 c0 movl $0xc010966b,(%esp) +c0104130: e8 0d cb ff ff call c0100c42 <__panic> + assert(PageProperty(p0 + 2) && p0[2].property == 3);// 检查页面属性 +c0104135: 8b 45 e8 mov -0x18(%ebp),%eax +c0104138: 83 c0 40 add $0x40,%eax +c010413b: 83 c0 04 add $0x4,%eax +c010413e: c7 45 ac 01 00 00 00 movl $0x1,-0x54(%ebp) +c0104145: 89 45 a8 mov %eax,-0x58(%ebp) + asm volatile ("btl %2, %1; sbbl %0,%0" : "=r" (oldbit) : "m" (*(volatile long *)addr), "Ir" (nr)); +c0104148: 8b 45 a8 mov -0x58(%ebp),%eax +c010414b: 8b 55 ac mov -0x54(%ebp),%edx +c010414e: 0f a3 10 bt %edx,(%eax) +c0104151: 19 c0 sbb %eax,%eax +c0104153: 89 45 a4 mov %eax,-0x5c(%ebp) + return oldbit != 0; +c0104156: 83 7d a4 00 cmpl $0x0,-0x5c(%ebp) +c010415a: 0f 95 c0 setne %al +c010415d: 0f b6 c0 movzbl %al,%eax +c0104160: 85 c0 test %eax,%eax +c0104162: 74 0e je c0104172 +c0104164: 8b 45 e8 mov -0x18(%ebp),%eax +c0104167: 83 c0 40 add $0x40,%eax +c010416a: 8b 40 08 mov 0x8(%eax),%eax +c010416d: 83 f8 03 cmp $0x3,%eax +c0104170: 74 24 je c0104196 +c0104172: c7 44 24 0c b4 98 10 movl $0xc01098b4,0xc(%esp) +c0104179: c0 +c010417a: c7 44 24 08 56 96 10 movl $0xc0109656,0x8(%esp) +c0104181: c0 +c0104182: c7 44 24 04 56 01 00 movl $0x156,0x4(%esp) +c0104189: 00 +c010418a: c7 04 24 6b 96 10 c0 movl $0xc010966b,(%esp) +c0104191: e8 ac ca ff ff call c0100c42 <__panic> + assert((p1 = alloc_pages(3)) != NULL);// 再次分配 3 个页面 +c0104196: c7 04 24 03 00 00 00 movl $0x3,(%esp) +c010419d: e8 05 07 00 00 call c01048a7 +c01041a2: 89 45 e0 mov %eax,-0x20(%ebp) +c01041a5: 83 7d e0 00 cmpl $0x0,-0x20(%ebp) +c01041a9: 75 24 jne c01041cf +c01041ab: c7 44 24 0c e0 98 10 movl $0xc01098e0,0xc(%esp) +c01041b2: c0 +c01041b3: c7 44 24 08 56 96 10 movl $0xc0109656,0x8(%esp) +c01041ba: c0 +c01041bb: c7 44 24 04 57 01 00 movl $0x157,0x4(%esp) +c01041c2: 00 +c01041c3: c7 04 24 6b 96 10 c0 movl $0xc010966b,(%esp) +c01041ca: e8 73 ca ff ff call c0100c42 <__panic> + assert(alloc_page() == NULL);// 确保没有页面可分配 +c01041cf: c7 04 24 01 00 00 00 movl $0x1,(%esp) +c01041d6: e8 cc 06 00 00 call c01048a7 +c01041db: 85 c0 test %eax,%eax +c01041dd: 74 24 je c0104203 +c01041df: c7 44 24 0c f6 97 10 movl $0xc01097f6,0xc(%esp) +c01041e6: c0 +c01041e7: c7 44 24 08 56 96 10 movl $0xc0109656,0x8(%esp) +c01041ee: c0 +c01041ef: c7 44 24 04 58 01 00 movl $0x158,0x4(%esp) +c01041f6: 00 +c01041f7: c7 04 24 6b 96 10 c0 movl $0xc010966b,(%esp) +c01041fe: e8 3f ca ff ff call c0100c42 <__panic> + assert(p0 + 2 == p1);// 确保分配的页面是释放的页面 +c0104203: 8b 45 e8 mov -0x18(%ebp),%eax +c0104206: 83 c0 40 add $0x40,%eax +c0104209: 39 45 e0 cmp %eax,-0x20(%ebp) +c010420c: 74 24 je c0104232 +c010420e: c7 44 24 0c fe 98 10 movl $0xc01098fe,0xc(%esp) +c0104215: c0 +c0104216: c7 44 24 08 56 96 10 movl $0xc0109656,0x8(%esp) +c010421d: c0 +c010421e: c7 44 24 04 59 01 00 movl $0x159,0x4(%esp) +c0104225: 00 +c0104226: c7 04 24 6b 96 10 c0 movl $0xc010966b,(%esp) +c010422d: e8 10 ca ff ff call c0100c42 <__panic> + + p2 = p0 + 1;// 设置 p2 为 p0 的下一个页面 +c0104232: 8b 45 e8 mov -0x18(%ebp),%eax +c0104235: 83 c0 20 add $0x20,%eax +c0104238: 89 45 dc mov %eax,-0x24(%ebp) + free_page(p0);// 释放 p0 页面 +c010423b: c7 44 24 04 01 00 00 movl $0x1,0x4(%esp) +c0104242: 00 +c0104243: 8b 45 e8 mov -0x18(%ebp),%eax +c0104246: 89 04 24 mov %eax,(%esp) +c0104249: e8 c6 06 00 00 call c0104914 + free_pages(p1, 3);// 释放 p1 指向的页面 +c010424e: c7 44 24 04 03 00 00 movl $0x3,0x4(%esp) +c0104255: 00 +c0104256: 8b 45 e0 mov -0x20(%ebp),%eax +c0104259: 89 04 24 mov %eax,(%esp) +c010425c: e8 b3 06 00 00 call c0104914 + assert(PageProperty(p0) && p0->property == 1);// 检查 p0 属性 +c0104261: 8b 45 e8 mov -0x18(%ebp),%eax +c0104264: 83 c0 04 add $0x4,%eax +c0104267: c7 45 a0 01 00 00 00 movl $0x1,-0x60(%ebp) +c010426e: 89 45 9c mov %eax,-0x64(%ebp) + asm volatile ("btl %2, %1; sbbl %0,%0" : "=r" (oldbit) : "m" (*(volatile long *)addr), "Ir" (nr)); +c0104271: 8b 45 9c mov -0x64(%ebp),%eax +c0104274: 8b 55 a0 mov -0x60(%ebp),%edx +c0104277: 0f a3 10 bt %edx,(%eax) +c010427a: 19 c0 sbb %eax,%eax +c010427c: 89 45 98 mov %eax,-0x68(%ebp) + return oldbit != 0; +c010427f: 83 7d 98 00 cmpl $0x0,-0x68(%ebp) +c0104283: 0f 95 c0 setne %al +c0104286: 0f b6 c0 movzbl %al,%eax +c0104289: 85 c0 test %eax,%eax +c010428b: 74 0b je c0104298 +c010428d: 8b 45 e8 mov -0x18(%ebp),%eax +c0104290: 8b 40 08 mov 0x8(%eax),%eax +c0104293: 83 f8 01 cmp $0x1,%eax +c0104296: 74 24 je c01042bc +c0104298: c7 44 24 0c 0c 99 10 movl $0xc010990c,0xc(%esp) +c010429f: c0 +c01042a0: c7 44 24 08 56 96 10 movl $0xc0109656,0x8(%esp) +c01042a7: c0 +c01042a8: c7 44 24 04 5e 01 00 movl $0x15e,0x4(%esp) +c01042af: 00 +c01042b0: c7 04 24 6b 96 10 c0 movl $0xc010966b,(%esp) +c01042b7: e8 86 c9 ff ff call c0100c42 <__panic> + assert(PageProperty(p1) && p1->property == 3);// 检查 p1 属性 +c01042bc: 8b 45 e0 mov -0x20(%ebp),%eax +c01042bf: 83 c0 04 add $0x4,%eax +c01042c2: c7 45 94 01 00 00 00 movl $0x1,-0x6c(%ebp) +c01042c9: 89 45 90 mov %eax,-0x70(%ebp) + asm volatile ("btl %2, %1; sbbl %0,%0" : "=r" (oldbit) : "m" (*(volatile long *)addr), "Ir" (nr)); +c01042cc: 8b 45 90 mov -0x70(%ebp),%eax +c01042cf: 8b 55 94 mov -0x6c(%ebp),%edx +c01042d2: 0f a3 10 bt %edx,(%eax) +c01042d5: 19 c0 sbb %eax,%eax +c01042d7: 89 45 8c mov %eax,-0x74(%ebp) + return oldbit != 0; +c01042da: 83 7d 8c 00 cmpl $0x0,-0x74(%ebp) +c01042de: 0f 95 c0 setne %al +c01042e1: 0f b6 c0 movzbl %al,%eax +c01042e4: 85 c0 test %eax,%eax +c01042e6: 74 0b je c01042f3 +c01042e8: 8b 45 e0 mov -0x20(%ebp),%eax +c01042eb: 8b 40 08 mov 0x8(%eax),%eax +c01042ee: 83 f8 03 cmp $0x3,%eax +c01042f1: 74 24 je c0104317 +c01042f3: c7 44 24 0c 34 99 10 movl $0xc0109934,0xc(%esp) +c01042fa: c0 +c01042fb: c7 44 24 08 56 96 10 movl $0xc0109656,0x8(%esp) +c0104302: c0 +c0104303: c7 44 24 04 5f 01 00 movl $0x15f,0x4(%esp) +c010430a: 00 +c010430b: c7 04 24 6b 96 10 c0 movl $0xc010966b,(%esp) +c0104312: e8 2b c9 ff ff call c0100c42 <__panic> + // 确保重分配的页面是之前释放的页面 + assert((p0 = alloc_page()) == p2 - 1); +c0104317: c7 04 24 01 00 00 00 movl $0x1,(%esp) +c010431e: e8 84 05 00 00 call c01048a7 +c0104323: 89 45 e8 mov %eax,-0x18(%ebp) +c0104326: 8b 45 dc mov -0x24(%ebp),%eax +c0104329: 83 e8 20 sub $0x20,%eax +c010432c: 39 45 e8 cmp %eax,-0x18(%ebp) +c010432f: 74 24 je c0104355 +c0104331: c7 44 24 0c 5a 99 10 movl $0xc010995a,0xc(%esp) +c0104338: c0 +c0104339: c7 44 24 08 56 96 10 movl $0xc0109656,0x8(%esp) +c0104340: c0 +c0104341: c7 44 24 04 61 01 00 movl $0x161,0x4(%esp) +c0104348: 00 +c0104349: c7 04 24 6b 96 10 c0 movl $0xc010966b,(%esp) +c0104350: e8 ed c8 ff ff call c0100c42 <__panic> + free_page(p0);// 释放分配的页面 +c0104355: c7 44 24 04 01 00 00 movl $0x1,0x4(%esp) +c010435c: 00 +c010435d: 8b 45 e8 mov -0x18(%ebp),%eax +c0104360: 89 04 24 mov %eax,(%esp) +c0104363: e8 ac 05 00 00 call c0104914 + assert((p0 = alloc_pages(2)) == p2 + 1);// 分配 2 个页面并检查 +c0104368: c7 04 24 02 00 00 00 movl $0x2,(%esp) +c010436f: e8 33 05 00 00 call c01048a7 +c0104374: 89 45 e8 mov %eax,-0x18(%ebp) +c0104377: 8b 45 dc mov -0x24(%ebp),%eax +c010437a: 83 c0 20 add $0x20,%eax +c010437d: 39 45 e8 cmp %eax,-0x18(%ebp) +c0104380: 74 24 je c01043a6 +c0104382: c7 44 24 0c 78 99 10 movl $0xc0109978,0xc(%esp) +c0104389: c0 +c010438a: c7 44 24 08 56 96 10 movl $0xc0109656,0x8(%esp) +c0104391: c0 +c0104392: c7 44 24 04 63 01 00 movl $0x163,0x4(%esp) +c0104399: 00 +c010439a: c7 04 24 6b 96 10 c0 movl $0xc010966b,(%esp) +c01043a1: e8 9c c8 ff ff call c0100c42 <__panic> + // 释放页面并检查空闲状态 + free_pages(p0, 2); +c01043a6: c7 44 24 04 02 00 00 movl $0x2,0x4(%esp) +c01043ad: 00 +c01043ae: 8b 45 e8 mov -0x18(%ebp),%eax +c01043b1: 89 04 24 mov %eax,(%esp) +c01043b4: e8 5b 05 00 00 call c0104914 + free_page(p2); +c01043b9: c7 44 24 04 01 00 00 movl $0x1,0x4(%esp) +c01043c0: 00 +c01043c1: 8b 45 dc mov -0x24(%ebp),%eax +c01043c4: 89 04 24 mov %eax,(%esp) +c01043c7: e8 48 05 00 00 call c0104914 + // 再次分配 5 个页面 + assert((p0 = alloc_pages(5)) != NULL); +c01043cc: c7 04 24 05 00 00 00 movl $0x5,(%esp) +c01043d3: e8 cf 04 00 00 call c01048a7 +c01043d8: 89 45 e8 mov %eax,-0x18(%ebp) +c01043db: 83 7d e8 00 cmpl $0x0,-0x18(%ebp) +c01043df: 75 24 jne c0104405 +c01043e1: c7 44 24 0c 98 99 10 movl $0xc0109998,0xc(%esp) +c01043e8: c0 +c01043e9: c7 44 24 08 56 96 10 movl $0xc0109656,0x8(%esp) +c01043f0: c0 +c01043f1: c7 44 24 04 68 01 00 movl $0x168,0x4(%esp) +c01043f8: 00 +c01043f9: c7 04 24 6b 96 10 c0 movl $0xc010966b,(%esp) +c0104400: e8 3d c8 ff ff call c0100c42 <__panic> + assert(alloc_page() == NULL);// 确保没有额外页面可分配 +c0104405: c7 04 24 01 00 00 00 movl $0x1,(%esp) +c010440c: e8 96 04 00 00 call c01048a7 +c0104411: 85 c0 test %eax,%eax +c0104413: 74 24 je c0104439 +c0104415: c7 44 24 0c f6 97 10 movl $0xc01097f6,0xc(%esp) +c010441c: c0 +c010441d: c7 44 24 08 56 96 10 movl $0xc0109656,0x8(%esp) +c0104424: c0 +c0104425: c7 44 24 04 69 01 00 movl $0x169,0x4(%esp) +c010442c: 00 +c010442d: c7 04 24 6b 96 10 c0 movl $0xc010966b,(%esp) +c0104434: e8 09 c8 ff ff call c0100c42 <__panic> + + assert(nr_free == 0);// 确保空闲页数为 0 +c0104439: a1 ec 5f 12 c0 mov 0xc0125fec,%eax +c010443e: 85 c0 test %eax,%eax +c0104440: 74 24 je c0104466 +c0104442: c7 44 24 0c 49 98 10 movl $0xc0109849,0xc(%esp) +c0104449: c0 +c010444a: c7 44 24 08 56 96 10 movl $0xc0109656,0x8(%esp) +c0104451: c0 +c0104452: c7 44 24 04 6b 01 00 movl $0x16b,0x4(%esp) +c0104459: 00 +c010445a: c7 04 24 6b 96 10 c0 movl $0xc010966b,(%esp) +c0104461: e8 dc c7 ff ff call c0100c42 <__panic> + nr_free = nr_free_store;// 恢复空闲页数 +c0104466: 8b 45 e4 mov -0x1c(%ebp),%eax +c0104469: a3 ec 5f 12 c0 mov %eax,0xc0125fec + // 恢复空闲列表状态 + free_list = free_list_store; +c010446e: 8b 45 80 mov -0x80(%ebp),%eax +c0104471: 8b 55 84 mov -0x7c(%ebp),%edx +c0104474: a3 e4 5f 12 c0 mov %eax,0xc0125fe4 +c0104479: 89 15 e8 5f 12 c0 mov %edx,0xc0125fe8 + free_pages(p0, 5);// 释放所有分配的页面 +c010447f: c7 44 24 04 05 00 00 movl $0x5,0x4(%esp) +c0104486: 00 +c0104487: 8b 45 e8 mov -0x18(%ebp),%eax +c010448a: 89 04 24 mov %eax,(%esp) +c010448d: e8 82 04 00 00 call c0104914 + // 验证空闲列表的一致性 + le = &free_list; +c0104492: c7 45 ec e4 5f 12 c0 movl $0xc0125fe4,-0x14(%ebp) + while ((le = list_next(le)) != &free_list) { +c0104499: eb 1c jmp c01044b7 + struct Page *p = le2page(le, page_link); +c010449b: 8b 45 ec mov -0x14(%ebp),%eax +c010449e: 83 e8 0c sub $0xc,%eax +c01044a1: 89 45 d8 mov %eax,-0x28(%ebp) + count --, total -= p->property; +c01044a4: ff 4d f4 decl -0xc(%ebp) +c01044a7: 8b 55 f0 mov -0x10(%ebp),%edx +c01044aa: 8b 45 d8 mov -0x28(%ebp),%eax +c01044ad: 8b 48 08 mov 0x8(%eax),%ecx +c01044b0: 89 d0 mov %edx,%eax +c01044b2: 29 c8 sub %ecx,%eax +c01044b4: 89 45 f0 mov %eax,-0x10(%ebp) +c01044b7: 8b 45 ec mov -0x14(%ebp),%eax +c01044ba: 89 45 88 mov %eax,-0x78(%ebp) + return listelm->next; +c01044bd: 8b 45 88 mov -0x78(%ebp),%eax +c01044c0: 8b 40 04 mov 0x4(%eax),%eax + while ((le = list_next(le)) != &free_list) { +c01044c3: 89 45 ec mov %eax,-0x14(%ebp) +c01044c6: 81 7d ec e4 5f 12 c0 cmpl $0xc0125fe4,-0x14(%ebp) +c01044cd: 75 cc jne c010449b + } + assert(count == 0);// 确保所有页面都已处理 +c01044cf: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) +c01044d3: 74 24 je c01044f9 +c01044d5: c7 44 24 0c b6 99 10 movl $0xc01099b6,0xc(%esp) +c01044dc: c0 +c01044dd: c7 44 24 08 56 96 10 movl $0xc0109656,0x8(%esp) +c01044e4: c0 +c01044e5: c7 44 24 04 76 01 00 movl $0x176,0x4(%esp) +c01044ec: 00 +c01044ed: c7 04 24 6b 96 10 c0 movl $0xc010966b,(%esp) +c01044f4: e8 49 c7 ff ff call c0100c42 <__panic> + assert(total == 0);// 确保总属性值为 0 +c01044f9: 83 7d f0 00 cmpl $0x0,-0x10(%ebp) +c01044fd: 74 24 je c0104523 +c01044ff: c7 44 24 0c c1 99 10 movl $0xc01099c1,0xc(%esp) +c0104506: c0 +c0104507: c7 44 24 08 56 96 10 movl $0xc0109656,0x8(%esp) +c010450e: c0 +c010450f: c7 44 24 04 77 01 00 movl $0x177,0x4(%esp) +c0104516: 00 +c0104517: c7 04 24 6b 96 10 c0 movl $0xc010966b,(%esp) +c010451e: e8 1f c7 ff ff call c0100c42 <__panic> +} +c0104523: 90 nop +c0104524: 89 ec mov %ebp,%esp +c0104526: 5d pop %ebp +c0104527: c3 ret + +c0104528 : +page2ppn(struct Page *page) { +c0104528: 55 push %ebp +c0104529: 89 e5 mov %esp,%ebp + return page - pages; +c010452b: 8b 15 00 60 12 c0 mov 0xc0126000,%edx +c0104531: 8b 45 08 mov 0x8(%ebp),%eax +c0104534: 29 d0 sub %edx,%eax +c0104536: c1 f8 05 sar $0x5,%eax +} +c0104539: 5d pop %ebp +c010453a: c3 ret + +c010453b : +page2pa(struct Page *page) { +c010453b: 55 push %ebp +c010453c: 89 e5 mov %esp,%ebp +c010453e: 83 ec 04 sub $0x4,%esp + return page2ppn(page) << PGSHIFT; +c0104541: 8b 45 08 mov 0x8(%ebp),%eax +c0104544: 89 04 24 mov %eax,(%esp) +c0104547: e8 dc ff ff ff call c0104528 +c010454c: c1 e0 0c shl $0xc,%eax +} +c010454f: 89 ec mov %ebp,%esp +c0104551: 5d pop %ebp +c0104552: c3 ret + +c0104553 : +pa2page(uintptr_t pa) { +c0104553: 55 push %ebp +c0104554: 89 e5 mov %esp,%ebp +c0104556: 83 ec 18 sub $0x18,%esp + if (PPN(pa) >= npage) { +c0104559: 8b 45 08 mov 0x8(%ebp),%eax +c010455c: c1 e8 0c shr $0xc,%eax +c010455f: 89 c2 mov %eax,%edx +c0104561: a1 04 60 12 c0 mov 0xc0126004,%eax +c0104566: 39 c2 cmp %eax,%edx +c0104568: 72 1c jb c0104586 + panic("pa2page called with invalid pa"); +c010456a: c7 44 24 08 fc 99 10 movl $0xc01099fc,0x8(%esp) +c0104571: c0 +c0104572: c7 44 24 04 5b 00 00 movl $0x5b,0x4(%esp) +c0104579: 00 +c010457a: c7 04 24 1b 9a 10 c0 movl $0xc0109a1b,(%esp) +c0104581: e8 bc c6 ff ff call c0100c42 <__panic> + return &pages[PPN(pa)]; +c0104586: 8b 15 00 60 12 c0 mov 0xc0126000,%edx +c010458c: 8b 45 08 mov 0x8(%ebp),%eax +c010458f: c1 e8 0c shr $0xc,%eax +c0104592: c1 e0 05 shl $0x5,%eax +c0104595: 01 d0 add %edx,%eax +} +c0104597: 89 ec mov %ebp,%esp +c0104599: 5d pop %ebp +c010459a: c3 ret + +c010459b : +page2kva(struct Page *page) { +c010459b: 55 push %ebp +c010459c: 89 e5 mov %esp,%ebp +c010459e: 83 ec 28 sub $0x28,%esp + return KADDR(page2pa(page)); +c01045a1: 8b 45 08 mov 0x8(%ebp),%eax +c01045a4: 89 04 24 mov %eax,(%esp) +c01045a7: e8 8f ff ff ff call c010453b +c01045ac: 89 45 f4 mov %eax,-0xc(%ebp) +c01045af: 8b 45 f4 mov -0xc(%ebp),%eax +c01045b2: c1 e8 0c shr $0xc,%eax +c01045b5: 89 45 f0 mov %eax,-0x10(%ebp) +c01045b8: a1 04 60 12 c0 mov 0xc0126004,%eax +c01045bd: 39 45 f0 cmp %eax,-0x10(%ebp) +c01045c0: 72 23 jb c01045e5 +c01045c2: 8b 45 f4 mov -0xc(%ebp),%eax +c01045c5: 89 44 24 0c mov %eax,0xc(%esp) +c01045c9: c7 44 24 08 2c 9a 10 movl $0xc0109a2c,0x8(%esp) +c01045d0: c0 +c01045d1: c7 44 24 04 62 00 00 movl $0x62,0x4(%esp) +c01045d8: 00 +c01045d9: c7 04 24 1b 9a 10 c0 movl $0xc0109a1b,(%esp) +c01045e0: e8 5d c6 ff ff call c0100c42 <__panic> +c01045e5: 8b 45 f4 mov -0xc(%ebp),%eax +c01045e8: 2d 00 00 00 40 sub $0x40000000,%eax +} +c01045ed: 89 ec mov %ebp,%esp +c01045ef: 5d pop %ebp +c01045f0: c3 ret + +c01045f1 : +kva2page(void *kva) { +c01045f1: 55 push %ebp +c01045f2: 89 e5 mov %esp,%ebp +c01045f4: 83 ec 28 sub $0x28,%esp + return pa2page(PADDR(kva)); +c01045f7: 8b 45 08 mov 0x8(%ebp),%eax +c01045fa: 89 45 f4 mov %eax,-0xc(%ebp) +c01045fd: 81 7d f4 ff ff ff bf cmpl $0xbfffffff,-0xc(%ebp) +c0104604: 77 23 ja c0104629 +c0104606: 8b 45 f4 mov -0xc(%ebp),%eax +c0104609: 89 44 24 0c mov %eax,0xc(%esp) +c010460d: c7 44 24 08 50 9a 10 movl $0xc0109a50,0x8(%esp) +c0104614: c0 +c0104615: c7 44 24 04 67 00 00 movl $0x67,0x4(%esp) +c010461c: 00 +c010461d: c7 04 24 1b 9a 10 c0 movl $0xc0109a1b,(%esp) +c0104624: e8 19 c6 ff ff call c0100c42 <__panic> +c0104629: 8b 45 f4 mov -0xc(%ebp),%eax +c010462c: 05 00 00 00 40 add $0x40000000,%eax +c0104631: 89 04 24 mov %eax,(%esp) +c0104634: e8 1a ff ff ff call c0104553 +} +c0104639: 89 ec mov %ebp,%esp +c010463b: 5d pop %ebp +c010463c: c3 ret + +c010463d : +pte2page(pte_t pte) { +c010463d: 55 push %ebp +c010463e: 89 e5 mov %esp,%ebp +c0104640: 83 ec 18 sub $0x18,%esp + if (!(pte & PTE_P)) { +c0104643: 8b 45 08 mov 0x8(%ebp),%eax +c0104646: 83 e0 01 and $0x1,%eax +c0104649: 85 c0 test %eax,%eax +c010464b: 75 1c jne c0104669 + panic("pte2page called with invalid pte"); +c010464d: c7 44 24 08 74 9a 10 movl $0xc0109a74,0x8(%esp) +c0104654: c0 +c0104655: c7 44 24 04 6d 00 00 movl $0x6d,0x4(%esp) +c010465c: 00 +c010465d: c7 04 24 1b 9a 10 c0 movl $0xc0109a1b,(%esp) +c0104664: e8 d9 c5 ff ff call c0100c42 <__panic> + return pa2page(PTE_ADDR(pte)); +c0104669: 8b 45 08 mov 0x8(%ebp),%eax +c010466c: 25 00 f0 ff ff and $0xfffff000,%eax +c0104671: 89 04 24 mov %eax,(%esp) +c0104674: e8 da fe ff ff call c0104553 +} +c0104679: 89 ec mov %ebp,%esp +c010467b: 5d pop %ebp +c010467c: c3 ret + +c010467d : +pde2page(pde_t pde) { +c010467d: 55 push %ebp +c010467e: 89 e5 mov %esp,%ebp +c0104680: 83 ec 18 sub $0x18,%esp + return pa2page(PDE_ADDR(pde)); +c0104683: 8b 45 08 mov 0x8(%ebp),%eax +c0104686: 25 00 f0 ff ff and $0xfffff000,%eax +c010468b: 89 04 24 mov %eax,(%esp) +c010468e: e8 c0 fe ff ff call c0104553 +} +c0104693: 89 ec mov %ebp,%esp +c0104695: 5d pop %ebp +c0104696: c3 ret + +c0104697 : +page_ref(struct Page *page) { +c0104697: 55 push %ebp +c0104698: 89 e5 mov %esp,%ebp + return page->ref; +c010469a: 8b 45 08 mov 0x8(%ebp),%eax +c010469d: 8b 00 mov (%eax),%eax +} +c010469f: 5d pop %ebp +c01046a0: c3 ret + +c01046a1 : +set_page_ref(struct Page *page, int val) { +c01046a1: 55 push %ebp +c01046a2: 89 e5 mov %esp,%ebp + page->ref = val; +c01046a4: 8b 45 08 mov 0x8(%ebp),%eax +c01046a7: 8b 55 0c mov 0xc(%ebp),%edx +c01046aa: 89 10 mov %edx,(%eax) +} +c01046ac: 90 nop +c01046ad: 5d pop %ebp +c01046ae: c3 ret + +c01046af : + +static inline int +page_ref_inc(struct Page *page) { +c01046af: 55 push %ebp +c01046b0: 89 e5 mov %esp,%ebp + page->ref += 1; +c01046b2: 8b 45 08 mov 0x8(%ebp),%eax +c01046b5: 8b 00 mov (%eax),%eax +c01046b7: 8d 50 01 lea 0x1(%eax),%edx +c01046ba: 8b 45 08 mov 0x8(%ebp),%eax +c01046bd: 89 10 mov %edx,(%eax) + return page->ref; +c01046bf: 8b 45 08 mov 0x8(%ebp),%eax +c01046c2: 8b 00 mov (%eax),%eax +} +c01046c4: 5d pop %ebp +c01046c5: c3 ret + +c01046c6 : + +static inline int +page_ref_dec(struct Page *page) { +c01046c6: 55 push %ebp +c01046c7: 89 e5 mov %esp,%ebp + page->ref -= 1; +c01046c9: 8b 45 08 mov 0x8(%ebp),%eax +c01046cc: 8b 00 mov (%eax),%eax +c01046ce: 8d 50 ff lea -0x1(%eax),%edx +c01046d1: 8b 45 08 mov 0x8(%ebp),%eax +c01046d4: 89 10 mov %edx,(%eax) + return page->ref; +c01046d6: 8b 45 08 mov 0x8(%ebp),%eax +c01046d9: 8b 00 mov (%eax),%eax +} +c01046db: 5d pop %ebp +c01046dc: c3 ret + +c01046dd <__intr_save>: +__intr_save(void) { +c01046dd: 55 push %ebp +c01046de: 89 e5 mov %esp,%ebp +c01046e0: 83 ec 18 sub $0x18,%esp + asm volatile ("pushfl; popl %0" : "=r" (eflags)); +c01046e3: 9c pushf +c01046e4: 58 pop %eax +c01046e5: 89 45 f4 mov %eax,-0xc(%ebp) + return eflags; +c01046e8: 8b 45 f4 mov -0xc(%ebp),%eax + if (read_eflags() & FL_IF) { +c01046eb: 25 00 02 00 00 and $0x200,%eax +c01046f0: 85 c0 test %eax,%eax +c01046f2: 74 0c je c0104700 <__intr_save+0x23> + intr_disable(); +c01046f4: e8 ff d7 ff ff call c0101ef8 + return 1; +c01046f9: b8 01 00 00 00 mov $0x1,%eax +c01046fe: eb 05 jmp c0104705 <__intr_save+0x28> + return 0; +c0104700: b8 00 00 00 00 mov $0x0,%eax +} +c0104705: 89 ec mov %ebp,%esp +c0104707: 5d pop %ebp +c0104708: c3 ret + +c0104709 <__intr_restore>: +__intr_restore(bool flag) { +c0104709: 55 push %ebp +c010470a: 89 e5 mov %esp,%ebp +c010470c: 83 ec 08 sub $0x8,%esp + if (flag) { +c010470f: 83 7d 08 00 cmpl $0x0,0x8(%ebp) +c0104713: 74 05 je c010471a <__intr_restore+0x11> + intr_enable(); +c0104715: e8 d6 d7 ff ff call c0101ef0 +} +c010471a: 90 nop +c010471b: 89 ec mov %ebp,%esp +c010471d: 5d pop %ebp +c010471e: c3 ret + +c010471f : + * data/code segement registers for kernel. + * lgdt - 加载全局描述符表寄存器并重置内核的数据/代码段寄存器。 + * */ +//定义了一个静态内联函数 lgdt,接收一个指向伪描述符(struct pseudodesc)的指针 pd +static inline void +lgdt(struct pseudodesc *pd) { +c010471f: 55 push %ebp +c0104720: 89 e5 mov %esp,%ebp + //这行汇编代码使用 lgdt 指令加载 GDT。%0 被替换为指向 pd 的指针,告诉处理器 GDT 的地址。 + asm volatile ("lgdt (%0)" :: "r" (pd)); +c0104722: 8b 45 08 mov 0x8(%ebp),%eax +c0104725: 0f 01 10 lgdtl (%eax) + asm volatile ("movw %%ax, %%gs" :: "a" (USER_DS));//将 USER_DS(用户数据段)的值移动到 gs 段寄存器。 +c0104728: b8 23 00 00 00 mov $0x23,%eax +c010472d: 8e e8 mov %eax,%gs + asm volatile ("movw %%ax, %%fs" :: "a" (USER_DS));//将 USER_DS 的值移动到 fs 段寄存器。 +c010472f: b8 23 00 00 00 mov $0x23,%eax +c0104734: 8e e0 mov %eax,%fs + asm volatile ("movw %%ax, %%es" :: "a" (KERNEL_DS));//将 KERNEL_DS(内核数据段)的值移动到 es 段寄存器。 +c0104736: b8 10 00 00 00 mov $0x10,%eax +c010473b: 8e c0 mov %eax,%es + asm volatile ("movw %%ax, %%ds" :: "a" (KERNEL_DS));//将 KERNEL_DS 的值移动到 ds 段寄存器 +c010473d: b8 10 00 00 00 mov $0x10,%eax +c0104742: 8e d8 mov %eax,%ds + asm volatile ("movw %%ax, %%ss" :: "a" (KERNEL_DS));//将 KERNEL_DS 的值移动到 ss 段寄存器 +c0104744: b8 10 00 00 00 mov $0x10,%eax +c0104749: 8e d0 mov %eax,%ss + // reload cs + //通过 ljmp 指令重新加载代码段寄存器 cs,并跳转到标签 1。 + asm volatile ("ljmp %0, $1f\n 1:\n" :: "i" (KERNEL_CS)); +c010474b: ea 52 47 10 c0 08 00 ljmp $0x8,$0xc0104752 +} +c0104752: 90 nop +c0104753: 5d pop %ebp +c0104754: c3 ret + +c0104755 : + * load_esp0 - 修改默认任务状态段中的 ESP0,以便在从用户态陷入内核态时能够使用不同的内核栈。 + * */ +//uintptr_t esp0:这是新的堆栈指针,通常指向内核栈的顶部。 +//修改当前任务状态段(TSS)中的 ESP0 值。ESP0 是在从用户态切换到内核态时,CPU 使用的内核栈指针。 +void +load_esp0(uintptr_t esp0) { +c0104755: 55 push %ebp +c0104756: 89 e5 mov %esp,%ebp + ts.ts_esp0 = esp0; +c0104758: 8b 45 08 mov 0x8(%ebp),%eax +c010475b: a3 24 60 12 c0 mov %eax,0xc0126024 +} +c0104760: 90 nop +c0104761: 5d pop %ebp +c0104762: c3 ret + +c0104763 : + +/* gdt_init - initialize the default GDT and TSS */ +/* gdt_init - 初始化默认的 GDT 和 TSS */ +static void +gdt_init(void) { +c0104763: 55 push %ebp +c0104764: 89 e5 mov %esp,%ebp +c0104766: 83 ec 14 sub $0x14,%esp + // 设置启动内核栈和默认的 SS0 + // set boot kernel stack and default SS0 + load_esp0((uintptr_t)bootstacktop); +c0104769: b8 00 20 12 c0 mov $0xc0122000,%eax +c010476e: 89 04 24 mov %eax,(%esp) +c0104771: e8 df ff ff ff call c0104755 + ts.ts_ss0 = KERNEL_DS; +c0104776: 66 c7 05 28 60 12 c0 movw $0x10,0xc0126028 +c010477d: 10 00 + // 初始化 GDT 中的 TSS 字段 + // initialize the TSS filed of the gdt + gdt[SEG_TSS] = SEGTSS(STS_T32A, (uintptr_t)&ts, sizeof(ts), DPL_KERNEL); +c010477f: 66 c7 05 28 2a 12 c0 movw $0x68,0xc0122a28 +c0104786: 68 00 +c0104788: b8 20 60 12 c0 mov $0xc0126020,%eax +c010478d: 0f b7 c0 movzwl %ax,%eax +c0104790: 66 a3 2a 2a 12 c0 mov %ax,0xc0122a2a +c0104796: b8 20 60 12 c0 mov $0xc0126020,%eax +c010479b: c1 e8 10 shr $0x10,%eax +c010479e: a2 2c 2a 12 c0 mov %al,0xc0122a2c +c01047a3: 0f b6 05 2d 2a 12 c0 movzbl 0xc0122a2d,%eax +c01047aa: 24 f0 and $0xf0,%al +c01047ac: 0c 09 or $0x9,%al +c01047ae: a2 2d 2a 12 c0 mov %al,0xc0122a2d +c01047b3: 0f b6 05 2d 2a 12 c0 movzbl 0xc0122a2d,%eax +c01047ba: 24 ef and $0xef,%al +c01047bc: a2 2d 2a 12 c0 mov %al,0xc0122a2d +c01047c1: 0f b6 05 2d 2a 12 c0 movzbl 0xc0122a2d,%eax +c01047c8: 24 9f and $0x9f,%al +c01047ca: a2 2d 2a 12 c0 mov %al,0xc0122a2d +c01047cf: 0f b6 05 2d 2a 12 c0 movzbl 0xc0122a2d,%eax +c01047d6: 0c 80 or $0x80,%al +c01047d8: a2 2d 2a 12 c0 mov %al,0xc0122a2d +c01047dd: 0f b6 05 2e 2a 12 c0 movzbl 0xc0122a2e,%eax +c01047e4: 24 f0 and $0xf0,%al +c01047e6: a2 2e 2a 12 c0 mov %al,0xc0122a2e +c01047eb: 0f b6 05 2e 2a 12 c0 movzbl 0xc0122a2e,%eax +c01047f2: 24 ef and $0xef,%al +c01047f4: a2 2e 2a 12 c0 mov %al,0xc0122a2e +c01047f9: 0f b6 05 2e 2a 12 c0 movzbl 0xc0122a2e,%eax +c0104800: 24 df and $0xdf,%al +c0104802: a2 2e 2a 12 c0 mov %al,0xc0122a2e +c0104807: 0f b6 05 2e 2a 12 c0 movzbl 0xc0122a2e,%eax +c010480e: 0c 40 or $0x40,%al +c0104810: a2 2e 2a 12 c0 mov %al,0xc0122a2e +c0104815: 0f b6 05 2e 2a 12 c0 movzbl 0xc0122a2e,%eax +c010481c: 24 7f and $0x7f,%al +c010481e: a2 2e 2a 12 c0 mov %al,0xc0122a2e +c0104823: b8 20 60 12 c0 mov $0xc0126020,%eax +c0104828: c1 e8 18 shr $0x18,%eax +c010482b: a2 2f 2a 12 c0 mov %al,0xc0122a2f + // 使用lgdt加载全局描述符表,更新所有段寄存器 + // reload all segment registers + lgdt(&gdt_pd); +c0104830: c7 04 24 30 2a 12 c0 movl $0xc0122a30,(%esp) +c0104837: e8 e3 fe ff ff call c010471f +c010483c: 66 c7 45 fe 28 00 movw $0x28,-0x2(%ebp) + asm volatile ("ltr %0" :: "r" (sel) : "memory"); +c0104842: 0f b7 45 fe movzwl -0x2(%ebp),%eax +c0104846: 0f 00 d8 ltr %ax +} +c0104849: 90 nop + // 加载 TSS,使 CPU 在进行特权级切换时能够正确使用 TSS。 + // load the TSS + ltr(GD_TSS); +} +c010484a: 90 nop +c010484b: 89 ec mov %ebp,%esp +c010484d: 5d pop %ebp +c010484e: c3 ret + +c010484f : + +//init_pmm_manager - initialize a pmm_manager instance +//初始化一个 pmm_manager 实例 +static void +init_pmm_manager(void) { +c010484f: 55 push %ebp +c0104850: 89 e5 mov %esp,%ebp +c0104852: 83 ec 18 sub $0x18,%esp + //将 pmm_manager 指向默认的 PMM 管理器实例。 + pmm_manager = &default_pmm_manager; +c0104855: c7 05 0c 60 12 c0 e0 movl $0xc01099e0,0xc012600c +c010485c: 99 10 c0 + //使用 cprintf 打印当前内存管理器的名称。 + cprintf("memory management: %s\n", pmm_manager->name); +c010485f: a1 0c 60 12 c0 mov 0xc012600c,%eax +c0104864: 8b 00 mov (%eax),%eax +c0104866: 89 44 24 04 mov %eax,0x4(%esp) +c010486a: c7 04 24 a0 9a 10 c0 movl $0xc0109aa0,(%esp) +c0104871: e8 ff ba ff ff call c0100375 + //调用 PMM 管理器的初始化函数,以设置和准备内存管理的相关数据结构。 + pmm_manager->init(); +c0104876: a1 0c 60 12 c0 mov 0xc012600c,%eax +c010487b: 8b 40 04 mov 0x4(%eax),%eax +c010487e: ff d0 call *%eax +} +c0104880: 90 nop +c0104881: 89 ec mov %ebp,%esp +c0104883: 5d pop %ebp +c0104884: c3 ret + +c0104885 : + +//init_memmap - call pmm->init_memmap to build Page struct for free memory +// init_memmap - 调用 pmm->init_memmap 构建空闲内存的 Page 结构 +//struct Page *base:指向内存页的基础地址。 size_t n:要初始化的页数。 +static void +init_memmap(struct Page *base, size_t n) { +c0104885: 55 push %ebp +c0104886: 89 e5 mov %esp,%ebp +c0104888: 83 ec 18 sub $0x18,%esp + pmm_manager->init_memmap(base, n); +c010488b: a1 0c 60 12 c0 mov 0xc012600c,%eax +c0104890: 8b 40 08 mov 0x8(%eax),%eax +c0104893: 8b 55 0c mov 0xc(%ebp),%edx +c0104896: 89 54 24 04 mov %edx,0x4(%esp) +c010489a: 8b 55 08 mov 0x8(%ebp),%edx +c010489d: 89 14 24 mov %edx,(%esp) +c01048a0: ff d0 call *%eax +} +c01048a2: 90 nop +c01048a3: 89 ec mov %ebp,%esp +c01048a5: 5d pop %ebp +c01048a6: c3 ret + +c01048a7 : + +//alloc_pages - call pmm->alloc_pages to allocate a continuous n*PAGESIZE memory +// alloc_pages - 调用 pmm->alloc_pages 分配连续的 n*PAGESIZE 内存 +struct Page * +alloc_pages(size_t n) { +c01048a7: 55 push %ebp +c01048a8: 89 e5 mov %esp,%ebp +c01048aa: 83 ec 28 sub $0x28,%esp + struct Page *page=NULL; +c01048ad: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) + bool intr_flag; + //使用 local_intr_save 保存当前的中断状态,以避免在分配内存时发生中断。 + while (1) + { + local_intr_save(intr_flag); +c01048b4: e8 24 fe ff ff call c01046dd <__intr_save> +c01048b9: 89 45 f0 mov %eax,-0x10(%ebp) + { + page = pmm_manager->alloc_pages(n);//尝试分配 n 个页面。 +c01048bc: a1 0c 60 12 c0 mov 0xc012600c,%eax +c01048c1: 8b 40 0c mov 0xc(%eax),%eax +c01048c4: 8b 55 08 mov 0x8(%ebp),%edx +c01048c7: 89 14 24 mov %edx,(%esp) +c01048ca: ff d0 call *%eax +c01048cc: 89 45 f4 mov %eax,-0xc(%ebp) + } + local_intr_restore(intr_flag); +c01048cf: 8b 45 f0 mov -0x10(%ebp),%eax +c01048d2: 89 04 24 mov %eax,(%esp) +c01048d5: e8 2f fe ff ff call c0104709 <__intr_restore> + + if (page != NULL || n > 1 || swap_init_ok == 0) break; +c01048da: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) +c01048de: 75 2d jne c010490d +c01048e0: 83 7d 08 01 cmpl $0x1,0x8(%ebp) +c01048e4: 77 27 ja c010490d +c01048e6: a1 a4 60 12 c0 mov 0xc01260a4,%eax +c01048eb: 85 c0 test %eax,%eax +c01048ed: 74 1e je c010490d + + extern struct mm_struct *check_mm_struct; + //cprintf("page %x, call swap_out in alloc_pages %d\n",page, n); + swap_out(check_mm_struct, n, 0); +c01048ef: 8b 55 08 mov 0x8(%ebp),%edx +c01048f2: a1 6c 61 12 c0 mov 0xc012616c,%eax +c01048f7: c7 44 24 08 00 00 00 movl $0x0,0x8(%esp) +c01048fe: 00 +c01048ff: 89 54 24 04 mov %edx,0x4(%esp) +c0104903: 89 04 24 mov %eax,(%esp) +c0104906: e8 ff 19 00 00 call c010630a + { +c010490b: eb a7 jmp c01048b4 + } + //cprintf("n %d,get page %x, No %d in alloc_pages\n",n,page,(page-pages)); + return page; +c010490d: 8b 45 f4 mov -0xc(%ebp),%eax +} +c0104910: 89 ec mov %ebp,%esp +c0104912: 5d pop %ebp +c0104913: c3 ret + +c0104914 : + +//free_pages - call pmm->free_pages to free a continuous n*PAGESIZE memory +// free_pages - 调用 pmm->free_pages 释放连续的 n*PAGESIZE 内存 +//struct Page *base:指向要释放的内存页的基础地址。size_t n:要释放的页数。 +void +free_pages(struct Page *base, size_t n) { +c0104914: 55 push %ebp +c0104915: 89 e5 mov %esp,%ebp +c0104917: 83 ec 28 sub $0x28,%esp + bool intr_flag; + //使用 local_intr_save 保存当前的中断状态,以避免在释放内存时发生中断。 + local_intr_save(intr_flag); +c010491a: e8 be fd ff ff call c01046dd <__intr_save> +c010491f: 89 45 f4 mov %eax,-0xc(%ebp) + { + //调用物理内存管理器的 free_pages 函数释放 n 页的内存。 + pmm_manager->free_pages(base, n); +c0104922: a1 0c 60 12 c0 mov 0xc012600c,%eax +c0104927: 8b 40 10 mov 0x10(%eax),%eax +c010492a: 8b 55 0c mov 0xc(%ebp),%edx +c010492d: 89 54 24 04 mov %edx,0x4(%esp) +c0104931: 8b 55 08 mov 0x8(%ebp),%edx +c0104934: 89 14 24 mov %edx,(%esp) +c0104937: ff d0 call *%eax + } + local_intr_restore(intr_flag); +c0104939: 8b 45 f4 mov -0xc(%ebp),%eax +c010493c: 89 04 24 mov %eax,(%esp) +c010493f: e8 c5 fd ff ff call c0104709 <__intr_restore> +} +c0104944: 90 nop +c0104945: 89 ec mov %ebp,%esp +c0104947: 5d pop %ebp +c0104948: c3 ret + +c0104949 : + +//nr_free_pages - call pmm->nr_free_pages to get the size (nr*PAGESIZE) +//of current free memory +// nr_free_pages - 调用 pmm->nr_free_pages 获取当前空闲内存的大小 (nr * PAGESIZE) +size_t +nr_free_pages(void) { +c0104949: 55 push %ebp +c010494a: 89 e5 mov %esp,%ebp +c010494c: 83 ec 28 sub $0x28,%esp + size_t ret;// 定义变量 ret 用于存储返回的空闲内存大小 + bool intr_flag;// 定义变量 intr_flag 用于保存中断状态 + local_intr_save(intr_flag);// 保存当前中断状态,并禁用中断 +c010494f: e8 89 fd ff ff call c01046dd <__intr_save> +c0104954: 89 45 f4 mov %eax,-0xc(%ebp) + { + ret = pmm_manager->nr_free_pages();// 调用物理内存管理器的函数获取空闲内存页数 +c0104957: a1 0c 60 12 c0 mov 0xc012600c,%eax +c010495c: 8b 40 14 mov 0x14(%eax),%eax +c010495f: ff d0 call *%eax +c0104961: 89 45 f0 mov %eax,-0x10(%ebp) + } + local_intr_restore(intr_flag);// 恢复之前保存的中断状态 +c0104964: 8b 45 f4 mov -0xc(%ebp),%eax +c0104967: 89 04 24 mov %eax,(%esp) +c010496a: e8 9a fd ff ff call c0104709 <__intr_restore> + return ret;// 返回空闲内存的大小 +c010496f: 8b 45 f0 mov -0x10(%ebp),%eax +} +c0104972: 89 ec mov %ebp,%esp +c0104974: 5d pop %ebp +c0104975: c3 ret + +c0104976 : + +/* pmm_init - initialize the physical memory management */ +/* pmm_init - 初始化物理内存管理 */ +static void +page_init(void) { +c0104976: 55 push %ebp +c0104977: 89 e5 mov %esp,%ebp +c0104979: 57 push %edi +c010497a: 56 push %esi +c010497b: 53 push %ebx +c010497c: 81 ec 9c 00 00 00 sub $0x9c,%esp + // 获取物理内存映射信息,存于特定地址 + struct e820map *memmap = (struct e820map *)(0x8000 + KERNBASE); +c0104982: c7 45 c4 00 80 00 c0 movl $0xc0008000,-0x3c(%ebp) + uint64_t maxpa = 0;// 初始化最大物理地址为0 +c0104989: c7 45 e0 00 00 00 00 movl $0x0,-0x20(%ebp) +c0104990: c7 45 e4 00 00 00 00 movl $0x0,-0x1c(%ebp) + + cprintf("e820map:\n");// 打印“e820map”标题 +c0104997: c7 04 24 b7 9a 10 c0 movl $0xc0109ab7,(%esp) +c010499e: e8 d2 b9 ff ff call c0100375 + int i; + for (i = 0; i < memmap->nr_map; i ++) {// 遍历内存映射数组 +c01049a3: c7 45 dc 00 00 00 00 movl $0x0,-0x24(%ebp) +c01049aa: e9 0c 01 00 00 jmp c0104abb + uint64_t begin = memmap->map[i].addr, end = begin + memmap->map[i].size;// 获取每个区域的起始和结束地址 +c01049af: 8b 4d c4 mov -0x3c(%ebp),%ecx +c01049b2: 8b 55 dc mov -0x24(%ebp),%edx +c01049b5: 89 d0 mov %edx,%eax +c01049b7: c1 e0 02 shl $0x2,%eax +c01049ba: 01 d0 add %edx,%eax +c01049bc: c1 e0 02 shl $0x2,%eax +c01049bf: 01 c8 add %ecx,%eax +c01049c1: 8b 50 08 mov 0x8(%eax),%edx +c01049c4: 8b 40 04 mov 0x4(%eax),%eax +c01049c7: 89 45 a0 mov %eax,-0x60(%ebp) +c01049ca: 89 55 a4 mov %edx,-0x5c(%ebp) +c01049cd: 8b 4d c4 mov -0x3c(%ebp),%ecx +c01049d0: 8b 55 dc mov -0x24(%ebp),%edx +c01049d3: 89 d0 mov %edx,%eax +c01049d5: c1 e0 02 shl $0x2,%eax +c01049d8: 01 d0 add %edx,%eax +c01049da: c1 e0 02 shl $0x2,%eax +c01049dd: 01 c8 add %ecx,%eax +c01049df: 8b 48 0c mov 0xc(%eax),%ecx +c01049e2: 8b 58 10 mov 0x10(%eax),%ebx +c01049e5: 8b 45 a0 mov -0x60(%ebp),%eax +c01049e8: 8b 55 a4 mov -0x5c(%ebp),%edx +c01049eb: 01 c8 add %ecx,%eax +c01049ed: 11 da adc %ebx,%edx +c01049ef: 89 45 98 mov %eax,-0x68(%ebp) +c01049f2: 89 55 9c mov %edx,-0x64(%ebp) + cprintf(" memory: %08llx, [%08llx, %08llx], type = %d.\n",// 打印内存区域的信息 +c01049f5: 8b 4d c4 mov -0x3c(%ebp),%ecx +c01049f8: 8b 55 dc mov -0x24(%ebp),%edx +c01049fb: 89 d0 mov %edx,%eax +c01049fd: c1 e0 02 shl $0x2,%eax +c0104a00: 01 d0 add %edx,%eax +c0104a02: c1 e0 02 shl $0x2,%eax +c0104a05: 01 c8 add %ecx,%eax +c0104a07: 83 c0 14 add $0x14,%eax +c0104a0a: 8b 00 mov (%eax),%eax +c0104a0c: 89 85 7c ff ff ff mov %eax,-0x84(%ebp) +c0104a12: 8b 45 98 mov -0x68(%ebp),%eax +c0104a15: 8b 55 9c mov -0x64(%ebp),%edx +c0104a18: 83 c0 ff add $0xffffffff,%eax +c0104a1b: 83 d2 ff adc $0xffffffff,%edx +c0104a1e: 89 c6 mov %eax,%esi +c0104a20: 89 d7 mov %edx,%edi +c0104a22: 8b 4d c4 mov -0x3c(%ebp),%ecx +c0104a25: 8b 55 dc mov -0x24(%ebp),%edx +c0104a28: 89 d0 mov %edx,%eax +c0104a2a: c1 e0 02 shl $0x2,%eax +c0104a2d: 01 d0 add %edx,%eax +c0104a2f: c1 e0 02 shl $0x2,%eax +c0104a32: 01 c8 add %ecx,%eax +c0104a34: 8b 48 0c mov 0xc(%eax),%ecx +c0104a37: 8b 58 10 mov 0x10(%eax),%ebx +c0104a3a: 8b 85 7c ff ff ff mov -0x84(%ebp),%eax +c0104a40: 89 44 24 1c mov %eax,0x1c(%esp) +c0104a44: 89 74 24 14 mov %esi,0x14(%esp) +c0104a48: 89 7c 24 18 mov %edi,0x18(%esp) +c0104a4c: 8b 45 a0 mov -0x60(%ebp),%eax +c0104a4f: 8b 55 a4 mov -0x5c(%ebp),%edx +c0104a52: 89 44 24 0c mov %eax,0xc(%esp) +c0104a56: 89 54 24 10 mov %edx,0x10(%esp) +c0104a5a: 89 4c 24 04 mov %ecx,0x4(%esp) +c0104a5e: 89 5c 24 08 mov %ebx,0x8(%esp) +c0104a62: c7 04 24 c4 9a 10 c0 movl $0xc0109ac4,(%esp) +c0104a69: e8 07 b9 ff ff call c0100375 + memmap->map[i].size, begin, end - 1, memmap->map[i].type); + if (memmap->map[i].type == E820_ARM) {// 检查内存类型是否为可用内存 +c0104a6e: 8b 4d c4 mov -0x3c(%ebp),%ecx +c0104a71: 8b 55 dc mov -0x24(%ebp),%edx +c0104a74: 89 d0 mov %edx,%eax +c0104a76: c1 e0 02 shl $0x2,%eax +c0104a79: 01 d0 add %edx,%eax +c0104a7b: c1 e0 02 shl $0x2,%eax +c0104a7e: 01 c8 add %ecx,%eax +c0104a80: 83 c0 14 add $0x14,%eax +c0104a83: 8b 00 mov (%eax),%eax +c0104a85: 83 f8 01 cmp $0x1,%eax +c0104a88: 75 2e jne c0104ab8 + if (maxpa < end && begin < KMEMSIZE) {// 检查当前区域是否在有效范围内 +c0104a8a: 8b 45 e0 mov -0x20(%ebp),%eax +c0104a8d: 8b 55 e4 mov -0x1c(%ebp),%edx +c0104a90: 3b 45 98 cmp -0x68(%ebp),%eax +c0104a93: 89 d0 mov %edx,%eax +c0104a95: 1b 45 9c sbb -0x64(%ebp),%eax +c0104a98: 73 1e jae c0104ab8 +c0104a9a: ba ff ff ff 37 mov $0x37ffffff,%edx +c0104a9f: b8 00 00 00 00 mov $0x0,%eax +c0104aa4: 3b 55 a0 cmp -0x60(%ebp),%edx +c0104aa7: 1b 45 a4 sbb -0x5c(%ebp),%eax +c0104aaa: 72 0c jb c0104ab8 + maxpa = end;// 更新最大物理地址 +c0104aac: 8b 45 98 mov -0x68(%ebp),%eax +c0104aaf: 8b 55 9c mov -0x64(%ebp),%edx +c0104ab2: 89 45 e0 mov %eax,-0x20(%ebp) +c0104ab5: 89 55 e4 mov %edx,-0x1c(%ebp) + for (i = 0; i < memmap->nr_map; i ++) {// 遍历内存映射数组 +c0104ab8: ff 45 dc incl -0x24(%ebp) +c0104abb: 8b 45 c4 mov -0x3c(%ebp),%eax +c0104abe: 8b 00 mov (%eax),%eax +c0104ac0: 39 45 dc cmp %eax,-0x24(%ebp) +c0104ac3: 0f 8c e6 fe ff ff jl c01049af + } + } + } + if (maxpa > KMEMSIZE) {// 如果最大物理地址超过了预定义的内存上限 +c0104ac9: ba 00 00 00 38 mov $0x38000000,%edx +c0104ace: b8 00 00 00 00 mov $0x0,%eax +c0104ad3: 3b 55 e0 cmp -0x20(%ebp),%edx +c0104ad6: 1b 45 e4 sbb -0x1c(%ebp),%eax +c0104ad9: 73 0e jae c0104ae9 + maxpa = KMEMSIZE;// 将其限制为内存上限 +c0104adb: c7 45 e0 00 00 00 38 movl $0x38000000,-0x20(%ebp) +c0104ae2: c7 45 e4 00 00 00 00 movl $0x0,-0x1c(%ebp) + } + + extern char end[];// 引入全局变量 end,指向内存的结束位置 + + npage = maxpa / PGSIZE;// 计算可用页数 +c0104ae9: 8b 45 e0 mov -0x20(%ebp),%eax +c0104aec: 8b 55 e4 mov -0x1c(%ebp),%edx +c0104aef: 0f ac d0 0c shrd $0xc,%edx,%eax +c0104af3: c1 ea 0c shr $0xc,%edx +c0104af6: a3 04 60 12 c0 mov %eax,0xc0126004 + pages = (struct Page *)ROUNDUP((void *)end, PGSIZE);// 将 end 对齐到页边界,指向页结构数组的开头 +c0104afb: c7 45 c0 00 10 00 00 movl $0x1000,-0x40(%ebp) +c0104b02: b8 74 61 12 c0 mov $0xc0126174,%eax +c0104b07: 8d 50 ff lea -0x1(%eax),%edx +c0104b0a: 8b 45 c0 mov -0x40(%ebp),%eax +c0104b0d: 01 d0 add %edx,%eax +c0104b0f: 89 45 bc mov %eax,-0x44(%ebp) +c0104b12: 8b 45 bc mov -0x44(%ebp),%eax +c0104b15: ba 00 00 00 00 mov $0x0,%edx +c0104b1a: f7 75 c0 divl -0x40(%ebp) +c0104b1d: 8b 45 bc mov -0x44(%ebp),%eax +c0104b20: 29 d0 sub %edx,%eax +c0104b22: a3 00 60 12 c0 mov %eax,0xc0126000 + + for (i = 0; i < npage; i ++) {// 遍历每一页 +c0104b27: c7 45 dc 00 00 00 00 movl $0x0,-0x24(%ebp) +c0104b2e: eb 28 jmp c0104b58 + SetPageReserved(pages + i);// 将每一页标记为保留状态 +c0104b30: 8b 15 00 60 12 c0 mov 0xc0126000,%edx +c0104b36: 8b 45 dc mov -0x24(%ebp),%eax +c0104b39: c1 e0 05 shl $0x5,%eax +c0104b3c: 01 d0 add %edx,%eax +c0104b3e: 83 c0 04 add $0x4,%eax +c0104b41: c7 45 94 00 00 00 00 movl $0x0,-0x6c(%ebp) +c0104b48: 89 45 90 mov %eax,-0x70(%ebp) + asm volatile ("btsl %1, %0" :"=m" (*(volatile long *)addr) : "Ir" (nr)); +c0104b4b: 8b 45 90 mov -0x70(%ebp),%eax +c0104b4e: 8b 55 94 mov -0x6c(%ebp),%edx +c0104b51: 0f ab 10 bts %edx,(%eax) +} +c0104b54: 90 nop + for (i = 0; i < npage; i ++) {// 遍历每一页 +c0104b55: ff 45 dc incl -0x24(%ebp) +c0104b58: 8b 55 dc mov -0x24(%ebp),%edx +c0104b5b: a1 04 60 12 c0 mov 0xc0126004,%eax +c0104b60: 39 c2 cmp %eax,%edx +c0104b62: 72 cc jb c0104b30 + } + + uintptr_t freemem = PADDR((uintptr_t)pages + sizeof(struct Page) * npage);// 计算可用内存的起始地址 +c0104b64: a1 04 60 12 c0 mov 0xc0126004,%eax +c0104b69: c1 e0 05 shl $0x5,%eax +c0104b6c: 89 c2 mov %eax,%edx +c0104b6e: a1 00 60 12 c0 mov 0xc0126000,%eax +c0104b73: 01 d0 add %edx,%eax +c0104b75: 89 45 b8 mov %eax,-0x48(%ebp) +c0104b78: 81 7d b8 ff ff ff bf cmpl $0xbfffffff,-0x48(%ebp) +c0104b7f: 77 23 ja c0104ba4 +c0104b81: 8b 45 b8 mov -0x48(%ebp),%eax +c0104b84: 89 44 24 0c mov %eax,0xc(%esp) +c0104b88: c7 44 24 08 50 9a 10 movl $0xc0109a50,0x8(%esp) +c0104b8f: c0 +c0104b90: c7 44 24 04 18 01 00 movl $0x118,0x4(%esp) +c0104b97: 00 +c0104b98: c7 04 24 f4 9a 10 c0 movl $0xc0109af4,(%esp) +c0104b9f: e8 9e c0 ff ff call c0100c42 <__panic> +c0104ba4: 8b 45 b8 mov -0x48(%ebp),%eax +c0104ba7: 05 00 00 00 40 add $0x40000000,%eax +c0104bac: 89 45 b4 mov %eax,-0x4c(%ebp) + + for (i = 0; i < memmap->nr_map; i ++) {// 再次遍历内存映射 +c0104baf: c7 45 dc 00 00 00 00 movl $0x0,-0x24(%ebp) +c0104bb6: e9 53 01 00 00 jmp c0104d0e + uint64_t begin = memmap->map[i].addr, end = begin + memmap->map[i].size;// 获取每个区域的起始和结束地址 +c0104bbb: 8b 4d c4 mov -0x3c(%ebp),%ecx +c0104bbe: 8b 55 dc mov -0x24(%ebp),%edx +c0104bc1: 89 d0 mov %edx,%eax +c0104bc3: c1 e0 02 shl $0x2,%eax +c0104bc6: 01 d0 add %edx,%eax +c0104bc8: c1 e0 02 shl $0x2,%eax +c0104bcb: 01 c8 add %ecx,%eax +c0104bcd: 8b 50 08 mov 0x8(%eax),%edx +c0104bd0: 8b 40 04 mov 0x4(%eax),%eax +c0104bd3: 89 45 d0 mov %eax,-0x30(%ebp) +c0104bd6: 89 55 d4 mov %edx,-0x2c(%ebp) +c0104bd9: 8b 4d c4 mov -0x3c(%ebp),%ecx +c0104bdc: 8b 55 dc mov -0x24(%ebp),%edx +c0104bdf: 89 d0 mov %edx,%eax +c0104be1: c1 e0 02 shl $0x2,%eax +c0104be4: 01 d0 add %edx,%eax +c0104be6: c1 e0 02 shl $0x2,%eax +c0104be9: 01 c8 add %ecx,%eax +c0104beb: 8b 48 0c mov 0xc(%eax),%ecx +c0104bee: 8b 58 10 mov 0x10(%eax),%ebx +c0104bf1: 8b 45 d0 mov -0x30(%ebp),%eax +c0104bf4: 8b 55 d4 mov -0x2c(%ebp),%edx +c0104bf7: 01 c8 add %ecx,%eax +c0104bf9: 11 da adc %ebx,%edx +c0104bfb: 89 45 c8 mov %eax,-0x38(%ebp) +c0104bfe: 89 55 cc mov %edx,-0x34(%ebp) + if (memmap->map[i].type == E820_ARM) {// 如果区域类型为可用内存 +c0104c01: 8b 4d c4 mov -0x3c(%ebp),%ecx +c0104c04: 8b 55 dc mov -0x24(%ebp),%edx +c0104c07: 89 d0 mov %edx,%eax +c0104c09: c1 e0 02 shl $0x2,%eax +c0104c0c: 01 d0 add %edx,%eax +c0104c0e: c1 e0 02 shl $0x2,%eax +c0104c11: 01 c8 add %ecx,%eax +c0104c13: 83 c0 14 add $0x14,%eax +c0104c16: 8b 00 mov (%eax),%eax +c0104c18: 83 f8 01 cmp $0x1,%eax +c0104c1b: 0f 85 ea 00 00 00 jne c0104d0b + if (begin < freemem) {// 如果起始地址小于可用内存地址 +c0104c21: 8b 45 b4 mov -0x4c(%ebp),%eax +c0104c24: ba 00 00 00 00 mov $0x0,%edx +c0104c29: 8b 4d d4 mov -0x2c(%ebp),%ecx +c0104c2c: 39 45 d0 cmp %eax,-0x30(%ebp) +c0104c2f: 19 d1 sbb %edx,%ecx +c0104c31: 73 0d jae c0104c40 + begin = freemem;//将起始地址设置为可用内存地址 +c0104c33: 8b 45 b4 mov -0x4c(%ebp),%eax +c0104c36: 89 45 d0 mov %eax,-0x30(%ebp) +c0104c39: c7 45 d4 00 00 00 00 movl $0x0,-0x2c(%ebp) + } + if (end > KMEMSIZE) {// 如果结束地址超过内存上限 +c0104c40: ba 00 00 00 38 mov $0x38000000,%edx +c0104c45: b8 00 00 00 00 mov $0x0,%eax +c0104c4a: 3b 55 c8 cmp -0x38(%ebp),%edx +c0104c4d: 1b 45 cc sbb -0x34(%ebp),%eax +c0104c50: 73 0e jae c0104c60 + end = KMEMSIZE;// 将其限制为内存上限 +c0104c52: c7 45 c8 00 00 00 38 movl $0x38000000,-0x38(%ebp) +c0104c59: c7 45 cc 00 00 00 00 movl $0x0,-0x34(%ebp) + } + if (begin < end) {// 如果起始地址小于结束地址 +c0104c60: 8b 45 d0 mov -0x30(%ebp),%eax +c0104c63: 8b 55 d4 mov -0x2c(%ebp),%edx +c0104c66: 3b 45 c8 cmp -0x38(%ebp),%eax +c0104c69: 89 d0 mov %edx,%eax +c0104c6b: 1b 45 cc sbb -0x34(%ebp),%eax +c0104c6e: 0f 83 97 00 00 00 jae c0104d0b + begin = ROUNDUP(begin, PGSIZE);// 将起始地址对齐到页边界 +c0104c74: c7 45 b0 00 10 00 00 movl $0x1000,-0x50(%ebp) +c0104c7b: 8b 55 d0 mov -0x30(%ebp),%edx +c0104c7e: 8b 45 b0 mov -0x50(%ebp),%eax +c0104c81: 01 d0 add %edx,%eax +c0104c83: 48 dec %eax +c0104c84: 89 45 ac mov %eax,-0x54(%ebp) +c0104c87: 8b 45 ac mov -0x54(%ebp),%eax +c0104c8a: ba 00 00 00 00 mov $0x0,%edx +c0104c8f: f7 75 b0 divl -0x50(%ebp) +c0104c92: 8b 45 ac mov -0x54(%ebp),%eax +c0104c95: 29 d0 sub %edx,%eax +c0104c97: ba 00 00 00 00 mov $0x0,%edx +c0104c9c: 89 45 d0 mov %eax,-0x30(%ebp) +c0104c9f: 89 55 d4 mov %edx,-0x2c(%ebp) + end = ROUNDDOWN(end, PGSIZE);// 将结束地址对齐到页边界 +c0104ca2: 8b 45 c8 mov -0x38(%ebp),%eax +c0104ca5: 89 45 a8 mov %eax,-0x58(%ebp) +c0104ca8: 8b 45 a8 mov -0x58(%ebp),%eax +c0104cab: ba 00 00 00 00 mov $0x0,%edx +c0104cb0: 89 c7 mov %eax,%edi +c0104cb2: 81 e7 00 f0 ff ff and $0xfffff000,%edi +c0104cb8: 89 7d 80 mov %edi,-0x80(%ebp) +c0104cbb: 89 d0 mov %edx,%eax +c0104cbd: 83 e0 00 and $0x0,%eax +c0104cc0: 89 45 84 mov %eax,-0x7c(%ebp) +c0104cc3: 8b 45 80 mov -0x80(%ebp),%eax +c0104cc6: 8b 55 84 mov -0x7c(%ebp),%edx +c0104cc9: 89 45 c8 mov %eax,-0x38(%ebp) +c0104ccc: 89 55 cc mov %edx,-0x34(%ebp) + if (begin < end) {// 如果调整后的起始地址仍小于结束地址 +c0104ccf: 8b 45 d0 mov -0x30(%ebp),%eax +c0104cd2: 8b 55 d4 mov -0x2c(%ebp),%edx +c0104cd5: 3b 45 c8 cmp -0x38(%ebp),%eax +c0104cd8: 89 d0 mov %edx,%eax +c0104cda: 1b 45 cc sbb -0x34(%ebp),%eax +c0104cdd: 73 2c jae c0104d0b + init_memmap(pa2page(begin), (end - begin) / PGSIZE);// 初始化内存页映射 +c0104cdf: 8b 45 c8 mov -0x38(%ebp),%eax +c0104ce2: 8b 55 cc mov -0x34(%ebp),%edx +c0104ce5: 2b 45 d0 sub -0x30(%ebp),%eax +c0104ce8: 1b 55 d4 sbb -0x2c(%ebp),%edx +c0104ceb: 0f ac d0 0c shrd $0xc,%edx,%eax +c0104cef: c1 ea 0c shr $0xc,%edx +c0104cf2: 89 c3 mov %eax,%ebx +c0104cf4: 8b 45 d0 mov -0x30(%ebp),%eax +c0104cf7: 89 04 24 mov %eax,(%esp) +c0104cfa: e8 54 f8 ff ff call c0104553 +c0104cff: 89 5c 24 04 mov %ebx,0x4(%esp) +c0104d03: 89 04 24 mov %eax,(%esp) +c0104d06: e8 7a fb ff ff call c0104885 + for (i = 0; i < memmap->nr_map; i ++) {// 再次遍历内存映射 +c0104d0b: ff 45 dc incl -0x24(%ebp) +c0104d0e: 8b 45 c4 mov -0x3c(%ebp),%eax +c0104d11: 8b 00 mov (%eax),%eax +c0104d13: 39 45 dc cmp %eax,-0x24(%ebp) +c0104d16: 0f 8c 9f fe ff ff jl c0104bbb + } + } + } + } +} +c0104d1c: 90 nop +c0104d1d: 90 nop +c0104d1e: 81 c4 9c 00 00 00 add $0x9c,%esp +c0104d24: 5b pop %ebx +c0104d25: 5e pop %esi +c0104d26: 5f pop %edi +c0104d27: 5d pop %ebp +c0104d28: c3 ret + +c0104d29 : +//la: 需要映射的线性地址(经过 x86 段映射后的地址) +// size: memory size size: 内存大小 +// pa: physical address of this memory pa:该内存的物理地址 +// perm: permission of this memory perm: 该内存的权限 +static void +boot_map_segment(pde_t *pgdir, uintptr_t la, size_t size, uintptr_t pa, uint32_t perm) { +c0104d29: 55 push %ebp +c0104d2a: 89 e5 mov %esp,%ebp +c0104d2c: 83 ec 38 sub $0x38,%esp + // 确保线性地址和物理地址的页偏移相同 + assert(PGOFF(la) == PGOFF(pa)); +c0104d2f: 8b 45 0c mov 0xc(%ebp),%eax +c0104d32: 33 45 14 xor 0x14(%ebp),%eax +c0104d35: 25 ff 0f 00 00 and $0xfff,%eax +c0104d3a: 85 c0 test %eax,%eax +c0104d3c: 74 24 je c0104d62 +c0104d3e: c7 44 24 0c 02 9b 10 movl $0xc0109b02,0xc(%esp) +c0104d45: c0 +c0104d46: c7 44 24 08 19 9b 10 movl $0xc0109b19,0x8(%esp) +c0104d4d: c0 +c0104d4e: c7 44 24 04 39 01 00 movl $0x139,0x4(%esp) +c0104d55: 00 +c0104d56: c7 04 24 f4 9a 10 c0 movl $0xc0109af4,(%esp) +c0104d5d: e8 e0 be ff ff call c0100c42 <__panic> + // 计算需要映射的页数,ROUNDUP 将总大小对齐到下一个页大小的边界 + size_t n = ROUNDUP(size + PGOFF(la), PGSIZE) / PGSIZE; +c0104d62: c7 45 f0 00 10 00 00 movl $0x1000,-0x10(%ebp) +c0104d69: 8b 45 0c mov 0xc(%ebp),%eax +c0104d6c: 25 ff 0f 00 00 and $0xfff,%eax +c0104d71: 89 c2 mov %eax,%edx +c0104d73: 8b 45 10 mov 0x10(%ebp),%eax +c0104d76: 01 c2 add %eax,%edx +c0104d78: 8b 45 f0 mov -0x10(%ebp),%eax +c0104d7b: 01 d0 add %edx,%eax +c0104d7d: 48 dec %eax +c0104d7e: 89 45 ec mov %eax,-0x14(%ebp) +c0104d81: 8b 45 ec mov -0x14(%ebp),%eax +c0104d84: ba 00 00 00 00 mov $0x0,%edx +c0104d89: f7 75 f0 divl -0x10(%ebp) +c0104d8c: 8b 45 ec mov -0x14(%ebp),%eax +c0104d8f: 29 d0 sub %edx,%eax +c0104d91: c1 e8 0c shr $0xc,%eax +c0104d94: 89 45 f4 mov %eax,-0xc(%ebp) + // 将线性地址向下对齐到页边界 + la = ROUNDDOWN(la, PGSIZE); +c0104d97: 8b 45 0c mov 0xc(%ebp),%eax +c0104d9a: 89 45 e8 mov %eax,-0x18(%ebp) +c0104d9d: 8b 45 e8 mov -0x18(%ebp),%eax +c0104da0: 25 00 f0 ff ff and $0xfffff000,%eax +c0104da5: 89 45 0c mov %eax,0xc(%ebp) + // 将物理地址向下对齐到页边界 + pa = ROUNDDOWN(pa, PGSIZE); +c0104da8: 8b 45 14 mov 0x14(%ebp),%eax +c0104dab: 89 45 e4 mov %eax,-0x1c(%ebp) +c0104dae: 8b 45 e4 mov -0x1c(%ebp),%eax +c0104db1: 25 00 f0 ff ff and $0xfffff000,%eax +c0104db6: 89 45 14 mov %eax,0x14(%ebp) + // 循环遍历每一页,直到映射的页数为零 + for (; n > 0; n --, la += PGSIZE, pa += PGSIZE) { +c0104db9: eb 68 jmp c0104e23 + // 获取当前页的页表项指针,如果不存在则创建新的页表项 + pte_t *ptep = get_pte(pgdir, la, 1); +c0104dbb: c7 44 24 08 01 00 00 movl $0x1,0x8(%esp) +c0104dc2: 00 +c0104dc3: 8b 45 0c mov 0xc(%ebp),%eax +c0104dc6: 89 44 24 04 mov %eax,0x4(%esp) +c0104dca: 8b 45 08 mov 0x8(%ebp),%eax +c0104dcd: 89 04 24 mov %eax,(%esp) +c0104dd0: e8 88 01 00 00 call c0104f5d +c0104dd5: 89 45 e0 mov %eax,-0x20(%ebp) + // 确保页表项指针不为空 + assert(ptep != NULL); +c0104dd8: 83 7d e0 00 cmpl $0x0,-0x20(%ebp) +c0104ddc: 75 24 jne c0104e02 +c0104dde: c7 44 24 0c 2e 9b 10 movl $0xc0109b2e,0xc(%esp) +c0104de5: c0 +c0104de6: c7 44 24 08 19 9b 10 movl $0xc0109b19,0x8(%esp) +c0104ded: c0 +c0104dee: c7 44 24 04 45 01 00 movl $0x145,0x4(%esp) +c0104df5: 00 +c0104df6: c7 04 24 f4 9a 10 c0 movl $0xc0109af4,(%esp) +c0104dfd: e8 40 be ff ff call c0100c42 <__panic> + // 设置页表项,包含物理地址、存在位和权限 + *ptep = pa | PTE_P | perm; +c0104e02: 8b 45 14 mov 0x14(%ebp),%eax +c0104e05: 0b 45 18 or 0x18(%ebp),%eax +c0104e08: 83 c8 01 or $0x1,%eax +c0104e0b: 89 c2 mov %eax,%edx +c0104e0d: 8b 45 e0 mov -0x20(%ebp),%eax +c0104e10: 89 10 mov %edx,(%eax) + for (; n > 0; n --, la += PGSIZE, pa += PGSIZE) { +c0104e12: ff 4d f4 decl -0xc(%ebp) +c0104e15: 81 45 0c 00 10 00 00 addl $0x1000,0xc(%ebp) +c0104e1c: 81 45 14 00 10 00 00 addl $0x1000,0x14(%ebp) +c0104e23: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) +c0104e27: 75 92 jne c0104dbb + } +} +c0104e29: 90 nop +c0104e2a: 90 nop +c0104e2b: 89 ec mov %ebp,%esp +c0104e2d: 5d pop %ebp +c0104e2e: c3 ret + +c0104e2f : +// return value: the kernel virtual address of this allocated page +//note: this function is used to get the memory for PDT(Page Directory Table)&PT(Page Table) +//boot_alloc_page - 使用 pmm->alloc_pages(1) 分配一页内存.返回值: 分配的页面的内核虚拟地址 +//注意: 此函数用于获取页目录表(PDT)和页表(PT)的内存 +static void * +boot_alloc_page(void) { +c0104e2f: 55 push %ebp +c0104e30: 89 e5 mov %esp,%ebp +c0104e32: 83 ec 28 sub $0x28,%esp + struct Page *p = alloc_page();// 调用分配页面的函数 +c0104e35: c7 04 24 01 00 00 00 movl $0x1,(%esp) +c0104e3c: e8 66 fa ff ff call c01048a7 +c0104e41: 89 45 f4 mov %eax,-0xc(%ebp) + if (p == NULL) {// 检查分配是否成功 +c0104e44: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) +c0104e48: 75 1c jne c0104e66 + panic("boot_alloc_page failed.\n");// 如果分配失败,则触发异常 +c0104e4a: c7 44 24 08 3b 9b 10 movl $0xc0109b3b,0x8(%esp) +c0104e51: c0 +c0104e52: c7 44 24 04 54 01 00 movl $0x154,0x4(%esp) +c0104e59: 00 +c0104e5a: c7 04 24 f4 9a 10 c0 movl $0xc0109af4,(%esp) +c0104e61: e8 dc bd ff ff call c0100c42 <__panic> + } + return page2kva(p);// 返回分配页面的内核虚拟地址 +c0104e66: 8b 45 f4 mov -0xc(%ebp),%eax +c0104e69: 89 04 24 mov %eax,(%esp) +c0104e6c: e8 2a f7 ff ff call c010459b +} +c0104e71: 89 ec mov %ebp,%esp +c0104e73: 5d pop %ebp +c0104e74: c3 ret + +c0104e75 : +//pmm_init - setup a pmm to manage physical memory, build PDT&PT to setup paging mechanism +// - check the correctness of pmm & paging mechanism, print PDT&PT +//pmm_init - 设置物理内存管理器,构建页目录表(PDT)和页表(PT),以设置分页机制 +// - 检查物理内存管理器和分页机制的正确性,打印页目录表和页表 +void +pmm_init(void) { +c0104e75: 55 push %ebp +c0104e76: 89 e5 mov %esp,%ebp +c0104e78: 83 ec 38 sub $0x38,%esp + // We've already enabled paging + // 我们已经启用了分页 + boot_cr3 = PADDR(boot_pgdir); +c0104e7b: a1 e0 29 12 c0 mov 0xc01229e0,%eax +c0104e80: 89 45 f4 mov %eax,-0xc(%ebp) +c0104e83: 81 7d f4 ff ff ff bf cmpl $0xbfffffff,-0xc(%ebp) +c0104e8a: 77 23 ja c0104eaf +c0104e8c: 8b 45 f4 mov -0xc(%ebp),%eax +c0104e8f: 89 44 24 0c mov %eax,0xc(%esp) +c0104e93: c7 44 24 08 50 9a 10 movl $0xc0109a50,0x8(%esp) +c0104e9a: c0 +c0104e9b: c7 44 24 04 61 01 00 movl $0x161,0x4(%esp) +c0104ea2: 00 +c0104ea3: c7 04 24 f4 9a 10 c0 movl $0xc0109af4,(%esp) +c0104eaa: e8 93 bd ff ff call c0100c42 <__panic> +c0104eaf: 8b 45 f4 mov -0xc(%ebp),%eax +c0104eb2: 05 00 00 00 40 add $0x40000000,%eax +c0104eb7: a3 08 60 12 c0 mov %eax,0xc0126008 + // 我们需要分配/释放物理内存(粒度为 4KB 或其他大小)。 + // 因此在 pmm.h 中定义了物理内存管理器的框架(struct pmm_manager)。 + // 首先,我们应该基于该框架初始化一个物理内存管理器(pmm)。 + // 然后 pmm 可以分配/释放物理内存。 + // 现在,first_fit/best_fit/worst_fit/buddy_system 的 pmm 都可用。 + init_pmm_manager();// 初始化物理内存管理器 +c0104ebc: e8 8e f9 ff ff call c010484f + + // detect physical memory space, reserve already used memory, + // then use pmm->init_memmap to create free page list + // 检测物理内存空间,保留已经使用的内存, + // 然后使用 pmm->init_memmap 创建空闲页面列表 + page_init();// 初始化页面管理 +c0104ec1: e8 b0 fa ff ff call c0104976 + + //use pmm->check to verify the correctness of the alloc/free function in a pmm + // 使用 pmm->check 验证 pmm 中分配/释放函数的正确性 + check_alloc_page();// 检查页面分配功能 +c0104ec6: e8 ba 04 00 00 call c0105385 + + check_pgdir();// 检查页目录的状态 +c0104ecb: e8 d6 04 00 00 call c01053a6 + + // recursively insert boot_pgdir in itself + // to form a virtual page table at virtual address VPT + // 递归地将 boot_pgdir 插入到自身中 + // 在虚拟地址 VPT 处形成虚拟页表 + boot_pgdir[PDX(VPT)] = PADDR(boot_pgdir) | PTE_P | PTE_W;// 设置页目录项,映射自身 +c0104ed0: a1 e0 29 12 c0 mov 0xc01229e0,%eax +c0104ed5: 89 45 f0 mov %eax,-0x10(%ebp) +c0104ed8: 81 7d f0 ff ff ff bf cmpl $0xbfffffff,-0x10(%ebp) +c0104edf: 77 23 ja c0104f04 +c0104ee1: 8b 45 f0 mov -0x10(%ebp),%eax +c0104ee4: 89 44 24 0c mov %eax,0xc(%esp) +c0104ee8: c7 44 24 08 50 9a 10 movl $0xc0109a50,0x8(%esp) +c0104eef: c0 +c0104ef0: c7 44 24 04 81 01 00 movl $0x181,0x4(%esp) +c0104ef7: 00 +c0104ef8: c7 04 24 f4 9a 10 c0 movl $0xc0109af4,(%esp) +c0104eff: e8 3e bd ff ff call c0100c42 <__panic> +c0104f04: 8b 45 f0 mov -0x10(%ebp),%eax +c0104f07: 8d 90 00 00 00 40 lea 0x40000000(%eax),%edx +c0104f0d: a1 e0 29 12 c0 mov 0xc01229e0,%eax +c0104f12: 05 ac 0f 00 00 add $0xfac,%eax +c0104f17: 83 ca 03 or $0x3,%edx +c0104f1a: 89 10 mov %edx,(%eax) + + // map all physical memory to linear memory with base linear addr KERNBASE + // linear_addr KERNBASE ~ KERNBASE + KMEMSIZE = phy_addr 0 ~ KMEMSIZE + // 将所有物理内存映射到线性内存,基地址为 KERNBASE + // 线性地址 KERNBASE ~ KERNBASE + KMEMSIZE = 物理地址 0 ~ KMEMSIZE + boot_map_segment(boot_pgdir, KERNBASE, KMEMSIZE, 0, PTE_W);// 映射物理内存 +c0104f1c: a1 e0 29 12 c0 mov 0xc01229e0,%eax +c0104f21: c7 44 24 10 02 00 00 movl $0x2,0x10(%esp) +c0104f28: 00 +c0104f29: c7 44 24 0c 00 00 00 movl $0x0,0xc(%esp) +c0104f30: 00 +c0104f31: c7 44 24 08 00 00 00 movl $0x38000000,0x8(%esp) +c0104f38: 38 +c0104f39: c7 44 24 04 00 00 00 movl $0xc0000000,0x4(%esp) +c0104f40: c0 +c0104f41: 89 04 24 mov %eax,(%esp) +c0104f44: e8 e0 fd ff ff call c0104d29 + // then set kernel stack (ss:esp) in TSS, setup TSS in gdt, load TSS + // 由于我们正在使用引导加载程序的 GDT, + // 我们应该重新加载 GDT(第二次,也是最后一次),以获取用户段和 TSS + // 映射虚拟地址 0 ~ 4G = 线性地址 0 ~ 4G + // 然后在 TSS 中设置内核栈 (ss:esp),在 gdt 中设置 TSS,加载 TSS + gdt_init();// 初始化全局描述符表 +c0104f49: e8 15 f8 ff ff call c0104763 + + //now the basic virtual memory map(see memalyout.h) is established. + //check the correctness of the basic virtual memory map. + // 现在基本的虚拟内存映射(见 memlayout.h)已建立。 + // 检查基础虚拟内存映射的正确性。 + check_boot_pgdir(); // 检查页目录的正确性 +c0104f4e: e8 f1 0a 00 00 call c0105a44 + + print_pgdir(); // 打印页目录表 +c0104f53: e8 6e 0f 00 00 call c0105ec6 + +} +c0104f58: 90 nop +c0104f59: 89 ec mov %ebp,%esp +c0104f5b: 5d pop %ebp +c0104f5c: c3 ret + +c0104f5d : +// pgdir: 页目录的内核虚拟基地址 +// la: 需要映射的线性地址 +// create: 一个逻辑值,决定是否为页表分配一页 +// 返回值:该 PTE 的内核虚拟地址 +pte_t * +get_pte(pde_t *pgdir, uintptr_t la, bool create) { +c0104f5d: 55 push %ebp +c0104f5e: 89 e5 mov %esp,%ebp +c0104f60: 83 ec 38 sub $0x38,%esp + // (7) set page directory entry's permission + } + return NULL; // (8) return page table entry +#endif + // (1) 找到页目录项 + pde_t *pdep = &pgdir[PDX(la)];// 使用 PDX 宏获取页目录索引 +c0104f63: 8b 45 0c mov 0xc(%ebp),%eax +c0104f66: c1 e8 16 shr $0x16,%eax +c0104f69: 8d 14 85 00 00 00 00 lea 0x0(,%eax,4),%edx +c0104f70: 8b 45 08 mov 0x8(%ebp),%eax +c0104f73: 01 d0 add %edx,%eax +c0104f75: 89 45 f4 mov %eax,-0xc(%ebp) + // (2) 检查页目录项是否存在 + if (!(*pdep & PTE_P)) {// 如果页目录项的存在位 PTE_P 没有被设置 +c0104f78: 8b 45 f4 mov -0xc(%ebp),%eax +c0104f7b: 8b 00 mov (%eax),%eax +c0104f7d: 83 e0 01 and $0x1,%eax +c0104f80: 85 c0 test %eax,%eax +c0104f82: 0f 85 af 00 00 00 jne c0105037 + struct Page *page;// 声明一个指针,用于指向新分配的页面 + // 检查是否允许创建新页表,或者分配页表失败 + if (!create || (page = alloc_page()) == NULL) {// 如果不允许创建或分配失败 +c0104f88: 83 7d 10 00 cmpl $0x0,0x10(%ebp) +c0104f8c: 74 15 je c0104fa3 +c0104f8e: c7 04 24 01 00 00 00 movl $0x1,(%esp) +c0104f95: e8 0d f9 ff ff call c01048a7 +c0104f9a: 89 45 f0 mov %eax,-0x10(%ebp) +c0104f9d: 83 7d f0 00 cmpl $0x0,-0x10(%ebp) +c0104fa1: 75 0a jne c0104fad + return NULL;// 返回 NULL,表示无法获取页表 +c0104fa3: b8 00 00 00 00 mov $0x0,%eax +c0104fa8: e9 e7 00 00 00 jmp c0105094 + } + // 设置新分配页面的引用计数为 1 + set_page_ref(page, 1); +c0104fad: c7 44 24 04 01 00 00 movl $0x1,0x4(%esp) +c0104fb4: 00 +c0104fb5: 8b 45 f0 mov -0x10(%ebp),%eax +c0104fb8: 89 04 24 mov %eax,(%esp) +c0104fbb: e8 e1 f6 ff ff call c01046a1 + uintptr_t pa = page2pa(page);// 获取新分配页面的物理地址 +c0104fc0: 8b 45 f0 mov -0x10(%ebp),%eax +c0104fc3: 89 04 24 mov %eax,(%esp) +c0104fc6: e8 70 f5 ff ff call c010453b +c0104fcb: 89 45 ec mov %eax,-0x14(%ebp) + memset(KADDR(pa), 0, PGSIZE);// 清空新分配的页表内容,初始化为零 +c0104fce: 8b 45 ec mov -0x14(%ebp),%eax +c0104fd1: 89 45 e8 mov %eax,-0x18(%ebp) +c0104fd4: 8b 45 e8 mov -0x18(%ebp),%eax +c0104fd7: c1 e8 0c shr $0xc,%eax +c0104fda: 89 45 e4 mov %eax,-0x1c(%ebp) +c0104fdd: a1 04 60 12 c0 mov 0xc0126004,%eax +c0104fe2: 39 45 e4 cmp %eax,-0x1c(%ebp) +c0104fe5: 72 23 jb c010500a +c0104fe7: 8b 45 e8 mov -0x18(%ebp),%eax +c0104fea: 89 44 24 0c mov %eax,0xc(%esp) +c0104fee: c7 44 24 08 2c 9a 10 movl $0xc0109a2c,0x8(%esp) +c0104ff5: c0 +c0104ff6: c7 44 24 04 da 01 00 movl $0x1da,0x4(%esp) +c0104ffd: 00 +c0104ffe: c7 04 24 f4 9a 10 c0 movl $0xc0109af4,(%esp) +c0105005: e8 38 bc ff ff call c0100c42 <__panic> +c010500a: 8b 45 e8 mov -0x18(%ebp),%eax +c010500d: 2d 00 00 00 40 sub $0x40000000,%eax +c0105012: c7 44 24 08 00 10 00 movl $0x1000,0x8(%esp) +c0105019: 00 +c010501a: c7 44 24 04 00 00 00 movl $0x0,0x4(%esp) +c0105021: 00 +c0105022: 89 04 24 mov %eax,(%esp) +c0105025: e8 a4 3b 00 00 call c0108bce + // 更新页目录项,设置物理地址和权限位 + *pdep = pa | PTE_U | PTE_W | PTE_P;// 将物理地址和权限位(用户可访问、可写、有效)合并设置 +c010502a: 8b 45 ec mov -0x14(%ebp),%eax +c010502d: 83 c8 07 or $0x7,%eax +c0105030: 89 c2 mov %eax,%edx +c0105032: 8b 45 f4 mov -0xc(%ebp),%eax +c0105035: 89 10 mov %edx,(%eax) + } + // 返回指定线性地址 la 对应的页表项的内核虚拟地址 + return &((pte_t *)KADDR(PDE_ADDR(*pdep)))[PTX(la)];// 计算并返回页表项的指针 +c0105037: 8b 45 f4 mov -0xc(%ebp),%eax +c010503a: 8b 00 mov (%eax),%eax +c010503c: 25 00 f0 ff ff and $0xfffff000,%eax +c0105041: 89 45 e0 mov %eax,-0x20(%ebp) +c0105044: 8b 45 e0 mov -0x20(%ebp),%eax +c0105047: c1 e8 0c shr $0xc,%eax +c010504a: 89 45 dc mov %eax,-0x24(%ebp) +c010504d: a1 04 60 12 c0 mov 0xc0126004,%eax +c0105052: 39 45 dc cmp %eax,-0x24(%ebp) +c0105055: 72 23 jb c010507a +c0105057: 8b 45 e0 mov -0x20(%ebp),%eax +c010505a: 89 44 24 0c mov %eax,0xc(%esp) +c010505e: c7 44 24 08 2c 9a 10 movl $0xc0109a2c,0x8(%esp) +c0105065: c0 +c0105066: c7 44 24 04 df 01 00 movl $0x1df,0x4(%esp) +c010506d: 00 +c010506e: c7 04 24 f4 9a 10 c0 movl $0xc0109af4,(%esp) +c0105075: e8 c8 bb ff ff call c0100c42 <__panic> +c010507a: 8b 45 e0 mov -0x20(%ebp),%eax +c010507d: 2d 00 00 00 40 sub $0x40000000,%eax +c0105082: 89 c2 mov %eax,%edx +c0105084: 8b 45 0c mov 0xc(%ebp),%eax +c0105087: c1 e8 0c shr $0xc,%eax +c010508a: 25 ff 03 00 00 and $0x3ff,%eax +c010508f: c1 e0 02 shl $0x2,%eax +c0105092: 01 d0 add %edx,%eax +} +c0105094: 89 ec mov %ebp,%esp +c0105096: 5d pop %ebp +c0105097: c3 ret + +c0105098 : + +//get_page - get related Page struct for linear address la using PDT pgdir +// get_page - 获取与线性地址 la 相关的 Page 结构体,使用页目录 pgdir +struct Page * +get_page(pde_t *pgdir, uintptr_t la, pte_t **ptep_store) { +c0105098: 55 push %ebp +c0105099: 89 e5 mov %esp,%ebp +c010509b: 83 ec 28 sub $0x28,%esp + // 调用 get_pte 函数获取对应线性地址 la 的页表项指针 + pte_t *ptep = get_pte(pgdir, la, 0); +c010509e: c7 44 24 08 00 00 00 movl $0x0,0x8(%esp) +c01050a5: 00 +c01050a6: 8b 45 0c mov 0xc(%ebp),%eax +c01050a9: 89 44 24 04 mov %eax,0x4(%esp) +c01050ad: 8b 45 08 mov 0x8(%ebp),%eax +c01050b0: 89 04 24 mov %eax,(%esp) +c01050b3: e8 a5 fe ff ff call c0104f5d +c01050b8: 89 45 f4 mov %eax,-0xc(%ebp) + // 如果 ptep_store 指针不为 NULL,将 ptep 存储到 ptep_store 指向的位置 + if (ptep_store != NULL) { +c01050bb: 83 7d 10 00 cmpl $0x0,0x10(%ebp) +c01050bf: 74 08 je c01050c9 + *ptep_store = ptep; // 存储当前页表项的指针 +c01050c1: 8b 45 10 mov 0x10(%ebp),%eax +c01050c4: 8b 55 f4 mov -0xc(%ebp),%edx +c01050c7: 89 10 mov %edx,(%eax) + } + // 检查 ptep 是否有效以及页表项的存在位 PTE_P 是否被设置 + if (ptep != NULL && *ptep & PTE_P) { +c01050c9: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) +c01050cd: 74 1b je c01050ea +c01050cf: 8b 45 f4 mov -0xc(%ebp),%eax +c01050d2: 8b 00 mov (%eax),%eax +c01050d4: 83 e0 01 and $0x1,%eax +c01050d7: 85 c0 test %eax,%eax +c01050d9: 74 0f je c01050ea + // 返回与页表项对应的 Page 结构体 + return pte2page(*ptep);// 将页表项转换为对应的 Page 结构 +c01050db: 8b 45 f4 mov -0xc(%ebp),%eax +c01050de: 8b 00 mov (%eax),%eax +c01050e0: 89 04 24 mov %eax,(%esp) +c01050e3: e8 55 f5 ff ff call c010463d +c01050e8: eb 05 jmp c01050ef + } + // 如果未找到有效的页,返回 NULL + return NULL; +c01050ea: b8 00 00 00 00 mov $0x0,%eax +} +c01050ef: 89 ec mov %ebp,%esp +c01050f1: 5d pop %ebp +c01050f2: c3 ret + +c01050f3 : + +//page_remove_pte - free an Page sturct which is related linear address la +// - and clean(invalidate) pte which is related linear address la +//note: PT is changed, so the TLB need to be invalidate +static inline void +page_remove_pte(pde_t *pgdir, uintptr_t la, pte_t *ptep) { +c01050f3: 55 push %ebp +c01050f4: 89 e5 mov %esp,%ebp +c01050f6: 83 ec 28 sub $0x28,%esp + //(4) and free this page when page reference reachs 0 + //(5) clear second page table entry + //(6) flush tlb + } +#endif + if (*ptep & PTE_P) { +c01050f9: 8b 45 10 mov 0x10(%ebp),%eax +c01050fc: 8b 00 mov (%eax),%eax +c01050fe: 83 e0 01 and $0x1,%eax +c0105101: 85 c0 test %eax,%eax +c0105103: 74 4d je c0105152 + struct Page *page = pte2page(*ptep);// 找到对应的物理页 +c0105105: 8b 45 10 mov 0x10(%ebp),%eax +c0105108: 8b 00 mov (%eax),%eax +c010510a: 89 04 24 mov %eax,(%esp) +c010510d: e8 2b f5 ff ff call c010463d +c0105112: 89 45 f4 mov %eax,-0xc(%ebp) + // 减少物理页的引用计数,如果引用计数为零,释放该物理页 + if (page_ref_dec(page) == 0) { +c0105115: 8b 45 f4 mov -0xc(%ebp),%eax +c0105118: 89 04 24 mov %eax,(%esp) +c010511b: e8 a6 f5 ff ff call c01046c6 +c0105120: 85 c0 test %eax,%eax +c0105122: 75 13 jne c0105137 + free_page(page); +c0105124: c7 44 24 04 01 00 00 movl $0x1,0x4(%esp) +c010512b: 00 +c010512c: 8b 45 f4 mov -0xc(%ebp),%eax +c010512f: 89 04 24 mov %eax,(%esp) +c0105132: e8 dd f7 ff ff call c0104914 + } + *ptep = 0;// 清除页表项 +c0105137: 8b 45 10 mov 0x10(%ebp),%eax +c010513a: c7 00 00 00 00 00 movl $0x0,(%eax) + tlb_invalidate(pgdir, la);// 刷新 TLB +c0105140: 8b 45 0c mov 0xc(%ebp),%eax +c0105143: 89 44 24 04 mov %eax,0x4(%esp) +c0105147: 8b 45 08 mov 0x8(%ebp),%eax +c010514a: 89 04 24 mov %eax,(%esp) +c010514d: e8 07 01 00 00 call c0105259 + } +} +c0105152: 90 nop +c0105153: 89 ec mov %ebp,%esp +c0105155: 5d pop %ebp +c0105156: c3 ret + +c0105157 : + +//page_remove - free an Page which is related linear address la and has an validated pte +//移除一个虚拟地址对应的页面 +void +page_remove(pde_t *pgdir, uintptr_t la) { +c0105157: 55 push %ebp +c0105158: 89 e5 mov %esp,%ebp +c010515a: 83 ec 28 sub $0x28,%esp + //调用 get_pte 函数获取给定虚拟地址 la 对应的页表项指针 ptep。 + pte_t *ptep = get_pte(pgdir, la, 0); +c010515d: c7 44 24 08 00 00 00 movl $0x0,0x8(%esp) +c0105164: 00 +c0105165: 8b 45 0c mov 0xc(%ebp),%eax +c0105168: 89 44 24 04 mov %eax,0x4(%esp) +c010516c: 8b 45 08 mov 0x8(%ebp),%eax +c010516f: 89 04 24 mov %eax,(%esp) +c0105172: e8 e6 fd ff ff call c0104f5d +c0105177: 89 45 f4 mov %eax,-0xc(%ebp) + //如果 ptep 不为 NULL,则调用 page_remove_pte 函数移除该页表项。 + if (ptep != NULL) { +c010517a: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) +c010517e: 74 19 je c0105199 + page_remove_pte(pgdir, la, ptep); +c0105180: 8b 45 f4 mov -0xc(%ebp),%eax +c0105183: 89 44 24 08 mov %eax,0x8(%esp) +c0105187: 8b 45 0c mov 0xc(%ebp),%eax +c010518a: 89 44 24 04 mov %eax,0x4(%esp) +c010518e: 8b 45 08 mov 0x8(%ebp),%eax +c0105191: 89 04 24 mov %eax,(%esp) +c0105194: e8 5a ff ff ff call c01050f3 + } +} +c0105199: 90 nop +c010519a: 89 ec mov %ebp,%esp +c010519c: 5d pop %ebp +c010519d: c3 ret + +c010519e : +// perm: the permission of this Page which is setted in related pte +// return value: always 0 +//note: PT is changed, so the TLB need to be invalidate +//将一个页面插入到页表中。 +int +page_insert(pde_t *pgdir, struct Page *page, uintptr_t la, uint32_t perm) { +c010519e: 55 push %ebp +c010519f: 89 e5 mov %esp,%ebp +c01051a1: 83 ec 28 sub $0x28,%esp + //通过 get_pte 函数获取指定虚拟地址 la 对应的页表项指针 ptep。 + pte_t *ptep = get_pte(pgdir, la, 1); +c01051a4: c7 44 24 08 01 00 00 movl $0x1,0x8(%esp) +c01051ab: 00 +c01051ac: 8b 45 10 mov 0x10(%ebp),%eax +c01051af: 89 44 24 04 mov %eax,0x4(%esp) +c01051b3: 8b 45 08 mov 0x8(%ebp),%eax +c01051b6: 89 04 24 mov %eax,(%esp) +c01051b9: e8 9f fd ff ff call c0104f5d +c01051be: 89 45 f4 mov %eax,-0xc(%ebp) + //如果 ptep 为 NULL,表示内存分配失败,返回 -E_NO_MEM。 + if (ptep == NULL) { +c01051c1: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) +c01051c5: 75 0a jne c01051d1 + return -E_NO_MEM; +c01051c7: b8 fc ff ff ff mov $0xfffffffc,%eax +c01051cc: e9 84 00 00 00 jmp c0105255 + } + //调用 page_ref_inc 增加页面的引用计数。 + page_ref_inc(page); +c01051d1: 8b 45 0c mov 0xc(%ebp),%eax +c01051d4: 89 04 24 mov %eax,(%esp) +c01051d7: e8 d3 f4 ff ff call c01046af + //如果页表项已存在且指向当前页面,则减少页面引用计数。 + if (*ptep & PTE_P) { +c01051dc: 8b 45 f4 mov -0xc(%ebp),%eax +c01051df: 8b 00 mov (%eax),%eax +c01051e1: 83 e0 01 and $0x1,%eax +c01051e4: 85 c0 test %eax,%eax +c01051e6: 74 3e je c0105226 + struct Page *p = pte2page(*ptep); +c01051e8: 8b 45 f4 mov -0xc(%ebp),%eax +c01051eb: 8b 00 mov (%eax),%eax +c01051ed: 89 04 24 mov %eax,(%esp) +c01051f0: e8 48 f4 ff ff call c010463d +c01051f5: 89 45 f0 mov %eax,-0x10(%ebp) + if (p == page) { +c01051f8: 8b 45 f0 mov -0x10(%ebp),%eax +c01051fb: 3b 45 0c cmp 0xc(%ebp),%eax +c01051fe: 75 0d jne c010520d + page_ref_dec(page); +c0105200: 8b 45 0c mov 0xc(%ebp),%eax +c0105203: 89 04 24 mov %eax,(%esp) +c0105206: e8 bb f4 ff ff call c01046c6 +c010520b: eb 19 jmp c0105226 + } + //如果页表项已存在但指向其他页面,则调用 page_remove_pte 移除旧的页表项。 + else { + page_remove_pte(pgdir, la, ptep); +c010520d: 8b 45 f4 mov -0xc(%ebp),%eax +c0105210: 89 44 24 08 mov %eax,0x8(%esp) +c0105214: 8b 45 10 mov 0x10(%ebp),%eax +c0105217: 89 44 24 04 mov %eax,0x4(%esp) +c010521b: 8b 45 08 mov 0x8(%ebp),%eax +c010521e: 89 04 24 mov %eax,(%esp) +c0105221: e8 cd fe ff ff call c01050f3 + } + } + *ptep = page2pa(page) | PTE_P | perm; +c0105226: 8b 45 0c mov 0xc(%ebp),%eax +c0105229: 89 04 24 mov %eax,(%esp) +c010522c: e8 0a f3 ff ff call c010453b +c0105231: 0b 45 14 or 0x14(%ebp),%eax +c0105234: 83 c8 01 or $0x1,%eax +c0105237: 89 c2 mov %eax,%edx +c0105239: 8b 45 f4 mov -0xc(%ebp),%eax +c010523c: 89 10 mov %edx,(%eax) + tlb_invalidate(pgdir, la);//刷新 TLB +c010523e: 8b 45 10 mov 0x10(%ebp),%eax +c0105241: 89 44 24 04 mov %eax,0x4(%esp) +c0105245: 8b 45 08 mov 0x8(%ebp),%eax +c0105248: 89 04 24 mov %eax,(%esp) +c010524b: e8 09 00 00 00 call c0105259 + return 0; +c0105250: b8 00 00 00 00 mov $0x0,%eax +} +c0105255: 89 ec mov %ebp,%esp +c0105257: 5d pop %ebp +c0105258: c3 ret + +c0105259 : + +// invalidate a TLB entry, but only if the page tables being +// edited are the ones currently in use by the processor. +//无效化指定地址的TLB条目 +void +tlb_invalidate(pde_t *pgdir, uintptr_t la) { +c0105259: 55 push %ebp +c010525a: 89 e5 mov %esp,%ebp +c010525c: 83 ec 28 sub $0x28,%esp +} + +static inline uintptr_t +rcr3(void) { + uintptr_t cr3; + asm volatile ("mov %%cr3, %0" : "=r" (cr3) :: "memory"); +c010525f: 0f 20 d8 mov %cr3,%eax +c0105262: 89 45 f0 mov %eax,-0x10(%ebp) + return cr3; +c0105265: 8b 55 f0 mov -0x10(%ebp),%edx + //检查当前页目录地址是否与传入的页目录地址相同。 + if (rcr3() == PADDR(pgdir)) { +c0105268: 8b 45 08 mov 0x8(%ebp),%eax +c010526b: 89 45 f4 mov %eax,-0xc(%ebp) +c010526e: 81 7d f4 ff ff ff bf cmpl $0xbfffffff,-0xc(%ebp) +c0105275: 77 23 ja c010529a +c0105277: 8b 45 f4 mov -0xc(%ebp),%eax +c010527a: 89 44 24 0c mov %eax,0xc(%esp) +c010527e: c7 44 24 08 50 9a 10 movl $0xc0109a50,0x8(%esp) +c0105285: c0 +c0105286: c7 44 24 04 53 02 00 movl $0x253,0x4(%esp) +c010528d: 00 +c010528e: c7 04 24 f4 9a 10 c0 movl $0xc0109af4,(%esp) +c0105295: e8 a8 b9 ff ff call c0100c42 <__panic> +c010529a: 8b 45 f4 mov -0xc(%ebp),%eax +c010529d: 05 00 00 00 40 add $0x40000000,%eax +c01052a2: 39 d0 cmp %edx,%eax +c01052a4: 75 0d jne c01052b3 + //如果相同,则调用 invlpg 函数无效化指定线性地址的TLB条目。 + invlpg((void *)la); +c01052a6: 8b 45 0c mov 0xc(%ebp),%eax +c01052a9: 89 45 ec mov %eax,-0x14(%ebp) +} + +static inline void +invlpg(void *addr) { + asm volatile ("invlpg (%0)" :: "r" (addr) : "memory"); +c01052ac: 8b 45 ec mov -0x14(%ebp),%eax +c01052af: 0f 01 38 invlpg (%eax) +} +c01052b2: 90 nop + } +} +c01052b3: 90 nop +c01052b4: 89 ec mov %ebp,%esp +c01052b6: 5d pop %ebp +c01052b7: c3 ret + +c01052b8 : +// pgdir_alloc_page - call alloc_page & page_insert functions to +// - allocate a page size memory & setup an addr map +// - pa<->la with linear address la and the PDT pgdir +//参数包括页目录指针 pgdir、线性地址 la 和权限 perm。 +struct Page * +pgdir_alloc_page(pde_t *pgdir, uintptr_t la, uint32_t perm) { +c01052b8: 55 push %ebp +c01052b9: 89 e5 mov %esp,%ebp +c01052bb: 83 ec 28 sub $0x28,%esp + struct Page *page = alloc_page();//分配一个新的页面存储在 page 指针中 +c01052be: c7 04 24 01 00 00 00 movl $0x1,(%esp) +c01052c5: e8 dd f5 ff ff call c01048a7 +c01052ca: 89 45 f4 mov %eax,-0xc(%ebp) + if (page != NULL) {//检查 page 是否不为 NULL,即分配是否成功。 +c01052cd: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) +c01052d1: 0f 84 a7 00 00 00 je c010537e + if (page_insert(pgdir, page, la, perm) != 0) {//将页面插入到指定的线性地址 la 处。 +c01052d7: 8b 45 10 mov 0x10(%ebp),%eax +c01052da: 89 44 24 0c mov %eax,0xc(%esp) +c01052de: 8b 45 0c mov 0xc(%ebp),%eax +c01052e1: 89 44 24 08 mov %eax,0x8(%esp) +c01052e5: 8b 45 f4 mov -0xc(%ebp),%eax +c01052e8: 89 44 24 04 mov %eax,0x4(%esp) +c01052ec: 8b 45 08 mov 0x8(%ebp),%eax +c01052ef: 89 04 24 mov %eax,(%esp) +c01052f2: e8 a7 fe ff ff call c010519e +c01052f7: 85 c0 test %eax,%eax +c01052f9: 74 1a je c0105315 + free_page(page);//释放分配的页面。 +c01052fb: c7 44 24 04 01 00 00 movl $0x1,0x4(%esp) +c0105302: 00 +c0105303: 8b 45 f4 mov -0xc(%ebp),%eax +c0105306: 89 04 24 mov %eax,(%esp) +c0105309: e8 06 f6 ff ff call c0104914 + return NULL;//返回 NULL,表示页面插入失败。 +c010530e: b8 00 00 00 00 mov $0x0,%eax +c0105313: eb 6c jmp c0105381 + } + if (swap_init_ok){//检查交换区是否已初始化成功 +c0105315: a1 a4 60 12 c0 mov 0xc01260a4,%eax +c010531a: 85 c0 test %eax,%eax +c010531c: 74 60 je c010537e + //将页面映射到交换区。 + swap_map_swappable(check_mm_struct, la, page, 0); +c010531e: a1 6c 61 12 c0 mov 0xc012616c,%eax +c0105323: c7 44 24 0c 00 00 00 movl $0x0,0xc(%esp) +c010532a: 00 +c010532b: 8b 55 f4 mov -0xc(%ebp),%edx +c010532e: 89 54 24 08 mov %edx,0x8(%esp) +c0105332: 8b 55 0c mov 0xc(%ebp),%edx +c0105335: 89 54 24 04 mov %edx,0x4(%esp) +c0105339: 89 04 24 mov %eax,(%esp) +c010533c: e8 79 0f 00 00 call c01062ba + //设置页面的虚拟地址 pra_vaddr 为 la + page->pra_vaddr=la; +c0105341: 8b 45 f4 mov -0xc(%ebp),%eax +c0105344: 8b 55 0c mov 0xc(%ebp),%edx +c0105347: 89 50 1c mov %edx,0x1c(%eax) + //断言页面的引用计数为1,确保页面没有被其他地方引用。 + assert(page_ref(page) == 1); +c010534a: 8b 45 f4 mov -0xc(%ebp),%eax +c010534d: 89 04 24 mov %eax,(%esp) +c0105350: e8 42 f3 ff ff call c0104697 +c0105355: 83 f8 01 cmp $0x1,%eax +c0105358: 74 24 je c010537e +c010535a: c7 44 24 0c 54 9b 10 movl $0xc0109b54,0xc(%esp) +c0105361: c0 +c0105362: c7 44 24 08 19 9b 10 movl $0xc0109b19,0x8(%esp) +c0105369: c0 +c010536a: c7 44 24 04 6b 02 00 movl $0x26b,0x4(%esp) +c0105371: 00 +c0105372: c7 04 24 f4 9a 10 c0 movl $0xc0109af4,(%esp) +c0105379: e8 c4 b8 ff ff call c0100c42 <__panic> + //cprintf("get No. %d page: pra_vaddr %x, pra_link.prev %x, pra_link_next %x in pgdir_alloc_page\n", (page-pages), page->pra_vaddr,page->pra_page_link.prev, page->pra_page_link.next); + } + + } + + return page; +c010537e: 8b 45 f4 mov -0xc(%ebp),%eax +} +c0105381: 89 ec mov %ebp,%esp +c0105383: 5d pop %ebp +c0105384: c3 ret + +c0105385 : + +static void +check_alloc_page(void) { +c0105385: 55 push %ebp +c0105386: 89 e5 mov %esp,%ebp +c0105388: 83 ec 18 sub $0x18,%esp + //调用内存管理器的 check 方法,用于检查内存分配是否正常。 + pmm_manager->check(); +c010538b: a1 0c 60 12 c0 mov 0xc012600c,%eax +c0105390: 8b 40 18 mov 0x18(%eax),%eax +c0105393: ff d0 call *%eax + cprintf("check_alloc_page() succeeded!\n"); +c0105395: c7 04 24 68 9b 10 c0 movl $0xc0109b68,(%esp) +c010539c: e8 d4 af ff ff call c0100375 +} +c01053a1: 90 nop +c01053a2: 89 ec mov %ebp,%esp +c01053a4: 5d pop %ebp +c01053a5: c3 ret + +c01053a6 : + +//用于验证页目录和页表的正确性。 +static void +check_pgdir(void) { +c01053a6: 55 push %ebp +c01053a7: 89 e5 mov %esp,%ebp +c01053a9: 83 ec 38 sub $0x38,%esp + //确保内存页面数量在合理范围内 + assert(npage <= KMEMSIZE / PGSIZE); +c01053ac: a1 04 60 12 c0 mov 0xc0126004,%eax +c01053b1: 3d 00 80 03 00 cmp $0x38000,%eax +c01053b6: 76 24 jbe c01053dc +c01053b8: c7 44 24 0c 87 9b 10 movl $0xc0109b87,0xc(%esp) +c01053bf: c0 +c01053c0: c7 44 24 08 19 9b 10 movl $0xc0109b19,0x8(%esp) +c01053c7: c0 +c01053c8: c7 44 24 04 7f 02 00 movl $0x27f,0x4(%esp) +c01053cf: 00 +c01053d0: c7 04 24 f4 9a 10 c0 movl $0xc0109af4,(%esp) +c01053d7: e8 66 b8 ff ff call c0100c42 <__panic> + //确保页目录不为空且对齐, + assert(boot_pgdir != NULL && (uint32_t)PGOFF(boot_pgdir) == 0); +c01053dc: a1 e0 29 12 c0 mov 0xc01229e0,%eax +c01053e1: 85 c0 test %eax,%eax +c01053e3: 74 0e je c01053f3 +c01053e5: a1 e0 29 12 c0 mov 0xc01229e0,%eax +c01053ea: 25 ff 0f 00 00 and $0xfff,%eax +c01053ef: 85 c0 test %eax,%eax +c01053f1: 74 24 je c0105417 +c01053f3: c7 44 24 0c a4 9b 10 movl $0xc0109ba4,0xc(%esp) +c01053fa: c0 +c01053fb: c7 44 24 08 19 9b 10 movl $0xc0109b19,0x8(%esp) +c0105402: c0 +c0105403: c7 44 24 04 81 02 00 movl $0x281,0x4(%esp) +c010540a: 00 +c010540b: c7 04 24 f4 9a 10 c0 movl $0xc0109af4,(%esp) +c0105412: e8 2b b8 ff ff call c0100c42 <__panic> + //确保虚拟地址 0x0 没有映射任何页面 + assert(get_page(boot_pgdir, 0x0, NULL) == NULL); +c0105417: a1 e0 29 12 c0 mov 0xc01229e0,%eax +c010541c: c7 44 24 08 00 00 00 movl $0x0,0x8(%esp) +c0105423: 00 +c0105424: c7 44 24 04 00 00 00 movl $0x0,0x4(%esp) +c010542b: 00 +c010542c: 89 04 24 mov %eax,(%esp) +c010542f: e8 64 fc ff ff call c0105098 +c0105434: 85 c0 test %eax,%eax +c0105436: 74 24 je c010545c +c0105438: c7 44 24 0c dc 9b 10 movl $0xc0109bdc,0xc(%esp) +c010543f: c0 +c0105440: c7 44 24 08 19 9b 10 movl $0xc0109b19,0x8(%esp) +c0105447: c0 +c0105448: c7 44 24 04 83 02 00 movl $0x283,0x4(%esp) +c010544f: 00 +c0105450: c7 04 24 f4 9a 10 c0 movl $0xc0109af4,(%esp) +c0105457: e8 e6 b7 ff ff call c0100c42 <__panic> + + //定义两个页面指针 p1 和 p2 + struct Page *p1, *p2; + //分配一个页面 p1 + p1 = alloc_page(); +c010545c: c7 04 24 01 00 00 00 movl $0x1,(%esp) +c0105463: e8 3f f4 ff ff call c01048a7 +c0105468: 89 45 f4 mov %eax,-0xc(%ebp) + //将 p1 插入到虚拟地址 0x0 + assert(page_insert(boot_pgdir, p1, 0x0, 0) == 0); +c010546b: a1 e0 29 12 c0 mov 0xc01229e0,%eax +c0105470: c7 44 24 0c 00 00 00 movl $0x0,0xc(%esp) +c0105477: 00 +c0105478: c7 44 24 08 00 00 00 movl $0x0,0x8(%esp) +c010547f: 00 +c0105480: 8b 55 f4 mov -0xc(%ebp),%edx +c0105483: 89 54 24 04 mov %edx,0x4(%esp) +c0105487: 89 04 24 mov %eax,(%esp) +c010548a: e8 0f fd ff ff call c010519e +c010548f: 85 c0 test %eax,%eax +c0105491: 74 24 je c01054b7 +c0105493: c7 44 24 0c 04 9c 10 movl $0xc0109c04,0xc(%esp) +c010549a: c0 +c010549b: c7 44 24 08 19 9b 10 movl $0xc0109b19,0x8(%esp) +c01054a2: c0 +c01054a3: c7 44 24 04 8a 02 00 movl $0x28a,0x4(%esp) +c01054aa: 00 +c01054ab: c7 04 24 f4 9a 10 c0 movl $0xc0109af4,(%esp) +c01054b2: e8 8b b7 ff ff call c0100c42 <__panic> + + // 获取虚拟地址 0x0 对应的页表项指针 + pte_t *ptep; + assert((ptep = get_pte(boot_pgdir, 0x0, 0)) != NULL); +c01054b7: a1 e0 29 12 c0 mov 0xc01229e0,%eax +c01054bc: c7 44 24 08 00 00 00 movl $0x0,0x8(%esp) +c01054c3: 00 +c01054c4: c7 44 24 04 00 00 00 movl $0x0,0x4(%esp) +c01054cb: 00 +c01054cc: 89 04 24 mov %eax,(%esp) +c01054cf: e8 89 fa ff ff call c0104f5d +c01054d4: 89 45 f0 mov %eax,-0x10(%ebp) +c01054d7: 83 7d f0 00 cmpl $0x0,-0x10(%ebp) +c01054db: 75 24 jne c0105501 +c01054dd: c7 44 24 0c 30 9c 10 movl $0xc0109c30,0xc(%esp) +c01054e4: c0 +c01054e5: c7 44 24 08 19 9b 10 movl $0xc0109b19,0x8(%esp) +c01054ec: c0 +c01054ed: c7 44 24 04 8e 02 00 movl $0x28e,0x4(%esp) +c01054f4: 00 +c01054f5: c7 04 24 f4 9a 10 c0 movl $0xc0109af4,(%esp) +c01054fc: e8 41 b7 ff ff call c0100c42 <__panic> + // 验证页表项对应的页面是 p1 + assert(pte2page(*ptep) == p1); +c0105501: 8b 45 f0 mov -0x10(%ebp),%eax +c0105504: 8b 00 mov (%eax),%eax +c0105506: 89 04 24 mov %eax,(%esp) +c0105509: e8 2f f1 ff ff call c010463d +c010550e: 39 45 f4 cmp %eax,-0xc(%ebp) +c0105511: 74 24 je c0105537 +c0105513: c7 44 24 0c 5d 9c 10 movl $0xc0109c5d,0xc(%esp) +c010551a: c0 +c010551b: c7 44 24 08 19 9b 10 movl $0xc0109b19,0x8(%esp) +c0105522: c0 +c0105523: c7 44 24 04 90 02 00 movl $0x290,0x4(%esp) +c010552a: 00 +c010552b: c7 04 24 f4 9a 10 c0 movl $0xc0109af4,(%esp) +c0105532: e8 0b b7 ff ff call c0100c42 <__panic> + // 验证 p1 的引用计数为 1 + assert(page_ref(p1) == 1); +c0105537: 8b 45 f4 mov -0xc(%ebp),%eax +c010553a: 89 04 24 mov %eax,(%esp) +c010553d: e8 55 f1 ff ff call c0104697 +c0105542: 83 f8 01 cmp $0x1,%eax +c0105545: 74 24 je c010556b +c0105547: c7 44 24 0c 73 9c 10 movl $0xc0109c73,0xc(%esp) +c010554e: c0 +c010554f: c7 44 24 08 19 9b 10 movl $0xc0109b19,0x8(%esp) +c0105556: c0 +c0105557: c7 44 24 04 92 02 00 movl $0x292,0x4(%esp) +c010555e: 00 +c010555f: c7 04 24 f4 9a 10 c0 movl $0xc0109af4,(%esp) +c0105566: e8 d7 b6 ff ff call c0100c42 <__panic> + // 获取虚拟地址 PGSIZE 对应的页表项指针 + ptep = &((pte_t *)KADDR(PDE_ADDR(boot_pgdir[0])))[1]; +c010556b: a1 e0 29 12 c0 mov 0xc01229e0,%eax +c0105570: 8b 00 mov (%eax),%eax +c0105572: 25 00 f0 ff ff and $0xfffff000,%eax +c0105577: 89 45 ec mov %eax,-0x14(%ebp) +c010557a: 8b 45 ec mov -0x14(%ebp),%eax +c010557d: c1 e8 0c shr $0xc,%eax +c0105580: 89 45 e8 mov %eax,-0x18(%ebp) +c0105583: a1 04 60 12 c0 mov 0xc0126004,%eax +c0105588: 39 45 e8 cmp %eax,-0x18(%ebp) +c010558b: 72 23 jb c01055b0 +c010558d: 8b 45 ec mov -0x14(%ebp),%eax +c0105590: 89 44 24 0c mov %eax,0xc(%esp) +c0105594: c7 44 24 08 2c 9a 10 movl $0xc0109a2c,0x8(%esp) +c010559b: c0 +c010559c: c7 44 24 04 94 02 00 movl $0x294,0x4(%esp) +c01055a3: 00 +c01055a4: c7 04 24 f4 9a 10 c0 movl $0xc0109af4,(%esp) +c01055ab: e8 92 b6 ff ff call c0100c42 <__panic> +c01055b0: 8b 45 ec mov -0x14(%ebp),%eax +c01055b3: 2d 00 00 00 40 sub $0x40000000,%eax +c01055b8: 83 c0 04 add $0x4,%eax +c01055bb: 89 45 f0 mov %eax,-0x10(%ebp) + assert(get_pte(boot_pgdir, PGSIZE, 0) == ptep); +c01055be: a1 e0 29 12 c0 mov 0xc01229e0,%eax +c01055c3: c7 44 24 08 00 00 00 movl $0x0,0x8(%esp) +c01055ca: 00 +c01055cb: c7 44 24 04 00 10 00 movl $0x1000,0x4(%esp) +c01055d2: 00 +c01055d3: 89 04 24 mov %eax,(%esp) +c01055d6: e8 82 f9 ff ff call c0104f5d +c01055db: 39 45 f0 cmp %eax,-0x10(%ebp) +c01055de: 74 24 je c0105604 +c01055e0: c7 44 24 0c 88 9c 10 movl $0xc0109c88,0xc(%esp) +c01055e7: c0 +c01055e8: c7 44 24 08 19 9b 10 movl $0xc0109b19,0x8(%esp) +c01055ef: c0 +c01055f0: c7 44 24 04 95 02 00 movl $0x295,0x4(%esp) +c01055f7: 00 +c01055f8: c7 04 24 f4 9a 10 c0 movl $0xc0109af4,(%esp) +c01055ff: e8 3e b6 ff ff call c0100c42 <__panic> + // 分配一个页面 p2 + p2 = alloc_page(); +c0105604: c7 04 24 01 00 00 00 movl $0x1,(%esp) +c010560b: e8 97 f2 ff ff call c01048a7 +c0105610: 89 45 e4 mov %eax,-0x1c(%ebp) + // 将 p2 插入到虚拟地址 PGSIZE,并设置用户和写权限 + assert(page_insert(boot_pgdir, p2, PGSIZE, PTE_U | PTE_W) == 0); +c0105613: a1 e0 29 12 c0 mov 0xc01229e0,%eax +c0105618: c7 44 24 0c 06 00 00 movl $0x6,0xc(%esp) +c010561f: 00 +c0105620: c7 44 24 08 00 10 00 movl $0x1000,0x8(%esp) +c0105627: 00 +c0105628: 8b 55 e4 mov -0x1c(%ebp),%edx +c010562b: 89 54 24 04 mov %edx,0x4(%esp) +c010562f: 89 04 24 mov %eax,(%esp) +c0105632: e8 67 fb ff ff call c010519e +c0105637: 85 c0 test %eax,%eax +c0105639: 74 24 je c010565f +c010563b: c7 44 24 0c b0 9c 10 movl $0xc0109cb0,0xc(%esp) +c0105642: c0 +c0105643: c7 44 24 08 19 9b 10 movl $0xc0109b19,0x8(%esp) +c010564a: c0 +c010564b: c7 44 24 04 99 02 00 movl $0x299,0x4(%esp) +c0105652: 00 +c0105653: c7 04 24 f4 9a 10 c0 movl $0xc0109af4,(%esp) +c010565a: e8 e3 b5 ff ff call c0100c42 <__panic> + // 获取虚拟地址 PGSIZE 对应的页表项指针 + assert((ptep = get_pte(boot_pgdir, PGSIZE, 0)) != NULL); +c010565f: a1 e0 29 12 c0 mov 0xc01229e0,%eax +c0105664: c7 44 24 08 00 00 00 movl $0x0,0x8(%esp) +c010566b: 00 +c010566c: c7 44 24 04 00 10 00 movl $0x1000,0x4(%esp) +c0105673: 00 +c0105674: 89 04 24 mov %eax,(%esp) +c0105677: e8 e1 f8 ff ff call c0104f5d +c010567c: 89 45 f0 mov %eax,-0x10(%ebp) +c010567f: 83 7d f0 00 cmpl $0x0,-0x10(%ebp) +c0105683: 75 24 jne c01056a9 +c0105685: c7 44 24 0c e8 9c 10 movl $0xc0109ce8,0xc(%esp) +c010568c: c0 +c010568d: c7 44 24 08 19 9b 10 movl $0xc0109b19,0x8(%esp) +c0105694: c0 +c0105695: c7 44 24 04 9b 02 00 movl $0x29b,0x4(%esp) +c010569c: 00 +c010569d: c7 04 24 f4 9a 10 c0 movl $0xc0109af4,(%esp) +c01056a4: e8 99 b5 ff ff call c0100c42 <__panic> + // 验证页表项设置了用户权限 + assert(*ptep & PTE_U); +c01056a9: 8b 45 f0 mov -0x10(%ebp),%eax +c01056ac: 8b 00 mov (%eax),%eax +c01056ae: 83 e0 04 and $0x4,%eax +c01056b1: 85 c0 test %eax,%eax +c01056b3: 75 24 jne c01056d9 +c01056b5: c7 44 24 0c 18 9d 10 movl $0xc0109d18,0xc(%esp) +c01056bc: c0 +c01056bd: c7 44 24 08 19 9b 10 movl $0xc0109b19,0x8(%esp) +c01056c4: c0 +c01056c5: c7 44 24 04 9d 02 00 movl $0x29d,0x4(%esp) +c01056cc: 00 +c01056cd: c7 04 24 f4 9a 10 c0 movl $0xc0109af4,(%esp) +c01056d4: e8 69 b5 ff ff call c0100c42 <__panic> + // 验证页表项设置了写权限 + assert(*ptep & PTE_W); +c01056d9: 8b 45 f0 mov -0x10(%ebp),%eax +c01056dc: 8b 00 mov (%eax),%eax +c01056de: 83 e0 02 and $0x2,%eax +c01056e1: 85 c0 test %eax,%eax +c01056e3: 75 24 jne c0105709 +c01056e5: c7 44 24 0c 26 9d 10 movl $0xc0109d26,0xc(%esp) +c01056ec: c0 +c01056ed: c7 44 24 08 19 9b 10 movl $0xc0109b19,0x8(%esp) +c01056f4: c0 +c01056f5: c7 44 24 04 9f 02 00 movl $0x29f,0x4(%esp) +c01056fc: 00 +c01056fd: c7 04 24 f4 9a 10 c0 movl $0xc0109af4,(%esp) +c0105704: e8 39 b5 ff ff call c0100c42 <__panic> + // 验证页目录项设置了用户权限 + assert(boot_pgdir[0] & PTE_U); +c0105709: a1 e0 29 12 c0 mov 0xc01229e0,%eax +c010570e: 8b 00 mov (%eax),%eax +c0105710: 83 e0 04 and $0x4,%eax +c0105713: 85 c0 test %eax,%eax +c0105715: 75 24 jne c010573b +c0105717: c7 44 24 0c 34 9d 10 movl $0xc0109d34,0xc(%esp) +c010571e: c0 +c010571f: c7 44 24 08 19 9b 10 movl $0xc0109b19,0x8(%esp) +c0105726: c0 +c0105727: c7 44 24 04 a1 02 00 movl $0x2a1,0x4(%esp) +c010572e: 00 +c010572f: c7 04 24 f4 9a 10 c0 movl $0xc0109af4,(%esp) +c0105736: e8 07 b5 ff ff call c0100c42 <__panic> + // 验证 p2 的引用计数为 1 + assert(page_ref(p2) == 1); +c010573b: 8b 45 e4 mov -0x1c(%ebp),%eax +c010573e: 89 04 24 mov %eax,(%esp) +c0105741: e8 51 ef ff ff call c0104697 +c0105746: 83 f8 01 cmp $0x1,%eax +c0105749: 74 24 je c010576f +c010574b: c7 44 24 0c 4a 9d 10 movl $0xc0109d4a,0xc(%esp) +c0105752: c0 +c0105753: c7 44 24 08 19 9b 10 movl $0xc0109b19,0x8(%esp) +c010575a: c0 +c010575b: c7 44 24 04 a3 02 00 movl $0x2a3,0x4(%esp) +c0105762: 00 +c0105763: c7 04 24 f4 9a 10 c0 movl $0xc0109af4,(%esp) +c010576a: e8 d3 b4 ff ff call c0100c42 <__panic> + + // 将 p1 插入到虚拟地址 PGSIZE,替换掉 p2 + assert(page_insert(boot_pgdir, p1, PGSIZE, 0) == 0); +c010576f: a1 e0 29 12 c0 mov 0xc01229e0,%eax +c0105774: c7 44 24 0c 00 00 00 movl $0x0,0xc(%esp) +c010577b: 00 +c010577c: c7 44 24 08 00 10 00 movl $0x1000,0x8(%esp) +c0105783: 00 +c0105784: 8b 55 f4 mov -0xc(%ebp),%edx +c0105787: 89 54 24 04 mov %edx,0x4(%esp) +c010578b: 89 04 24 mov %eax,(%esp) +c010578e: e8 0b fa ff ff call c010519e +c0105793: 85 c0 test %eax,%eax +c0105795: 74 24 je c01057bb +c0105797: c7 44 24 0c 5c 9d 10 movl $0xc0109d5c,0xc(%esp) +c010579e: c0 +c010579f: c7 44 24 08 19 9b 10 movl $0xc0109b19,0x8(%esp) +c01057a6: c0 +c01057a7: c7 44 24 04 a6 02 00 movl $0x2a6,0x4(%esp) +c01057ae: 00 +c01057af: c7 04 24 f4 9a 10 c0 movl $0xc0109af4,(%esp) +c01057b6: e8 87 b4 ff ff call c0100c42 <__panic> + // 验证 p1 的引用计数增加到 2 + assert(page_ref(p1) == 2); +c01057bb: 8b 45 f4 mov -0xc(%ebp),%eax +c01057be: 89 04 24 mov %eax,(%esp) +c01057c1: e8 d1 ee ff ff call c0104697 +c01057c6: 83 f8 02 cmp $0x2,%eax +c01057c9: 74 24 je c01057ef +c01057cb: c7 44 24 0c 88 9d 10 movl $0xc0109d88,0xc(%esp) +c01057d2: c0 +c01057d3: c7 44 24 08 19 9b 10 movl $0xc0109b19,0x8(%esp) +c01057da: c0 +c01057db: c7 44 24 04 a8 02 00 movl $0x2a8,0x4(%esp) +c01057e2: 00 +c01057e3: c7 04 24 f4 9a 10 c0 movl $0xc0109af4,(%esp) +c01057ea: e8 53 b4 ff ff call c0100c42 <__panic> + // 验证 p2 的引用计数减少到 0 + assert(page_ref(p2) == 0); +c01057ef: 8b 45 e4 mov -0x1c(%ebp),%eax +c01057f2: 89 04 24 mov %eax,(%esp) +c01057f5: e8 9d ee ff ff call c0104697 +c01057fa: 85 c0 test %eax,%eax +c01057fc: 74 24 je c0105822 +c01057fe: c7 44 24 0c 9a 9d 10 movl $0xc0109d9a,0xc(%esp) +c0105805: c0 +c0105806: c7 44 24 08 19 9b 10 movl $0xc0109b19,0x8(%esp) +c010580d: c0 +c010580e: c7 44 24 04 aa 02 00 movl $0x2aa,0x4(%esp) +c0105815: 00 +c0105816: c7 04 24 f4 9a 10 c0 movl $0xc0109af4,(%esp) +c010581d: e8 20 b4 ff ff call c0100c42 <__panic> + // 获取虚拟地址 PGSIZE 对应的页表项指针 + assert((ptep = get_pte(boot_pgdir, PGSIZE, 0)) != NULL); +c0105822: a1 e0 29 12 c0 mov 0xc01229e0,%eax +c0105827: c7 44 24 08 00 00 00 movl $0x0,0x8(%esp) +c010582e: 00 +c010582f: c7 44 24 04 00 10 00 movl $0x1000,0x4(%esp) +c0105836: 00 +c0105837: 89 04 24 mov %eax,(%esp) +c010583a: e8 1e f7 ff ff call c0104f5d +c010583f: 89 45 f0 mov %eax,-0x10(%ebp) +c0105842: 83 7d f0 00 cmpl $0x0,-0x10(%ebp) +c0105846: 75 24 jne c010586c +c0105848: c7 44 24 0c e8 9c 10 movl $0xc0109ce8,0xc(%esp) +c010584f: c0 +c0105850: c7 44 24 08 19 9b 10 movl $0xc0109b19,0x8(%esp) +c0105857: c0 +c0105858: c7 44 24 04 ac 02 00 movl $0x2ac,0x4(%esp) +c010585f: 00 +c0105860: c7 04 24 f4 9a 10 c0 movl $0xc0109af4,(%esp) +c0105867: e8 d6 b3 ff ff call c0100c42 <__panic> + // 验证页表项对应的页面是 p1 + assert(pte2page(*ptep) == p1); +c010586c: 8b 45 f0 mov -0x10(%ebp),%eax +c010586f: 8b 00 mov (%eax),%eax +c0105871: 89 04 24 mov %eax,(%esp) +c0105874: e8 c4 ed ff ff call c010463d +c0105879: 39 45 f4 cmp %eax,-0xc(%ebp) +c010587c: 74 24 je c01058a2 +c010587e: c7 44 24 0c 5d 9c 10 movl $0xc0109c5d,0xc(%esp) +c0105885: c0 +c0105886: c7 44 24 08 19 9b 10 movl $0xc0109b19,0x8(%esp) +c010588d: c0 +c010588e: c7 44 24 04 ae 02 00 movl $0x2ae,0x4(%esp) +c0105895: 00 +c0105896: c7 04 24 f4 9a 10 c0 movl $0xc0109af4,(%esp) +c010589d: e8 a0 b3 ff ff call c0100c42 <__panic> + // 验证页表项没有设置用户权限 + assert((*ptep & PTE_U) == 0); +c01058a2: 8b 45 f0 mov -0x10(%ebp),%eax +c01058a5: 8b 00 mov (%eax),%eax +c01058a7: 83 e0 04 and $0x4,%eax +c01058aa: 85 c0 test %eax,%eax +c01058ac: 74 24 je c01058d2 +c01058ae: c7 44 24 0c ac 9d 10 movl $0xc0109dac,0xc(%esp) +c01058b5: c0 +c01058b6: c7 44 24 08 19 9b 10 movl $0xc0109b19,0x8(%esp) +c01058bd: c0 +c01058be: c7 44 24 04 b0 02 00 movl $0x2b0,0x4(%esp) +c01058c5: 00 +c01058c6: c7 04 24 f4 9a 10 c0 movl $0xc0109af4,(%esp) +c01058cd: e8 70 b3 ff ff call c0100c42 <__panic> + + //移除虚拟地址 0x0 的映射, + page_remove(boot_pgdir, 0x0); +c01058d2: a1 e0 29 12 c0 mov 0xc01229e0,%eax +c01058d7: c7 44 24 04 00 00 00 movl $0x0,0x4(%esp) +c01058de: 00 +c01058df: 89 04 24 mov %eax,(%esp) +c01058e2: e8 70 f8 ff ff call c0105157 + //验证 p1 的引用计数减少到 1。 + assert(page_ref(p1) == 1); +c01058e7: 8b 45 f4 mov -0xc(%ebp),%eax +c01058ea: 89 04 24 mov %eax,(%esp) +c01058ed: e8 a5 ed ff ff call c0104697 +c01058f2: 83 f8 01 cmp $0x1,%eax +c01058f5: 74 24 je c010591b +c01058f7: c7 44 24 0c 73 9c 10 movl $0xc0109c73,0xc(%esp) +c01058fe: c0 +c01058ff: c7 44 24 08 19 9b 10 movl $0xc0109b19,0x8(%esp) +c0105906: c0 +c0105907: c7 44 24 04 b5 02 00 movl $0x2b5,0x4(%esp) +c010590e: 00 +c010590f: c7 04 24 f4 9a 10 c0 movl $0xc0109af4,(%esp) +c0105916: e8 27 b3 ff ff call c0100c42 <__panic> + //验证 p2 的引用计数减少到 0 + assert(page_ref(p2) == 0); +c010591b: 8b 45 e4 mov -0x1c(%ebp),%eax +c010591e: 89 04 24 mov %eax,(%esp) +c0105921: e8 71 ed ff ff call c0104697 +c0105926: 85 c0 test %eax,%eax +c0105928: 74 24 je c010594e +c010592a: c7 44 24 0c 9a 9d 10 movl $0xc0109d9a,0xc(%esp) +c0105931: c0 +c0105932: c7 44 24 08 19 9b 10 movl $0xc0109b19,0x8(%esp) +c0105939: c0 +c010593a: c7 44 24 04 b7 02 00 movl $0x2b7,0x4(%esp) +c0105941: 00 +c0105942: c7 04 24 f4 9a 10 c0 movl $0xc0109af4,(%esp) +c0105949: e8 f4 b2 ff ff call c0100c42 <__panic> + + //移除虚拟地址 PGSIZE 的映射, + page_remove(boot_pgdir, PGSIZE); +c010594e: a1 e0 29 12 c0 mov 0xc01229e0,%eax +c0105953: c7 44 24 04 00 10 00 movl $0x1000,0x4(%esp) +c010595a: 00 +c010595b: 89 04 24 mov %eax,(%esp) +c010595e: e8 f4 f7 ff ff call c0105157 + //验证 p1 的引用计数减少到 0 + assert(page_ref(p1) == 0); +c0105963: 8b 45 f4 mov -0xc(%ebp),%eax +c0105966: 89 04 24 mov %eax,(%esp) +c0105969: e8 29 ed ff ff call c0104697 +c010596e: 85 c0 test %eax,%eax +c0105970: 74 24 je c0105996 +c0105972: c7 44 24 0c c1 9d 10 movl $0xc0109dc1,0xc(%esp) +c0105979: c0 +c010597a: c7 44 24 08 19 9b 10 movl $0xc0109b19,0x8(%esp) +c0105981: c0 +c0105982: c7 44 24 04 bc 02 00 movl $0x2bc,0x4(%esp) +c0105989: 00 +c010598a: c7 04 24 f4 9a 10 c0 movl $0xc0109af4,(%esp) +c0105991: e8 ac b2 ff ff call c0100c42 <__panic> + //验证 p2 的引用计数减少到 0 + assert(page_ref(p2) == 0); +c0105996: 8b 45 e4 mov -0x1c(%ebp),%eax +c0105999: 89 04 24 mov %eax,(%esp) +c010599c: e8 f6 ec ff ff call c0104697 +c01059a1: 85 c0 test %eax,%eax +c01059a3: 74 24 je c01059c9 +c01059a5: c7 44 24 0c 9a 9d 10 movl $0xc0109d9a,0xc(%esp) +c01059ac: c0 +c01059ad: c7 44 24 08 19 9b 10 movl $0xc0109b19,0x8(%esp) +c01059b4: c0 +c01059b5: c7 44 24 04 be 02 00 movl $0x2be,0x4(%esp) +c01059bc: 00 +c01059bd: c7 04 24 f4 9a 10 c0 movl $0xc0109af4,(%esp) +c01059c4: e8 79 b2 ff ff call c0100c42 <__panic> + + //验证页目录的第一页表的引用计数为 1。 + assert(page_ref(pde2page(boot_pgdir[0])) == 1); +c01059c9: a1 e0 29 12 c0 mov 0xc01229e0,%eax +c01059ce: 8b 00 mov (%eax),%eax +c01059d0: 89 04 24 mov %eax,(%esp) +c01059d3: e8 a5 ec ff ff call c010467d +c01059d8: 89 04 24 mov %eax,(%esp) +c01059db: e8 b7 ec ff ff call c0104697 +c01059e0: 83 f8 01 cmp $0x1,%eax +c01059e3: 74 24 je c0105a09 +c01059e5: c7 44 24 0c d4 9d 10 movl $0xc0109dd4,0xc(%esp) +c01059ec: c0 +c01059ed: c7 44 24 08 19 9b 10 movl $0xc0109b19,0x8(%esp) +c01059f4: c0 +c01059f5: c7 44 24 04 c1 02 00 movl $0x2c1,0x4(%esp) +c01059fc: 00 +c01059fd: c7 04 24 f4 9a 10 c0 movl $0xc0109af4,(%esp) +c0105a04: e8 39 b2 ff ff call c0100c42 <__panic> + //释放页目录的第一页表 + free_page(pde2page(boot_pgdir[0])); +c0105a09: a1 e0 29 12 c0 mov 0xc01229e0,%eax +c0105a0e: 8b 00 mov (%eax),%eax +c0105a10: 89 04 24 mov %eax,(%esp) +c0105a13: e8 65 ec ff ff call c010467d +c0105a18: c7 44 24 04 01 00 00 movl $0x1,0x4(%esp) +c0105a1f: 00 +c0105a20: 89 04 24 mov %eax,(%esp) +c0105a23: e8 ec ee ff ff call c0104914 + //清空页目录的第一页表 + boot_pgdir[0] = 0; +c0105a28: a1 e0 29 12 c0 mov 0xc01229e0,%eax +c0105a2d: c7 00 00 00 00 00 movl $0x0,(%eax) + + cprintf("check_pgdir() succeeded!\n"); +c0105a33: c7 04 24 fb 9d 10 c0 movl $0xc0109dfb,(%esp) +c0105a3a: e8 36 a9 ff ff call c0100375 +} +c0105a3f: 90 nop +c0105a40: 89 ec mov %ebp,%esp +c0105a42: 5d pop %ebp +c0105a43: c3 ret + +c0105a44 : + +//检查内核页表 boot_pgdir 的正确性 +static void +check_boot_pgdir(void) { +c0105a44: 55 push %ebp +c0105a45: 89 e5 mov %esp,%ebp +c0105a47: 83 ec 38 sub $0x38,%esp + pte_t *ptep;// 定义一个指向页表项的指针 + int i; + for (i = 0; i < npage; i += PGSIZE) {// 遍历所有页面 +c0105a4a: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) +c0105a51: e9 ca 00 00 00 jmp c0105b20 + // 获取第 i 个页面的页表项,并确保其不为空 + assert((ptep = get_pte(boot_pgdir, (uintptr_t)KADDR(i), 0)) != NULL); +c0105a56: 8b 45 f4 mov -0xc(%ebp),%eax +c0105a59: 89 45 e4 mov %eax,-0x1c(%ebp) +c0105a5c: 8b 45 e4 mov -0x1c(%ebp),%eax +c0105a5f: c1 e8 0c shr $0xc,%eax +c0105a62: 89 45 e0 mov %eax,-0x20(%ebp) +c0105a65: a1 04 60 12 c0 mov 0xc0126004,%eax +c0105a6a: 39 45 e0 cmp %eax,-0x20(%ebp) +c0105a6d: 72 23 jb c0105a92 +c0105a6f: 8b 45 e4 mov -0x1c(%ebp),%eax +c0105a72: 89 44 24 0c mov %eax,0xc(%esp) +c0105a76: c7 44 24 08 2c 9a 10 movl $0xc0109a2c,0x8(%esp) +c0105a7d: c0 +c0105a7e: c7 44 24 04 d1 02 00 movl $0x2d1,0x4(%esp) +c0105a85: 00 +c0105a86: c7 04 24 f4 9a 10 c0 movl $0xc0109af4,(%esp) +c0105a8d: e8 b0 b1 ff ff call c0100c42 <__panic> +c0105a92: 8b 45 e4 mov -0x1c(%ebp),%eax +c0105a95: 2d 00 00 00 40 sub $0x40000000,%eax +c0105a9a: 89 c2 mov %eax,%edx +c0105a9c: a1 e0 29 12 c0 mov 0xc01229e0,%eax +c0105aa1: c7 44 24 08 00 00 00 movl $0x0,0x8(%esp) +c0105aa8: 00 +c0105aa9: 89 54 24 04 mov %edx,0x4(%esp) +c0105aad: 89 04 24 mov %eax,(%esp) +c0105ab0: e8 a8 f4 ff ff call c0104f5d +c0105ab5: 89 45 dc mov %eax,-0x24(%ebp) +c0105ab8: 83 7d dc 00 cmpl $0x0,-0x24(%ebp) +c0105abc: 75 24 jne c0105ae2 +c0105abe: c7 44 24 0c 18 9e 10 movl $0xc0109e18,0xc(%esp) +c0105ac5: c0 +c0105ac6: c7 44 24 08 19 9b 10 movl $0xc0109b19,0x8(%esp) +c0105acd: c0 +c0105ace: c7 44 24 04 d1 02 00 movl $0x2d1,0x4(%esp) +c0105ad5: 00 +c0105ad6: c7 04 24 f4 9a 10 c0 movl $0xc0109af4,(%esp) +c0105add: e8 60 b1 ff ff call c0100c42 <__panic> + // 验证页表项的物理地址是否正确 + assert(PTE_ADDR(*ptep) == i); +c0105ae2: 8b 45 dc mov -0x24(%ebp),%eax +c0105ae5: 8b 00 mov (%eax),%eax +c0105ae7: 25 00 f0 ff ff and $0xfffff000,%eax +c0105aec: 89 c2 mov %eax,%edx +c0105aee: 8b 45 f4 mov -0xc(%ebp),%eax +c0105af1: 39 c2 cmp %eax,%edx +c0105af3: 74 24 je c0105b19 +c0105af5: c7 44 24 0c 55 9e 10 movl $0xc0109e55,0xc(%esp) +c0105afc: c0 +c0105afd: c7 44 24 08 19 9b 10 movl $0xc0109b19,0x8(%esp) +c0105b04: c0 +c0105b05: c7 44 24 04 d3 02 00 movl $0x2d3,0x4(%esp) +c0105b0c: 00 +c0105b0d: c7 04 24 f4 9a 10 c0 movl $0xc0109af4,(%esp) +c0105b14: e8 29 b1 ff ff call c0100c42 <__panic> + for (i = 0; i < npage; i += PGSIZE) {// 遍历所有页面 +c0105b19: 81 45 f4 00 10 00 00 addl $0x1000,-0xc(%ebp) +c0105b20: 8b 55 f4 mov -0xc(%ebp),%edx +c0105b23: a1 04 60 12 c0 mov 0xc0126004,%eax +c0105b28: 39 c2 cmp %eax,%edx +c0105b2a: 0f 82 26 ff ff ff jb c0105a56 + } + // 验证页目录项的物理地址是否正确 + assert(PDE_ADDR(boot_pgdir[PDX(VPT)]) == PADDR(boot_pgdir)); +c0105b30: a1 e0 29 12 c0 mov 0xc01229e0,%eax +c0105b35: 05 ac 0f 00 00 add $0xfac,%eax +c0105b3a: 8b 00 mov (%eax),%eax +c0105b3c: 25 00 f0 ff ff and $0xfffff000,%eax +c0105b41: 89 c2 mov %eax,%edx +c0105b43: a1 e0 29 12 c0 mov 0xc01229e0,%eax +c0105b48: 89 45 f0 mov %eax,-0x10(%ebp) +c0105b4b: 81 7d f0 ff ff ff bf cmpl $0xbfffffff,-0x10(%ebp) +c0105b52: 77 23 ja c0105b77 +c0105b54: 8b 45 f0 mov -0x10(%ebp),%eax +c0105b57: 89 44 24 0c mov %eax,0xc(%esp) +c0105b5b: c7 44 24 08 50 9a 10 movl $0xc0109a50,0x8(%esp) +c0105b62: c0 +c0105b63: c7 44 24 04 d6 02 00 movl $0x2d6,0x4(%esp) +c0105b6a: 00 +c0105b6b: c7 04 24 f4 9a 10 c0 movl $0xc0109af4,(%esp) +c0105b72: e8 cb b0 ff ff call c0100c42 <__panic> +c0105b77: 8b 45 f0 mov -0x10(%ebp),%eax +c0105b7a: 05 00 00 00 40 add $0x40000000,%eax +c0105b7f: 39 d0 cmp %edx,%eax +c0105b81: 74 24 je c0105ba7 +c0105b83: c7 44 24 0c 6c 9e 10 movl $0xc0109e6c,0xc(%esp) +c0105b8a: c0 +c0105b8b: c7 44 24 08 19 9b 10 movl $0xc0109b19,0x8(%esp) +c0105b92: c0 +c0105b93: c7 44 24 04 d6 02 00 movl $0x2d6,0x4(%esp) +c0105b9a: 00 +c0105b9b: c7 04 24 f4 9a 10 c0 movl $0xc0109af4,(%esp) +c0105ba2: e8 9b b0 ff ff call c0100c42 <__panic> + + assert(boot_pgdir[0] == 0);// 确保页目录的第一个项为0 +c0105ba7: a1 e0 29 12 c0 mov 0xc01229e0,%eax +c0105bac: 8b 00 mov (%eax),%eax +c0105bae: 85 c0 test %eax,%eax +c0105bb0: 74 24 je c0105bd6 +c0105bb2: c7 44 24 0c a0 9e 10 movl $0xc0109ea0,0xc(%esp) +c0105bb9: c0 +c0105bba: c7 44 24 08 19 9b 10 movl $0xc0109b19,0x8(%esp) +c0105bc1: c0 +c0105bc2: c7 44 24 04 d8 02 00 movl $0x2d8,0x4(%esp) +c0105bc9: 00 +c0105bca: c7 04 24 f4 9a 10 c0 movl $0xc0109af4,(%esp) +c0105bd1: e8 6c b0 ff ff call c0100c42 <__panic> + + struct Page *p;// 定义一个指向页面的指针 + p = alloc_page();// 分配一个页面 +c0105bd6: c7 04 24 01 00 00 00 movl $0x1,(%esp) +c0105bdd: e8 c5 ec ff ff call c01048a7 +c0105be2: 89 45 ec mov %eax,-0x14(%ebp) + // 将页面插入到虚拟地址 0x100,并确保操作成功 + assert(page_insert(boot_pgdir, p, 0x100, PTE_W) == 0); +c0105be5: a1 e0 29 12 c0 mov 0xc01229e0,%eax +c0105bea: c7 44 24 0c 02 00 00 movl $0x2,0xc(%esp) +c0105bf1: 00 +c0105bf2: c7 44 24 08 00 01 00 movl $0x100,0x8(%esp) +c0105bf9: 00 +c0105bfa: 8b 55 ec mov -0x14(%ebp),%edx +c0105bfd: 89 54 24 04 mov %edx,0x4(%esp) +c0105c01: 89 04 24 mov %eax,(%esp) +c0105c04: e8 95 f5 ff ff call c010519e +c0105c09: 85 c0 test %eax,%eax +c0105c0b: 74 24 je c0105c31 +c0105c0d: c7 44 24 0c b4 9e 10 movl $0xc0109eb4,0xc(%esp) +c0105c14: c0 +c0105c15: c7 44 24 08 19 9b 10 movl $0xc0109b19,0x8(%esp) +c0105c1c: c0 +c0105c1d: c7 44 24 04 dd 02 00 movl $0x2dd,0x4(%esp) +c0105c24: 00 +c0105c25: c7 04 24 f4 9a 10 c0 movl $0xc0109af4,(%esp) +c0105c2c: e8 11 b0 ff ff call c0100c42 <__panic> + assert(page_ref(p) == 1);// 验证页面的引用计数为1 +c0105c31: 8b 45 ec mov -0x14(%ebp),%eax +c0105c34: 89 04 24 mov %eax,(%esp) +c0105c37: e8 5b ea ff ff call c0104697 +c0105c3c: 83 f8 01 cmp $0x1,%eax +c0105c3f: 74 24 je c0105c65 +c0105c41: c7 44 24 0c e2 9e 10 movl $0xc0109ee2,0xc(%esp) +c0105c48: c0 +c0105c49: c7 44 24 08 19 9b 10 movl $0xc0109b19,0x8(%esp) +c0105c50: c0 +c0105c51: c7 44 24 04 de 02 00 movl $0x2de,0x4(%esp) +c0105c58: 00 +c0105c59: c7 04 24 f4 9a 10 c0 movl $0xc0109af4,(%esp) +c0105c60: e8 dd af ff ff call c0100c42 <__panic> + // 将页面插入到虚拟地址 0x100 + PGSIZE,并确保操作成功 + assert(page_insert(boot_pgdir, p, 0x100 + PGSIZE, PTE_W) == 0); +c0105c65: a1 e0 29 12 c0 mov 0xc01229e0,%eax +c0105c6a: c7 44 24 0c 02 00 00 movl $0x2,0xc(%esp) +c0105c71: 00 +c0105c72: c7 44 24 08 00 11 00 movl $0x1100,0x8(%esp) +c0105c79: 00 +c0105c7a: 8b 55 ec mov -0x14(%ebp),%edx +c0105c7d: 89 54 24 04 mov %edx,0x4(%esp) +c0105c81: 89 04 24 mov %eax,(%esp) +c0105c84: e8 15 f5 ff ff call c010519e +c0105c89: 85 c0 test %eax,%eax +c0105c8b: 74 24 je c0105cb1 +c0105c8d: c7 44 24 0c f4 9e 10 movl $0xc0109ef4,0xc(%esp) +c0105c94: c0 +c0105c95: c7 44 24 08 19 9b 10 movl $0xc0109b19,0x8(%esp) +c0105c9c: c0 +c0105c9d: c7 44 24 04 e0 02 00 movl $0x2e0,0x4(%esp) +c0105ca4: 00 +c0105ca5: c7 04 24 f4 9a 10 c0 movl $0xc0109af4,(%esp) +c0105cac: e8 91 af ff ff call c0100c42 <__panic> + assert(page_ref(p) == 2);// 验证页面的引用计数为2 +c0105cb1: 8b 45 ec mov -0x14(%ebp),%eax +c0105cb4: 89 04 24 mov %eax,(%esp) +c0105cb7: e8 db e9 ff ff call c0104697 +c0105cbc: 83 f8 02 cmp $0x2,%eax +c0105cbf: 74 24 je c0105ce5 +c0105cc1: c7 44 24 0c 2b 9f 10 movl $0xc0109f2b,0xc(%esp) +c0105cc8: c0 +c0105cc9: c7 44 24 08 19 9b 10 movl $0xc0109b19,0x8(%esp) +c0105cd0: c0 +c0105cd1: c7 44 24 04 e1 02 00 movl $0x2e1,0x4(%esp) +c0105cd8: 00 +c0105cd9: c7 04 24 f4 9a 10 c0 movl $0xc0109af4,(%esp) +c0105ce0: e8 5d af ff ff call c0100c42 <__panic> + + const char *str = "ucore: Hello world!!";// 定义一个字符串 +c0105ce5: c7 45 e8 3c 9f 10 c0 movl $0xc0109f3c,-0x18(%ebp) + strcpy((void *)0x100, str);// 将字符串复制到虚拟地址 0x100 +c0105cec: 8b 45 e8 mov -0x18(%ebp),%eax +c0105cef: 89 44 24 04 mov %eax,0x4(%esp) +c0105cf3: c7 04 24 00 01 00 00 movl $0x100,(%esp) +c0105cfa: e8 ff 2b 00 00 call c01088fe + // 验证两个映射地址的数据是否一致 + assert(strcmp((void *)0x100, (void *)(0x100 + PGSIZE)) == 0); +c0105cff: c7 44 24 04 00 11 00 movl $0x1100,0x4(%esp) +c0105d06: 00 +c0105d07: c7 04 24 00 01 00 00 movl $0x100,(%esp) +c0105d0e: e8 63 2c 00 00 call c0108976 +c0105d13: 85 c0 test %eax,%eax +c0105d15: 74 24 je c0105d3b +c0105d17: c7 44 24 0c 54 9f 10 movl $0xc0109f54,0xc(%esp) +c0105d1e: c0 +c0105d1f: c7 44 24 08 19 9b 10 movl $0xc0109b19,0x8(%esp) +c0105d26: c0 +c0105d27: c7 44 24 04 e6 02 00 movl $0x2e6,0x4(%esp) +c0105d2e: 00 +c0105d2f: c7 04 24 f4 9a 10 c0 movl $0xc0109af4,(%esp) +c0105d36: e8 07 af ff ff call c0100c42 <__panic> + // 在页面的 0x100 偏移处设置字符串结束符 + *(char *)(page2kva(p) + 0x100) = '\0'; +c0105d3b: 8b 45 ec mov -0x14(%ebp),%eax +c0105d3e: 89 04 24 mov %eax,(%esp) +c0105d41: e8 55 e8 ff ff call c010459b +c0105d46: 05 00 01 00 00 add $0x100,%eax +c0105d4b: c6 00 00 movb $0x0,(%eax) + assert(strlen((const char *)0x100) == 0);// 验证字符串长度为0 +c0105d4e: c7 04 24 00 01 00 00 movl $0x100,(%esp) +c0105d55: e8 4a 2b 00 00 call c01088a4 +c0105d5a: 85 c0 test %eax,%eax +c0105d5c: 74 24 je c0105d82 +c0105d5e: c7 44 24 0c 8c 9f 10 movl $0xc0109f8c,0xc(%esp) +c0105d65: c0 +c0105d66: c7 44 24 08 19 9b 10 movl $0xc0109b19,0x8(%esp) +c0105d6d: c0 +c0105d6e: c7 44 24 04 e9 02 00 movl $0x2e9,0x4(%esp) +c0105d75: 00 +c0105d76: c7 04 24 f4 9a 10 c0 movl $0xc0109af4,(%esp) +c0105d7d: e8 c0 ae ff ff call c0100c42 <__panic> + + free_page(p);// 释放页面 p +c0105d82: c7 44 24 04 01 00 00 movl $0x1,0x4(%esp) +c0105d89: 00 +c0105d8a: 8b 45 ec mov -0x14(%ebp),%eax +c0105d8d: 89 04 24 mov %eax,(%esp) +c0105d90: e8 7f eb ff ff call c0104914 + free_page(pde2page(boot_pgdir[0]));// 释放页目录项对应的页面 +c0105d95: a1 e0 29 12 c0 mov 0xc01229e0,%eax +c0105d9a: 8b 00 mov (%eax),%eax +c0105d9c: 89 04 24 mov %eax,(%esp) +c0105d9f: e8 d9 e8 ff ff call c010467d +c0105da4: c7 44 24 04 01 00 00 movl $0x1,0x4(%esp) +c0105dab: 00 +c0105dac: 89 04 24 mov %eax,(%esp) +c0105daf: e8 60 eb ff ff call c0104914 + boot_pgdir[0] = 0;// 将页目录的第一个项设为0 +c0105db4: a1 e0 29 12 c0 mov 0xc01229e0,%eax +c0105db9: c7 00 00 00 00 00 movl $0x0,(%eax) + + cprintf("check_boot_pgdir() succeeded!\n");// 输出成功信息 +c0105dbf: c7 04 24 b0 9f 10 c0 movl $0xc0109fb0,(%esp) +c0105dc6: e8 aa a5 ff ff call c0100375 +} +c0105dcb: 90 nop +c0105dcc: 89 ec mov %ebp,%esp +c0105dce: 5d pop %ebp +c0105dcf: c3 ret + +c0105dd0 : + +//perm2str - use string 'u,r,w,-' to present the permission +static const char * +perm2str(int perm) { +c0105dd0: 55 push %ebp +c0105dd1: 89 e5 mov %esp,%ebp + //定义一个静态字符数组 str,长度为4 + static char str[4]; + //如果 perm 与 PTE_U 按位与的结果不为0,则 str[0] 设置为 'u',否则设置为 '-' + str[0] = (perm & PTE_U) ? 'u' : '-'; +c0105dd3: 8b 45 08 mov 0x8(%ebp),%eax +c0105dd6: 83 e0 04 and $0x4,%eax +c0105dd9: 85 c0 test %eax,%eax +c0105ddb: 74 04 je c0105de1 +c0105ddd: b0 75 mov $0x75,%al +c0105ddf: eb 02 jmp c0105de3 +c0105de1: b0 2d mov $0x2d,%al +c0105de3: a2 88 60 12 c0 mov %al,0xc0126088 + //str[1] 始终设置为 'r' + str[1] = 'r'; +c0105de8: c6 05 89 60 12 c0 72 movb $0x72,0xc0126089 + //如果 perm 与 PTE_W 按位与的结果不为0,则 str[2] 设置为 'w',否则设置为 '-' + str[2] = (perm & PTE_W) ? 'w' : '-'; +c0105def: 8b 45 08 mov 0x8(%ebp),%eax +c0105df2: 83 e0 02 and $0x2,%eax +c0105df5: 85 c0 test %eax,%eax +c0105df7: 74 04 je c0105dfd +c0105df9: b0 77 mov $0x77,%al +c0105dfb: eb 02 jmp c0105dff +c0105dfd: b0 2d mov $0x2d,%al +c0105dff: a2 8a 60 12 c0 mov %al,0xc012608a + //str[3] 设置为字符串结束符 \0 + str[3] = '\0'; +c0105e04: c6 05 8b 60 12 c0 00 movb $0x0,0xc012608b + return str; +c0105e0b: b8 88 60 12 c0 mov $0xc0126088,%eax +} +c0105e10: 5d pop %ebp +c0105e11: c3 ret + +c0105e12 : +// left_store: the pointer of the high side of table's next range +// right_store: the pointer of the low side of table's next range +// return value: 0 - not a invalid item range, perm - a valid item range with perm permission +//从页表中获取指定范围内的有效项,并根据权限进行处理。 +static int +get_pgtable_items(size_t left, size_t right, size_t start, uintptr_t *table, size_t *left_store, size_t *right_store) { +c0105e12: 55 push %ebp +c0105e13: 89 e5 mov %esp,%ebp +c0105e15: 83 ec 10 sub $0x10,%esp + if (start >= right) {// 检查起始索引是否超出右边界 +c0105e18: 8b 45 10 mov 0x10(%ebp),%eax +c0105e1b: 3b 45 0c cmp 0xc(%ebp),%eax +c0105e1e: 72 0d jb c0105e2d + return 0;// 如果超出右边界,返回0 +c0105e20: b8 00 00 00 00 mov $0x0,%eax +c0105e25: e9 98 00 00 00 jmp c0105ec2 + } + while (start < right && !(table[start] & PTE_P)) {// 查找第一个有效项(PTE_P位为1的项) + start ++;// 索引递增 +c0105e2a: ff 45 10 incl 0x10(%ebp) + while (start < right && !(table[start] & PTE_P)) {// 查找第一个有效项(PTE_P位为1的项) +c0105e2d: 8b 45 10 mov 0x10(%ebp),%eax +c0105e30: 3b 45 0c cmp 0xc(%ebp),%eax +c0105e33: 73 18 jae c0105e4d +c0105e35: 8b 45 10 mov 0x10(%ebp),%eax +c0105e38: 8d 14 85 00 00 00 00 lea 0x0(,%eax,4),%edx +c0105e3f: 8b 45 14 mov 0x14(%ebp),%eax +c0105e42: 01 d0 add %edx,%eax +c0105e44: 8b 00 mov (%eax),%eax +c0105e46: 83 e0 01 and $0x1,%eax +c0105e49: 85 c0 test %eax,%eax +c0105e4b: 74 dd je c0105e2a + } + if (start < right) {// 检查是否找到有效项 +c0105e4d: 8b 45 10 mov 0x10(%ebp),%eax +c0105e50: 3b 45 0c cmp 0xc(%ebp),%eax +c0105e53: 73 68 jae c0105ebd + if (left_store != NULL) {// 如果left_store不为NULL +c0105e55: 83 7d 18 00 cmpl $0x0,0x18(%ebp) +c0105e59: 74 08 je c0105e63 + *left_store = start;// 记录左边界索引 +c0105e5b: 8b 45 18 mov 0x18(%ebp),%eax +c0105e5e: 8b 55 10 mov 0x10(%ebp),%edx +c0105e61: 89 10 mov %edx,(%eax) + } + int perm = (table[start ++] & PTE_USER);// 获取当前项的用户权限位并递增索引 +c0105e63: 8b 45 10 mov 0x10(%ebp),%eax +c0105e66: 8d 50 01 lea 0x1(%eax),%edx +c0105e69: 89 55 10 mov %edx,0x10(%ebp) +c0105e6c: 8d 14 85 00 00 00 00 lea 0x0(,%eax,4),%edx +c0105e73: 8b 45 14 mov 0x14(%ebp),%eax +c0105e76: 01 d0 add %edx,%eax +c0105e78: 8b 00 mov (%eax),%eax +c0105e7a: 83 e0 07 and $0x7,%eax +c0105e7d: 89 45 fc mov %eax,-0x4(%ebp) + while (start < right && (table[start] & PTE_USER) == perm) {// 查找具有相同用户权限的连续项 +c0105e80: eb 03 jmp c0105e85 + start ++;// 索引递增 +c0105e82: ff 45 10 incl 0x10(%ebp) + while (start < right && (table[start] & PTE_USER) == perm) {// 查找具有相同用户权限的连续项 +c0105e85: 8b 45 10 mov 0x10(%ebp),%eax +c0105e88: 3b 45 0c cmp 0xc(%ebp),%eax +c0105e8b: 73 1d jae c0105eaa +c0105e8d: 8b 45 10 mov 0x10(%ebp),%eax +c0105e90: 8d 14 85 00 00 00 00 lea 0x0(,%eax,4),%edx +c0105e97: 8b 45 14 mov 0x14(%ebp),%eax +c0105e9a: 01 d0 add %edx,%eax +c0105e9c: 8b 00 mov (%eax),%eax +c0105e9e: 83 e0 07 and $0x7,%eax +c0105ea1: 89 c2 mov %eax,%edx +c0105ea3: 8b 45 fc mov -0x4(%ebp),%eax +c0105ea6: 39 c2 cmp %eax,%edx +c0105ea8: 74 d8 je c0105e82 + } + if (right_store != NULL) {// 如果right_store不为NULL +c0105eaa: 83 7d 1c 00 cmpl $0x0,0x1c(%ebp) +c0105eae: 74 08 je c0105eb8 + *right_store = start;// 记录右边界索引 +c0105eb0: 8b 45 1c mov 0x1c(%ebp),%eax +c0105eb3: 8b 55 10 mov 0x10(%ebp),%edx +c0105eb6: 89 10 mov %edx,(%eax) + } + return perm;// 返回用户权限位 +c0105eb8: 8b 45 fc mov -0x4(%ebp),%eax +c0105ebb: eb 05 jmp c0105ec2 + } + return 0;// 如果未找到有效项,返回0 +c0105ebd: b8 00 00 00 00 mov $0x0,%eax +} +c0105ec2: 89 ec mov %ebp,%esp +c0105ec4: 5d pop %ebp +c0105ec5: c3 ret + +c0105ec6 : + +//print_pgdir - print the PDT&PT +void +print_pgdir(void) { +c0105ec6: 55 push %ebp +c0105ec7: 89 e5 mov %esp,%ebp +c0105ec9: 57 push %edi +c0105eca: 56 push %esi +c0105ecb: 53 push %ebx +c0105ecc: 83 ec 4c sub $0x4c,%esp + cprintf("-------------------- BEGIN --------------------\n"); +c0105ecf: c7 04 24 d0 9f 10 c0 movl $0xc0109fd0,(%esp) +c0105ed6: e8 9a a4 ff ff call c0100375 + // 定义变量 left, right 和 perm + size_t left, right = 0, perm; +c0105edb: c7 45 dc 00 00 00 00 movl $0x0,-0x24(%ebp) + // 遍历页目录项 + while ((perm = get_pgtable_items(0, NPDEENTRY, right, vpd, &left, &right)) != 0) { +c0105ee2: e9 f2 00 00 00 jmp c0105fd9 + // 打印页目录项的信息 + cprintf("PDE(%03x) %08x-%08x %08x %s\n", right - left, +c0105ee7: 8b 45 e4 mov -0x1c(%ebp),%eax +c0105eea: 89 04 24 mov %eax,(%esp) +c0105eed: e8 de fe ff ff call c0105dd0 + left * PTSIZE, right * PTSIZE, (right - left) * PTSIZE, perm2str(perm)); +c0105ef2: 8b 55 dc mov -0x24(%ebp),%edx +c0105ef5: 8b 4d e0 mov -0x20(%ebp),%ecx +c0105ef8: 29 ca sub %ecx,%edx + cprintf("PDE(%03x) %08x-%08x %08x %s\n", right - left, +c0105efa: 89 d6 mov %edx,%esi +c0105efc: c1 e6 16 shl $0x16,%esi +c0105eff: 8b 55 dc mov -0x24(%ebp),%edx +c0105f02: 89 d3 mov %edx,%ebx +c0105f04: c1 e3 16 shl $0x16,%ebx +c0105f07: 8b 55 e0 mov -0x20(%ebp),%edx +c0105f0a: 89 d1 mov %edx,%ecx +c0105f0c: c1 e1 16 shl $0x16,%ecx +c0105f0f: 8b 55 dc mov -0x24(%ebp),%edx +c0105f12: 8b 7d e0 mov -0x20(%ebp),%edi +c0105f15: 29 fa sub %edi,%edx +c0105f17: 89 44 24 14 mov %eax,0x14(%esp) +c0105f1b: 89 74 24 10 mov %esi,0x10(%esp) +c0105f1f: 89 5c 24 0c mov %ebx,0xc(%esp) +c0105f23: 89 4c 24 08 mov %ecx,0x8(%esp) +c0105f27: 89 54 24 04 mov %edx,0x4(%esp) +c0105f2b: c7 04 24 01 a0 10 c0 movl $0xc010a001,(%esp) +c0105f32: e8 3e a4 ff ff call c0100375 + // 计算页表项的起始和结束索引 + size_t l, r = left * NPTEENTRY; +c0105f37: 8b 45 e0 mov -0x20(%ebp),%eax +c0105f3a: c1 e0 0a shl $0xa,%eax +c0105f3d: 89 45 d4 mov %eax,-0x2c(%ebp) + // 遍历页表项 + while ((perm = get_pgtable_items(left * NPTEENTRY, right * NPTEENTRY, r, vpt, &l, &r)) != 0) { +c0105f40: eb 50 jmp c0105f92 + // 打印页表项的信息 + cprintf(" |-- PTE(%05x) %08x-%08x %08x %s\n", r - l, +c0105f42: 8b 45 e4 mov -0x1c(%ebp),%eax +c0105f45: 89 04 24 mov %eax,(%esp) +c0105f48: e8 83 fe ff ff call c0105dd0 + l * PGSIZE, r * PGSIZE, (r - l) * PGSIZE, perm2str(perm)); +c0105f4d: 8b 55 d4 mov -0x2c(%ebp),%edx +c0105f50: 8b 4d d8 mov -0x28(%ebp),%ecx +c0105f53: 29 ca sub %ecx,%edx + cprintf(" |-- PTE(%05x) %08x-%08x %08x %s\n", r - l, +c0105f55: 89 d6 mov %edx,%esi +c0105f57: c1 e6 0c shl $0xc,%esi +c0105f5a: 8b 55 d4 mov -0x2c(%ebp),%edx +c0105f5d: 89 d3 mov %edx,%ebx +c0105f5f: c1 e3 0c shl $0xc,%ebx +c0105f62: 8b 55 d8 mov -0x28(%ebp),%edx +c0105f65: 89 d1 mov %edx,%ecx +c0105f67: c1 e1 0c shl $0xc,%ecx +c0105f6a: 8b 55 d4 mov -0x2c(%ebp),%edx +c0105f6d: 8b 7d d8 mov -0x28(%ebp),%edi +c0105f70: 29 fa sub %edi,%edx +c0105f72: 89 44 24 14 mov %eax,0x14(%esp) +c0105f76: 89 74 24 10 mov %esi,0x10(%esp) +c0105f7a: 89 5c 24 0c mov %ebx,0xc(%esp) +c0105f7e: 89 4c 24 08 mov %ecx,0x8(%esp) +c0105f82: 89 54 24 04 mov %edx,0x4(%esp) +c0105f86: c7 04 24 20 a0 10 c0 movl $0xc010a020,(%esp) +c0105f8d: e8 e3 a3 ff ff call c0100375 + while ((perm = get_pgtable_items(left * NPTEENTRY, right * NPTEENTRY, r, vpt, &l, &r)) != 0) { +c0105f92: be 00 00 c0 fa mov $0xfac00000,%esi +c0105f97: 8b 45 d4 mov -0x2c(%ebp),%eax +c0105f9a: 8b 55 dc mov -0x24(%ebp),%edx +c0105f9d: 89 d3 mov %edx,%ebx +c0105f9f: c1 e3 0a shl $0xa,%ebx +c0105fa2: 8b 55 e0 mov -0x20(%ebp),%edx +c0105fa5: 89 d1 mov %edx,%ecx +c0105fa7: c1 e1 0a shl $0xa,%ecx +c0105faa: 8d 55 d4 lea -0x2c(%ebp),%edx +c0105fad: 89 54 24 14 mov %edx,0x14(%esp) +c0105fb1: 8d 55 d8 lea -0x28(%ebp),%edx +c0105fb4: 89 54 24 10 mov %edx,0x10(%esp) +c0105fb8: 89 74 24 0c mov %esi,0xc(%esp) +c0105fbc: 89 44 24 08 mov %eax,0x8(%esp) +c0105fc0: 89 5c 24 04 mov %ebx,0x4(%esp) +c0105fc4: 89 0c 24 mov %ecx,(%esp) +c0105fc7: e8 46 fe ff ff call c0105e12 +c0105fcc: 89 45 e4 mov %eax,-0x1c(%ebp) +c0105fcf: 83 7d e4 00 cmpl $0x0,-0x1c(%ebp) +c0105fd3: 0f 85 69 ff ff ff jne c0105f42 + while ((perm = get_pgtable_items(0, NPDEENTRY, right, vpd, &left, &right)) != 0) { +c0105fd9: b9 00 b0 fe fa mov $0xfafeb000,%ecx +c0105fde: 8b 45 dc mov -0x24(%ebp),%eax +c0105fe1: 8d 55 dc lea -0x24(%ebp),%edx +c0105fe4: 89 54 24 14 mov %edx,0x14(%esp) +c0105fe8: 8d 55 e0 lea -0x20(%ebp),%edx +c0105feb: 89 54 24 10 mov %edx,0x10(%esp) +c0105fef: 89 4c 24 0c mov %ecx,0xc(%esp) +c0105ff3: 89 44 24 08 mov %eax,0x8(%esp) +c0105ff7: c7 44 24 04 00 04 00 movl $0x400,0x4(%esp) +c0105ffe: 00 +c0105fff: c7 04 24 00 00 00 00 movl $0x0,(%esp) +c0106006: e8 07 fe ff ff call c0105e12 +c010600b: 89 45 e4 mov %eax,-0x1c(%ebp) +c010600e: 83 7d e4 00 cmpl $0x0,-0x1c(%ebp) +c0106012: 0f 85 cf fe ff ff jne c0105ee7 + } + } + cprintf("--------------------- END ---------------------\n"); +c0106018: c7 04 24 44 a0 10 c0 movl $0xc010a044,(%esp) +c010601f: e8 51 a3 ff ff call c0100375 +} +c0106024: 90 nop +c0106025: 83 c4 4c add $0x4c,%esp +c0106028: 5b pop %ebx +c0106029: 5e pop %esi +c010602a: 5f pop %edi +c010602b: 5d pop %ebp +c010602c: c3 ret + +c010602d : + +//size_t n,表示请求的内存大小。 +void * +kmalloc(size_t n) { +c010602d: 55 push %ebp +c010602e: 89 e5 mov %esp,%ebp +c0106030: 83 ec 28 sub $0x28,%esp + //ptr用于存储分配的内存地址。 + void * ptr=NULL; +c0106033: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) + //base用于存储分配的页面基址 + struct Page *base=NULL; +c010603a: c7 45 f0 00 00 00 00 movl $0x0,-0x10(%ebp) + assert(n > 0 && n < 1024*0124); +c0106041: 83 7d 08 00 cmpl $0x0,0x8(%ebp) +c0106045: 74 09 je c0106050 +c0106047: 81 7d 08 ff 4f 01 00 cmpl $0x14fff,0x8(%ebp) +c010604e: 76 24 jbe c0106074 +c0106050: c7 44 24 0c 75 a0 10 movl $0xc010a075,0xc(%esp) +c0106057: c0 +c0106058: c7 44 24 08 19 9b 10 movl $0xc0109b19,0x8(%esp) +c010605f: c0 +c0106060: c7 44 24 04 44 03 00 movl $0x344,0x4(%esp) +c0106067: 00 +c0106068: c7 04 24 f4 9a 10 c0 movl $0xc0109af4,(%esp) +c010606f: e8 ce ab ff ff call c0100c42 <__panic> + //计算所需页数 + int num_pages=(n+PGSIZE-1)/PGSIZE; +c0106074: 8b 45 08 mov 0x8(%ebp),%eax +c0106077: 05 ff 0f 00 00 add $0xfff,%eax +c010607c: c1 e8 0c shr $0xc,%eax +c010607f: 89 45 ec mov %eax,-0x14(%ebp) + //分配num_pages个页面,结果存储在 base 中 + base = alloc_pages(num_pages); +c0106082: 8b 45 ec mov -0x14(%ebp),%eax +c0106085: 89 04 24 mov %eax,(%esp) +c0106088: e8 1a e8 ff ff call c01048a7 +c010608d: 89 45 f0 mov %eax,-0x10(%ebp) + //检查页面分配是否成功 + assert(base != NULL); +c0106090: 83 7d f0 00 cmpl $0x0,-0x10(%ebp) +c0106094: 75 24 jne c01060ba +c0106096: c7 44 24 0c 8c a0 10 movl $0xc010a08c,0xc(%esp) +c010609d: c0 +c010609e: c7 44 24 08 19 9b 10 movl $0xc0109b19,0x8(%esp) +c01060a5: c0 +c01060a6: c7 44 24 04 4a 03 00 movl $0x34a,0x4(%esp) +c01060ad: 00 +c01060ae: c7 04 24 f4 9a 10 c0 movl $0xc0109af4,(%esp) +c01060b5: e8 88 ab ff ff call c0100c42 <__panic> + //将分配的页面基址 base 转换为内核虚拟地址,结果存储在 ptr 中 + ptr=page2kva(base); +c01060ba: 8b 45 f0 mov -0x10(%ebp),%eax +c01060bd: 89 04 24 mov %eax,(%esp) +c01060c0: e8 d6 e4 ff ff call c010459b +c01060c5: 89 45 f4 mov %eax,-0xc(%ebp) + return ptr; +c01060c8: 8b 45 f4 mov -0xc(%ebp),%eax +} +c01060cb: 89 ec mov %ebp,%esp +c01060cd: 5d pop %ebp +c01060ce: c3 ret + +c01060cf : + +void +kfree(void *ptr, size_t n) { +c01060cf: 55 push %ebp +c01060d0: 89 e5 mov %esp,%ebp +c01060d2: 83 ec 28 sub $0x28,%esp + assert(n > 0 && n < 1024*0124); +c01060d5: 83 7d 0c 00 cmpl $0x0,0xc(%ebp) +c01060d9: 74 09 je c01060e4 +c01060db: 81 7d 0c ff 4f 01 00 cmpl $0x14fff,0xc(%ebp) +c01060e2: 76 24 jbe c0106108 +c01060e4: c7 44 24 0c 75 a0 10 movl $0xc010a075,0xc(%esp) +c01060eb: c0 +c01060ec: c7 44 24 08 19 9b 10 movl $0xc0109b19,0x8(%esp) +c01060f3: c0 +c01060f4: c7 44 24 04 52 03 00 movl $0x352,0x4(%esp) +c01060fb: 00 +c01060fc: c7 04 24 f4 9a 10 c0 movl $0xc0109af4,(%esp) +c0106103: e8 3a ab ff ff call c0100c42 <__panic> + assert(ptr != NULL); +c0106108: 83 7d 08 00 cmpl $0x0,0x8(%ebp) +c010610c: 75 24 jne c0106132 +c010610e: c7 44 24 0c 99 a0 10 movl $0xc010a099,0xc(%esp) +c0106115: c0 +c0106116: c7 44 24 08 19 9b 10 movl $0xc0109b19,0x8(%esp) +c010611d: c0 +c010611e: c7 44 24 04 53 03 00 movl $0x353,0x4(%esp) +c0106125: 00 +c0106126: c7 04 24 f4 9a 10 c0 movl $0xc0109af4,(%esp) +c010612d: e8 10 ab ff ff call c0100c42 <__panic> + struct Page *base=NULL; +c0106132: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) + //计算需要释放的页数 + int num_pages=(n+PGSIZE-1)/PGSIZE; +c0106139: 8b 45 0c mov 0xc(%ebp),%eax +c010613c: 05 ff 0f 00 00 add $0xfff,%eax +c0106141: c1 e8 0c shr $0xc,%eax +c0106144: 89 45 f0 mov %eax,-0x10(%ebp) + //将虚拟地址 ptr 转换为物理页的指针 base + base = kva2page(ptr); +c0106147: 8b 45 08 mov 0x8(%ebp),%eax +c010614a: 89 04 24 mov %eax,(%esp) +c010614d: e8 9f e4 ff ff call c01045f1 +c0106152: 89 45 f4 mov %eax,-0xc(%ebp) + //释放从 base 开始的 num_pages 个页面 + free_pages(base, num_pages); +c0106155: 8b 45 f0 mov -0x10(%ebp),%eax +c0106158: 89 44 24 04 mov %eax,0x4(%esp) +c010615c: 8b 45 f4 mov -0xc(%ebp),%eax +c010615f: 89 04 24 mov %eax,(%esp) +c0106162: e8 ad e7 ff ff call c0104914 +} +c0106167: 90 nop +c0106168: 89 ec mov %ebp,%esp +c010616a: 5d pop %ebp +c010616b: c3 ret + +c010616c : +pa2page(uintptr_t pa) { +c010616c: 55 push %ebp +c010616d: 89 e5 mov %esp,%ebp +c010616f: 83 ec 18 sub $0x18,%esp + if (PPN(pa) >= npage) { +c0106172: 8b 45 08 mov 0x8(%ebp),%eax +c0106175: c1 e8 0c shr $0xc,%eax +c0106178: 89 c2 mov %eax,%edx +c010617a: a1 04 60 12 c0 mov 0xc0126004,%eax +c010617f: 39 c2 cmp %eax,%edx +c0106181: 72 1c jb c010619f + panic("pa2page called with invalid pa"); +c0106183: c7 44 24 08 a8 a0 10 movl $0xc010a0a8,0x8(%esp) +c010618a: c0 +c010618b: c7 44 24 04 5b 00 00 movl $0x5b,0x4(%esp) +c0106192: 00 +c0106193: c7 04 24 c7 a0 10 c0 movl $0xc010a0c7,(%esp) +c010619a: e8 a3 aa ff ff call c0100c42 <__panic> + return &pages[PPN(pa)]; +c010619f: 8b 15 00 60 12 c0 mov 0xc0126000,%edx +c01061a5: 8b 45 08 mov 0x8(%ebp),%eax +c01061a8: c1 e8 0c shr $0xc,%eax +c01061ab: c1 e0 05 shl $0x5,%eax +c01061ae: 01 d0 add %edx,%eax +} +c01061b0: 89 ec mov %ebp,%esp +c01061b2: 5d pop %ebp +c01061b3: c3 ret + +c01061b4 : +pte2page(pte_t pte) { +c01061b4: 55 push %ebp +c01061b5: 89 e5 mov %esp,%ebp +c01061b7: 83 ec 18 sub $0x18,%esp + if (!(pte & PTE_P)) { +c01061ba: 8b 45 08 mov 0x8(%ebp),%eax +c01061bd: 83 e0 01 and $0x1,%eax +c01061c0: 85 c0 test %eax,%eax +c01061c2: 75 1c jne c01061e0 + panic("pte2page called with invalid pte"); +c01061c4: c7 44 24 08 d8 a0 10 movl $0xc010a0d8,0x8(%esp) +c01061cb: c0 +c01061cc: c7 44 24 04 6d 00 00 movl $0x6d,0x4(%esp) +c01061d3: 00 +c01061d4: c7 04 24 c7 a0 10 c0 movl $0xc010a0c7,(%esp) +c01061db: e8 62 aa ff ff call c0100c42 <__panic> + return pa2page(PTE_ADDR(pte)); +c01061e0: 8b 45 08 mov 0x8(%ebp),%eax +c01061e3: 25 00 f0 ff ff and $0xfffff000,%eax +c01061e8: 89 04 24 mov %eax,(%esp) +c01061eb: e8 7c ff ff ff call c010616c +} +c01061f0: 89 ec mov %ebp,%esp +c01061f2: 5d pop %ebp +c01061f3: c3 ret + +c01061f4 : + +static void check_swap(void); + +int +swap_init(void) +{ +c01061f4: 55 push %ebp +c01061f5: 89 e5 mov %esp,%ebp +c01061f7: 83 ec 28 sub $0x28,%esp + swapfs_init(); +c01061fa: e8 26 1e 00 00 call c0108025 + + if (!(1024 <= max_swap_offset && max_swap_offset < MAX_SWAP_OFFSET_LIMIT)) +c01061ff: a1 a0 60 12 c0 mov 0xc01260a0,%eax +c0106204: 3d ff 03 00 00 cmp $0x3ff,%eax +c0106209: 76 0c jbe c0106217 +c010620b: a1 a0 60 12 c0 mov 0xc01260a0,%eax +c0106210: 3d ff ff ff 00 cmp $0xffffff,%eax +c0106215: 76 25 jbe c010623c + { + panic("bad max_swap_offset %08x.\n", max_swap_offset); +c0106217: a1 a0 60 12 c0 mov 0xc01260a0,%eax +c010621c: 89 44 24 0c mov %eax,0xc(%esp) +c0106220: c7 44 24 08 f9 a0 10 movl $0xc010a0f9,0x8(%esp) +c0106227: c0 +c0106228: c7 44 24 04 25 00 00 movl $0x25,0x4(%esp) +c010622f: 00 +c0106230: c7 04 24 14 a1 10 c0 movl $0xc010a114,(%esp) +c0106237: e8 06 aa ff ff call c0100c42 <__panic> + } + + + sm = &swap_manager_fifo; +c010623c: c7 05 60 61 12 c0 40 movl $0xc0122a40,0xc0126160 +c0106243: 2a 12 c0 + int r = sm->init(); +c0106246: a1 60 61 12 c0 mov 0xc0126160,%eax +c010624b: 8b 40 04 mov 0x4(%eax),%eax +c010624e: ff d0 call *%eax +c0106250: 89 45 f4 mov %eax,-0xc(%ebp) + + if (r == 0) +c0106253: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) +c0106257: 75 26 jne c010627f + { + swap_init_ok = 1; +c0106259: c7 05 a4 60 12 c0 01 movl $0x1,0xc01260a4 +c0106260: 00 00 00 + cprintf("SWAP: manager = %s\n", sm->name); +c0106263: a1 60 61 12 c0 mov 0xc0126160,%eax +c0106268: 8b 00 mov (%eax),%eax +c010626a: 89 44 24 04 mov %eax,0x4(%esp) +c010626e: c7 04 24 23 a1 10 c0 movl $0xc010a123,(%esp) +c0106275: e8 fb a0 ff ff call c0100375 + check_swap(); +c010627a: e8 b0 04 00 00 call c010672f + } + + return r; +c010627f: 8b 45 f4 mov -0xc(%ebp),%eax +} +c0106282: 89 ec mov %ebp,%esp +c0106284: 5d pop %ebp +c0106285: c3 ret + +c0106286 : + +int +swap_init_mm(struct mm_struct *mm) +{ +c0106286: 55 push %ebp +c0106287: 89 e5 mov %esp,%ebp +c0106289: 83 ec 18 sub $0x18,%esp + return sm->init_mm(mm); +c010628c: a1 60 61 12 c0 mov 0xc0126160,%eax +c0106291: 8b 40 08 mov 0x8(%eax),%eax +c0106294: 8b 55 08 mov 0x8(%ebp),%edx +c0106297: 89 14 24 mov %edx,(%esp) +c010629a: ff d0 call *%eax +} +c010629c: 89 ec mov %ebp,%esp +c010629e: 5d pop %ebp +c010629f: c3 ret + +c01062a0 : + +int +swap_tick_event(struct mm_struct *mm) +{ +c01062a0: 55 push %ebp +c01062a1: 89 e5 mov %esp,%ebp +c01062a3: 83 ec 18 sub $0x18,%esp + return sm->tick_event(mm); +c01062a6: a1 60 61 12 c0 mov 0xc0126160,%eax +c01062ab: 8b 40 0c mov 0xc(%eax),%eax +c01062ae: 8b 55 08 mov 0x8(%ebp),%edx +c01062b1: 89 14 24 mov %edx,(%esp) +c01062b4: ff d0 call *%eax +} +c01062b6: 89 ec mov %ebp,%esp +c01062b8: 5d pop %ebp +c01062b9: c3 ret + +c01062ba : + +int +swap_map_swappable(struct mm_struct *mm, uintptr_t addr, struct Page *page, int swap_in) +{ +c01062ba: 55 push %ebp +c01062bb: 89 e5 mov %esp,%ebp +c01062bd: 83 ec 18 sub $0x18,%esp + return sm->map_swappable(mm, addr, page, swap_in); +c01062c0: a1 60 61 12 c0 mov 0xc0126160,%eax +c01062c5: 8b 40 10 mov 0x10(%eax),%eax +c01062c8: 8b 55 14 mov 0x14(%ebp),%edx +c01062cb: 89 54 24 0c mov %edx,0xc(%esp) +c01062cf: 8b 55 10 mov 0x10(%ebp),%edx +c01062d2: 89 54 24 08 mov %edx,0x8(%esp) +c01062d6: 8b 55 0c mov 0xc(%ebp),%edx +c01062d9: 89 54 24 04 mov %edx,0x4(%esp) +c01062dd: 8b 55 08 mov 0x8(%ebp),%edx +c01062e0: 89 14 24 mov %edx,(%esp) +c01062e3: ff d0 call *%eax +} +c01062e5: 89 ec mov %ebp,%esp +c01062e7: 5d pop %ebp +c01062e8: c3 ret + +c01062e9 : + +int +swap_set_unswappable(struct mm_struct *mm, uintptr_t addr) +{ +c01062e9: 55 push %ebp +c01062ea: 89 e5 mov %esp,%ebp +c01062ec: 83 ec 18 sub $0x18,%esp + return sm->set_unswappable(mm, addr); +c01062ef: a1 60 61 12 c0 mov 0xc0126160,%eax +c01062f4: 8b 40 14 mov 0x14(%eax),%eax +c01062f7: 8b 55 0c mov 0xc(%ebp),%edx +c01062fa: 89 54 24 04 mov %edx,0x4(%esp) +c01062fe: 8b 55 08 mov 0x8(%ebp),%edx +c0106301: 89 14 24 mov %edx,(%esp) +c0106304: ff d0 call *%eax +} +c0106306: 89 ec mov %ebp,%esp +c0106308: 5d pop %ebp +c0106309: c3 ret + +c010630a : + +volatile unsigned int swap_out_num=0; + +int +swap_out(struct mm_struct *mm, int n, int in_tick) +{ +c010630a: 55 push %ebp +c010630b: 89 e5 mov %esp,%ebp +c010630d: 83 ec 38 sub $0x38,%esp + int i; + for (i = 0; i != n; ++ i) +c0106310: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) +c0106317: e9 53 01 00 00 jmp c010646f + { + uintptr_t v; + //struct Page **ptr_page=NULL; + struct Page *page; + // cprintf("i %d, SWAP: call swap_out_victim\n",i); + int r = sm->swap_out_victim(mm, &page, in_tick); +c010631c: a1 60 61 12 c0 mov 0xc0126160,%eax +c0106321: 8b 40 18 mov 0x18(%eax),%eax +c0106324: 8b 55 10 mov 0x10(%ebp),%edx +c0106327: 89 54 24 08 mov %edx,0x8(%esp) +c010632b: 8d 55 e4 lea -0x1c(%ebp),%edx +c010632e: 89 54 24 04 mov %edx,0x4(%esp) +c0106332: 8b 55 08 mov 0x8(%ebp),%edx +c0106335: 89 14 24 mov %edx,(%esp) +c0106338: ff d0 call *%eax +c010633a: 89 45 f0 mov %eax,-0x10(%ebp) + if (r != 0) { +c010633d: 83 7d f0 00 cmpl $0x0,-0x10(%ebp) +c0106341: 74 18 je c010635b + cprintf("i %d, swap_out: call swap_out_victim failed\n",i); +c0106343: 8b 45 f4 mov -0xc(%ebp),%eax +c0106346: 89 44 24 04 mov %eax,0x4(%esp) +c010634a: c7 04 24 38 a1 10 c0 movl $0xc010a138,(%esp) +c0106351: e8 1f a0 ff ff call c0100375 +c0106356: e9 20 01 00 00 jmp c010647b + } + //assert(!PageReserved(page)); + + //cprintf("SWAP: choose victim page 0x%08x\n", page); + + v=page->pra_vaddr; +c010635b: 8b 45 e4 mov -0x1c(%ebp),%eax +c010635e: 8b 40 1c mov 0x1c(%eax),%eax +c0106361: 89 45 ec mov %eax,-0x14(%ebp) + pte_t *ptep = get_pte(mm->pgdir, v, 0); +c0106364: 8b 45 08 mov 0x8(%ebp),%eax +c0106367: 8b 40 0c mov 0xc(%eax),%eax +c010636a: c7 44 24 08 00 00 00 movl $0x0,0x8(%esp) +c0106371: 00 +c0106372: 8b 55 ec mov -0x14(%ebp),%edx +c0106375: 89 54 24 04 mov %edx,0x4(%esp) +c0106379: 89 04 24 mov %eax,(%esp) +c010637c: e8 dc eb ff ff call c0104f5d +c0106381: 89 45 e8 mov %eax,-0x18(%ebp) + assert((*ptep & PTE_P) != 0); +c0106384: 8b 45 e8 mov -0x18(%ebp),%eax +c0106387: 8b 00 mov (%eax),%eax +c0106389: 83 e0 01 and $0x1,%eax +c010638c: 85 c0 test %eax,%eax +c010638e: 75 24 jne c01063b4 +c0106390: c7 44 24 0c 65 a1 10 movl $0xc010a165,0xc(%esp) +c0106397: c0 +c0106398: c7 44 24 08 7a a1 10 movl $0xc010a17a,0x8(%esp) +c010639f: c0 +c01063a0: c7 44 24 04 65 00 00 movl $0x65,0x4(%esp) +c01063a7: 00 +c01063a8: c7 04 24 14 a1 10 c0 movl $0xc010a114,(%esp) +c01063af: e8 8e a8 ff ff call c0100c42 <__panic> + + if (swapfs_write( (page->pra_vaddr/PGSIZE+1)<<8, page) != 0) { +c01063b4: 8b 45 e4 mov -0x1c(%ebp),%eax +c01063b7: 8b 55 e4 mov -0x1c(%ebp),%edx +c01063ba: 8b 52 1c mov 0x1c(%edx),%edx +c01063bd: c1 ea 0c shr $0xc,%edx +c01063c0: 42 inc %edx +c01063c1: c1 e2 08 shl $0x8,%edx +c01063c4: 89 44 24 04 mov %eax,0x4(%esp) +c01063c8: 89 14 24 mov %edx,(%esp) +c01063cb: e8 14 1d 00 00 call c01080e4 +c01063d0: 85 c0 test %eax,%eax +c01063d2: 74 34 je c0106408 + cprintf("SWAP: failed to save\n"); +c01063d4: c7 04 24 8f a1 10 c0 movl $0xc010a18f,(%esp) +c01063db: e8 95 9f ff ff call c0100375 + sm->map_swappable(mm, v, page, 0); +c01063e0: a1 60 61 12 c0 mov 0xc0126160,%eax +c01063e5: 8b 40 10 mov 0x10(%eax),%eax +c01063e8: 8b 55 e4 mov -0x1c(%ebp),%edx +c01063eb: c7 44 24 0c 00 00 00 movl $0x0,0xc(%esp) +c01063f2: 00 +c01063f3: 89 54 24 08 mov %edx,0x8(%esp) +c01063f7: 8b 55 ec mov -0x14(%ebp),%edx +c01063fa: 89 54 24 04 mov %edx,0x4(%esp) +c01063fe: 8b 55 08 mov 0x8(%ebp),%edx +c0106401: 89 14 24 mov %edx,(%esp) +c0106404: ff d0 call *%eax +c0106406: eb 64 jmp c010646c + continue; + } + else { + cprintf("swap_out: i %d, store page in vaddr 0x%x to disk swap entry %d\n", i, v, page->pra_vaddr/PGSIZE+1); +c0106408: 8b 45 e4 mov -0x1c(%ebp),%eax +c010640b: 8b 40 1c mov 0x1c(%eax),%eax +c010640e: c1 e8 0c shr $0xc,%eax +c0106411: 40 inc %eax +c0106412: 89 44 24 0c mov %eax,0xc(%esp) +c0106416: 8b 45 ec mov -0x14(%ebp),%eax +c0106419: 89 44 24 08 mov %eax,0x8(%esp) +c010641d: 8b 45 f4 mov -0xc(%ebp),%eax +c0106420: 89 44 24 04 mov %eax,0x4(%esp) +c0106424: c7 04 24 a8 a1 10 c0 movl $0xc010a1a8,(%esp) +c010642b: e8 45 9f ff ff call c0100375 + *ptep = (page->pra_vaddr/PGSIZE+1)<<8; +c0106430: 8b 45 e4 mov -0x1c(%ebp),%eax +c0106433: 8b 40 1c mov 0x1c(%eax),%eax +c0106436: c1 e8 0c shr $0xc,%eax +c0106439: 40 inc %eax +c010643a: c1 e0 08 shl $0x8,%eax +c010643d: 89 c2 mov %eax,%edx +c010643f: 8b 45 e8 mov -0x18(%ebp),%eax +c0106442: 89 10 mov %edx,(%eax) + free_page(page); +c0106444: 8b 45 e4 mov -0x1c(%ebp),%eax +c0106447: c7 44 24 04 01 00 00 movl $0x1,0x4(%esp) +c010644e: 00 +c010644f: 89 04 24 mov %eax,(%esp) +c0106452: e8 bd e4 ff ff call c0104914 + } + + tlb_invalidate(mm->pgdir, v); +c0106457: 8b 45 08 mov 0x8(%ebp),%eax +c010645a: 8b 40 0c mov 0xc(%eax),%eax +c010645d: 8b 55 ec mov -0x14(%ebp),%edx +c0106460: 89 54 24 04 mov %edx,0x4(%esp) +c0106464: 89 04 24 mov %eax,(%esp) +c0106467: e8 ed ed ff ff call c0105259 + for (i = 0; i != n; ++ i) +c010646c: ff 45 f4 incl -0xc(%ebp) +c010646f: 8b 45 f4 mov -0xc(%ebp),%eax +c0106472: 3b 45 0c cmp 0xc(%ebp),%eax +c0106475: 0f 85 a1 fe ff ff jne c010631c + } + return i; +c010647b: 8b 45 f4 mov -0xc(%ebp),%eax +} +c010647e: 89 ec mov %ebp,%esp +c0106480: 5d pop %ebp +c0106481: c3 ret + +c0106482 : + +//实现一个页交换功能。 +int +swap_in(struct mm_struct *mm, uintptr_t addr, struct Page **ptr_result) +{ +c0106482: 55 push %ebp +c0106483: 89 e5 mov %esp,%ebp +c0106485: 83 ec 28 sub $0x28,%esp + //分配一个新的页面result + struct Page *result = alloc_page(); +c0106488: c7 04 24 01 00 00 00 movl $0x1,(%esp) +c010648f: e8 13 e4 ff ff call c01048a7 +c0106494: 89 45 f4 mov %eax,-0xc(%ebp) + assert(result!=NULL); +c0106497: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) +c010649b: 75 24 jne c01064c1 +c010649d: c7 44 24 0c e8 a1 10 movl $0xc010a1e8,0xc(%esp) +c01064a4: c0 +c01064a5: c7 44 24 08 7a a1 10 movl $0xc010a17a,0x8(%esp) +c01064ac: c0 +c01064ad: c7 44 24 04 7d 00 00 movl $0x7d,0x4(%esp) +c01064b4: 00 +c01064b5: c7 04 24 14 a1 10 c0 movl $0xc010a114,(%esp) +c01064bc: e8 81 a7 ff ff call c0100c42 <__panic> + //获取虚拟地址 addr 对应的页表项指针 ptep + pte_t *ptep = get_pte(mm->pgdir, addr, 0); +c01064c1: 8b 45 08 mov 0x8(%ebp),%eax +c01064c4: 8b 40 0c mov 0xc(%eax),%eax +c01064c7: c7 44 24 08 00 00 00 movl $0x0,0x8(%esp) +c01064ce: 00 +c01064cf: 8b 55 0c mov 0xc(%ebp),%edx +c01064d2: 89 54 24 04 mov %edx,0x4(%esp) +c01064d6: 89 04 24 mov %eax,(%esp) +c01064d9: e8 7f ea ff ff call c0104f5d +c01064de: 89 45 f0 mov %eax,-0x10(%ebp) + // cprintf("SWAP: load ptep %x swap entry %d to vaddr 0x%08x, page %x, No %d\n", ptep, (*ptep)>>8, addr, result, (result-pages)); + + int r; + //从交换文件中读取数据到新分配的页面 result 中 + if ((r = swapfs_read((*ptep), result)) != 0) +c01064e1: 8b 45 f0 mov -0x10(%ebp),%eax +c01064e4: 8b 00 mov (%eax),%eax +c01064e6: 8b 55 f4 mov -0xc(%ebp),%edx +c01064e9: 89 54 24 04 mov %edx,0x4(%esp) +c01064ed: 89 04 24 mov %eax,(%esp) +c01064f0: e8 7b 1b 00 00 call c0108070 +c01064f5: 89 45 ec mov %eax,-0x14(%ebp) +c01064f8: 83 7d ec 00 cmpl $0x0,-0x14(%ebp) +c01064fc: 74 2a je c0106528 + { + assert(r!=0); +c01064fe: 83 7d ec 00 cmpl $0x0,-0x14(%ebp) +c0106502: 75 24 jne c0106528 +c0106504: c7 44 24 0c f5 a1 10 movl $0xc010a1f5,0xc(%esp) +c010650b: c0 +c010650c: c7 44 24 08 7a a1 10 movl $0xc010a17a,0x8(%esp) +c0106513: c0 +c0106514: c7 44 24 04 86 00 00 movl $0x86,0x4(%esp) +c010651b: 00 +c010651c: c7 04 24 14 a1 10 c0 movl $0xc010a114,(%esp) +c0106523: e8 1a a7 ff ff call c0100c42 <__panic> + } + cprintf("swap_in: load disk swap entry %d with swap_page in vadr 0x%x\n", (*ptep)>>8, addr); +c0106528: 8b 45 f0 mov -0x10(%ebp),%eax +c010652b: 8b 00 mov (%eax),%eax +c010652d: c1 e8 08 shr $0x8,%eax +c0106530: 89 c2 mov %eax,%edx +c0106532: 8b 45 0c mov 0xc(%ebp),%eax +c0106535: 89 44 24 08 mov %eax,0x8(%esp) +c0106539: 89 54 24 04 mov %edx,0x4(%esp) +c010653d: c7 04 24 fc a1 10 c0 movl $0xc010a1fc,(%esp) +c0106544: e8 2c 9e ff ff call c0100375 + *ptr_result=result; +c0106549: 8b 45 10 mov 0x10(%ebp),%eax +c010654c: 8b 55 f4 mov -0xc(%ebp),%edx +c010654f: 89 10 mov %edx,(%eax) + return 0; +c0106551: b8 00 00 00 00 mov $0x0,%eax +} +c0106556: 89 ec mov %ebp,%esp +c0106558: 5d pop %ebp +c0106559: c3 ret + +c010655a : + + + +static inline void +check_content_set(void) +{ +c010655a: 55 push %ebp +c010655b: 89 e5 mov %esp,%ebp +c010655d: 83 ec 18 sub $0x18,%esp + *(unsigned char *)0x1000 = 0x0a; +c0106560: b8 00 10 00 00 mov $0x1000,%eax +c0106565: c6 00 0a movb $0xa,(%eax) + assert(pgfault_num==1); +c0106568: a1 70 61 12 c0 mov 0xc0126170,%eax +c010656d: 83 f8 01 cmp $0x1,%eax +c0106570: 74 24 je c0106596 +c0106572: c7 44 24 0c 3a a2 10 movl $0xc010a23a,0xc(%esp) +c0106579: c0 +c010657a: c7 44 24 08 7a a1 10 movl $0xc010a17a,0x8(%esp) +c0106581: c0 +c0106582: c7 44 24 04 93 00 00 movl $0x93,0x4(%esp) +c0106589: 00 +c010658a: c7 04 24 14 a1 10 c0 movl $0xc010a114,(%esp) +c0106591: e8 ac a6 ff ff call c0100c42 <__panic> + *(unsigned char *)0x1010 = 0x0a; +c0106596: b8 10 10 00 00 mov $0x1010,%eax +c010659b: c6 00 0a movb $0xa,(%eax) + assert(pgfault_num==1); +c010659e: a1 70 61 12 c0 mov 0xc0126170,%eax +c01065a3: 83 f8 01 cmp $0x1,%eax +c01065a6: 74 24 je c01065cc +c01065a8: c7 44 24 0c 3a a2 10 movl $0xc010a23a,0xc(%esp) +c01065af: c0 +c01065b0: c7 44 24 08 7a a1 10 movl $0xc010a17a,0x8(%esp) +c01065b7: c0 +c01065b8: c7 44 24 04 95 00 00 movl $0x95,0x4(%esp) +c01065bf: 00 +c01065c0: c7 04 24 14 a1 10 c0 movl $0xc010a114,(%esp) +c01065c7: e8 76 a6 ff ff call c0100c42 <__panic> + *(unsigned char *)0x2000 = 0x0b; +c01065cc: b8 00 20 00 00 mov $0x2000,%eax +c01065d1: c6 00 0b movb $0xb,(%eax) + assert(pgfault_num==2); +c01065d4: a1 70 61 12 c0 mov 0xc0126170,%eax +c01065d9: 83 f8 02 cmp $0x2,%eax +c01065dc: 74 24 je c0106602 +c01065de: c7 44 24 0c 49 a2 10 movl $0xc010a249,0xc(%esp) +c01065e5: c0 +c01065e6: c7 44 24 08 7a a1 10 movl $0xc010a17a,0x8(%esp) +c01065ed: c0 +c01065ee: c7 44 24 04 97 00 00 movl $0x97,0x4(%esp) +c01065f5: 00 +c01065f6: c7 04 24 14 a1 10 c0 movl $0xc010a114,(%esp) +c01065fd: e8 40 a6 ff ff call c0100c42 <__panic> + *(unsigned char *)0x2010 = 0x0b; +c0106602: b8 10 20 00 00 mov $0x2010,%eax +c0106607: c6 00 0b movb $0xb,(%eax) + assert(pgfault_num==2); +c010660a: a1 70 61 12 c0 mov 0xc0126170,%eax +c010660f: 83 f8 02 cmp $0x2,%eax +c0106612: 74 24 je c0106638 +c0106614: c7 44 24 0c 49 a2 10 movl $0xc010a249,0xc(%esp) +c010661b: c0 +c010661c: c7 44 24 08 7a a1 10 movl $0xc010a17a,0x8(%esp) +c0106623: c0 +c0106624: c7 44 24 04 99 00 00 movl $0x99,0x4(%esp) +c010662b: 00 +c010662c: c7 04 24 14 a1 10 c0 movl $0xc010a114,(%esp) +c0106633: e8 0a a6 ff ff call c0100c42 <__panic> + *(unsigned char *)0x3000 = 0x0c; +c0106638: b8 00 30 00 00 mov $0x3000,%eax +c010663d: c6 00 0c movb $0xc,(%eax) + assert(pgfault_num==3); +c0106640: a1 70 61 12 c0 mov 0xc0126170,%eax +c0106645: 83 f8 03 cmp $0x3,%eax +c0106648: 74 24 je c010666e +c010664a: c7 44 24 0c 58 a2 10 movl $0xc010a258,0xc(%esp) +c0106651: c0 +c0106652: c7 44 24 08 7a a1 10 movl $0xc010a17a,0x8(%esp) +c0106659: c0 +c010665a: c7 44 24 04 9b 00 00 movl $0x9b,0x4(%esp) +c0106661: 00 +c0106662: c7 04 24 14 a1 10 c0 movl $0xc010a114,(%esp) +c0106669: e8 d4 a5 ff ff call c0100c42 <__panic> + *(unsigned char *)0x3010 = 0x0c; +c010666e: b8 10 30 00 00 mov $0x3010,%eax +c0106673: c6 00 0c movb $0xc,(%eax) + assert(pgfault_num==3); +c0106676: a1 70 61 12 c0 mov 0xc0126170,%eax +c010667b: 83 f8 03 cmp $0x3,%eax +c010667e: 74 24 je c01066a4 +c0106680: c7 44 24 0c 58 a2 10 movl $0xc010a258,0xc(%esp) +c0106687: c0 +c0106688: c7 44 24 08 7a a1 10 movl $0xc010a17a,0x8(%esp) +c010668f: c0 +c0106690: c7 44 24 04 9d 00 00 movl $0x9d,0x4(%esp) +c0106697: 00 +c0106698: c7 04 24 14 a1 10 c0 movl $0xc010a114,(%esp) +c010669f: e8 9e a5 ff ff call c0100c42 <__panic> + *(unsigned char *)0x4000 = 0x0d; +c01066a4: b8 00 40 00 00 mov $0x4000,%eax +c01066a9: c6 00 0d movb $0xd,(%eax) + assert(pgfault_num==4); +c01066ac: a1 70 61 12 c0 mov 0xc0126170,%eax +c01066b1: 83 f8 04 cmp $0x4,%eax +c01066b4: 74 24 je c01066da +c01066b6: c7 44 24 0c 67 a2 10 movl $0xc010a267,0xc(%esp) +c01066bd: c0 +c01066be: c7 44 24 08 7a a1 10 movl $0xc010a17a,0x8(%esp) +c01066c5: c0 +c01066c6: c7 44 24 04 9f 00 00 movl $0x9f,0x4(%esp) +c01066cd: 00 +c01066ce: c7 04 24 14 a1 10 c0 movl $0xc010a114,(%esp) +c01066d5: e8 68 a5 ff ff call c0100c42 <__panic> + *(unsigned char *)0x4010 = 0x0d; +c01066da: b8 10 40 00 00 mov $0x4010,%eax +c01066df: c6 00 0d movb $0xd,(%eax) + assert(pgfault_num==4); +c01066e2: a1 70 61 12 c0 mov 0xc0126170,%eax +c01066e7: 83 f8 04 cmp $0x4,%eax +c01066ea: 74 24 je c0106710 +c01066ec: c7 44 24 0c 67 a2 10 movl $0xc010a267,0xc(%esp) +c01066f3: c0 +c01066f4: c7 44 24 08 7a a1 10 movl $0xc010a17a,0x8(%esp) +c01066fb: c0 +c01066fc: c7 44 24 04 a1 00 00 movl $0xa1,0x4(%esp) +c0106703: 00 +c0106704: c7 04 24 14 a1 10 c0 movl $0xc010a114,(%esp) +c010670b: e8 32 a5 ff ff call c0100c42 <__panic> +} +c0106710: 90 nop +c0106711: 89 ec mov %ebp,%esp +c0106713: 5d pop %ebp +c0106714: c3 ret + +c0106715 : + +static inline int +check_content_access(void) +{ +c0106715: 55 push %ebp +c0106716: 89 e5 mov %esp,%ebp +c0106718: 83 ec 18 sub $0x18,%esp + int ret = sm->check_swap(); +c010671b: a1 60 61 12 c0 mov 0xc0126160,%eax +c0106720: 8b 40 1c mov 0x1c(%eax),%eax +c0106723: ff d0 call *%eax +c0106725: 89 45 f4 mov %eax,-0xc(%ebp) + return ret; +c0106728: 8b 45 f4 mov -0xc(%ebp),%eax +} +c010672b: 89 ec mov %ebp,%esp +c010672d: 5d pop %ebp +c010672e: c3 ret + +c010672f : +#define free_list (free_area.free_list) +#define nr_free (free_area.nr_free) + +static void +check_swap(void) +{ +c010672f: 55 push %ebp +c0106730: 89 e5 mov %esp,%ebp +c0106732: 83 ec 78 sub $0x78,%esp + //backup mem env + int ret, count = 0, total = 0, i; +c0106735: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) +c010673c: c7 45 f0 00 00 00 00 movl $0x0,-0x10(%ebp) + list_entry_t *le = &free_list; +c0106743: c7 45 e8 e4 5f 12 c0 movl $0xc0125fe4,-0x18(%ebp) + while ((le = list_next(le)) != &free_list) { +c010674a: eb 6a jmp c01067b6 + struct Page *p = le2page(le, page_link); +c010674c: 8b 45 e8 mov -0x18(%ebp),%eax +c010674f: 83 e8 0c sub $0xc,%eax +c0106752: 89 45 c8 mov %eax,-0x38(%ebp) + assert(PageProperty(p)); +c0106755: 8b 45 c8 mov -0x38(%ebp),%eax +c0106758: 83 c0 04 add $0x4,%eax +c010675b: c7 45 c4 01 00 00 00 movl $0x1,-0x3c(%ebp) +c0106762: 89 45 c0 mov %eax,-0x40(%ebp) + asm volatile ("btl %2, %1; sbbl %0,%0" : "=r" (oldbit) : "m" (*(volatile long *)addr), "Ir" (nr)); +c0106765: 8b 45 c0 mov -0x40(%ebp),%eax +c0106768: 8b 55 c4 mov -0x3c(%ebp),%edx +c010676b: 0f a3 10 bt %edx,(%eax) +c010676e: 19 c0 sbb %eax,%eax +c0106770: 89 45 bc mov %eax,-0x44(%ebp) + return oldbit != 0; +c0106773: 83 7d bc 00 cmpl $0x0,-0x44(%ebp) +c0106777: 0f 95 c0 setne %al +c010677a: 0f b6 c0 movzbl %al,%eax +c010677d: 85 c0 test %eax,%eax +c010677f: 75 24 jne c01067a5 +c0106781: c7 44 24 0c 76 a2 10 movl $0xc010a276,0xc(%esp) +c0106788: c0 +c0106789: c7 44 24 08 7a a1 10 movl $0xc010a17a,0x8(%esp) +c0106790: c0 +c0106791: c7 44 24 04 bc 00 00 movl $0xbc,0x4(%esp) +c0106798: 00 +c0106799: c7 04 24 14 a1 10 c0 movl $0xc010a114,(%esp) +c01067a0: e8 9d a4 ff ff call c0100c42 <__panic> + count ++, total += p->property; +c01067a5: ff 45 f4 incl -0xc(%ebp) +c01067a8: 8b 45 c8 mov -0x38(%ebp),%eax +c01067ab: 8b 50 08 mov 0x8(%eax),%edx +c01067ae: 8b 45 f0 mov -0x10(%ebp),%eax +c01067b1: 01 d0 add %edx,%eax +c01067b3: 89 45 f0 mov %eax,-0x10(%ebp) +c01067b6: 8b 45 e8 mov -0x18(%ebp),%eax +c01067b9: 89 45 b8 mov %eax,-0x48(%ebp) +c01067bc: 8b 45 b8 mov -0x48(%ebp),%eax +c01067bf: 8b 40 04 mov 0x4(%eax),%eax + while ((le = list_next(le)) != &free_list) { +c01067c2: 89 45 e8 mov %eax,-0x18(%ebp) +c01067c5: 81 7d e8 e4 5f 12 c0 cmpl $0xc0125fe4,-0x18(%ebp) +c01067cc: 0f 85 7a ff ff ff jne c010674c + } + assert(total == nr_free_pages()); +c01067d2: e8 72 e1 ff ff call c0104949 +c01067d7: 8b 55 f0 mov -0x10(%ebp),%edx +c01067da: 39 d0 cmp %edx,%eax +c01067dc: 74 24 je c0106802 +c01067de: c7 44 24 0c 86 a2 10 movl $0xc010a286,0xc(%esp) +c01067e5: c0 +c01067e6: c7 44 24 08 7a a1 10 movl $0xc010a17a,0x8(%esp) +c01067ed: c0 +c01067ee: c7 44 24 04 bf 00 00 movl $0xbf,0x4(%esp) +c01067f5: 00 +c01067f6: c7 04 24 14 a1 10 c0 movl $0xc010a114,(%esp) +c01067fd: e8 40 a4 ff ff call c0100c42 <__panic> + cprintf("BEGIN check_swap: count %d, total %d\n",count,total); +c0106802: 8b 45 f0 mov -0x10(%ebp),%eax +c0106805: 89 44 24 08 mov %eax,0x8(%esp) +c0106809: 8b 45 f4 mov -0xc(%ebp),%eax +c010680c: 89 44 24 04 mov %eax,0x4(%esp) +c0106810: c7 04 24 a0 a2 10 c0 movl $0xc010a2a0,(%esp) +c0106817: e8 59 9b ff ff call c0100375 + + //now we set the phy pages env + struct mm_struct *mm = mm_create(); +c010681c: e8 31 0a 00 00 call c0107252 +c0106821: 89 45 e4 mov %eax,-0x1c(%ebp) + assert(mm != NULL); +c0106824: 83 7d e4 00 cmpl $0x0,-0x1c(%ebp) +c0106828: 75 24 jne c010684e +c010682a: c7 44 24 0c c6 a2 10 movl $0xc010a2c6,0xc(%esp) +c0106831: c0 +c0106832: c7 44 24 08 7a a1 10 movl $0xc010a17a,0x8(%esp) +c0106839: c0 +c010683a: c7 44 24 04 c4 00 00 movl $0xc4,0x4(%esp) +c0106841: 00 +c0106842: c7 04 24 14 a1 10 c0 movl $0xc010a114,(%esp) +c0106849: e8 f4 a3 ff ff call c0100c42 <__panic> + + extern struct mm_struct *check_mm_struct; + assert(check_mm_struct == NULL); +c010684e: a1 6c 61 12 c0 mov 0xc012616c,%eax +c0106853: 85 c0 test %eax,%eax +c0106855: 74 24 je c010687b +c0106857: c7 44 24 0c d1 a2 10 movl $0xc010a2d1,0xc(%esp) +c010685e: c0 +c010685f: c7 44 24 08 7a a1 10 movl $0xc010a17a,0x8(%esp) +c0106866: c0 +c0106867: c7 44 24 04 c7 00 00 movl $0xc7,0x4(%esp) +c010686e: 00 +c010686f: c7 04 24 14 a1 10 c0 movl $0xc010a114,(%esp) +c0106876: e8 c7 a3 ff ff call c0100c42 <__panic> + + check_mm_struct = mm; +c010687b: 8b 45 e4 mov -0x1c(%ebp),%eax +c010687e: a3 6c 61 12 c0 mov %eax,0xc012616c + + pde_t *pgdir = mm->pgdir = boot_pgdir; +c0106883: 8b 15 e0 29 12 c0 mov 0xc01229e0,%edx +c0106889: 8b 45 e4 mov -0x1c(%ebp),%eax +c010688c: 89 50 0c mov %edx,0xc(%eax) +c010688f: 8b 45 e4 mov -0x1c(%ebp),%eax +c0106892: 8b 40 0c mov 0xc(%eax),%eax +c0106895: 89 45 e0 mov %eax,-0x20(%ebp) + assert(pgdir[0] == 0); +c0106898: 8b 45 e0 mov -0x20(%ebp),%eax +c010689b: 8b 00 mov (%eax),%eax +c010689d: 85 c0 test %eax,%eax +c010689f: 74 24 je c01068c5 +c01068a1: c7 44 24 0c e9 a2 10 movl $0xc010a2e9,0xc(%esp) +c01068a8: c0 +c01068a9: c7 44 24 08 7a a1 10 movl $0xc010a17a,0x8(%esp) +c01068b0: c0 +c01068b1: c7 44 24 04 cc 00 00 movl $0xcc,0x4(%esp) +c01068b8: 00 +c01068b9: c7 04 24 14 a1 10 c0 movl $0xc010a114,(%esp) +c01068c0: e8 7d a3 ff ff call c0100c42 <__panic> + + struct vma_struct *vma = vma_create(BEING_CHECK_VALID_VADDR, CHECK_VALID_VADDR, VM_WRITE | VM_READ); +c01068c5: c7 44 24 08 03 00 00 movl $0x3,0x8(%esp) +c01068cc: 00 +c01068cd: c7 44 24 04 00 60 00 movl $0x6000,0x4(%esp) +c01068d4: 00 +c01068d5: c7 04 24 00 10 00 00 movl $0x1000,(%esp) +c01068dc: e8 ec 09 00 00 call c01072cd +c01068e1: 89 45 dc mov %eax,-0x24(%ebp) + assert(vma != NULL); +c01068e4: 83 7d dc 00 cmpl $0x0,-0x24(%ebp) +c01068e8: 75 24 jne c010690e +c01068ea: c7 44 24 0c f7 a2 10 movl $0xc010a2f7,0xc(%esp) +c01068f1: c0 +c01068f2: c7 44 24 08 7a a1 10 movl $0xc010a17a,0x8(%esp) +c01068f9: c0 +c01068fa: c7 44 24 04 cf 00 00 movl $0xcf,0x4(%esp) +c0106901: 00 +c0106902: c7 04 24 14 a1 10 c0 movl $0xc010a114,(%esp) +c0106909: e8 34 a3 ff ff call c0100c42 <__panic> + + insert_vma_struct(mm, vma); +c010690e: 8b 45 dc mov -0x24(%ebp),%eax +c0106911: 89 44 24 04 mov %eax,0x4(%esp) +c0106915: 8b 45 e4 mov -0x1c(%ebp),%eax +c0106918: 89 04 24 mov %eax,(%esp) +c010691b: e8 44 0b 00 00 call c0107464 + + //setup the temp Page Table vaddr 0~4MB + cprintf("setup Page Table for vaddr 0X1000, so alloc a page\n"); +c0106920: c7 04 24 04 a3 10 c0 movl $0xc010a304,(%esp) +c0106927: e8 49 9a ff ff call c0100375 + pte_t *temp_ptep=NULL; +c010692c: c7 45 d8 00 00 00 00 movl $0x0,-0x28(%ebp) + temp_ptep = get_pte(mm->pgdir, BEING_CHECK_VALID_VADDR, 1); +c0106933: 8b 45 e4 mov -0x1c(%ebp),%eax +c0106936: 8b 40 0c mov 0xc(%eax),%eax +c0106939: c7 44 24 08 01 00 00 movl $0x1,0x8(%esp) +c0106940: 00 +c0106941: c7 44 24 04 00 10 00 movl $0x1000,0x4(%esp) +c0106948: 00 +c0106949: 89 04 24 mov %eax,(%esp) +c010694c: e8 0c e6 ff ff call c0104f5d +c0106951: 89 45 d8 mov %eax,-0x28(%ebp) + assert(temp_ptep!= NULL); +c0106954: 83 7d d8 00 cmpl $0x0,-0x28(%ebp) +c0106958: 75 24 jne c010697e +c010695a: c7 44 24 0c 38 a3 10 movl $0xc010a338,0xc(%esp) +c0106961: c0 +c0106962: c7 44 24 08 7a a1 10 movl $0xc010a17a,0x8(%esp) +c0106969: c0 +c010696a: c7 44 24 04 d7 00 00 movl $0xd7,0x4(%esp) +c0106971: 00 +c0106972: c7 04 24 14 a1 10 c0 movl $0xc010a114,(%esp) +c0106979: e8 c4 a2 ff ff call c0100c42 <__panic> + cprintf("setup Page Table vaddr 0~4MB OVER!\n"); +c010697e: c7 04 24 4c a3 10 c0 movl $0xc010a34c,(%esp) +c0106985: e8 eb 99 ff ff call c0100375 + + for (i=0;i + check_rp[i] = alloc_page(); +c0106996: c7 04 24 01 00 00 00 movl $0x1,(%esp) +c010699d: e8 05 df ff ff call c01048a7 +c01069a2: 8b 55 ec mov -0x14(%ebp),%edx +c01069a5: 89 04 95 2c 61 12 c0 mov %eax,-0x3fed9ed4(,%edx,4) + assert(check_rp[i] != NULL ); +c01069ac: 8b 45 ec mov -0x14(%ebp),%eax +c01069af: 8b 04 85 2c 61 12 c0 mov -0x3fed9ed4(,%eax,4),%eax +c01069b6: 85 c0 test %eax,%eax +c01069b8: 75 24 jne c01069de +c01069ba: c7 44 24 0c 70 a3 10 movl $0xc010a370,0xc(%esp) +c01069c1: c0 +c01069c2: c7 44 24 08 7a a1 10 movl $0xc010a17a,0x8(%esp) +c01069c9: c0 +c01069ca: c7 44 24 04 dc 00 00 movl $0xdc,0x4(%esp) +c01069d1: 00 +c01069d2: c7 04 24 14 a1 10 c0 movl $0xc010a114,(%esp) +c01069d9: e8 64 a2 ff ff call c0100c42 <__panic> + assert(!PageProperty(check_rp[i])); +c01069de: 8b 45 ec mov -0x14(%ebp),%eax +c01069e1: 8b 04 85 2c 61 12 c0 mov -0x3fed9ed4(,%eax,4),%eax +c01069e8: 83 c0 04 add $0x4,%eax +c01069eb: c7 45 b4 01 00 00 00 movl $0x1,-0x4c(%ebp) +c01069f2: 89 45 b0 mov %eax,-0x50(%ebp) + asm volatile ("btl %2, %1; sbbl %0,%0" : "=r" (oldbit) : "m" (*(volatile long *)addr), "Ir" (nr)); +c01069f5: 8b 45 b0 mov -0x50(%ebp),%eax +c01069f8: 8b 55 b4 mov -0x4c(%ebp),%edx +c01069fb: 0f a3 10 bt %edx,(%eax) +c01069fe: 19 c0 sbb %eax,%eax +c0106a00: 89 45 ac mov %eax,-0x54(%ebp) + return oldbit != 0; +c0106a03: 83 7d ac 00 cmpl $0x0,-0x54(%ebp) +c0106a07: 0f 95 c0 setne %al +c0106a0a: 0f b6 c0 movzbl %al,%eax +c0106a0d: 85 c0 test %eax,%eax +c0106a0f: 74 24 je c0106a35 +c0106a11: c7 44 24 0c 84 a3 10 movl $0xc010a384,0xc(%esp) +c0106a18: c0 +c0106a19: c7 44 24 08 7a a1 10 movl $0xc010a17a,0x8(%esp) +c0106a20: c0 +c0106a21: c7 44 24 04 dd 00 00 movl $0xdd,0x4(%esp) +c0106a28: 00 +c0106a29: c7 04 24 14 a1 10 c0 movl $0xc010a114,(%esp) +c0106a30: e8 0d a2 ff ff call c0100c42 <__panic> + for (i=0;i + } + list_entry_t free_list_store = free_list; +c0106a42: a1 e4 5f 12 c0 mov 0xc0125fe4,%eax +c0106a47: 8b 15 e8 5f 12 c0 mov 0xc0125fe8,%edx +c0106a4d: 89 45 98 mov %eax,-0x68(%ebp) +c0106a50: 89 55 9c mov %edx,-0x64(%ebp) +c0106a53: c7 45 a4 e4 5f 12 c0 movl $0xc0125fe4,-0x5c(%ebp) + elm->prev = elm->next = elm; +c0106a5a: 8b 45 a4 mov -0x5c(%ebp),%eax +c0106a5d: 8b 55 a4 mov -0x5c(%ebp),%edx +c0106a60: 89 50 04 mov %edx,0x4(%eax) +c0106a63: 8b 45 a4 mov -0x5c(%ebp),%eax +c0106a66: 8b 50 04 mov 0x4(%eax),%edx +c0106a69: 8b 45 a4 mov -0x5c(%ebp),%eax +c0106a6c: 89 10 mov %edx,(%eax) +} +c0106a6e: 90 nop +c0106a6f: c7 45 a8 e4 5f 12 c0 movl $0xc0125fe4,-0x58(%ebp) + return list->next == list; +c0106a76: 8b 45 a8 mov -0x58(%ebp),%eax +c0106a79: 8b 40 04 mov 0x4(%eax),%eax +c0106a7c: 39 45 a8 cmp %eax,-0x58(%ebp) +c0106a7f: 0f 94 c0 sete %al +c0106a82: 0f b6 c0 movzbl %al,%eax + list_init(&free_list); + assert(list_empty(&free_list)); +c0106a85: 85 c0 test %eax,%eax +c0106a87: 75 24 jne c0106aad +c0106a89: c7 44 24 0c 9f a3 10 movl $0xc010a39f,0xc(%esp) +c0106a90: c0 +c0106a91: c7 44 24 08 7a a1 10 movl $0xc010a17a,0x8(%esp) +c0106a98: c0 +c0106a99: c7 44 24 04 e1 00 00 movl $0xe1,0x4(%esp) +c0106aa0: 00 +c0106aa1: c7 04 24 14 a1 10 c0 movl $0xc010a114,(%esp) +c0106aa8: e8 95 a1 ff ff call c0100c42 <__panic> + + //assert(alloc_page() == NULL); + + unsigned int nr_free_store = nr_free; +c0106aad: a1 ec 5f 12 c0 mov 0xc0125fec,%eax +c0106ab2: 89 45 d4 mov %eax,-0x2c(%ebp) + nr_free = 0; +c0106ab5: c7 05 ec 5f 12 c0 00 movl $0x0,0xc0125fec +c0106abc: 00 00 00 + for (i=0;i + free_pages(check_rp[i],1); +c0106ac8: 8b 45 ec mov -0x14(%ebp),%eax +c0106acb: 8b 04 85 2c 61 12 c0 mov -0x3fed9ed4(,%eax,4),%eax +c0106ad2: c7 44 24 04 01 00 00 movl $0x1,0x4(%esp) +c0106ad9: 00 +c0106ada: 89 04 24 mov %eax,(%esp) +c0106add: e8 32 de ff ff call c0104914 + for (i=0;i + } + assert(nr_free==CHECK_VALID_PHY_PAGE_NUM); +c0106aeb: a1 ec 5f 12 c0 mov 0xc0125fec,%eax +c0106af0: 83 f8 04 cmp $0x4,%eax +c0106af3: 74 24 je c0106b19 +c0106af5: c7 44 24 0c b8 a3 10 movl $0xc010a3b8,0xc(%esp) +c0106afc: c0 +c0106afd: c7 44 24 08 7a a1 10 movl $0xc010a17a,0x8(%esp) +c0106b04: c0 +c0106b05: c7 44 24 04 ea 00 00 movl $0xea,0x4(%esp) +c0106b0c: 00 +c0106b0d: c7 04 24 14 a1 10 c0 movl $0xc010a114,(%esp) +c0106b14: e8 29 a1 ff ff call c0100c42 <__panic> + + cprintf("set up init env for check_swap begin!\n"); +c0106b19: c7 04 24 dc a3 10 c0 movl $0xc010a3dc,(%esp) +c0106b20: e8 50 98 ff ff call c0100375 + //setup initial vir_page<->phy_page environment for page relpacement algorithm + + + pgfault_num=0; +c0106b25: c7 05 70 61 12 c0 00 movl $0x0,0xc0126170 +c0106b2c: 00 00 00 + + check_content_set(); +c0106b2f: e8 26 fa ff ff call c010655a + assert( nr_free == 0); +c0106b34: a1 ec 5f 12 c0 mov 0xc0125fec,%eax +c0106b39: 85 c0 test %eax,%eax +c0106b3b: 74 24 je c0106b61 +c0106b3d: c7 44 24 0c 03 a4 10 movl $0xc010a403,0xc(%esp) +c0106b44: c0 +c0106b45: c7 44 24 08 7a a1 10 movl $0xc010a17a,0x8(%esp) +c0106b4c: c0 +c0106b4d: c7 44 24 04 f3 00 00 movl $0xf3,0x4(%esp) +c0106b54: 00 +c0106b55: c7 04 24 14 a1 10 c0 movl $0xc010a114,(%esp) +c0106b5c: e8 e1 a0 ff ff call c0100c42 <__panic> + for(i = 0; i + swap_out_seq_no[i]=swap_in_seq_no[i]=-1; +c0106b6a: 8b 45 ec mov -0x14(%ebp),%eax +c0106b6d: c7 04 85 c0 60 12 c0 movl $0xffffffff,-0x3fed9f40(,%eax,4) +c0106b74: ff ff ff ff +c0106b78: 8b 45 ec mov -0x14(%ebp),%eax +c0106b7b: 8b 14 85 c0 60 12 c0 mov -0x3fed9f40(,%eax,4),%edx +c0106b82: 8b 45 ec mov -0x14(%ebp),%eax +c0106b85: 89 14 85 00 61 12 c0 mov %edx,-0x3fed9f00(,%eax,4) + for(i = 0; i + + for (i= 0;i + check_ptep[i]=0; +c0106ba1: 8b 45 ec mov -0x14(%ebp),%eax +c0106ba4: c7 04 85 3c 61 12 c0 movl $0x0,-0x3fed9ec4(,%eax,4) +c0106bab: 00 00 00 00 + check_ptep[i] = get_pte(pgdir, (i+1)*0x1000, 0); +c0106baf: 8b 45 ec mov -0x14(%ebp),%eax +c0106bb2: 40 inc %eax +c0106bb3: c1 e0 0c shl $0xc,%eax +c0106bb6: c7 44 24 08 00 00 00 movl $0x0,0x8(%esp) +c0106bbd: 00 +c0106bbe: 89 44 24 04 mov %eax,0x4(%esp) +c0106bc2: 8b 45 e0 mov -0x20(%ebp),%eax +c0106bc5: 89 04 24 mov %eax,(%esp) +c0106bc8: e8 90 e3 ff ff call c0104f5d +c0106bcd: 8b 55 ec mov -0x14(%ebp),%edx +c0106bd0: 89 04 95 3c 61 12 c0 mov %eax,-0x3fed9ec4(,%edx,4) + //cprintf("i %d, check_ptep addr %x, value %x\n", i, check_ptep[i], *check_ptep[i]); + assert(check_ptep[i] != NULL); +c0106bd7: 8b 45 ec mov -0x14(%ebp),%eax +c0106bda: 8b 04 85 3c 61 12 c0 mov -0x3fed9ec4(,%eax,4),%eax +c0106be1: 85 c0 test %eax,%eax +c0106be3: 75 24 jne c0106c09 +c0106be5: c7 44 24 0c 10 a4 10 movl $0xc010a410,0xc(%esp) +c0106bec: c0 +c0106bed: c7 44 24 08 7a a1 10 movl $0xc010a17a,0x8(%esp) +c0106bf4: c0 +c0106bf5: c7 44 24 04 fb 00 00 movl $0xfb,0x4(%esp) +c0106bfc: 00 +c0106bfd: c7 04 24 14 a1 10 c0 movl $0xc010a114,(%esp) +c0106c04: e8 39 a0 ff ff call c0100c42 <__panic> + assert(pte2page(*check_ptep[i]) == check_rp[i]); +c0106c09: 8b 45 ec mov -0x14(%ebp),%eax +c0106c0c: 8b 04 85 3c 61 12 c0 mov -0x3fed9ec4(,%eax,4),%eax +c0106c13: 8b 00 mov (%eax),%eax +c0106c15: 89 04 24 mov %eax,(%esp) +c0106c18: e8 97 f5 ff ff call c01061b4 +c0106c1d: 8b 55 ec mov -0x14(%ebp),%edx +c0106c20: 8b 14 95 2c 61 12 c0 mov -0x3fed9ed4(,%edx,4),%edx +c0106c27: 39 d0 cmp %edx,%eax +c0106c29: 74 24 je c0106c4f +c0106c2b: c7 44 24 0c 28 a4 10 movl $0xc010a428,0xc(%esp) +c0106c32: c0 +c0106c33: c7 44 24 08 7a a1 10 movl $0xc010a17a,0x8(%esp) +c0106c3a: c0 +c0106c3b: c7 44 24 04 fc 00 00 movl $0xfc,0x4(%esp) +c0106c42: 00 +c0106c43: c7 04 24 14 a1 10 c0 movl $0xc010a114,(%esp) +c0106c4a: e8 f3 9f ff ff call c0100c42 <__panic> + assert((*check_ptep[i] & PTE_P)); +c0106c4f: 8b 45 ec mov -0x14(%ebp),%eax +c0106c52: 8b 04 85 3c 61 12 c0 mov -0x3fed9ec4(,%eax,4),%eax +c0106c59: 8b 00 mov (%eax),%eax +c0106c5b: 83 e0 01 and $0x1,%eax +c0106c5e: 85 c0 test %eax,%eax +c0106c60: 75 24 jne c0106c86 +c0106c62: c7 44 24 0c 50 a4 10 movl $0xc010a450,0xc(%esp) +c0106c69: c0 +c0106c6a: c7 44 24 08 7a a1 10 movl $0xc010a17a,0x8(%esp) +c0106c71: c0 +c0106c72: c7 44 24 04 fd 00 00 movl $0xfd,0x4(%esp) +c0106c79: 00 +c0106c7a: c7 04 24 14 a1 10 c0 movl $0xc010a114,(%esp) +c0106c81: e8 bc 9f ff ff call c0100c42 <__panic> + for (i= 0;i + } + cprintf("set up init env for check_swap over!\n"); +c0106c93: c7 04 24 6c a4 10 c0 movl $0xc010a46c,(%esp) +c0106c9a: e8 d6 96 ff ff call c0100375 + // now access the virt pages to test page relpacement algorithm + ret=check_content_access(); +c0106c9f: e8 71 fa ff ff call c0106715 +c0106ca4: 89 45 d0 mov %eax,-0x30(%ebp) + assert(ret==0); +c0106ca7: 83 7d d0 00 cmpl $0x0,-0x30(%ebp) +c0106cab: 74 24 je c0106cd1 +c0106cad: c7 44 24 0c 92 a4 10 movl $0xc010a492,0xc(%esp) +c0106cb4: c0 +c0106cb5: c7 44 24 08 7a a1 10 movl $0xc010a17a,0x8(%esp) +c0106cbc: c0 +c0106cbd: c7 44 24 04 02 01 00 movl $0x102,0x4(%esp) +c0106cc4: 00 +c0106cc5: c7 04 24 14 a1 10 c0 movl $0xc010a114,(%esp) +c0106ccc: e8 71 9f ff ff call c0100c42 <__panic> + + //restore kernel mem env + for (i=0;i + free_pages(check_rp[i],1); +c0106cda: 8b 45 ec mov -0x14(%ebp),%eax +c0106cdd: 8b 04 85 2c 61 12 c0 mov -0x3fed9ed4(,%eax,4),%eax +c0106ce4: c7 44 24 04 01 00 00 movl $0x1,0x4(%esp) +c0106ceb: 00 +c0106cec: 89 04 24 mov %eax,(%esp) +c0106cef: e8 20 dc ff ff call c0104914 + for (i=0;i + } + + //free_page(pte2page(*temp_ptep)); + + mm_destroy(mm); +c0106cfd: 8b 45 e4 mov -0x1c(%ebp),%eax +c0106d00: 89 04 24 mov %eax,(%esp) +c0106d03: e8 92 08 00 00 call c010759a + + nr_free = nr_free_store; +c0106d08: 8b 45 d4 mov -0x2c(%ebp),%eax +c0106d0b: a3 ec 5f 12 c0 mov %eax,0xc0125fec + free_list = free_list_store; +c0106d10: 8b 45 98 mov -0x68(%ebp),%eax +c0106d13: 8b 55 9c mov -0x64(%ebp),%edx +c0106d16: a3 e4 5f 12 c0 mov %eax,0xc0125fe4 +c0106d1b: 89 15 e8 5f 12 c0 mov %edx,0xc0125fe8 + + + le = &free_list; +c0106d21: c7 45 e8 e4 5f 12 c0 movl $0xc0125fe4,-0x18(%ebp) + while ((le = list_next(le)) != &free_list) { +c0106d28: eb 1c jmp c0106d46 + struct Page *p = le2page(le, page_link); +c0106d2a: 8b 45 e8 mov -0x18(%ebp),%eax +c0106d2d: 83 e8 0c sub $0xc,%eax +c0106d30: 89 45 cc mov %eax,-0x34(%ebp) + count --, total -= p->property; +c0106d33: ff 4d f4 decl -0xc(%ebp) +c0106d36: 8b 55 f0 mov -0x10(%ebp),%edx +c0106d39: 8b 45 cc mov -0x34(%ebp),%eax +c0106d3c: 8b 48 08 mov 0x8(%eax),%ecx +c0106d3f: 89 d0 mov %edx,%eax +c0106d41: 29 c8 sub %ecx,%eax +c0106d43: 89 45 f0 mov %eax,-0x10(%ebp) +c0106d46: 8b 45 e8 mov -0x18(%ebp),%eax +c0106d49: 89 45 a0 mov %eax,-0x60(%ebp) + return listelm->next; +c0106d4c: 8b 45 a0 mov -0x60(%ebp),%eax +c0106d4f: 8b 40 04 mov 0x4(%eax),%eax + while ((le = list_next(le)) != &free_list) { +c0106d52: 89 45 e8 mov %eax,-0x18(%ebp) +c0106d55: 81 7d e8 e4 5f 12 c0 cmpl $0xc0125fe4,-0x18(%ebp) +c0106d5c: 75 cc jne c0106d2a + } + cprintf("count is %d, total is %d\n",count,total); +c0106d5e: 8b 45 f0 mov -0x10(%ebp),%eax +c0106d61: 89 44 24 08 mov %eax,0x8(%esp) +c0106d65: 8b 45 f4 mov -0xc(%ebp),%eax +c0106d68: 89 44 24 04 mov %eax,0x4(%esp) +c0106d6c: c7 04 24 99 a4 10 c0 movl $0xc010a499,(%esp) +c0106d73: e8 fd 95 ff ff call c0100375 + //assert(count == 0); + + cprintf("check_swap() succeeded!\n"); +c0106d78: c7 04 24 b3 a4 10 c0 movl $0xc010a4b3,(%esp) +c0106d7f: e8 f1 95 ff ff call c0100375 +} +c0106d84: 90 nop +c0106d85: 89 ec mov %ebp,%esp +c0106d87: 5d pop %ebp +c0106d88: c3 ret + +c0106d89 <_fifo_init_mm>: + * (2) _fifo_init_mm: init pra_list_head and let mm->sm_priv point to the addr of pra_list_head. + * Now, From the memory control struct mm_struct, we can access FIFO PRA + */ +static int +_fifo_init_mm(struct mm_struct *mm) +{ +c0106d89: 55 push %ebp +c0106d8a: 89 e5 mov %esp,%ebp +c0106d8c: 83 ec 10 sub $0x10,%esp +c0106d8f: c7 45 fc 64 61 12 c0 movl $0xc0126164,-0x4(%ebp) + elm->prev = elm->next = elm; +c0106d96: 8b 45 fc mov -0x4(%ebp),%eax +c0106d99: 8b 55 fc mov -0x4(%ebp),%edx +c0106d9c: 89 50 04 mov %edx,0x4(%eax) +c0106d9f: 8b 45 fc mov -0x4(%ebp),%eax +c0106da2: 8b 50 04 mov 0x4(%eax),%edx +c0106da5: 8b 45 fc mov -0x4(%ebp),%eax +c0106da8: 89 10 mov %edx,(%eax) +} +c0106daa: 90 nop + list_init(&pra_list_head); + mm->sm_priv = &pra_list_head; +c0106dab: 8b 45 08 mov 0x8(%ebp),%eax +c0106dae: c7 40 14 64 61 12 c0 movl $0xc0126164,0x14(%eax) + //cprintf(" mm->sm_priv %x in fifo_init_mm\n",mm->sm_priv); + return 0; +c0106db5: b8 00 00 00 00 mov $0x0,%eax +} +c0106dba: 89 ec mov %ebp,%esp +c0106dbc: 5d pop %ebp +c0106dbd: c3 ret + +c0106dbe <_fifo_map_swappable>: +/* + * (3)_fifo_map_swappable: According FIFO PRA, we should link the most recent arrival page at the back of pra_list_head qeueue + */ +static int +_fifo_map_swappable(struct mm_struct *mm, uintptr_t addr, struct Page *page, int swap_in) +{ +c0106dbe: 55 push %ebp +c0106dbf: 89 e5 mov %esp,%ebp +c0106dc1: 83 ec 28 sub $0x28,%esp + list_entry_t *head=(list_entry_t*) mm->sm_priv; +c0106dc4: 8b 45 08 mov 0x8(%ebp),%eax +c0106dc7: 8b 40 14 mov 0x14(%eax),%eax +c0106dca: 89 45 f4 mov %eax,-0xc(%ebp) + list_entry_t *entry=&(page->pra_page_link); +c0106dcd: 8b 45 10 mov 0x10(%ebp),%eax +c0106dd0: 83 c0 14 add $0x14,%eax +c0106dd3: 89 45 f0 mov %eax,-0x10(%ebp) + + assert(entry != NULL && head != NULL); +c0106dd6: 83 7d f0 00 cmpl $0x0,-0x10(%ebp) +c0106dda: 74 06 je c0106de2 <_fifo_map_swappable+0x24> +c0106ddc: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) +c0106de0: 75 24 jne c0106e06 <_fifo_map_swappable+0x48> +c0106de2: c7 44 24 0c cc a4 10 movl $0xc010a4cc,0xc(%esp) +c0106de9: c0 +c0106dea: c7 44 24 08 ea a4 10 movl $0xc010a4ea,0x8(%esp) +c0106df1: c0 +c0106df2: c7 44 24 04 32 00 00 movl $0x32,0x4(%esp) +c0106df9: 00 +c0106dfa: c7 04 24 ff a4 10 c0 movl $0xc010a4ff,(%esp) +c0106e01: e8 3c 9e ff ff call c0100c42 <__panic> + //record the page access situlation + /*LAB3 EXERCISE 2: YOUR CODE*/ + //(1)link the most recent arrival page at the back of the pra_list_head qeueue. + return 0; +c0106e06: b8 00 00 00 00 mov $0x0,%eax +} +c0106e0b: 89 ec mov %ebp,%esp +c0106e0d: 5d pop %ebp +c0106e0e: c3 ret + +c0106e0f <_fifo_swap_out_victim>: + * (4)_fifo_swap_out_victim: According FIFO PRA, we should unlink the earliest arrival page in front of pra_list_head qeueue, + * then assign the value of *ptr_page to the addr of this page. + */ +static int +_fifo_swap_out_victim(struct mm_struct *mm, struct Page ** ptr_page, int in_tick) +{ +c0106e0f: 55 push %ebp +c0106e10: 89 e5 mov %esp,%ebp +c0106e12: 83 ec 28 sub $0x28,%esp + list_entry_t *head=(list_entry_t*) mm->sm_priv; +c0106e15: 8b 45 08 mov 0x8(%ebp),%eax +c0106e18: 8b 40 14 mov 0x14(%eax),%eax +c0106e1b: 89 45 f4 mov %eax,-0xc(%ebp) + assert(head != NULL); +c0106e1e: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) +c0106e22: 75 24 jne c0106e48 <_fifo_swap_out_victim+0x39> +c0106e24: c7 44 24 0c 13 a5 10 movl $0xc010a513,0xc(%esp) +c0106e2b: c0 +c0106e2c: c7 44 24 08 ea a4 10 movl $0xc010a4ea,0x8(%esp) +c0106e33: c0 +c0106e34: c7 44 24 04 40 00 00 movl $0x40,0x4(%esp) +c0106e3b: 00 +c0106e3c: c7 04 24 ff a4 10 c0 movl $0xc010a4ff,(%esp) +c0106e43: e8 fa 9d ff ff call c0100c42 <__panic> + assert(in_tick==0); +c0106e48: 83 7d 10 00 cmpl $0x0,0x10(%ebp) +c0106e4c: 74 24 je c0106e72 <_fifo_swap_out_victim+0x63> +c0106e4e: c7 44 24 0c 20 a5 10 movl $0xc010a520,0xc(%esp) +c0106e55: c0 +c0106e56: c7 44 24 08 ea a4 10 movl $0xc010a4ea,0x8(%esp) +c0106e5d: c0 +c0106e5e: c7 44 24 04 41 00 00 movl $0x41,0x4(%esp) +c0106e65: 00 +c0106e66: c7 04 24 ff a4 10 c0 movl $0xc010a4ff,(%esp) +c0106e6d: e8 d0 9d ff ff call c0100c42 <__panic> + /* Select the victim */ + /*LAB3 EXERCISE 2: YOUR CODE*/ + //(1) unlink the earliest arrival page in front of pra_list_head qeueue + //(2) assign the value of *ptr_page to the addr of this page + return 0; +c0106e72: b8 00 00 00 00 mov $0x0,%eax +} +c0106e77: 89 ec mov %ebp,%esp +c0106e79: 5d pop %ebp +c0106e7a: c3 ret + +c0106e7b <_fifo_check_swap>: + +static int +_fifo_check_swap(void) { +c0106e7b: 55 push %ebp +c0106e7c: 89 e5 mov %esp,%ebp +c0106e7e: 83 ec 18 sub $0x18,%esp + cprintf("write Virt Page c in fifo_check_swap\n"); +c0106e81: c7 04 24 2c a5 10 c0 movl $0xc010a52c,(%esp) +c0106e88: e8 e8 94 ff ff call c0100375 + *(unsigned char *)0x3000 = 0x0c; +c0106e8d: b8 00 30 00 00 mov $0x3000,%eax +c0106e92: c6 00 0c movb $0xc,(%eax) + assert(pgfault_num==4); +c0106e95: a1 70 61 12 c0 mov 0xc0126170,%eax +c0106e9a: 83 f8 04 cmp $0x4,%eax +c0106e9d: 74 24 je c0106ec3 <_fifo_check_swap+0x48> +c0106e9f: c7 44 24 0c 52 a5 10 movl $0xc010a552,0xc(%esp) +c0106ea6: c0 +c0106ea7: c7 44 24 08 ea a4 10 movl $0xc010a4ea,0x8(%esp) +c0106eae: c0 +c0106eaf: c7 44 24 04 4d 00 00 movl $0x4d,0x4(%esp) +c0106eb6: 00 +c0106eb7: c7 04 24 ff a4 10 c0 movl $0xc010a4ff,(%esp) +c0106ebe: e8 7f 9d ff ff call c0100c42 <__panic> + cprintf("write Virt Page a in fifo_check_swap\n"); +c0106ec3: c7 04 24 64 a5 10 c0 movl $0xc010a564,(%esp) +c0106eca: e8 a6 94 ff ff call c0100375 + *(unsigned char *)0x1000 = 0x0a; +c0106ecf: b8 00 10 00 00 mov $0x1000,%eax +c0106ed4: c6 00 0a movb $0xa,(%eax) + assert(pgfault_num==4); +c0106ed7: a1 70 61 12 c0 mov 0xc0126170,%eax +c0106edc: 83 f8 04 cmp $0x4,%eax +c0106edf: 74 24 je c0106f05 <_fifo_check_swap+0x8a> +c0106ee1: c7 44 24 0c 52 a5 10 movl $0xc010a552,0xc(%esp) +c0106ee8: c0 +c0106ee9: c7 44 24 08 ea a4 10 movl $0xc010a4ea,0x8(%esp) +c0106ef0: c0 +c0106ef1: c7 44 24 04 50 00 00 movl $0x50,0x4(%esp) +c0106ef8: 00 +c0106ef9: c7 04 24 ff a4 10 c0 movl $0xc010a4ff,(%esp) +c0106f00: e8 3d 9d ff ff call c0100c42 <__panic> + cprintf("write Virt Page d in fifo_check_swap\n"); +c0106f05: c7 04 24 8c a5 10 c0 movl $0xc010a58c,(%esp) +c0106f0c: e8 64 94 ff ff call c0100375 + *(unsigned char *)0x4000 = 0x0d; +c0106f11: b8 00 40 00 00 mov $0x4000,%eax +c0106f16: c6 00 0d movb $0xd,(%eax) + assert(pgfault_num==4); +c0106f19: a1 70 61 12 c0 mov 0xc0126170,%eax +c0106f1e: 83 f8 04 cmp $0x4,%eax +c0106f21: 74 24 je c0106f47 <_fifo_check_swap+0xcc> +c0106f23: c7 44 24 0c 52 a5 10 movl $0xc010a552,0xc(%esp) +c0106f2a: c0 +c0106f2b: c7 44 24 08 ea a4 10 movl $0xc010a4ea,0x8(%esp) +c0106f32: c0 +c0106f33: c7 44 24 04 53 00 00 movl $0x53,0x4(%esp) +c0106f3a: 00 +c0106f3b: c7 04 24 ff a4 10 c0 movl $0xc010a4ff,(%esp) +c0106f42: e8 fb 9c ff ff call c0100c42 <__panic> + cprintf("write Virt Page b in fifo_check_swap\n"); +c0106f47: c7 04 24 b4 a5 10 c0 movl $0xc010a5b4,(%esp) +c0106f4e: e8 22 94 ff ff call c0100375 + *(unsigned char *)0x2000 = 0x0b; +c0106f53: b8 00 20 00 00 mov $0x2000,%eax +c0106f58: c6 00 0b movb $0xb,(%eax) + assert(pgfault_num==4); +c0106f5b: a1 70 61 12 c0 mov 0xc0126170,%eax +c0106f60: 83 f8 04 cmp $0x4,%eax +c0106f63: 74 24 je c0106f89 <_fifo_check_swap+0x10e> +c0106f65: c7 44 24 0c 52 a5 10 movl $0xc010a552,0xc(%esp) +c0106f6c: c0 +c0106f6d: c7 44 24 08 ea a4 10 movl $0xc010a4ea,0x8(%esp) +c0106f74: c0 +c0106f75: c7 44 24 04 56 00 00 movl $0x56,0x4(%esp) +c0106f7c: 00 +c0106f7d: c7 04 24 ff a4 10 c0 movl $0xc010a4ff,(%esp) +c0106f84: e8 b9 9c ff ff call c0100c42 <__panic> + cprintf("write Virt Page e in fifo_check_swap\n"); +c0106f89: c7 04 24 dc a5 10 c0 movl $0xc010a5dc,(%esp) +c0106f90: e8 e0 93 ff ff call c0100375 + *(unsigned char *)0x5000 = 0x0e; +c0106f95: b8 00 50 00 00 mov $0x5000,%eax +c0106f9a: c6 00 0e movb $0xe,(%eax) + assert(pgfault_num==5); +c0106f9d: a1 70 61 12 c0 mov 0xc0126170,%eax +c0106fa2: 83 f8 05 cmp $0x5,%eax +c0106fa5: 74 24 je c0106fcb <_fifo_check_swap+0x150> +c0106fa7: c7 44 24 0c 02 a6 10 movl $0xc010a602,0xc(%esp) +c0106fae: c0 +c0106faf: c7 44 24 08 ea a4 10 movl $0xc010a4ea,0x8(%esp) +c0106fb6: c0 +c0106fb7: c7 44 24 04 59 00 00 movl $0x59,0x4(%esp) +c0106fbe: 00 +c0106fbf: c7 04 24 ff a4 10 c0 movl $0xc010a4ff,(%esp) +c0106fc6: e8 77 9c ff ff call c0100c42 <__panic> + cprintf("write Virt Page b in fifo_check_swap\n"); +c0106fcb: c7 04 24 b4 a5 10 c0 movl $0xc010a5b4,(%esp) +c0106fd2: e8 9e 93 ff ff call c0100375 + *(unsigned char *)0x2000 = 0x0b; +c0106fd7: b8 00 20 00 00 mov $0x2000,%eax +c0106fdc: c6 00 0b movb $0xb,(%eax) + assert(pgfault_num==5); +c0106fdf: a1 70 61 12 c0 mov 0xc0126170,%eax +c0106fe4: 83 f8 05 cmp $0x5,%eax +c0106fe7: 74 24 je c010700d <_fifo_check_swap+0x192> +c0106fe9: c7 44 24 0c 02 a6 10 movl $0xc010a602,0xc(%esp) +c0106ff0: c0 +c0106ff1: c7 44 24 08 ea a4 10 movl $0xc010a4ea,0x8(%esp) +c0106ff8: c0 +c0106ff9: c7 44 24 04 5c 00 00 movl $0x5c,0x4(%esp) +c0107000: 00 +c0107001: c7 04 24 ff a4 10 c0 movl $0xc010a4ff,(%esp) +c0107008: e8 35 9c ff ff call c0100c42 <__panic> + cprintf("write Virt Page a in fifo_check_swap\n"); +c010700d: c7 04 24 64 a5 10 c0 movl $0xc010a564,(%esp) +c0107014: e8 5c 93 ff ff call c0100375 + *(unsigned char *)0x1000 = 0x0a; +c0107019: b8 00 10 00 00 mov $0x1000,%eax +c010701e: c6 00 0a movb $0xa,(%eax) + assert(pgfault_num==6); +c0107021: a1 70 61 12 c0 mov 0xc0126170,%eax +c0107026: 83 f8 06 cmp $0x6,%eax +c0107029: 74 24 je c010704f <_fifo_check_swap+0x1d4> +c010702b: c7 44 24 0c 11 a6 10 movl $0xc010a611,0xc(%esp) +c0107032: c0 +c0107033: c7 44 24 08 ea a4 10 movl $0xc010a4ea,0x8(%esp) +c010703a: c0 +c010703b: c7 44 24 04 5f 00 00 movl $0x5f,0x4(%esp) +c0107042: 00 +c0107043: c7 04 24 ff a4 10 c0 movl $0xc010a4ff,(%esp) +c010704a: e8 f3 9b ff ff call c0100c42 <__panic> + cprintf("write Virt Page b in fifo_check_swap\n"); +c010704f: c7 04 24 b4 a5 10 c0 movl $0xc010a5b4,(%esp) +c0107056: e8 1a 93 ff ff call c0100375 + *(unsigned char *)0x2000 = 0x0b; +c010705b: b8 00 20 00 00 mov $0x2000,%eax +c0107060: c6 00 0b movb $0xb,(%eax) + assert(pgfault_num==7); +c0107063: a1 70 61 12 c0 mov 0xc0126170,%eax +c0107068: 83 f8 07 cmp $0x7,%eax +c010706b: 74 24 je c0107091 <_fifo_check_swap+0x216> +c010706d: c7 44 24 0c 20 a6 10 movl $0xc010a620,0xc(%esp) +c0107074: c0 +c0107075: c7 44 24 08 ea a4 10 movl $0xc010a4ea,0x8(%esp) +c010707c: c0 +c010707d: c7 44 24 04 62 00 00 movl $0x62,0x4(%esp) +c0107084: 00 +c0107085: c7 04 24 ff a4 10 c0 movl $0xc010a4ff,(%esp) +c010708c: e8 b1 9b ff ff call c0100c42 <__panic> + cprintf("write Virt Page c in fifo_check_swap\n"); +c0107091: c7 04 24 2c a5 10 c0 movl $0xc010a52c,(%esp) +c0107098: e8 d8 92 ff ff call c0100375 + *(unsigned char *)0x3000 = 0x0c; +c010709d: b8 00 30 00 00 mov $0x3000,%eax +c01070a2: c6 00 0c movb $0xc,(%eax) + assert(pgfault_num==8); +c01070a5: a1 70 61 12 c0 mov 0xc0126170,%eax +c01070aa: 83 f8 08 cmp $0x8,%eax +c01070ad: 74 24 je c01070d3 <_fifo_check_swap+0x258> +c01070af: c7 44 24 0c 2f a6 10 movl $0xc010a62f,0xc(%esp) +c01070b6: c0 +c01070b7: c7 44 24 08 ea a4 10 movl $0xc010a4ea,0x8(%esp) +c01070be: c0 +c01070bf: c7 44 24 04 65 00 00 movl $0x65,0x4(%esp) +c01070c6: 00 +c01070c7: c7 04 24 ff a4 10 c0 movl $0xc010a4ff,(%esp) +c01070ce: e8 6f 9b ff ff call c0100c42 <__panic> + cprintf("write Virt Page d in fifo_check_swap\n"); +c01070d3: c7 04 24 8c a5 10 c0 movl $0xc010a58c,(%esp) +c01070da: e8 96 92 ff ff call c0100375 + *(unsigned char *)0x4000 = 0x0d; +c01070df: b8 00 40 00 00 mov $0x4000,%eax +c01070e4: c6 00 0d movb $0xd,(%eax) + assert(pgfault_num==9); +c01070e7: a1 70 61 12 c0 mov 0xc0126170,%eax +c01070ec: 83 f8 09 cmp $0x9,%eax +c01070ef: 74 24 je c0107115 <_fifo_check_swap+0x29a> +c01070f1: c7 44 24 0c 3e a6 10 movl $0xc010a63e,0xc(%esp) +c01070f8: c0 +c01070f9: c7 44 24 08 ea a4 10 movl $0xc010a4ea,0x8(%esp) +c0107100: c0 +c0107101: c7 44 24 04 68 00 00 movl $0x68,0x4(%esp) +c0107108: 00 +c0107109: c7 04 24 ff a4 10 c0 movl $0xc010a4ff,(%esp) +c0107110: e8 2d 9b ff ff call c0100c42 <__panic> + cprintf("write Virt Page e in fifo_check_swap\n"); +c0107115: c7 04 24 dc a5 10 c0 movl $0xc010a5dc,(%esp) +c010711c: e8 54 92 ff ff call c0100375 + *(unsigned char *)0x5000 = 0x0e; +c0107121: b8 00 50 00 00 mov $0x5000,%eax +c0107126: c6 00 0e movb $0xe,(%eax) + assert(pgfault_num==10); +c0107129: a1 70 61 12 c0 mov 0xc0126170,%eax +c010712e: 83 f8 0a cmp $0xa,%eax +c0107131: 74 24 je c0107157 <_fifo_check_swap+0x2dc> +c0107133: c7 44 24 0c 4d a6 10 movl $0xc010a64d,0xc(%esp) +c010713a: c0 +c010713b: c7 44 24 08 ea a4 10 movl $0xc010a4ea,0x8(%esp) +c0107142: c0 +c0107143: c7 44 24 04 6b 00 00 movl $0x6b,0x4(%esp) +c010714a: 00 +c010714b: c7 04 24 ff a4 10 c0 movl $0xc010a4ff,(%esp) +c0107152: e8 eb 9a ff ff call c0100c42 <__panic> + cprintf("write Virt Page a in fifo_check_swap\n"); +c0107157: c7 04 24 64 a5 10 c0 movl $0xc010a564,(%esp) +c010715e: e8 12 92 ff ff call c0100375 + assert(*(unsigned char *)0x1000 == 0x0a); +c0107163: b8 00 10 00 00 mov $0x1000,%eax +c0107168: 0f b6 00 movzbl (%eax),%eax +c010716b: 3c 0a cmp $0xa,%al +c010716d: 74 24 je c0107193 <_fifo_check_swap+0x318> +c010716f: c7 44 24 0c 60 a6 10 movl $0xc010a660,0xc(%esp) +c0107176: c0 +c0107177: c7 44 24 08 ea a4 10 movl $0xc010a4ea,0x8(%esp) +c010717e: c0 +c010717f: c7 44 24 04 6d 00 00 movl $0x6d,0x4(%esp) +c0107186: 00 +c0107187: c7 04 24 ff a4 10 c0 movl $0xc010a4ff,(%esp) +c010718e: e8 af 9a ff ff call c0100c42 <__panic> + *(unsigned char *)0x1000 = 0x0a; +c0107193: b8 00 10 00 00 mov $0x1000,%eax +c0107198: c6 00 0a movb $0xa,(%eax) + assert(pgfault_num==11); +c010719b: a1 70 61 12 c0 mov 0xc0126170,%eax +c01071a0: 83 f8 0b cmp $0xb,%eax +c01071a3: 74 24 je c01071c9 <_fifo_check_swap+0x34e> +c01071a5: c7 44 24 0c 81 a6 10 movl $0xc010a681,0xc(%esp) +c01071ac: c0 +c01071ad: c7 44 24 08 ea a4 10 movl $0xc010a4ea,0x8(%esp) +c01071b4: c0 +c01071b5: c7 44 24 04 6f 00 00 movl $0x6f,0x4(%esp) +c01071bc: 00 +c01071bd: c7 04 24 ff a4 10 c0 movl $0xc010a4ff,(%esp) +c01071c4: e8 79 9a ff ff call c0100c42 <__panic> + return 0; +c01071c9: b8 00 00 00 00 mov $0x0,%eax +} +c01071ce: 89 ec mov %ebp,%esp +c01071d0: 5d pop %ebp +c01071d1: c3 ret + +c01071d2 <_fifo_init>: + + +static int +_fifo_init(void) +{ +c01071d2: 55 push %ebp +c01071d3: 89 e5 mov %esp,%ebp + return 0; +c01071d5: b8 00 00 00 00 mov $0x0,%eax +} +c01071da: 5d pop %ebp +c01071db: c3 ret + +c01071dc <_fifo_set_unswappable>: + +static int +_fifo_set_unswappable(struct mm_struct *mm, uintptr_t addr) +{ +c01071dc: 55 push %ebp +c01071dd: 89 e5 mov %esp,%ebp + return 0; +c01071df: b8 00 00 00 00 mov $0x0,%eax +} +c01071e4: 5d pop %ebp +c01071e5: c3 ret + +c01071e6 <_fifo_tick_event>: + +static int +_fifo_tick_event(struct mm_struct *mm) +{ return 0; } +c01071e6: 55 push %ebp +c01071e7: 89 e5 mov %esp,%ebp +c01071e9: b8 00 00 00 00 mov $0x0,%eax +c01071ee: 5d pop %ebp +c01071ef: c3 ret + +c01071f0 : +pa2page(uintptr_t pa) { +c01071f0: 55 push %ebp +c01071f1: 89 e5 mov %esp,%ebp +c01071f3: 83 ec 18 sub $0x18,%esp + if (PPN(pa) >= npage) { +c01071f6: 8b 45 08 mov 0x8(%ebp),%eax +c01071f9: c1 e8 0c shr $0xc,%eax +c01071fc: 89 c2 mov %eax,%edx +c01071fe: a1 04 60 12 c0 mov 0xc0126004,%eax +c0107203: 39 c2 cmp %eax,%edx +c0107205: 72 1c jb c0107223 + panic("pa2page called with invalid pa"); +c0107207: c7 44 24 08 a4 a6 10 movl $0xc010a6a4,0x8(%esp) +c010720e: c0 +c010720f: c7 44 24 04 5b 00 00 movl $0x5b,0x4(%esp) +c0107216: 00 +c0107217: c7 04 24 c3 a6 10 c0 movl $0xc010a6c3,(%esp) +c010721e: e8 1f 9a ff ff call c0100c42 <__panic> + return &pages[PPN(pa)]; +c0107223: 8b 15 00 60 12 c0 mov 0xc0126000,%edx +c0107229: 8b 45 08 mov 0x8(%ebp),%eax +c010722c: c1 e8 0c shr $0xc,%eax +c010722f: c1 e0 05 shl $0x5,%eax +c0107232: 01 d0 add %edx,%eax +} +c0107234: 89 ec mov %ebp,%esp +c0107236: 5d pop %ebp +c0107237: c3 ret + +c0107238 : +pde2page(pde_t pde) { +c0107238: 55 push %ebp +c0107239: 89 e5 mov %esp,%ebp +c010723b: 83 ec 18 sub $0x18,%esp + return pa2page(PDE_ADDR(pde)); +c010723e: 8b 45 08 mov 0x8(%ebp),%eax +c0107241: 25 00 f0 ff ff and $0xfffff000,%eax +c0107246: 89 04 24 mov %eax,(%esp) +c0107249: e8 a2 ff ff ff call c01071f0 +} +c010724e: 89 ec mov %ebp,%esp +c0107250: 5d pop %ebp +c0107251: c3 ret + +c0107252 : + * 它包括内存映射列表、页目录、映射缓存等重要信息 + * + * @return 分配并初始化后的`mm_struct`结构体指针,如果分配失败则返回NULL + */ +struct mm_struct * +mm_create(void) { +c0107252: 55 push %ebp +c0107253: 89 e5 mov %esp,%ebp +c0107255: 83 ec 28 sub $0x28,%esp + // 分配一个mm_struct结构体的空间 + struct mm_struct *mm = kmalloc(sizeof(struct mm_struct)); +c0107258: c7 04 24 18 00 00 00 movl $0x18,(%esp) +c010725f: e8 c9 ed ff ff call c010602d +c0107264: 89 45 f4 mov %eax,-0xc(%ebp) + // 检查是否成功分配了内存 + if (mm != NULL) { +c0107267: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) +c010726b: 74 59 je c01072c6 + // 初始化内存映射列表 + list_init(&(mm->mmap_list)); +c010726d: 8b 45 f4 mov -0xc(%ebp),%eax +c0107270: 89 45 f0 mov %eax,-0x10(%ebp) + elm->prev = elm->next = elm; +c0107273: 8b 45 f0 mov -0x10(%ebp),%eax +c0107276: 8b 55 f0 mov -0x10(%ebp),%edx +c0107279: 89 50 04 mov %edx,0x4(%eax) +c010727c: 8b 45 f0 mov -0x10(%ebp),%eax +c010727f: 8b 50 04 mov 0x4(%eax),%edx +c0107282: 8b 45 f0 mov -0x10(%ebp),%eax +c0107285: 89 10 mov %edx,(%eax) +} +c0107287: 90 nop + // 设置映射缓存为NULL,表示尚未缓存任何映射 + mm->mmap_cache = NULL; +c0107288: 8b 45 f4 mov -0xc(%ebp),%eax +c010728b: c7 40 08 00 00 00 00 movl $0x0,0x8(%eax) + // 设置页目录为NULL,表示尚未分配页目录 + mm->pgdir = NULL; +c0107292: 8b 45 f4 mov -0xc(%ebp),%eax +c0107295: c7 40 0c 00 00 00 00 movl $0x0,0xc(%eax) + // 初始化映射计数为0,表示尚未创建任何内存映射 + mm->map_count = 0; +c010729c: 8b 45 f4 mov -0xc(%ebp),%eax +c010729f: c7 40 10 00 00 00 00 movl $0x0,0x10(%eax) + // 如果交换空间初始化成功,则为当前内存管理结构体进行交换空间初始化 + if (swap_init_ok) swap_init_mm(mm); +c01072a6: a1 a4 60 12 c0 mov 0xc01260a4,%eax +c01072ab: 85 c0 test %eax,%eax +c01072ad: 74 0d je c01072bc +c01072af: 8b 45 f4 mov -0xc(%ebp),%eax +c01072b2: 89 04 24 mov %eax,(%esp) +c01072b5: e8 cc ef ff ff call c0106286 +c01072ba: eb 0a jmp c01072c6 + else mm->sm_priv = NULL; +c01072bc: 8b 45 f4 mov -0xc(%ebp),%eax +c01072bf: c7 40 14 00 00 00 00 movl $0x0,0x14(%eax) + } + // 返回分配并初始化后的内存管理结构体指针 + return mm; +c01072c6: 8b 45 f4 mov -0xc(%ebp),%eax +} +c01072c9: 89 ec mov %ebp,%esp +c01072cb: 5d pop %ebp +c01072cc: c3 ret + +c01072cd : + * @param vm_flags 虚拟内存区域的标志,表示内存区域的权限和特性。 + * + * @return 返回指向新创建的vma_struct结构体的指针,如果内存分配失败,则返回NULL。 + */ +struct vma_struct * +vma_create(uintptr_t vm_start, uintptr_t vm_end, uint32_t vm_flags) { +c01072cd: 55 push %ebp +c01072ce: 89 e5 mov %esp,%ebp +c01072d0: 83 ec 28 sub $0x28,%esp + // 分配vma_struct结构体所需的内存空间 + struct vma_struct *vma = kmalloc(sizeof(struct vma_struct)); +c01072d3: c7 04 24 18 00 00 00 movl $0x18,(%esp) +c01072da: e8 4e ed ff ff call c010602d +c01072df: 89 45 f4 mov %eax,-0xc(%ebp) + // 检查内存是否成功分配 + if (vma != NULL) { +c01072e2: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) +c01072e6: 74 1b je c0107303 + // 初始化vma_struct的成员变量 + vma->vm_start = vm_start; +c01072e8: 8b 45 f4 mov -0xc(%ebp),%eax +c01072eb: 8b 55 08 mov 0x8(%ebp),%edx +c01072ee: 89 50 04 mov %edx,0x4(%eax) + vma->vm_end = vm_end; +c01072f1: 8b 45 f4 mov -0xc(%ebp),%eax +c01072f4: 8b 55 0c mov 0xc(%ebp),%edx +c01072f7: 89 50 08 mov %edx,0x8(%eax) + vma->vm_flags = vm_flags; +c01072fa: 8b 45 f4 mov -0xc(%ebp),%eax +c01072fd: 8b 55 10 mov 0x10(%ebp),%edx +c0107300: 89 50 0c mov %edx,0xc(%eax) + } + // 返回指向新创建的vma_struct结构体的指针,或在内存分配失败时返回NULL + return vma; +c0107303: 8b 45 f4 mov -0xc(%ebp),%eax +} +c0107306: 89 ec mov %ebp,%esp +c0107308: 5d pop %ebp +c0107309: c3 ret + +c010730a : + * 此函数首先检查mmap_cache是否包含所需的VMA,以加速查找过程 + * 如果mmap_cache未命中,则遍历VMA列表,直到找到包含给定地址的VMA或确定不存在这样的VMA + * 如果找到了合适的VMA,它将更新mmap_cache以供后续查找使用 + */ +struct vma_struct * +find_vma(struct mm_struct *mm, uintptr_t addr) { +c010730a: 55 push %ebp +c010730b: 89 e5 mov %esp,%ebp +c010730d: 83 ec 20 sub $0x20,%esp + struct vma_struct *vma = NULL;// 初始化VMA指针为NULL +c0107310: c7 45 fc 00 00 00 00 movl $0x0,-0x4(%ebp) + if (mm != NULL) {// 检查传入的内存描述符是否有效 +c0107317: 83 7d 08 00 cmpl $0x0,0x8(%ebp) +c010731b: 0f 84 95 00 00 00 je c01073b6 + // 检查mmap_cache是否包含所需的VMA + vma = mm->mmap_cache; +c0107321: 8b 45 08 mov 0x8(%ebp),%eax +c0107324: 8b 40 08 mov 0x8(%eax),%eax +c0107327: 89 45 fc mov %eax,-0x4(%ebp) + if (!(vma != NULL && vma->vm_start <= addr && vma->vm_end > addr)) { +c010732a: 83 7d fc 00 cmpl $0x0,-0x4(%ebp) +c010732e: 74 16 je c0107346 +c0107330: 8b 45 fc mov -0x4(%ebp),%eax +c0107333: 8b 40 04 mov 0x4(%eax),%eax +c0107336: 39 45 0c cmp %eax,0xc(%ebp) +c0107339: 72 0b jb c0107346 +c010733b: 8b 45 fc mov -0x4(%ebp),%eax +c010733e: 8b 40 08 mov 0x8(%eax),%eax +c0107341: 39 45 0c cmp %eax,0xc(%ebp) +c0107344: 72 61 jb c01073a7 + // 如果mmap_cache未命中,则开始遍历VMA列表 + bool found = 0;// 初始化找到标志为0 +c0107346: c7 45 f8 00 00 00 00 movl $0x0,-0x8(%ebp) + // 获取VMA列表的头指针 + list_entry_t *list = &(mm->mmap_list), *le = list; +c010734d: 8b 45 08 mov 0x8(%ebp),%eax +c0107350: 89 45 f0 mov %eax,-0x10(%ebp) +c0107353: 8b 45 f0 mov -0x10(%ebp),%eax +c0107356: 89 45 f4 mov %eax,-0xc(%ebp) + while ((le = list_next(le)) != list) { // 遍历VMA列表 +c0107359: eb 28 jmp c0107383 + vma = le2vma(le, list_link);// 将链表项转换为VMA结构 +c010735b: 8b 45 f4 mov -0xc(%ebp),%eax +c010735e: 83 e8 10 sub $0x10,%eax +c0107361: 89 45 fc mov %eax,-0x4(%ebp) + // 检查当前VMA是否包含给定地址 + if (vma->vm_start<=addr && addr < vma->vm_end) { +c0107364: 8b 45 fc mov -0x4(%ebp),%eax +c0107367: 8b 40 04 mov 0x4(%eax),%eax +c010736a: 39 45 0c cmp %eax,0xc(%ebp) +c010736d: 72 14 jb c0107383 +c010736f: 8b 45 fc mov -0x4(%ebp),%eax +c0107372: 8b 40 08 mov 0x8(%eax),%eax +c0107375: 39 45 0c cmp %eax,0xc(%ebp) +c0107378: 73 09 jae c0107383 + found = 1;// 找到合适的VMA +c010737a: c7 45 f8 01 00 00 00 movl $0x1,-0x8(%ebp) + break;// 结束循环 +c0107381: eb 17 jmp c010739a +c0107383: 8b 45 f4 mov -0xc(%ebp),%eax +c0107386: 89 45 ec mov %eax,-0x14(%ebp) + return listelm->next; +c0107389: 8b 45 ec mov -0x14(%ebp),%eax +c010738c: 8b 40 04 mov 0x4(%eax),%eax + while ((le = list_next(le)) != list) { // 遍历VMA列表 +c010738f: 89 45 f4 mov %eax,-0xc(%ebp) +c0107392: 8b 45 f4 mov -0xc(%ebp),%eax +c0107395: 3b 45 f0 cmp -0x10(%ebp),%eax +c0107398: 75 c1 jne c010735b + } + } + if (!found) {// 如果未找到合适的VMA +c010739a: 83 7d f8 00 cmpl $0x0,-0x8(%ebp) +c010739e: 75 07 jne c01073a7 + vma = NULL;// 将VMA指针设置为NULL +c01073a0: c7 45 fc 00 00 00 00 movl $0x0,-0x4(%ebp) + } + } + // 如果找到了合适的VMA,更新mmap_cache + if (vma != NULL) { +c01073a7: 83 7d fc 00 cmpl $0x0,-0x4(%ebp) +c01073ab: 74 09 je c01073b6 + mm->mmap_cache = vma;// 更新mmap_cache以加速后续查找 +c01073ad: 8b 45 08 mov 0x8(%ebp),%eax +c01073b0: 8b 55 fc mov -0x4(%ebp),%edx +c01073b3: 89 50 08 mov %edx,0x8(%eax) + } + } + return vma; +c01073b6: 8b 45 fc mov -0x4(%ebp),%eax +} +c01073b9: 89 ec mov %ebp,%esp +c01073bb: 5d pop %ebp +c01073bc: c3 ret + +c01073bd : + * + * @param prev 指向前一个虚拟内存区域(VMA)的结构体指针 + * @param next 指向后一个虚拟内存区域(VMA)的结构体指针 + */ +static inline void +check_vma_overlap(struct vma_struct *prev, struct vma_struct *next) { +c01073bd: 55 push %ebp +c01073be: 89 e5 mov %esp,%ebp +c01073c0: 83 ec 18 sub $0x18,%esp + assert(prev->vm_start < prev->vm_end);// 确保前一个VMA的地址范围是有效的 +c01073c3: 8b 45 08 mov 0x8(%ebp),%eax +c01073c6: 8b 50 04 mov 0x4(%eax),%edx +c01073c9: 8b 45 08 mov 0x8(%ebp),%eax +c01073cc: 8b 40 08 mov 0x8(%eax),%eax +c01073cf: 39 c2 cmp %eax,%edx +c01073d1: 72 24 jb c01073f7 +c01073d3: c7 44 24 0c d1 a6 10 movl $0xc010a6d1,0xc(%esp) +c01073da: c0 +c01073db: c7 44 24 08 ef a6 10 movl $0xc010a6ef,0x8(%esp) +c01073e2: c0 +c01073e3: c7 44 24 04 a0 00 00 movl $0xa0,0x4(%esp) +c01073ea: 00 +c01073eb: c7 04 24 04 a7 10 c0 movl $0xc010a704,(%esp) +c01073f2: e8 4b 98 ff ff call c0100c42 <__panic> + assert(prev->vm_end <= next->vm_start);// 确保两个VMA之间没有重叠 +c01073f7: 8b 45 08 mov 0x8(%ebp),%eax +c01073fa: 8b 50 08 mov 0x8(%eax),%edx +c01073fd: 8b 45 0c mov 0xc(%ebp),%eax +c0107400: 8b 40 04 mov 0x4(%eax),%eax +c0107403: 39 c2 cmp %eax,%edx +c0107405: 76 24 jbe c010742b +c0107407: c7 44 24 0c 14 a7 10 movl $0xc010a714,0xc(%esp) +c010740e: c0 +c010740f: c7 44 24 08 ef a6 10 movl $0xc010a6ef,0x8(%esp) +c0107416: c0 +c0107417: c7 44 24 04 a1 00 00 movl $0xa1,0x4(%esp) +c010741e: 00 +c010741f: c7 04 24 04 a7 10 c0 movl $0xc010a704,(%esp) +c0107426: e8 17 98 ff ff call c0100c42 <__panic> + assert(next->vm_start < next->vm_end);// 确保后一个VMA的地址范围是有效的 +c010742b: 8b 45 0c mov 0xc(%ebp),%eax +c010742e: 8b 50 04 mov 0x4(%eax),%edx +c0107431: 8b 45 0c mov 0xc(%ebp),%eax +c0107434: 8b 40 08 mov 0x8(%eax),%eax +c0107437: 39 c2 cmp %eax,%edx +c0107439: 72 24 jb c010745f +c010743b: c7 44 24 0c 33 a7 10 movl $0xc010a733,0xc(%esp) +c0107442: c0 +c0107443: c7 44 24 08 ef a6 10 movl $0xc010a6ef,0x8(%esp) +c010744a: c0 +c010744b: c7 44 24 04 a2 00 00 movl $0xa2,0x4(%esp) +c0107452: 00 +c0107453: c7 04 24 04 a7 10 c0 movl $0xc010a704,(%esp) +c010745a: e8 e3 97 ff ff call c0100c42 <__panic> +} +c010745f: 90 nop +c0107460: 89 ec mov %ebp,%esp +c0107462: 5d pop %ebp +c0107463: c3 ret + +c0107464 : + * + * @param mm 指向内存描述符结构 `struct mm_struct` 的指针,表示一个进程的内存空间。 + * @param vma 指向要插入的VMA结构 `struct vma_struct` 的指针,描述一个内存区域。 + */ +void +insert_vma_struct(struct mm_struct *mm, struct vma_struct *vma) { +c0107464: 55 push %ebp +c0107465: 89 e5 mov %esp,%ebp +c0107467: 83 ec 48 sub $0x48,%esp + // 断言VMA结构的起始地址小于结束地址,确保VMA结构的有效性。 + assert(vma->vm_start < vma->vm_end); +c010746a: 8b 45 0c mov 0xc(%ebp),%eax +c010746d: 8b 50 04 mov 0x4(%eax),%edx +c0107470: 8b 45 0c mov 0xc(%ebp),%eax +c0107473: 8b 40 08 mov 0x8(%eax),%eax +c0107476: 39 c2 cmp %eax,%edx +c0107478: 72 24 jb c010749e +c010747a: c7 44 24 0c 51 a7 10 movl $0xc010a751,0xc(%esp) +c0107481: c0 +c0107482: c7 44 24 08 ef a6 10 movl $0xc010a6ef,0x8(%esp) +c0107489: c0 +c010748a: c7 44 24 04 b3 00 00 movl $0xb3,0x4(%esp) +c0107491: 00 +c0107492: c7 04 24 04 a7 10 c0 movl $0xc010a704,(%esp) +c0107499: e8 a4 97 ff ff call c0100c42 <__panic> + // 指向内存描述符中的VMA链表。 + list_entry_t *list = &(mm->mmap_list); +c010749e: 8b 45 08 mov 0x8(%ebp),%eax +c01074a1: 89 45 ec mov %eax,-0x14(%ebp) + // 遍历链表以找到新VMA结构的正确插入位置。 + list_entry_t *le_prev = list, *le_next; +c01074a4: 8b 45 ec mov -0x14(%ebp),%eax +c01074a7: 89 45 f4 mov %eax,-0xc(%ebp) + + list_entry_t *le = list; +c01074aa: 8b 45 ec mov -0x14(%ebp),%eax +c01074ad: 89 45 f0 mov %eax,-0x10(%ebp) + // 遍历链表以找到新VMA结构的正确插入位置 + while ((le = list_next(le)) != list) { +c01074b0: eb 1f jmp c01074d1 + struct vma_struct *mmap_prev = le2vma(le, list_link); +c01074b2: 8b 45 f0 mov -0x10(%ebp),%eax +c01074b5: 83 e8 10 sub $0x10,%eax +c01074b8: 89 45 e8 mov %eax,-0x18(%ebp) + // 如果当前VMA的起始地址大于新VMA的起始地址,则跳出循环 + if (mmap_prev->vm_start > vma->vm_start) { +c01074bb: 8b 45 e8 mov -0x18(%ebp),%eax +c01074be: 8b 50 04 mov 0x4(%eax),%edx +c01074c1: 8b 45 0c mov 0xc(%ebp),%eax +c01074c4: 8b 40 04 mov 0x4(%eax),%eax +c01074c7: 39 c2 cmp %eax,%edx +c01074c9: 77 1f ja c01074ea + break; + } + le_prev = le; +c01074cb: 8b 45 f0 mov -0x10(%ebp),%eax +c01074ce: 89 45 f4 mov %eax,-0xc(%ebp) +c01074d1: 8b 45 f0 mov -0x10(%ebp),%eax +c01074d4: 89 45 e0 mov %eax,-0x20(%ebp) +c01074d7: 8b 45 e0 mov -0x20(%ebp),%eax +c01074da: 8b 40 04 mov 0x4(%eax),%eax + while ((le = list_next(le)) != list) { +c01074dd: 89 45 f0 mov %eax,-0x10(%ebp) +c01074e0: 8b 45 f0 mov -0x10(%ebp),%eax +c01074e3: 3b 45 ec cmp -0x14(%ebp),%eax +c01074e6: 75 ca jne c01074b2 +c01074e8: eb 01 jmp c01074eb + break; +c01074ea: 90 nop +c01074eb: 8b 45 f4 mov -0xc(%ebp),%eax +c01074ee: 89 45 dc mov %eax,-0x24(%ebp) +c01074f1: 8b 45 dc mov -0x24(%ebp),%eax +c01074f4: 8b 40 04 mov 0x4(%eax),%eax + } + // 获取下一个链表项 + le_next = list_next(le_prev); +c01074f7: 89 45 e4 mov %eax,-0x1c(%ebp) + + /* check overlap */ + // 检查前一个VMA结构是否与新VMA结构重叠 + if (le_prev != list) { +c01074fa: 8b 45 f4 mov -0xc(%ebp),%eax +c01074fd: 3b 45 ec cmp -0x14(%ebp),%eax +c0107500: 74 15 je c0107517 + check_vma_overlap(le2vma(le_prev, list_link), vma); +c0107502: 8b 45 f4 mov -0xc(%ebp),%eax +c0107505: 8d 50 f0 lea -0x10(%eax),%edx +c0107508: 8b 45 0c mov 0xc(%ebp),%eax +c010750b: 89 44 24 04 mov %eax,0x4(%esp) +c010750f: 89 14 24 mov %edx,(%esp) +c0107512: e8 a6 fe ff ff call c01073bd + } + // 检查下一个VMA结构是否与新VMA结构重叠 + if (le_next != list) { +c0107517: 8b 45 e4 mov -0x1c(%ebp),%eax +c010751a: 3b 45 ec cmp -0x14(%ebp),%eax +c010751d: 74 15 je c0107534 + check_vma_overlap(vma, le2vma(le_next, list_link)); +c010751f: 8b 45 e4 mov -0x1c(%ebp),%eax +c0107522: 83 e8 10 sub $0x10,%eax +c0107525: 89 44 24 04 mov %eax,0x4(%esp) +c0107529: 8b 45 0c mov 0xc(%ebp),%eax +c010752c: 89 04 24 mov %eax,(%esp) +c010752f: e8 89 fe ff ff call c01073bd + } + // 设置VMA结构所属的内存描述符 + vma->vm_mm = mm; +c0107534: 8b 45 0c mov 0xc(%ebp),%eax +c0107537: 8b 55 08 mov 0x8(%ebp),%edx +c010753a: 89 10 mov %edx,(%eax) + // 将新VMA结构插入链表 + list_add_after(le_prev, &(vma->list_link)); +c010753c: 8b 45 0c mov 0xc(%ebp),%eax +c010753f: 8d 50 10 lea 0x10(%eax),%edx +c0107542: 8b 45 f4 mov -0xc(%ebp),%eax +c0107545: 89 45 d8 mov %eax,-0x28(%ebp) +c0107548: 89 55 d4 mov %edx,-0x2c(%ebp) + __list_add(elm, listelm, listelm->next); +c010754b: 8b 45 d8 mov -0x28(%ebp),%eax +c010754e: 8b 40 04 mov 0x4(%eax),%eax +c0107551: 8b 55 d4 mov -0x2c(%ebp),%edx +c0107554: 89 55 d0 mov %edx,-0x30(%ebp) +c0107557: 8b 55 d8 mov -0x28(%ebp),%edx +c010755a: 89 55 cc mov %edx,-0x34(%ebp) +c010755d: 89 45 c8 mov %eax,-0x38(%ebp) + prev->next = next->prev = elm; +c0107560: 8b 45 c8 mov -0x38(%ebp),%eax +c0107563: 8b 55 d0 mov -0x30(%ebp),%edx +c0107566: 89 10 mov %edx,(%eax) +c0107568: 8b 45 c8 mov -0x38(%ebp),%eax +c010756b: 8b 10 mov (%eax),%edx +c010756d: 8b 45 cc mov -0x34(%ebp),%eax +c0107570: 89 50 04 mov %edx,0x4(%eax) + elm->next = next; +c0107573: 8b 45 d0 mov -0x30(%ebp),%eax +c0107576: 8b 55 c8 mov -0x38(%ebp),%edx +c0107579: 89 50 04 mov %edx,0x4(%eax) + elm->prev = prev; +c010757c: 8b 45 d0 mov -0x30(%ebp),%eax +c010757f: 8b 55 cc mov -0x34(%ebp),%edx +c0107582: 89 10 mov %edx,(%eax) +} +c0107584: 90 nop +} +c0107585: 90 nop + // 增加内存描述符中的映射计数 + mm->map_count ++; +c0107586: 8b 45 08 mov 0x8(%ebp),%eax +c0107589: 8b 40 10 mov 0x10(%eax),%eax +c010758c: 8d 50 01 lea 0x1(%eax),%edx +c010758f: 8b 45 08 mov 0x8(%ebp),%eax +c0107592: 89 50 10 mov %edx,0x10(%eax) +} +c0107595: 90 nop +c0107596: 89 ec mov %ebp,%esp +c0107598: 5d pop %ebp +c0107599: c3 ret + +c010759a : + * 此函数遍历并销毁与内存管理结构(mm_struct)关联的所有虚拟内存区域(VMA), + * 然后释放内存管理结构本身所占用的内存。这样做是为了确保在销毁内存管理结构之前, + * 所有相关的资源都被正确地释放。 + */ +void +mm_destroy(struct mm_struct *mm) { +c010759a: 55 push %ebp +c010759b: 89 e5 mov %esp,%ebp +c010759d: 83 ec 38 sub $0x38,%esp + // 获取内存映射列表的头指针 + list_entry_t *list = &(mm->mmap_list), *le; +c01075a0: 8b 45 08 mov 0x8(%ebp),%eax +c01075a3: 89 45 f4 mov %eax,-0xc(%ebp) + // 遍历内存映射列表,直到回到起点 + while ((le = list_next(list)) != list) { +c01075a6: eb 40 jmp c01075e8 +c01075a8: 8b 45 f0 mov -0x10(%ebp),%eax +c01075ab: 89 45 ec mov %eax,-0x14(%ebp) + __list_del(listelm->prev, listelm->next); +c01075ae: 8b 45 ec mov -0x14(%ebp),%eax +c01075b1: 8b 40 04 mov 0x4(%eax),%eax +c01075b4: 8b 55 ec mov -0x14(%ebp),%edx +c01075b7: 8b 12 mov (%edx),%edx +c01075b9: 89 55 e8 mov %edx,-0x18(%ebp) +c01075bc: 89 45 e4 mov %eax,-0x1c(%ebp) + prev->next = next; +c01075bf: 8b 45 e8 mov -0x18(%ebp),%eax +c01075c2: 8b 55 e4 mov -0x1c(%ebp),%edx +c01075c5: 89 50 04 mov %edx,0x4(%eax) + next->prev = prev; +c01075c8: 8b 45 e4 mov -0x1c(%ebp),%eax +c01075cb: 8b 55 e8 mov -0x18(%ebp),%edx +c01075ce: 89 10 mov %edx,(%eax) +} +c01075d0: 90 nop +} +c01075d1: 90 nop + // 从列表中删除当前虚拟内存区域的项 + list_del(le); + // 释放虚拟内存区域结构的内存 + kfree(le2vma(le, list_link),sizeof(struct vma_struct)); //kfree vma +c01075d2: 8b 45 f0 mov -0x10(%ebp),%eax +c01075d5: 83 e8 10 sub $0x10,%eax +c01075d8: c7 44 24 04 18 00 00 movl $0x18,0x4(%esp) +c01075df: 00 +c01075e0: 89 04 24 mov %eax,(%esp) +c01075e3: e8 e7 ea ff ff call c01060cf +c01075e8: 8b 45 f4 mov -0xc(%ebp),%eax +c01075eb: 89 45 e0 mov %eax,-0x20(%ebp) + return listelm->next; +c01075ee: 8b 45 e0 mov -0x20(%ebp),%eax +c01075f1: 8b 40 04 mov 0x4(%eax),%eax + while ((le = list_next(list)) != list) { +c01075f4: 89 45 f0 mov %eax,-0x10(%ebp) +c01075f7: 8b 45 f0 mov -0x10(%ebp),%eax +c01075fa: 3b 45 f4 cmp -0xc(%ebp),%eax +c01075fd: 75 a9 jne c01075a8 + } + // 释放内存管理结构本身的内存 + kfree(mm, sizeof(struct mm_struct)); //kfree mm +c01075ff: c7 44 24 04 18 00 00 movl $0x18,0x4(%esp) +c0107606: 00 +c0107607: 8b 45 08 mov 0x8(%ebp),%eax +c010760a: 89 04 24 mov %eax,(%esp) +c010760d: e8 bd ea ff ff call c01060cf + // 将指针设置为NULL,表示该结构已被销毁 + mm=NULL; +c0107612: c7 45 08 00 00 00 00 movl $0x0,0x8(%ebp) +} +c0107619: 90 nop +c010761a: 89 ec mov %ebp,%esp +c010761c: 5d pop %ebp +c010761d: c3 ret + +c010761e : +/** + * 初始化虚拟内存管理(VMM)系统。 + * 此函数通过执行一系列检查来确保VMM系统可以正确初始化和运行。 + */ +void +vmm_init(void) { +c010761e: 55 push %ebp +c010761f: 89 e5 mov %esp,%ebp +c0107621: 83 ec 08 sub $0x8,%esp + // 检查VMM系统的状态和环境,以确保其能够正常工作。 + check_vmm(); +c0107624: e8 05 00 00 00 call c010762e +} +c0107629: 90 nop +c010762a: 89 ec mov %ebp,%esp +c010762c: 5d pop %ebp +c010762d: c3 ret + +c010762e : + * 此函数的目的是确保虚拟内存管理系统的正确性通过检查内存区域结构(VMA)、页面故障处理以及免费页面计数的 consistency 来实现 + * 它首先保存当前的免费页面数量,然后执行与 VMA 和页面故障相关的检查,最后确认免费页面数量未发生变化 + * 这是为了确保在检查过程中,内存状态没有因为错误或意外的修改而改变,从而验证内存管理的正确性 + */ +static void +check_vmm(void) { +c010762e: 55 push %ebp +c010762f: 89 e5 mov %esp,%ebp +c0107631: 83 ec 28 sub $0x28,%esp + // 保存当前的免费页面数量,用于后续的 consistency 检查 + size_t nr_free_pages_store = nr_free_pages(); +c0107634: e8 10 d3 ff ff call c0104949 +c0107639: 89 45 f4 mov %eax,-0xc(%ebp) + // 检查虚拟内存区域(VMA)结构的正确性 + check_vma_struct(); +c010763c: e8 44 00 00 00 call c0107685 + // 检查页面故障处理的正确性 + check_pgfault(); +c0107641: e8 01 05 00 00 call c0107b47 + // 确保在检查过程中免费页面数量未发生变化,表明内存管理操作是正确的 + assert(nr_free_pages_store == nr_free_pages()); +c0107646: e8 fe d2 ff ff call c0104949 +c010764b: 39 45 f4 cmp %eax,-0xc(%ebp) +c010764e: 74 24 je c0107674 +c0107650: c7 44 24 0c 70 a7 10 movl $0xc010a770,0xc(%esp) +c0107657: c0 +c0107658: c7 44 24 08 ef a6 10 movl $0xc010a6ef,0x8(%esp) +c010765f: c0 +c0107660: c7 44 24 04 0e 01 00 movl $0x10e,0x4(%esp) +c0107667: 00 +c0107668: c7 04 24 04 a7 10 c0 movl $0xc010a704,(%esp) +c010766f: e8 ce 95 ff ff call c0100c42 <__panic> + // 如果所有检查都通过,输出成功信息 + cprintf("check_vmm() succeeded.\n"); +c0107674: c7 04 24 97 a7 10 c0 movl $0xc010a797,(%esp) +c010767b: e8 f5 8c ff ff call c0100375 +} +c0107680: 90 nop +c0107681: 89 ec mov %ebp,%esp +c0107683: 5d pop %ebp +c0107684: c3 ret + +c0107685 : + +//测试虚拟内存区域(VMA)结构的创建、插入和查找功能。 +static void +check_vma_struct(void) { +c0107685: 55 push %ebp +c0107686: 89 e5 mov %esp,%ebp +c0107688: 83 ec 68 sub $0x68,%esp + // 记录当前空闲页面数量 + size_t nr_free_pages_store = nr_free_pages(); +c010768b: e8 b9 d2 ff ff call c0104949 +c0107690: 89 45 ec mov %eax,-0x14(%ebp) + + struct mm_struct *mm = mm_create();// 创建内存管理结构 mm +c0107693: e8 ba fb ff ff call c0107252 +c0107698: 89 45 e8 mov %eax,-0x18(%ebp) + assert(mm != NULL);// 确保 mm 不为 NULL +c010769b: 83 7d e8 00 cmpl $0x0,-0x18(%ebp) +c010769f: 75 24 jne c01076c5 +c01076a1: c7 44 24 0c af a7 10 movl $0xc010a7af,0xc(%esp) +c01076a8: c0 +c01076a9: c7 44 24 08 ef a6 10 movl $0xc010a6ef,0x8(%esp) +c01076b0: c0 +c01076b1: c7 44 24 04 1a 01 00 movl $0x11a,0x4(%esp) +c01076b8: 00 +c01076b9: c7 04 24 04 a7 10 c0 movl $0xc010a704,(%esp) +c01076c0: e8 7d 95 ff ff call c0100c42 <__panic> + + int step1 = 10, step2 = step1 * 10;// 定义两个步骤的步数 +c01076c5: c7 45 e4 0a 00 00 00 movl $0xa,-0x1c(%ebp) +c01076cc: 8b 55 e4 mov -0x1c(%ebp),%edx +c01076cf: 89 d0 mov %edx,%eax +c01076d1: c1 e0 02 shl $0x2,%eax +c01076d4: 01 d0 add %edx,%eax +c01076d6: 01 c0 add %eax,%eax +c01076d8: 89 45 e0 mov %eax,-0x20(%ebp) + + int i; + for (i = step1; i >= 1; i --) {// 第一步:创建并插入10个VMA +c01076db: 8b 45 e4 mov -0x1c(%ebp),%eax +c01076de: 89 45 f4 mov %eax,-0xc(%ebp) +c01076e1: eb 6f jmp c0107752 + // 创建 VMA 结构 + struct vma_struct *vma = vma_create(i * 5, i * 5 + 2, 0); +c01076e3: 8b 55 f4 mov -0xc(%ebp),%edx +c01076e6: 89 d0 mov %edx,%eax +c01076e8: c1 e0 02 shl $0x2,%eax +c01076eb: 01 d0 add %edx,%eax +c01076ed: 83 c0 02 add $0x2,%eax +c01076f0: 89 c1 mov %eax,%ecx +c01076f2: 8b 55 f4 mov -0xc(%ebp),%edx +c01076f5: 89 d0 mov %edx,%eax +c01076f7: c1 e0 02 shl $0x2,%eax +c01076fa: 01 d0 add %edx,%eax +c01076fc: c7 44 24 08 00 00 00 movl $0x0,0x8(%esp) +c0107703: 00 +c0107704: 89 4c 24 04 mov %ecx,0x4(%esp) +c0107708: 89 04 24 mov %eax,(%esp) +c010770b: e8 bd fb ff ff call c01072cd +c0107710: 89 45 bc mov %eax,-0x44(%ebp) + assert(vma != NULL);// 确保 VMA 不为 NULL +c0107713: 83 7d bc 00 cmpl $0x0,-0x44(%ebp) +c0107717: 75 24 jne c010773d +c0107719: c7 44 24 0c ba a7 10 movl $0xc010a7ba,0xc(%esp) +c0107720: c0 +c0107721: c7 44 24 08 ef a6 10 movl $0xc010a6ef,0x8(%esp) +c0107728: c0 +c0107729: c7 44 24 04 22 01 00 movl $0x122,0x4(%esp) +c0107730: 00 +c0107731: c7 04 24 04 a7 10 c0 movl $0xc010a704,(%esp) +c0107738: e8 05 95 ff ff call c0100c42 <__panic> + insert_vma_struct(mm, vma); //将 VMA 插入到 mm 中 +c010773d: 8b 45 bc mov -0x44(%ebp),%eax +c0107740: 89 44 24 04 mov %eax,0x4(%esp) +c0107744: 8b 45 e8 mov -0x18(%ebp),%eax +c0107747: 89 04 24 mov %eax,(%esp) +c010774a: e8 15 fd ff ff call c0107464 + for (i = step1; i >= 1; i --) {// 第一步:创建并插入10个VMA +c010774f: ff 4d f4 decl -0xc(%ebp) +c0107752: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) +c0107756: 7f 8b jg c01076e3 + } + + for (i = step1 + 1; i <= step2; i ++) {// 第二步:创建并插入90个VMA +c0107758: 8b 45 e4 mov -0x1c(%ebp),%eax +c010775b: 40 inc %eax +c010775c: 89 45 f4 mov %eax,-0xc(%ebp) +c010775f: eb 6f jmp c01077d0 + // 创建 VMA 结构 + struct vma_struct *vma = vma_create(i * 5, i * 5 + 2, 0); +c0107761: 8b 55 f4 mov -0xc(%ebp),%edx +c0107764: 89 d0 mov %edx,%eax +c0107766: c1 e0 02 shl $0x2,%eax +c0107769: 01 d0 add %edx,%eax +c010776b: 83 c0 02 add $0x2,%eax +c010776e: 89 c1 mov %eax,%ecx +c0107770: 8b 55 f4 mov -0xc(%ebp),%edx +c0107773: 89 d0 mov %edx,%eax +c0107775: c1 e0 02 shl $0x2,%eax +c0107778: 01 d0 add %edx,%eax +c010777a: c7 44 24 08 00 00 00 movl $0x0,0x8(%esp) +c0107781: 00 +c0107782: 89 4c 24 04 mov %ecx,0x4(%esp) +c0107786: 89 04 24 mov %eax,(%esp) +c0107789: e8 3f fb ff ff call c01072cd +c010778e: 89 45 c0 mov %eax,-0x40(%ebp) + assert(vma != NULL);// 确保 VMA 不为 NULL +c0107791: 83 7d c0 00 cmpl $0x0,-0x40(%ebp) +c0107795: 75 24 jne c01077bb +c0107797: c7 44 24 0c ba a7 10 movl $0xc010a7ba,0xc(%esp) +c010779e: c0 +c010779f: c7 44 24 08 ef a6 10 movl $0xc010a6ef,0x8(%esp) +c01077a6: c0 +c01077a7: c7 44 24 04 29 01 00 movl $0x129,0x4(%esp) +c01077ae: 00 +c01077af: c7 04 24 04 a7 10 c0 movl $0xc010a704,(%esp) +c01077b6: e8 87 94 ff ff call c0100c42 <__panic> + insert_vma_struct(mm, vma);// 将 VMA 插入到 mm 中 +c01077bb: 8b 45 c0 mov -0x40(%ebp),%eax +c01077be: 89 44 24 04 mov %eax,0x4(%esp) +c01077c2: 8b 45 e8 mov -0x18(%ebp),%eax +c01077c5: 89 04 24 mov %eax,(%esp) +c01077c8: e8 97 fc ff ff call c0107464 + for (i = step1 + 1; i <= step2; i ++) {// 第二步:创建并插入90个VMA +c01077cd: ff 45 f4 incl -0xc(%ebp) +c01077d0: 8b 45 f4 mov -0xc(%ebp),%eax +c01077d3: 3b 45 e0 cmp -0x20(%ebp),%eax +c01077d6: 7e 89 jle c0107761 + } + // 获取 VMA 链表的第一个节点 + list_entry_t *le = list_next(&(mm->mmap_list)); +c01077d8: 8b 45 e8 mov -0x18(%ebp),%eax +c01077db: 89 45 b8 mov %eax,-0x48(%ebp) +c01077de: 8b 45 b8 mov -0x48(%ebp),%eax +c01077e1: 8b 40 04 mov 0x4(%eax),%eax +c01077e4: 89 45 f0 mov %eax,-0x10(%ebp) + + for (i = 1; i <= step2; i ++) {// 验证插入顺序 +c01077e7: c7 45 f4 01 00 00 00 movl $0x1,-0xc(%ebp) +c01077ee: e9 96 00 00 00 jmp c0107889 + assert(le != &(mm->mmap_list));// 确保节点不为空 +c01077f3: 8b 45 e8 mov -0x18(%ebp),%eax +c01077f6: 39 45 f0 cmp %eax,-0x10(%ebp) +c01077f9: 75 24 jne c010781f +c01077fb: c7 44 24 0c c6 a7 10 movl $0xc010a7c6,0xc(%esp) +c0107802: c0 +c0107803: c7 44 24 08 ef a6 10 movl $0xc010a6ef,0x8(%esp) +c010780a: c0 +c010780b: c7 44 24 04 30 01 00 movl $0x130,0x4(%esp) +c0107812: 00 +c0107813: c7 04 24 04 a7 10 c0 movl $0xc010a704,(%esp) +c010781a: e8 23 94 ff ff call c0100c42 <__panic> + struct vma_struct *mmap = le2vma(le, list_link);// 将链表节点转换为 VMA 结构 +c010781f: 8b 45 f0 mov -0x10(%ebp),%eax +c0107822: 83 e8 10 sub $0x10,%eax +c0107825: 89 45 c4 mov %eax,-0x3c(%ebp) + // 确认 VMA 的起始和结束地址 + assert(mmap->vm_start == i * 5 && mmap->vm_end == i * 5 + 2); +c0107828: 8b 45 c4 mov -0x3c(%ebp),%eax +c010782b: 8b 48 04 mov 0x4(%eax),%ecx +c010782e: 8b 55 f4 mov -0xc(%ebp),%edx +c0107831: 89 d0 mov %edx,%eax +c0107833: c1 e0 02 shl $0x2,%eax +c0107836: 01 d0 add %edx,%eax +c0107838: 39 c1 cmp %eax,%ecx +c010783a: 75 17 jne c0107853 +c010783c: 8b 45 c4 mov -0x3c(%ebp),%eax +c010783f: 8b 48 08 mov 0x8(%eax),%ecx +c0107842: 8b 55 f4 mov -0xc(%ebp),%edx +c0107845: 89 d0 mov %edx,%eax +c0107847: c1 e0 02 shl $0x2,%eax +c010784a: 01 d0 add %edx,%eax +c010784c: 83 c0 02 add $0x2,%eax +c010784f: 39 c1 cmp %eax,%ecx +c0107851: 74 24 je c0107877 +c0107853: c7 44 24 0c e0 a7 10 movl $0xc010a7e0,0xc(%esp) +c010785a: c0 +c010785b: c7 44 24 08 ef a6 10 movl $0xc010a6ef,0x8(%esp) +c0107862: c0 +c0107863: c7 44 24 04 33 01 00 movl $0x133,0x4(%esp) +c010786a: 00 +c010786b: c7 04 24 04 a7 10 c0 movl $0xc010a704,(%esp) +c0107872: e8 cb 93 ff ff call c0100c42 <__panic> +c0107877: 8b 45 f0 mov -0x10(%ebp),%eax +c010787a: 89 45 b4 mov %eax,-0x4c(%ebp) +c010787d: 8b 45 b4 mov -0x4c(%ebp),%eax +c0107880: 8b 40 04 mov 0x4(%eax),%eax + le = list_next(le);// 移动到下一个节点 +c0107883: 89 45 f0 mov %eax,-0x10(%ebp) + for (i = 1; i <= step2; i ++) {// 验证插入顺序 +c0107886: ff 45 f4 incl -0xc(%ebp) +c0107889: 8b 45 f4 mov -0xc(%ebp),%eax +c010788c: 3b 45 e0 cmp -0x20(%ebp),%eax +c010788f: 0f 8e 5e ff ff ff jle c01077f3 + } + + for (i = 5; i <= 5 * step2; i +=5) {// 查找特定地址范围内的 VMA +c0107895: c7 45 f4 05 00 00 00 movl $0x5,-0xc(%ebp) +c010789c: e9 cb 01 00 00 jmp c0107a6c + struct vma_struct *vma1 = find_vma(mm, i);// 查找地址 i 处的 VMA +c01078a1: 8b 45 f4 mov -0xc(%ebp),%eax +c01078a4: 89 44 24 04 mov %eax,0x4(%esp) +c01078a8: 8b 45 e8 mov -0x18(%ebp),%eax +c01078ab: 89 04 24 mov %eax,(%esp) +c01078ae: e8 57 fa ff ff call c010730a +c01078b3: 89 45 d8 mov %eax,-0x28(%ebp) + assert(vma1 != NULL);// 确保找到 VMA +c01078b6: 83 7d d8 00 cmpl $0x0,-0x28(%ebp) +c01078ba: 75 24 jne c01078e0 +c01078bc: c7 44 24 0c 15 a8 10 movl $0xc010a815,0xc(%esp) +c01078c3: c0 +c01078c4: c7 44 24 08 ef a6 10 movl $0xc010a6ef,0x8(%esp) +c01078cb: c0 +c01078cc: c7 44 24 04 39 01 00 movl $0x139,0x4(%esp) +c01078d3: 00 +c01078d4: c7 04 24 04 a7 10 c0 movl $0xc010a704,(%esp) +c01078db: e8 62 93 ff ff call c0100c42 <__panic> + // 查找地址 i + 1 处的 VMA + struct vma_struct *vma2 = find_vma(mm, i+1); +c01078e0: 8b 45 f4 mov -0xc(%ebp),%eax +c01078e3: 40 inc %eax +c01078e4: 89 44 24 04 mov %eax,0x4(%esp) +c01078e8: 8b 45 e8 mov -0x18(%ebp),%eax +c01078eb: 89 04 24 mov %eax,(%esp) +c01078ee: e8 17 fa ff ff call c010730a +c01078f3: 89 45 d4 mov %eax,-0x2c(%ebp) + assert(vma2 != NULL);// 确保找到 VMA +c01078f6: 83 7d d4 00 cmpl $0x0,-0x2c(%ebp) +c01078fa: 75 24 jne c0107920 +c01078fc: c7 44 24 0c 22 a8 10 movl $0xc010a822,0xc(%esp) +c0107903: c0 +c0107904: c7 44 24 08 ef a6 10 movl $0xc010a6ef,0x8(%esp) +c010790b: c0 +c010790c: c7 44 24 04 3c 01 00 movl $0x13c,0x4(%esp) +c0107913: 00 +c0107914: c7 04 24 04 a7 10 c0 movl $0xc010a704,(%esp) +c010791b: e8 22 93 ff ff call c0100c42 <__panic> + // 查找地址 i + 2 处的 VMA + struct vma_struct *vma3 = find_vma(mm, i+2); +c0107920: 8b 45 f4 mov -0xc(%ebp),%eax +c0107923: 83 c0 02 add $0x2,%eax +c0107926: 89 44 24 04 mov %eax,0x4(%esp) +c010792a: 8b 45 e8 mov -0x18(%ebp),%eax +c010792d: 89 04 24 mov %eax,(%esp) +c0107930: e8 d5 f9 ff ff call c010730a +c0107935: 89 45 d0 mov %eax,-0x30(%ebp) + assert(vma3 == NULL);// 确保未找到 VMA +c0107938: 83 7d d0 00 cmpl $0x0,-0x30(%ebp) +c010793c: 74 24 je c0107962 +c010793e: c7 44 24 0c 2f a8 10 movl $0xc010a82f,0xc(%esp) +c0107945: c0 +c0107946: c7 44 24 08 ef a6 10 movl $0xc010a6ef,0x8(%esp) +c010794d: c0 +c010794e: c7 44 24 04 3f 01 00 movl $0x13f,0x4(%esp) +c0107955: 00 +c0107956: c7 04 24 04 a7 10 c0 movl $0xc010a704,(%esp) +c010795d: e8 e0 92 ff ff call c0100c42 <__panic> + // 查找地址 i + 3 处的 VMA + struct vma_struct *vma4 = find_vma(mm, i+3); +c0107962: 8b 45 f4 mov -0xc(%ebp),%eax +c0107965: 83 c0 03 add $0x3,%eax +c0107968: 89 44 24 04 mov %eax,0x4(%esp) +c010796c: 8b 45 e8 mov -0x18(%ebp),%eax +c010796f: 89 04 24 mov %eax,(%esp) +c0107972: e8 93 f9 ff ff call c010730a +c0107977: 89 45 cc mov %eax,-0x34(%ebp) + assert(vma4 == NULL);// 确保未找到 VMA +c010797a: 83 7d cc 00 cmpl $0x0,-0x34(%ebp) +c010797e: 74 24 je c01079a4 +c0107980: c7 44 24 0c 3c a8 10 movl $0xc010a83c,0xc(%esp) +c0107987: c0 +c0107988: c7 44 24 08 ef a6 10 movl $0xc010a6ef,0x8(%esp) +c010798f: c0 +c0107990: c7 44 24 04 42 01 00 movl $0x142,0x4(%esp) +c0107997: 00 +c0107998: c7 04 24 04 a7 10 c0 movl $0xc010a704,(%esp) +c010799f: e8 9e 92 ff ff call c0100c42 <__panic> + // 查找地址 i + 4 处的 VMA + struct vma_struct *vma5 = find_vma(mm, i+4); +c01079a4: 8b 45 f4 mov -0xc(%ebp),%eax +c01079a7: 83 c0 04 add $0x4,%eax +c01079aa: 89 44 24 04 mov %eax,0x4(%esp) +c01079ae: 8b 45 e8 mov -0x18(%ebp),%eax +c01079b1: 89 04 24 mov %eax,(%esp) +c01079b4: e8 51 f9 ff ff call c010730a +c01079b9: 89 45 c8 mov %eax,-0x38(%ebp) + assert(vma5 == NULL);// 确保未找到 VMA +c01079bc: 83 7d c8 00 cmpl $0x0,-0x38(%ebp) +c01079c0: 74 24 je c01079e6 +c01079c2: c7 44 24 0c 49 a8 10 movl $0xc010a849,0xc(%esp) +c01079c9: c0 +c01079ca: c7 44 24 08 ef a6 10 movl $0xc010a6ef,0x8(%esp) +c01079d1: c0 +c01079d2: c7 44 24 04 45 01 00 movl $0x145,0x4(%esp) +c01079d9: 00 +c01079da: c7 04 24 04 a7 10 c0 movl $0xc010a704,(%esp) +c01079e1: e8 5c 92 ff ff call c0100c42 <__panic> + // 确认 VMA1 的起始和结束地址 + assert(vma1->vm_start == i && vma1->vm_end == i + 2); +c01079e6: 8b 45 d8 mov -0x28(%ebp),%eax +c01079e9: 8b 50 04 mov 0x4(%eax),%edx +c01079ec: 8b 45 f4 mov -0xc(%ebp),%eax +c01079ef: 39 c2 cmp %eax,%edx +c01079f1: 75 10 jne c0107a03 +c01079f3: 8b 45 d8 mov -0x28(%ebp),%eax +c01079f6: 8b 40 08 mov 0x8(%eax),%eax +c01079f9: 8b 55 f4 mov -0xc(%ebp),%edx +c01079fc: 83 c2 02 add $0x2,%edx +c01079ff: 39 d0 cmp %edx,%eax +c0107a01: 74 24 je c0107a27 +c0107a03: c7 44 24 0c 58 a8 10 movl $0xc010a858,0xc(%esp) +c0107a0a: c0 +c0107a0b: c7 44 24 08 ef a6 10 movl $0xc010a6ef,0x8(%esp) +c0107a12: c0 +c0107a13: c7 44 24 04 47 01 00 movl $0x147,0x4(%esp) +c0107a1a: 00 +c0107a1b: c7 04 24 04 a7 10 c0 movl $0xc010a704,(%esp) +c0107a22: e8 1b 92 ff ff call c0100c42 <__panic> + // 确认 VMA2 的起始和结束地址 + assert(vma2->vm_start == i && vma2->vm_end == i + 2); +c0107a27: 8b 45 d4 mov -0x2c(%ebp),%eax +c0107a2a: 8b 50 04 mov 0x4(%eax),%edx +c0107a2d: 8b 45 f4 mov -0xc(%ebp),%eax +c0107a30: 39 c2 cmp %eax,%edx +c0107a32: 75 10 jne c0107a44 +c0107a34: 8b 45 d4 mov -0x2c(%ebp),%eax +c0107a37: 8b 40 08 mov 0x8(%eax),%eax +c0107a3a: 8b 55 f4 mov -0xc(%ebp),%edx +c0107a3d: 83 c2 02 add $0x2,%edx +c0107a40: 39 d0 cmp %edx,%eax +c0107a42: 74 24 je c0107a68 +c0107a44: c7 44 24 0c 88 a8 10 movl $0xc010a888,0xc(%esp) +c0107a4b: c0 +c0107a4c: c7 44 24 08 ef a6 10 movl $0xc010a6ef,0x8(%esp) +c0107a53: c0 +c0107a54: c7 44 24 04 49 01 00 movl $0x149,0x4(%esp) +c0107a5b: 00 +c0107a5c: c7 04 24 04 a7 10 c0 movl $0xc010a704,(%esp) +c0107a63: e8 da 91 ff ff call c0100c42 <__panic> + for (i = 5; i <= 5 * step2; i +=5) {// 查找特定地址范围内的 VMA +c0107a68: 83 45 f4 05 addl $0x5,-0xc(%ebp) +c0107a6c: 8b 55 e0 mov -0x20(%ebp),%edx +c0107a6f: 89 d0 mov %edx,%eax +c0107a71: c1 e0 02 shl $0x2,%eax +c0107a74: 01 d0 add %edx,%eax +c0107a76: 39 45 f4 cmp %eax,-0xc(%ebp) +c0107a79: 0f 8e 22 fe ff ff jle c01078a1 + } + // 检查小于5的地址范围内是否存在 VMA + for (i =4; i>=0; i--) { +c0107a7f: c7 45 f4 04 00 00 00 movl $0x4,-0xc(%ebp) +c0107a86: eb 6f jmp c0107af7 + // 查找地址 i 处的 VMA + struct vma_struct *vma_below_5= find_vma(mm,i); +c0107a88: 8b 45 f4 mov -0xc(%ebp),%eax +c0107a8b: 89 44 24 04 mov %eax,0x4(%esp) +c0107a8f: 8b 45 e8 mov -0x18(%ebp),%eax +c0107a92: 89 04 24 mov %eax,(%esp) +c0107a95: e8 70 f8 ff ff call c010730a +c0107a9a: 89 45 dc mov %eax,-0x24(%ebp) + if (vma_below_5 != NULL ) {// 如果找到 VMA +c0107a9d: 83 7d dc 00 cmpl $0x0,-0x24(%ebp) +c0107aa1: 74 27 je c0107aca + cprintf("vma_below_5: i %x, start %x, end %x\n",i, vma_below_5->vm_start, vma_below_5->vm_end); +c0107aa3: 8b 45 dc mov -0x24(%ebp),%eax +c0107aa6: 8b 50 08 mov 0x8(%eax),%edx +c0107aa9: 8b 45 dc mov -0x24(%ebp),%eax +c0107aac: 8b 40 04 mov 0x4(%eax),%eax +c0107aaf: 89 54 24 0c mov %edx,0xc(%esp) +c0107ab3: 89 44 24 08 mov %eax,0x8(%esp) +c0107ab7: 8b 45 f4 mov -0xc(%ebp),%eax +c0107aba: 89 44 24 04 mov %eax,0x4(%esp) +c0107abe: c7 04 24 b8 a8 10 c0 movl $0xc010a8b8,(%esp) +c0107ac5: e8 ab 88 ff ff call c0100375 + } + assert(vma_below_5 == NULL);// 确保未找到 VMA +c0107aca: 83 7d dc 00 cmpl $0x0,-0x24(%ebp) +c0107ace: 74 24 je c0107af4 +c0107ad0: c7 44 24 0c dd a8 10 movl $0xc010a8dd,0xc(%esp) +c0107ad7: c0 +c0107ad8: c7 44 24 08 ef a6 10 movl $0xc010a6ef,0x8(%esp) +c0107adf: c0 +c0107ae0: c7 44 24 04 52 01 00 movl $0x152,0x4(%esp) +c0107ae7: 00 +c0107ae8: c7 04 24 04 a7 10 c0 movl $0xc010a704,(%esp) +c0107aef: e8 4e 91 ff ff call c0100c42 <__panic> + for (i =4; i>=0; i--) { +c0107af4: ff 4d f4 decl -0xc(%ebp) +c0107af7: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) +c0107afb: 79 8b jns c0107a88 + } + + mm_destroy(mm);// 销毁 mm 结构 +c0107afd: 8b 45 e8 mov -0x18(%ebp),%eax +c0107b00: 89 04 24 mov %eax,(%esp) +c0107b03: e8 92 fa ff ff call c010759a + + // 确保释放的页面数量与初始记录一致 + assert(nr_free_pages_store == nr_free_pages()); +c0107b08: e8 3c ce ff ff call c0104949 +c0107b0d: 39 45 ec cmp %eax,-0x14(%ebp) +c0107b10: 74 24 je c0107b36 +c0107b12: c7 44 24 0c 70 a7 10 movl $0xc010a770,0xc(%esp) +c0107b19: c0 +c0107b1a: c7 44 24 08 ef a6 10 movl $0xc010a6ef,0x8(%esp) +c0107b21: c0 +c0107b22: c7 44 24 04 58 01 00 movl $0x158,0x4(%esp) +c0107b29: 00 +c0107b2a: c7 04 24 04 a7 10 c0 movl $0xc010a704,(%esp) +c0107b31: e8 0c 91 ff ff call c0100c42 <__panic> + // 输出成功信息 + cprintf("check_vma_struct() succeeded!\n"); +c0107b36: c7 04 24 f4 a8 10 c0 movl $0xc010a8f4,(%esp) +c0107b3d: e8 33 88 ff ff call c0100375 +} +c0107b42: 90 nop +c0107b43: 89 ec mov %ebp,%esp +c0107b45: 5d pop %ebp +c0107b46: c3 ret + +c0107b47 : +struct mm_struct *check_mm_struct; + +// check_pgfault - check correctness of pgfault handler +// 检查页故障处理的正确性 +static void +check_pgfault(void) { +c0107b47: 55 push %ebp +c0107b48: 89 e5 mov %esp,%ebp +c0107b4a: 83 ec 38 sub $0x38,%esp + // 保存当前空闲页面的数量,用于后续检查 + size_t nr_free_pages_store = nr_free_pages(); +c0107b4d: e8 f7 cd ff ff call c0104949 +c0107b52: 89 45 ec mov %eax,-0x14(%ebp) + // 创建内存管理结构体 + check_mm_struct = mm_create(); +c0107b55: e8 f8 f6 ff ff call c0107252 +c0107b5a: a3 6c 61 12 c0 mov %eax,0xc012616c + // 确保内存管理结构体创建成功 + assert(check_mm_struct != NULL); +c0107b5f: a1 6c 61 12 c0 mov 0xc012616c,%eax +c0107b64: 85 c0 test %eax,%eax +c0107b66: 75 24 jne c0107b8c +c0107b68: c7 44 24 0c 13 a9 10 movl $0xc010a913,0xc(%esp) +c0107b6f: c0 +c0107b70: c7 44 24 08 ef a6 10 movl $0xc010a6ef,0x8(%esp) +c0107b77: c0 +c0107b78: c7 44 24 04 68 01 00 movl $0x168,0x4(%esp) +c0107b7f: 00 +c0107b80: c7 04 24 04 a7 10 c0 movl $0xc010a704,(%esp) +c0107b87: e8 b6 90 ff ff call c0100c42 <__panic> + // 将新创建的内存管理结构体赋值给局部变量mm + struct mm_struct *mm = check_mm_struct; +c0107b8c: a1 6c 61 12 c0 mov 0xc012616c,%eax +c0107b91: 89 45 e8 mov %eax,-0x18(%ebp) + // 将引导程序的页目录复制到新创建的内存管理结构体中 + pde_t *pgdir = mm->pgdir = boot_pgdir; +c0107b94: 8b 15 e0 29 12 c0 mov 0xc01229e0,%edx +c0107b9a: 8b 45 e8 mov -0x18(%ebp),%eax +c0107b9d: 89 50 0c mov %edx,0xc(%eax) +c0107ba0: 8b 45 e8 mov -0x18(%ebp),%eax +c0107ba3: 8b 40 0c mov 0xc(%eax),%eax +c0107ba6: 89 45 e4 mov %eax,-0x1c(%ebp) + // 确保页目录的第0项是空的 + assert(pgdir[0] == 0); +c0107ba9: 8b 45 e4 mov -0x1c(%ebp),%eax +c0107bac: 8b 00 mov (%eax),%eax +c0107bae: 85 c0 test %eax,%eax +c0107bb0: 74 24 je c0107bd6 +c0107bb2: c7 44 24 0c 2b a9 10 movl $0xc010a92b,0xc(%esp) +c0107bb9: c0 +c0107bba: c7 44 24 08 ef a6 10 movl $0xc010a6ef,0x8(%esp) +c0107bc1: c0 +c0107bc2: c7 44 24 04 6e 01 00 movl $0x16e,0x4(%esp) +c0107bc9: 00 +c0107bca: c7 04 24 04 a7 10 c0 movl $0xc010a704,(%esp) +c0107bd1: e8 6c 90 ff ff call c0100c42 <__panic> + // 创建一个虚拟内存区域结构体,具有写权限 + struct vma_struct *vma = vma_create(0, PTSIZE, VM_WRITE); +c0107bd6: c7 44 24 08 02 00 00 movl $0x2,0x8(%esp) +c0107bdd: 00 +c0107bde: c7 44 24 04 00 00 40 movl $0x400000,0x4(%esp) +c0107be5: 00 +c0107be6: c7 04 24 00 00 00 00 movl $0x0,(%esp) +c0107bed: e8 db f6 ff ff call c01072cd +c0107bf2: 89 45 e0 mov %eax,-0x20(%ebp) + // 确保虚拟内存区域结构体创建成功 + assert(vma != NULL); +c0107bf5: 83 7d e0 00 cmpl $0x0,-0x20(%ebp) +c0107bf9: 75 24 jne c0107c1f +c0107bfb: c7 44 24 0c ba a7 10 movl $0xc010a7ba,0xc(%esp) +c0107c02: c0 +c0107c03: c7 44 24 08 ef a6 10 movl $0xc010a6ef,0x8(%esp) +c0107c0a: c0 +c0107c0b: c7 44 24 04 72 01 00 movl $0x172,0x4(%esp) +c0107c12: 00 +c0107c13: c7 04 24 04 a7 10 c0 movl $0xc010a704,(%esp) +c0107c1a: e8 23 90 ff ff call c0100c42 <__panic> + // 将虚拟内存区域结构体插入到内存管理结构体中 + insert_vma_struct(mm, vma); +c0107c1f: 8b 45 e0 mov -0x20(%ebp),%eax +c0107c22: 89 44 24 04 mov %eax,0x4(%esp) +c0107c26: 8b 45 e8 mov -0x18(%ebp),%eax +c0107c29: 89 04 24 mov %eax,(%esp) +c0107c2c: e8 33 f8 ff ff call c0107464 + // 定义一个地址,用于访问虚拟内存 + uintptr_t addr = 0x100; +c0107c31: c7 45 dc 00 01 00 00 movl $0x100,-0x24(%ebp) + // 确保通过该地址可以找到之前插入的虚拟内存区域 + assert(find_vma(mm, addr) == vma); +c0107c38: 8b 45 dc mov -0x24(%ebp),%eax +c0107c3b: 89 44 24 04 mov %eax,0x4(%esp) +c0107c3f: 8b 45 e8 mov -0x18(%ebp),%eax +c0107c42: 89 04 24 mov %eax,(%esp) +c0107c45: e8 c0 f6 ff ff call c010730a +c0107c4a: 39 45 e0 cmp %eax,-0x20(%ebp) +c0107c4d: 74 24 je c0107c73 +c0107c4f: c7 44 24 0c 39 a9 10 movl $0xc010a939,0xc(%esp) +c0107c56: c0 +c0107c57: c7 44 24 08 ef a6 10 movl $0xc010a6ef,0x8(%esp) +c0107c5e: c0 +c0107c5f: c7 44 24 04 78 01 00 movl $0x178,0x4(%esp) +c0107c66: 00 +c0107c67: c7 04 24 04 a7 10 c0 movl $0xc010a704,(%esp) +c0107c6e: e8 cf 8f ff ff call c0100c42 <__panic> + // 初始化一个累加器,用于校验写入的数据 + int i, sum = 0; +c0107c73: c7 45 f0 00 00 00 00 movl $0x0,-0x10(%ebp) + // 写入数据到虚拟内存,并累加 + for (i = 0; i < 100; i ++) { +c0107c7a: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) +c0107c81: eb 16 jmp c0107c99 + *(char *)(addr + i) = i; +c0107c83: 8b 55 f4 mov -0xc(%ebp),%edx +c0107c86: 8b 45 dc mov -0x24(%ebp),%eax +c0107c89: 01 d0 add %edx,%eax +c0107c8b: 8b 55 f4 mov -0xc(%ebp),%edx +c0107c8e: 88 10 mov %dl,(%eax) + sum += i; +c0107c90: 8b 45 f4 mov -0xc(%ebp),%eax +c0107c93: 01 45 f0 add %eax,-0x10(%ebp) + for (i = 0; i < 100; i ++) { +c0107c96: ff 45 f4 incl -0xc(%ebp) +c0107c99: 83 7d f4 63 cmpl $0x63,-0xc(%ebp) +c0107c9d: 7e e4 jle c0107c83 + } + // 读取虚拟内存中的数据,并减去,最终结果应为0 + for (i = 0; i < 100; i ++) { +c0107c9f: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) +c0107ca6: eb 14 jmp c0107cbc + sum -= *(char *)(addr + i); +c0107ca8: 8b 55 f4 mov -0xc(%ebp),%edx +c0107cab: 8b 45 dc mov -0x24(%ebp),%eax +c0107cae: 01 d0 add %edx,%eax +c0107cb0: 0f b6 00 movzbl (%eax),%eax +c0107cb3: 0f be c0 movsbl %al,%eax +c0107cb6: 29 45 f0 sub %eax,-0x10(%ebp) + for (i = 0; i < 100; i ++) { +c0107cb9: ff 45 f4 incl -0xc(%ebp) +c0107cbc: 83 7d f4 63 cmpl $0x63,-0xc(%ebp) +c0107cc0: 7e e6 jle c0107ca8 + } + // 确保累加器的值为0,证明数据读写正确 + assert(sum == 0); +c0107cc2: 83 7d f0 00 cmpl $0x0,-0x10(%ebp) +c0107cc6: 74 24 je c0107cec +c0107cc8: c7 44 24 0c 53 a9 10 movl $0xc010a953,0xc(%esp) +c0107ccf: c0 +c0107cd0: c7 44 24 08 ef a6 10 movl $0xc010a6ef,0x8(%esp) +c0107cd7: c0 +c0107cd8: c7 44 24 04 85 01 00 movl $0x185,0x4(%esp) +c0107cdf: 00 +c0107ce0: c7 04 24 04 a7 10 c0 movl $0xc010a704,(%esp) +c0107ce7: e8 56 8f ff ff call c0100c42 <__panic> + // 移除页目录中的相应页面 + page_remove(pgdir, ROUNDDOWN(addr, PGSIZE)); +c0107cec: 8b 45 dc mov -0x24(%ebp),%eax +c0107cef: 89 45 d8 mov %eax,-0x28(%ebp) +c0107cf2: 8b 45 d8 mov -0x28(%ebp),%eax +c0107cf5: 25 00 f0 ff ff and $0xfffff000,%eax +c0107cfa: 89 44 24 04 mov %eax,0x4(%esp) +c0107cfe: 8b 45 e4 mov -0x1c(%ebp),%eax +c0107d01: 89 04 24 mov %eax,(%esp) +c0107d04: e8 4e d4 ff ff call c0105157 + // 释放第0项页目录对应的页面 + free_page(pde2page(pgdir[0])); +c0107d09: 8b 45 e4 mov -0x1c(%ebp),%eax +c0107d0c: 8b 00 mov (%eax),%eax +c0107d0e: 89 04 24 mov %eax,(%esp) +c0107d11: e8 22 f5 ff ff call c0107238 +c0107d16: c7 44 24 04 01 00 00 movl $0x1,0x4(%esp) +c0107d1d: 00 +c0107d1e: 89 04 24 mov %eax,(%esp) +c0107d21: e8 ee cb ff ff call c0104914 + // 将页目录的第0项设置为空 + pgdir[0] = 0; +c0107d26: 8b 45 e4 mov -0x1c(%ebp),%eax +c0107d29: c7 00 00 00 00 00 movl $0x0,(%eax) + // 将内存管理结构体中的页目录设置为空 + mm->pgdir = NULL; +c0107d2f: 8b 45 e8 mov -0x18(%ebp),%eax +c0107d32: c7 40 0c 00 00 00 00 movl $0x0,0xc(%eax) + // 销毁内存管理结构体 + mm_destroy(mm); +c0107d39: 8b 45 e8 mov -0x18(%ebp),%eax +c0107d3c: 89 04 24 mov %eax,(%esp) +c0107d3f: e8 56 f8 ff ff call c010759a + // 将检查用的内存管理结构体设置为空 + check_mm_struct = NULL; +c0107d44: c7 05 6c 61 12 c0 00 movl $0x0,0xc012616c +c0107d4b: 00 00 00 + // 确保空闲页面的数量没有变化,证明内存管理正确 + assert(nr_free_pages_store == nr_free_pages()); +c0107d4e: e8 f6 cb ff ff call c0104949 +c0107d53: 39 45 ec cmp %eax,-0x14(%ebp) +c0107d56: 74 24 je c0107d7c +c0107d58: c7 44 24 0c 70 a7 10 movl $0xc010a770,0xc(%esp) +c0107d5f: c0 +c0107d60: c7 44 24 08 ef a6 10 movl $0xc010a6ef,0x8(%esp) +c0107d67: c0 +c0107d68: c7 44 24 04 93 01 00 movl $0x193,0x4(%esp) +c0107d6f: 00 +c0107d70: c7 04 24 04 a7 10 c0 movl $0xc010a704,(%esp) +c0107d77: e8 c6 8e ff ff call c0100c42 <__panic> + // 打印成功信息 + cprintf("check_pgfault() succeeded!\n"); +c0107d7c: c7 04 24 5c a9 10 c0 movl $0xc010a95c,(%esp) +c0107d83: e8 ed 85 ff ff call c0100375 +} +c0107d88: 90 nop +c0107d89: 89 ec mov %ebp,%esp +c0107d8b: 5d pop %ebp +c0107d8c: c3 ret + +c0107d8d : + * @param addr 引发页面错误的线性地址。 + * + * @return 成功返回0,失败返回负错误码。 + */ +int +do_pgfault(struct mm_struct *mm, uint32_t error_code, uintptr_t addr) { +c0107d8d: 55 push %ebp +c0107d8e: 89 e5 mov %esp,%ebp +c0107d90: 83 ec 38 sub $0x38,%esp + int ret = -E_INVAL;// 初始化返回值为无效错误 +c0107d93: c7 45 f4 fd ff ff ff movl $0xfffffffd,-0xc(%ebp) + //try to find a vma which include addr + // 尝试找到包含 addr 的 vma + struct vma_struct *vma = find_vma(mm, addr); +c0107d9a: 8b 45 10 mov 0x10(%ebp),%eax +c0107d9d: 89 44 24 04 mov %eax,0x4(%esp) +c0107da1: 8b 45 08 mov 0x8(%ebp),%eax +c0107da4: 89 04 24 mov %eax,(%esp) +c0107da7: e8 5e f5 ff ff call c010730a +c0107dac: 89 45 ec mov %eax,-0x14(%ebp) + + pgfault_num++;// 增加页面错误计数 +c0107daf: a1 70 61 12 c0 mov 0xc0126170,%eax +c0107db4: 40 inc %eax +c0107db5: a3 70 61 12 c0 mov %eax,0xc0126170 + // 检查 addr 是否在 mm 的 vma 范围内 + //If the addr is in the range of a mm's vma? + if (vma == NULL || vma->vm_start > addr) { +c0107dba: 83 7d ec 00 cmpl $0x0,-0x14(%ebp) +c0107dbe: 74 0b je c0107dcb +c0107dc0: 8b 45 ec mov -0x14(%ebp),%eax +c0107dc3: 8b 40 04 mov 0x4(%eax),%eax +c0107dc6: 39 45 10 cmp %eax,0x10(%ebp) +c0107dc9: 73 18 jae c0107de3 + cprintf("not valid addr %x, and can not find it in vma\n", addr); +c0107dcb: 8b 45 10 mov 0x10(%ebp),%eax +c0107dce: 89 44 24 04 mov %eax,0x4(%esp) +c0107dd2: c7 04 24 78 a9 10 c0 movl $0xc010a978,(%esp) +c0107dd9: e8 97 85 ff ff call c0100375 + goto failed;// 跳转到错误处理部分 +c0107dde: e9 ba 01 00 00 jmp c0107f9d + } + //check the error_code + // 检查错误代码 + switch (error_code & 3) { +c0107de3: 8b 45 0c mov 0xc(%ebp),%eax +c0107de6: 83 e0 03 and $0x3,%eax +c0107de9: 85 c0 test %eax,%eax +c0107deb: 74 34 je c0107e21 +c0107ded: 83 f8 01 cmp $0x1,%eax +c0107df0: 74 1e je c0107e10 + default: + /* 默认错误代码标志:3 (W/R=1, P=1): 写操作,存在 */ + /* error code flag : default is 3 ( W/R=1, P=1): write, present */ + case 2: /* error code flag : (W/R=1, P=0): write, not present */ + /* 错误代码标志:(W/R=1, P=0): 写操作,不存在 */ + if (!(vma->vm_flags & VM_WRITE)) { +c0107df2: 8b 45 ec mov -0x14(%ebp),%eax +c0107df5: 8b 40 0c mov 0xc(%eax),%eax +c0107df8: 83 e0 02 and $0x2,%eax +c0107dfb: 85 c0 test %eax,%eax +c0107dfd: 75 40 jne c0107e3f + cprintf("do_pgfault failed: error code flag = write AND not present, but the addr's vma cannot write\n"); +c0107dff: c7 04 24 a8 a9 10 c0 movl $0xc010a9a8,(%esp) +c0107e06: e8 6a 85 ff ff call c0100375 + goto failed;// 跳转到错误处理部分 +c0107e0b: e9 8d 01 00 00 jmp c0107f9d + } + break; + case 1: /* error code flag : (W/R=0, P=1): read, present */ + /* 错误代码标志:(W/R=0, P=1): 读操作,存在 */ + cprintf("do_pgfault failed: error code flag = read AND present\n"); +c0107e10: c7 04 24 08 aa 10 c0 movl $0xc010aa08,(%esp) +c0107e17: e8 59 85 ff ff call c0100375 + goto failed;// 跳转到错误处理部分 +c0107e1c: e9 7c 01 00 00 jmp c0107f9d + case 0: /* error code flag : (W/R=0, P=0): read, not present */ + /* 错误代码标志:(W/R=0, P=0): 读操作,不存在 */ + if (!(vma->vm_flags & (VM_READ | VM_EXEC))) { +c0107e21: 8b 45 ec mov -0x14(%ebp),%eax +c0107e24: 8b 40 0c mov 0xc(%eax),%eax +c0107e27: 83 e0 05 and $0x5,%eax +c0107e2a: 85 c0 test %eax,%eax +c0107e2c: 75 12 jne c0107e40 + cprintf("do_pgfault failed: error code flag = read AND not present, but the addr's vma cannot read or exec\n"); +c0107e2e: c7 04 24 40 aa 10 c0 movl $0xc010aa40,(%esp) +c0107e35: e8 3b 85 ff ff call c0100375 + goto failed;// 跳转到错误处理部分 +c0107e3a: e9 5e 01 00 00 jmp c0107f9d + break; +c0107e3f: 90 nop + /* 如果 (写入已存在的地址) 或 + * (写入不存在的地址且地址可写) 或 + * (读取不存在的地址且地址可读) + * 则继续处理 + */ + uint32_t perm = PTE_U;// 初始化权限标志为用户可访问 +c0107e40: c7 45 f0 04 00 00 00 movl $0x4,-0x10(%ebp) + if (vma->vm_flags & VM_WRITE) { +c0107e47: 8b 45 ec mov -0x14(%ebp),%eax +c0107e4a: 8b 40 0c mov 0xc(%eax),%eax +c0107e4d: 83 e0 02 and $0x2,%eax +c0107e50: 85 c0 test %eax,%eax +c0107e52: 74 04 je c0107e58 + perm |= PTE_W;// 如果 vma 可写,则设置写权限 +c0107e54: 83 4d f0 02 orl $0x2,-0x10(%ebp) + } + addr = ROUNDDOWN(addr, PGSIZE);// 将地址对齐到页边界 +c0107e58: 8b 45 10 mov 0x10(%ebp),%eax +c0107e5b: 89 45 e8 mov %eax,-0x18(%ebp) +c0107e5e: 8b 45 e8 mov -0x18(%ebp),%eax +c0107e61: 25 00 f0 ff ff and $0xfffff000,%eax +c0107e66: 89 45 10 mov %eax,0x10(%ebp) + + ret = -E_NO_MEM;// 初始化返回值为内存不足错误 +c0107e69: c7 45 f4 fc ff ff ff movl $0xfffffffc,-0xc(%ebp) + + pte_t *ptep=NULL; +c0107e70: c7 45 e4 00 00 00 00 movl $0x0,-0x1c(%ebp) +#endif + // try to find a pte, if pte's PT(Page Table) isn't existed, then create a PT. + // (notice the 3th parameter '1') + // 尝试找到一个页表项 pte,如果包含该 pte 的页表不存在,则创建一个页表。 + // 注意第三个参数 '1' 表示如果需要,可以创建新的页表。 + if ((ptep = get_pte(mm->pgdir, addr, 1)) == NULL) { +c0107e77: 8b 45 08 mov 0x8(%ebp),%eax +c0107e7a: 8b 40 0c mov 0xc(%eax),%eax +c0107e7d: c7 44 24 08 01 00 00 movl $0x1,0x8(%esp) +c0107e84: 00 +c0107e85: 8b 55 10 mov 0x10(%ebp),%edx +c0107e88: 89 54 24 04 mov %edx,0x4(%esp) +c0107e8c: 89 04 24 mov %eax,(%esp) +c0107e8f: e8 c9 d0 ff ff call c0104f5d +c0107e94: 89 45 e4 mov %eax,-0x1c(%ebp) +c0107e97: 83 7d e4 00 cmpl $0x0,-0x1c(%ebp) +c0107e9b: 75 11 jne c0107eae + cprintf("get_pte in do_pgfault failed\n");// 输出错误信息 +c0107e9d: c7 04 24 a3 aa 10 c0 movl $0xc010aaa3,(%esp) +c0107ea4: e8 cc 84 ff ff call c0100375 + goto failed;// 跳转到错误处理部分 +c0107ea9: e9 ef 00 00 00 jmp c0107f9d + } + // 如果页表项 pte 的物理地址不存在,则分配一页内存并映射物理地址与逻辑地址 + if (*ptep == 0) { // if the phy addr isn't exist, then alloc a page & map the phy addr with logical addr +c0107eae: 8b 45 e4 mov -0x1c(%ebp),%eax +c0107eb1: 8b 00 mov (%eax),%eax +c0107eb3: 85 c0 test %eax,%eax +c0107eb5: 75 35 jne c0107eec + if (pgdir_alloc_page(mm->pgdir, addr, perm) == NULL) { +c0107eb7: 8b 45 08 mov 0x8(%ebp),%eax +c0107eba: 8b 40 0c mov 0xc(%eax),%eax +c0107ebd: 8b 55 f0 mov -0x10(%ebp),%edx +c0107ec0: 89 54 24 08 mov %edx,0x8(%esp) +c0107ec4: 8b 55 10 mov 0x10(%ebp),%edx +c0107ec7: 89 54 24 04 mov %edx,0x4(%esp) +c0107ecb: 89 04 24 mov %eax,(%esp) +c0107ece: e8 e5 d3 ff ff call c01052b8 +c0107ed3: 85 c0 test %eax,%eax +c0107ed5: 0f 85 bb 00 00 00 jne c0107f96 + cprintf("pgdir_alloc_page in do_pgfault failed\n");// 输出错误信息 +c0107edb: c7 04 24 c4 aa 10 c0 movl $0xc010aac4,(%esp) +c0107ee2: e8 8e 84 ff ff call c0100375 + goto failed;// 跳转到错误处理部分 +c0107ee7: e9 b1 00 00 00 jmp c0107f9d + } + else { // if this pte is a swap entry, then load data from disk to a page with phy addr + // and call page_insert to map the phy addr with logical addr + // 如果页表项 pte 是一个交换项,则从磁盘加载数据到 + //一个具有物理地址的页面,并映射物理地址与逻辑地址 + if(swap_init_ok) {// 检查交换初始化是否成功 +c0107eec: a1 a4 60 12 c0 mov 0xc01260a4,%eax +c0107ef1: 85 c0 test %eax,%eax +c0107ef3: 0f 84 86 00 00 00 je c0107f7f + struct Page *page=NULL;// 声明一个页面指针 +c0107ef9: c7 45 e0 00 00 00 00 movl $0x0,-0x20(%ebp) + if ((ret = swap_in(mm, addr, &page)) != 0) { +c0107f00: 8d 45 e0 lea -0x20(%ebp),%eax +c0107f03: 89 44 24 08 mov %eax,0x8(%esp) +c0107f07: 8b 45 10 mov 0x10(%ebp),%eax +c0107f0a: 89 44 24 04 mov %eax,0x4(%esp) +c0107f0e: 8b 45 08 mov 0x8(%ebp),%eax +c0107f11: 89 04 24 mov %eax,(%esp) +c0107f14: e8 69 e5 ff ff call c0106482 +c0107f19: 89 45 f4 mov %eax,-0xc(%ebp) +c0107f1c: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) +c0107f20: 74 0e je c0107f30 + cprintf("swap_in in do_pgfault failed\n"); +c0107f22: c7 04 24 eb aa 10 c0 movl $0xc010aaeb,(%esp) +c0107f29: e8 47 84 ff ff call c0100375 +c0107f2e: eb 6d jmp c0107f9d + goto failed; + } + page_insert(mm->pgdir, page, addr, perm);// 设置物理地址与逻辑地址的映射 +c0107f30: 8b 55 e0 mov -0x20(%ebp),%edx +c0107f33: 8b 45 08 mov 0x8(%ebp),%eax +c0107f36: 8b 40 0c mov 0xc(%eax),%eax +c0107f39: 8b 4d f0 mov -0x10(%ebp),%ecx +c0107f3c: 89 4c 24 0c mov %ecx,0xc(%esp) +c0107f40: 8b 4d 10 mov 0x10(%ebp),%ecx +c0107f43: 89 4c 24 08 mov %ecx,0x8(%esp) +c0107f47: 89 54 24 04 mov %edx,0x4(%esp) +c0107f4b: 89 04 24 mov %eax,(%esp) +c0107f4e: e8 4b d2 ff ff call c010519e + swap_map_swappable(mm, addr, page, 1);// 设置页面可交换 +c0107f53: 8b 45 e0 mov -0x20(%ebp),%eax +c0107f56: c7 44 24 0c 01 00 00 movl $0x1,0xc(%esp) +c0107f5d: 00 +c0107f5e: 89 44 24 08 mov %eax,0x8(%esp) +c0107f62: 8b 45 10 mov 0x10(%ebp),%eax +c0107f65: 89 44 24 04 mov %eax,0x4(%esp) +c0107f69: 8b 45 08 mov 0x8(%ebp),%eax +c0107f6c: 89 04 24 mov %eax,(%esp) +c0107f6f: e8 46 e3 ff ff call c01062ba + page->pra_vaddr = addr;// 记录页面的虚拟地址 +c0107f74: 8b 45 e0 mov -0x20(%ebp),%eax +c0107f77: 8b 55 10 mov 0x10(%ebp),%edx +c0107f7a: 89 50 1c mov %edx,0x1c(%eax) +c0107f7d: eb 17 jmp c0107f96 + } + else { + cprintf("no swap_init_ok but ptep is %x, failed\n",*ptep); +c0107f7f: 8b 45 e4 mov -0x1c(%ebp),%eax +c0107f82: 8b 00 mov (%eax),%eax +c0107f84: 89 44 24 04 mov %eax,0x4(%esp) +c0107f88: c7 04 24 0c ab 10 c0 movl $0xc010ab0c,(%esp) +c0107f8f: e8 e1 83 ff ff call c0100375 + goto failed;// 跳转到错误处理部分 +c0107f94: eb 07 jmp c0107f9d + } + } + ret = 0;// 设置返回值为成功 +c0107f96: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) +failed: + return ret;// 返回结果 +c0107f9d: 8b 45 f4 mov -0xc(%ebp),%eax +} +c0107fa0: 89 ec mov %ebp,%esp +c0107fa2: 5d pop %ebp +c0107fa3: c3 ret + +c0107fa4 : +page2ppn(struct Page *page) { +c0107fa4: 55 push %ebp +c0107fa5: 89 e5 mov %esp,%ebp + return page - pages; +c0107fa7: 8b 15 00 60 12 c0 mov 0xc0126000,%edx +c0107fad: 8b 45 08 mov 0x8(%ebp),%eax +c0107fb0: 29 d0 sub %edx,%eax +c0107fb2: c1 f8 05 sar $0x5,%eax +} +c0107fb5: 5d pop %ebp +c0107fb6: c3 ret + +c0107fb7 : +page2pa(struct Page *page) { +c0107fb7: 55 push %ebp +c0107fb8: 89 e5 mov %esp,%ebp +c0107fba: 83 ec 04 sub $0x4,%esp + return page2ppn(page) << PGSHIFT; +c0107fbd: 8b 45 08 mov 0x8(%ebp),%eax +c0107fc0: 89 04 24 mov %eax,(%esp) +c0107fc3: e8 dc ff ff ff call c0107fa4 +c0107fc8: c1 e0 0c shl $0xc,%eax +} +c0107fcb: 89 ec mov %ebp,%esp +c0107fcd: 5d pop %ebp +c0107fce: c3 ret + +c0107fcf : +page2kva(struct Page *page) { +c0107fcf: 55 push %ebp +c0107fd0: 89 e5 mov %esp,%ebp +c0107fd2: 83 ec 28 sub $0x28,%esp + return KADDR(page2pa(page)); +c0107fd5: 8b 45 08 mov 0x8(%ebp),%eax +c0107fd8: 89 04 24 mov %eax,(%esp) +c0107fdb: e8 d7 ff ff ff call c0107fb7 +c0107fe0: 89 45 f4 mov %eax,-0xc(%ebp) +c0107fe3: 8b 45 f4 mov -0xc(%ebp),%eax +c0107fe6: c1 e8 0c shr $0xc,%eax +c0107fe9: 89 45 f0 mov %eax,-0x10(%ebp) +c0107fec: a1 04 60 12 c0 mov 0xc0126004,%eax +c0107ff1: 39 45 f0 cmp %eax,-0x10(%ebp) +c0107ff4: 72 23 jb c0108019 +c0107ff6: 8b 45 f4 mov -0xc(%ebp),%eax +c0107ff9: 89 44 24 0c mov %eax,0xc(%esp) +c0107ffd: c7 44 24 08 34 ab 10 movl $0xc010ab34,0x8(%esp) +c0108004: c0 +c0108005: c7 44 24 04 62 00 00 movl $0x62,0x4(%esp) +c010800c: 00 +c010800d: c7 04 24 57 ab 10 c0 movl $0xc010ab57,(%esp) +c0108014: e8 29 8c ff ff call c0100c42 <__panic> +c0108019: 8b 45 f4 mov -0xc(%ebp),%eax +c010801c: 2d 00 00 00 40 sub $0x40000000,%eax +} +c0108021: 89 ec mov %ebp,%esp +c0108023: 5d pop %ebp +c0108024: c3 ret + +c0108025 : +#include +#include +#include + +void +swapfs_init(void) { +c0108025: 55 push %ebp +c0108026: 89 e5 mov %esp,%ebp +c0108028: 83 ec 18 sub $0x18,%esp + static_assert((PGSIZE % SECTSIZE) == 0); + if (!ide_device_valid(SWAP_DEV_NO)) { +c010802b: c7 04 24 01 00 00 00 movl $0x1,(%esp) +c0108032: e8 ba 99 ff ff call c01019f1 +c0108037: 85 c0 test %eax,%eax +c0108039: 75 1c jne c0108057 + panic("swap fs isn't available.\n"); +c010803b: c7 44 24 08 65 ab 10 movl $0xc010ab65,0x8(%esp) +c0108042: c0 +c0108043: c7 44 24 04 0d 00 00 movl $0xd,0x4(%esp) +c010804a: 00 +c010804b: c7 04 24 7f ab 10 c0 movl $0xc010ab7f,(%esp) +c0108052: e8 eb 8b ff ff call c0100c42 <__panic> + } + max_swap_offset = ide_device_size(SWAP_DEV_NO) / (PGSIZE / SECTSIZE); +c0108057: c7 04 24 01 00 00 00 movl $0x1,(%esp) +c010805e: e8 ce 99 ff ff call c0101a31 +c0108063: c1 e8 03 shr $0x3,%eax +c0108066: a3 a0 60 12 c0 mov %eax,0xc01260a0 +} +c010806b: 90 nop +c010806c: 89 ec mov %ebp,%esp +c010806e: 5d pop %ebp +c010806f: c3 ret + +c0108070 : +//entry:表示要读取的交换条目。page:指向要填充的内存页的指针。 +//函数返回 ide_read_secs 的结果,表示读取操作是否成功 +//计算交换条目的偏移量 swap_offset(entry)。 +//使用 ide_read_secs 函数从交换设备 SWAP_DEV_NO 中读取指定数量的扇区(PAGE_NSECT)到内存页 page2kva(page) 中。 +int +swapfs_read(swap_entry_t entry, struct Page *page) { +c0108070: 55 push %ebp +c0108071: 89 e5 mov %esp,%ebp +c0108073: 83 ec 28 sub $0x28,%esp + return ide_read_secs(SWAP_DEV_NO, swap_offset(entry) * PAGE_NSECT, page2kva(page), PAGE_NSECT); +c0108076: 8b 45 0c mov 0xc(%ebp),%eax +c0108079: 89 04 24 mov %eax,(%esp) +c010807c: e8 4e ff ff ff call c0107fcf +c0108081: 8b 55 08 mov 0x8(%ebp),%edx +c0108084: c1 ea 08 shr $0x8,%edx +c0108087: 89 55 f4 mov %edx,-0xc(%ebp) +c010808a: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) +c010808e: 74 0b je c010809b +c0108090: 8b 15 a0 60 12 c0 mov 0xc01260a0,%edx +c0108096: 39 55 f4 cmp %edx,-0xc(%ebp) +c0108099: 72 23 jb c01080be +c010809b: 8b 45 08 mov 0x8(%ebp),%eax +c010809e: 89 44 24 0c mov %eax,0xc(%esp) +c01080a2: c7 44 24 08 90 ab 10 movl $0xc010ab90,0x8(%esp) +c01080a9: c0 +c01080aa: c7 44 24 04 18 00 00 movl $0x18,0x4(%esp) +c01080b1: 00 +c01080b2: c7 04 24 7f ab 10 c0 movl $0xc010ab7f,(%esp) +c01080b9: e8 84 8b ff ff call c0100c42 <__panic> +c01080be: 8b 55 f4 mov -0xc(%ebp),%edx +c01080c1: c1 e2 03 shl $0x3,%edx +c01080c4: c7 44 24 0c 08 00 00 movl $0x8,0xc(%esp) +c01080cb: 00 +c01080cc: 89 44 24 08 mov %eax,0x8(%esp) +c01080d0: 89 54 24 04 mov %edx,0x4(%esp) +c01080d4: c7 04 24 01 00 00 00 movl $0x1,(%esp) +c01080db: e8 8e 99 ff ff call c0101a6e +} +c01080e0: 89 ec mov %ebp,%esp +c01080e2: 5d pop %ebp +c01080e3: c3 ret + +c01080e4 : + +int +swapfs_write(swap_entry_t entry, struct Page *page) { +c01080e4: 55 push %ebp +c01080e5: 89 e5 mov %esp,%ebp +c01080e7: 83 ec 28 sub $0x28,%esp + return ide_write_secs(SWAP_DEV_NO, swap_offset(entry) * PAGE_NSECT, page2kva(page), PAGE_NSECT); +c01080ea: 8b 45 0c mov 0xc(%ebp),%eax +c01080ed: 89 04 24 mov %eax,(%esp) +c01080f0: e8 da fe ff ff call c0107fcf +c01080f5: 8b 55 08 mov 0x8(%ebp),%edx +c01080f8: c1 ea 08 shr $0x8,%edx +c01080fb: 89 55 f4 mov %edx,-0xc(%ebp) +c01080fe: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) +c0108102: 74 0b je c010810f +c0108104: 8b 15 a0 60 12 c0 mov 0xc01260a0,%edx +c010810a: 39 55 f4 cmp %edx,-0xc(%ebp) +c010810d: 72 23 jb c0108132 +c010810f: 8b 45 08 mov 0x8(%ebp),%eax +c0108112: 89 44 24 0c mov %eax,0xc(%esp) +c0108116: c7 44 24 08 90 ab 10 movl $0xc010ab90,0x8(%esp) +c010811d: c0 +c010811e: c7 44 24 04 1d 00 00 movl $0x1d,0x4(%esp) +c0108125: 00 +c0108126: c7 04 24 7f ab 10 c0 movl $0xc010ab7f,(%esp) +c010812d: e8 10 8b ff ff call c0100c42 <__panic> +c0108132: 8b 55 f4 mov -0xc(%ebp),%edx +c0108135: c1 e2 03 shl $0x3,%edx +c0108138: c7 44 24 0c 08 00 00 movl $0x8,0xc(%esp) +c010813f: 00 +c0108140: 89 44 24 08 mov %eax,0x8(%esp) +c0108144: 89 54 24 04 mov %edx,0x4(%esp) +c0108148: c7 04 24 01 00 00 00 movl $0x1,(%esp) +c010814f: e8 5b 9b ff ff call c0101caf +} +c0108154: 89 ec mov %ebp,%esp +c0108156: 5d pop %ebp +c0108157: c3 ret + +c0108158 : + * @width: maximum number of digits, if the actual width is less than @width, use @padc instead + * @padc: character that padded on the left if the actual width is less than @width + * */ +static void +printnum(void (*putch)(int, void*), void *putdat, + unsigned long long num, unsigned base, int width, int padc) { +c0108158: 55 push %ebp +c0108159: 89 e5 mov %esp,%ebp +c010815b: 83 ec 58 sub $0x58,%esp +c010815e: 8b 45 10 mov 0x10(%ebp),%eax +c0108161: 89 45 d0 mov %eax,-0x30(%ebp) +c0108164: 8b 45 14 mov 0x14(%ebp),%eax +c0108167: 89 45 d4 mov %eax,-0x2c(%ebp) + unsigned long long result = num; +c010816a: 8b 45 d0 mov -0x30(%ebp),%eax +c010816d: 8b 55 d4 mov -0x2c(%ebp),%edx +c0108170: 89 45 e8 mov %eax,-0x18(%ebp) +c0108173: 89 55 ec mov %edx,-0x14(%ebp) + unsigned mod = do_div(result, base); +c0108176: 8b 45 18 mov 0x18(%ebp),%eax +c0108179: 89 45 e4 mov %eax,-0x1c(%ebp) +c010817c: 8b 45 e8 mov -0x18(%ebp),%eax +c010817f: 8b 55 ec mov -0x14(%ebp),%edx +c0108182: 89 45 e0 mov %eax,-0x20(%ebp) +c0108185: 89 55 f0 mov %edx,-0x10(%ebp) +c0108188: 8b 45 f0 mov -0x10(%ebp),%eax +c010818b: 89 45 f4 mov %eax,-0xc(%ebp) +c010818e: 83 7d f0 00 cmpl $0x0,-0x10(%ebp) +c0108192: 74 1c je c01081b0 +c0108194: 8b 45 f0 mov -0x10(%ebp),%eax +c0108197: ba 00 00 00 00 mov $0x0,%edx +c010819c: f7 75 e4 divl -0x1c(%ebp) +c010819f: 89 55 f4 mov %edx,-0xc(%ebp) +c01081a2: 8b 45 f0 mov -0x10(%ebp),%eax +c01081a5: ba 00 00 00 00 mov $0x0,%edx +c01081aa: f7 75 e4 divl -0x1c(%ebp) +c01081ad: 89 45 f0 mov %eax,-0x10(%ebp) +c01081b0: 8b 45 e0 mov -0x20(%ebp),%eax +c01081b3: 8b 55 f4 mov -0xc(%ebp),%edx +c01081b6: f7 75 e4 divl -0x1c(%ebp) +c01081b9: 89 45 e0 mov %eax,-0x20(%ebp) +c01081bc: 89 55 dc mov %edx,-0x24(%ebp) +c01081bf: 8b 45 e0 mov -0x20(%ebp),%eax +c01081c2: 8b 55 f0 mov -0x10(%ebp),%edx +c01081c5: 89 45 e8 mov %eax,-0x18(%ebp) +c01081c8: 89 55 ec mov %edx,-0x14(%ebp) +c01081cb: 8b 45 dc mov -0x24(%ebp),%eax +c01081ce: 89 45 d8 mov %eax,-0x28(%ebp) + + // first recursively print all preceding (more significant) digits + if (num >= base) { +c01081d1: 8b 45 18 mov 0x18(%ebp),%eax +c01081d4: ba 00 00 00 00 mov $0x0,%edx +c01081d9: 8b 4d d4 mov -0x2c(%ebp),%ecx +c01081dc: 39 45 d0 cmp %eax,-0x30(%ebp) +c01081df: 19 d1 sbb %edx,%ecx +c01081e1: 72 4c jb c010822f + printnum(putch, putdat, result, base, width - 1, padc); +c01081e3: 8b 45 1c mov 0x1c(%ebp),%eax +c01081e6: 8d 50 ff lea -0x1(%eax),%edx +c01081e9: 8b 45 20 mov 0x20(%ebp),%eax +c01081ec: 89 44 24 18 mov %eax,0x18(%esp) +c01081f0: 89 54 24 14 mov %edx,0x14(%esp) +c01081f4: 8b 45 18 mov 0x18(%ebp),%eax +c01081f7: 89 44 24 10 mov %eax,0x10(%esp) +c01081fb: 8b 45 e8 mov -0x18(%ebp),%eax +c01081fe: 8b 55 ec mov -0x14(%ebp),%edx +c0108201: 89 44 24 08 mov %eax,0x8(%esp) +c0108205: 89 54 24 0c mov %edx,0xc(%esp) +c0108209: 8b 45 0c mov 0xc(%ebp),%eax +c010820c: 89 44 24 04 mov %eax,0x4(%esp) +c0108210: 8b 45 08 mov 0x8(%ebp),%eax +c0108213: 89 04 24 mov %eax,(%esp) +c0108216: e8 3d ff ff ff call c0108158 +c010821b: eb 1b jmp c0108238 + } else { + // print any needed pad characters before first digit + while (-- width > 0) + putch(padc, putdat); +c010821d: 8b 45 0c mov 0xc(%ebp),%eax +c0108220: 89 44 24 04 mov %eax,0x4(%esp) +c0108224: 8b 45 20 mov 0x20(%ebp),%eax +c0108227: 89 04 24 mov %eax,(%esp) +c010822a: 8b 45 08 mov 0x8(%ebp),%eax +c010822d: ff d0 call *%eax + while (-- width > 0) +c010822f: ff 4d 1c decl 0x1c(%ebp) +c0108232: 83 7d 1c 00 cmpl $0x0,0x1c(%ebp) +c0108236: 7f e5 jg c010821d + } + // then print this (the least significant) digit + putch("0123456789abcdef"[mod], putdat); +c0108238: 8b 45 d8 mov -0x28(%ebp),%eax +c010823b: 05 30 ac 10 c0 add $0xc010ac30,%eax +c0108240: 0f b6 00 movzbl (%eax),%eax +c0108243: 0f be c0 movsbl %al,%eax +c0108246: 8b 55 0c mov 0xc(%ebp),%edx +c0108249: 89 54 24 04 mov %edx,0x4(%esp) +c010824d: 89 04 24 mov %eax,(%esp) +c0108250: 8b 45 08 mov 0x8(%ebp),%eax +c0108253: ff d0 call *%eax +} +c0108255: 90 nop +c0108256: 89 ec mov %ebp,%esp +c0108258: 5d pop %ebp +c0108259: c3 ret + +c010825a : + * getuint - get an unsigned int of various possible sizes from a varargs list + * @ap: a varargs list pointer + * @lflag: determines the size of the vararg that @ap points to + * */ +static unsigned long long +getuint(va_list *ap, int lflag) { +c010825a: 55 push %ebp +c010825b: 89 e5 mov %esp,%ebp + if (lflag >= 2) { +c010825d: 83 7d 0c 01 cmpl $0x1,0xc(%ebp) +c0108261: 7e 14 jle c0108277 + return va_arg(*ap, unsigned long long); +c0108263: 8b 45 08 mov 0x8(%ebp),%eax +c0108266: 8b 00 mov (%eax),%eax +c0108268: 8d 48 08 lea 0x8(%eax),%ecx +c010826b: 8b 55 08 mov 0x8(%ebp),%edx +c010826e: 89 0a mov %ecx,(%edx) +c0108270: 8b 50 04 mov 0x4(%eax),%edx +c0108273: 8b 00 mov (%eax),%eax +c0108275: eb 30 jmp c01082a7 + } + else if (lflag) { +c0108277: 83 7d 0c 00 cmpl $0x0,0xc(%ebp) +c010827b: 74 16 je c0108293 + return va_arg(*ap, unsigned long); +c010827d: 8b 45 08 mov 0x8(%ebp),%eax +c0108280: 8b 00 mov (%eax),%eax +c0108282: 8d 48 04 lea 0x4(%eax),%ecx +c0108285: 8b 55 08 mov 0x8(%ebp),%edx +c0108288: 89 0a mov %ecx,(%edx) +c010828a: 8b 00 mov (%eax),%eax +c010828c: ba 00 00 00 00 mov $0x0,%edx +c0108291: eb 14 jmp c01082a7 + } + else { + return va_arg(*ap, unsigned int); +c0108293: 8b 45 08 mov 0x8(%ebp),%eax +c0108296: 8b 00 mov (%eax),%eax +c0108298: 8d 48 04 lea 0x4(%eax),%ecx +c010829b: 8b 55 08 mov 0x8(%ebp),%edx +c010829e: 89 0a mov %ecx,(%edx) +c01082a0: 8b 00 mov (%eax),%eax +c01082a2: ba 00 00 00 00 mov $0x0,%edx + } +} +c01082a7: 5d pop %ebp +c01082a8: c3 ret + +c01082a9 : + * getint - same as getuint but signed, we can't use getuint because of sign extension + * @ap: a varargs list pointer + * @lflag: determines the size of the vararg that @ap points to + * */ +static long long +getint(va_list *ap, int lflag) { +c01082a9: 55 push %ebp +c01082aa: 89 e5 mov %esp,%ebp + if (lflag >= 2) { +c01082ac: 83 7d 0c 01 cmpl $0x1,0xc(%ebp) +c01082b0: 7e 14 jle c01082c6 + return va_arg(*ap, long long); +c01082b2: 8b 45 08 mov 0x8(%ebp),%eax +c01082b5: 8b 00 mov (%eax),%eax +c01082b7: 8d 48 08 lea 0x8(%eax),%ecx +c01082ba: 8b 55 08 mov 0x8(%ebp),%edx +c01082bd: 89 0a mov %ecx,(%edx) +c01082bf: 8b 50 04 mov 0x4(%eax),%edx +c01082c2: 8b 00 mov (%eax),%eax +c01082c4: eb 28 jmp c01082ee + } + else if (lflag) { +c01082c6: 83 7d 0c 00 cmpl $0x0,0xc(%ebp) +c01082ca: 74 12 je c01082de + return va_arg(*ap, long); +c01082cc: 8b 45 08 mov 0x8(%ebp),%eax +c01082cf: 8b 00 mov (%eax),%eax +c01082d1: 8d 48 04 lea 0x4(%eax),%ecx +c01082d4: 8b 55 08 mov 0x8(%ebp),%edx +c01082d7: 89 0a mov %ecx,(%edx) +c01082d9: 8b 00 mov (%eax),%eax +c01082db: 99 cltd +c01082dc: eb 10 jmp c01082ee + } + else { + return va_arg(*ap, int); +c01082de: 8b 45 08 mov 0x8(%ebp),%eax +c01082e1: 8b 00 mov (%eax),%eax +c01082e3: 8d 48 04 lea 0x4(%eax),%ecx +c01082e6: 8b 55 08 mov 0x8(%ebp),%edx +c01082e9: 89 0a mov %ecx,(%edx) +c01082eb: 8b 00 mov (%eax),%eax +c01082ed: 99 cltd + } +} +c01082ee: 5d pop %ebp +c01082ef: c3 ret + +c01082f0 : + * @putch: specified putch function, print a single character + * @putdat: used by @putch function + * @fmt: the format string to use + * */ +void +printfmt(void (*putch)(int, void*), void *putdat, const char *fmt, ...) { +c01082f0: 55 push %ebp +c01082f1: 89 e5 mov %esp,%ebp +c01082f3: 83 ec 28 sub $0x28,%esp + va_list ap; + + va_start(ap, fmt); +c01082f6: 8d 45 14 lea 0x14(%ebp),%eax +c01082f9: 89 45 f4 mov %eax,-0xc(%ebp) + vprintfmt(putch, putdat, fmt, ap); +c01082fc: 8b 45 f4 mov -0xc(%ebp),%eax +c01082ff: 89 44 24 0c mov %eax,0xc(%esp) +c0108303: 8b 45 10 mov 0x10(%ebp),%eax +c0108306: 89 44 24 08 mov %eax,0x8(%esp) +c010830a: 8b 45 0c mov 0xc(%ebp),%eax +c010830d: 89 44 24 04 mov %eax,0x4(%esp) +c0108311: 8b 45 08 mov 0x8(%ebp),%eax +c0108314: 89 04 24 mov %eax,(%esp) +c0108317: e8 05 00 00 00 call c0108321 + va_end(ap); +} +c010831c: 90 nop +c010831d: 89 ec mov %ebp,%esp +c010831f: 5d pop %ebp +c0108320: c3 ret + +c0108321 : + * + * Call this function if you are already dealing with a va_list. + * Or you probably want printfmt() instead. + * */ +void +vprintfmt(void (*putch)(int, void*), void *putdat, const char *fmt, va_list ap) { +c0108321: 55 push %ebp +c0108322: 89 e5 mov %esp,%ebp +c0108324: 56 push %esi +c0108325: 53 push %ebx +c0108326: 83 ec 40 sub $0x40,%esp + register int ch, err; + unsigned long long num; + int base, width, precision, lflag, altflag; + + while (1) { + while ((ch = *(unsigned char *)fmt ++) != '%') { +c0108329: eb 17 jmp c0108342 + if (ch == '\0') { +c010832b: 85 db test %ebx,%ebx +c010832d: 0f 84 bf 03 00 00 je c01086f2 + return; + } + putch(ch, putdat); +c0108333: 8b 45 0c mov 0xc(%ebp),%eax +c0108336: 89 44 24 04 mov %eax,0x4(%esp) +c010833a: 89 1c 24 mov %ebx,(%esp) +c010833d: 8b 45 08 mov 0x8(%ebp),%eax +c0108340: ff d0 call *%eax + while ((ch = *(unsigned char *)fmt ++) != '%') { +c0108342: 8b 45 10 mov 0x10(%ebp),%eax +c0108345: 8d 50 01 lea 0x1(%eax),%edx +c0108348: 89 55 10 mov %edx,0x10(%ebp) +c010834b: 0f b6 00 movzbl (%eax),%eax +c010834e: 0f b6 d8 movzbl %al,%ebx +c0108351: 83 fb 25 cmp $0x25,%ebx +c0108354: 75 d5 jne c010832b + } + + // Process a %-escape sequence + char padc = ' '; +c0108356: c6 45 db 20 movb $0x20,-0x25(%ebp) + width = precision = -1; +c010835a: c7 45 e4 ff ff ff ff movl $0xffffffff,-0x1c(%ebp) +c0108361: 8b 45 e4 mov -0x1c(%ebp),%eax +c0108364: 89 45 e8 mov %eax,-0x18(%ebp) + lflag = altflag = 0; +c0108367: c7 45 dc 00 00 00 00 movl $0x0,-0x24(%ebp) +c010836e: 8b 45 dc mov -0x24(%ebp),%eax +c0108371: 89 45 e0 mov %eax,-0x20(%ebp) + + reswitch: + switch (ch = *(unsigned char *)fmt ++) { +c0108374: 8b 45 10 mov 0x10(%ebp),%eax +c0108377: 8d 50 01 lea 0x1(%eax),%edx +c010837a: 89 55 10 mov %edx,0x10(%ebp) +c010837d: 0f b6 00 movzbl (%eax),%eax +c0108380: 0f b6 d8 movzbl %al,%ebx +c0108383: 8d 43 dd lea -0x23(%ebx),%eax +c0108386: 83 f8 55 cmp $0x55,%eax +c0108389: 0f 87 37 03 00 00 ja c01086c6 +c010838f: 8b 04 85 54 ac 10 c0 mov -0x3fef53ac(,%eax,4),%eax +c0108396: ff e0 jmp *%eax + + // flag to pad on the right + case '-': + padc = '-'; +c0108398: c6 45 db 2d movb $0x2d,-0x25(%ebp) + goto reswitch; +c010839c: eb d6 jmp c0108374 + + // flag to pad with 0's instead of spaces + case '0': + padc = '0'; +c010839e: c6 45 db 30 movb $0x30,-0x25(%ebp) + goto reswitch; +c01083a2: eb d0 jmp c0108374 + + // width field + case '1' ... '9': + for (precision = 0; ; ++ fmt) { +c01083a4: c7 45 e4 00 00 00 00 movl $0x0,-0x1c(%ebp) + precision = precision * 10 + ch - '0'; +c01083ab: 8b 55 e4 mov -0x1c(%ebp),%edx +c01083ae: 89 d0 mov %edx,%eax +c01083b0: c1 e0 02 shl $0x2,%eax +c01083b3: 01 d0 add %edx,%eax +c01083b5: 01 c0 add %eax,%eax +c01083b7: 01 d8 add %ebx,%eax +c01083b9: 83 e8 30 sub $0x30,%eax +c01083bc: 89 45 e4 mov %eax,-0x1c(%ebp) + ch = *fmt; +c01083bf: 8b 45 10 mov 0x10(%ebp),%eax +c01083c2: 0f b6 00 movzbl (%eax),%eax +c01083c5: 0f be d8 movsbl %al,%ebx + if (ch < '0' || ch > '9') { +c01083c8: 83 fb 2f cmp $0x2f,%ebx +c01083cb: 7e 38 jle c0108405 +c01083cd: 83 fb 39 cmp $0x39,%ebx +c01083d0: 7f 33 jg c0108405 + for (precision = 0; ; ++ fmt) { +c01083d2: ff 45 10 incl 0x10(%ebp) + precision = precision * 10 + ch - '0'; +c01083d5: eb d4 jmp c01083ab + } + } + goto process_precision; + + case '*': + precision = va_arg(ap, int); +c01083d7: 8b 45 14 mov 0x14(%ebp),%eax +c01083da: 8d 50 04 lea 0x4(%eax),%edx +c01083dd: 89 55 14 mov %edx,0x14(%ebp) +c01083e0: 8b 00 mov (%eax),%eax +c01083e2: 89 45 e4 mov %eax,-0x1c(%ebp) + goto process_precision; +c01083e5: eb 1f jmp c0108406 + + case '.': + if (width < 0) +c01083e7: 83 7d e8 00 cmpl $0x0,-0x18(%ebp) +c01083eb: 79 87 jns c0108374 + width = 0; +c01083ed: c7 45 e8 00 00 00 00 movl $0x0,-0x18(%ebp) + goto reswitch; +c01083f4: e9 7b ff ff ff jmp c0108374 + + case '#': + altflag = 1; +c01083f9: c7 45 dc 01 00 00 00 movl $0x1,-0x24(%ebp) + goto reswitch; +c0108400: e9 6f ff ff ff jmp c0108374 + goto process_precision; +c0108405: 90 nop + + process_precision: + if (width < 0) +c0108406: 83 7d e8 00 cmpl $0x0,-0x18(%ebp) +c010840a: 0f 89 64 ff ff ff jns c0108374 + width = precision, precision = -1; +c0108410: 8b 45 e4 mov -0x1c(%ebp),%eax +c0108413: 89 45 e8 mov %eax,-0x18(%ebp) +c0108416: c7 45 e4 ff ff ff ff movl $0xffffffff,-0x1c(%ebp) + goto reswitch; +c010841d: e9 52 ff ff ff jmp c0108374 + + // long flag (doubled for long long) + case 'l': + lflag ++; +c0108422: ff 45 e0 incl -0x20(%ebp) + goto reswitch; +c0108425: e9 4a ff ff ff jmp c0108374 + + // character + case 'c': + putch(va_arg(ap, int), putdat); +c010842a: 8b 45 14 mov 0x14(%ebp),%eax +c010842d: 8d 50 04 lea 0x4(%eax),%edx +c0108430: 89 55 14 mov %edx,0x14(%ebp) +c0108433: 8b 00 mov (%eax),%eax +c0108435: 8b 55 0c mov 0xc(%ebp),%edx +c0108438: 89 54 24 04 mov %edx,0x4(%esp) +c010843c: 89 04 24 mov %eax,(%esp) +c010843f: 8b 45 08 mov 0x8(%ebp),%eax +c0108442: ff d0 call *%eax + break; +c0108444: e9 a4 02 00 00 jmp c01086ed + + // error message + case 'e': + err = va_arg(ap, int); +c0108449: 8b 45 14 mov 0x14(%ebp),%eax +c010844c: 8d 50 04 lea 0x4(%eax),%edx +c010844f: 89 55 14 mov %edx,0x14(%ebp) +c0108452: 8b 18 mov (%eax),%ebx + if (err < 0) { +c0108454: 85 db test %ebx,%ebx +c0108456: 79 02 jns c010845a + err = -err; +c0108458: f7 db neg %ebx + } + if (err > MAXERROR || (p = error_string[err]) == NULL) { +c010845a: 83 fb 06 cmp $0x6,%ebx +c010845d: 7f 0b jg c010846a +c010845f: 8b 34 9d 14 ac 10 c0 mov -0x3fef53ec(,%ebx,4),%esi +c0108466: 85 f6 test %esi,%esi +c0108468: 75 23 jne c010848d + printfmt(putch, putdat, "error %d", err); +c010846a: 89 5c 24 0c mov %ebx,0xc(%esp) +c010846e: c7 44 24 08 41 ac 10 movl $0xc010ac41,0x8(%esp) +c0108475: c0 +c0108476: 8b 45 0c mov 0xc(%ebp),%eax +c0108479: 89 44 24 04 mov %eax,0x4(%esp) +c010847d: 8b 45 08 mov 0x8(%ebp),%eax +c0108480: 89 04 24 mov %eax,(%esp) +c0108483: e8 68 fe ff ff call c01082f0 + } + else { + printfmt(putch, putdat, "%s", p); + } + break; +c0108488: e9 60 02 00 00 jmp c01086ed + printfmt(putch, putdat, "%s", p); +c010848d: 89 74 24 0c mov %esi,0xc(%esp) +c0108491: c7 44 24 08 4a ac 10 movl $0xc010ac4a,0x8(%esp) +c0108498: c0 +c0108499: 8b 45 0c mov 0xc(%ebp),%eax +c010849c: 89 44 24 04 mov %eax,0x4(%esp) +c01084a0: 8b 45 08 mov 0x8(%ebp),%eax +c01084a3: 89 04 24 mov %eax,(%esp) +c01084a6: e8 45 fe ff ff call c01082f0 + break; +c01084ab: e9 3d 02 00 00 jmp c01086ed + + // string + case 's': + if ((p = va_arg(ap, char *)) == NULL) { +c01084b0: 8b 45 14 mov 0x14(%ebp),%eax +c01084b3: 8d 50 04 lea 0x4(%eax),%edx +c01084b6: 89 55 14 mov %edx,0x14(%ebp) +c01084b9: 8b 30 mov (%eax),%esi +c01084bb: 85 f6 test %esi,%esi +c01084bd: 75 05 jne c01084c4 + p = "(null)"; +c01084bf: be 4d ac 10 c0 mov $0xc010ac4d,%esi + } + if (width > 0 && padc != '-') { +c01084c4: 83 7d e8 00 cmpl $0x0,-0x18(%ebp) +c01084c8: 7e 76 jle c0108540 +c01084ca: 80 7d db 2d cmpb $0x2d,-0x25(%ebp) +c01084ce: 74 70 je c0108540 + for (width -= strnlen(p, precision); width > 0; width --) { +c01084d0: 8b 45 e4 mov -0x1c(%ebp),%eax +c01084d3: 89 44 24 04 mov %eax,0x4(%esp) +c01084d7: 89 34 24 mov %esi,(%esp) +c01084da: e8 ee 03 00 00 call c01088cd +c01084df: 89 c2 mov %eax,%edx +c01084e1: 8b 45 e8 mov -0x18(%ebp),%eax +c01084e4: 29 d0 sub %edx,%eax +c01084e6: 89 45 e8 mov %eax,-0x18(%ebp) +c01084e9: eb 16 jmp c0108501 + putch(padc, putdat); +c01084eb: 0f be 45 db movsbl -0x25(%ebp),%eax +c01084ef: 8b 55 0c mov 0xc(%ebp),%edx +c01084f2: 89 54 24 04 mov %edx,0x4(%esp) +c01084f6: 89 04 24 mov %eax,(%esp) +c01084f9: 8b 45 08 mov 0x8(%ebp),%eax +c01084fc: ff d0 call *%eax + for (width -= strnlen(p, precision); width > 0; width --) { +c01084fe: ff 4d e8 decl -0x18(%ebp) +c0108501: 83 7d e8 00 cmpl $0x0,-0x18(%ebp) +c0108505: 7f e4 jg c01084eb + } + } + for (; (ch = *p ++) != '\0' && (precision < 0 || -- precision >= 0); width --) { +c0108507: eb 37 jmp c0108540 + if (altflag && (ch < ' ' || ch > '~')) { +c0108509: 83 7d dc 00 cmpl $0x0,-0x24(%ebp) +c010850d: 74 1f je c010852e +c010850f: 83 fb 1f cmp $0x1f,%ebx +c0108512: 7e 05 jle c0108519 +c0108514: 83 fb 7e cmp $0x7e,%ebx +c0108517: 7e 15 jle c010852e + putch('?', putdat); +c0108519: 8b 45 0c mov 0xc(%ebp),%eax +c010851c: 89 44 24 04 mov %eax,0x4(%esp) +c0108520: c7 04 24 3f 00 00 00 movl $0x3f,(%esp) +c0108527: 8b 45 08 mov 0x8(%ebp),%eax +c010852a: ff d0 call *%eax +c010852c: eb 0f jmp c010853d + } + else { + putch(ch, putdat); +c010852e: 8b 45 0c mov 0xc(%ebp),%eax +c0108531: 89 44 24 04 mov %eax,0x4(%esp) +c0108535: 89 1c 24 mov %ebx,(%esp) +c0108538: 8b 45 08 mov 0x8(%ebp),%eax +c010853b: ff d0 call *%eax + for (; (ch = *p ++) != '\0' && (precision < 0 || -- precision >= 0); width --) { +c010853d: ff 4d e8 decl -0x18(%ebp) +c0108540: 89 f0 mov %esi,%eax +c0108542: 8d 70 01 lea 0x1(%eax),%esi +c0108545: 0f b6 00 movzbl (%eax),%eax +c0108548: 0f be d8 movsbl %al,%ebx +c010854b: 85 db test %ebx,%ebx +c010854d: 74 27 je c0108576 +c010854f: 83 7d e4 00 cmpl $0x0,-0x1c(%ebp) +c0108553: 78 b4 js c0108509 +c0108555: ff 4d e4 decl -0x1c(%ebp) +c0108558: 83 7d e4 00 cmpl $0x0,-0x1c(%ebp) +c010855c: 79 ab jns c0108509 + } + } + for (; width > 0; width --) { +c010855e: eb 16 jmp c0108576 + putch(' ', putdat); +c0108560: 8b 45 0c mov 0xc(%ebp),%eax +c0108563: 89 44 24 04 mov %eax,0x4(%esp) +c0108567: c7 04 24 20 00 00 00 movl $0x20,(%esp) +c010856e: 8b 45 08 mov 0x8(%ebp),%eax +c0108571: ff d0 call *%eax + for (; width > 0; width --) { +c0108573: ff 4d e8 decl -0x18(%ebp) +c0108576: 83 7d e8 00 cmpl $0x0,-0x18(%ebp) +c010857a: 7f e4 jg c0108560 + } + break; +c010857c: e9 6c 01 00 00 jmp c01086ed + + // (signed) decimal + case 'd': + num = getint(&ap, lflag); +c0108581: 8b 45 e0 mov -0x20(%ebp),%eax +c0108584: 89 44 24 04 mov %eax,0x4(%esp) +c0108588: 8d 45 14 lea 0x14(%ebp),%eax +c010858b: 89 04 24 mov %eax,(%esp) +c010858e: e8 16 fd ff ff call c01082a9 +c0108593: 89 45 f0 mov %eax,-0x10(%ebp) +c0108596: 89 55 f4 mov %edx,-0xc(%ebp) + if ((long long)num < 0) { +c0108599: 8b 45 f0 mov -0x10(%ebp),%eax +c010859c: 8b 55 f4 mov -0xc(%ebp),%edx +c010859f: 85 d2 test %edx,%edx +c01085a1: 79 26 jns c01085c9 + putch('-', putdat); +c01085a3: 8b 45 0c mov 0xc(%ebp),%eax +c01085a6: 89 44 24 04 mov %eax,0x4(%esp) +c01085aa: c7 04 24 2d 00 00 00 movl $0x2d,(%esp) +c01085b1: 8b 45 08 mov 0x8(%ebp),%eax +c01085b4: ff d0 call *%eax + num = -(long long)num; +c01085b6: 8b 45 f0 mov -0x10(%ebp),%eax +c01085b9: 8b 55 f4 mov -0xc(%ebp),%edx +c01085bc: f7 d8 neg %eax +c01085be: 83 d2 00 adc $0x0,%edx +c01085c1: f7 da neg %edx +c01085c3: 89 45 f0 mov %eax,-0x10(%ebp) +c01085c6: 89 55 f4 mov %edx,-0xc(%ebp) + } + base = 10; +c01085c9: c7 45 ec 0a 00 00 00 movl $0xa,-0x14(%ebp) + goto number; +c01085d0: e9 a8 00 00 00 jmp c010867d + + // unsigned decimal + case 'u': + num = getuint(&ap, lflag); +c01085d5: 8b 45 e0 mov -0x20(%ebp),%eax +c01085d8: 89 44 24 04 mov %eax,0x4(%esp) +c01085dc: 8d 45 14 lea 0x14(%ebp),%eax +c01085df: 89 04 24 mov %eax,(%esp) +c01085e2: e8 73 fc ff ff call c010825a +c01085e7: 89 45 f0 mov %eax,-0x10(%ebp) +c01085ea: 89 55 f4 mov %edx,-0xc(%ebp) + base = 10; +c01085ed: c7 45 ec 0a 00 00 00 movl $0xa,-0x14(%ebp) + goto number; +c01085f4: e9 84 00 00 00 jmp c010867d + + // (unsigned) octal + case 'o': + num = getuint(&ap, lflag); +c01085f9: 8b 45 e0 mov -0x20(%ebp),%eax +c01085fc: 89 44 24 04 mov %eax,0x4(%esp) +c0108600: 8d 45 14 lea 0x14(%ebp),%eax +c0108603: 89 04 24 mov %eax,(%esp) +c0108606: e8 4f fc ff ff call c010825a +c010860b: 89 45 f0 mov %eax,-0x10(%ebp) +c010860e: 89 55 f4 mov %edx,-0xc(%ebp) + base = 8; +c0108611: c7 45 ec 08 00 00 00 movl $0x8,-0x14(%ebp) + goto number; +c0108618: eb 63 jmp c010867d + + // pointer + case 'p': + putch('0', putdat); +c010861a: 8b 45 0c mov 0xc(%ebp),%eax +c010861d: 89 44 24 04 mov %eax,0x4(%esp) +c0108621: c7 04 24 30 00 00 00 movl $0x30,(%esp) +c0108628: 8b 45 08 mov 0x8(%ebp),%eax +c010862b: ff d0 call *%eax + putch('x', putdat); +c010862d: 8b 45 0c mov 0xc(%ebp),%eax +c0108630: 89 44 24 04 mov %eax,0x4(%esp) +c0108634: c7 04 24 78 00 00 00 movl $0x78,(%esp) +c010863b: 8b 45 08 mov 0x8(%ebp),%eax +c010863e: ff d0 call *%eax + num = (unsigned long long)(uintptr_t)va_arg(ap, void *); +c0108640: 8b 45 14 mov 0x14(%ebp),%eax +c0108643: 8d 50 04 lea 0x4(%eax),%edx +c0108646: 89 55 14 mov %edx,0x14(%ebp) +c0108649: 8b 00 mov (%eax),%eax +c010864b: 89 45 f0 mov %eax,-0x10(%ebp) +c010864e: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) + base = 16; +c0108655: c7 45 ec 10 00 00 00 movl $0x10,-0x14(%ebp) + goto number; +c010865c: eb 1f jmp c010867d + + // (unsigned) hexadecimal + case 'x': + num = getuint(&ap, lflag); +c010865e: 8b 45 e0 mov -0x20(%ebp),%eax +c0108661: 89 44 24 04 mov %eax,0x4(%esp) +c0108665: 8d 45 14 lea 0x14(%ebp),%eax +c0108668: 89 04 24 mov %eax,(%esp) +c010866b: e8 ea fb ff ff call c010825a +c0108670: 89 45 f0 mov %eax,-0x10(%ebp) +c0108673: 89 55 f4 mov %edx,-0xc(%ebp) + base = 16; +c0108676: c7 45 ec 10 00 00 00 movl $0x10,-0x14(%ebp) + number: + printnum(putch, putdat, num, base, width, padc); +c010867d: 0f be 55 db movsbl -0x25(%ebp),%edx +c0108681: 8b 45 ec mov -0x14(%ebp),%eax +c0108684: 89 54 24 18 mov %edx,0x18(%esp) +c0108688: 8b 55 e8 mov -0x18(%ebp),%edx +c010868b: 89 54 24 14 mov %edx,0x14(%esp) +c010868f: 89 44 24 10 mov %eax,0x10(%esp) +c0108693: 8b 45 f0 mov -0x10(%ebp),%eax +c0108696: 8b 55 f4 mov -0xc(%ebp),%edx +c0108699: 89 44 24 08 mov %eax,0x8(%esp) +c010869d: 89 54 24 0c mov %edx,0xc(%esp) +c01086a1: 8b 45 0c mov 0xc(%ebp),%eax +c01086a4: 89 44 24 04 mov %eax,0x4(%esp) +c01086a8: 8b 45 08 mov 0x8(%ebp),%eax +c01086ab: 89 04 24 mov %eax,(%esp) +c01086ae: e8 a5 fa ff ff call c0108158 + break; +c01086b3: eb 38 jmp c01086ed + + // escaped '%' character + case '%': + putch(ch, putdat); +c01086b5: 8b 45 0c mov 0xc(%ebp),%eax +c01086b8: 89 44 24 04 mov %eax,0x4(%esp) +c01086bc: 89 1c 24 mov %ebx,(%esp) +c01086bf: 8b 45 08 mov 0x8(%ebp),%eax +c01086c2: ff d0 call *%eax + break; +c01086c4: eb 27 jmp c01086ed + + // unrecognized escape sequence - just print it literally + default: + putch('%', putdat); +c01086c6: 8b 45 0c mov 0xc(%ebp),%eax +c01086c9: 89 44 24 04 mov %eax,0x4(%esp) +c01086cd: c7 04 24 25 00 00 00 movl $0x25,(%esp) +c01086d4: 8b 45 08 mov 0x8(%ebp),%eax +c01086d7: ff d0 call *%eax + for (fmt --; fmt[-1] != '%'; fmt --) +c01086d9: ff 4d 10 decl 0x10(%ebp) +c01086dc: eb 03 jmp c01086e1 +c01086de: ff 4d 10 decl 0x10(%ebp) +c01086e1: 8b 45 10 mov 0x10(%ebp),%eax +c01086e4: 48 dec %eax +c01086e5: 0f b6 00 movzbl (%eax),%eax +c01086e8: 3c 25 cmp $0x25,%al +c01086ea: 75 f2 jne c01086de + /* do nothing */; + break; +c01086ec: 90 nop + while (1) { +c01086ed: e9 37 fc ff ff jmp c0108329 + return; +c01086f2: 90 nop + } + } +} +c01086f3: 83 c4 40 add $0x40,%esp +c01086f6: 5b pop %ebx +c01086f7: 5e pop %esi +c01086f8: 5d pop %ebp +c01086f9: c3 ret + +c01086fa : + * sprintputch - 'print' a single character in a buffer + * @ch: the character will be printed + * @b: the buffer to place the character @ch + * */ +static void +sprintputch(int ch, struct sprintbuf *b) { +c01086fa: 55 push %ebp +c01086fb: 89 e5 mov %esp,%ebp + b->cnt ++; +c01086fd: 8b 45 0c mov 0xc(%ebp),%eax +c0108700: 8b 40 08 mov 0x8(%eax),%eax +c0108703: 8d 50 01 lea 0x1(%eax),%edx +c0108706: 8b 45 0c mov 0xc(%ebp),%eax +c0108709: 89 50 08 mov %edx,0x8(%eax) + if (b->buf < b->ebuf) { +c010870c: 8b 45 0c mov 0xc(%ebp),%eax +c010870f: 8b 10 mov (%eax),%edx +c0108711: 8b 45 0c mov 0xc(%ebp),%eax +c0108714: 8b 40 04 mov 0x4(%eax),%eax +c0108717: 39 c2 cmp %eax,%edx +c0108719: 73 12 jae c010872d + *b->buf ++ = ch; +c010871b: 8b 45 0c mov 0xc(%ebp),%eax +c010871e: 8b 00 mov (%eax),%eax +c0108720: 8d 48 01 lea 0x1(%eax),%ecx +c0108723: 8b 55 0c mov 0xc(%ebp),%edx +c0108726: 89 0a mov %ecx,(%edx) +c0108728: 8b 55 08 mov 0x8(%ebp),%edx +c010872b: 88 10 mov %dl,(%eax) + } +} +c010872d: 90 nop +c010872e: 5d pop %ebp +c010872f: c3 ret + +c0108730 : + * @str: the buffer to place the result into + * @size: the size of buffer, including the trailing null space + * @fmt: the format string to use + * */ +int +snprintf(char *str, size_t size, const char *fmt, ...) { +c0108730: 55 push %ebp +c0108731: 89 e5 mov %esp,%ebp +c0108733: 83 ec 28 sub $0x28,%esp + va_list ap; + int cnt; + va_start(ap, fmt); +c0108736: 8d 45 14 lea 0x14(%ebp),%eax +c0108739: 89 45 f0 mov %eax,-0x10(%ebp) + cnt = vsnprintf(str, size, fmt, ap); +c010873c: 8b 45 f0 mov -0x10(%ebp),%eax +c010873f: 89 44 24 0c mov %eax,0xc(%esp) +c0108743: 8b 45 10 mov 0x10(%ebp),%eax +c0108746: 89 44 24 08 mov %eax,0x8(%esp) +c010874a: 8b 45 0c mov 0xc(%ebp),%eax +c010874d: 89 44 24 04 mov %eax,0x4(%esp) +c0108751: 8b 45 08 mov 0x8(%ebp),%eax +c0108754: 89 04 24 mov %eax,(%esp) +c0108757: e8 0a 00 00 00 call c0108766 +c010875c: 89 45 f4 mov %eax,-0xc(%ebp) + va_end(ap); + return cnt; +c010875f: 8b 45 f4 mov -0xc(%ebp),%eax +} +c0108762: 89 ec mov %ebp,%esp +c0108764: 5d pop %ebp +c0108765: c3 ret + +c0108766 : + * + * Call this function if you are already dealing with a va_list. + * Or you probably want snprintf() instead. + * */ +int +vsnprintf(char *str, size_t size, const char *fmt, va_list ap) { +c0108766: 55 push %ebp +c0108767: 89 e5 mov %esp,%ebp +c0108769: 83 ec 28 sub $0x28,%esp + struct sprintbuf b = {str, str + size - 1, 0}; +c010876c: 8b 45 08 mov 0x8(%ebp),%eax +c010876f: 89 45 ec mov %eax,-0x14(%ebp) +c0108772: 8b 45 0c mov 0xc(%ebp),%eax +c0108775: 8d 50 ff lea -0x1(%eax),%edx +c0108778: 8b 45 08 mov 0x8(%ebp),%eax +c010877b: 01 d0 add %edx,%eax +c010877d: 89 45 f0 mov %eax,-0x10(%ebp) +c0108780: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) + if (str == NULL || b.buf > b.ebuf) { +c0108787: 83 7d 08 00 cmpl $0x0,0x8(%ebp) +c010878b: 74 0a je c0108797 +c010878d: 8b 55 ec mov -0x14(%ebp),%edx +c0108790: 8b 45 f0 mov -0x10(%ebp),%eax +c0108793: 39 c2 cmp %eax,%edx +c0108795: 76 07 jbe c010879e + return -E_INVAL; +c0108797: b8 fd ff ff ff mov $0xfffffffd,%eax +c010879c: eb 2a jmp c01087c8 + } + // print the string to the buffer + vprintfmt((void*)sprintputch, &b, fmt, ap); +c010879e: 8b 45 14 mov 0x14(%ebp),%eax +c01087a1: 89 44 24 0c mov %eax,0xc(%esp) +c01087a5: 8b 45 10 mov 0x10(%ebp),%eax +c01087a8: 89 44 24 08 mov %eax,0x8(%esp) +c01087ac: 8d 45 ec lea -0x14(%ebp),%eax +c01087af: 89 44 24 04 mov %eax,0x4(%esp) +c01087b3: c7 04 24 fa 86 10 c0 movl $0xc01086fa,(%esp) +c01087ba: e8 62 fb ff ff call c0108321 + // null terminate the buffer + *b.buf = '\0'; +c01087bf: 8b 45 ec mov -0x14(%ebp),%eax +c01087c2: c6 00 00 movb $0x0,(%eax) + return b.cnt; +c01087c5: 8b 45 f4 mov -0xc(%ebp),%eax +} +c01087c8: 89 ec mov %ebp,%esp +c01087ca: 5d pop %ebp +c01087cb: c3 ret + +c01087cc : + * rand - returns a pseudo-random integer + * + * The rand() function return a value in the range [0, RAND_MAX]. + * */ +int +rand(void) { +c01087cc: 55 push %ebp +c01087cd: 89 e5 mov %esp,%ebp +c01087cf: 57 push %edi +c01087d0: 56 push %esi +c01087d1: 53 push %ebx +c01087d2: 83 ec 24 sub $0x24,%esp + next = (next * 0x5DEECE66DLL + 0xBLL) & ((1LL << 48) - 1); +c01087d5: a1 60 2a 12 c0 mov 0xc0122a60,%eax +c01087da: 8b 15 64 2a 12 c0 mov 0xc0122a64,%edx +c01087e0: 69 fa 6d e6 ec de imul $0xdeece66d,%edx,%edi +c01087e6: 6b f0 05 imul $0x5,%eax,%esi +c01087e9: 01 fe add %edi,%esi +c01087eb: bf 6d e6 ec de mov $0xdeece66d,%edi +c01087f0: f7 e7 mul %edi +c01087f2: 01 d6 add %edx,%esi +c01087f4: 89 f2 mov %esi,%edx +c01087f6: 83 c0 0b add $0xb,%eax +c01087f9: 83 d2 00 adc $0x0,%edx +c01087fc: 89 c7 mov %eax,%edi +c01087fe: 83 e7 ff and $0xffffffff,%edi +c0108801: 89 f9 mov %edi,%ecx +c0108803: 0f b7 da movzwl %dx,%ebx +c0108806: 89 0d 60 2a 12 c0 mov %ecx,0xc0122a60 +c010880c: 89 1d 64 2a 12 c0 mov %ebx,0xc0122a64 + unsigned long long result = (next >> 12); +c0108812: a1 60 2a 12 c0 mov 0xc0122a60,%eax +c0108817: 8b 15 64 2a 12 c0 mov 0xc0122a64,%edx +c010881d: 0f ac d0 0c shrd $0xc,%edx,%eax +c0108821: c1 ea 0c shr $0xc,%edx +c0108824: 89 45 e0 mov %eax,-0x20(%ebp) +c0108827: 89 55 e4 mov %edx,-0x1c(%ebp) + return (int)do_div(result, RAND_MAX + 1); +c010882a: c7 45 dc 00 00 00 80 movl $0x80000000,-0x24(%ebp) +c0108831: 8b 45 e0 mov -0x20(%ebp),%eax +c0108834: 8b 55 e4 mov -0x1c(%ebp),%edx +c0108837: 89 45 d8 mov %eax,-0x28(%ebp) +c010883a: 89 55 e8 mov %edx,-0x18(%ebp) +c010883d: 8b 45 e8 mov -0x18(%ebp),%eax +c0108840: 89 45 ec mov %eax,-0x14(%ebp) +c0108843: 83 7d e8 00 cmpl $0x0,-0x18(%ebp) +c0108847: 74 1c je c0108865 +c0108849: 8b 45 e8 mov -0x18(%ebp),%eax +c010884c: ba 00 00 00 00 mov $0x0,%edx +c0108851: f7 75 dc divl -0x24(%ebp) +c0108854: 89 55 ec mov %edx,-0x14(%ebp) +c0108857: 8b 45 e8 mov -0x18(%ebp),%eax +c010885a: ba 00 00 00 00 mov $0x0,%edx +c010885f: f7 75 dc divl -0x24(%ebp) +c0108862: 89 45 e8 mov %eax,-0x18(%ebp) +c0108865: 8b 45 d8 mov -0x28(%ebp),%eax +c0108868: 8b 55 ec mov -0x14(%ebp),%edx +c010886b: f7 75 dc divl -0x24(%ebp) +c010886e: 89 45 d8 mov %eax,-0x28(%ebp) +c0108871: 89 55 d4 mov %edx,-0x2c(%ebp) +c0108874: 8b 45 d8 mov -0x28(%ebp),%eax +c0108877: 8b 55 e8 mov -0x18(%ebp),%edx +c010887a: 89 45 e0 mov %eax,-0x20(%ebp) +c010887d: 89 55 e4 mov %edx,-0x1c(%ebp) +c0108880: 8b 45 d4 mov -0x2c(%ebp),%eax +} +c0108883: 83 c4 24 add $0x24,%esp +c0108886: 5b pop %ebx +c0108887: 5e pop %esi +c0108888: 5f pop %edi +c0108889: 5d pop %ebp +c010888a: c3 ret + +c010888b : +/* * + * srand - seed the random number generator with the given number + * @seed: the required seed number + * */ +void +srand(unsigned int seed) { +c010888b: 55 push %ebp +c010888c: 89 e5 mov %esp,%ebp + next = seed; +c010888e: 8b 45 08 mov 0x8(%ebp),%eax +c0108891: ba 00 00 00 00 mov $0x0,%edx +c0108896: a3 60 2a 12 c0 mov %eax,0xc0122a60 +c010889b: 89 15 64 2a 12 c0 mov %edx,0xc0122a64 +} +c01088a1: 90 nop +c01088a2: 5d pop %ebp +c01088a3: c3 ret + +c01088a4 : + * @s: the input string + * + * The strlen() function returns the length of string @s. + * */ +size_t +strlen(const char *s) { +c01088a4: 55 push %ebp +c01088a5: 89 e5 mov %esp,%ebp +c01088a7: 83 ec 10 sub $0x10,%esp + size_t cnt = 0; +c01088aa: c7 45 fc 00 00 00 00 movl $0x0,-0x4(%ebp) + while (*s ++ != '\0') { +c01088b1: eb 03 jmp c01088b6 + cnt ++; +c01088b3: ff 45 fc incl -0x4(%ebp) + while (*s ++ != '\0') { +c01088b6: 8b 45 08 mov 0x8(%ebp),%eax +c01088b9: 8d 50 01 lea 0x1(%eax),%edx +c01088bc: 89 55 08 mov %edx,0x8(%ebp) +c01088bf: 0f b6 00 movzbl (%eax),%eax +c01088c2: 84 c0 test %al,%al +c01088c4: 75 ed jne c01088b3 + } + return cnt; +c01088c6: 8b 45 fc mov -0x4(%ebp),%eax +} +c01088c9: 89 ec mov %ebp,%esp +c01088cb: 5d pop %ebp +c01088cc: c3 ret + +c01088cd : + * The return value is strlen(s), if that is less than @len, or + * @len if there is no '\0' character among the first @len characters + * pointed by @s. + * */ +size_t +strnlen(const char *s, size_t len) { +c01088cd: 55 push %ebp +c01088ce: 89 e5 mov %esp,%ebp +c01088d0: 83 ec 10 sub $0x10,%esp + size_t cnt = 0; +c01088d3: c7 45 fc 00 00 00 00 movl $0x0,-0x4(%ebp) + while (cnt < len && *s ++ != '\0') { +c01088da: eb 03 jmp c01088df + cnt ++; +c01088dc: ff 45 fc incl -0x4(%ebp) + while (cnt < len && *s ++ != '\0') { +c01088df: 8b 45 fc mov -0x4(%ebp),%eax +c01088e2: 3b 45 0c cmp 0xc(%ebp),%eax +c01088e5: 73 10 jae c01088f7 +c01088e7: 8b 45 08 mov 0x8(%ebp),%eax +c01088ea: 8d 50 01 lea 0x1(%eax),%edx +c01088ed: 89 55 08 mov %edx,0x8(%ebp) +c01088f0: 0f b6 00 movzbl (%eax),%eax +c01088f3: 84 c0 test %al,%al +c01088f5: 75 e5 jne c01088dc + } + return cnt; +c01088f7: 8b 45 fc mov -0x4(%ebp),%eax +} +c01088fa: 89 ec mov %ebp,%esp +c01088fc: 5d pop %ebp +c01088fd: c3 ret + +c01088fe : + * To avoid overflows, the size of array pointed by @dst should be long enough to + * contain the same string as @src (including the terminating null character), and + * should not overlap in memory with @src. + * */ +char * +strcpy(char *dst, const char *src) { +c01088fe: 55 push %ebp +c01088ff: 89 e5 mov %esp,%ebp +c0108901: 57 push %edi +c0108902: 56 push %esi +c0108903: 83 ec 20 sub $0x20,%esp +c0108906: 8b 45 08 mov 0x8(%ebp),%eax +c0108909: 89 45 f4 mov %eax,-0xc(%ebp) +c010890c: 8b 45 0c mov 0xc(%ebp),%eax +c010890f: 89 45 f0 mov %eax,-0x10(%ebp) +#ifndef __HAVE_ARCH_STRCPY +#define __HAVE_ARCH_STRCPY +static inline char * +__strcpy(char *dst, const char *src) { + int d0, d1, d2; + asm volatile ( +c0108912: 8b 55 f0 mov -0x10(%ebp),%edx +c0108915: 8b 45 f4 mov -0xc(%ebp),%eax +c0108918: 89 d1 mov %edx,%ecx +c010891a: 89 c2 mov %eax,%edx +c010891c: 89 ce mov %ecx,%esi +c010891e: 89 d7 mov %edx,%edi +c0108920: ac lods %ds:(%esi),%al +c0108921: aa stos %al,%es:(%edi) +c0108922: 84 c0 test %al,%al +c0108924: 75 fa jne c0108920 +c0108926: 89 fa mov %edi,%edx +c0108928: 89 f1 mov %esi,%ecx +c010892a: 89 4d ec mov %ecx,-0x14(%ebp) +c010892d: 89 55 e8 mov %edx,-0x18(%ebp) +c0108930: 89 45 e4 mov %eax,-0x1c(%ebp) + "stosb;" + "testb %%al, %%al;" + "jne 1b;" + : "=&S" (d0), "=&D" (d1), "=&a" (d2) + : "0" (src), "1" (dst) : "memory"); + return dst; +c0108933: 8b 45 f4 mov -0xc(%ebp),%eax + char *p = dst; + while ((*p ++ = *src ++) != '\0') + /* nothing */; + return dst; +#endif /* __HAVE_ARCH_STRCPY */ +} +c0108936: 83 c4 20 add $0x20,%esp +c0108939: 5e pop %esi +c010893a: 5f pop %edi +c010893b: 5d pop %ebp +c010893c: c3 ret + +c010893d : + * @len: maximum number of characters to be copied from @src + * + * The return value is @dst + * */ +char * +strncpy(char *dst, const char *src, size_t len) { +c010893d: 55 push %ebp +c010893e: 89 e5 mov %esp,%ebp +c0108940: 83 ec 10 sub $0x10,%esp + char *p = dst; +c0108943: 8b 45 08 mov 0x8(%ebp),%eax +c0108946: 89 45 fc mov %eax,-0x4(%ebp) + while (len > 0) { +c0108949: eb 1e jmp c0108969 + if ((*p = *src) != '\0') { +c010894b: 8b 45 0c mov 0xc(%ebp),%eax +c010894e: 0f b6 10 movzbl (%eax),%edx +c0108951: 8b 45 fc mov -0x4(%ebp),%eax +c0108954: 88 10 mov %dl,(%eax) +c0108956: 8b 45 fc mov -0x4(%ebp),%eax +c0108959: 0f b6 00 movzbl (%eax),%eax +c010895c: 84 c0 test %al,%al +c010895e: 74 03 je c0108963 + src ++; +c0108960: ff 45 0c incl 0xc(%ebp) + } + p ++, len --; +c0108963: ff 45 fc incl -0x4(%ebp) +c0108966: ff 4d 10 decl 0x10(%ebp) + while (len > 0) { +c0108969: 83 7d 10 00 cmpl $0x0,0x10(%ebp) +c010896d: 75 dc jne c010894b + } + return dst; +c010896f: 8b 45 08 mov 0x8(%ebp),%eax +} +c0108972: 89 ec mov %ebp,%esp +c0108974: 5d pop %ebp +c0108975: c3 ret + +c0108976 : + * - A value greater than zero indicates that the first character that does + * not match has a greater value in @s1 than in @s2; + * - And a value less than zero indicates the opposite. + * */ +int +strcmp(const char *s1, const char *s2) { +c0108976: 55 push %ebp +c0108977: 89 e5 mov %esp,%ebp +c0108979: 57 push %edi +c010897a: 56 push %esi +c010897b: 83 ec 20 sub $0x20,%esp +c010897e: 8b 45 08 mov 0x8(%ebp),%eax +c0108981: 89 45 f4 mov %eax,-0xc(%ebp) +c0108984: 8b 45 0c mov 0xc(%ebp),%eax +c0108987: 89 45 f0 mov %eax,-0x10(%ebp) + asm volatile ( +c010898a: 8b 55 f4 mov -0xc(%ebp),%edx +c010898d: 8b 45 f0 mov -0x10(%ebp),%eax +c0108990: 89 d1 mov %edx,%ecx +c0108992: 89 c2 mov %eax,%edx +c0108994: 89 ce mov %ecx,%esi +c0108996: 89 d7 mov %edx,%edi +c0108998: ac lods %ds:(%esi),%al +c0108999: ae scas %es:(%edi),%al +c010899a: 75 08 jne c01089a4 +c010899c: 84 c0 test %al,%al +c010899e: 75 f8 jne c0108998 +c01089a0: 31 c0 xor %eax,%eax +c01089a2: eb 04 jmp c01089a8 +c01089a4: 19 c0 sbb %eax,%eax +c01089a6: 0c 01 or $0x1,%al +c01089a8: 89 fa mov %edi,%edx +c01089aa: 89 f1 mov %esi,%ecx +c01089ac: 89 45 ec mov %eax,-0x14(%ebp) +c01089af: 89 4d e8 mov %ecx,-0x18(%ebp) +c01089b2: 89 55 e4 mov %edx,-0x1c(%ebp) + return ret; +c01089b5: 8b 45 ec mov -0x14(%ebp),%eax + while (*s1 != '\0' && *s1 == *s2) { + s1 ++, s2 ++; + } + return (int)((unsigned char)*s1 - (unsigned char)*s2); +#endif /* __HAVE_ARCH_STRCMP */ +} +c01089b8: 83 c4 20 add $0x20,%esp +c01089bb: 5e pop %esi +c01089bc: 5f pop %edi +c01089bd: 5d pop %ebp +c01089be: c3 ret + +c01089bf : + * they are equal to each other, it continues with the following pairs until + * the characters differ, until a terminating null-character is reached, or + * until @n characters match in both strings, whichever happens first. + * */ +int +strncmp(const char *s1, const char *s2, size_t n) { +c01089bf: 55 push %ebp +c01089c0: 89 e5 mov %esp,%ebp + while (n > 0 && *s1 != '\0' && *s1 == *s2) { +c01089c2: eb 09 jmp c01089cd + n --, s1 ++, s2 ++; +c01089c4: ff 4d 10 decl 0x10(%ebp) +c01089c7: ff 45 08 incl 0x8(%ebp) +c01089ca: ff 45 0c incl 0xc(%ebp) + while (n > 0 && *s1 != '\0' && *s1 == *s2) { +c01089cd: 83 7d 10 00 cmpl $0x0,0x10(%ebp) +c01089d1: 74 1a je c01089ed +c01089d3: 8b 45 08 mov 0x8(%ebp),%eax +c01089d6: 0f b6 00 movzbl (%eax),%eax +c01089d9: 84 c0 test %al,%al +c01089db: 74 10 je c01089ed +c01089dd: 8b 45 08 mov 0x8(%ebp),%eax +c01089e0: 0f b6 10 movzbl (%eax),%edx +c01089e3: 8b 45 0c mov 0xc(%ebp),%eax +c01089e6: 0f b6 00 movzbl (%eax),%eax +c01089e9: 38 c2 cmp %al,%dl +c01089eb: 74 d7 je c01089c4 + } + return (n == 0) ? 0 : (int)((unsigned char)*s1 - (unsigned char)*s2); +c01089ed: 83 7d 10 00 cmpl $0x0,0x10(%ebp) +c01089f1: 74 18 je c0108a0b +c01089f3: 8b 45 08 mov 0x8(%ebp),%eax +c01089f6: 0f b6 00 movzbl (%eax),%eax +c01089f9: 0f b6 d0 movzbl %al,%edx +c01089fc: 8b 45 0c mov 0xc(%ebp),%eax +c01089ff: 0f b6 00 movzbl (%eax),%eax +c0108a02: 0f b6 c8 movzbl %al,%ecx +c0108a05: 89 d0 mov %edx,%eax +c0108a07: 29 c8 sub %ecx,%eax +c0108a09: eb 05 jmp c0108a10 +c0108a0b: b8 00 00 00 00 mov $0x0,%eax +} +c0108a10: 5d pop %ebp +c0108a11: c3 ret + +c0108a12 : + * + * The strchr() function returns a pointer to the first occurrence of + * character in @s. If the value is not found, the function returns 'NULL'. + * */ +char * +strchr(const char *s, char c) { +c0108a12: 55 push %ebp +c0108a13: 89 e5 mov %esp,%ebp +c0108a15: 83 ec 04 sub $0x4,%esp +c0108a18: 8b 45 0c mov 0xc(%ebp),%eax +c0108a1b: 88 45 fc mov %al,-0x4(%ebp) + while (*s != '\0') { +c0108a1e: eb 13 jmp c0108a33 + if (*s == c) { +c0108a20: 8b 45 08 mov 0x8(%ebp),%eax +c0108a23: 0f b6 00 movzbl (%eax),%eax +c0108a26: 38 45 fc cmp %al,-0x4(%ebp) +c0108a29: 75 05 jne c0108a30 + return (char *)s; +c0108a2b: 8b 45 08 mov 0x8(%ebp),%eax +c0108a2e: eb 12 jmp c0108a42 + } + s ++; +c0108a30: ff 45 08 incl 0x8(%ebp) + while (*s != '\0') { +c0108a33: 8b 45 08 mov 0x8(%ebp),%eax +c0108a36: 0f b6 00 movzbl (%eax),%eax +c0108a39: 84 c0 test %al,%al +c0108a3b: 75 e3 jne c0108a20 + } + return NULL; +c0108a3d: b8 00 00 00 00 mov $0x0,%eax +} +c0108a42: 89 ec mov %ebp,%esp +c0108a44: 5d pop %ebp +c0108a45: c3 ret + +c0108a46 : + * The strfind() function is like strchr() except that if @c is + * not found in @s, then it returns a pointer to the null byte at the + * end of @s, rather than 'NULL'. + * */ +char * +strfind(const char *s, char c) { +c0108a46: 55 push %ebp +c0108a47: 89 e5 mov %esp,%ebp +c0108a49: 83 ec 04 sub $0x4,%esp +c0108a4c: 8b 45 0c mov 0xc(%ebp),%eax +c0108a4f: 88 45 fc mov %al,-0x4(%ebp) + while (*s != '\0') { +c0108a52: eb 0e jmp c0108a62 + if (*s == c) { +c0108a54: 8b 45 08 mov 0x8(%ebp),%eax +c0108a57: 0f b6 00 movzbl (%eax),%eax +c0108a5a: 38 45 fc cmp %al,-0x4(%ebp) +c0108a5d: 74 0f je c0108a6e + break; + } + s ++; +c0108a5f: ff 45 08 incl 0x8(%ebp) + while (*s != '\0') { +c0108a62: 8b 45 08 mov 0x8(%ebp),%eax +c0108a65: 0f b6 00 movzbl (%eax),%eax +c0108a68: 84 c0 test %al,%al +c0108a6a: 75 e8 jne c0108a54 +c0108a6c: eb 01 jmp c0108a6f + break; +c0108a6e: 90 nop + } + return (char *)s; +c0108a6f: 8b 45 08 mov 0x8(%ebp),%eax +} +c0108a72: 89 ec mov %ebp,%esp +c0108a74: 5d pop %ebp +c0108a75: c3 ret + +c0108a76 : + * an optional "0x" or "0X" prefix. + * + * The strtol() function returns the converted integral number as a long int value. + * */ +long +strtol(const char *s, char **endptr, int base) { +c0108a76: 55 push %ebp +c0108a77: 89 e5 mov %esp,%ebp +c0108a79: 83 ec 10 sub $0x10,%esp + int neg = 0; +c0108a7c: c7 45 fc 00 00 00 00 movl $0x0,-0x4(%ebp) + long val = 0; +c0108a83: c7 45 f8 00 00 00 00 movl $0x0,-0x8(%ebp) + + // gobble initial whitespace + while (*s == ' ' || *s == '\t') { +c0108a8a: eb 03 jmp c0108a8f + s ++; +c0108a8c: ff 45 08 incl 0x8(%ebp) + while (*s == ' ' || *s == '\t') { +c0108a8f: 8b 45 08 mov 0x8(%ebp),%eax +c0108a92: 0f b6 00 movzbl (%eax),%eax +c0108a95: 3c 20 cmp $0x20,%al +c0108a97: 74 f3 je c0108a8c +c0108a99: 8b 45 08 mov 0x8(%ebp),%eax +c0108a9c: 0f b6 00 movzbl (%eax),%eax +c0108a9f: 3c 09 cmp $0x9,%al +c0108aa1: 74 e9 je c0108a8c + } + + // plus/minus sign + if (*s == '+') { +c0108aa3: 8b 45 08 mov 0x8(%ebp),%eax +c0108aa6: 0f b6 00 movzbl (%eax),%eax +c0108aa9: 3c 2b cmp $0x2b,%al +c0108aab: 75 05 jne c0108ab2 + s ++; +c0108aad: ff 45 08 incl 0x8(%ebp) +c0108ab0: eb 14 jmp c0108ac6 + } + else if (*s == '-') { +c0108ab2: 8b 45 08 mov 0x8(%ebp),%eax +c0108ab5: 0f b6 00 movzbl (%eax),%eax +c0108ab8: 3c 2d cmp $0x2d,%al +c0108aba: 75 0a jne c0108ac6 + s ++, neg = 1; +c0108abc: ff 45 08 incl 0x8(%ebp) +c0108abf: c7 45 fc 01 00 00 00 movl $0x1,-0x4(%ebp) + } + + // hex or octal base prefix + if ((base == 0 || base == 16) && (s[0] == '0' && s[1] == 'x')) { +c0108ac6: 83 7d 10 00 cmpl $0x0,0x10(%ebp) +c0108aca: 74 06 je c0108ad2 +c0108acc: 83 7d 10 10 cmpl $0x10,0x10(%ebp) +c0108ad0: 75 22 jne c0108af4 +c0108ad2: 8b 45 08 mov 0x8(%ebp),%eax +c0108ad5: 0f b6 00 movzbl (%eax),%eax +c0108ad8: 3c 30 cmp $0x30,%al +c0108ada: 75 18 jne c0108af4 +c0108adc: 8b 45 08 mov 0x8(%ebp),%eax +c0108adf: 40 inc %eax +c0108ae0: 0f b6 00 movzbl (%eax),%eax +c0108ae3: 3c 78 cmp $0x78,%al +c0108ae5: 75 0d jne c0108af4 + s += 2, base = 16; +c0108ae7: 83 45 08 02 addl $0x2,0x8(%ebp) +c0108aeb: c7 45 10 10 00 00 00 movl $0x10,0x10(%ebp) +c0108af2: eb 29 jmp c0108b1d + } + else if (base == 0 && s[0] == '0') { +c0108af4: 83 7d 10 00 cmpl $0x0,0x10(%ebp) +c0108af8: 75 16 jne c0108b10 +c0108afa: 8b 45 08 mov 0x8(%ebp),%eax +c0108afd: 0f b6 00 movzbl (%eax),%eax +c0108b00: 3c 30 cmp $0x30,%al +c0108b02: 75 0c jne c0108b10 + s ++, base = 8; +c0108b04: ff 45 08 incl 0x8(%ebp) +c0108b07: c7 45 10 08 00 00 00 movl $0x8,0x10(%ebp) +c0108b0e: eb 0d jmp c0108b1d + } + else if (base == 0) { +c0108b10: 83 7d 10 00 cmpl $0x0,0x10(%ebp) +c0108b14: 75 07 jne c0108b1d + base = 10; +c0108b16: c7 45 10 0a 00 00 00 movl $0xa,0x10(%ebp) + + // digits + while (1) { + int dig; + + if (*s >= '0' && *s <= '9') { +c0108b1d: 8b 45 08 mov 0x8(%ebp),%eax +c0108b20: 0f b6 00 movzbl (%eax),%eax +c0108b23: 3c 2f cmp $0x2f,%al +c0108b25: 7e 1b jle c0108b42 +c0108b27: 8b 45 08 mov 0x8(%ebp),%eax +c0108b2a: 0f b6 00 movzbl (%eax),%eax +c0108b2d: 3c 39 cmp $0x39,%al +c0108b2f: 7f 11 jg c0108b42 + dig = *s - '0'; +c0108b31: 8b 45 08 mov 0x8(%ebp),%eax +c0108b34: 0f b6 00 movzbl (%eax),%eax +c0108b37: 0f be c0 movsbl %al,%eax +c0108b3a: 83 e8 30 sub $0x30,%eax +c0108b3d: 89 45 f4 mov %eax,-0xc(%ebp) +c0108b40: eb 48 jmp c0108b8a + } + else if (*s >= 'a' && *s <= 'z') { +c0108b42: 8b 45 08 mov 0x8(%ebp),%eax +c0108b45: 0f b6 00 movzbl (%eax),%eax +c0108b48: 3c 60 cmp $0x60,%al +c0108b4a: 7e 1b jle c0108b67 +c0108b4c: 8b 45 08 mov 0x8(%ebp),%eax +c0108b4f: 0f b6 00 movzbl (%eax),%eax +c0108b52: 3c 7a cmp $0x7a,%al +c0108b54: 7f 11 jg c0108b67 + dig = *s - 'a' + 10; +c0108b56: 8b 45 08 mov 0x8(%ebp),%eax +c0108b59: 0f b6 00 movzbl (%eax),%eax +c0108b5c: 0f be c0 movsbl %al,%eax +c0108b5f: 83 e8 57 sub $0x57,%eax +c0108b62: 89 45 f4 mov %eax,-0xc(%ebp) +c0108b65: eb 23 jmp c0108b8a + } + else if (*s >= 'A' && *s <= 'Z') { +c0108b67: 8b 45 08 mov 0x8(%ebp),%eax +c0108b6a: 0f b6 00 movzbl (%eax),%eax +c0108b6d: 3c 40 cmp $0x40,%al +c0108b6f: 7e 3b jle c0108bac +c0108b71: 8b 45 08 mov 0x8(%ebp),%eax +c0108b74: 0f b6 00 movzbl (%eax),%eax +c0108b77: 3c 5a cmp $0x5a,%al +c0108b79: 7f 31 jg c0108bac + dig = *s - 'A' + 10; +c0108b7b: 8b 45 08 mov 0x8(%ebp),%eax +c0108b7e: 0f b6 00 movzbl (%eax),%eax +c0108b81: 0f be c0 movsbl %al,%eax +c0108b84: 83 e8 37 sub $0x37,%eax +c0108b87: 89 45 f4 mov %eax,-0xc(%ebp) + } + else { + break; + } + if (dig >= base) { +c0108b8a: 8b 45 f4 mov -0xc(%ebp),%eax +c0108b8d: 3b 45 10 cmp 0x10(%ebp),%eax +c0108b90: 7d 19 jge c0108bab + break; + } + s ++, val = (val * base) + dig; +c0108b92: ff 45 08 incl 0x8(%ebp) +c0108b95: 8b 45 f8 mov -0x8(%ebp),%eax +c0108b98: 0f af 45 10 imul 0x10(%ebp),%eax +c0108b9c: 89 c2 mov %eax,%edx +c0108b9e: 8b 45 f4 mov -0xc(%ebp),%eax +c0108ba1: 01 d0 add %edx,%eax +c0108ba3: 89 45 f8 mov %eax,-0x8(%ebp) + while (1) { +c0108ba6: e9 72 ff ff ff jmp c0108b1d + break; +c0108bab: 90 nop + // we don't properly detect overflow! + } + + if (endptr) { +c0108bac: 83 7d 0c 00 cmpl $0x0,0xc(%ebp) +c0108bb0: 74 08 je c0108bba + *endptr = (char *) s; +c0108bb2: 8b 45 0c mov 0xc(%ebp),%eax +c0108bb5: 8b 55 08 mov 0x8(%ebp),%edx +c0108bb8: 89 10 mov %edx,(%eax) + } + return (neg ? -val : val); +c0108bba: 83 7d fc 00 cmpl $0x0,-0x4(%ebp) +c0108bbe: 74 07 je c0108bc7 +c0108bc0: 8b 45 f8 mov -0x8(%ebp),%eax +c0108bc3: f7 d8 neg %eax +c0108bc5: eb 03 jmp c0108bca +c0108bc7: 8b 45 f8 mov -0x8(%ebp),%eax +} +c0108bca: 89 ec mov %ebp,%esp +c0108bcc: 5d pop %ebp +c0108bcd: c3 ret + +c0108bce : + * @n: number of bytes to be set to the value + * + * The memset() function returns @s. + * */ +void * +memset(void *s, char c, size_t n) { +c0108bce: 55 push %ebp +c0108bcf: 89 e5 mov %esp,%ebp +c0108bd1: 83 ec 28 sub $0x28,%esp +c0108bd4: 89 7d fc mov %edi,-0x4(%ebp) +c0108bd7: 8b 45 0c mov 0xc(%ebp),%eax +c0108bda: 88 45 d8 mov %al,-0x28(%ebp) +#ifdef __HAVE_ARCH_MEMSET + return __memset(s, c, n); +c0108bdd: 0f be 55 d8 movsbl -0x28(%ebp),%edx +c0108be1: 8b 45 08 mov 0x8(%ebp),%eax +c0108be4: 89 45 f8 mov %eax,-0x8(%ebp) +c0108be7: 88 55 f7 mov %dl,-0x9(%ebp) +c0108bea: 8b 45 10 mov 0x10(%ebp),%eax +c0108bed: 89 45 f0 mov %eax,-0x10(%ebp) +#ifndef __HAVE_ARCH_MEMSET +#define __HAVE_ARCH_MEMSET +static inline void * +__memset(void *s, char c, size_t n) { + int d0, d1; + asm volatile ( +c0108bf0: 8b 4d f0 mov -0x10(%ebp),%ecx +c0108bf3: 0f b6 45 f7 movzbl -0x9(%ebp),%eax +c0108bf7: 8b 55 f8 mov -0x8(%ebp),%edx +c0108bfa: 89 d7 mov %edx,%edi +c0108bfc: f3 aa rep stos %al,%es:(%edi) +c0108bfe: 89 fa mov %edi,%edx +c0108c00: 89 4d ec mov %ecx,-0x14(%ebp) +c0108c03: 89 55 e8 mov %edx,-0x18(%ebp) + "rep; stosb;" + : "=&c" (d0), "=&D" (d1) + : "0" (n), "a" (c), "1" (s) + : "memory"); + return s; +c0108c06: 8b 45 f8 mov -0x8(%ebp),%eax + while (n -- > 0) { + *p ++ = c; + } + return s; +#endif /* __HAVE_ARCH_MEMSET */ +} +c0108c09: 8b 7d fc mov -0x4(%ebp),%edi +c0108c0c: 89 ec mov %ebp,%esp +c0108c0e: 5d pop %ebp +c0108c0f: c3 ret + +c0108c10 : + * @n: number of bytes to copy + * + * The memmove() function returns @dst. + * */ +void * +memmove(void *dst, const void *src, size_t n) { +c0108c10: 55 push %ebp +c0108c11: 89 e5 mov %esp,%ebp +c0108c13: 57 push %edi +c0108c14: 56 push %esi +c0108c15: 53 push %ebx +c0108c16: 83 ec 30 sub $0x30,%esp +c0108c19: 8b 45 08 mov 0x8(%ebp),%eax +c0108c1c: 89 45 f0 mov %eax,-0x10(%ebp) +c0108c1f: 8b 45 0c mov 0xc(%ebp),%eax +c0108c22: 89 45 ec mov %eax,-0x14(%ebp) +c0108c25: 8b 45 10 mov 0x10(%ebp),%eax +c0108c28: 89 45 e8 mov %eax,-0x18(%ebp) + +#ifndef __HAVE_ARCH_MEMMOVE +#define __HAVE_ARCH_MEMMOVE +static inline void * +__memmove(void *dst, const void *src, size_t n) { + if (dst < src) { +c0108c2b: 8b 45 f0 mov -0x10(%ebp),%eax +c0108c2e: 3b 45 ec cmp -0x14(%ebp),%eax +c0108c31: 73 42 jae c0108c75 +c0108c33: 8b 45 f0 mov -0x10(%ebp),%eax +c0108c36: 89 45 e4 mov %eax,-0x1c(%ebp) +c0108c39: 8b 45 ec mov -0x14(%ebp),%eax +c0108c3c: 89 45 e0 mov %eax,-0x20(%ebp) +c0108c3f: 8b 45 e8 mov -0x18(%ebp),%eax +c0108c42: 89 45 dc mov %eax,-0x24(%ebp) + "andl $3, %%ecx;" + "jz 1f;" + "rep; movsb;" + "1:" + : "=&c" (d0), "=&D" (d1), "=&S" (d2) + : "0" (n / 4), "g" (n), "1" (dst), "2" (src) +c0108c45: 8b 45 dc mov -0x24(%ebp),%eax +c0108c48: c1 e8 02 shr $0x2,%eax +c0108c4b: 89 c1 mov %eax,%ecx + asm volatile ( +c0108c4d: 8b 55 e4 mov -0x1c(%ebp),%edx +c0108c50: 8b 45 e0 mov -0x20(%ebp),%eax +c0108c53: 89 d7 mov %edx,%edi +c0108c55: 89 c6 mov %eax,%esi +c0108c57: f3 a5 rep movsl %ds:(%esi),%es:(%edi) +c0108c59: 8b 4d dc mov -0x24(%ebp),%ecx +c0108c5c: 83 e1 03 and $0x3,%ecx +c0108c5f: 74 02 je c0108c63 +c0108c61: f3 a4 rep movsb %ds:(%esi),%es:(%edi) +c0108c63: 89 f0 mov %esi,%eax +c0108c65: 89 fa mov %edi,%edx +c0108c67: 89 4d d8 mov %ecx,-0x28(%ebp) +c0108c6a: 89 55 d4 mov %edx,-0x2c(%ebp) +c0108c6d: 89 45 d0 mov %eax,-0x30(%ebp) + : "memory"); + return dst; +c0108c70: 8b 45 e4 mov -0x1c(%ebp),%eax + return __memcpy(dst, src, n); +c0108c73: eb 36 jmp c0108cab + : "0" (n), "1" (n - 1 + src), "2" (n - 1 + dst) +c0108c75: 8b 45 e8 mov -0x18(%ebp),%eax +c0108c78: 8d 50 ff lea -0x1(%eax),%edx +c0108c7b: 8b 45 ec mov -0x14(%ebp),%eax +c0108c7e: 01 c2 add %eax,%edx +c0108c80: 8b 45 e8 mov -0x18(%ebp),%eax +c0108c83: 8d 48 ff lea -0x1(%eax),%ecx +c0108c86: 8b 45 f0 mov -0x10(%ebp),%eax +c0108c89: 8d 1c 01 lea (%ecx,%eax,1),%ebx + asm volatile ( +c0108c8c: 8b 45 e8 mov -0x18(%ebp),%eax +c0108c8f: 89 c1 mov %eax,%ecx +c0108c91: 89 d8 mov %ebx,%eax +c0108c93: 89 d6 mov %edx,%esi +c0108c95: 89 c7 mov %eax,%edi +c0108c97: fd std +c0108c98: f3 a4 rep movsb %ds:(%esi),%es:(%edi) +c0108c9a: fc cld +c0108c9b: 89 f8 mov %edi,%eax +c0108c9d: 89 f2 mov %esi,%edx +c0108c9f: 89 4d cc mov %ecx,-0x34(%ebp) +c0108ca2: 89 55 c8 mov %edx,-0x38(%ebp) +c0108ca5: 89 45 c4 mov %eax,-0x3c(%ebp) + return dst; +c0108ca8: 8b 45 f0 mov -0x10(%ebp),%eax + *d ++ = *s ++; + } + } + return dst; +#endif /* __HAVE_ARCH_MEMMOVE */ +} +c0108cab: 83 c4 30 add $0x30,%esp +c0108cae: 5b pop %ebx +c0108caf: 5e pop %esi +c0108cb0: 5f pop %edi +c0108cb1: 5d pop %ebp +c0108cb2: c3 ret + +c0108cb3 : + * it always copies exactly @n bytes. To avoid overflows, the size of arrays pointed + * by both @src and @dst, should be at least @n bytes, and should not overlap + * (for overlapping memory area, memmove is a safer approach). + * */ +void * +memcpy(void *dst, const void *src, size_t n) { +c0108cb3: 55 push %ebp +c0108cb4: 89 e5 mov %esp,%ebp +c0108cb6: 57 push %edi +c0108cb7: 56 push %esi +c0108cb8: 83 ec 20 sub $0x20,%esp +c0108cbb: 8b 45 08 mov 0x8(%ebp),%eax +c0108cbe: 89 45 f4 mov %eax,-0xc(%ebp) +c0108cc1: 8b 45 0c mov 0xc(%ebp),%eax +c0108cc4: 89 45 f0 mov %eax,-0x10(%ebp) +c0108cc7: 8b 45 10 mov 0x10(%ebp),%eax +c0108cca: 89 45 ec mov %eax,-0x14(%ebp) + : "0" (n / 4), "g" (n), "1" (dst), "2" (src) +c0108ccd: 8b 45 ec mov -0x14(%ebp),%eax +c0108cd0: c1 e8 02 shr $0x2,%eax +c0108cd3: 89 c1 mov %eax,%ecx + asm volatile ( +c0108cd5: 8b 55 f4 mov -0xc(%ebp),%edx +c0108cd8: 8b 45 f0 mov -0x10(%ebp),%eax +c0108cdb: 89 d7 mov %edx,%edi +c0108cdd: 89 c6 mov %eax,%esi +c0108cdf: f3 a5 rep movsl %ds:(%esi),%es:(%edi) +c0108ce1: 8b 4d ec mov -0x14(%ebp),%ecx +c0108ce4: 83 e1 03 and $0x3,%ecx +c0108ce7: 74 02 je c0108ceb +c0108ce9: f3 a4 rep movsb %ds:(%esi),%es:(%edi) +c0108ceb: 89 f0 mov %esi,%eax +c0108ced: 89 fa mov %edi,%edx +c0108cef: 89 4d e8 mov %ecx,-0x18(%ebp) +c0108cf2: 89 55 e4 mov %edx,-0x1c(%ebp) +c0108cf5: 89 45 e0 mov %eax,-0x20(%ebp) + return dst; +c0108cf8: 8b 45 f4 mov -0xc(%ebp),%eax + while (n -- > 0) { + *d ++ = *s ++; + } + return dst; +#endif /* __HAVE_ARCH_MEMCPY */ +} +c0108cfb: 83 c4 20 add $0x20,%esp +c0108cfe: 5e pop %esi +c0108cff: 5f pop %edi +c0108d00: 5d pop %ebp +c0108d01: c3 ret + +c0108d02 : + * match in both memory blocks has a greater value in @v1 than in @v2 + * as if evaluated as unsigned char values; + * - And a value less than zero indicates the opposite. + * */ +int +memcmp(const void *v1, const void *v2, size_t n) { +c0108d02: 55 push %ebp +c0108d03: 89 e5 mov %esp,%ebp +c0108d05: 83 ec 10 sub $0x10,%esp + const char *s1 = (const char *)v1; +c0108d08: 8b 45 08 mov 0x8(%ebp),%eax +c0108d0b: 89 45 fc mov %eax,-0x4(%ebp) + const char *s2 = (const char *)v2; +c0108d0e: 8b 45 0c mov 0xc(%ebp),%eax +c0108d11: 89 45 f8 mov %eax,-0x8(%ebp) + while (n -- > 0) { +c0108d14: eb 2e jmp c0108d44 + if (*s1 != *s2) { +c0108d16: 8b 45 fc mov -0x4(%ebp),%eax +c0108d19: 0f b6 10 movzbl (%eax),%edx +c0108d1c: 8b 45 f8 mov -0x8(%ebp),%eax +c0108d1f: 0f b6 00 movzbl (%eax),%eax +c0108d22: 38 c2 cmp %al,%dl +c0108d24: 74 18 je c0108d3e + return (int)((unsigned char)*s1 - (unsigned char)*s2); +c0108d26: 8b 45 fc mov -0x4(%ebp),%eax +c0108d29: 0f b6 00 movzbl (%eax),%eax +c0108d2c: 0f b6 d0 movzbl %al,%edx +c0108d2f: 8b 45 f8 mov -0x8(%ebp),%eax +c0108d32: 0f b6 00 movzbl (%eax),%eax +c0108d35: 0f b6 c8 movzbl %al,%ecx +c0108d38: 89 d0 mov %edx,%eax +c0108d3a: 29 c8 sub %ecx,%eax +c0108d3c: eb 18 jmp c0108d56 + } + s1 ++, s2 ++; +c0108d3e: ff 45 fc incl -0x4(%ebp) +c0108d41: ff 45 f8 incl -0x8(%ebp) + while (n -- > 0) { +c0108d44: 8b 45 10 mov 0x10(%ebp),%eax +c0108d47: 8d 50 ff lea -0x1(%eax),%edx +c0108d4a: 89 55 10 mov %edx,0x10(%ebp) +c0108d4d: 85 c0 test %eax,%eax +c0108d4f: 75 c5 jne c0108d16 + } + return 0; +c0108d51: b8 00 00 00 00 mov $0x0,%eax +} +c0108d56: 89 ec mov %ebp,%esp +c0108d58: 5d pop %ebp +c0108d59: c3 ret diff --git a/labcodes/lab3/obj/kernel.sym b/labcodes/lab3/obj/kernel.sym new file mode 100644 index 00000000..95013952 --- /dev/null +++ b/labcodes/lab3/obj/kernel.sym @@ -0,0 +1,537 @@ +00000000 entry.o +c010001e next +c0100034 spin +c0124000 __boot_pt1 +00000400 i +00000000 init.c +c010022a lab1_switch_test +c0100153 lab1_print_cur_status +c0125000 round.0 +c0100213 lab1_switch_to_user +c0100220 lab1_switch_to_kernel +00000000 readline.c +c0125020 buf +00000000 stdio.c +c010031d cputch +00000000 kdebug.c +c0100420 stab_binsearch +c01009d1 read_eip +00000000 kmonitor.c +c0122000 commands +c01009ea parse +c0100aa3 runcmd +00000000 panic.c +c0125420 is_panic +00000000 clock.c +00000000 console.c +c0100d7c __intr_save +c0100da8 __intr_restore +c0100dbe delay +c0125440 crt_buf +c0125444 crt_pos +c0125446 addr_6845 +c0100e09 cga_init +c0125448 serial_exists +c0100ef1 serial_init +c0100fde lpt_putc_sub +c010105c lpt_putc +c010109e cga_putc +c0101294 serial_putc_sub +c01012f0 serial_putc +c0125460 cons +c0101332 cons_intr +c0101381 serial_proc_data +c0122040 shiftcode +c0122140 togglecode +c0122240 normalmap +c0122340 shiftmap +c0122440 ctlmap +c0122540 charcode +c01013fa kbd_proc_data +c0125668 shift.0 +c0101581 kbd_intr +c0101598 kbd_init +00000000 ide.c +c0109094 channels +c0125680 ide_devices +c0101693 ide_wait_ready +00000000 intr.c +00000000 picirq.c +c0122550 irq_mask +c0125760 did_init +c0101f00 pic_setmask +00000000 trap.c +c01020dc print_ticks +c01257e0 idt +c0122560 idt_pd +c0102270 trapname +c0109600 excnames.0 +c0122580 IA32flags +c0102523 print_pgfault +c01025a4 pgfault_handler +c0125fe0 in_swap_tick_event +c0102604 trap_dispatch +00000000 default_pmm.c +c010332f page2ppn +c0103342 page2pa +c010335a page_ref +c0103364 set_page_ref +c0103372 default_init +c01033a3 default_init_memmap +c01034f0 default_alloc_pages +c0103674 default_free_pages +c010398c default_nr_free_pages +c0103996 basic_check +c0103ed6 default_check +00000000 pmm.c +c0104528 page2ppn +c010453b page2pa +c0104553 pa2page +c010459b page2kva +c01045f1 kva2page +c010463d pte2page +c010467d pde2page +c0104697 page_ref +c01046a1 set_page_ref +c01046af page_ref_inc +c01046c6 page_ref_dec +c01046dd __intr_save +c0104709 __intr_restore +c0126020 ts +c0122a00 gdt +c0122a30 gdt_pd +c010471f lgdt +c0104763 gdt_init +c010484f init_pmm_manager +c0104885 init_memmap +c0104976 page_init +c0104d29 boot_map_segment +c0104e2f boot_alloc_page +c0105385 check_alloc_page +c01053a6 check_pgdir +c0105a44 check_boot_pgdir +c01050f3 page_remove_pte +c0105dd0 perm2str +c0126088 str.0 +c0105e12 get_pgtable_items +00000000 swap.c +c010616c pa2page +c01061b4 pte2page +c0126160 sm +c010672f check_swap +c010655a check_content_set +c0106715 check_content_access +00000000 swap_fifo.c +c0106d89 _fifo_init_mm +c0106dbe _fifo_map_swappable +c0106e0f _fifo_swap_out_victim +c0106e7b _fifo_check_swap +c01071d2 _fifo_init +c01071dc _fifo_set_unswappable +c01071e6 _fifo_tick_event +00000000 vmm.c +c01071f0 pa2page +c0107238 pde2page +c01073bd check_vma_overlap +c010762e check_vmm +c0107685 check_vma_struct +c0107b47 check_pgfault +00000000 swapfs.c +c0107fa4 page2ppn +c0107fb7 page2pa +c0107fcf page2kva +00000000 printfmt.c +c010ac14 error_string +c0108158 printnum +c010825a getuint +c01082a9 getint +c01086fa sprintputch +00000000 rand.c +c0122a60 next +00000000 string.c +c0103287 vector242 +c0102cde vector119 +c0100898 print_kerninfo +c0102bbe vector87 +c0102bb5 vector86 +c01032f3 vector251 +c01088fe strcpy +c01019f1 ide_device_valid +c0102be2 vector91 +c01029d8 vector33 +c0102ec7 vector162 +c010312b vector213 +c0102c7b vector108 +c0102a32 vector43 +c0100000 kern_entry +c0100c2e mon_backtrace +c0102eeb vector165 +c0102fdb vector185 +c0102cba vector115 +c0102cf9 vector122 +c010519e page_insert +c0102e7f vector156 +c01032ab vector245 +c010300b vector189 +c01028fc vector7 +c0102ad4 vector61 +c0102987 vector24 +c0102c96 vector111 +c010308f vector200 +c0102b0a vector67 +c01052b8 pgdir_alloc_page +c0102da7 vector138 +c0102b49 vector74 +c0108c10 memmove +c0102ab0 vector57 +c0107252 mm_create +c0108730 snprintf +c01022b6 print_trapframe +c0103137 vector214 +c0108321 vprintfmt +c0102c2a vector99 +c0105098 get_page +c010289b __alltraps +c0101622 cons_getc +c0102dcb vector141 +c0100d09 is_kernel_panic +c0102f3f vector172 +c01009e4 print_stackframe +c010327b vector241 +c0126164 pra_list_head +c010330b vector253 +c01028d8 vector3 +c01028cf vector2 +c01031d3 vector227 +c0103107 vector210 +c01031af vector224 +c0102a20 vector41 +c0122a40 swap_manager_fifo +c0100375 cprintf +c010296c vector21 +c0102f7b vector177 +c0102cd5 vector118 +c0102b25 vector70 +c0102b1c vector69 +c010324b vector237 +c0102aef vector64 +c01029a2 vector27 +c010761e vmm_init +c0102d5f vector132 +c0102fe7 vector186 +c010315b vector217 +c010759a mm_destroy +c0108cb3 memcpy +c01028c6 vector1 +c0102f87 vector178 +c0102a05 vector38 +c01060cf kfree +c0103257 vector238 +c0100266 readline +c0102d6b vector133 +c0102b40 vector73 +c0102def vector144 +c0109a9c vpd +c0100036 kern_init +c0103317 vector254 +c0102c3c vector101 +c0103113 vector211 +c0102f57 vector174 +c0103293 vector243 +c0102d2f vector128 +c0102b88 vector81 +c0104914 free_pages +c010292a vector13 +c0108766 vsnprintf +c0102a7a vector51 +c0102941 vector16 +c0125000 edata +c01015b4 cons_init +c0106482 swap_in +c0101caf ide_write_secs +c012600c pmm_manager +c010326f vector240 +c0102a95 vector54 +c010295a vector19 +c011ae74 __STAB_END__ +c0102beb vector92 +c010329f vector244 +c01260a4 swap_init_ok +c0104755 load_esp0 +c0102dbf vector140 +c0102a44 vector45 +c0102b76 vector79 +c01031eb vector229 +c01061f4 swap_init +c0102e97 vector158 +c0101f5d pic_enable +c0108025 swapfs_init +c012612c check_rp +c0102a0e vector39 +c0102f0f vector168 +c01029ea vector35 +c0102ca8 vector113 +c011ae75 __STABSTR_BEGIN__ +c0102d14 vector125 +c0100c42 __panic +c010314f vector216 +c0102ae6 vector63 +c0102999 vector26 +c01013da serial_intr +c010303b vector193 +c010305f vector196 +c010010e grade_backtrace0 +c01030fb vector209 +c01028e1 vector4 +c0102f27 vector170 +c0102d8f vector136 +c0102915 vector10 +c01030d7 vector206 +c0103323 vector255 +c0102fab vector181 +c0102ac2 vector59 +c010012b grade_backtrace +c0102bac vector85 +c0102ba3 vector84 +c0102fc3 vector183 +c0102ea3 vector159 +c010311f vector212 +c0102a56 vector47 +c0108a76 strtol +c01031df vector228 +c0102a29 vector42 +c0102cb1 vector114 +c01088cd strnlen +c0102f63 vector175 +c0102de3 vector143 +c0102d47 vector130 +c01099e0 default_pmm_manager +c01032b7 vector246 +c010290c vector9 +c0102dd7 vector142 +c0102c33 vector100 +c010309b vector201 +c01020fb idt_init +c010092c print_debuginfo +c010730a find_vma +c01260c0 swap_in_seq_no +c0102acb vector60 +c010297e vector23 +c010323f vector236 +c0126004 npage +c0107d8d do_pgfault +c0103203 vector231 +c0102b01 vector66 +c01029b4 vector29 +c0105ec6 print_pgdir +c0102d83 vector135 +c0100b5b kmonitor +c0102b64 vector77 +c0102f9f vector180 +c0100d13 clock_init +c01030ef vector208 +c0102c21 vector98 +c0102c18 vector97 +c0104949 nr_free_pages +c0102f6f vector176 +c0103047 vector194 +c01029cf vector32 +c0126008 boot_cr3 +c0126174 end +c0103083 vector199 +c0102d53 vector131 +c01032ff vector252 +c01028bd vector0 +c0108a46 strfind +c01015e3 cons_putc +c0126100 swap_out_seq_no +c0108d5a etext +c0102dfb vector145 +c0102c72 vector107 +c01229e0 boot_pgdir +c0102a17 vector40 +c0101ef0 intr_enable +c0102c45 vector102 +c0102aa7 vector56 +c0102b13 vector68 +c01028f3 vector6 +c01087cc rand +c0102d3b vector129 +c010306b vector197 +c0102e4f vector152 +c01225e0 __vectors +c01031f7 vector230 +c01089bf strncmp +c0104f5d get_pte +c0101a31 ide_device_size +c01029fc vector37 +c012614c check_swap_addr +c01030cb vector205 +c0102ebb vector161 +c010893d strncpy +c0102b2e vector71 +c0102eaf vector160 +c0103143 vector215 +c0102e8b vector157 +c0101ef8 intr_disable +c0102469 print_regs +c0102c9f vector112 +c01000b6 grade_backtrace2 +c0102fb7 vector182 +c0102923 vector12 +c0108d02 memcmp +c0102c84 vector109 +c0102963 vector20 +c0102a8c vector53 +c0102951 vector18 +c0102c06 vector95 +c01031c7 vector226 +c0102a68 vector49 +c0102a3b vector44 +c0102b6d vector78 +c0102f4b vector173 +c0108070 swapfs_read +c0102ccc vector117 +c01022a1 trap_in_kernel +c01062e9 swap_set_unswappable +c0102b91 vector82 +c0103197 vector222 +c0102905 vector8 +c0102e2b vector149 +c010039d cputchar +c0108bce memset +c010320f vector232 +c0101a6e ide_read_secs +c0102c69 vector106 +c010317f vector220 +c0102bd9 vector90 +c0102ed3 vector163 +c010888b srand +c0103227 vector234 +c01062ba swap_map_swappable +c0102add vector62 +c0102990 vector25 +c0103077 vector198 +c0102ce7 vector120 +c0100404 getchar +c0105157 page_remove +c0102a71 vector50 +c0102938 vector15 +c0126128 swap_out_num +c01082f0 printfmt +c0102e43 vector151 +c0102b9a vector83 +c0102bd0 vector89 +c0102bc7 vector88 +c0102885 trap +c0102f93 vector179 +c01029e1 vector34 +c011fced __STABSTR_END__ +c0102a4d vector46 +c0108976 strcmp +c0102d77 vector134 +c01031a3 vector223 +c0103167 vector218 +c0100570 debuginfo_eip +c01260a0 max_swap_offset +c0107464 insert_vma_struct +c0101f92 pic_init +c01031bb vector225 +c0102ff3 vector187 +c0104e75 pmm_init +c01029bd vector30 +c0102d26 vector127 +c0125424 ticks +c010302f vector192 +c0102ef7 vector166 +c0102b5b vector76 +c0102b52 vector75 +c0103053 vector195 +c0102e37 vector150 +c0102ab9 vector58 +c01032cf vector248 +c0102d02 vector123 +c0102c0f vector96 +c01029c6 vector31 +c01030b3 vector203 +c01048a7 alloc_pages +c0102db3 vector139 +c0102e5b vector153 +c0102edf vector164 +c0102cf0 vector121 +c0125780 switchk2u +c01028ea vector5 +c0102f03 vector167 +c0102e73 vector155 +c01032db vector249 +c0109a98 vpt +c01032e7 vector250 +c0102d0b vector124 +c0102c8d vector110 +c01030bf vector204 +c01260a8 swap_page +c01028b2 __trapret +c0100340 vcprintf +c0102d9b vector137 +c0100cc0 __warn +c01032c3 vector247 +c0102975 vector22 +c01030a7 vector202 +c0102b37 vector72 +c0102a9e vector55 +c01003b3 cputs +c0122000 bootstacktop +c0102d1d vector126 +c0102af8 vector65 +c01029ab vector28 +c0102f1b vector169 +c01062a0 swap_tick_event +c010321b vector233 +c010630a swap_out +c010602d kmalloc +c01072cd vma_create +c0102e13 vector147 +c0120000 bootstack +c0123000 __boot_pgdir +c0102c57 vector104 +c0125fe4 free_area +c0102cc3 vector116 +c01080e4 swapfs_write +c010adac __STAB_BEGIN__ +c012613c check_ptep +c0102a83 vector52 +c010294a vector17 +c0102fcf vector184 +c01088a4 strlen +c0126170 pgfault_num +c01030e3 vector207 +c0103017 vector190 +c01016ee ide_init +c0103263 vector239 +c0102bfd vector94 +c0102bf4 vector93 +c0102fff vector188 +c0108a12 strchr +c0102a5f vector48 +c012616c check_mm_struct +c0106286 swap_init_mm +c01000dd grade_backtrace1 +c0103173 vector219 +c0102e1f vector148 +c010318b vector221 +c0102b7f vector80 +c0102f33 vector171 +c0102e67 vector154 +c01029f3 vector36 +c01257cc switchu2k +c0103233 vector235 +c0102c60 vector105 +c0100c1a mon_kerninfo +c0126000 pages +c0102e07 vector146 +c0103023 vector191 +c0102c4e vector103 +c0100bbd mon_help +c010291c vector11 +c0105259 tlb_invalidate +c0102931 vector14 diff --git a/labcodes/lab3/obj/libs/printfmt.d b/labcodes/lab3/obj/libs/printfmt.d new file mode 100644 index 00000000..7f093e2c --- /dev/null +++ b/labcodes/lab3/obj/libs/printfmt.d @@ -0,0 +1,2 @@ +obj/libs/printfmt.o obj/libs/printfmt.d: libs/printfmt.c libs/defs.h \ + libs/x86.h libs/error.h libs/stdio.h libs/stdarg.h libs/string.h diff --git a/labcodes/lab3/obj/libs/printfmt.o b/labcodes/lab3/obj/libs/printfmt.o new file mode 100644 index 0000000000000000000000000000000000000000..41a9c32cc965f862c9cc3ae6f994003b4da58691 GIT binary patch literal 9372 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 literal 0 HcmV?d00001 diff --git a/labcodes/lab3/obj/sign/tools/sign.d b/labcodes/lab3/obj/sign/tools/sign.d new file mode 100644 index 00000000..c988243d --- /dev/null +++ b/labcodes/lab3/obj/sign/tools/sign.d @@ -0,0 +1 @@ +obj/sign/tools/sign.o obj/sign/tools/sign.d: tools/sign.c diff --git a/labcodes/lab3/obj/sign/tools/sign.o b/labcodes/lab3/obj/sign/tools/sign.o new file mode 100644 index 0000000000000000000000000000000000000000..ecd7767f359c8813b3104cedf7dcdf5385d8bd07 GIT binary patch literal 17456 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 g+)qd}2C)_5nA#P#@MjjRsp