From 03e6f3e869a40f8923970ce4bb92d8ddac0b2cbf Mon Sep 17 00:00:00 2001 From: DigitalJesus Date: Wed, 19 Jun 2019 01:14:35 +1200 Subject: [PATCH] Commit 19 - Okay wideget works now, honest to god. - Killed myself over Admin Suite again. - Admin suite overhaul almost done, need to make pretty. --- .../buildOutputCleanup.lock | Bin 17 -> 17 bytes .gradle/buildOutputCleanup/outputFiles.bin | Bin 166937 -> 167513 bytes .idea/caches/build_file_checksums.ser | Bin 535 -> 535 bytes .idea/caches/gradle_models.ser | Bin 135912 -> 135912 bytes ...upport_support_media_compat_28_0_0_aar.xml | 6 +- ..._android_support_support_v4_28_0_0_aar.xml | 4 +- app/src/main/AndroidManifest.xml | 5 +- .../example/assessment1/AdminEditClass.java | 45 -- .../com/example/assessment1/AdminEditor.java | 2 +- .../com/example/assessment1/CellEditor.java | 109 +-- .../example/assessment1/CustomAdapter.java | 137 ---- .../assessment1/CustomArrayObject.java | 61 -- .../com/example/assessment1/DBHelper.java | 25 + .../example/assessment1/EditTimetable.java | 100 +++ .../com/example/assessment1/MainActivity.java | 34 +- .../example/assessment1/oldCellEditor.java | 109 +++ .../res/layout/activity_admin_class_list.xml | 54 -- .../main/res/layout/activity_cell_editor.xml | 186 +++-- .../res/layout/activity_edit_timetable.xml | 659 ++++++++++++++++++ app/src/main/res/values/strings.xml | 6 +- 20 files changed, 1088 insertions(+), 454 deletions(-) delete mode 100644 app/src/main/java/com/example/assessment1/AdminEditClass.java delete mode 100644 app/src/main/java/com/example/assessment1/CustomAdapter.java delete mode 100644 app/src/main/java/com/example/assessment1/CustomArrayObject.java create mode 100644 app/src/main/java/com/example/assessment1/EditTimetable.java create mode 100644 app/src/main/java/com/example/assessment1/oldCellEditor.java delete mode 100644 app/src/main/res/layout/activity_admin_class_list.xml create mode 100644 app/src/main/res/layout/activity_edit_timetable.xml diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock index f4686d2413b89f6f8274885f61de36c2f931c70e..bee7c069b3d47a06137300b6b8df74728f5e7b29 100644 GIT binary patch literal 17 VcmZQRwD9A;)F&(17{I`49solT1?B(% literal 17 VcmZQRwD9A;)F&(17{I_(0{}vi1#18R diff --git a/.gradle/buildOutputCleanup/outputFiles.bin b/.gradle/buildOutputCleanup/outputFiles.bin index 7ddf1483cb28f4e2e27c4d3b36c340731824be57..aa465505b7c90f7672b77b5233d4e3a3d87bc1b2 100644 GIT binary patch delta 875 zcmX|;X-Je&6ox%_)N$1Dv)n{0IfjDp_o3U6k&SPki-G%`n_HQ_YyD>f)?1D+gn6NXhDZ#5$e399l&AlOqQd z1%p#6S)+Y~j#XSY*@!8hRZiGZn)I{MZJBMEqXq(CgDwLZrlW5rSw$i|w1s(8*K{{K zmJc$>(^@;IwkFCTTIK}b93WLF=HNK?)h)bQ9rtCzPAYOxWQ!ra{Uv%+H|uUvcYmm} z!>+ZH#tX(wmd&PZ;Sgtuowd;=KFTyk57C(@$dh2=;X+Mc^-V?})2JBW0j6m}9K273 zi-LbW)M3%^n90g!orMJ2Uk~#Vbk0!rj1Eqds&ch7?)iu?NXh+SdbSsy5Qpc%qkJ l*~g9cu*)GVtEImZ$R%syc}mY2aO=1;0m4;JSpNSM`~~mbB98z7 delta 404 zcmXBPJxE(o7>Duv-+1rMO*DiE;RY>o>f)e9!C(q0Hsa?}q>2=g8bwNU5K8J0(4o+w zI8|@uL=cn&(K>lK!n;U61OslZO=uKB>L7G;=wO6e755(xJVz_u<&1Z`)k24gSZPz` zg~!O9H<;?WwS1ID~&wToXKOehF_dv-hktX zL?z#nH^#kb=MVp2hHSl~nSWQ)nr2UTTkM1hL=Vc2u!48mk9+-`)g$`j;hi?hRLF@K mecgyXA-6o~Ml-*AO1CG4PTF+y$6lJ$sqUL2`U7`?;ielOHIxqk diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser index 0b6b1e76a351119b422484539c6b0065d370856a..7462856acab52679c346db8d9816306690ce2325 100644 GIT binary patch delta 15 WcmbQvGM#0@43@0WgpQ4Ksu=+-Sq0Mo delta 15 XcmbQvGM#0@43^N1nlT&aR5JnqEe{2^ diff --git a/.idea/caches/gradle_models.ser b/.idea/caches/gradle_models.ser index 2d2c695b13cc529679e1ea8cd2b53a65c5a035a1..3c3b65e1b446dc628538f336270e3730b7ab2923 100644 GIT binary patch literal 135912 zcmdVD37jNFl?R+%ea*lC!*C5K_i!_HWY*ar&~q|F4~)~p;h+q8_S8&WR%Oq0Bio3I z2P!Kdcz|*&un4HQ3b?3%x9b6d3$7Q3;=Qu0vYxy6{UahHkE-mBo~$gs@57%tU6B#* zy?F8BA1|(#_xw&8Y&E5IdcB%dYeutPHj;L|UTG!EhN&henyOJTlZ|G5yQ$mB)^trz z)+Um=s&6af-<9~+G&Zug8|sExX-VwAL_$i8N&8i&S4@^G#zwVim-TW(t=TPGT0FL0 z-KnM~?Q$hGR&Lp+j7j@fr&;k8cLe zB&IHZ;?NI$UHwSE)VEF=Xq7K9ry4|%T?6Dfg;M)^rOs4a+dyq__=jKo@_`pW-Y+HA zNPAT3s!fkj>K#^NrFB(dQznCRaU6n0hK|Z6Y;pH_;+QLnQA|r`S82(rNP(xJnu_ zIm)cTCnwPZ{u}6*7HyH1R;SNxf#W#-Uop>9n`JcaIP7CgT3nrW3OklzONBA8PB{ja zf@!7jyIQZMn1Q7z%hWo<3>JiCEOAVTXrZ-Yn%IS-j6726H#e&GHe1@8NmZ_=)|4wIG8|By9ycrCXc|sK za5bTVdsnA@iPSpwp>5=(`lWZQXD=9ciP#F4IO#~73`(42meM9Mvl6L~TJu14dY$2@ z8j@@>RYTQS_ok^+4O<#oyJ>XQ*lO|zHGJ}70Yq3tyKK3hB-I>Pe%tE3_j>;C=;341 zKm&?!%b%7yw}lo@ZBv`g>C`H-wZpDAQY&G_DaV|~?Mb6tcjRoPHWLvxs5{JN3O#vO zLP`;Ypfz?(l%QXdnJC9VR@V*_T~}>XoEi@%q*t#aMmE|gp9g`;_1YF`PuQ>8GRGU0 zvb|2)qdHB{hsd@?T37{kX-%~`y^gf8BOWny+UBEb!#<~Bg9?oKxIhQe2&h7O)@^(l zVGR3#A*^L(MQyd1y&TBwh2rhXdW9GYh%&>X@XWdl(dQBmvp17bz^MjRHSIq%KkbVo z?J&x2Wxd)!3vE`L=rc}MNU_Sa)X9pyvR<>w6SgGJQ3F)n>rNwK%qRkKD^&EEh&*JFTigmM*_oP&L5ex{r;*uP6)t`_iRL`m5B z1_Gf$W?t=6R5R%EECq3Paqap~(o}SId7h+veQV|m&#n33)!ID?X%NGorIst_)Hak`WDsOJ zSY5N5)9__f!zhy;rdH69#E$_MkSYMU7C~qAra9VbnKn&>DeMXRHd_r<2O(Qh0_{9& zM_)z|-YJBZ-lJA01`j2(hM>)~Ork%i3*|3HiFzF#0!LGw0Z?*XwK{1N947ADvT+ms zLj`V|v8LX1NhYMe3#A1Z+0ey_Bw>(&xQX2ukz7!Aq0?y;jKKqeK?m06^QYQD*@r6aewoVx#s>d~ zI$q4*0&MI=L8cn?TY?M@Ua%Lt;r#^*p2Dp7XG=G2gfh~8vz?>!yOMf37~VogMpAuOptY{}mZ9s$=F( zv$BN@Ut7wJ(F%IKLkayS(EsMD2;2q+EM83(21KWx-)IA_g^sbLUR!63Pg)*EA5@)2 z`PO9BY@(4SCe@}vJSm0{v>9E8x1#DMneRBwh^Yod-+<8@YMF9GCziQ*ObU);&|Mg9 zSQ&% zLTPBHD^m*4!F!wJ{RIpgG>EB?cV|F?!zkX-`KISRwU(`}HtcC|eqDb5E4KXjm*1s0 z)98ET`hU8CwO4;%NS6*w!RBcEU{46?*ZpmlfI)N=lWYr9SfXDdJjRxe&PdXoes$`V z|Nb{jCbl{*?^YW#pRHWu^YDX%B04sTdH-H*lEIQj%SHv$7vOch>5cnX9bf}t=PT4^ zWoIgCv$E0XOa}+z!ganNzF@5kpl@})BVL*_-y^+(C-Yw zONS@#Q@Y}eAZo0{$y`k z+H>nu`(0^=PS!C-nJ7$<>t6m z*@2N4$I4-La9rqG>}=iQoLD6hz+t>rBf`Nr0N>SL3f!2J=iyKY0LE)N9msd~`xj@P zo~hJ;ijk3h z&1^P*R&4AA&=sF)h+u0|d{vqkWW{G69dK28<|ljaL!0h3&)zxne1kOQ8RW4NOE1Gs zEcasJ%S}A9Aw7HNl}FC9q{1esXZ_@nx7J9BODWm2KRNUEhi0>lxLmMJOinQ>o*P5U zkpahLD8|M(jK$AVgpjW^zqs2_h?a3V4ZID*FjI@!PG&<+Op$zTJ6ku2%em$?76577 z79@hxI96MHTAZgJ7`GX9K^&4zBo3wUa_9uS9r%_}GXv^b4K1ZHteFWqX*%R7wIQv4uh zOM9s7*dg}au@&{2dG7fJj;@4kmbGt!&%J}q_B6c%Nw##t9EUOjysrqGUYAP!I0&tud%sqF0L`nG}g^ktiEP>91*@v%t> z28OsTNHjRa;pqmdH?ILAZZq-^5)26c^iYDH0CuMQ|90u%tXt-BtkMu?UyOipjQWg| z82aK^e?imjc5C>MuY&2`rSZ*gpQQsT4Y+5mY!8=$R^!Of=p1xOZ~U5Fqo z4uobEniqD(W*h;~YD(EC&a8K=YVWpVRq#>+NB@XdNKO;upd&vL?<67T26bxO*x@^n zel$I~k3)`LvMn7uho9=*X@HMQk36!SFLpw45*KiMXYj!>a5{W$4?2())NyQ`-6im3 zLrwawrFRoH!}7!G{VEi~t97_6(Zq>ITp=I=ZJMm%B7viaWpiX1ZBEcqv{SL;kLS_j zYO9*+E^-DG$B*Z_!O)i3xix^w;9`fPc5>;1NCMS+iSAiFdh+YE=I!VICAc6yP{rK< zQj9K6fjUPE=2iQRGK35qG9= zUJ)0K#+jUeeR6Y$s9`ay^!M%@&G6%sf-~>9jyCIoRsWH9LfwB%bqE_IQ&Ushj7Hg( z2CD3z3jJruO=fQgX)egaEt?;O#5^OHCJ^#vTS-y#jt1F<+EAI$393|aEi zn{WHmpGsbDJ>=gEIVv}_GDEvn{U78x&3Ki1;+j$7v$jrLj z5ngc7$aP&>-Ichq1vf=2<8CM&N!Ux~{B*u#!_3j&z4>ZfQ8;(=n&m}YMb9J)#OR)e z^z*&b=DV%v6MGBsyH;*9^&P~IVgk0>8~~h|Czn|(xSi=cGmmj`9QR$CsDyi!np8F6 zIs?;LGSm+$$!s#?UY|dljw0drD#)dlg|O()fs&ImZi;4iv>xy5qb|6^FShh6KkIBuE}f)YZG|Yu5a(V_N?43xW~N?_aZ2p zF=?>68JEC4cKx>0NAIrn{R+l}OLl!3f`9ba0Dht6$kfE;NCG_3rxwm5vS+@swBCcM3~YegmCawwwy^7 zb{9L~;=jU4)9D_-D6N-oi-6x;@{ZBa9Hev~y#PwIJYSS>F5mj@w_|#+XF$hW$W=fx z<3i{M%*i-n;ZA4ZnjujIw2w*8s&WfAEdBSOaYv2bC3LjMuP{-$ahVYAIDJh3xBVTx zz*DaAWLqlE)lv13iMUR^O+LmZgRYHNo(VWkTQVKZ?a^o6Yq ztSOrngA&B78Y&E>gdiO5tZS3ANaMuuAPR&b;Qpp#Xhh7mThcx-Zf|O@5Ly{*y!8RJ z7h0{YO1MeJuI01oop)Cau^P^qv>TIb)eQoL-*5~-lTTG-h@?Y4s@cX8-GT_>#u>=Y z*NT0mPQkU(!aVJV4B+9$vroWy=qitA9Wy` zF9kW`g0a6eq{Z48z01qMjmZlrqt~`c|3a4F(1?!jz*tCTHtOY1`r5-lt%E!#4sPWR z(;(qZQ1Ab!e1FSzKRNL*;=J)S2|(cex!An)&VX3(Pur*>EZc#vcSyg*PW4%>jH_I&V#(BLFs z0?!0Xa{&LGT7~yk3bw3$-+j)*TWMa;zaU|O=IcFp!cIFL8oY=0#kS6FN*r%M?RvH8 z&M#m-Bz6RMn&yhk!)nbLhPZ?vO~V7YA&G)!kJpZth$4U(Ol_o}P*)JQ-_d(X&n1ye zR@UJmmTSazY^gM_9*VBHLEUNAd_|oTA6tI3a~q~eC;DsZtcb!f;4ynzBQ#b-`V54k zpla)fCbwq|^C_qaNsMZL>bva5E7FB6gNH)kT7D(_s&0 zTIYV^rq|;Xs;^q8`F622rBg5MPnW%4!!l5wU?n+&@5CD zuc3;-t_jIM`O#nB6;Q?0?y7)X_@l`OnA)A`O3x%Ua;uKQt z#GzMy{hmXin6T`ixyVn`Q3O^FmAei(fvz69hcLMK0r;5Ieqn(bN-AfVX&uI3 zTA5-gQ_ziK&Pc21L7FBj#Y{0@%mHjIBa{LB7+sp*?D z15Y73fGenzm0HMZsu=QEb6Mr`yYYwDRj!RkFAh7ZlWYNaq3Ci(k<+DOS}w{~$x;*p zs3PaHYQB`trgKWs@^s>q4$(*BrpC+A$5G+>ps*TZGkXoa__QtU5RRoAj5%}Qs|YC2dnLia`<1+(>iP9w%4N~bW>ppflJ9;hpNK;;d)qH5yw7qCr&8PD5E?RHGguhkoZ)6 znKys>klzO?|Bl_QJkc^IPOISlK-EiyoS`ZuwScZJ=ioKuGKQRi`;^fNdA*d$6$`SV z6a(d8`N4`mT73QpRQv>@X7|_uqL*6bnt>^6Yh-(?sibqTg|z2naup1{b>t^-GFcW- zSvngP&n7_Spj)rnFQArx++DTI#wNuifo*_IDwoOYX+@JWMlP-9vsnXph>^rfEBTTR z$E#EywyVlC8}3Dm~zZ;9X?lqpqtJq>y%U!qZ|(Ph;P0;!7mRiIu~R zlN#dYxyx`Q{}QY<%y$!Nl+Ebaa<(HQ7T_1P$%rKmvPNnLm-(S{o!Y5A3A#{zg_xl89Og&$d+`;eRZr{s|e}*PpduA>;U}C$rLcrw=&NCPzDW=*roDm{vPuT(M3Eo(ZiyIwy0=yD4FTL=G zgMe(*iwi@xktRJ63wI<0CZE{%dK?KFVp%|idU0V?2tr>0RHRfM|JJeJ=W30Dib__N zi)0lCtAK?fX7@&cIAZ`C-PGZ|hoNF5M=`7>DOOo{FwjTJDi+Nm)|oJuvhoTX7$R0N zCl@n$ql8ISDOc1rQ!hBB;IE)mEbu2(LhSG-;utXCD2Og%faypGqQ?V&Lf$=rKOt8a z{x1F0OIPqd69xW+oTzT&g+C$BSm961Ee!rHy#K&m0Ip*~W=$jbFbj^b@SQKmL*z5D zI}Y3DR6rlgLuc=F#rq0^bVprq@cD1ztrZ2~)C^$5C}av)#x0o{&A{y3C}m0oRnKNh zShx=H``$Cxpg7+>DOMf6j;>*GsE7shLMe}x^PHs?OF+5|P!@}4MH5mfxr~`7d)Gu$ zeCa$6?@p+JP%Pj&kK)~lICc$hA_l#LHzDtyz?+b(3vZ8_OV}v__>ocIO~|PS@FwIL zE4+!hg~6NhgX6vrcsnT!-qc0|$v6kTd}m=6kbCz%=cTYv>Cf2?bss$O)bn|_ivo2z z9H&xR%NMccT+CsW&A`4UcCN6|t>^NZ5(af2j05WYmEwShEsmRSe`ysKjXJX&!a zPNEfermv=@%c@z@vEHs@2S~|krjk?TY&x%&)U2#%c@x{Bg&Z#ynw7~~xl+NDan>Z8Eg4#_pq3Ox z#`z>oQLQlCyEz8ja}RlOHE?Iok~4ZyEf&&gO~KhIY+7h}8RsHQMJKzFMYWX0L5O0e zgFu`PpHM5Y!=Q*`*Dxqz&`TH;^6m)?3c0#4_>R@TzLs1O@{q(j7n>L3Fk%`AYNhoiwh>a>EI%G7B93<)%6o_Lk08svQ>Jb;(&j=Peoq z7ELXiF$;OjfejtAUPUeB@@bjOfr~O6Fe3~W?~MZ%XR9EGM^iSk8MudOoRG`rl#F6w z(N9x~s%+r+P(jZb8B^0UC4AH?T)%O`q)2 zd0XaoP`vAV1ApV~7YP)Lg`%ziY4S!^D;Z`+g`Z{?%q%W^sA+;Zo#$RY8V4x0)r(`H zfu%rQDQbpN!ZjQno4nYWv5Y(p2p23!CtKM}T30fuw(_w;phze2L!f|T_Yf#x&{GH$ z@$L--inzKE_;h~%&+#r42?9l&dI5nVp7BDUkXsl8zWm0K!Py{?Pl3s~z~z(WSscXX z(}&*=2yDyT4uQqfKKe7>eo-J$&!<%t$I%PGKrF-Mi<(xn$mO=Qjtya)DCrdhw$+P6 zAa+EQoR&#rsthPpi48fg+AwL!gL3 zFCkFKyC)DR2oqt(+`hwTl(vr^n?Lhd&+^xUitr!IeHC@L}Y(9%yTDY8rJ4%|2YXfq+n8gL@ zOg_{Xye$r2u(N6$3+0lQ(X>KQu`&?N)NuPYlg|`2)xc5htc+_71-V#~)ix|7+Kdwp zg_?;S4n-WhhC>m9Uc#Y}cTeC@$km0zzyIXqvw25~0*69QJ%B?Y&sgD5%q|+2e^H^gy2y2eD8QK3v)PQQUK6y=;^=5V)5&R8WyQ>>D#7>0|E zZFJ&{;PN(3 zu@vyg7nGc7YQ>V4&l~BiQVQK!et#T5=v9ehAFhBDFfqnOVO;;flAw-%6a$yyvKd)b zlnhS#s0vmxQ(nMf?u1-jxI5+y&Eg#=ibp8q)C0H^ z@{ASk#N5K*?y*Zw`T*cA^ioKrj`&;%a6yA^@oU5UQpoiqZ~Hnfg|IyBFt^~D*2%oJ zqQIP7Q1ZHxQ*u@oH_8-Q&gKyHN5*oTjLC6U5A*k8xfH^x!yztyd57l;U&Aj4RvBxguD3PPyW0uEp)TBgWRLv z+RmbbN1W6uxN~7zRxy)PGieh++HfG*0=kq;LpKdG^yb?&arkm>jX2I(xr}1!xb9(C zrdrhU2>OCRIS96wFO_gF1g8eof}S?Dlv^@Rs1xcTcBm6^>>BDs40;K5Lf$=rIw4mV z>UP}sg?Dk^Ac`j^crf_pzfE~T|{6e-u~$?@-~d(-y!G}wiVJAF4SfUMMUJ&OO$f7&l@Z7ZWILyg`9c-g+iXOLZO&j7!#FPqjd)y?5TTvk&p-N40>3>Fvth2w-hp*CWNJrT#Q zVNb-Mm#`<~-4oaoa&=+v$@|ahYAsL5sRytpR};Ir?(_Z!^+AaGB%Ft;?cECP0yWEtW5O>z&z%ptCQc-WU% zJiv~caTJu(*?iH&JQ)6H-q4HLVm5Ce(tgRZ5ZVa2D2t(Haq`c~;Il5S*5ZUa zp(bL7I}yjO;ZDS$mvATK-4nPIa&_Tu-`D?j&u-vO$f*Z#C*&C`+=;n`!QJ9pKXwq{ zF8rADu5!a{nid*i+nlc7XCK(G4>{)Ck-r`O?s)F8M|dknnfzw6nw%|avX;-KvAwHi z5FEi!OZc{rEaQ_k*|62Wc#b)DRE@)+W~sQBtdQd@Dv6YUGc7t!_F1Z>8u(&_l1B(= zt3U!IbdZP>4uzVD9S%htyM{v%gI>a+kathuP{`GV!_4J>IE;6sDBhotQxD)!$TLt z1Dw?rGou)mh8Z!|-S8C-Yy_(rxv1&*yj4E*R9_si?*X(O%HW8os0h`N#pkwU>`mhf zDypGjdY&&KY$4A1Sy@D-PG|AKu`n93LZV1F@k643WA~6KV9--Y6!Gp2B#OAYkht;a zJKxY1B#Joo0un_$aw=hWj-5alZ0Fa2!TFf3i3-21LJ) z86)%nbSxfWNZmLZ!r#Le12gy(v23PI>=GkVKfe88;d_$#td8R|xePY3@iEO18gW9R zP&ctdqKISHkSJo%OGp&*?g=Ccxw??}r$=Wt^R5&H5`~<40Et4Lu|lGlTNos67`XK3 zfW(u-JVJf4*{U~HLv74HJ^swK-+vC@jSFOLhrz$>`uYvL?V`XS*5439+QbLg$cHFp zg?yyLMBGxKU>I1Ya>P%93A2Cn;BxdN`!T zGgjyma|?sMi(fZF)(694=8x!V(;$1pv&RMe=^@{_93QjxWo(B%`@+U)yxpR}o+e}M z4PWIz7-?NK4GWPE@PQB&Q(~MAv~r<=Qm>B%_Pok-&_f_p?9*T&Fpp2x=5r+zU%D)0 z$&p1lQ_QAGFhDq@nRLphk2oPusEgPkPsFin$P+Q>CFBWt_XP5UTwTa}_zO>EdDn>o zc|uM-fIK13SRqf$Ee!IOtY5hwAn$mUeNs7zsqVI9rHoT|BoZq5@}*s_n)FNDnf9x` z`=9%oL-COiCl3X?6Wou4oH#z9AI@7W3fL7@gw(^$Gc{i_OSu1*K}dr%LZ}q57ouds zPXg}tCoaRQO+Hmgs!hMqok`&UP970XO>FmOaV#;1@LTvaH-Z?XaWfC`{t!1G=b&>M zFGfGfor&cWmqI1Pj&dT7U89_cK`&8G$h#*fC*H*3LdB%!z zVs2q5_p!s?eLhew{NhJlpRAfS+bYkxzBlnt$E+k5KYTgcUAxae@cHgyoyszz2&A#L zXUYitT+(px1t&}LR*Cph#n4!%@m&1yRf_v|889@nxZP%1INy@i(xp7&D){2GbVxzk13h#mGs9J_`+5rbaBo{)D>U{A=^g}r@$@hkTe>QP`%$f*ag zC*&C`?1{OB!QQW0|4!z!*|4R&N?lhgS`(pMbhTwy)!G~p55}(DaI`HQ5L%=i2)}aQ z-R{~%6t|Cj3Iw-)6?_gUZxyiFTg)iMTnXP4Pve^#dT2<$yW*JRhSrWFVouMN=vV4U ztmje&ALrC@Mo})p6V-_eh!EA9mA3MT_!6SlIH6IfpV*;M#Ib8=6fx)}Gzxk51R8~0 zU1GR>H#zgdBzHjVs2s3c*~YC6VSLU3>q8Fa&5NbF8_Dcmw#tVgEUJ! z^u6T||MW55R#Bi&!_=~XkOvmxNFmNWLP}ZKIZz6gh0mVntxdN_ys9F(+p%tw3DJfbiPG}R>KXzynaqJq}L=1WfZ9?8X zfi@vm7uw$P+2O7}?;+&W185WSj1}6%+`^#k+b0x%3urr04PVkDn;6x)VOGKy_5O0{ zzdi0mx1zb)m-TKs;^`~90lA!_!DYfHjZDqbaghuk!&GsGE}K_16Je4=LGIe!1-bC5 z(=b)EQqIC2b}aB+5!@{)D!GCtE2@^(vB8o?1l3Fq6JG2sTRC0F$rY}%7?<{hiijQU zL>#+DI}w9kqMeX;PtZ=t)kV7}AAh>5xXeOMJwQ7l&sfn;%q0wPJ_Mw@12 zi=jcSVp-brSBiUgIU|Ryiac(yS-?Jg(k)w1FxO6N#e#y57s(|vjUOdF^*R<{T1#mL|NJsa_Rx>333u=mW5zkE5I zyc5Dbosmj;r)j9R8t&sg^V{ccvZVz)Q@e|I{=fYC4Blo@=CMV5HP_HI6QA$RYH9o^ zrd1^)=Zd9F2{ENYudQ7jlZ(ge#63J5Nk&9LOGe-pgi}z8SjEF3K?MO8a%lq)h(I&g zXpvLAT#OE$Pz|voorq)CNGD>@OQaL>?g`Qfxw=UA^1$Vbd9R6rbV5!&Ksq7MSdmW5 zEez@2x#(y60O^tfq{9ui<}Bw_a);jiFis@9U7X}>$Gp;VK$7a`B}~EazdmjaY(O z4nYPHyc8#fuwmhh6tr-R=qFT2?C2-r*fsiz81xeTguHu#enPG;`u%A9@g(m*QP5Aw zsR!sM)Yw*{C2; z>2jpjCvhKlL`kNTGCz`>IEA!Q;?Vj77me7`(%A}8G<=(jhHu|~`S;4ad843V+9=_> zKLu0El)NIvFQ5~gIURR4 zvL?Nfj0UxjVpUa&Pf0<+^ zsc_Wf-)#Hpu9LF#^B!%vDO^sua5??P(P!VmTQdq=X3b&|F-7x;po|CsnWBP_QMksd zTP9+-AZkF^Bsq?=eMwIbDeq55CDf->QiyU|R0{|{m^0;4DJ_?PlnAwz*9`JaH(8ev zYoP%Dwxc|CE|ploQK+BT!BNDqYj6}X=p{G`dG`bygM&a0oCc1 zoV8P?Y|?h_qc1nA`VJhnb_sef_p45CY}R)|3S+FSHPxo~YDsl^d`G#_Xn#Y{Sz0FT z{f}S7AAMxbPalpJXf5~NwFt51*BdEPg_NVMaeLAz*CEk% zQ@2~G%_IWO26czoOsS1VN}DWKjMRi#Gn)vOh)@ zB*xop>CJM(?m}6cd}LguO%apoyJeD?Vg^RmXG@23yO^c-aU-0GMbGrCLe(_NFvON) zh->N~| zv`=-K2-lvxe|368-Iye>6~qn{!MjcDV(K}y%Jj;L+G;UeIc%!&#jSULm?|~tHp9_C zw^MhoVgXsFooe+br2PXBw@w4ikc{?dCQp;q?tfFSaW!G4g>5g&QR$R!S>P`Xe&;C+Ky!=>n!?PNmh0T(AG5f@<- z8jA~ns&Awtl52BLe$sTlt`m>|43RyM1htM&SG9V@SM$ZtW|_71J``u zIM(ql2y`fC6hjOKeH(fP{o=Y+Z&q8&IeaiSOA`lu3eE8fq=JWb~q{+tKPN!~rHe+7ck}{oVeg74!(fPfo(e_%|mZEsE!uF<3g0(-JvP7Mb~lJ=BsOBeNoh3h5T(s{jL&}`XKPpk@!irGX(Q8DEnps0{(Y$z(^)IExdS#*h_ zLIzP$R7^N3iV7+FQFKe@nfs%os4xZ`L($y`a0wrD;M392Q!Gpu=qV)Li8WEsQ^+O+ zJs*gMo=R6cdh$oFxO05*k8V}ng0r|w}>%%V%!6f%ekn_|LIVN*!i51R|NeCVUmVN=N?5H3DLlfii@ zeDWo2ASy26_2NjWq2m%#(OLgI-oF*;d{=9P1lDM@MV=$eo?niJonleCz)m6YPNa!~ zokBL9*xCQ}XxJ%a)mft`*ePZc6+6Y0dw`unrm-c6%&pMphC)i0DaGr&mJBfK!t&k z8G!CiJYB7zD9>IOkY#5?gO5`v1@bRuZ~ zIS~<5#HzDKkq}hKCNhEwDfa?FMNH#EP!XpX5LC#bTLcv`h>V~@!jTbFMA?s^cOCWB zE;fzw1q4&l4Sc8~ry`nWF_Xo|uJeepBxiB{Gm9^B&whB`XsWx+rgJmbi%&`xK>rX8 zKE={>0iQzRonR9MK80*T;PX$>;8Vz|vqn+iQ_LnRe2OXe06v9GV}nm2r|#iX%%V&9 z6f%ekpJKvM;ZsQ251-0Qm%Tf>1De$pGou(5K6R1KS@^(W7JEmycVEs}l!1>WoRLH8c zMo~~y%qA*|iYfO1MTJabLs228?om|CqDvGNGKh+zV!}~TR7ly6qW4~R)Me38RQOd) zhNAQS$}hprZ$-mSu_#?&r;vCj(nP^dA)65Fd@LGv3R!j5C<=Cp*+j)oG36d$r;urE z*eT@HJ$8y&bcvlp22rt7OgJib3Mu=sbMdubxhOhzni~0nTpl;z4IOvh6}6Ddr)6>j zz9`FzW;h;bAWjTl0!2`ODhYnFd?zBL)SJu6gq}o6X zvgw4<{==g|sgPA?jiNxQm`zkD6;tj3lnR-~2Bkty-9xFEMVC-2WDpff#e}0msgSZC zN>6>&MQfu&sqj-KbF78Z7(SifYJw*^xH1}iilylSK83_P!6piP3fXkR=iu6C@F`@~ zS)(ZMDP|KDKE;%K0G~ppvB9U1Q}^&GX3-^l3K>L&Pch-B@F}G1hfnpe3%5mwPtC%& zLUJVpw^tM+n=Kg#Ev@29=yK6iHGB`<@kB`=yID8mt)@CrH3Oe7CfiB<(I8YTQ5O&@ zB;E-)Q6N;vrV~Q@hoeELkX2`mqClvaO;iXKQ|Jkg^{_pFGggx`0sOXPDS|CN=!q$bpX`dEd?>PAK9~MTur7{OSvdG-rc&lxTKB z;+=RC2| zd$d@^Vu3royE_QKk4205D&z;>i;(|hN2p(tdN+A|iab6YEtaj2JqzwenU0=Z}jSrI;&~j8eK($m#f)4xQ>`!v^XK32?48>#Cuv zExW4LIzuoF{4LsmEf%Yb0b5ACb9jp~;SsV48La0VPe#+=BsI z$TYSATga*V0b9(X%K=-+AnJfECLDFZ7E<=(s4{rzhoj?YE|b?XTG}%6_`p}uQWSuy zn#*aHOs>Ewc?U<+VK}PS>rJCvQ*rhq^cKgDqG705q%JU2NW2qqqF|_yO(%x-KNAf@ zg{(Sj6a_=YY@%YQm~sy=RLC?o3>9+f9z(?}y2MZ+gQyrPCL9$*g_QjmdczePzZ4xq zi$*qMXqt&5b6G8oAH_7j!!75ErA#Snn0)8*1a5@DwtQ4LpUMx(81&i!Q-a$RH|siU~&rPa$PL zc&b-C@wVvTX%-7bT~TF(V907E!_25^v0xU=teiL0bcTOFCNu^^)6}Q+irFM_6g$4a z)vrWDP_aN=AgGXdC*DLsP$8R61nn*7CWusTb4?j?Ecr$t>n%S=LKg zX9^$w1+HD?hS@YNd}(Z3*c^V~lxQF-mZ=L66%y}+oG2hFWYYrpk_y>$B5D6+ z(U4TgskW|bjDw2vR_W((SOk+b*A*b$vRu@$5w9w_Lb0G&M!_gr>0-&$OHvZ>}(XELb$IPo~J)gDGc`KbR>RQ26N;$-sGciQ-5S?M) zbYs?3tpkbcZRYe_qT1h(#|zQSNi0^UIsF&m_xot(B;@Cq)1O1l=_SJXujKK+(acH6 zo|)4hqnVSCy5F20ITW8tlB7Ocx*)=bvDFL=$S7nAN)~{W(F{Y*7}%yMsCqV2GWge8 zjtK#$5yNbiCu+gq28qu_^XkNMbm7$riFf)yQM@`Kn@+DT@o+S+PROdWMp3*vF`KAf zotSbDygDJ%*t|L+r|!KvF^ev}Iw6CoUY(e5RIg4**$G^S?h zImN&=T~*etY+lvOtWi`QukJ)Oe2<&#&{XS&SqW}(pA-!}#lm!foK;ACEV@KbA%m#sDJC2hJ%yD0==nfl z{P^hTnKg^WG{CZ$&1W+COi?jQGOn5FmZ_CgxS$Stj)b_K*!Zrs?52tcF?h}YT<&bv zWRjVr;!KhUAB={kV&S?#Qz7wA?1_S=LN+02`cO196|(BAQ4};4vx$nPV#+;0Qz6sX z&{W8&do&fZ=n_qZ45Ff`m~d1y6;k%2>3)NMct>69q$sY&tP?V4r9hDrD7J zqbL|EW)l@d#gu!1p+csyVW^N(_ZTW>(Itio8AQcUG2y5fDx~bk(9?F@aa(i@l?zH< zS917Pbrxra6j{#Za%o*Q3c8#vW!(?Agf4_uaC5Rf!a@Jt(STDdM;E{;B;E-#QGip( zrV}{(KN$@;g{(Sj6a_fNY@!0Em~sz*Q^+(n;1qJ|9yrA;x&%%kgQ&nMCL9$wg_Qlk z`RgrLEQt=BB||n%d?T=^>ls-s>87k@b22`5RZ17FQbw6$dwWEmY}xfHSqlyBA`KiJ z4LrrNbOD}1;+;?v1w4gpI>B?`xM<)hWYt-tDBvk(6BRtglzRZ4LZ-2Sr;tr+u{|BOh zr;t@=jiP|3m`zmh6jSa2cnX=u2A)Dr-Gir?MVH_yWDpfR#e}1Rr;xHAJjcHI&sTN< zo<&0|7IN5uFKR^-$I&%Ji?fO)9A#1pippcUmO{Xj9wAPetp@H#w(2ANkL7y3X^trV z1M2T0r)%Fy9`A{EqPQTGvhzgodkMeyMLSU}}<0_49$LK;{n?NOaRQ*CWqi6d|8q@n8c=IMqxChc3D9&OrXOV#aB!yqOaTW_3Ho91ML7TVP;(?G^JV&WFl zS+S3sZyjO9j#B*x{%F5o8gmZ%IWlHgx$_@=@)=f+UjLY=*C(J<9a>6S<(i>QPP9h0 zx0*^iHzK2VxooL148L^XgC~5zVOwubB)6$m9ZIxE_#doak`plw+i}MBCF`L-vU10S zm#eTQgv@Ty4XkMLkNe%piiUoKnP2_$`3roC>WENabZ$TO=D#~N4;O)a0SZP&{WPB# zYgzG4YoEK06(0?QDequV=NX~pt$JlAy-(vKdkG`^mu+`|DzUDx3lyMLslbHbI=0$s zbu=sgp?mjvGb?{wzz!;9Y{`?*9OOh3x=+v;PGW_>_3eLM#|poyX4=V?mE18^t&EU| zjOGWt@@Bk{bcHkMqd}e<8vlLrl27$D2pwqvG^AbhIb}f4260^?@U`dP@Alwx3?Fj>^!(g(BB8!(nR1Q z!YZ@1!>%_{r0=I3*5mf1QLb-n)=7_Sr8bkVByLc5n9Y>hXr#2sa>YnZn7H*sKBt(1 zO{bczl%r81cFG|2*p-k{Q=Dn77fj98d1_@6>}TQKlmbx%X2VAS<2syFQ)~97NdhnA zzrIdf+^0G{KG|s0oA$V^+LNs<(gALYX{>Oua*V*~x|&sQ!^V-}YYzeCgv50+6N^sh zx7eztQAT65SmP|m7uM^YO7Xo+!fI*z*wVr1jWx8hX|x*<%&YJDHY@7GpmVCfPtT!L z$C~&Ua?YgPm?W2B$bZmpe_-4hla^pqfq_?HY@5~Aj|;jl4jAy4E9i>uQcaMsb2 z4qbW->fy?FI*a%I6klx!WzvOFLl982uH`;FNg}V)QwBDSt~;9wpO^6Hda*IsyD0asWZyl*2Kak?|t^$M2f`T zyB2}W;?vJy#4ti1Kn7icNfaH=g-=WBMn#5MzAqND3_>{ZfOR&6a&|=14S3oC8A#pF zFWcM5zj{iqQ18GUbQAlZ(D>Q^wW)TPR&wcYKdsO?(f9RKdicNUn=*bp7f7BcU}EzH~ZkvInBiPyu@F)iQo4U zf5j8qr62rH`o@!f@I{ueXj9)?yz;-{<$cl*{*ESknO<;zCuVLKJNb=N?w393|9ccedw#4W`Dnz_%%0?8mvSVI`j>m*e?Chx9J;C`l0W#gztXp)gShVev_B?Nk8-* zn&@SE)cu{9dFyEzDt-TfuJru}J@NC)s9`agZs#=nU**xb!%g(%yptz(NPiD~2FulYXc{vo^lH|Kh#8^4ocNpY%gjn&@S! zxxW)LV=MEt*Y;oJNxyZEo1a?dW*__?PP3n`QBXAx{?SdG@N)i{C$>vJ_`mdxPkMh_S5B?ub^fJBd{!Yy7tPV2E+388Y>yxj&S$4AzZ{Rfh-{d8p?IvF4 zC2r)2?a~i#rf)pyhc93WKR>2%h*y3SFYl9n_*|OkWjfFOotU}nfRnDKmUERS{XZU^ zz3&z;`%gH{{%gI&r`^O4c!|&Q#1847r*C}HGjMIx?!NA3ul!GWdB5}wu)RzStI6-g z%+jA<^f;CN4o~`j-n9M>%gfF>J?YtZdx@;)lSK9<7CHnmAVFe>^q*;${{1RT?C;jjNG||g+p!+*9^WcAc zjA70Tp7j5v9r+LMa{r@Dg{riGT7Er+8w!^h1}@H=guEZ)ORHA35XM{m>=6 zyifX}f1rsTlNtASV&={2%@lJ6hFs|fhEMq8^Uk6bT5zOR!lHVPBftR>~ zCZfDw`qi$q%pF&d?Q{=D@hiXz1;3;`v_UJ9%Qe z^h58VZ#>-(y^ke)=&B!iP&mpE3l5vMeo#}=o*1bfgY9w~lYm8OH%gP4q#v!jh z?rAS^eOSGi6X0cH<3IVGm?c!>*m zVu$pL=o??FFxYL3mOgcrSAGv(-rp(=%Dqes#mVo)%=Ptq52w;!?@9lG6+iv!lV0|p zbD9G;c!|Go6L0bof5j6!r2kL)#wY!YEaB{vE!170E)tB8uuK&;g??d5A*VV>DfT!WnyCx`JI^g{ktBzno9q)C;c-+N4@Bqx17sq z4*blcah{v#<9-28?2!KT^o>vYi&?^jn_hL7M|2A>@0b1!G||g+k^37S&@;o#a{lN^ z|EIl=c-m);|Ho+#c!S%}%WmS|UBbf>Pi&Wdc!0j~q#tG-ym4%~^nzDD!OQ!kA7-H8 zWny?iekW#r^VQ34B61Jz?Mgqm&$lmn%2V_3cR0<#{X80vx`_vQiQnak9n$|hedCk< zKUl)Ij~?;Oc%R_q{n9^46FnwRxxW)L2fV*>43+*^Px|A2^`3pd;${B_PIK@iFLB0A zOnHfK=7}BBzm2}}N&ilkaQJJM_-0*i;pP3(UqKT+CU19tCuT0W=RMT!2T${)KmD!u zAMQiU`#84zR+3DP6~{IXa6L0;Y`{m>U^qL=9* z_jh9EgtdSC9M%1Kp7iJ6a@eacakCE}%4rT>=p`QJCT{f-kKl>z(ho1AZ#?OTk7o&M z>z`Tgl|PD?_eno|3{CVh9qay1%sf7I;5sUO&6B?VmQQBbQ5d>*#te`2jh0Jeh*=*= z+~p-QV@6`T^g};p!g^VsWeLk39@yq3{*Wf3yifX}pSaR8ynovLotXK>&{sZArGL98 z{X2em^Y32tXtK%^L9g@@nFdIrZ=`1m4U_(4CahOJ%@WT2+;qiDJdq~0Nx$5cmPwy< zeoz?uXw`-}o%&gDl~+ zeKsELmA{6U_vwE4I-2NZy57q~>uF1`3fo*5uTM60y6?H*RHEcZ35B-pkv>MX{h(?0 zCkk4WIrii1lpQ=yKz*3LTii2Hh^x3S4%J}mn{V)7V~2~is|TAiOtdxi3a%8Bjh9U( zOKG)BN`x5v$xpv_z=2d8Z^!U(^5UoD@q0Xm66CRjJdPp{nLJjI$0qX7$fHRfZy}Fs z$m3S>_!si{5_vp99zP`y5;Ajm5AryKJWeE!5%O419^1)-Oe==3B##f1$6e&{AbEU~ zJbu_F>M%+CAM*Gcd613h1^whfUMwJ6wF~yd!++N0(#B7(Kh>EJ+S1lQ3pl6JQo5>d z!%+o#(wpqXwU)~%3%gtRH0RI`vaa=6D$KJn-r;lha} z*R~TwQwKhA2NA!`MkQ?F?G@OM3VD2oJf0$tXUOB%Ta&)>{}c2l2t&`{5_0sUy!W((FGh)%A|Fjm9+&!V?p2{MU9N%U&MAC&f;?YN9 zn9uThzi(W#FRAsykKo}Q$6EL{>Sgy`)4cuszmWHA=vqk?M8-_^`^?7gS1vjaKl?t| zps$EKC7nV4ypcXXN)qTyx9_I!-8o8+zxW*2AyW1>^0=Km?jR2mz`yTK@*qQU-`(W# z3G(zmrylwRXMEoIm1l~xjm$W(p{09S&@L0;!*)>?WsU_;%Q z#Gzgsb*!+XPEvnD8Xl8yN^Au=-%HN)ZB*@Tgy|A`u8)=DX*jcptWH{Ga-z)E{Q7*! z&KW;Kft}%GJbmXnae8u7y>2ro<&?o~PuxIoPJq&;?VF;FvhYrBUuVT(Uygd{P>Yjj zBQUNuLqc@5KvcHvaQGc9^5bsAvvY1#Y@}+irDLfA$LUD7lAOwFK#x?@^o7~v8BZoh z>v4#l+|;1-$~aw?Y%pymY36lE;n`1|GyC~X$nViU)|XjrlwGQ4nw198ZHrSSH%5}& zrKVDFkw`J;2=5BDg_Conm2D~Oqg+vI6O-x$#772~#~43O?=NedX?EA4o*!kV}>j3#a=l_4c)BHZ>JT=!9!bG63DuWoV2&4Lpu`#g%0U_ z&(9X(s!rhLCbMFqHF5PIEZHly2YpQ~hRaKTP>D7+%@y=g0;lf0Vs*Ar;{&|nt7|*U z&3cX8Yp|uoUi#UlX_$sBG2tl%M>rq(J)QjI2837Iy$@kaNBJ^P*?fwj-IM5l*&LbN zDZVWo)Sk^HaB%w@U#Y{}-*F|nrCFOYKgiX;pQMxM7I>A9r1Q?l@W{@$9V}V%VIr>Y zz;zm0fc|J#(W=QtrL1Ft#pTVa<7Mv5!PMmC*r3(`3B-7rWb}u}mqZ03$PLk8AA+6@TX=BMvf;PC5C0J*M zK|%6vtwUe(dIwtBq0KAQCI*A5AQPU|t@}Q%9_uwACYqf~PiFFyO?F5;X!1_CqjP=a zaHI(4ak?G94CF&eEZaCdor^*%8ESAtn&tWsE~fEft;wp%RvJcayJ<^KFQE&!w1=)l zpTcEA9J7btWSTYJ<54?@Nc$qMEuF-u(-%&S<{+~#&20qwIV0_+;nEg9nX?VX#LSq# zunAeNY+hz(SvLbZVgr|9k{6DG7@3giFCWu_ubfKYN*0yXd5LRy@UfcIBX|2apUJkP z^(Z_BViL^gX3NFUl3D}YRmyC(tQb|;9lLpCwFkJ}-y0tA>jh2-Lra#RUsajMN7;n0^J1y;!l9a8tEl_Y;V zHC*H-tSMs+f*~Gx@A6=t6G=L+4Ar>lOm?zRh?~x1<(9pX+_h}knE$Zxio^LFSpv#n z?H``o<;n)ADsC==>zZc0%H||%oQu}np$p64(r_dpA@`zF{G)6Wm#V`S#!AnK9`fzHa>Yg@?2@2tUj8oOZsVY{kXIP<++LTDzc&2 zDet`WSaaP|*3MfWbB5Hx!X50n;joAkw!|hmD1;?Vo3430Mwc%eC7L+(f+#KiDIM#WFtgh4yXPg|Hs10!&Yf*m_c7U$Tz}P0s>+A)78+v09M7 zsdU_Y`9zVtaCmvI*!0vrC!UZDn>+=M>}H98jD_7S?6q=c z{w3YYm3F&~$B#`sCedl=)MK;)w}FjrZkp497+?ld1C?eDoSVTFj}0?BReX8~%f92R zhdM-=BNg^8K$;B+G$I!*h@BR?h>Xw^>#(5D`o8y?Z47!-cP2W0??}}~fc1EPh9HS4 z8ed`odbAh2i0wi?4mTWY&$Bgz|$B-LQsi7B>I=0x{^*S!uK#KE!%O+)FiWked5 ze7dHuYqb#WiIQhq!h2jJNeCBm&~`LO5}{2hNqBcVOoK$T+n_eGkDUGb#g#|?mXP|O zbyX*h+&N7wmQ(xSW+1s{AWgZ!na+s5{l^Yi&`m(LqwJ6Q1!<4+q+RKSEL%2?fe?FG z^%@4FlQ)fi@PtP`^)Lh9n~`w@OSjNx80f z?bg?z&Ite#A&45=>M6Z4X_%|ZO|mJ^n|nX(_nS55H?_S&q(Ho)9!0PWVmfi`ZYzTL zO2n3&RMMo__=o+4(nr9-5aI{2)KCUgEr)oD9&I+&>DDs(4_SZs!EL8L^qqGOJplz@ zDD{z}k_cATm~2Y>Tu61CEZ39d48$pS{_8~t|8IH_aT2Ae1{9S*);&H*b%IUe6@@Mlg}WW;+f zUPS!kWyFgYxBp%lYqykjW}}wU>sG5#u~JT>QEjIx7SU6)E#0b;RI}CCMocHwUZ|U? z`fSS7&8-#uy9)mjYXg6~zG0DSTjBo=4=ckn%D%OQ)8{HxYlGf$DrTjr*PXVbteDxR z@6gk8PNkZjskEJwXO#VF3%vO0^xwHEIa{w0N7*ZobG_a?dAT?-Wlc%12xO%F3eKx(xX`w}^hG^dLZn1Z?l;`c5z%|;C zDNhKnW1>(s;J=Y!WnxCz%Wc`Ul`7ewJ6j!PITxnVNYga5DTL)T=zA*EQdZ1OtIo|< z>P*(5K=OH{)vh$^ZthTZ-Lw_8g^i7dvlfj*T7vTO8D)>!!e+g_o%S0})z!qFXsBhZ z?JJEGm27nC<~7Ur{KeDgDl^JxQ^+>obd(pQ&uv41^j5vqT1c-Z?d?vZnO+5Tq*wB> zvB{aUDh;>8x6_+-1Ip32lU5pCB5lyV?v9zA!%BMIQAVeEUnx-4&o&yf7)|)I)~Ms3 zYLyPEb+y`@LkZE2eAFh=s_0d8U~6roRpTm0r&ES5P$o&0)Ce0w`(6-e`g06AIMMWT z7##dXiuQ?=`{Hfie$fY3w2!Y2V?k$2takfyQt%p44c~3gBS$D)ow!YVrn8vCQj`BC?;bX!i44 z(4SBHm_TN|S@EczNvciS{B1#%D%k@xCWR1*7IRzkbiGYPfn0zxRoDhU=lJWwnsP%uxhhQT}=NwWc5tj`8BAKil>ZINKUBYIYFWwR+NHI`3hQ&~E4 zCfT6a+fkorpq;8SASs_6BJ^8D4o7B+1y{ztU zw-q)cr=#o>%DS2ubF+?eNOxkW(81mB&qdeb6!#0g+=#)0)^wETL?!#Bma^BZ#|U}Z z4<^xu7CC*cjv3KWICb|GuQQ$7_VH6|J6YRx76N5RW&nj-R2yM2MwS>0?xex06CP`> z{CrXoQiMh$@0-AlCZ<8Ikcw4xl;?6a1=IO#N5|1hmgV@xvQTI`zv67A|C)|+++uk* zQgmpw*(~BHM=q9i(^j2kmE{th_|Ps|9ddCn306NW49BtHdryLhSAy*^U2H|4>|o!m zWsz}{pv8x|E5S^K;)dJjc-y$G%9|ua&wbOuQgjK{;BJ<1ojC@%9NipVts`FwSwpSt zmJ}805Q9Tin2E^h)qO8dkBvIFafI}ByD~f1;vF{J<=tV|aC5j)g!8z=u2HYUMj}=K zB^_m7m#6z~6-N!xk=)cy+9ksBu5XyzsR4KvK9iIaId%5Jt$@;D>@VJ#^QxT z$qHqQGCL|J3F(OUNsG`Iu7WrjGVio7+*dZYw_&NW>WVon{K~C_qwuD1U&4lljn%TK zN$!pDSyCr0p}c??D`7Fv*_C&?Ub#40vi5+v$`sQpD`u7R^y(btEX^o-JfBQ^QS>@8 z*G@Q_D?Ue{(5sNlyg!HDuSH)%=U-18-O?T1QI74dmz!sEOGiUHl^y7NO;n6erXgy9 zYDd2nb>&SJD(h8{15fCk7|o)cIIc%#>6*_Yb9u}-28ldwR}ySELUg>7mtd8@dz&dhPXIXf~{Ox4c(f4wW5}bZYnLP#17Xh)et5tVMb9*_M78sZUQ?_C1hxJMkMc5W%-i~+`BEY*-L@ptzK$UP7x7v=v zRTlZur@$*&WmD>MR$=lbYY-#>f;5OBUomXI=dWukL?T=@i5!?FXou5C4H{F}r_VIfv`29JiDg|ue5paChw z=;BCIi^_6Vy@J&Nz6RrgcVx~$cjV|6naeXdxS|7jT;$}P&`<9WfMc%zI>41rZ2l{c z75{*9U(9=o2}rPJ9zA5l+x?9>)F8`omYf1uDnmUXex3`I}@L*bm z$idg*yPM-{@C`=!4h%cJiqRl!I`_TT09=dVR6&u?BH?#ontU0fNk9JaJtjWI@SF9G zfZ*2I150ICKgKvJ#q;<)=~Ie)FWG0UkT>(IJs>TkjE!4l;+DC zpvi}1kfzX&M>|wrba7EdJ{7y=-IqRVp?k*KeH&oTkvd$si@oSLZ1)68q7!SmB(mxOr12OoWbbzS~#cz&zm5b=S;W$N`l)K(mqBC>i?bDVK=Y-D{% z^szRxH_;E!>o^!Yba~uSxFzI3OX3@p{>>^Uy00+m=nI#Z|B8Q};?u9*roGEuKBLP& zn3q@&CN19*DX{*wYq>*}=N(mA&{IVw%;;=b+CXOfRv|OWqO?@){oqR*a_ap-7Ka%+3nL8=pHTIlfs7fA+-gV$}Rm2cj3q4^OyH! z5p)0mnDJd@UL8RNyUGXG7S4eQ*n&)LF@bO3<|evPV5jtScs5{J9b^uuEkHhN&UDsR z^&O2?SggI-Te_>dX#rnzHQKr-v+83mBh_kUTN+b%9h-S+G7oUC>s6l7Rf1b}Q5gL8 zjNa zqWP)21iTj5Y)PFKF!%Cq$(&$T@l6{LqkIfdox;08IMQsUt~p&!5-dL(T*y8& z$=I#pOEH^uOnr{qkdR_EvGutsmVW7)xud9y)F3oIP{4s9M_P~&qhs|#U9VM4ca4m8 zPRbVJoR6l}73_LaM-K4@PA$|XcZKp4m|BE=cYdxM`kmtuSgZvC8Br3Q7`Q>IVdah2 zJTwB1Kz?pGP&J!dQQv_4@L_5bD@empvLX4=Jq09EqZ4bf4Y-l;vEj0XAYj6`=UvQ$ zmck&l4iGcT6b%p#HG+_a`oOrmw;Ni-uFSjbi*$Eh|`hWX6aE7f!A>nm+Kt8pEysXMI&IGE{{g|+bpkQxn1oy)LfK-C5( zpk=TH8ZE*XMQ9qj!XD_~1THQn2sw%tYUiE<{U{2LZXvYv(t3k-cqo}Goi@|Za)q&F zerc|ETJy4&k_}efW#FP)pteBT{mo5Pb=xo?N|d)5_Cl z)~x2F2~7uM8iev8?U!R=%}^Ezr;247LYuFa4gq`HMpA6qKT zl~s&7mlFDKsQ)ik5lq{BVEZ*$5)yqzfmszYtT)ZsK1Lo`TR?fbbK62&_*;;4Y@(si zjGhHq)lEX3KwYGOxeC$OWA=nv=3UWg*Zcz9TKi9c0~^fkH<> zP~OVl`0niobq-kt&7P-dA@L@Jhigw~!r=>)(d}e`jjjVOP{#4)!)FHN0C*8n*(f+D z{$Ie5F^l?SQ8gV42@Yj=!<=w^>!p3vnp)F=0-G-`?04mspZw}O%;m5-boX`t@?PFv zBSR5GI`mDmNaKe`Ld3Wp>F5cV#Kd|U)i13Wu)S+A(n=k{HGaw)zxNOLvR>o@%tdq! zV83OF}8ox?tVwDB-g8nZp>4K!TJpM?q`LEb~h17gnr(gjRUd+Q)Z!^d}*Y>z09VWjkJr@;!eL ze7Dsr|KDRekanfWwP;l@7?6JHa-`1~-F9{mj8^gm8ZnGh^EKX!v9ayqm)FI64X5)4 zAy+F<_lUtXkWSqqi!*)cKq@LQ&Ts38`VOR%wYkfr$9PEn&_h36?kIa)g!NFzoy_P& zlfU$uM=$Kv{4Y#ED|Fsu_MjX_HzmtXj-MM6WhevAXO>&CZ6}4w%}J}W3nO2aD2LwQ zxWwzRy@tg(iAo}Y!(@An3!_p zBwjfQbS2j{WU#d{F^%pTWF^->y5Q=$kNkA`UbN|kj(YUA%YM?qy?m;p* zO=7hrpv7IZ1C#DXUC^4p>B5UH>(!)5m}f1H&T`aCqW^fz37y{*+^W5|(a= zp&a*<=!ij;*U_z8&VMSrAU;YXB+z1P zi9Fr>VJ8qzkA!ttZ<){IIQA)S5Jr4VDw8$J?N%7jt!Fe`T4C@vx0b= zHU3YP{WI<*^S5Ix7v$m5U|En%_e|Kgp4)omL)ZWP2}Ii5qKq+zSOm)qXLV0z?DMl5 zZvN{PuPY(zI+3-dte_Jt_rO1Uu4a(dYj3~ykUie<=$k~?P59c6WK$VtspbE1o^n;M zxhjb%pAL{`#x&!co*C1O@p>jqvt448SUWuSn{j=_(56aLT7=VOe!42^ur6g0q=yCgCr+@zed1Pcuh;=Z33sMB&`cYo|&K zW{b4beFf6*>Y1{@X~BTlTd3W|!roCkiVN88FaY2)PY;t;aXK>KGY>!hO*rp@v*P~Q zWLni>&lp(9(W!n+OXX5oFQ)imY!-<=S3v_zUGnJzKY7Z(zW-r1si1oFz@cX?1ng)3 z0HPbn+qJj0{r8yL{m$jAQVZ9e_N_mBXdLY{B&vv(<1DXtRBb@u}cUUN~`?5LZM* zr|0x)FPy`Xe!Jox(m~Ra+D3gRJ7vSV77qlk;BR(trPo=LUJC0Fc=gWv_CDhU`5SRa zdL7P1Fg7#FSZy;-So`co9A$`|T^qh1oe2~FP?lQgnRfkaK0R$ z2YZBcyoH`2qhDNzrGRfTfmjId&W@eaL*jw{i;tewl{QXT2G1emj2b&j=xR?KVWM)= zBSJ98*=q{8o$uHI9)zQFqX;=lsn-bYJj~d^3?q}$qLEW9eyE#v(Stkt3pRE_dp%6I z01D`UA||moZif#I(|Rm_`*Xkk3pOgJL<@Da9Br5B9`M%V_`j%jpnY(u!rmS2Gl>q3 z!-vFTcNDBNDu8Wq92j3T(7um<_`t%+MH*;NXrI0ghTRjl4xmzW9_z6JArA2Km4USt zQngrh@l_2K^5{Vwln~Xz`|8^0F4DMxG2D)T^P6r*qhfZPQVxJ|XH)xy(8^%ruMeQT z&}tom;3SzBPY0iO{#iA|N;qfEY0k0ff%eSk6OJKh^1kiarz4+HQOypP7#36z@0@>b zS9@`w)X6wjTHM9{LnrX)&a+pj^RQJOzjv^B4t|@^?_t0qJ-7|=_y_n zw_~`%x`n_Q3t(P{ z#}-~xk0%SAcFHa($Q2iigQX!Y*2dUbUJh z7lB#_`bHeg%I(CW;YCpI|E&IC%e6l};ZSP4i8Tmj>bdVfyZXv&ulw|!xegnC_QLXCO;K22lCv}(kvAWBj@O>5%%{RTKv zE6)q`8c3&Y=tY80oAj0t@wK$;V=>rH0U*b{Go8i^Mik}9SDk!V0(j751e`$lB>~%j zrp|n@h0x$M%8$r|p5_AnIrXX-tqg2=`@ZR%FJ8p7?b{dhewkgh9(-XJTni1>L+4^! z_b{a~DgdQ5Xj7 z_8hvtKFwl9WKKgU3T9S6f+pEj;P2$zTTL{CkZVst5Wyqt%#edYPyK z5sb?J)J1~(6~v10u66Feec&bVLJd?4HQzU)=J-@ZMG9S2 z()7kI4Cfjj6H{v1rg7J&)Kr#^Wv?H(+C`eD-8AQuHnWCl;YNm>rJ1H$(h6BElT&lL zW@{vuEvaUqP|%CHe6TDWmJr1wLxY5PXMu*F9$)q&1C={g=Pn8WR>kQ?IBcgkt+C;bJ>5O9w9^(L*D&&O0U-&d?zbn=+ml> zt~&m)6ES)s3Q&L;nV^qJ`dG5DxSpCBe&@J#ca?(5bPb;f#$p%|tEky|O)Kh|j0#;@ zYEIM2R^B!;B~vxaR@u}G8LO0zpbjoOsnOhW@YmkGh>-qo7kjW zF4-k5SITCrLdjN(C8Fm`#N=hBXqk>7@!^MF{v}lIczP?=R=tK>G}_Lz_+yIND)_je zo0`B2O`yfd5wzMPqi_7$?T0`yQQ1LrS&*iy2yD=3A3FGWwtDCx>U(!r4?)7XOpZ$( z6c(7FrSlfanCJ||&X&sAqG^@#Rz}ANG7MEKWlM!p9$;%*krXg^v<_9}zkKVTQ7v|X zm|*Iws>-+KqSW+_%SOMC=m4V3l$(|Hkdv5V=ws^g>J=ZxAO29eCKI zs##6VluH@4q}pX$(=4EhTFB{zaweC_YbD#)iCa2CAI%Rm{|S8@5o`@#9}HF_`pll= zPdM$d$cM(E(7Z@gkPbnxst!R4KHYCD2KOw)%tt)l;UCX*O2H+l5hykq6aXDW|{6!6O3?Fs?PX~r(i2&YZVk;S5(x2er^_QkkkhRijmx8Z|;1y*gL<^jV()O^ds zFG0xJrG7S0SQez<*B_;CSw}t+s{fmIxBfxW>?4Z{2Q7enx=^(3TpmUP$*3e>LjSkR zhL+P*Jx>gSWb&q#G0TNQpd>Zr@V~I7^@8b}UxJFTO@(MjbgzpXY-|^YH6iVIrRK+#lKzp#dA^d8gE0YI*DKs-+j3G?xT@18mayY{ATEhMKkV z8NHCpS-?ZgBz8tClua03hk9Oq*@w5FVk;>}VKKV)20kmPw-DS1 z99W&=&nYZWH|Crv_L0|Owz)Uk4nM+Y+tpv#`7~2jbRqCNba8${owOfoZ_oTQA5!OM z;;6HCRu82R`QRf89t5s%Lii}>y!Anq+6M1>0n8Z5XR+@#x=SQe9U0iav`)lh#H48UG)g-J zjocZIWY+OT>;>V+azS9(pjfhuQZZjDWlBbg*jCXnY#8_DGBGeLV4KjzKPM1>34D_H zxZ=KWqV{R=2UA#@)hwMWsCi71`BEM;h;Ei`LSSm^DpAY%d=cMQSqp|{nS={ZvBD{+ z$XlzRy0I3+ow&N$hQTP-M?=_5Ifl=-B-0xIFI5TsYxtY&A-Y;P=2VDiDeue%yn9M1wO%!-Sm0ws>X z_Qzr&s66n^V}2mi8V41%oT`@SDh^fwizR&BTSaP&0c=cS!g`NF#aM=7R87*nvan!K zleAqbkrLLK@GWH*G#D^ctWsVrWeZjrA64ai$ux*rbW6crL8(OGPpX8(;ZMdf)Pdt5 zx{LunM5)J{1T4q`U_Le^Ra<{9XF-KVK>87YF{NoS1Htg+D3JMBz`)EeifF z_|ySA0bEB%d^JturW3fZh@CIjLKI(Ow;sCJDS$qnhkd=X74IrVx+O1q*7+|NtrZ91 z^ekY*DrSpV#x0YqVd3lCDrd_@-OOdnSh$X```*0Rq`0elQoK519o@j8N(54A`79~Wy=$r|v2>no0RuJ z;7!WagST&!eYl?r?8rFqCgn5$c$4x>6yD_AqTo&Y;jupeyqy>YZ+f$dWcYzk?I`vD zxi{T@UK$IP!JM5?_pTF8IbRIBI8bN8a4KhvLJ4cmr94*IEbMDy=L#F$X1-u(QBe1; zB%m%>DFJxc63Lee#Kcl~Ca0GQ#f%2*E9J9#rhw0F-Nfzy7EcX&dy=QSBw`8eK1oos{J=puw16!zrYqF`^&Q|@~Juovaj z#Fn)VaYzC&Ef!_jnCGCo-qqKJ5#VT z@JKLI49fRUFPqtm5wHE3r*gCuI}s?Iw1Bw46b-ysqXl1--22 zRLv+5Y>O82qF938uTnK6j&w4PeIuQW!61=N%6lM4C*|rP-8Ff0M2wm^NGIhq0Hl-h zOcd$l+@g@~g^xZ}1kzD=ug+b@Y2n>uw{&*EtcQ_z*Y9q?(%g#9+?|Hr4?p(RYefsj z!9Byy=IngANL2WmZ6jb;{5Y42!ktMyHgCj&K+eIKrgHNiJ#9>gzv2PfZF&HEaN_h_i2Blm*7<}ED z-@Hr=qBt-p&tkMGx zpZY)p3wsCkD%A;#Z@Aegl_O7+_WuEPgBr zSnO3n0gptra#@&%8F*82vFK-LC0(`PK2$XGR+boMwv0=?qV=03OiHzsI84eo z_6?IV27`o2Der;6q?D@%lQ)f?^ne&tabQx)X#g-O<(Vi<%DF|snniC(6J@~ zlei>t!K{)NjaATlMevU={PL4HbKa4;6BIx6-O+!D_KO9IrDDm{fHVawXOu0H)nTWR zBFW*vhn}IB)9v^2{v<%Lqh10FEi46^TFJ1qGLGSx*yP2|jBOR*AY8N|ooeT@8B@!q zJIW^tfij&W4}lVn{X?LH!9XEU#(OXjDC6ou;KPOeJ|~7yEC`fw8UzH&cqR*hQf^TY z_|J={$9h4a_yneYfm3sp9tL9T;ln-!2<*t*34x_k-~V&besLhsEM#;Y?&w8eAeP|@ zCBrD$^l)3o#D*|DN(Kdi9rY3rh#e6vZ)7w0R0b64rEEE)!8_hmZ9T7MvqcMwnmW#= zd0)$}5|e~LsZJ7yKpDrrAyCF(kPs;4JrD?#a`hnaRk!`*yJ85%fj}vz0YIRXXQB`& z=N1Kl!~Z!K*^=@P9ez`I9eplzqDMcLL!(`I~+#S}_g~8m5Vz z*g_7cv~V~JXOs*T#|G3)DTf2n*+Qf(cykiAV0YC77OG_v}eTga9S z-GZxjPQ|f?qFO4edIuI#Z6*naQq3d|hcb?R!=a49AmLETdmwNqH}DdjW(h?Me76e8u^q9F2RAN!{Kdsu@vzr6tz4dMyYHR3RWhkl_PhS-;o3m`c)Fxha(_G zd>G@PFphs>KW63PZF&a2jrS@D0?rF zLm|960^)KAvxS2wxdLD|lOxi8OOfi zO~zo5@FwLw5O|Yv_2BIqax#kuOwVh_fj23q0l=G-XQJ>X=N1KTzx}v&CE)G2s1IJc z``grKdm`M+zIW2+9c77^trO(F{mpGF`vEx(XD*0sm$G?1n;{6&28U!D=u#$@Nh}h1 z^6l+O*m7Qt1kTy{tVT>6_pofDmy7~}z93Kzg6$Q`Wt_Zo5lr&PxX@wG^hUo=F3o{UqR?D++ zv~EOVp~@toP^y>2p-{%LZzz;87$g)*c@G2%rCdEI{K0uMMKO%xK%tb=0H9FHGf^m% zbBlt)i)(Xq*EjMgFm;J0i=*JP{^NUyYr8C%vl9Rh`qWwHh?a{3fQ4cqubP%+*obFr zB7ki!SIXd6oTefeWhwdtH<6>j!Ac42%UPs=k6IORw-6N3hP9W=82Hr9<3L=_&~4Mg z!I3N$7lVb9ggvP?5{Eq*$G%}t#$b@JC*?g5*pqVgVDF(%y`ZnPJSnFEz@C(6qOd3D z76p5SztrgNZlnd+u2$&ncul=d7PSDcJbLmHSb$yGI|1;~H+_s@KS+!u1n+4uj+o*FHMzOClCvSIqLqa~lyU4E3S|ri358PL1A#&*R}Tum^57xY3p*l?1t{e- z04S95OcV;`+@hdx_MLbC6;K$ti)+r|D!>|D%IfhITzvbb7Ity{e4XHTRrzmyeg2lQ zO-kV4jN=v9D=nKuHF9|shF>{Tvdh`XKro5y;`&t*sE5c0HljV}vPE09ai4~XoekU@ zVI$OF8Lljro`dI~oyD~-p4O6tJEpY+cm!`}Cdb_o8mjUHLoV@7Ble zzgx6o9NRCKGt^wkP>n)9gY8{Ci{J>BUdG)%s){RXa#5>)$+$UpRZYO4Ve2@TtWkFs zokmK4Pm2l9K3lhS3pYk+1%!aMi!?w&7l|a{P^y{4;ZVl0Z#a}O7$h7@c@G2*rCdEY z%wF-QL&ZRfWBo}v4FC?MJQIaOIkzY{eCdfxZvh-e-uk7t7wWi4l3qVisoPaVOX%g{ z^5nUXACFtVA_{Z@;-mL}zOOUDIa4E9&9V)A5o6sAw{T!1SkI~@!^HJgg-EZyBx2tK zXuFgl5K+?+sv(E#wp8p*;|3MoGVpm`C?jkk{QT@3qEcsaxNt0rMxu}?(@pY_DB;*Y zBuW?z6cS~;2Lp*Rt{xe7`W09QI|_agp4Vw zMp=)t46jdOUpQPXfq|Bqhmo4g5UZr&o4ACFH{q2?U?U>jJ#N&)EtEw>iOGA%JGfSo zgg>c95{Ew-$G+iD#$b@}C*?g5_>*$=;O{#h`}56W0L8HgrJM!;e^Q=_!k?U56#PB$ zrBANuWfATmtu~Hy5UYusgRwh;E75yk;9jpf>`_>R5d}Jd@ZySu4^3IuVO7qHY2WVejF_z$~sJR!N3nml%=yarcLf`y>lF z6YewlEH<%mnPvoyBq33%o5Uee#<6cmlrb12BuaS?1QMlOJxKiPw=df)hEg0zlyVvX zBuaTE3W;)VQINQP^wM7f5>JY<2+g@xyV24uz1jQo_>e|@a-9SDcpOKum?l65&&r7xUZcr;^^T=SPZjMJ2lfmVYj3!f17W01ome&^AK-!z9iPPT4Yc!-fl{wa1or&O3(!L#RP57W zA+UfeYYX`@!A+ON9CcY#v!z^y1_Ojan$4sG`bZM;q`F8P@?;$QhCCUAK|-FC_dp;| z%GHCsFW&Y2oESQBAWzC^0FWo;nJDDRxkW+VK4-1k7m#or*)$w*3W#t@u-%)3TVfvJw{SH#f*53Q zG7s_o5H}xw(0M}?V^?x#6S?A2s)WQ*PR6lsl#?+SB+5y74+Q0;Ts@RCK6&s*#F&YL za#BtMKshPTL{U!8Eehp6c<7tX2g*es{AieSHBxu%O3(GZ*?&2D6+QS7$k}Pyeg4kR z_ZRC_RS`uXgS9=PBJgwBfa421OA2%PED^b67gW>n)OFI z%Kni>I)U)sJ3j2KO~f(#=v5#%^{e4Jq=H?1z zfrxoCS7x`=(OA#rEH39X;iIUQV2PU41Vo5x!_L?RM0|-*Ym(3?)lcHkDC5{SG|CtZ z5*nqv2Lg>!t{yc0>OxC+s3u$1v}Eq<&8-| zAFGXkItvjEGVrl6;NVQ)*@EM3MVx&r31GJr>M=$BoO^jN@ zBGu?cy{9hy`U7rsE0&9a+zNkL?*q?$_>KL5TwXI^GT}-iV%R1QlHoE;9X@oqf^HCm zNsa`$YjzjpqN~orRIy6A3wzkHz`Y_kTT;^UMMKqeBV%HNC4&g6**rdYvA1mJO%t9g zLT3ps?MW4pINHfL_KkKj27^R9Der-xos_GGb`L%9a9?qmrJM$Uc2b^+qMe*u6xwB1 zzPRVo9?Uq>YBq3~1NWRqhbyi8?fKVWX)l%aPPR?)NhOa_Z)xXi6YcSmu> zZnlU>QaI6OSh-SUP^(0i_JWlX)?MDpW2>ToQ*1V{4_CV7iWcQTf=Q{Tab0N;so|Mx7U{A_3QP`7n zi-NsJe)8ojVB{SiZRt!`D?5m#J9@N@_sH)a`+%cNicFm*-ueIjo6|&_#rcjc;nrNs zFbJ;i%^4Z|C}ngltL97PY#A}7B9ELe^YxFjQ@psgZs3&JUAC9LAXNl-(8 zg?z>W1R~H3Hd@rQD3_ptCsjk@NGIdiH`2)%3=-+2ya$4GQm!7-{d4q+6=KxHK{_d? z0U(`}XQD_a=N5%@uV41_y?}Hn3DV&NTdRkkO8$@!e-R$Z-VmobJ29`k>YpzWtrrLL zj1pq>m2vDr&#Cy9w1Ikv8l}P=IGeN8Og`#_+IthmJf;E{_%s|&BPv`~@;Hiyja=MR ziRC8_nSvEg5dEYINgVxT9Q#H;8G}KhpOp7N&`-+ML%$zy zdLSjnPaO1`zg^*ac~ZY8S=VLw320O1Q)O6;Ua=VusH;VD&Q`R$QUiVy+_eiS>ajdf}4&- zLtJZuz$--pSLlpYLYyjt;4m<@PBfhV&@u%bUV5Tfg0Lp7f8wwv$rub0)}*`# z0&7yP9;_|fuvQhrB@V1fISl~Tq&yRaH95B^SbOTmgWmvHTOG0ensP|nNs)FFjnHmP zi$A6+RuzFtr;ys1!+G3kEtN^B!X`qm4T+oOYChdKF@5xZOj;+O{jcTM^A0 z2Mse;8TbAaiIFYi>dA~&$QoJPNn~R8)WEV@WWc`9@2=G+)ls@vb<<2o=@MdT8HDHv znV2_mW+O-7uUyo16=yhf4X4*sdbvoJ^rSPz=p^FMEY(=z_$lMqH-5?(3=%)3ya$4x zQm!6;{_v>BT4I33!A~it0pO>UXQKEi=N5&Zhitr!hHaUS!UnTZZ{u!7Ea2m{_;bn) z@s~|yQ<^|cacA3CcAl7H*L!s2W^j3t2bV9qc;%z76RjBsE_0+*LQK&DA}Aw5K(?eI zWE76^nl?cU7eoz+`bbW~w=d=EA?^R^s)X5;S{hMKOL`IE2lGTNmosV^NQqEe1;e6u zx~Zm$SPMniw_W9#aj7K&j#B+34vsR8eS@Qn!63m=%6lN-DCO#bP zP6Gf(DbGZ~QO+$4j)1D6W7)$|4h1$gai(K6G3I97mfj50auYKjsosbGx7|{TK?to_ z1Xxk4HR`EZggK~^6mu6zt+PO;N$M7O^yb#K!v7l@R>syTOKS^f>g}zo;8ruE z>|a}0C0M&Y)&CWOT zw6@EYWHL%`~k-+SS%3XU?iL zAkj8rI_>mk8Ubg$zMZtvdb61}<|+*c4bzgq;Sxl z{*~0CowwCCTa~8Mhq5*X$aqSdXWi`ebLf1^LFi;dj&hjj7d=Lw=!BOgqG#r-P$O0a z9kK0p#I=noDtwl{L*M9rF}8cDyrrDFD~c!29}}>cVhvDt=k2I z1A1t3M%k;jK!xi}-mkW>zG2N#*a~3>ErNF&`N7n4>eYo+RlVJ2xH2?3-@NCd55I>g zb$_oJjs&`$vU?Q^$-3ZHYh+m2F9dPxl=0fa=7lD(ZW-!_@xzr(+kfedvNzINPQ}(u zXQgFfwqtVP#d80}S^zW6zMQ9`B2GI*WQ7N!XX!1G8#Dl}Yv$qAQ`f62>-C1C(_7aC zgUQ;0PXwfwP#p(L?}3DR#m@tR$TNffgM6;|$TLF^aUg}#rHTi`4Qxj8`kb4eHeF!ogd_k%WDg}lt(z8VMxz?2`3h)q6Roew`^*9* zy`1C!oo|2Vv3%gYC^VqlSqw24%&iz1?8bGw(W z1ah_1jD;gE1uUZG3kFs((8N7XPhuvZxT-thxEPRa%KZmvl8)>5ynRc@0 zyrawxqB<@TieaCcuVDndY!IB9E{>#}dB;&M90&`~N_Ld<2Em}!c9eniDqx0KWr%uQJ<8k{}UyTo+hH2`hLID@htC>Q!T)@VYMKWrpgt!q}worEAGx`#Sxn{G` za`@&uB9B+w0Y6oM=;>KvXVMA0R3vo(zae*>r>G=-Kf=RLZKmMsd2koK0L1l~bnk zTEZYIWttd>N;&lpqH-2}f~b^1To9ELjtinv%0Upl@XHrn7av5Wu`0O@8hLd?L|oZ0 zijHlIhoW+!`an@B@ovnCV~R@Ibff54JsyfmS#{Sa4vNaz#6?j#laZyxGI4+7xDF;z>OZJgZ#Ya(T3^=(FbfwiFboc9N3hy>4wemxp=TCWz}7y zIIt;a6Bjn+lm`HtQl^Q)rj%3vuqkKJCu~X?#Dz^c;kd9Vr5uFK$t~}Ge|*@~3J8RY zYiP3Ym%^1V84FQy5w906rIv|9NF{gu^SIzvqf69!m$xlMmdO} zA3EYIeQX*PiU_7;TDYhpuOpgfDVxJ(*9AmbQgiVC%;84v-p=z@OW#Ra?#Wy~J}F%Q z{ZTylluOeGd`gLTgH0Uxl(LC{&xhl|r<7H9jpD$koK0N#lv5r6d`g)n2A@(+{lll6 zMW65~We^uW<%HwHr<8IKKD9qz{-*c_XwK9~RflS`IcXbo&O#WJLRJEft^y~-AEG$JEd$Qu=7*#uv5yayGC)aQ_dzXcFHLa z06V2j6T?m^r~a{1&Z1B3lro5mopQo)u~SMph@C60x%a~O*hvg}gIob8;4Kqp-Zj0L zFJx4D0=}fGnqj#XXedsMSOP^*fEo>cGPMH{QW~u(`aw^lq;#x>4#$I1xnzAnsg!s( z@Wg>qDVuI69UYGcrBYViHHrhJayD_HR8DySP%34b7?esm^$(?T7JWjgltEl5l@pE& zrBcd4C_Uxb7oHIxN~KqsEV35LV)%65)dWj){DgS$DVL@X_>>aw2AeqWDP_|QpW~@` z@F`{0U86YgDQ6QGKIN1L0H0E(iNU9oQ~&TOXVE8oN*Tn3PdVYZ@F}Gngirm@3%16G zPs7GtA^9?b+iRMY%atvJmez3-x>_Q-f&0*1OOyt(>$w?kxAfT>30+?d2p#!tJP4Ib z)CYu0iFX4|90--N>4wmeC*nbN|`1Gp;Au$L#UiZpAaf# z5Enw_gyTY}lyVS4A3DG``hZaBHB8)}Nsqo8IdmD4e|H`=Lbt?3P^m!uAgGLZH{QfT zP#K$U1RcLHCW6XXb=N2sf=b!MMo=l`K_IA%X>tfEvOQ*lXkAr<7H9jpE>^oK0N(lv5r6eoC1phM!VS z{o|*cMW6U7We^uX<%Hwnr<8IKKi~i3uiP6SKc)A%@HNmxZoZ;+=^NN&Zya`(_Rv#0#lz8{_7H7hivWb|mACEU-OIdZ-D9(f}XA^hAmQxPW@x3oJF4)DrFECL*<0yVyKjI5JTU4<%TcC$Iz0M z%UXs(;4+spGWb!-;2v%@Un*zIIg5y$%j5OMm)*lF?x)8CPq{38fTxsrH`K%dPbr&j z@El(o4?Lx;x@!~%JmqZSf~TDF0KikqG%@g$a_S#EEbc>oA1Wttd*N;&n9pmG*{ zBB+!>Tm+R9j*FmD%0UD@Zq@I`<0EJ;XQ;TjTQv^9v(7H)HvUM8iys;Xu==YGOR z-@vuA(j+Zn4DRhM^U+ z)a%$LHpv&UyOcGIg4jkyJ`Kh@@Y6@BR7sNUG&j zwPa!=Uf1%)Qc<(5qE)gpr7|&zsppAnjvgO@q$ylr?@YJm>UB8KWmB1ydYaB|CLeht zd>%%qv&YC=;`w>VrRwtY7`ck_yE>kqhm;@p^B8$&l%L1QHI(za>Epfe{5+)WnV-kV zwekEsq|}4G>EsRn^<@0sMBOn9dd4i|>`cMVWJ;z{Bw9I-7;^+uv8<@^|Z{5)QFlCtOB>8J6! zlazX}JKcTARZjfwq-W8AtYWsP9OmZsxLOOWf9SbObm}Tcll?t%rjf zjNBB@s*}snhgByf-faWLvFfC3x~;mATjN=EQdZqHieuHu*~GQ#5Y5S@dbuNg2eo>g0suT6I#&LE!uWxy6nToO#X2ntANd5W_a}nuTM!x@y|Ff^LwU zRnlFn?gTx0kDKn$)EXA4hBvwQiHDwYVfsK%De-QsiG!X}Hr?nsen33*l(OosQ5^J? zvx$qIa>@fhPbt&H&{N8(fAo~I=o3Aq4C11voN!$9lu{0&=bgn($Hhm_94VDD0LxOY zkj)mdC5@C-95XX*Vw825pe}k&N0^=1_^!8|mW~K9crE^%ayM(TsccGfKa$69jEAOj z;rc*RDe-RXiG!w6HW6rgOFT4{vg)o;95j`)iHoLk$^$@CDbvKzRLZG;G?laH6HTQI z;-aaXa9lK%QVyc&zGHuSU3@gfT>~ltW^0y_D-pA-sy3DuiE8CYzKpMX@ev>Cv)-;& z;Icm3)axW_zkBqL@i0^_QXd#9CEkrVaWGWMrW->?{}K;FrL4MZ6bD1)Y~o_5obmuL zRLV3l43%=~A4BCV`ovHvgSZ$fCma_;rIdphdg}IDZ;p?lYEdhgS{`>*=ioD>scJ5t z&zP!JG}T-==UvaI~7 z;FPn83!HMw0{~7b)5L&N%Bg?gl(Xm)IHe5Y0;imCT;P;a4g%+Iwp_VSeBdlwDj~Qd zuwErbHHrhCayD_nQ%-pR;3;LA7Iy| z@J!wE$A{vBr%}qo*ffcq(~G!hRmaI~7+?2D4i<@%F1Herw)5LI7%Bg?cl(Xm) zH>C{X;-;K%T-=mW4&vsQKK7x* z*gLAXD^8`+;kq<>Nj&hB%hCsUN{M$vO&su)vgroT(aYk2r<7H9jpBf(oK0Ntlv5r6 zcuJWj2A)z*{e!2RMW5g)We^uU<%Hvcr<8IKJZHY~uW#%FJWG~QD(0~RUouJr?&t=h z#o47YT$!|@ri+-a!!2PvS^>8te4Ix%l#K?D^)^Mm(SxlwEWE0 zZ?B?M9c905bAa$^{>-Ja>S>rckZ0r=N@eoLzdmK{X*}m)+aT3^s#4#Ed)cN#KeD3G z3wfazeQtT37do7F|MtamdW+08S)rY+3JYWm7Zb18S-jXs$g8J$u_N@L!yg+LTw|`I zpDW`*yxjTUe&`WijvfD)Z8T<~R1;cC*_FCw%+0o^x3ybZCO@rWba`xF%!?oJ+2h~o zvTd|xQ(N_#2_-ty;txJ9sYi^D+S44Nto@j~0R60EJG*?6iOwXcF4E8_#&`T3&o*6ioS!LESz= zQ|(4|2Rly_Aggn-Pi?&wRB7*uIzRzh)hfCWOviRdt(Nlg@BY|cujJ*A4fTU+1zYko zGzax)!te=qhJAS9Z{GKrb-eJi>%>X5?bP=9T6LN}R5U-}RW#%2bSNCl9u#MXa?Stz zYv$&mCZ(f{f`+n_J?94T20WWTw7r?x{9Mbhw6{a>$N6&o(@yB z-KICjWEs>`;%P@Yz?iFJw09O}?0mQwX217#l-cyTZPIF|x9Y9dLV7i6Z+9BaG#&eC zm-QxR&Z;yvv>J3ow$q#GEs5*(?WC2~o6WQ_SE*X*S%Onf^g6{f`g9uPT#Zt((-y7A z&S51zFPPQ`!IZSm)2nk}--CBc2}Kd;g^vKnb?{Wv>(0hG3NQ4(p>ABUN_88>c6(IT)0O6`_;M6442}i>*ei3L2x$8)phP ztT(!q5_p+HuVwAyD9^%ZtfQTY)!Bj2y@tQp(Tj#K>6{WA(~Bt8?M-41IcLsk&e6j# z^grl#BsA~LDEnYmK?kp)vu)Pf+t1c(Y-YiHv#hqj3;P;vDWO=oi%4;v-m0K!JGoDU zxUW<8tSy{}Q33FvBVmUA1~<$obS|Vy7@C|>mWV`=u%foG9=?vgbQsbzP>)c)J6Qbp zCkJXnDN{&54MCXa;e`2Q+WOgB$WW7jV zrox`nWHX%Ksv}#J{V;Uc?Y4C8TU}{Wz_vOX8}PMeo|tpA^qTry%~7)5JrxkoY{qne z(@|crlX){K&uZVNU)EAWcbluREpvM*|`j4Ry_YSP7E{j z{&do%n8eWWT-da^DE9)`mdQbtIRs^ zCf(tG9N+x;|8=N#f>rYAEkAzq6YL9cgguWy%}2)Wf8cNDP!)WW{$d8x@YCbVp8Pe- zvZtSM`5E6n^`BlwW*iMaUA*?10?Wd>_z0tTK<0`6q90zIA~UInpZ=3`?b$5jvwe!s z*;q9H=4E6S=a#N633;PP&-M{Yzi^$B%sW zQ}=t>CvF!sM}F%ke#A?B!cY9DNbHn;;uGwRFa5-wJmEVZf6jaS@*fxF1JX}?k|p|? z?(lw(kXN6Y<dpIXX$*(diCG)E8i6ZiKL z*+69VoIFq@c1l0_Z1%>Ne)2G$aO{m|{EtucS)zPE`pM_8L_gCZ-tQ4|#!qU`XVOo3 zx*ttl@xccV@v=|M2%4j+pSa#jEcl7%h{R6mCpNJ+zVs94^Mw2MTd}8K{)M7^K>CTz zEYZ(&uJ?O{%&aP~Q9HWEmwxTi8@_*(mwo&vg61e&qhM+t|EZVA%?#Sd#vc)hozjp0 zoW1d-AO96kSa;?{ulG4UCdvn-AO8hQ^fUd^`#nN-)W&$vd8se`g&%$44ZfNubAslm z;nA4Pdx^H6SQLq!(odeu-uTi_KA$K2^5|xuJC;THfb^56utcB9^Ss|9>>(+oq`JksG`|UmrKJsZIzlnuSK^#bs*d_gYJEi{s zPx#4q>bLkr-yJ3W^(@iP^gi$R2+2Li{vwn97GL^X4=TLxiI9HcNG`0O^;n*8$8(?jvY&W3OGNpA?kA4&q~!p9wD)_2WR4@&>PEYZ*O zf8OsA^4b6VAjh1CeCfY$9R7+o_}O0~Xpa8KPkgDD_^_XNkx1;4-ehkA((`4W=3$3l z=J)#vU6c<>Z?Qz53Gsf9kXPzAaLoC=FZ~n8|K%6{v^x13L38wv9*xN>y~MxxiLVoh zozhRfiM{cqpXAeWbFb%Z_`YBM4WfKN`bj?3`^@?yG*xV z`XyAa=di>HnpUNcCEMP2r~B!NpA%dyG~-5}I@b+NJkL+$szzd0y)<48KP#WGn+HGV z*Z>}6qw2+t0KX)k|LN}$QkweJ<*Z(W*Ne(y|NZALpYpPg|CgXSw#`rcy_Z<`6aQNz zc1l0~C-%l~m2nQc&6VYkU*(togD4+pm2nQ`ekP9M^!Et4uJN(MnDnpkrN8X-pZ)zI zFZ;xOg67z({KRj0iLdn&?-z-k(ocMsz44`=_yJEi`^1->>6d>%ln+Qh@jaI4XL`u{ zJwiTsZ;g+LYkldjyX&j};;zM`hU0u9p^fq$kH$EkO=#l#{X{-FA+byP5iYEkbz*`i zEIEFO-*yv2ED_~{(vN!5@>zJy`#nM~xMK$!3u7PgrT@3<8`rTtHJ<%aL38ZieeSRD z5>5q<=Mg6VN@MG@7>`w*FUs`71>Ep!9qq@-tn@GSS~7`rlnczL=r@r(LFMsaCf!_EFL38Y9K8;^`iI4kXE(*KUV2}sWec=MP_`3b-L zZ$$Z^^c*z&OdK!h?-BCbuU!5Cru+Z#rT@!)7k>ZeUiQgP3Yueq$?Xm=@t=OqJ4Irr z^pl@sZ+z(|zsM8rJ90Yk#rqjiJ|O+%=UJl9wn|Ny!umz1rYOkL38{BkH*CNyu_5B_yLjFDgDI1us6Q+6aUH+l)L}cZ@Y;b zMfrgA6F0L&pUExW?-6qR8Grd4)BW>&-Jg2nq0hO*%RV_OXpW!mCysfEYyHFtk=QBy zf(Aa2xCUtAoS%~`G)nq?xv+lL19`%^pIfNoe z4(a#vq~+4@@BJPj_FX?__S^XNzVz?=>__&!$D=vv2%6)8C5SmMG4Q>;QzUlke)8q) zO`zvo&J#}EYr~N~rv*_yp!>;7S)!lm6@DgGPe*xn)aJsb#$3x}`<_dVq)NVnQs~$o z8RAqs9Zmc9C}=b0*pGA4PS~A**)YSe_k5s+9A$4f)nMyeZ17-XM~Jm^0Gl&hw6%>Y zjug|4myLv{v^yoGLX6-0v#;*YVcFj?JdD2hI(__*K7K~GHMIXo0N0~m> z(Z`GFqe34G^zjDzcsG4~kUl;`A77^r8ZvX@4|q({UCBwd26Q<6D@z|Qqz}4hGI=q5 zTtOdK)5neU@p1a#z1A0%etAs(gg$;oACJ?=Z|UO+`goE){)k7=*Tro9?7CB)FIwQD zPz$(TX=zh8x58C{d3w{mxb~Eqwz0c~e^c4CU9bweUNrK#OkOW!h-zB4rITXD%Hte2 zz2ebz;eyAK*SCj%KYzf3w^FtpeN@2~-kzZ?JR#dFL$bx~v^}@(LR)sSt-3oey@IdP z__`lMU6vd}A9U+~$#L{?Jbj#iN0(a$?Nm$XcJdOs7q;a2^l>JA&{kivg+5IBpr4UT z=;&E;8GXEtKHf$jv_CDmi9S9|AD^U;yXfPq^zj|~_#u7Jj3p z^l=b<&@Q)>O1V^{k5lk)dx)d#8^jtPW0q10BQa)FG*`GQ#ceL%Ybk&+Y|r28N(#1h zlj$2iGkUx8MV#YB+y~(ztJ30oyrGV=5*gFT5t1fphb_12Y{!08qi$DbBOJDp+1d70 z&?0p}X4`C4n$9k%Vq>6yr;-T#-%s#ho8xYu61}E1fI-gH7c~WhJJR^Q%a3{4(M%G5 zSpWYB{V4)*;9msu9cBEY8a$vbYQEtYZ@Mtj$8p~XA4iZLzMKLB+!yxqPeU@v>5c(;*xtFTAo)Hl_bjFYU!)# zn|*q}{!#g}YIu=)O7+=5S=sm?{xEztCpRIpTn0o z*(+*J4IRt=d^LMsNfX$Y?(l2Bd)vw^RZYNfrE})+o9N@s^zjz@paJ}c-%1~EqmQ@K z$F=lv9ew-)4_DW)X~uY08XB6Xu2jmTqb&8^bXhYjVb5{bm1)_|N%XT7w6E=GDJKWr ztDHuo+D^giOc%!naE6F_{<^+g)OcCnu;${F%#o{@r zKN6bF^|^$L>>jm+)2Y8O^}U)=4)zZYv`=5)bI%<2BB!+&W@ipqeh#l2bZ0Alv3y2> zr{yZ{1l2l+dGR^Q^bCB{)7yxH0}YjWJKe0#&C-AQ;Rn}|ZOy#14pj@6g%>8HN9R75 zKhxF_JKF%c9QasoY&6(nJ9Yd#sJ4I)3-{>6YSN^0Q{Akv4D2gx8d20d_$A-tV=F^yQ07|?!awmjugE3s;QYueLJz} z!HxBLGk5pdFIiE&`ya!~5VWqF_;_od)54U?`iJNSiq{R4dCw2|v_3{F0~cnk@UPRL zdpo2(!k2cH@11|tCd9O>5~oq$M4Xd0u6)<=cYpkg5PU|NAXP&B+Z|<}8Co=5h1SyN z7_>W{3_Y}zQy1^LHQGf}jO$rmzYR1f@4UEy+qnEhA!ukn_y6YS4FF}4fKKUrJK9^<)8d*9W5=-AY|Nj7* C<+6$Z diff --git a/.idea/libraries/Gradle__com_android_support_support_media_compat_28_0_0_aar.xml b/.idea/libraries/Gradle__com_android_support_support_media_compat_28_0_0_aar.xml index d79c944..df17068 100644 --- a/.idea/libraries/Gradle__com_android_support_support_media_compat_28_0_0_aar.xml +++ b/.idea/libraries/Gradle__com_android_support_support_media_compat_28_0_0_aar.xml @@ -1,11 +1,11 @@ - + - - + + diff --git a/.idea/libraries/Gradle__com_android_support_support_v4_28_0_0_aar.xml b/.idea/libraries/Gradle__com_android_support_support_v4_28_0_0_aar.xml index d7d394a..3dd2df4 100644 --- a/.idea/libraries/Gradle__com_android_support_support_v4_28_0_0_aar.xml +++ b/.idea/libraries/Gradle__com_android_support_support_v4_28_0_0_aar.xml @@ -1,8 +1,8 @@ - - + + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 3a64f9a..ab3fd69 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -9,6 +9,9 @@ android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/Theme.AppCompat.Light.NoActionBar"> + + + @@ -19,8 +22,6 @@ android:resource="@xml/next_class_widget_info" /> - - classArray = new ArrayAdapter<>(this, R.layout.listview_item, R.id.textView_admin_editor, classList); - listView.setAdapter(classArray); - - listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - String selectedClass = (classList[position]); - Intent intent = new Intent(AdminEditClass.this, CellEditor.class); - intent.putExtra("studentID", selectedStudentID); - intent.putExtra("className", selectedClass); - startActivity(intent); - dbHelper.close(); - } - }); - - dbHelper.close(); - } -} diff --git a/app/src/main/java/com/example/assessment1/AdminEditor.java b/app/src/main/java/com/example/assessment1/AdminEditor.java index c31026d..bc7602d 100644 --- a/app/src/main/java/com/example/assessment1/AdminEditor.java +++ b/app/src/main/java/com/example/assessment1/AdminEditor.java @@ -36,7 +36,7 @@ protected void onCreate(Bundle savedInstanceState) { @Override public void onItemClick(AdapterView parent, View view, int position, long id) { int selectedStudentID = (studentIDList[position]); - Intent intent = new Intent(AdminEditor.this, AdminEditClass.class); + Intent intent = new Intent(AdminEditor.this, EditTimetable.class); intent.putExtra("studentID", selectedStudentID); startActivity(intent); dbHelper.close(); diff --git a/app/src/main/java/com/example/assessment1/CellEditor.java b/app/src/main/java/com/example/assessment1/CellEditor.java index eeb9269..bc12830 100644 --- a/app/src/main/java/com/example/assessment1/CellEditor.java +++ b/app/src/main/java/com/example/assessment1/CellEditor.java @@ -2,108 +2,39 @@ import android.support.v7.app.AppCompatActivity; import android.os.Bundle; -import android.text.Editable; -import android.util.Log; -import android.view.View; -import android.widget.AdapterView; -import android.widget.Button; -import android.widget.ListView; -import android.widget.Toast; - -import java.util.ArrayList; -import java.util.Iterator; -import java.util.Map; -import java.util.Objects; +import android.widget.EditText; +import android.widget.TextView; public class CellEditor extends AppCompatActivity { - private static final String TAG = "CELLEDITOR"; -// private Map> mapList; -// private Map dataMap; - - @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_cell_editor); - DBHelper dbHelper = new DBHelper(this); - //Import Selections from previous classes. Bundle extras = getIntent().getExtras(); assert extras != null; - int selectedStudentID = extras.getInt("studentID"); - String selectedClass = extras.getString("className"); - - //Get Data for each cell from DB - final String[] idList = dbHelper.queryCellDetails("_id", selectedStudentID, selectedClass); - for (int i = 0; i < idList.length; i++) { - Log.d(TAG, idList[i]); - } - final String[] dayList = dbHelper.queryCellDetails("day", selectedStudentID, selectedClass); - final String[] timeList = dbHelper.queryCellDetails("startTime", selectedStudentID, selectedClass); - final String[] durationList = dbHelper.queryCellDetails("cellDuration", selectedStudentID, selectedClass); - final String[] roomList = dbHelper.queryCellDetails("classRoom", selectedStudentID, selectedClass); + String cellID = extras.getString("id"); - //dataMap = new Map; - - //Init. ListView and CustomObject - ListView listView = findViewById(R.id.listView_cell_editor); - final ArrayList objects = new ArrayList<>(); - - //For each List item, add to the custom object the four data point for each cell - for (int i = 0; i < dayList.length; i++) { - CustomArrayObject item1 = new CustomArrayObject(Integer.parseInt(idList[i]), dayList[i], timeList[i], durationList[i], roomList[i]); - objects.add(item1); - } + DBHelper dbHelper = new DBHelper(this); - //Display the list using the custom adapter - CustomAdapter customAdapter = new CustomAdapter(this, objects); - listView.setAdapter(customAdapter); + Cell cell = dbHelper.getSingleRecord(cellID); + TextView cellid_ = findViewById(R.id.cellID); + TextView studentID = findViewById(R.id.studentID); - listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - Log.d(TAG, "onItemClick: "+objects.get(position).getId_()); - } - }); + EditText className = findViewById(R.id.className); + EditText roomName = findViewById(R.id.roomName); + EditText day = findViewById(R.id.dayofClass); + EditText startTime = findViewById(R.id.startTime); + EditText duration = findViewById(R.id.duration); - //Be kind, rewind. - dbHelper.close(); + cellid_.setText(Integer.toString(cell.getRecordID())); + studentID.setText(Integer.toString(cell.getStudentID())); + className.setText(cell.getClassName()); + roomName.setText(cell.getClassRoom()); + day.setText(Integer.toString(cell.getDay())); + startTime.setText(Integer.toString(cell.getStartTime())); + duration.setText(Integer.toString(cell.getDuration())); } - - // I tried so hard. -// private void saveData() { -// DBHelper dbHelper = new DBHelper(this); -// int mapSize = Objects.requireNonNull(mapList.get(0)).size() + -// Objects.requireNonNull(mapList.get(1)).size() + -// Objects.requireNonNull(mapList.get(2)).size() + -// Objects.requireNonNull(mapList.get(3)).size(); -// -// for (int i = 0; i < mapSize; i++) { -// Iterator> itr = mapList.get(i).entrySet().iterator(); -// while (itr.hasNext()) { -// Map.Entry entry = itr.next(); -// switch (i) { -// case 0: -// dbHelper.updateRow(entry.getKey(), Integer.parseInt(entry.getValue()), null, -1, -1); -// break; -// case 1: -// dbHelper.updateRow(entry.getKey(), -1, null, Integer.parseInt(entry.getValue()), -1); -// break; -// case 2: -// dbHelper.updateRow(entry.getKey(), -1, null, -1, Integer.parseInt(entry.getValue())); -// break; -// case 3: -// dbHelper.updateRow(entry.getKey(), -1, entry.getValue(), -1, -1); -// break; -// } -// } -// } -// } -// -// public void tempData(int id_, Editable s, int type) { -// dataMap.put(id_, s.toString()); -// mapList.put(type, dataMap); -// } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/example/assessment1/CustomAdapter.java b/app/src/main/java/com/example/assessment1/CustomAdapter.java deleted file mode 100644 index 1d2ad3e..0000000 --- a/app/src/main/java/com/example/assessment1/CustomAdapter.java +++ /dev/null @@ -1,137 +0,0 @@ -package com.example.assessment1; - -import android.content.Context; -import android.text.Editable; -import android.text.TextWatcher; -import android.util.Log; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.BaseAdapter; -import android.widget.EditText; -import android.widget.TextView; - -import java.util.ArrayList; - -public class CustomAdapter extends BaseAdapter { - private String TAG = "ADAPTERDEBUG"; - - private LayoutInflater inflater; - private ArrayList objects; - - private class ViewHolder { - TextView cellId_; - EditText editTextDay; - EditText editTextTime; - EditText editTextDuration; - EditText editTextRoom; - - } - - CustomAdapter(Context context, ArrayList objects) { - inflater = LayoutInflater.from(context); - this.objects = objects; - } - - public int getCount() { - return objects.size(); - } - - public CustomArrayObject getItem(int position) { - return objects.get(position); - } - - public long getItemId(int position) { - return position; - } - - public View getView(final int position, View convertView, ViewGroup parent) { - final ViewHolder holder; - if(convertView == null) { - holder = new ViewHolder(); - convertView = inflater.inflate(R.layout.class_edit_listview_item, null); - holder.cellId_ = convertView.findViewById(R.id.idViewer); - holder.editTextDay = convertView.findViewById(R.id.editText_day); - holder.editTextTime = convertView.findViewById(R.id.editText_time); - holder.editTextDuration = convertView.findViewById(R.id.editText_duration); - holder.editTextRoom = convertView.findViewById(R.id.editText_roomNumber); - convertView.setTag(holder); - } else { - holder = (ViewHolder) convertView.getTag(); - } - holder.cellId_.setText(Integer.toString(objects.get(position).getId_())); - holder.editTextDay.setText(objects.get(position).getDay()); - holder.editTextTime.setText(objects.get(position).getTime()); - holder.editTextDuration.setText(objects.get(position).getDuration()); - holder.editTextRoom.setText(objects.get(position).getRoom()); - - final View finalConvertView = convertView; - - //TODO: FIX THIS SHIT, won't save anything to anywhere. - // Wasted 4 weeks. -// holder.editTextDay.addTextChangedListener(new TextWatcher(){ -// @Override -// public void beforeTextChanged(CharSequence s, int start, int count, int after) {} -// -// @Override -// public void onTextChanged(CharSequence s, int start, int before, int count) {} -// -// @Override -// public void afterTextChanged(Editable s) { -// CellEditor cellEditor = new CellEditor(); -// if(!s.toString().isEmpty()){ -// cellEditor.tempData(objects.get(position).getId_(), s ,0); -// } -// } -// }); -// -// holder.editTextTime.addTextChangedListener(new TextWatcher() { -// @Override -// public void beforeTextChanged(CharSequence s, int start, int count, int after) {} -// -// @Override -// public void onTextChanged(CharSequence s, int start, int before, int count) {} -// -// @Override -// public void afterTextChanged(Editable s) { -// CellEditor cellEditor = new CellEditor(); -// if(!s.toString().isEmpty()){ -// cellEditor.tempData(objects.get(position).getId_(), s ,1); -// } -// } -// }); -// -// holder.editTextDuration.addTextChangedListener(new TextWatcher() { -// @Override -// public void beforeTextChanged(CharSequence s, int start, int count, int after) {} -// -// @Override -// public void onTextChanged(CharSequence s, int start, int before, int count) {} -// -// @Override -// public void afterTextChanged(Editable s) { -// CellEditor cellEditor = new CellEditor(); -// if(!s.toString().isEmpty()){ -// cellEditor.tempData(objects.get(position).getId_(), s ,2); -// } -// } -// }); -// -// holder.editTextRoom.addTextChangedListener(new TextWatcher() { -// @Override -// public void beforeTextChanged(CharSequence s, int start, int count, int after) {} -// -// @Override -// public void onTextChanged(CharSequence s, int start, int before, int count) {} -// -// @Override -// public void afterTextChanged(Editable s) { -// CellEditor cellEditor = new CellEditor(); -// if(!s.toString().isEmpty()){ -// cellEditor.tempData(objects.get(position).getId_(), s ,3); -// } -// } -// }); - return convertView; - } -} \ No newline at end of file diff --git a/app/src/main/java/com/example/assessment1/CustomArrayObject.java b/app/src/main/java/com/example/assessment1/CustomArrayObject.java deleted file mode 100644 index 597a7c8..0000000 --- a/app/src/main/java/com/example/assessment1/CustomArrayObject.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.example.assessment1; - -public class CustomArrayObject { - - - private int id_; - private String day; - private String time; - private String duration; - private String room; - - public CustomArrayObject(int id_, String day, String prop2, String prop3, String prop4) { - this.id_ = id_; - this.day = day; - this.time = prop2; - this.duration = prop3; - this.room = prop4; - } - - - public void setDay(String day) { - this.day = day; - } - - public void setTime(String time) { - this.time = time; - } - - public void setDuration(String duration) { - this.duration = duration; - } - - public void setRoom(String room) { - this.room = room; - } - - public void setId_(int id_) { - this.id_ = id_; - } - - public int getId_() { - return id_; - } - - public String getDay() { - return day; - } - - public String getTime() { - return time; - } - - public String getDuration() { - return duration; - } - - public String getRoom() { - return room; - } -} - diff --git a/app/src/main/java/com/example/assessment1/DBHelper.java b/app/src/main/java/com/example/assessment1/DBHelper.java index 1bd17fd..45ec6fe 100644 --- a/app/src/main/java/com/example/assessment1/DBHelper.java +++ b/app/src/main/java/com/example/assessment1/DBHelper.java @@ -208,5 +208,30 @@ int getTableLengthForStudentID(int studentID){ } + Cell getSingleRecord(String cellID) { + String query = "Select * FROM " + TIMETABLE_TABLE_NAME + " WHERE " + CELL_ID + " = " + "'" + cellID + "'"; + SQLiteDatabase db = this.getWritableDatabase(); + Cursor cursor = db.rawQuery(query, null); + Cell cell = new Cell(); + + //Move cursor to first item + if (cursor.moveToFirst()){ + cursor.moveToFirst(); + + cell.setRecordID(cursor.getInt(0)); + cell.setStudentID(Integer.parseInt(cursor.getString(1))); + cell.setClassName(cursor.getString(2)); + cell.setClassRoom(cursor.getString(3)); + cell.setClassColour(cursor.getString(4)); + cell.setStartTime(Integer.parseInt(cursor.getString(5))); + cell.setDuration(Integer.parseInt(cursor.getString(6))); + cell.setDay(Integer.parseInt(cursor.getString(7))); + cursor.close(); + } else { + cell = null; + } + db.close(); + return cell; + } } diff --git a/app/src/main/java/com/example/assessment1/EditTimetable.java b/app/src/main/java/com/example/assessment1/EditTimetable.java new file mode 100644 index 0000000..2749a47 --- /dev/null +++ b/app/src/main/java/com/example/assessment1/EditTimetable.java @@ -0,0 +1,100 @@ +package com.example.assessment1; + +import android.app.FragmentTransaction; +import android.content.Intent; +import android.graphics.Color; +import android.support.v4.app.Fragment; +import android.support.v4.app.FragmentManager; +import android.support.v7.app.AppCompatActivity; +import android.os.Bundle; +import android.support.v7.widget.Toolbar; +import android.util.Log; +import android.view.View; +import android.widget.TextView; +import android.widget.Toast; + +import java.util.Objects; + +import static android.content.ContentValues.TAG; + +public class EditTimetable extends AppCompatActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_edit_timetable); + + } + + @Override + protected void onStart() { + super.onStart(); + setContentView(R.layout.activity_edit_timetable); + Toolbar toolbar = findViewById(R.id.app_bar); + setSupportActionBar(toolbar); + Objects.requireNonNull(getSupportActionBar()).setDisplayShowTitleEnabled(false); + + Bundle extras = getIntent().getExtras(); + assert extras != null; + int selectedStudentID = extras.getInt("studentID"); + + setToolbarText(Integer.toString(selectedStudentID)); + + buildTimetable(selectedStudentID); + } + + void setToolbarText(String methodInput) { + TextView title = findViewById(R.id.timetable_title); + title.setText(methodInput); + } + + void buildTimetable(int studentID) { + DBHelper dbHelper = new DBHelper(this); + Cell[] cell = dbHelper.queryCellData(studentID); + + if (cell == null) { + Toast.makeText(this, "No timetable for this ID", Toast.LENGTH_LONG).show(); + return; + } + + String[] weekDayIndex = {"mon_hr", "tues_hr", "wed_hr", "thurs_hr", "fri_hr"}; + + for (int i = 0; i < dbHelper.getTableLengthForStudentID(studentID); i++) { + String currentTextviewID = weekDayIndex[cell[i].getDay()] + cell[i].getStartTime(); + TextView selectedTime = (findViewById(getResources().getIdentifier(currentTextviewID, "id", getPackageName()))); + createTimetableCell(cell[i].getClassName(), cell[i].getClassRoom(), cell[i].getClassColour(), selectedTime); + //Add ID as Tag for use in editor. + selectedTime.setTag(cell[i].getRecordID()); + + //This for loop colours in the hours after a class depending on the duration of the class. + for (int j = 1; j < (cell[i].getDuration()); j++) { + String modifiedIDString = weekDayIndex[cell[i].getDay()] + (cell[i].getStartTime() + (j)); + TextView durationEdit = (findViewById(getResources().getIdentifier(modifiedIDString, "id", getPackageName()))); + durationEdit.setTag(cell[i].getRecordID()); + + try { + createTimetableCell("", "", cell[i].getClassColour(), durationEdit); + } catch (Exception e) { + Log.d(TAG, "buildTimetable: Class duration extended beyond the end of the day"); + break; + } + } + } + dbHelper.close(); + } + + public void itemTapped(View view) { + Log.d(TAG, "itemTapped: tagis:"+view.getTag()); + + Intent intent = new Intent(this, CellEditor.class); + intent.putExtra("id", view.getTag().toString()); + startActivity(intent); + + } + + private void createTimetableCell(String className, String room, String hex, TextView selectedTime) { + String outputText = className + "\n" + room; + selectedTime.setText(outputText); + selectedTime.setBackgroundColor(Color.parseColor(hex)); + } +} diff --git a/app/src/main/java/com/example/assessment1/MainActivity.java b/app/src/main/java/com/example/assessment1/MainActivity.java index 5d8b31a..138175f 100644 --- a/app/src/main/java/com/example/assessment1/MainActivity.java +++ b/app/src/main/java/com/example/assessment1/MainActivity.java @@ -10,6 +10,7 @@ import android.util.Log; import android.view.Menu; import android.view.MenuItem; +import android.view.View; import android.widget.TextView; import android.widget.Toast; @@ -71,7 +72,7 @@ public boolean onCreateOptionsMenu(Menu menu) { return true; } - private void buildTimetable(int studentID) { + void buildTimetable(int studentID) { DBHelper dbHelper = new DBHelper(this); Cell[] cell = dbHelper.queryCellData(studentID); @@ -107,12 +108,12 @@ private void makeToast(String toastString) { Toast.makeText(this, toastString, Toast.LENGTH_LONG).show(); } - private String getStudentID() { + String getStudentID() { SharedPreferences mPrefs = getSharedPreferences("label", Context.MODE_PRIVATE); return mPrefs.getString("studentID", ""); } - private void setToolbarText(String methodInput) { + void setToolbarText(String methodInput) { TextView title = findViewById(R.id.timetable_title); title.setText(methodInput); } @@ -153,8 +154,7 @@ public Cell getNextClass(int studentID, Context context){ int currentDay = getCurrentDay(currentTime.toString()); Log.d(TAG, "currentDay: " + currentDay); - String strDateFormat = "hh a"; - DateFormat dateFormat = new SimpleDateFormat(strDateFormat); + DateFormat dateFormat = new SimpleDateFormat("hh a"); String formattedDate= dateFormat.format(currentTime); int currentHour = getCurrentHour(formattedDate); @@ -165,17 +165,17 @@ public Cell getNextClass(int studentID, Context context){ Cell nextClass = cell[0]; for (int i = 0; i < cell.length; i++) { - Log.d(TAG, "getNextClass: loop#:"+i); - if (cell[i].getDay() > currentDay || cell[i].getDay() < nextClass.getDay()){ - Log.d(TAG, cell[i].getDay() + " is closer to " + currentDay + " than " + nextClass.getDay()); - if (cell[i].getStartTime() > currentHour || cell[i].getStartTime() < nextClass.getStartTime()){ - Log.d(TAG, cell[i].getStartTime() + " is closer to " + currentHour + " than " + nextClass.getStartTime()); - - nextClass = cell[i]; + for (int j = 0; j < currentDay; j++) { + for (int k = 0; k < 24; k++) { + if (cell[i].getStartTime() == k && cell[i].getDay() == j){ + nextClass = cell[i]; + break; + } } } - } + + return nextClass; } @@ -186,6 +186,14 @@ private int getCurrentHour(String formattedDate) { }else if (formattedDate.endsWith("pm")){ temp = Integer.parseInt(formattedDate.split(" ")[0]) + 12; } + + //Fixing above error where midday any midnight were swapped + if (temp == 12){ + temp = 0; + }else if(temp == 24){ + temp = 12; + } + return temp; } diff --git a/app/src/main/java/com/example/assessment1/oldCellEditor.java b/app/src/main/java/com/example/assessment1/oldCellEditor.java new file mode 100644 index 0000000..9418a3c --- /dev/null +++ b/app/src/main/java/com/example/assessment1/oldCellEditor.java @@ -0,0 +1,109 @@ +//package com.example.assessment1; +// +//import android.support.v7.app.AppCompatActivity; +//import android.os.Bundle; +//import android.text.Editable; +//import android.util.Log; +//import android.view.View; +//import android.widget.AdapterView; +//import android.widget.Button; +//import android.widget.ListView; +//import android.widget.Toast; +// +//import java.util.ArrayList; +//import java.util.Iterator; +//import java.util.Map; +//import java.util.Objects; +// +//public class CellEditor extends AppCompatActivity { +// +// private static final String TAG = "CELLEDITOR"; +//// private Map> mapList; +//// private Map dataMap; +// +// +// @Override +// protected void onCreate(Bundle savedInstanceState) { +// super.onCreate(savedInstanceState); +// setContentView(R.layout.activity_cell_editor); +// DBHelper dbHelper = new DBHelper(this); +// +// //Import Selections from previous classes. +// Bundle extras = getIntent().getExtras(); +// assert extras != null; +// int selectedStudentID = extras.getInt("studentID"); +// String selectedClass = extras.getString("className"); +// +// //Get Data for each cell from DB +// final String[] idList = dbHelper.queryCellDetails("_id", selectedStudentID, selectedClass); +// for (int i = 0; i < idList.length; i++) { +// Log.d(TAG, idList[i]); +// } +// final String[] dayList = dbHelper.queryCellDetails("day", selectedStudentID, selectedClass); +// final String[] timeList = dbHelper.queryCellDetails("startTime", selectedStudentID, selectedClass); +// final String[] durationList = dbHelper.queryCellDetails("cellDuration", selectedStudentID, selectedClass); +// final String[] roomList = dbHelper.queryCellDetails("classRoom", selectedStudentID, selectedClass); +// +// //dataMap = new Map; +// +// //Init. ListView and CustomObject +// ListView listView = findViewById(R.id.listView_cell_editor); +// final ArrayList objects = new ArrayList<>(); +// +// //For each List item, add to the custom object the four data point for each cell +// for (int i = 0; i < dayList.length; i++) { +// CustomArrayObject item1 = new CustomArrayObject(Integer.parseInt(idList[i]), dayList[i], timeList[i], durationList[i], roomList[i]); +// objects.add(item1); +// } +// +// //Display the list using the custom adapter +// CustomAdapter customAdapter = new CustomAdapter(this, objects); +// listView.setAdapter(customAdapter); +// +// +// listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { +// @Override +// public void onItemClick(AdapterView parent, View view, int position, long id) { +// Log.d(TAG, "onItemClick: "+objects.get(position).getId_()); +// } +// }); +// +// //Be kind, rewind. +// dbHelper.close(); +// } +// +// // I tried so hard. +//// private void saveData() { +//// DBHelper dbHelper = new DBHelper(this); +//// int mapSize = Objects.requireNonNull(mapList.get(0)).size() + +//// Objects.requireNonNull(mapList.get(1)).size() + +//// Objects.requireNonNull(mapList.get(2)).size() + +//// Objects.requireNonNull(mapList.get(3)).size(); +//// +//// for (int i = 0; i < mapSize; i++) { +//// Iterator> itr = mapList.get(i).entrySet().iterator(); +//// while (itr.hasNext()) { +//// Map.Entry entry = itr.next(); +//// switch (i) { +//// case 0: +//// dbHelper.updateRow(entry.getKey(), Integer.parseInt(entry.getValue()), null, -1, -1); +//// break; +//// case 1: +//// dbHelper.updateRow(entry.getKey(), -1, null, Integer.parseInt(entry.getValue()), -1); +//// break; +//// case 2: +//// dbHelper.updateRow(entry.getKey(), -1, null, -1, Integer.parseInt(entry.getValue())); +//// break; +//// case 3: +//// dbHelper.updateRow(entry.getKey(), -1, entry.getValue(), -1, -1); +//// break; +//// } +//// } +//// } +//// } +//// +//// public void tempData(int id_, Editable s, int type) { +//// dataMap.put(id_, s.toString()); +//// mapList.put(type, dataMap); +//// } +//} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_admin_class_list.xml b/app/src/main/res/layout/activity_admin_class_list.xml deleted file mode 100644 index db40d39..0000000 --- a/app/src/main/res/layout/activity_admin_class_list.xml +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/activity_cell_editor.xml b/app/src/main/res/layout/activity_cell_editor.xml index fbfa8c0..8fbb55b 100644 --- a/app/src/main/res/layout/activity_cell_editor.xml +++ b/app/src/main/res/layout/activity_cell_editor.xml @@ -1,58 +1,154 @@ - - - + + + + + + - + android:textSize="18sp" + /> - + - + - + + + + + + + + + + -