From ae979b41cf915f8b48da0691addae7c74f9319f9 Mon Sep 17 00:00:00 2001 From: Andrew Date: Wed, 23 Oct 2024 10:10:43 +0100 Subject: [PATCH] [CT417]: Some notes --- year4/semester1/CT417/notes/CT417-Notes.pdf | Bin 4747148 -> 4754562 bytes year4/semester1/CT417/notes/CT417-Notes.tex | 72 ++++++++++++++++++++ 2 files changed, 72 insertions(+) diff --git a/year4/semester1/CT417/notes/CT417-Notes.pdf b/year4/semester1/CT417/notes/CT417-Notes.pdf index aa9a9681fcb4a79bff308a8f4c7622239cbc3073..9903616fc8b37c4e2d36314c85cd3e1b3769383e 100644 GIT binary patch delta 35765 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 Lg29&dR-*p^aIU$- delta 28475 zcmZs>WmFu`6Q~^)cXxMpC%9_}?gV#tUm&->5mDK3L z46e~GHuHw9;W@vb2S|K9Y2_%3=Mj2LAmd?4kVF7slbFJ@T{JGSLE@@Y7+s-s?C16HwjDkSESjkNT3mZAnWrv1J zdF6a>x;w+$pVdf%$87*|G%3$Xjkyo$jFwghL13ynTZtwy&C`48tBU9|RPEOj#2eU= z@W);Ra|bh5Hy3kb`@dI?CN>BhJRs*p4*G^|I2Jen2QR3HNR|$gn}ZAV1}TmM1dT_n zu^|Oscq4R)>W`$pKuQ?VtYY13W~|niu$&dU9+uU78FA*|Ojkk-O=SrYlT4+Sp#)O; zcKdM~33HXydGn&-L1l^wTfEHVjYSN69!pJA3N{)^#Gl+h`tS=7=t)6`VV=d(in@OD zxYSOXc`?dCWH)T6>5TLB$|EQ~t@6SyZ zEdp;ybvRP9jZ(unCODSn&E96b{Mu=9TMMWyD72zu!nfXR2M0|?g>CNa6i}}eg*Oqy zzL=EDd?`zP+g`pU4uDeC{i*QjCf}-KN(7KpP^{)RkE|pLc>+n4{26ew zflOadlc{&1BmG_sAbW0*)wZO}L`Q{71nr(hB<0R-j5IJ%`A9_UIv^Vt?f)g)$?aQ% zf)1M|2yqbZH`!K*i95TEhh&db98V-m)D;!r0vHt@X`nt>K*fU76j>L?(*vneOJ?lM zz(XGw@)I6im})@xz9?7-Kf#0!?{H;jEY1{wit`KQk(hOW;$CSGQL`7yv3xKEafALV zr{QPuTKC{&I-W=r+vb#PxU|IDWcAvR2u$v@q^xf-)ZId%Mj~Yj(?!rYk@5oM?Q$4> znZRI$k^ZCt1q8Xz6d?I#__j4oVAZks2G1(@c+j;$BtDD}zX@Bc-NFc6OuIWH)Z> zO~BcLjw)4JN-^t3u&Q5@G*DSZe9@olwgtKun`EEb6!`_8m7!-9{8*VQHfn?&)@bfv zjEOuWCaK0C!>7~7#)Q+3fS^yKvcsU#C2z;<4Vzn=%WGXp9rD$(W8hhzk81kRra25p zh+ikSYz$^&KZ4Cvx5I8^lWdpdppL`V)wi=~m6#7O!}M>0t-D(yRK&QneEyy;77APr zLE8Cjno$>IGfB_&IW|R{yR?3sAzRRA7st}!>g+zeO3!a6hxY{WJY7#v=VHC(`M5&* zx-V0U5$x64-v2hVIv&up{H0HzH|Tcx*vGe_P1}IC(C*70`#Y147oTSWqFB25T~s|B zpL;Ea;@WQL}(c$XPHoI_l z`y}$j0Le+}vC^u|t%WOwpJ2ocZt3O|{KoVCfshx=YwN~~t@H0g6+L5TpSmxOywME< z@spk4F4h2p>YDpi5oR2Px6$kIV}VqWO}mAzDv!mJKbdEvqkHpRAjcP9R_6V4Jay}T!CiM(h z`+qNT-2!HwjCR+^QdZsrc!8AUAN+94M3U(a5=Ut;KL!RGz4+YajWd z=*9!#&^fd!O6T>~lYXJh*6L0gTSfdrpFk~Re5r?^`f@@?mQ8~8GXP4l83}zENB*a7 zN70rL<18&s5_D=jlZ*>uVZlD_(QCiS?^0;;?zQpu{yun!RA9^SPJXcEFjGi=rxOp7 zd$orZrBfU?vQfHl1Dd#%6)Zbk)Rd92wTnQUd6-a?CPrzBOlO`47RL~0usO`d5RVIg zziW{`AXmZ^9not)B7fM<&xXD6cLZEd#JNs5`Z$^de!X$s%V-QDLTsr62ccyDtS@2S z6~cUE1X2%*Ht_7(rK=%bnANN3MjofS9~yBW zM|f-Aeq3sG;c$b5QXG7yB;_#$Cdi8zT_?pB2b!6@F4@Piq~&X%1sZz(FXVvdCDHQv5({C+S0RxxRKb}PQWo)XC@OBln?4K>OLq(WcpDW z=x~MjDLCY#^!h_ZoH7n#X66z?AysB95h_-(c>=} z5D5?IG13$ySjP&bwW$g*By)w2itS3<8TC&bSDk5((Z(GrWIQ5WGv|bSfDlx2CaciT zsDyzS{{;k~;~Q-*=t#Dd!A$8>#8PDR3{wVMNUzm%PDUnU`RIMQdAc6*%8_Eo3YIwrkewaM3Kpz5p0q*miT^&qe4IBBUji-q&P7N zspDyf{5%Kf_UGulRWFM}y}31nM{Ov0dz;H%QJl-3BUe`yhBpvP`4lm(MlYm+y7#7( z^#zdD*1uaS7H?!#DBX@2n~$_2C{Ngf#i420a&1n#!>?syUH@tQda+_}|Is~GSvn@E zzm;HtqjLEip8NuNo5P0o(=B}(aQWhk0pxY`-5oT}JqQ#%H2LXa^N*(EYk>EGyj-Ly zNK*Jy?3f_g&lr`$T2W*^d3%{?_yD7r3`SsrEPip=yiSQ@0zqU~lLKto*MeH26f!2b zxk3)|y5`?>++k?Pq}!@AEf;DRh94OBZeB*2N9L4U_}rsgPwYQp6BU1gJJf87Q;E)K zzNBl)hMJ*sjGJlwZaRl98zNnX{_SjKleAFJBe8j=&+Wv)$KYwJRbx-h?F7etk-3Nw z(*xH#hQPd#7N08BW{6rqcHB;0_-E#4^VQfnb{k2P#A}i7Om7feWM0uA@?dmK2sRMA zz93ygox}zlBnLkq$T$X{J-JU&0>H)tsw+dH_{yLZ&Y%SG4&WWgcc9*Z1~VwZ++w`9 z-f|S=c$en|C2Vm~fXj_w@Sy?h93U}N89MNpIm|o^fQ=VqEQ!Jny0e3k1hD_>l``DW z9_Afbu%SI%Z4m_f-)`8!q8RXFZ~(SI9^ZwH!yo3<`9fWrf!6k%9b3uP= z{;wF{e-DStL85~P(MNM2gX|w4}NWUNeZ2W)aI6(GgNa6qvzVP=!f$PeUm6G0X z{=XWY|9XfLM45*Lu>UJ}2XOHJeKuA2izEv8MG|!}@^8s|U)KK#8%?4*!U5R%LDP$< z?f}mB5cRLH-4ZI;ZV4?O1i=Y1w&h?4GdrPg!zCvuB7=#%(edCxMz$QBAj@EM2>|E+ z#x@a*9zGF_@ebxYSnpuJgYypVJ9yxUVEjb*|vdN@K^@* zpBfMf20RD&S)Rrb3N*QhiVSMclqLp$Q>MW|1#t3!*h`S;z;lK)+VG&+2~-Y{p%sk; zBquNT-=R~64_VQ?Lkk|VqT?|6SNwM}fxcML{BL%IjnW}NzE|-7r+?c7-4hJxw<9_y z=y;o+_n+>NoP1n=d!q>dv_J>`v_Nl-1mNULPE=$EzsvLh{=T%oQx3GbM=$;^{O{2e z;nMr`?=ZZ>_zu%M%JN9PDg!i_LM7}_LTb_o_BcP z;d_Vw9RV=y=|@T1zlOygCd>hTZ=4AAZZ&^b)LSnC1<_~%XT(NiKPRGm zcS41*cKRgXCa*1GWcx{26c#V+sQ&rR=~(*^IcSvp$1grf88Q7H5#(wr8SWMW{cjPO z+a~lZ3&&{#?1^gfkCQA?NHos$#rVmsirs2XI?+3L2H0!yCWGv3Kn8+&pUV#>X%YCb zCVVpJxJ2-=NR(r7l2(H;Vhm9vNHg-)I5Ls!Q(2#&e*}Ky*GxmOG82q+u1I)_-at6e z86Nm-jE63@&0%WH6?I3}iHBThwd5qnQXfi#9}6V|eH9H&i;Wyw5<`M~s%=c0J{q;f zUxJ@V&7_NZ`VDFn4~WLts>2+QFm%ca6_UdAM^=DVyinI7Y7eU~nR+%$*-OzZr%rkl zKPRU?)U0qURcE3nCp=ft0!uhkc|_Wbhv-z>PA5#i&{$F1E>z5r04>s^*wS|W{>FOGyloG-W#kx?RFoQ8;=ImaB$;X#{ z0_kO$`$MF~Y4R)&;Wt9J6Kd_8+a%L10FfoK5miz1E!q1Rh%An|g&chlpA!7<*&-I(9 zyZ0rAUx1L}kNlINr;6wX+EMU%Xv1>3hX2?IHhFxW^7sORG}!?clGm-3*97M;@3hU@ zs}skrj~cn%y7{||;yUf#e+UXMq)H&NQ~W+m+FQjgTLP(ykz*@;Tw9Tm*?lvc2(1*h zPWFy>k5B#1A1%hNbT%io5OEz@y8Ksxo-?_3uAa#zi^LQs6C~~tzp;7_13yaEiCX{Y zsBOVmz||D$zEpDAnp0+d%gEhK<7@2~vU2sm@M;niNq>mQ{}|u_*L>jUD-m>Fa$%aa z@L`~hpcZJ-+5i*LJlzfRTN6^!X?JhO(4#1Aq;gFw7S$o;&26M8flbRE=DFgw^_<>vs9k?LwT?(tycj4$OB&mH)i$KJ2oG1e z#6!hY83mwOHT0&ldIC5z=1jpG5t^qb8hV9PK{gi?JN`fSz6!MDXFE?no+P8sD%S`h`h?T7?vibrbLOR9|s%T)mF`I1V71y4%x`cxMDFAhBxicdg*_C}Xa zzABRVj0JuL6s<$i12c9DKQxD|}hN zr6(Aol$fnTUpTR|N4Xz^@%lP{;kMtJ%**PVb{6nM`(<57m=BL+Mo9RAH8uLY=y?zL zl=#R0&T{jM0dUqG^v0xlQ?Yj^)urEYb1*u3Zp+t79$lZ3H5wvXcQbpm7zf{IG+_EO z*6JIeCU!~t@;Bw}C1F=bC6GI|NXPuaM8loXgLex2u|4>@FV+bAUPo`bZrkAT+~n!= z$2;X;vV$d^?Pp~dP%`!NWi^V~zc<=|d5ZZ1`|37QGS!9`=K{i*a+r)k{%XJc=K|mh zS6Im}g4*k`y)pMVqd+6LVf1d|RpT$fI%86Z`+AJgR=0reL7(sEy@LXAJUl#8ColCS zim_G^KUY0}O1t&fzkWVR_CGBYY|&mmsBKjvCn7ByZI(H{SboMu77-))n_dH9R|%v3 z7kywl2}=Bpe*SrFUnjwEUne23uaj^iHt1vKdvx+%|Ia;Ag4@G{TLB<3urwn$KT_Bj z2_(MDMGt076*fl%vFQuagIn^2Z4n{fBZI$QQmIN<_uXgm{&zS1LpTH)!2MrH35w_x z7Kh~eFI1oizvvWxN8}w*@I|Lspya=*e~$BA@PEGf1yZ~b5|WGOe?0{FO8+lL;Ntx+ zHVs#R6MskI9m#j3zzT5EZ!Uio_!}aC-y5Vry?6W`#=R#G!NP&k_(%|3AfpEvdT>yT zG&3rIi|=oSnhv~_DJ_fw$;Hq0&rw72zGoHx=Q2mD33-v$pBeXIIi{Z>@F16VK0?I#f#078X0mkePKCrs5J)EH?okp=t0Y~>xSS8&CA6{ho}2j z;NInZz+;JgvxA4qS0io(-aoH@F7F82-ymPV(6FE2eFv&dUL?c2prAXvv|v5kHAs`XH0wZQNLPdM+i*LTnG|P8Lc1k0e(iuVo@4{MV<7~%=!FXU=2ML= zY`bH+G>IFAM4U61tq=~Y%R=5jVoDR&0t0byW^8^JdS$AM5+25*fJhth8ipe%w<*rh zb9=Z~t4QK}@(N={DL+^1$i*KNPWyX|JC3JUCKQLu=mhDC<$N2Z-Q%+E4j5bva8?QX zU81Rc(?C@?F|xE~^64(t(x*3AP0ansnK;(Px`4`rk~4}Td0>amj+2YKO_Nik9Eh;+ znf$Vj8ub$k2r{rTy$U7U6`FZa+M|_8v-k%_-C82GY6ATTa?<{24vh)4F(}>RQp3FAJ&9-~yFRpd@?>=UC)r}CkmQr;MmYvOfGwV} z6C3u@8N$GF{|_41v5b%8B4G?Wl0Z0pMkaX$GXJ9Dv62t;P0*B%Ls1(5<9j&D~S71-dM9AAHMvYXNF)2{LqrkXn*{OB#=Nuj*5iv$dD0? z1-?;3&^zZQQJDwFAO`?=41eVb2Mi5g$XUfBRN=%nAI(yzacE+F&|PF9=?7}e%`ajI z{QTWdkDLhi$3-x)$z21l`rPyxy8toMt2Te|0kgQ$={Hx;Ug z^mB?pvXb8T^!g6LQk&zjkZodRcapQ!$s`G&W2)zv{go_I#Kv++KGhJsTpx%we=~8@g;l&DkPZ@AyJR0RUv-Fq@ zq<AN-?uPUgs`m4s7^Dg|$gy$!p%Jtc+lnn%BxCVjLz-Ce^j?dnAv@Bz&)7GWu&-f5*TpAj&qS-j&UPtGSwDvUAJk zH8BQ)`c9L2(i1;>z8B2yl+7evL%UYRdy`M6(^kQH8W*b&2Gst#3RfmOfUA>F8e2ZS z%HKU=dAFSGiL7byO)L|rr3O<>B8p|LSeU|W`U@LFrME=sj}b#PlK1kHE3O9P{8W<0 zFg7{2@A);?rUZ4sRZ%EyM$Vu?-`3|I>j_bNUq$@`wLQ1Z8Yk|V_Fr0sdu+OVDe4v? zml4vA37)DPUIGHe_YFZsf^^&Njd%91=1syGOjY(NmkF)R6{=o9jdMr!^N$nz!tW~t zm*cA>y-Mq89hGVJXU;Y%+bea3_8$tzGL#oMoiNQxT!a4UUV;X;^|X@`f|ha8VZhnY zt;h#-YIxkE&PxG@UZiY;DqEF$)Zdv<7;(xjA|zHV>t>7vSQSKG#)CS3W}%tf*Zwq? z!)5qEoKn|a*7)CnBFbfSk^Kr@z~f4uk73*9Ckt}P&#f)&YRTMeW1nU8uq}zP7@=?G zBv(IQZ&!R*^(@5uovS&j`GcSD&Bo+Zx^K`~CE|<-1->8Y=|^mTZX;6>k#sl39~s&C z3?1<(!f%U`3&eu%Q*a>64xwqFO!x!l0yf@C^PL&mZjtpea6hNCR=Ln~#Py5WCUUXv zV2j$d0hO#;^qz{$=y<&SMmKk1n4b(jyLI)AQ)oiL+Ww|z30{BTne=TWUyb=4>LCDgt- zcp_qw+7s#ED=B12pQFI}z;Pbwdihs}irle*x|8xjTv2jgrP)+ zv6=P25#*80id0hhyLpatU9W;t}qfZRjeSa zKxumLnu`ny0Hhrw%>cr3mmwi!;pz zpx+NNB2XM$oP7Ve?y6Kig?Fmgd`~OG=apj znBrM{%{K6QsH;8-wmP~(nzkn`D=Ey&se51u$icv#(1gI7ZZsMss^rv9gf!$_**xhZ zTslfMACEF_An`%LFQAB=x!NSSO)3M*WeDq;Y|cCLMzs4lGbL zv(A@xnPR4D;F9`FmBH1y#X5v}RlZl@blwa%7^?ya#($LcWF98vDuugAAhvqpv#ILI zE%&&4>%|)ATfpWJ(A59J%ryHPd+%PLcp;BRo0{V6nIG&bJSoQSs#=DX%uw_LOBSS{ zP;^pcK6AZ>>-v^aGn}#;k(%^O{h%xS(W@oYi|mN=Z>sg! zT5gYO*Q-B!l6qQ2?d+gxqo_#NtGis&Pp8OaZRY{y(oSa4U^^NJP-4Nm3=e+PCz;V# z1GBJ`-Kar;alvL|{^4;CBi zecO6%@ra!_z7=z}TJWue@yQ<2g;Q-UH;z4UM@-9xZ`NLJq3~MumV*JVyCl7Vl@xoO z>2)Umhs)MsiX0wNQ+Tk~9O?bc3ngR#A6gbtQpImp4v!y?zX ze)^kWQlSW(d`q;>H@kUy3Q8x0FL^=&_lXI<`I)XuKc`evV17=^e~bP^&w?;R_$9U* zxYJusZ#>>uE1!x+>=C3aP)j0AYyXtWWn$B^0wq=PZ1i?z#cX)QTAwkd)8vBkZ0pw4zx%k_u3P{J8k4HfZnsxGS8%C0LTcb&%tLE z4ea5u(Zr7{eowkwCv50VV!ez^1yZt}{eH4(+-2{*xML^(ME8?~4r$;kJITSyO2@7y zq&W@IM&M@nvvx*d}MAqvUK?lLY^lQTod4>r7IBr9KwI968AZ?^8gHGM&P%8V}B<~ANF(OSNbm^^W7 zR{1>N4wi=%bo*xd@ki}ptAH;g;(&x;wChI1V(0XcCPo0wugtD*HPJLaFLEWA;Ax)t zP*Dw6OgsrrLjvA7yf*k2ryZbwCPj*%*ArY;yR$(8NmiQApCwTmG|S)X6NB7z>aq;$ z1gz&~#QHXpT$KCcRG#A;_%tI_a$1;4`8T0345qR{%ZN2OnZX7lY(qQfU8P9hvyI_E zCnLhMCP76eK#*=^%h7fvt+CISWZ$>B3wT(SeQnYhAH?P;>*xwK7D@pprj20aZ| ziU33OS`ozPgP?dMi!{TqhP3-qd0T}Od2?y4t~%H;!}J^>R?T=Lu4~BM@sv%9P4vd4 zQ>Q*Rq8-No5OhS)M`i*VWeTgfd@=u|C$OS{M zeUx1r-YdN9f1!*e24xFm$$11-TYH#U5 zz8neV4gB(0$sb?dciO7v8<&od6(l}`&W^crI2ODq<6LsKoZ+vz>5wSe-hV$y;5;U* zgd*Xxbp7n$*GQXvv_&69O~)fYAWFfRb~uB?Tc&mXlER;VWF063`{=`5ZHyFqCu*vE zNwu3*{e$oabKD^CJH$zvwk#t{a#TL*r-`g^KZ;be)z7vORPYUQIyJB`Ko>R?5u7wM z!svT@7< zLboB^a$eGOp2y{{nHmv-=ZDvMDZw8mym04rY@!9u93L@}e`&n=>Kl1Q;61p5#N zV7&E9F)VE09lQP}>TX-8RMGaGXIv*Q;${c`?Uu|VzKlqjEtht7e)ErL*_G{aX`;O< z>FY10tAi6%k*ngg3xrK2XQIzpE~~aN)uOAukf7xh-(g zYH@8sY{n;0LjLPJ$*i%dT6y7~FF+qMA7^not@e>lbYOByu|!#ZfC`@&tHf!MN2{l5 zJNNRxlb9S{6csOc@S4mePtJJd($$}o!5JldQk~7aH zfZN9(0{mn~U>nO9kzQ__Y}!Yt)GBMlJRCm|J>uDuj%YGAe~nX|I zv-tDT8kv?HsCw!klTBQIHx>BzfA%oIhwMR@Qh5;zaC{7JL;lN?kfoD-n0$10P3d9*(<+y?oLl^O}Jgt!)L?P>NG z29*XTBxD~qDy6xbe`Y&S4~g{8e7}4Jm|&qB{`<1;+faY^q(B_OG9vHS|8~+cf@M^t z-*5gc1+YhCHURHiqwo1bdJyrLj5L6g<6r0wE*g`GqWzm{qz7x=%D_W{oZiolf+8Pe zq;MggA(sYPp!fodpdcX`o%i`Ze2`6p<^OLky$Ag7p}#2L{aoqiDq(EkxR0fm`aybg z2=jPgaJ@~TPaI? zIkMLJZjj<(K#F?ax@!Ol5{qZ)Jjrp7EbjwW7KZ4sFJN3in zBcm&o_Eke6%jkTHhZ9U)y zykrY)ve)Q)&JR|MRg_h1b`83ZTP`m6Jp^66&S+ZsUbK3?9-W{1*1x$=CrPmy5!RCK z#Q&05#MKABhIM_AjbSBu-Teo>O*Iy3IJI(9NS=Xtj6*E2@-+a%%{C4Zk|VaJ6@3{vz|4F2_9jJ_;^%!Q!o7#uD+5V zef@)JB?g3xC<8PUg_@L1KLt=0%?KzC5HWpJn3UHGQ@FicWGiII@G%PASO7E|=tCC5 zyMxXW$+r>8F42;8hVw`Gn@FSvs9=XMWw@}sOM((-Ab@e|+xoQZyqZUK4z^c*oqL6Q zgZBXs<`>J2^YT&~2I?w@jUjKgnw}vDv#pre0&#ghJe07Acw^TvA{04tL9Fd`w5#vS zS?If814wqfMBwXRozfbVvJ=1OWbRsCqAC*_%=Swz+QM$_;Wch>w$q?28GTL({wl9r zRM96e2VC?v1AILi9U3PM(8x*Lo$tl^JR^RNL!bJ&DL%&gHCG^>kX-{J*O;qqA z7U+Y%tFMqh+V&O7A;`FcKGmJgl}1qbH|f~wkCURatE6+@h-F%)LRg8K9ztQB8a7hi zx2G$@@e{Fy8_X>G?HDcy+-{8*a{XB;X2t%vW)V-cS*YxMouKVN*P4#J7ho3`A`2iUORwVhK=rKtVEF+aDt#(lgB zW)v1ucSMHWp1x5*@ao<_P{a1Xrc)ZQSO!P5%nfRXreJA&>cQ5Dj7b>!u_HNlkxJ)4 zsuuB_+sRtX1C0I_?OTeq=axhpm&`s1rq@E>)9H|bS{+lE>0k0)<8q)Yox_KB9|P{o zDwrW4wi9{X5aDRe@xghxHM=3<*j$b$%G) zExK2Q0>??A^VrXY(V==`?e4*eVgl%Q`hug-LoL9{RTX#4YI!dYM&8cNM)bt2ODM8U z`#D+(zza>mJ`F4uS)xY;Sa;#@7Zj@Gji4)*P$OWS?JFSUN@_@WtISJU_bE5tJTIfn zWJtn0o8F5Wc0-i=yOWS!wqzP$|L|VlaU%D_*tlhH>?wAP}|N5R@7$Pz_Tx6w$vo;rWxiqdf7Cv^j@8K2S0_Px=;%B6o##nQ;*hwKKd1E0n zmdF>=W63O#q5Z+b!p1n2YRrIEjb+v zlLziG#9R>LBQY$y3c5;;_6VX!&4EIcr|gsKx>PyRakZ)8j)`YW$J6FvHPg+8N{`2F zCD)VZaPv^sG`pQgxH$zzc0)~+ilQmY3hRnjov&Qzlk|hYYmUQB94>HNaMhKTCMTE7 z!jRzUk&8#qBz>w7*EFX=E_i*CEHm>J$Mu#m6BB24B~5R;NFe-JY;9*j-%IVTb45rd zvrDwGRz_!)P~!J)qQotu7Zb|~`XsdOkC3+r4X>)R0T8eY{{US4?Z zAzXjPzz9_6+EGp6>vDHnsi*LhJ6>i<*4K2$BEU^A*W)>l16=pX-jS^?GPa0aGzaZoX z@jOp+mg;QC%@^jZoWAFcVlzH%p}}j_IdVE>vSlmAP^CDjYxXUamKLt?%1#?x@$GFQ zA#l*=lt2Z$)^e-ocqc#2+NocXcbTz#1rFceaT=(1X3 zj9XDizarNC()K+~vrr0g_pZ(~Fltkv+ptC5-!eokkGHZ}C#HTj$QRn43G`MlYDvM+ zjx$w{gyjW_RXmZcd0}QbrtoWCR~gcu^{*RloG5XGiDuamJ9-guf_%r?j#5PFTr@B4 z3ewv3%Q^Uv4^6jky#Oj0kp=B7YPKf6Ma`B3&&047D6aszo>HPz{7+C$IV~TAt%TEm zFSeSxlygT~irL&FaHShuGW-AtL%5DT8#g~S9&rI{IJDA~)A%m~8W$EZ&t&XrykLwC zP(ay#gvJ7YVc)*E+$_W@j44u_l!PBF%MRdv9M_ag+sEzY%%bvJrl$oHfrygZRTRyb-=(^%H zdDOQHycq$$mDFLWQyimRGNzQj)c2P=f#0*83#8TB(FGX>+agg$#Z0wHA;qXmf2Og} zHTEqY+ruE~C~IvW;94}}D1?Qx3984VK0Kyriu4>LYTWT_=3FHsNr%!GHe5I#^@ZUfMS+_Nnsf)T8D>gVP#TM%LvM<>9DDeg(=Qg>{WKx<*@mE&vS!2 zj&_LdALca6vt>aJ9m-M00`&Z1M=+g@R9X!E22=_v46`E`ux0mALTTRpCa*WFxP8cU zsdtxP6g~AMq{zdp!z}(w;dWCVAamP8an7IQFm4*DK6IvS41+u~RslNwe2TTRZF&y5 zLiAe<;!O?kLY8CB=zfQ|_Gcx+mkYZt20Vg=+3GlJGMuOitB{td3D$rZR+a!&ra?JU z8E-e?L3Gp3iPl5IG}lfly^2q%Hq4r;N&Lu@8G9C-#LW>_lIAAY$s@UnKtBo_m(N9p zY&8Trv&p7+!w9y&T8r}X@_juR1lHKuteK+ZM${WWO?Q^0pmGI?R`BWvx2=_V;Ww%# zw@ZiVi+zv1R!?PFwy-!z10iw^T_?(HW!QaR&sE9<*rQjXu?G_K;ba0 zbG#2Zo|l3O+8GZ>rOEgd0(>ye%EjOl<>nUNE8A*6+&I5Huki&PoA2a%#oL{IPA*$N zOw<*1CO0t=03{8Eqy=jD2@(~(~x!bfrsK8PK?m^I7b2*CsZQkRKMBUr+zu3;#|Z;X%}T4O!CMpD|ycPM!bhMr6TXeSZWzt zpHb}dumFx1^w8RRw{-WCmlqLgr%&qBhj_vy9Q&E6U!_{dKAGWT;rXnq%a|P7#FsEX zDB2vY+>GF|`Ah)zKutHK7ExzPHPvHy+#QceB1)AUK2a%I*nQ)(dzjj_vD=lhTH2OF z6fc7?*1V*r`$3KDBPhO}|^`3a^l1^HKT_M*w&*+`L=H@*f1@#N-D>2?0@}xf2K&;Z&(x@^q zsidIq?ly9MbPKh#qEI~MbMS%!Ip@qHOX^?LGUNA%nE8+=IviXZCF2yEh6Yz6YpG!R zeo(=ah-+tW0kN%epoOEh*Ss`oi9~OVkASZP8*sRSFAapzH$+WRP>hFXP?e3h3XlXe zh#bs$Ui`I_&wa=1jVZ`ZOkbaxZ3tVBj)?q*fna2coKPu7eY={nN8N0C0HRarjEx$luin=xd>n=|xNkeL zxw+Zs15nK?^6Ca+1%+XqP|sDC5%ZT0fvKeC-B&S9@J0U^Ba?a{t|%dCk+`UhJw~SU z&ETp7dkt?@?gl*TM}HS57m*%a{ebW(B))aVVBd`f`*mlO?|&?=_jWLc5EvrzbU@QH zx}TbV>F|CJd^??2D?z)olGU2xXDW8OAu8Q$n*{0vi!|S@h5spE5bJIqb6}o%o5nmi z=k0P`RlTvf$xuEIv6f`wd;>WN#7-)CH~4S;tT)#c#;HX(9+D(E%}dT=Qf_Vl;aEk)*kN529n4XMSDXFy z=2Qa1_zvfW3!<8sm9Hsh$|BD%@tpSURG3Lb$h4P#(#yb=lH${QA#nqEDS#ZBeCQe* zI0g5R`ZfyH5a7iSCMOw}a#D>UcM z>8Qp|#`>BQt6%%p^P(@d9-gbZC}G=u>-?+z?~uDUT0uYi7EkejLBj$uaYI*P-++r^ z-xed7Y+F%BTzbhrru@OHtaA&~Fo2Fc4`{&@;nT0nWOHSjM_HKws9xsVJ#x9Flj0U1 zMbdc^#WU91OqD%A>tTlr2KLyDPBsg_6*hfDJSqP`3loC}lb!l2Vy?op{>yi7;RGAG z>$+nnUUR@wy9wk4tPJq8?lwE!+0f$5HSG`WIy@i>X&38XD zEivz>>fpp{`ra(hoVwUpawg6fbp7P%H4DiQ^LR0vGrYV<%D>|nnB0sY~W+4>yLnyOW# zQ*)2{^m-rd)M7S{!Mm@O8`IIdx0Eh!cNqN4QOalM4ks7qHYdmZMNV`?2+#nrOIys* z&wdzv#t>mUvLvyt1m>}tOLRc59n&pL!S7M6TZ(%{I?QJd$KxM0{5%dSG{vxbDQLp_ zo$!!Q6iJDW@Ek=4GJRk_GP=^B$6%PFFy#XYBD#g+rMT zcEJMqj86(I@cH0yn7ZWyrXI+dSI5-p@?&CQM$eJ%*RjMSk(}P_cY&NejP9dGM8kS-$80 z>Eo<|;tJZWjS~p&&fxBY2G=3D4#5fT?lQsM-8HzoGdO`@!Ge2`;1-;p^L^*s{uf=< zy=z_U>gwM0?zh%@9O&hr1q0B?UOhtm9uYwy8@?*R!I zBHb$=O{Q*+LhIYrEaAsG18#xm@zk|3VB(=w`To<2=~;@f7~JA0*LNDqt3tSlzXy+3 z6IDbm?uKYaqD3c!prDs$y}Yj=GciNN)KFn1`27+R*^2)-6W4dHk%3`DZIxNeX}N97ja_GEE)->NyvD2 z2{|cqqlrvP&Ei3thioJy+L&MF3n-8_dTBH|XBv^J9l30Y5nTPrJPzYN#jU!nx0Jah9eRZzcG21g^<|*fMrd zP0_-PV;Y4qR5U;Q7PxmK5|@oBVx>F7XK-=U1ECP({XMHvP%%S*@nw+ulp4;$UbZE< z^5Xk|1o^j=0@SQ+!d7=W%Gc)!$SlPBbx8A7L!zjBvYFs3TioYPB>T1IAJMm5$*8iK zRhYov{|=SO8=k)H2lr25i;UNEL8VO<5h%%o`IcT~YEVdinxjk!IRNJk_Xjf2A4Qx;|a(aN0Ecz@N% z8yqiI&=CKi2gI5@K`GDSN4)GmdY+b81Uye$WLHL-#1h4dZC+;C#Uc*cAn*_ke-w~Q z7-srROkXgOlwu*t{Ncx82~<zJ{i`_JT0 zQ(AbO*wZ-6fo!R)1Si&>03rBjAfp}-SdB9VT=n6Ojhixc(O06EU6_jBiaR-U@>Hpd zO5sQv%GgF#hZ>z>K$^GM@>J_%3KHV}9m9RrA+#4D;bh*DnQ#jBc9aFo5J2<4VOluJ zs`A%Uun{CnNOMbKD|&`9B`iS+@Ks$Xlsn*PnVi+)4!@f!%^oM>7gu4_aFP_^`xLkI zi!+Th6~HHH@yVdDn7~bin-Xsu*Rw?+2V1e=T-dk@2cy#7r9>@Qzb<8 zRntuRo+5?kQ4sSvR0%2gJENW05ide8!^)Sz*%-v0pyX>iu5`1fgPl9%phB1i*p1wN zQhnAy_d^?fq%gb=Jb!C)qYZubv*DhK!+p&g5zV57&tgcgE-x<3GNS1b(}T8>ff<{00=A zo1~B<2$Bs+omsPqSU&K4fkA z?S{IbB4{@E)SWUT-JHdYRPO1FyY5FV+qJ60)bX~?ylSr(%xP#*epYeo4=M6p`L7p~ z+y6RM2K6A@Mrv9fw>K4wW1EM!>E6#ZUQIlH70fikMf@Xl>#-T>o)@&gO#;NEGKvXB zLg0tyF7D7OCn%+cD{Kf4(P>Q2G@V;7LR*xmnUyV}2U_i*N`c~Xf$h{kfp)`%?Yf-& z2WBS)0m*F(bJDF&c2%1sR@T6*OPllFM-fwZ8fgeY_vJ6tyhj^EmJLp|??7v-Arbw-GktUi~N%XJq5a1yN+1F8RGIb)w7Z0{$NFvAxxSzis zeS{omuLd3`TZg))J)k~+3K92MJb8X2y@!keZ$4gd+*5g`BR zvd1m`Iz?<@3}5YGgNaawP7c=`T7ex$<8|!5u^P~OY%>cXI$}Ip;=_4weG{){3^eU8 zQ-_vP#jZ)P^#M`W^|VXlK<>ZomV>r*RSmMltLKFUo0~oddp1-GcmRE19b{W=x3~YZgbIk5E zHDS=Z^LZ;Hyq&4o}txt zL<^C(wW>1eVL@p3_zvytdtI{S_ulxXv39xA2tblwm`9$kP;^vGIo$nyqC62XpE{I4 zR_HZFc@bPT!QU!6pqmRzcsiu-3|YJgwzf!GiOhVnUp7#-cczg@e5{8f_pqX8Zd&!q z&d|h>E-yX^zSGb)*mHBc_Y%QVX(m__^1RkA>||CAT}nY3L`NVu3!C zRKyz&1@vye-{R*_1cXKIrE*1TTCjt`bI5T!Wnrj%n_qfuCQ%3UZ8q}zA&su*k+esg zst~H)SETMJg{=>pmL%3h1a=4{TgVvD7kGLE zgfSx)(JGsFo_HY3XV@R0)I}GI#L2+L9~19tO2D4KeD+5Ky9HA5LB4#}&$AaD!i@AF zz?TZ=kMdTlIDN@KIj3OQ$QQVLefr&n@3_W~aplA3Sr@}aWr)VCZSeQq!Pa*FcT3Hg zbAHa`hK0Q0RaFjTN!=^11=U|k*|py}G4!cRwO=u1XB<4H-az61wnUh}(SoYi;`cps zAGSsk_k3VYDljf(6+-2vjB5nF5ew+PTS(o1aKEDuve1bu(#Pm%;rNrTixWQO$}qfp0X>k zh2ia)3#f!lMBN-WHm+O}dSLm)BZT30bDR;jNP7XczpERFhESj&xke1AMjoT;W)|o< znFNZ|PR={n!c=^lCxvNVT;?rgF|KE+joqr}(f}hQ(J9_NAEV{3&mIn*V0&`!SFW1| zFTGwGSb0O{<|}tY^lqaK8Zxp}O)K36MBOfE@8-Iu*Sw1}TaWVO4A%nKF%M&C6Jp$@ z_JdPd>bqWFAWRvsQ$IJ1r9#O{@c&NHbYb>JOp=jNKx&JPM;(OvI#5zF`r7Q-#5~WM zMTOh*6H=T6Vic&SnTHe~6jobJI`D@(K(%PlYUb63+1aCF^YCkr^wS@kBD#D^W|?R| z!vY<}OfU>zF#{fSy?FGkqYI*GKp?r4A>$qKr`J6v$iRy24My(Bly+aHCmb2uZ?1ZD zj;d?n#?!v~RwxnWC zPIi9h{X0qH<2y;gsitFP?l;zYzLt!Uhd#F)w%owPNP(FO+TTnAe*1lkX7^sXQB@vkeaS{50}HqbuopnKg$}TE$2MSeCfOOl z$=d1AW;|272#sLC$Ei=~OUo9+Kkx2eOTsk8oJDh%e`YY*>zQ@}>k!}5^z3xGmp2%#+u6Ag zv*gPVW;kLPaD2ZW4R$bS+O~2AzV`$6|^Ft-qR2S;AOMZJ5{|{jB!{-sO*k z`F1^Fj4CL=6$CNcx(A;A>HDpHK>21xZN}|U5^c3abGEBj)~4d9hv#UX5i>rHQwul! z`K9GTtLc6q+YzLo(Dmuo6B@eIzSD#`^vSGUa3g;VSO)y41Kzk9c>5yIXTOclKnOiy zQ4U)O{bn9l zZ;PjMNWyb`)Muq4EZ!cWyChw>Rqj8~wsW5ip~%W+5Fp@F6VG*?No}w2$#cn> zVGM_(fG@D@OjvVdIv}OT(>>L5;lXO^&y14bXNiaJGh#wguxVc(B` z-&li_ZzAzt@NRL5E6ZUJkW&#PYKj7=!g+I;W?7M zGd78tT6v?f+%B6t`n@0F$;;t0FD_zvWB+hnj5D`N@c{Q!@K_cJI3dJlADG3lKXlS6 zH7U-5ZLqqNN@%sqiSYp7&^*nP05unQm&^j9WW@5FH58Cm&cG!AS?LTxe`a1Do2GQ} zHwVm3e16(+^X-PVhC2mPSGpDNue;1U<+-f3(`C;Wx9E*#kAoMn*_V+g_&aER&VTK5 zK<>6-O3+tQI3Tc%=@Y1$6duSe_&@LnI03Hzp!MJd|1VNAsjH{4I))Q)0RCyJ&Q#K2 z)T&+qNA{u1L<&Hg-Tu7wEzN7GL1*Sl0lWx?8dLpgCJ>WYwRQy4L0Lk7eE;RxJ64aN)NXePyY zvY)Kru1Iqul-9Ut%^R%}b|kUdP1;!Ld8g*|y!N;ngYuN1W4b$P1&LIBkvNXC-%wf` zvHcWq!bg&5F)DNt1W%_}# zzyQAIDPEi#co%Rs&(w?B~CkK%~u|fx_%{#EXfQWV&nA{oQI>^B`Vp;O%ET) z!6y!*E3${FhkA{>tGVZsy@Y`2Ui5Hq-=24yu%l;RYVbCPnrtR!EeA(*{{=))C)XLV zDGfQBPC3)eqPa%l)V);S-o}=v?k|o)I-*v(u5Tvd(Xo1Vf?9?T(Ca7lfOE6KH)Nqe z(~}yfc6g*kHYhafsoz-Fda-s_j%PkKDp)xawSv9{lVGG)0ZsPXs~pcpb&rE0&~mW? z%gbn2u*ItT#%WiuBkt0oTn<8V$Lu<>)Ic|nB&hAM6r}ZHKbXj?k>RT2(C{fcjozLObq`hiFtnM-0NXC`h zb%XKsG>4D@xl3_VQ}?f8akpcVzX)&0Ak?r(nc~GUve^mw@6VH(;WxIz+mH|BeVh@> z8q<@&hK4zEvGqs=1_u*teWFeFtJ9xser+M~o>8|KZ*17>B9Kz+$&-_WGGJ7{cb_XS z>yy^ozdKK1!PQTKPp9`X#rIV&mygZsq-3c*E>G)A4hQ+RJ`JnA2zZtJ9;1NYix);R zzU8n?3|RF%0t^VM9GkXAJxoIBn_-%?$se_*?{lA>exG?vdHSTU!|m>s4emV21>PsV zarul=SzVYtMt;Y-C8L)e(~ktKf8yW}>QPYifkhG;%wKhs z?p>w8!+#-90{a;?_sh#;7yZ!t(QO{aG~Q&0JV+RHJk~`7ckULRXMN_+h>1ZecUncd zxM*xQmDapJN%A~m=c1`RnRuWa8ZsNk6 zj@+-Ra=6Srp=0v8(56c3yWQfImGJW*ID(xPnWm-v)!?t6KBJ086W>a^>qRTAJJM!+)Oas0!$0KWX{YZ6eh3;`QzGG ztGR5Y9w9!!AX0xdAB6VFf)S;zG(G)h8&-)6mnW$EaU5^COuo~S4D?{rh=1d)Rq?=+ zLsSJR#5qh5Dd<-=oFw{X`j$!aEO&Ic+D@B<@O;B08EZ-wRPu*hAR@BoqtDvTV+9jh z_1sSUh|)@ld9$h$Usf;Yr(>3hTlqack-4#JYlwd#qAbmM0iOh;^rH@G`E*5LWu9wIk zn}d+??UdFx=-$vJ%-EpNHtQqfG;ZvDWT$k{-w+F$2*+w1qdPc-;FB+W{VXCO(Kyv; zvX;!%th^ZE?&@Q3J2zaCZy506_Un;$e`B}2)NoAD57N41^)vM4Eto|0X&F?!UP?WQ z8kruN+0ObiM5(U3N|BS$r#Ux-!k)sk=~T|P7liN!J}U_8X~IiYdXX!%E`E)>q7M*V5&zEeMwnZk3P{(USL4%KgFgdT3; z=lMQfX&b=j!d+uvjR@%MiYzutTej5`2+jK&W^t9G=aabVY{M-Hg~bgr2`L@k_d;Yp z7qryH{rZC1o=6^~jyYP^4J6N(+A%o{A%8;5UAuN0h{b51U2ehhqWS6Ex@ERd$i`sL z>nYnIwMV&mk@H)6gS2YnW9_jjGp>%&)`XLVPU7V!S}B8{lzoEFejdP{wSN2BuG7~j z;o!K>4s$43YI)md`Id_Hm1aQ65B|qd5)(#W{uD!Ilq$r;VoFUxe*7}!`<_$F}HHj z9%ui|pg}W@T`9Pylt?_%#p>4PGjRKTe@(<${4<$9t*b*v%?Bh2ZHXu(^+p_s{Pj(Y zfDp!-nLz73ls!_7oYUcQ)K!vx2`>j>#*;EB(&UitT%`4$g=DtjaMqQ4s~uzeF(`Gv za(+|WezGMjd!8Y2KvAab#LB2)SR#02Uo-Sy=TS+S7XNLOiPp>)m0zs!mXmwACDiY` zjwxMSSJglc*`qNhp2AobI;@8*$lB~t8B~s)Fvfm;x-J-+vhO3vg*RieFBj5hmN9V0 z3D=3!*XBvKqq7%$CboW%VTqVw5uAM9dl((lCM0d$>j@3;U9)IiGYb&J+(r za^2&2Dthv!xOW=R_dMO!_}r!UEa(@o%R*L=Mq<`s%<$yc_uTohUpYm8`$RjAHaVgX zGtqA62o$aTL+jaf{VWRexzbl8Bh{wc^4920-uZvyFF?Mw-`b!g(sVCLIrQ{w2*{0v zlZTs=i;G8)g_Dbclaql7z@g-5CT-$o4q%iP;^yQAa&i8jBwgqm$SVDQN)|nN6@Z1# z#}D9;wRUlJ1Mt36cm4;g4bQ^|{BNK>_lusReg}HMzq%RIn1M{1$WGY6K!LE?W_iAd zE_+YHfDD1MDVSc9KVDrg|LEv)XU)AzL6k{?;VGa1N_jONKI0((l&FyQ1AfYk&{h|| z@uh*Ti67Pq+5i(4jJg+Y2rNes|2=UC*@YOd71jQhvYB{f^Su$LBs1G3?AsBfALZyW zpFVYTcngV&yq754Cp@}lsO`Q;)!ez^8kN$if&W#Sgu4>fb882SRTSh#Mn;VLSzaHF zgp#aQ0_!tNij_1{mhkS^f5yGVcUk;-y5 z5GRX3K{`Sd9r!j+LoM#dkb;kxK@m(HgTMXlE`wU1a4!6BjHEiFZ=TKo+E*cL6oH>u z?9peO$y-taT!&*sGB~0A0A*9oPMB|)fE<2W34M}aP901NVRVg8|C{QIK588 zkB%y;6Rwe~<%Z ztXJ&Bmr6?Jo}Ppxkqoot|*R@(R4@|4?faV$<%wMc9VfXdd%xKQo0j*6xMk?=<>PqeJeMkpp3qIJ_MqdYt%~LL zm(KW=vAg#B>sib8sFxOj_c6tE8_h!#VP1#1cso>NEP~7JH}#6(?(#WjI1Hr9yx?!0X40XiU0SX- z*0r8mg}Rx=tyv?+yXv7{bl!T_Z9BRWslc&aYbz3(GB@R5n_mT!v%k{l(ABTmlW~76 z#Ijlw#qoyO)_Wp1**$)(tqAoBPpU3d(ze3L3xs@P9ZyMHPjTQ2r(X%2(9Hb34#iNi zXlER6KPzpiBL0XjS14G6rBY>NzblhvUyaWr?n%qFCS^G zSC}(%&eq~pUFHDo0)Q5%rxzpv_<_+aC$$fxPPyR^w5)R^n@nq0; zN`PQBUAyeT#x#x$4p;#w@5ct41oZgH^g{4OfmPm&&6(C3?uOQy8jaDpg>>TYQAn~#r;%@(NG>UrLrj{#v4T@0UHkx7 zFj7G$Z!@TySi)D05>jDe4QFEG0}QmfDnpSTY^2BXeqA%pw5Q!qT9z}8Zu48yUKLqt7|ESg(-yr?(}t(# zZDp;;Zgi>b?}7F8O$MpVWv7lk^l$mu)$NhEoc$i5oqE(2{*Abtu)+rYE!>{elepZF z(EAjb)wqBY*-+*vr8^3T`aztL_am2j(x1{3&6L`XPoMDV92~}b*N$Ef5WM3pFh01j$Cz-Pi zG*P@|%~5!5^J>1}sN~2>mKScwj9QedjjD6CTnxaF9$;tKPpI5w&pFXZ0>Xj))3B1HWl9Bc8Os?iy_-ZfrMX*?`gT9QiFVC z11U=W;H8)f#Qcz^L?S|ba0*8y_2j&;Qyf&ioK?LS@;FMuY0EN^k1RO;phpMC6CfXn z(h?18qJ8>R{C9~17r;(u6sbhxSCEl9PKB_Hkfo!sRFLM2dIcTZmno$gpvk7rvvx1l zs(C|e7~PwuF^QM`2?P(t?u0&{(ho;T6#Zn!Fe*xg#+r#)G@hR4Sf`Iq4nK^JO$Ogs zUO{bAi?gP01H1(2l+@Ff8vP~wR|r2>@#CFU_0+!{ZG6kJU4 zXW!5t8o&3lySd(W>3dJMUDmc;=3YW@-lQKLL~73S&;InaoGHEybiK`4KfsYFEdA_* znSG2`*&JDz?s7IH3#D8%8hu*N=C4xW!0g&Y@@qFV$jhI&uNM(pYTEnrO!guiAMZ$` z;njY+`@{i8M|t~C>otA-e=4?wP!IuxmyZ)*0N~KD_A!62yf^_IV1OQg3&8U}-XE(w zI=&ZVy!-%8fI5If-oe80eI@X}E9rNoFqb5^lq9DFkF2Z&zZ93WG%pVimlRM|T7a96 zhhK&ZDEj}GApcimklcVrfxrcPrwspxen^+5WT&Y`6gJK8RK}L_Is?a6BTh`D%NUwT z@YzJ@JEFzs!sg}_$v5j_B-{wn*dZ$*7l}OZ6);N_OuCCHQWO~&N|K%hQvNy*D*9+z zOseE&;$}MZ)a{UW<2%*E<2mKscfKfia7Lf=5L`fbLzfesBMAPx(>IV9qEK?T3qhlG zLewYR=dLFM51kgrh~q59|1DvK{oY>O-jiZ(jOc*X7VbjFIEub4#0U;VU1O}xZN$;s zR^Dz*Suo~xKua&IhHYt|YhO>Xh3c*eI1ug&sfK?Fwk@tk{_AY%{E3NFoW_A<>9aTH z?{C@trv+;t__qHztukdpE!G6}KSIn=?fNHovzXd~-2Ct|5gbUr&&243DQFzSx9+Cx zx@Grvt{_Chc&?ZE;b+{Z}X`W(u7Yw%-cvK>2kMTRrs8ntf1;Si`vj>|BL zteiM(8QPImbO9xQ%FPfvv<< zgG{cUX^n&|GIj)NopYzDMuBYUq~}~BBJ`2o$zGtPpEhH_I{zreisa{($L_pjlQG6p zVDUtet1(3za@n2UI}xJE6T)7xY<(%N5?<1=SCrHFX@}20uUB8G2yqf#l({_l;i}+u z-#NH5jgn}-%1&N2yfIS3|3@pbI}I}ad@z~4>H&6GK>&@Ygn{f}@#xczb zV1_a<55-NhKm$&M=rCS<38|BM<{;4UgJPICGJ=IX;9uYoF38#V6@u7EnxS7fq<_R_ zkI{n#Typuw7%nXEL1wiB^F+WC4G57WCS3gF|8nlt5=soDUGrylXRg}u= zqQB|)ajTT0p87g2+Hc1`25l7cI=6$6s%k{r>Q@)FeeD_JTMpr}M(j0szHhO{xK?o4 z5~y}2;nWKMAmyvTU%%2Q$kaN}n_(uW$i;D88D?_kjeqJqLV9&ACyn|FS24bMD5&&Q ztMfQx&d{D9WI+rTpNCbZbkk}Ng(j)($YONvmTlM$+cQNox&F3acQnO)=VO~0%H&zR zd`TK_G9GY|g6uPAVrN=U#0GpCvl|(uzs+lNTmS>AOhTb$r8v^T>R)pK~erFIv*?9Am63`;RqPPe~4uu2*};9 z>nU0g5^wi|&;Kf}vS9U~Lhpv+sMFVfwe+4SqF2chhFD*f{79zn8-6Ux?hGlvw@>SP zcvIPTKS4>_bnw4RXd3u#!e%C3g-=ljmai3Ny8ObTpOPvChHv-;io3sOhbqkB z3e=^z>1~s{XEF%BVr}If{D|hz*&gY+Oy9ic9&vm-7TR!oWhAN}IFG&@psdQp=YOfx z+HlO9f!yP2E0RYOs#6XT`Ri77F9@St(`b`D0SyJ#DNNbFYxPWweA_VI)y_GO0Uy*2 zdx1qx<&&3uZGS~YD_sukM053K{yGM#mRQu>uU}sd-1pvLcpwTiATN-g N8HL1zE} diff --git a/year4/semester1/CT417/notes/CT417-Notes.tex b/year4/semester1/CT417/notes/CT417-Notes.tex index dd8d80b0..461430d3 100644 --- a/year4/semester1/CT417/notes/CT417-Notes.tex +++ b/year4/semester1/CT417/notes/CT417-Notes.tex @@ -1294,4 +1294,76 @@ Limitations of static code analysis include: \item \textbf{Performance overhead:} large codebases can take time to analyse thoroughly. \end{itemize} +\section{Software Security} +\textbf{Software security} is the concept of implementing mechanisms \& adopting best development practices to protect software against malicious attacks, i.e. to make it resistant to attacks and to keep it functional when attacked. +In traditional software design \& development practices, software security was almost an afterthought. +Secure software is defined as software engineered in such a way that its operation and functionality continues as normal even when subjected to malicious attacks. +\\\\ +In computer security, a \textbf{threat} is a potential negative action or event facilitated by a vulnerability that results in an unwanted impact to a computer system or application. +A threat can either be a negative \textit{intentional} event such as a cyberattack, or an \textit{accidental} even such as an earthquake. +Different definitions from different authorities for what constitutes a threat include: +\begin{itemize} + \item \textbf{ISO27005:} a potentital cause of an incident that may result in harm of systems \& organisation. + \item \textbf{NIST:} any circumstance or event with the potential to adversely impact organisation operations, organisational assets, or individuals through an information system via unauthorised access, destruction, disclosure, modification of information, and / or denial of service. + \item \textbf{ENISA:} any circumstance or event with the potential to adversely impact an asset through unauthorised access, destruction, disclosure, modification of data, and / or denial of service. +\end{itemize} + +\subsection{Threat Classification} +Microsoft classifies threats into the following categories: +\begin{itemize} + \item \textbf{Spoofing of user identity:} e.g., an attacker takes on the identity of an administrator. + \item \textbf{Tampering:} e.g., an attacker changes an account balance. + \item \textbf{Repudiation:} e.g., a user denies performing an action without either parties having any way to prove otherwise. + \item \textbf{Information disclosure:} privacy breach or data leak. + \item \textbf{Elevation of privilege:} an attacker elevates their own security level to an administrator. + \item \textbf{Denial of Service (DOS):} a cyber attack in which the perpetrator seeks to make a machine or network resource unavailable to its intended users by temporarily or indefinitely disrupting services of a host connected to the internet. +\end{itemize} + +The term \textbf{threat agent} is used to indicate an individual, thing, or a group that can manifest a threat. +These incldue: +\begin{itemize} + \item Non-target specific, e.g. a computer virus, worms, trojans, \& logic bombs. + \item Employees, e.g. disgruntled staff or contractors. + \item Organised crime \& criminals. + \item Corporation, e.g. partners or competitors. + \item Human (unintentional), e.g., accidents, carelessness. + \item Human (intentional), insider, outsider. + \item Natural, e.g., flood, fire, lighting, meteor, earthquakes. +\end{itemize} + +\subsubsection{Requirement-Level Threats} +Expertise in requirements engineering \& information system security is a rare combination: customers \& users don't know what they want with respect to security, and requirement engineers don't know what questions to ask to elicit security requirements. +This combined lack of security expertise leads to missing or unidentified security requirements, resulting in security vulnerabilities. + +\subsubsection{Hardware-Level Threats} +\begin{table}[h!] + \centering + + \begin{tabular}{|>{\arraybackslash}p{0.5\textwidth}|>{\arraybackslash}p{0.5\textwidth}|} + \hline + \textbf{Threat} & \textbf{Countermeasure} \\ \hline + Eavesdropping devices (e.g., keyloggers) & Physical Security \\ \hline + Power outage & Uninterruptible Power Supply \\ \hline + Natural Disasters & Geographically dispersed redundancy to avoid a single point of failure \\ \hline + Sabotage & Physical Security \\ \hline + \end{tabular} + \caption{Hardware-Level Threats \& Countermeasures} +\end{table} + +\subsubsection{Code-Level Threats} +Code-level threats include \textbf{unintentional} threats, which are mainly caused by a lack of secure coding knowledge. +These can be mitigated with software security education \& training, automatic static \& dynamic code analysis, and peer code review. +\\\\ +\textbf{Intentional} threats can be prevented with peer code review, job rotation, \& mandatory vacation. + +\subsubsection{Design-Level Threats} +\textbf{Design-level threats} relate to weaknesses in principal OO design \& object interaction, therefore secure design is more fundamental than secure coding, e.g., object attributes being public rather than private. +Best OO design practices are captures in design patterns for security. +Code implementation without a solid design is dangerous \& costly. + +\subsubsection{Architectural-Level Design Threats} +\textbf{Architectural design} decisions entail overarching design decisions. +Widely accepted solutions to these recurring architectural design problems are referred to as \textbf{architectural patterns}. + + \end{document}