From e3404d21a45d113063d1dcc56ac69d45fbc5282b Mon Sep 17 00:00:00 2001 From: Gary Date: Thu, 26 Oct 2023 20:59:25 +0800 Subject: [PATCH] Add AddClient/AddLead and AddMeetingTime to Developer Guide --- docs/DeveloperGuide.md | 111 ++++++++++++++---- docs/diagrams/AddClientActivityDiagram.png | Bin 0 -> 21245 bytes docs/diagrams/AddClientActivityDiagram.puml | 19 +++ docs/diagrams/AddClientSequenceDiagram.png | Bin 0 -> 23668 bytes docs/diagrams/AddClientSequenceDiagram.puml | 50 ++++++++ .../AddMeetingTimeActivityDiagram.png | Bin 0 -> 27183 bytes .../AddMeetingTimeActivityDiagram.puml | 20 ++++ .../AddMeetingTimeSequenceDiagram.png | Bin 0 -> 31248 bytes .../AddMeetingTimeSequenceDiagram.puml | 64 ++++++++++ docs/images/cleanaddressbook.png | Bin 0 -> 9077 bytes 10 files changed, 241 insertions(+), 23 deletions(-) create mode 100644 docs/diagrams/AddClientActivityDiagram.png create mode 100644 docs/diagrams/AddClientActivityDiagram.puml create mode 100644 docs/diagrams/AddClientSequenceDiagram.png create mode 100644 docs/diagrams/AddClientSequenceDiagram.puml create mode 100644 docs/diagrams/AddMeetingTimeActivityDiagram.png create mode 100644 docs/diagrams/AddMeetingTimeActivityDiagram.puml create mode 100644 docs/diagrams/AddMeetingTimeSequenceDiagram.png create mode 100644 docs/diagrams/AddMeetingTimeSequenceDiagram.puml create mode 100644 docs/images/cleanaddressbook.png diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index a3bbe31aa7f..6593cd26c43 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -1,7 +1,7 @@ --- - layout: default.md - title: "Developer Guide" - pageNav: 3 +layout: default.md +title: "Developer Guide" +pageNav: 3 --- # AB-3 Developer Guide @@ -240,13 +240,13 @@ The following activity diagram summarizes what happens when a user executes a ne **Aspect: How undo & redo executes:** * **Alternative 1 (current choice):** Saves the entire address book. - * Pros: Easy to implement. - * Cons: May have performance issues in terms of memory usage. + * Pros: Easy to implement. + * Cons: May have performance issues in terms of memory usage. * **Alternative 2:** Individual command knows how to undo/redo by itself. - * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted). - * Cons: We must ensure that the implementation of each individual command are correct. + * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted). + * Cons: We must ensure that the implementation of each individual command are correct. _{more aspects and alternatives to be added}_ @@ -254,6 +254,71 @@ _{more aspects and alternatives to be added}_ _{Explain here how the data archiving feature will be implemented}_ +### Addclient/Addlead feature + +#### Implementation + +The `Client` and `Lead` model extends from `Person`. + +The `addclient` and `addlead` commands are implemented as follows: + +The `execute()` command in `AddClientCommand` or `AddLeadCommand` is executed. + +The `execute()` command in `AddClientCommand` or `AddLeadCommand` calls the `addClient()` or `addLead()` method in `ModelManager`. + +The `addClient()` or `addLead()` method in `ModelManager` calls the `addClient()` or `addLead()` method in `AddressBook`. + +The `addClient()` or `addLead()` method in `AddressBook` adds the `Client` or `Lead` object to the `UniquePersonList persons`. + +Given below is an example usage scenario and how addclient and addlead behaves at each step. + +Step 1. The user launches the application for the first time. The `AddressBook` will be initialized. + +
+ before command +

Before any commands

+
+ +Step 2 - addclient. The user executes `addclient n/John Doe...` command add a person named John Doe into the AddressBook. The `addclient` command calls `Model#addClient()`, causing the address book to be updated. + +
+ after addclient command +

After addclient command

+
+ +Step 2 - addlead. The user executes `addlead n/John Doe...` command add a person named John Doe into the AddressBook. The `addlead` command calls `Model#addLead()`, causing the address book to be updated. + +
+ after addlead command +

After addlead command

+
+ +The following sequence diagram shows how the addclient operation works (Note that addlead works in the same way but calls `Model#addLead()` instead): + + + +The following activity diagram shows what happens when a user executes a new command: + + + +### \[Proposed\] Add Meeting Time feature + +#### Proposed Implementation + + +The user can specify a meeting time when executing `addclient` or `addlead` command with the `--meeting-time` flag. + +Alternatively, the user can enter the `addmeeting` command to add a meeting time to an existing client or lead. + +The `addmeeting` command takes in the `index` of the client or lead, and the meeting time in `dd/MM/yyyy HH:mm` format, e.g. `24/10/2023 12:00`. + +The following sequence diagram shows how the addMeeting operation works: + + + +The following activity diagram shows what happens when a user executes the addMeeting operation: + + -------------------------------------------------------------------------------------------------------------------- @@ -390,13 +455,13 @@ Use case ends **Extensions** * 2a. The person's information is empty - + Add person event information * 3a. The given index is invalid - + * 3a1 D.A.V.E. shows an error message Use case resumes at step 2 -** Use case: Add a New Person ** + ** Use case: Add a New Person ** **MSS** @@ -490,7 +555,7 @@ Use case ends. 4. The system should be able to scale gracefully to accommodate a growing number of users, clients, and data without significant performance degradation. 5. It should support easy integration with additional modules or features as the user base expands. 8. The user interface should be intuitive and user-friendly, ensuring that users can quickly learn and navigate the application. -*{More to be added}* + *{More to be added}* ### Glossary @@ -515,15 +580,15 @@ testers are expected to do more *exploratory* testing. 1. Initial launch - 1. Download the jar file and copy into an empty folder + 1. Download the jar file and copy into an empty folder - 1. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be optimum. + 1. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be optimum. 1. Saving window preferences - 1. Resize the window to an optimum size. Move the window to a different location. Close the window. + 1. Resize the window to an optimum size. Move the window to a different location. Close the window. - 1. Re-launch the app by double-clicking the jar file.
+ 1. Re-launch the app by double-clicking the jar file.
Expected: The most recent window size and location is retained. 1. _{ more test cases …​ }_ @@ -532,16 +597,16 @@ testers are expected to do more *exploratory* testing. 1. Deleting a person while all persons are being shown - 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list. + 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list. - 1. Test case: `delete 1`
- Expected: First contact is deleted from the list. Details of the deleted contact shown in the status message. Timestamp in the status bar is updated. + 1. Test case: `delete 1`
+ Expected: First contact is deleted from the list. Details of the deleted contact shown in the status message. Timestamp in the status bar is updated. - 1. Test case: `delete 0`
- Expected: No person is deleted. Error details shown in the status message. Status bar remains the same. + 1. Test case: `delete 0`
+ Expected: No person is deleted. Error details shown in the status message. Status bar remains the same. - 1. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is larger than the list size)
- Expected: Similar to previous. + 1. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is larger than the list size)
+ Expected: Similar to previous. 1. _{ more test cases …​ }_ @@ -549,6 +614,6 @@ testers are expected to do more *exploratory* testing. 1. Dealing with missing/corrupted data files - 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_ + 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_ 1. _{ more test cases …​ }_ diff --git a/docs/diagrams/AddClientActivityDiagram.png b/docs/diagrams/AddClientActivityDiagram.png new file mode 100644 index 0000000000000000000000000000000000000000..9730dcc860ae365984621317f9f8f907374ddd22 GIT binary patch literal 21245 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 R`yq!?W|xDDeW|S<<)4*?nLGdh literal 0 HcmV?d00001 diff --git a/docs/diagrams/AddClientActivityDiagram.puml b/docs/diagrams/AddClientActivityDiagram.puml new file mode 100644 index 00000000000..c2b3c025044 --- /dev/null +++ b/docs/diagrams/AddClientActivityDiagram.puml @@ -0,0 +1,19 @@ +@startuml +skin rose +skinparam ActivityFontSize 15 +skinparam ArrowFontSize 12 +start +:User executes command; +:AddressBookParser parses command; + +'Since the beta syntax does not support placing the condition outside the +'diamond we place it as the true branch instead. + +if () then ([valid addclient command string]) + :Create new client; + :Add client to persons in AddressBook; + stop +else ([else]) + :Display error message; + stop +@enduml diff --git a/docs/diagrams/AddClientSequenceDiagram.png b/docs/diagrams/AddClientSequenceDiagram.png new file mode 100644 index 0000000000000000000000000000000000000000..b23f0a307147f42c57284ff715c9234465c6a191 GIT binary patch literal 23668 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 literal 0 HcmV?d00001 diff --git a/docs/diagrams/AddClientSequenceDiagram.puml b/docs/diagrams/AddClientSequenceDiagram.puml new file mode 100644 index 00000000000..0c34e658fb7 --- /dev/null +++ b/docs/diagrams/AddClientSequenceDiagram.puml @@ -0,0 +1,50 @@ +@startuml +!include style.puml +skinparam ArrowFontStyle plain + +box Logic LOGIC_COLOR_T1 +participant ":LogicManager" as LogicManager LOGIC_COLOR +participant ":AddressBookParser" as AddressBookParser LOGIC_COLOR +participant "u:AddClientCommand" as AddClientCommand LOGIC_COLOR +end box + +box Model MODEL_COLOR_T1 +participant ":Model" as Model MODEL_COLOR +participant ":AddressBook" as AddressBook MODEL_COLOR +end box +[-> LogicManager : execute(addclient n/...) +activate LogicManager + +LogicManager -> AddressBookParser : parseCommand(addclient n/...) +activate AddressBookParser + +create AddClientCommand +AddressBookParser -> AddClientCommand +activate AddClientCommand + +AddClientCommand --> AddressBookParser +deactivate AddClientCommand + +AddressBookParser --> LogicManager : u +deactivate AddressBookParser + +LogicManager -> AddClientCommand : execute() +activate AddClientCommand + +AddClientCommand -> Model : addClient() +activate Model + +Model -> AddressBook : addClient() +activate AddressBook + +Model --> AddClientCommand +deactivate Model + +AddClientCommand --> LogicManager : result +deactivate AddClientCommand +AddClientCommand -[hidden]-> LogicManager : result +destroy AddClientCommand + +[<--LogicManager +deactivate LogicManager +@enduml diff --git a/docs/diagrams/AddMeetingTimeActivityDiagram.png b/docs/diagrams/AddMeetingTimeActivityDiagram.png new file mode 100644 index 0000000000000000000000000000000000000000..8ab426299797a4bcdfdf35678f47927977dd0116 GIT binary patch literal 27183 zcma&Oby!tP*f$J_f*>iObV`FDxhd(8?(S}o*fgSufOL14NJ%%Mln6*}y1TpM8}yvV z^L+37UDtR1INQDUTC-;ExhH-x1S!Z#prH_;z`?k`cT{xgL$q?|4eh~=#3CBIR*qSE9OpF>2}=Q}qLLR-|Ds6A?pMBpR2Eaa8UN5;rC^&4*sCsMU2O2$!!qil zm*?>RjH#!+(_dxVcu9q35ae+^!j+-#zT3^p`20&fOerk~ z8Joi!Nw0&U*&3r+V@7 zwW@1fJ}D5xe&L-)3J;6d-*L{Q|44ws*WZh%Z)+v`)Wt!o0J~#4qn7^X&p|dz0cx^D zM}_%XCJy#Pq_V;w4>SrkJ~%k@aVb$D6{y};>O-iE`fVqrYk4Pj;!q#)@af%^{qHo+GM5(i@N(FY##dlj9WOo)ri;k4A1pYBs{ z1s{_k@*_uia1gGR58R~_pOBES(wpq*kfE&d(gO{y1Pv6VPQ}7v-|_LOQo5plu%hAm zF~9@hHVVMqC8ho}Hfu1O%`ye)Z&Q<#@9RH>Xu;Gp@8jQ$3I&^mcA;Zf|ez z>qhT5xN&; zp9HCQ4jl-94iV_kk`KDGH#{a?m|vatED`1|Kvz469UL5phZ0a%;Zt`xb=e^He5J{M zvw05$Ta3qbYb=H5^#-hziXU;6P1>2ok;I=!wh)N#EJgAPSGM?_%e2QScNUEtn9f{Oqo1> z5kI70mC^W;@T*goC3t_0F9Hk+geXKf&5$iIVLzg(z>J9krr3+}2n$OGj=BKOXC3ZO z4dS=9Y|Qxf_xCq=db(ZO1ht9ig>#i6XMcqSqRgpJ`~7Z*OXfAo3z8BO?l*uLQOC@0vpVCF1jE#_WMJk+L`)8q4FFZVC(E=(IFBACdcedjA9% zzAdj4vmsDt)%+O!EixP7#B9W@LCC!+1Q1%gZ_6={oKhJ)U*yohIgsA<2bu%10s31A;6S=@ zksW4__|GCwaLs*FE*c&bhO4~?;xgrzQZ%0Q#m9fy#(sxXxrjzU0&WTiG8SG|=|Ib$!jHODdxmC`u(ez8WslEjkO-PbmzHnn&>k2FIuIKmox8gW_G)Ew`a<0@ z6srVw`#)Y?QDUlmadA9#^Q;e7O1^!)qg~UN5-)zg>~Sr68Sa;qdpD%YTc$Eej)JQa z?he8V4@b{yBcAN;XcxJ5BZs_5lsQ{g3k3bAeQud|-qM+_Q>8-^fvG~^e5rHLx2hj< zun~oaWzJ4e@#TvFA38`4PDi@#tNSreqXi=aDG*~xt_`Jwe63!pY?D}ad!jwK_puWm zwE4lop<9jbYtO?sP(w8T64Q>No{RQJNjb1h!{4Qh)|D;7**bqT++4;&7Rpsvk2e3r z?`;f2`UWKelfma`0XsdJVmtS`z~y-)@VguH4mB*u%UfDlSlGj(e!${qUq^iT1d0xl z1`UY*^F^?1k zeFXG%JJhSFHHt>^^705CJ+N`JK?LuO@NSbVdClpR&9_HZF#My;l&M{;E4~QKD%jZA z77fv{vD9cJ8Hk|3`5(NbgbfT4f@ z%5>nNew(#9NK*B?%wP)t1qx@g4C!2KJrl5i49>wzx4QV@&OtD#;^!crG(&_%M6$E8 zqN1bG9=v6T`eB2fzpt&+`R&`c4jDHU=SpQksjq}wdOn6yQ@vTu@tZvx$gM6!V9x#w z2Xl0ifYvN7lhw%8D+ zcBy)Pu)OxGv(vNHuTSunsQt&!RNhRv)T9`}*DDEAQ%L#;;?%Ix+eY!wPt)~P@#+jM zCP!;uzkby(Lzwm9wf~tw-q_|J$C!BW{qb>ABmL>lw%f%KC%N(<>ijQ}cL5NlqsaB) z!ZC7@dQK~qQsIDuet}7LPS@Os^wcKbws)|?K96H7r2F^F2=@=@%3rTSKE2tn9ND0g z4t)31_hP*xEiG;MeL_O%7%^`0rv#SuyfZ!ekv6kl0y?#wZQaFgn$1$}Q#uBg$OZ1% z7GLPemLnR$aG_3}QNEmQI4SIl=lCECVaUFCGK_M@;t=tFnvUMi$@C+p*8LE!SOKh4 z_y-~)`0oOdW}1>+SLG&-)+yteuOoE1otEI}ZJvLZ+E8g+I-C^@t)41=j@PrQa^3!{U4uSTTkbpGCRMqG zaz3n?YIlD`3UxVzMc^Cgm3-0FzLoZ*`Z|jNq)OLl{@a6BkBV0Y26_sqg<18K-Om^7 zf_F!28GN*c$D3xQ~CaRL&2}P)(bVcO&Ke%+(Ojbp56L ziG8Iz|3WCIyaVyw2xs7H-u!h)$*=nZ_3T1G;#E|HfSVl+f5aD5-wP?jQiFNyuQnw* z<07{tym+>C4h^ow7OYX~%l~v$#h*xIYlHehAwAuQC;~F2Eh^i_JcLYsMtcyilo2~ z(y{c&=P`Mm4&6+Q`ce9OZCXtpRqZTQ`zY##N>YPbLL{8E=%sRcq|^`xvb$_Ja-RLH zNvXzE6`0l#z;28Bc}3a3IJ_;hmiP0M(!xeBjId3~9croqTOOWu;Uvz-3)YFyMV)e^ z`(NP6Q2EdCh%?{6~!42$+gqb1g~HX%?%AZBL(? zEAb4sdg)HPP9S}`2TM0Oi@sAAp{<_#-xT*}DjCX`@2ss=T_A#NO;5_}9qi2`5^3H0;Ii2nbDE7{geLe z<<+?;x%bhUnp($X!-Jy3xv!W-=Z!APPF>dYEc!a(Bc3i>X9%0GtTyo4Zw@*V55{Rw znRPE_Hkzmc8@;;8K|(IO|F^IEPPVNHxK75)7dIzsjw^eDLUqS0EwgnSMjx76#%k8= zD0@)kIm>)Juh0{|;hOcrd%}Ib(tA(6WJ|NwL8(8D_?;Ijd@1zdbPS^ewEX7G(KZmh z|6%$w1;!NpJscw3s-tj0^y?c>6ppRs_(|mRHX4Mr{S?N0br${6M;@FsGz|{q-NLDj z0>NV8GntvF7U@FOR6Z>evn`#UHSLvCTW;#7`*+>{)5s~=qEi%9ZEm+6#EHi#JQbl2 zboS*t2v?6c1@V28{Ng-&PNRqp4yXe`io~w|9eiU85GpX}`ES*VwQ{vMO4aq;BfUPP zW{IVo@K+WnQdRVOEaNwxia5%JpzCr#9q^+qYa;B)=Wtn`@_X#n%=Q_Z`oC?#6yPb= zNDytt#@w?5Gcj$8@2#BpB09PLnP_x={_2Z<_RO6!Ge$kW0BH|*)oKNr(r}}Jv<%tg z71d8FSz-}twraP>o0lEor=`mI&r}=CdS(7s+q8GYj5Qiu(L5TFQBVpLG8=0X$Y!{e z@0tC4qFZ6cfn9w3^eNWC52pWX3)dhDg}B>^N$i$n{Ve1D|ExSM&T!o$Wrn&FFQ@9F zUH6R!D=qDPuJ*ML*r>I);?d_ICkQZjwbs&lAt!1Yq$>N_dZ*=Jm(9^6h|9Z${0Gw2 z@AO?zb?XUAjKT0RxPRr(f!OWB-Fk&ON}gQZ>aukotb31P1?fI#qV97-3WXzKVU)w6 z7Xk0y{qtkAz)nbl*7SiB?oB!mVyy6VU9I}|dXbMYz0U8g3IyMkNWs(j`TOGdKvMAg z^>fQ-bzx>B4{F2ifrS}uX?54`cI9N{-tH>jRkar~eQJH&(^BTm{B>Tv>;bUyg8hok zg3=&H<#cz#RS+LCdBM>dhO)Fy^vy=nG{@}wPa_+1a|W@}xg%D}%F3bQ+3YsI7j*`~ zULE6`=acka325}W_1?@p^L3d?^r;*nuwUXd6cqkCG>nWg`9tf+9srkxKE2y^j7j_G z&GgMY{>hsr^MeyR~ zL$K1nRi=^O@v_Ey+7Fr%`svu+m)HNS#w1tJk+&eyf547Xg8#rQqe& znt&hjLIDg(gEZ<)@}AbxHrIOWBiWm$YAyV)9%FSg(&WHN0}QI9pkOi8;3iM-{CDN< zc_e|Y(E9rN!-o$y5<{xIXG2TO!=#YuBZEtZUR3utBo!WV%!*l{7{qSs zbOq}L`kEy(14EC&^R?p(fPaG_hlexuXofw_VaOVv(kiB|qPSF?32c4bm0y_Uv6Ir< z6sp_)@+!hkd4G;33!QHwN;;0o!_0V@@wZ5U?;XZ7`voKPvGiy5@8XGHVr3>(N!s4H zUcX#_sBly!CHFWjk6+eDBg`12$Mo|>DS3H$8JS_Ls`*oBjC8wPFj8E1x>8gyV({IzSQ+SWWV=bFICtvU$tu$NPLYGU}yG|*2zpTJK zE?K9fjlJYfu<`YqyxXPftp1pJwEhro3JD-6=H66Pj23gT9mqlj+#e8{^n%dkrx{g= z$V13w8SNin7XNJ3%Jrk0{a4HHB_g*<0;#cjaDLWz@O)%^$VIqPUH!|`6-Z7oE^mHl z5(5*8U(fH~&MikFE>HD!r(j9<>?@sNEp3OOe>Yp($y^FI?(aMd(Lue(w!?X`{ z#!vOX+9O&Pxpl50`z3=}rj`HK$U3El+-G@TuQ0e;FrUCp-8(c#LD8Yfle7PyOK<)A zan7PPzjKjL@FV$M0?dOR6(8-n`SZMoZsk@Kfk$F8xkcxoKUrBNeUqV-o3e={&!~;3T!bX{mF1OiE*65#9WZ#!Lrqz)RkPjuK)2^( zyaXk{ZPSO5-7DLg`Eq)X(w#-S05#J#%hs`7ViH&L3rnzt?bi{`j?l;1r`Sv>L zr))1?go+!hso{P6J@T;KdFmP_TW}Yr7f4L zpS0q;;@@|6c7FR^MC}y|TO=n0Kbm4`|A7$Z`dSn<4rSzO{InKb;o0hhY?VY{bWvQ-w@3bDdEZ{+74)1vK(Y<~ z@Ig{iGGkj#O)ZW+#Sd^=3ePUzMe3~DEQz}(2w{FVIXfW?j`_u+9vBd??hFCU99v?} zJfbK_0522XLcF$e&g8$Jh=eGV&E4A0K-X%W{4~fgj(H zu#aK4h$z5!U|D|debFU&!%f9v8G@tD&@2Wv+Jsyu=S$H8HTIj!)Z}h43#7V?wP8(n zb*yga%MdEPxt#Sz!q}k@Z2yj`dj~mnZl@b8^X2W6xgE#G%0-r`Z6l4W+Y?WBNt@jd zTfdkN5jEdmvQoOr4!I92#|KgA5Ql;Hgx9!*TEmn!hYO`F-Qk5Ae=P%yx^%2x8?m&k zs;M`K*KMu*^XmFEW@Dsj>8>VMy9`)5oqBVSmrn_G&3ls)jXNG?B3@q}!zwgHE`ak#--)W^U^<}%4SEG3!QFQWUc0}Qbk7~0Q553I!y$8-W z=c}|m=Lgh_2g^$U$sk)!B>ha|FA;hRiDgjV8ZO-4U)1V3UzosSx*!7>YlbNen$;X3 z;6m@(6;TpOFjAzDc~#NR85*kF{R#Ut9(Lo^$K4ee5+r9k#hv`VMy+^bvEzKm58v_? zV+_7^cT^$!v!&A}&&z=@<*v%-eY|cZ+2Tsd+EpIGgXH9gfQ~ND&!?GYc(%gO5UjaY zD_vElSs@;E&`9?KV4{Bl&|9>{x9y?0e2XSK~4W+?*}eEY;My?FLquKL!Eg zH1C6wuja;U73=bDjuyY=vfI+Hb-*qz+oE^$b>ChMeY@mTzNWG{+8ah3l2^QXwtr*a z%#$Ih-NwLzS4R-agInw2vil>Jw8nl`tE=XDUn+01?1zKy>F($*EZ=kL_d4_t51#3P z5+gjw%wNpA?5-R`^KWj}q8BUo^9{Wt9yETYjc6$-^s4MP8WoO@mk&z!@inyL{nhOOsbK2c>Y7ShZ& z+s0kN|Ck4bcyJM+;fDyjxeeX3xSU0aaJ$&}RawQfe@Ey7=&U75USSuF-=HiihPyr3}1~{2+ex8);?bFzqps|H|`x<9Jo1{=qE(#UN#yi z1j8_Z{n+0XZc9b6@}0UK<3;w+jYyikVaj+t3sEo&e$7;z(fL)_D`tRm|0bcfPQLpg z%{z_{LJVIVKG|r>;|(6A^nie~1Z@M13oY7+q>LowMEpq18$%M>Evm{Q79X=ED0~I_yI53uhJlWS4GXDMu=)_7-LwTXsy{nb! zT<8Zq?fGMQ?+E0r3nG}a;`V-osAh|+R)>X{8m6?jL+=n}W+<_F;D0JvRPuVypzC#i zRfI{k<&aJ(M(#T>@qoP5kix5P^pdivv7L;0hjc{Og;1q)^(`1Ris&^j{ptv-5ShVQe)t=^WPDVGx!+#<4jg7v9VXig zfEn}&_0_fK&!l5ce&^eZO;^E|Rn0Yk9m{2p5g*9q8T}XLYUPg>U#gtxr~xoMq#SqH zJ_6=3!+JW7F$BZCL2tns}zl#f7WW+0AC7`6?2- z-kC$EQyi>NiBp^RTMU}8TMW>I;+(k+n(IH>cjYlT5EBC0joC5uVm(kk=Jztr3kg%; z+Q7%gMu3%L)uPWu{l%v0JcvR$y!fYp1|PAP3D_J%*FkasEVQAzEQn&PO^}W?6=TSyI5klevLMP&bG@t+iJOdOeOB{GCfYSr68XKptpC!8S zMVrm#aw0=W@w1Ajb(NP@d#6gfoZ7y9YiB8a`sh87$NqUD^|0moUH5>@iC^#!aw3h*2@o8tfEcNB+F7F5NJ~q5+n(Uqr07VXZS6Vf4`F0!xdo2LTlA} zbN%dyq0z0p+y0zrhIqnnTsjlk?^E&)_sMD083kLIRD4kADF&zn>#W=-w3WerF{`_! zN{{7uvVt8e@~6|7wKYJZIM2q`H15a+k$yWM@;-PgR0`W%`TSv>i@9D;KKLavJ@p+n z&4X$54xcCOQgqpOnY}x8>T;naCMA{66oMBv^bZYF1@U|Ky+b72WyMW_%LYaB3%#=$ znG}aL))HbsXo4Jr!P$p(p#5Oc9rcWmZ~DKBA3*fK70*>tBvasSb=m@5W)tvK-owMg z$S6y#2p2%V6X7??$d}Hnb#i0*D=Z^O?f3s+OFBeaOj;rX9#?=cUH^+P^Z5Y6EXTi} z;(sop{4c^xLH<9VIuRO(O-;3BOI$k-6P7E5DQ{8V%P+HTH*-qWW#E*Ohocex1AS58 zQ4mp(G{SVjprAya5ebLlxEy^phm#|xWDL_;m4v1oAv#d7&s$CmEd|bUKLA*+M(9j) z|NmQjeAV>-M||vrp5mp5Z$XY&mWMRg@59w{-btgWOMQ!3P4!W|&tY{@PEhOiKFjPC zX&_o2+zEUxKIj^y%!@@ulc&RHtl-otoej|c|2?K z;fM%s=iXhc3}GRZ-7aj;SmM**TD<`pXz1?kjWvr^OX0)ute2;PjSDUr|H0{Uh6{>* z?D6*)3ZX$pd8Rllia)(%(!5VJ$rW*88<06&L(u}B5SE&baodJ@)n?6QBVMoROTUsA z3|@vXr6_%OvV|MFZ>D5uq;8_cY;*pZA~>GbOyHTAVt$dKF{v%18E(-ra@^~sZ<^=l z5@B9v0ji7TI+@EA!Q2iH;erjG;XV^KskRtcI9eZy;eNd$(-X%;7a12f3e(j2iM73?Y7xqXNCA3t+TZ7AnyQTA&V2j6p_6FHwG}qcc^a+fa~pu-vohjL}@l z&C5GEJKF+Of001+CilZzAe>lcxIwyTRnmhyqGs;(C%pb{rh)?d9cenzqr_$ ztl4E5S76jAo6C*Y!yas-4t7%{!aLvo{((v2SLUf;ehRrY@^EcJ&OW@TsZ&NMZc_TXs|wFk5Zl^b`0 z=EWJMVIPpGe-_=xZkLh%`1HklyvSnhn!yEb`tfZ)X7Zxk)5aQ#k*xsBIYsne`p@28*|0dcqf!Kq)o9>Rq`1i4HhY9=Qq z_w7BJlyh45G zSZ~xGOyaAYDSRI_aSPjBI3;h@!f;<{3*DOP?GE)L{N<1uwzy>5D!+wVx;PaOTurff zW?c(R&_r}n0Y(!oyY~yaIDuk54K1HF!!r1d^XLdLihdpFE0in8{hKu!CWCr3WMl?E z6Ij~}SNl>|dz0fMBK8jZ1uNJN5c%&9VM_(QUhV6Ct5c5M{tD+sJ1%|RI{o>oAMT4~ z7kag^T1Vsg%$u$8ii4fuB6WESs<$UxHFnb%MXfY2!AkXgS5w`VP|;q=q;NZ~59R_Ia<}ESnXe1?cfTv^WEy$2y?c0jz3Xe) zJ5gpR0=!X7CWAv4xv%2C!|2txO@G9+w!XCLINM+BiJ|+3g4}p>u?a@*ods%lQ=uFf zn83g-)hIVQS{o3~GwNNaG|J;H1{q9^+Zj4g?_wP)E;5NTPYfkj7QngtaiL7o&b(oH z?_;29!5O}ZIWDj1IW`>0Btlb z)brYJ2S%%bjh|^WOCsc;f9TOeYIB<6vMu;N3%9qB@fMBI^~A&NCEU%aA7psy>gudV zKd+Az#UF{Ti?cD>tZv;yUnB&H6~VZsJ?|t}_*%o?eEtv;bo<|EFkL$GK2VbnP&*uh4~taQqFv7GBvI zIHd1d$aFs{Z3WwVNLPQBRv{F{yrag(f#3*Roe&yDJg&-ae_0nlMy(qSe_%yU(^Uph zB9Ode?iKu8d4zFv$CKfCWRYf{@2ZfPmx{oY&?1S&zcXJzOj9=`p;Nc*+pN^N-Mja3 zv*e1|1ao!A9AEzP_?(mU12L?C=p#g0qcE>0Yi0Y$agS$Krz0XTtF*u-FCj6}k}VPC z6pe%oY2OInfj9#$tKf;_PbgxKA_kO&k&%&`n;Q^bAh-GXiAxp{F9lu_Z?!?4cyT5NaH|uY*MEM@z5w=)qgP z(pmn&i$K(+xNn>gmA6;gLPCmu&~jAJWH?2Y#t79hBfc^seE9#V6qLNE%nDqB{k=3+ zZUZjFBmBN+&yN?M#A|*XeRq zz?|0dW*GjsFsNX|?uF)#;zqU=m6#uVnQ%VT5Gddz7W5fzrRltVg+usLwW_t%> zjwi1V5)zX5>4K}(wnP+G3G z&MF*SxIeTUALfz@=zL(JYDqD=VdPsfv9&k6!PrC6yA<_7aq_oVSzTU|7HR9vB#9mV z!2EUJC@uKZDaW^`^V_n{>csqGV9=^*s=NJmx<*!@VkObzOPpM@o;RPuE;)r_C3x(A zL9t7=#GG|MG0s#gCD&Is(19G*Enqms_3KJjSrJ!HYWsF)Uo6BIP1n~loWQBM&mQ&K zu}$Kr^a^JQ@tUB19y&J|Lt@NfdMz19!`$2CqfGFe8KWvui`khxw{x=dUJGL(mahL| zz>P^KzIWn;ua`=ITqXAqwk&GZ5sNKN$pWN>@!?3!<`d!<*@OL#7=&yewPg z)_?XSwJCE4(IWft?UEn=v_y9@S}fndU{jUHow6}`i7MZ|0)e5YXP9R_?uq}wdrt^c z9_Smi4ith3U@s7nmSzV$cNMzJo6m0X6D4i4@qU03B#AGbg4{VDlzg$~#7o}1Vt;L` z5}>|EZi)Ow-u)@7i>D9FGUh+tw`x8E$eYRlxSH zjs?fmOShfEo--2tMvWOHWPirZrBBON;pktjxkN=psi>%a-7~urMmkdDfL(H!-YU8A zE3h8U^PpO=VxUi$T-q>_!0L{DTLut0fbM<@?@!hPA*_pRqcIr>2DaPOzN>PCJJFjp zKN>jlinFS_2_MB8JZ;vM@I3{Z%A^2cNTHano`*VoY?7*z<@wm~Xx$%B&AMn9itpT~sosy&;i90CFY zT-?}{6r1Nya#&ZKF^6-N(SM59q9fKN5`B10SVxKU%3gT{VLbpqaC5U++M?= zUShM@A&~CHc5!0c)R+@(s?LHaCeEB$^hbb!jvO4IzFKf()^FB{eukDOPkIh0wk4pM zjEss)@E(WmWLbybbKF6+d1$q-uj6;K!^)~3gxXd5MGRdZnLm#xA+%%%av;-bqOQ8o z_E%%+2qUIvS-&7)UmNkgZP=ars=Jh*0Db!n*!zMuTRge8kJfD;)1beGrW99?TD@tD z9huZ*YK{KqP44mC9z`mJRGcK8RHaXy!oXV`i0^l!-rjghA8+U#L@}2zsGmSRVYRMI zRd+7HIDAa1-O}Z&wy4G%RQ#yMM*5yt6BO>YCwR0vnoX%A2z)%4t8%Sz8ERW>PcgQk zOXsdq9EAJ=!%iq}-_8-!~&@*tS_YF8?as+3x*!fYjhRfJaP*5~?|F|MDGNUu4^`aA_|&LuIv zl)Fzhi5+vW@y)_=h_!a*+FL(Aw{{NC4`m8LOW5rq(l&QWPQgD)PR7IY#sS{{i~K{U zLSZK_U@nQf{4#|XUfW-bE$6^1uI#xv4$^F!1u1|1aowuc2m4ddA!+*o)f zpAFSd16@V^)y3lodcGv3tEcz=EYotS3m!5Z+~783@k`%p|EXFU%CGc5Y%Y6}jB>l7 zyt;rNQl~rD4ktEkIa1$Nem-ScdiO^iO4^;0N*3^58q6jAQnZ$*Qv4Oud|tdKPBt0h zf+*IrJ?T;JI#xEb<w;o8oe?Lll%05AtzPJa@jQN3=0nfJ?cc5gDbtS*SkL+P!Gkr z{SGG>U)bOCHT=^|m(Gv6WZskKL`QL!c^x=RP?sG9W6zc=<)R$s4T{*9e8Jbm< zOy{kM?)y^YbFn_(7vx5ngl67n^LQ|x*;~G!?02-<*=*@#hOQIMlgdOq5{%$m|0G}I z@7(Kukf@j^^HeR0OQF##+<#Q5Q8tZF$BEJrz9$wa92j(w5oKzU=>komwtdiS8oc{2 zjun**1$_TznWN12b4EkMK3eo*6tnk)hwIC( z3%%9LT}AL@HJP0C9$=(kLzD%}4Gl;Dwb56R!WpF{$qtv87S8}_L^8xvqhRay1O=B3@)KTH zT3ONd{ClXU)T%`*x!mbX>U1*&K+oWmEeufO%}TI*HNVoEPMg4qk%_Cx-Tu4heP)oC zUf2KZiC0P1-&=SYfU+FGem6d1pqJa^ID(bmvh(GndWGTRR#e*<+{|zhnJUCGXxI|4jCZVxs;@cBd5bulmxG5_MoEOD-dCae7gnC(^ z9511UZ+>_0bt4vL2v_xjmplB#Kn08zdau3b^z1Uxaj|3k@v}zeLQUG%!A5E5vV7Wb zkbR}^ZH@3nTR_fxv`rMtnYEG9UGE#OtOx-Q=OUw1+owv;{u%edi;RtEcA0)Acga37 zkeA9{oPXr@S+xklpY&l9|NG@*$t0?~UTqJfO}lF(WgL@Y2Vq1QvA)4M(2KU}OEu7c zc3^KpZf^L^dOea!LVT`W8q#ME8Pm-k@~rWB8A|G|{Tr$+W*MAll<( zD+7wVE4~TyW%jv@jH7Sw!JRayg2@2lgTpI}08JNguvBVQ8D2TR^~D`M5BrO>B#e znz!B z?i(S$M?{Y9v*Kc$L!1pp{Xvp;a@Cl>JExb}Z%IZMhTpz8+Y+9!SjBGyVXZv-LR1d* zMQ}tr5SbB;!l_WW2Q1ViGhKTJOphdAwl-8*!z?B$vG_B;s8_q6E_c5fUmGmBC&WyP ziW>ZS>26J5MLb@7B(NQk#9>X zuW9B|^dSz=y^4xc`Q(#lmrrQ!#NmmHKgL(=(2ongjum3~u7co+KU>k_q5CZxd2PV_ zxcB3nU2}2}pZcmeD*Ek2jlFK2Q#&BUWK$vj z-q`(msS}N(e1!2O)!v+V;hR$}$;LPLHvt3^c!_DENu!?R`xSDOOg6bV^>9g#k#Dyr`%+-~Uq=$F3{ zzz&!2bV0gqMfsS{>e^H&ICupP=ES<)^CwF?aKey)t$o@#FVS_}AsX!T#!@aKtWub< zDG&|DbEwKMy$CG?(81_+YI6RKLB&9>|}+QEDp9cT69{LaAU_Q0R4ZfEuC$*i+q-Z`d=iHUHj~7Y6X|*D!0^kw zb0aq+5A4i8E?;~r&}u0je|gAkzJ}z#{0`?Od^!+V!{cy-?hdzhsFpk3)XYZBB#PM1 z%y^MirF)R?5-ho9wI{||9IDs|{FY^jkj#wt8_=I-4_I6Y`O^9f@)gV5Zzur+u%*3h zCUN~Ar*PLfgp}0Dsr}$^Qg}I^jOK&cO?Pb1@oi#G@pv&=7m_tX+!r$QQnQ@=eB~_- z?@DI@VTJq>)%Hq{&xLCBNEkBfa^v9~7Gcd(T{xCJSo(28;&z{`4sHU9t?>4Wfld>yiU;TCy`==^(3cne82&7&yMIiOs zvmmvji@~=eh#|J$7ei|Qpev-O6O)#~th#@2RxzNevs&7+TJW#0m>P9t-Fdj2cFy@{ zy4?O6CdV!Va0nAA;3zOEh$`qPI4gV{!(D2Zqe|3h^mE$Q@z?e8#&hH(d%J`HRBj~O|a2b5OLRBkEa=4f9AMlZYA6ugKVv$Ao>bF>&%{zmC-w){@ z+A>AnmpphO{mIAwFqHq&mfQcOE$=RV@mVpi`O8|yce)T0>}#9%>C3VD8WGd8PV65M z;)wl2TIwqntW5Vrc07mLU{8i-LAw(gbvzJg=QB2^*i(2p?T5nRZavQA2oQyKGPZlK zeUqwo0FgOZ@ZcmOJv}`s3GDrj;`M#bL$#PJ4K7D5g)Dz${tod~=yXZ6=k>~b&?`#` zDd~0A73f@)z6eYo_${QP{>xl8XDRSETS!^mIx6Bq2I%YT=PI`zi(9_CM<^*R?XjL4 zKT&PV>w9xW>T@=~#gZ?_s5;ORlSlL;zd}Xa<0);c04#GgTO<7j5Ojc#Tu(*yJUk44 ziMizZqt0jV`iq1gn1iKyG?ZQ|oRy=)|Fi@|DTYP;DGZ=5# z+`!xoRILW*b*F{z4?h+^(bioZU7xKSY1sDoN~%qSOfLngCsSBlCxor?YeD`vrST+4 zD&5F?$agczv)*LQX9-bOkiQ*Rcdl#+!p>yM@V-2;Z`^;-q4rU>BsxC2q2am!oXoB1 zr|vOlLKLzqHb%uC2&1vHdFkN+;jc4xRH34yD-;XC10ohCW8j0}_nSqf%^t@i>eeHl zmgnac8(eKCro4bJEc1SW%BQljvfgB_%d;~^%`b??J!Rc4kMylAl+wU@(yxx}FYR}N zkzByMS;H@x3)?K`{?XmvZx1UW-quZ6-kNP`aoe2%T33lmVUz?sP{G_!#?70WnmkXo z>P&m$=2{ZjOr?RQ=(aWXrX06y2U0l@78m9ZmZ2sP3w7WKiWmT>=hydLbra>=R=B3u-YBlR0`&ex7`Kv%yyc=>(ZP zAn$-6#WHEDS#kS{Os3YmZ2IiC;}e9wZ=~Vln*zoH{T81Xa6lN895uMLHmXbW*ETM% z3_|nKsf1MJk8iw;`-kOhv$vKO0ks9bIezOGzsjG08u4y0Vb8_=m_>Di#3&$qWY>A(2cgIW@B+DMYfJY+MTK-C&sLsmEk z?oredkH zv`b1`-ozBop93$m890fQnVD&#WugmAR370>pw;VK?X>@lWek1%kl}UT${G4CEI7uCxlzV{YaokDT5*_a-Gcdrs zulXQJ=0K*L$bzOwna{K*mSM8Cyq_lhW3#t5OUw6>@AYIm%_HSb%DC#J?xzdOhbC2g zI)O-+b_icxx&%i{_4P~j_#Kx}R6c8zoA;-IPW$O3aIu!1C!36-ZfI~z&j}>1;Cgdhm+2WxTyL9R$DRW%50L8SF ziT^6;>g)u*f|q0D^Jo<t&@wW8}!UhapB50){W{5oGv&!*bO`hV&=??5Ww zzmMyyQns8B9eWd%Jr1%rA!HmO*&{i2$Q~IfBReze*dq?2gk;~qTsj7ATnJ9E3NG@v8AGH$`00ZZ>D?R6$-&(xRZB!kHVj%m@feYI5aBtlO zJn_I2zbVcmI-r|S){4(tDv_=<$$4$`&7S(bXIlG_>H*WjydNw>-YxR<7yyg^XV7!- z0|kZg2@Hv;sa^N%Mw3M>`*I=;YPO|53@dS0=+!z87V6{Jj}JFE%rNRPjm#IYPgX$I z$`>?ze@l`~0$;TP72{4Y5gV{jl$o}q7a5H3c%e=c?Fos|xgEk2xHaT=2)OI_@i|Tf z*X9P;>SOT}wR;ub26nvXnRK*`el<_f1Tr1js?Y~`-G58MXlfW-%uORME{+6Rm&9dm zOT4}Ay_a=}`^&O#GV^NWEgoq>d^~;mDl&HCiV{4wiMqpf$$W@4*>~1S!;-Sfa%l~> z#m;BmSzO$D+m}Y}+~OIzd8>H9<8f=;_8TUMNU7V_I8fv*Q{+zuO*R*9*r#lu-3UOO z78t2xNLf@-o8PFwg1=_AG9CGKA|f5$lt{6I;P2gBa>cjVnZ4W!-+BL%qN^qhc&w^g zBbpkraG)j*8}~d*y|)9E=`8g=+s6GtkWDiizjl1NVw+d4D-rGfHQGPPbwFNTmm^ax zb@Cf^5?dpjUs-W9jiO|?@~uwJdGK5vgV|y!WzmM)Qb!VU+7q{Wbta84XL1`Jq@)y# z%mcr_S@Rt92n=>06cru$+Vws<-SgfAS_AQ}@AhSt+FP5CX4~0R+LHnj0+gF;Ih+S$ zW98Y+^1LJZ5 zz31U#G?P+_`*QBLaH_+@LvQekoATTu5F$9HqM#7887|Jjy>{(d_tEiMD&3W7yx*5` z8xc#FfY8L~CPvzUaKCICbRp)3af%?OB{o(^el8iKK=y=F^6Q7DT7EGvJ}4nb-osY= zzCby+W2>n*>6nm)N;i8Um~8{jOt6IXZg0;e1zuO9)ph7nkx=^Mqgjwds&2nDPVdeXw zE9PAx<(}$kxW7uxU?WzJD}xWTPo9sq<@cc-Kj*7>#mv%bo#*m@ch=^j`1NwZ{7g0f zQ5@Hrh6ew`PNd<=Qb~g2@?aqor+H|_rxE-QPNo&@4agav5eIiKHtyv0T`nh`d5+;$xBP~MJROo z{z$A7NbB!58nqeNk5w{xnCliC?9_Fosy&V4kmXy~DBm#!K;WaOp;l3?5U|5tn%w(p(M6O}ByU8hQe5}%LY94j6!18EB$W*+Z%;@Rq4uLR* z>xWc+c&NP*o_%HCi+hh%i{SOMkIwX1pb;OgjU6J53I*gWLDRubYM8i+1jn1%`B2+5vpSGnSBh0O6MC_z`cb#!kK+&~ose34r4H16 zRHvS8h>2}1(bXy7e6(N=krB=e4XU zkc+IW*w;**grT35-dz*UR2G)G@{!_Z;QTd6#7ei{BFIrSY&7+O89EU5CzpEsPWKvc z)-x8`o1$?w8M{YyDy(7}{c7WtYXdypscrhQg$5*MvRe7Q;kguwQPEbM)!pd=~Ro-Dwe#kphLCs{@rQLwn&g>qg*}UNe!v$MYD| zV#!jZ+TMPth`;R->Ooq&`Jb48J5sl95qXhmJAN{u+WkGD{3v9qiigtW9h+ug%3a3) zw?%~5Xs0K@jF{JUl$Dh=4RB&+O?>~=EKqbL$PBz~la`XsP6vcF!)TdqInjt@Y}LuP||^lMa6x7{~dUqZIGs*U!HU^?5op@icA z{m6PQ($)i!R`#$Ayugmm@@{4ZDi=C!H6g1om_1v9=tni77DQ2%&}yn4G5`H0a4+&9 zmapyJlhhf^?XYH>l!`+JuK1*X0h9I%q1D+t@jfWya%jX;fdQSW)Dl3bAW&_CpkV8M zHF3}Mi@9(4guQ>w!v5ka#&fE7>);e$~AFXViyz{CP1;FkH8gm zrY-yvLzj;qRb9hGBo9#FPJ{+iWA@MQhKD*Xp1VFdqt4=_O5j`s)0L4~9sJ zH$>b&7Xo38VMyp)So`yL)a?if1)2SM^hLS?YkCs|2Cjg3ybnD{k5D@-Hhr-lkFJf_ z=LFP50D}^p{viu3yA`sc?%OHG322}ZAc#QJ`Y8eWb3)&NvSh_za*N?2Ux9Uo9ovXv zY;ZZtSB!vsMbeR})?fJwEFY;eqhJL0k+xyB--USAhEOdGrfu)}D_((xMF{MDL~W;A z_1Ok3$%R2J{k+~q)>;^y@_`yAQ4s?@Kykbc!V%QQ_UlAHrW7}t5}Wo&*WG`M=V<3< z1pwY7K&VZVAZdh{_6Zbz{>mxrfdZf#7KGjbO3Q?t!D>XzQW1eX1r}BS7+>=DytC6j zBb*S2vo9`V`80t&XU2qSm_dpYOfjtlV~8 zBL(-gS>{2U3%49)I94@&z`C#i!D2+mSb0X4+lVjiN8NJZ?NcioG!*faq)Y`6#eiSJ zpN8zIQ>wKz2P5D0n*IRxvxY!qL%AHmr{w=sz-H6aMCvUbo-1H*y2B9x2ff|v8NAw; zSjBKV5KFo2gEvxN8FC&woZVX*19Ng`2p9* zpGpmx@!|LeG5^@#HrJ4!bHVO1>vkT4bp(vtEp!{fgD5=q#e)Ybn20F?PqlNRC3s6F zC^Or*`0%)K4u$Oeddt6zjrkEs+iF%(HukagpzaZSjCMY-o$^uO5C6t8pRGO@R`hqy zgq0jVaP<7wpYZz4JpKImWiI?{&Mar>lu0bet%%xxv=d8k^!DXb--ZvZ1jmjDUEO%q z9H721zg75i(@p?1T!_5kNyC;pNPPKI!5J2AE>BGV#|7(c<7!%~!#DzD`@6^M%H{4{ zY{dGk1Ic6k(89t(OH0eqv9$3?RG2nk$>*(8#A3hE;ZJ`PzlEfOuwf zy8Logw;c6ax~J!Rs`>`;Lon<47XDHU^K=`OX>JNEVMEjOHxNcCY_ZsD#)z6#TK%;O z0{{nDVh>+X!mu&JD^S4C<(kwU$32v(;PyISWy zC(n3Ce+Zey%w%f;-hH6nM@O4%O3EjBpPtMl3J`(GpY7`K2XwS5cq_;-=2w*gWx+Y5 zov;);{nH+(456acVMh>B`vO-?0Mqkhm-Xyqu{zt?uf~LtWrl?TD?YPX7KTB)0u84r z^qoTPPSzQ+J9A9UvjI_}sq97Y2_<-MTeLudyxESkHePGilCZDA(fK2`f|WH~v7$!!EXKMUdO5x5BgY+;gCF zd+{7%aAr4XuDGMO{Q#_NM}Kejy=YZ)5b}i(L6p`}TWX2xjp^rTF zynqeFxHr@I#lq_C0Yymnp1z@|J z){2emM&@DeC{J`I7dJNpi0>PAj(%peqbQ<=yMd}vugcDORhJi*7)i5!x{!$N?`hSb zTIE|K%fB@n)>Vw=uIsm28+{DI#Hi<{r@(yy$a6zoRAlgEqU~>^ za?~UIyX3FKmyZKRznGhvHi?37b%=^k`%yQpU$+hbak#PJx7_OKIEs6=#Nem*z8HsHw7sA6&`a#GB13)yoj`Oa` zcj1OH-&rKb4`?e-bj~mDyXkml3CbDew@(=ZMRpk3%g=cr7mpoEo>N2k3uqF!_H>4Y z32}lc@4sHMRH~;Pvlek=bo>(NQ(_v_n?dhUQve78%{+IkR@vL;(W8v-QSPqumTSaQ zVKBMA3Y)a=u{%#!R)HAy7y~+Jw?`;;efw@!|t@!-d%=3^Dsh=c7fLtL(55hk{?%5WG84bY8W z_eL8|PseI$(wMtM2&aAW@hfoXRjnR8h_9_cR#0E*q1Ma|C99&As&iXO8Y@h$z;SU! zR@V6HGOy%T*o8h~#h5Ewn7#wl#U8#jK25#Yu~CliwjD^m%C}=yzX#!#bgPM|{R1?! zy|twLH2Qday;@-X5M_U2kg}J^;^sC*?*EHJNBCJ+3Y&6Q{2NZOimFMCkTpP8d5$T4 z6z{b+L5?lh zB};|W(q7Ngt6`l#}bZZ;Uocelngvdg& z&=#kAzj^BMeBB;=6y=ueD$&!Ep*A=G3ygHtDXQPy?i&jY+X}$!O9aIZuYIpvn0lC% zRn9k}w^St;Axd|f+WDY-Z=c@SOX>^Pul4d_oGS*fY11gNCs}LqO8WtB4#iY&UYs6Z z>3u2Zb>d4TCK!a+TgxZ*=HTMc2WU|;Q9e#R)IN@hho_fL{@!ecfU|io&F8F0xnE`v zN1uIWVU6t_q~D4}V8?P z9)h*znALpod3;~VKdSOx{2MCh;Suuk zXU2)WHCY&+-OBi^O5m817W-L8GttWJ+gTay>x(1s67rlT2y3QX+`+UIQQg4BpN~<7 zhQ>b3>WrzZ!heoYwe>qqOl&p@|5AGT3`e8Ib%_G(z)UNbXKu56@p#ps6C3;Zi+Rw~ z65XGbCo2|w%6c{i$Hk3LEbQzCEqIyVwmmBoN>+6nVy5KDP)h#rK~0$JNp;`xu>JAW zEGL=uQNKA-JoSCqx2V$beP6wzAqGUbUg3yM<=7fmoYG`T$hRLBnm8xB)q4^@!h&4y zQibuUu6WZpS59Ek=zfX)tp7r>L~9=<+)5qRJnJBMaBwhJmtgV3pAI4F=QlVohGIyu z71@6Tem1#`emtPm7e|#dZeAef(+XCYdy9tLJv=7ts!%$l;qUKe5*nN=WkeW>1xyRY zZTV>S-Q6G9Kq%^RYC~3j?!HZKra`$KRFyIO($`Pn}rrhaS%HVOuv1%xe!c`yFyO6zm#(rCbb9 zb=mAb*%B`j8IhBI5# zt7i11nWlT(cVrE1iWQcMo^EWNu&Mwx#0)9fqU*Wy<0Xv;4 zohMx>{jcLB2}{*aKd+tOio;9I*&u7trC#4rO;Cr!hJ*XvcBZdm{z&lYzSKj|bE}7` z=Uxx&mJmc{Mh*HZ3brpF;36cZztijATL=s5$K?Mm@VulVvE;K9xb*r56(!L(c7%l_ zDVLhp&W;`C5Bl^T<7IU$Whgx*gEEwI7ZXFp@)NBF{iQ*l9(504F)SXL*c|^Ri;%f^ zTUL`kT^;;Q_tbkl$GiX%Et?>G`rDIgt3<2*50Zx)@xo40awpvIgaax6@Oa@=rzHFL zsO=-E0d%&sG@bEsH^KV4Ce`d#hh;uDR5+mjlaoYH>pft)3+#i zCrdMJy)eJt-JEVq4?XN^37I z4PnnF40l*tKP5(AHB)B2%f!9-{IWDeRv8*?-NAZOV{yI!$L;ndk^t~*nM1We_BC3L zk_SX1e1e<8a-|$6O>yfV1@~JfADUwB|Jf#M82u>WiO97$Zd!UuXf`3ima8a#Vqsq1 z@}$T59i`+*KxU2&v;5KM$r)25Aq^4DCUiqMIgP*Qg5i;K6%-cMIm|RQOg8jyy}s&w zFI*@-GRuO&C_I=|UO8D;;O<@Z$B*A9CR*QrKiAG!46*ILu{Pfx9BfCa$&yVcsi>p` zoU;rDX6O}em|cl3E*@T3XedB?xY9kP$0Y#U7_a)aKG>xd2V*@+l?8p(*w5!)Vh6=k zxqQ4Q_zJ@J_Vyn9@Dg0VpkUvo{t!bb6be$pLr6nXdK{@FBoc{@LkP?sj9@XJi;Iho z@1|d(VXbrSOJ2%w?R;As8)Y@MqM{->(}JdHy7aWW2$Od$KOdJ{kbL7ZnL}X~5n>aR4Xy1E*C_W@HA8XCH~x>{MuUpvwH*RMOC)gJz?y*J}ro2<%m zm5X8!j8N1YMMcG?C=2lEiF0I%X|>;U8z93Vk(Iifx+M9g3}_KrdR+fp(u};kJRlB- zU5{&@cM!C)wr-}2XaEq0tgNiHkunhbr1x+VHU!)V1%>O`z{sQBA}csfm!8wNt#DT(v;7v?hrfTbmyCg=#w zpgCqwSFYvy9mVrm$BJ4ZzsR4pzRBF@@lP+Tt*qjOr6HW40d91u&}OTenu0ZjY)*S{ zns1|{wUGw7Lo3a#BlRymfRVJA>}-!`U8~7$SWjP{gz6fR^flk7KX>kTu9n!?*fKIQ;089e!AR&R8e20Kgz*E3g~G`0NbaV+r_eg$en?;A2FBA6$cw?@ zps0pFeE13iUTT;8%nx_hEc_lu5DQr_AG?Q}e+B*FYkvr$X+(TwWd(er0DN~vQ(LOFUOiL;&E0>p-qoboi-|p}4 z7o2)D;ppfH1}bPbe6iUWLjTs87{c?5(`A7Vbl6of$V4$whJSO}-}~Pq=#{B>Pc59jV8f`eHdL06E5 l2!R&^edz7~*nII+&&Lkp&VPjid@u(~K}J;?Dfz_re*oiNzgqwR literal 0 HcmV?d00001 diff --git a/docs/diagrams/AddMeetingTimeActivityDiagram.puml b/docs/diagrams/AddMeetingTimeActivityDiagram.puml new file mode 100644 index 00000000000..2c22db8a9df --- /dev/null +++ b/docs/diagrams/AddMeetingTimeActivityDiagram.puml @@ -0,0 +1,20 @@ +@startuml +skin rose +skinparam ActivityFontSize 15 +skinparam ArrowFontSize 12 +start +:User executes addmeeting command; +:AddressBookParser parses command; + +'Since the beta syntax does not support placing the condition outside the +'diamond we place it as the true branch instead. + +if () then ([valid addmeeting command string]) + :Finds Person in AddressBook to update; + :Creates updatedPerson with new meeting added; + :Set Person to updatedPerson in AddressBook; + stop +else ([else]) + :Display error message; + stop +@enduml diff --git a/docs/diagrams/AddMeetingTimeSequenceDiagram.png b/docs/diagrams/AddMeetingTimeSequenceDiagram.png new file mode 100644 index 0000000000000000000000000000000000000000..8855e3282fd3e675ad823c47a30e85ea2845cedc GIT binary patch literal 31248 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 literal 0 HcmV?d00001 diff --git a/docs/diagrams/AddMeetingTimeSequenceDiagram.puml b/docs/diagrams/AddMeetingTimeSequenceDiagram.puml new file mode 100644 index 00000000000..e46411387ba --- /dev/null +++ b/docs/diagrams/AddMeetingTimeSequenceDiagram.puml @@ -0,0 +1,64 @@ +@startuml +!include style.puml +skinparam ArrowFontStyle plain + +box Logic LOGIC_COLOR_T1 +participant ":LogicManager" as LogicManager LOGIC_COLOR +participant ":AddressBookParser" as AddressBookParser LOGIC_COLOR +participant "u:AddMeetingTime" as AddMeetingTime LOGIC_COLOR +end box + +box Model MODEL_COLOR_T1 +participant ":Model" as Model MODEL_COLOR +participant ":AddressBook" as AddressBook MODEL_COLOR +participant "updatedPerson:Person" as Person MODEL_COLOR +end box + +[-> LogicManager : execute(addmeeting ...) +activate LogicManager + +LogicManager -> AddressBookParser : parseCommand(addmeeting ...) +activate AddressBookParser + +create AddMeetingTime +AddressBookParser -> AddMeetingTime +activate AddMeetingTime + +AddMeetingTime --> AddressBookParser +deactivate AddMeetingTime + +AddressBookParser --> LogicManager : u +deactivate AddressBookParser + +LogicManager -> AddMeetingTime : execute() +activate AddMeetingTime + +AddMeetingTime -> Model : addMeeting() +activate Model + +Model -> AddressBook : addMeeting() +activate AddressBook + +create Person +AddressBook -> Person +activate Person + +Person --> AddressBook +deactivate Person + +AddressBook --> AddressBook : setPerson(personToUpdate, updatedPerson) +AddressBook --> Model +deactivate AddressBook + +Model --> AddMeetingTime +deactivate Model + + +AddMeetingTime --> LogicManager : result +deactivate AddMeetingTime +AddMeetingTime -[hidden]-> LogicManager : result +destroy AddMeetingTime + +[<--LogicManager +deactivate LogicManager +@enduml diff --git a/docs/images/cleanaddressbook.png b/docs/images/cleanaddressbook.png new file mode 100644 index 0000000000000000000000000000000000000000..7b944f6f2ba48ab369357c79db12cfcc0657f4ae GIT binary patch literal 9077 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 OK)+bnnpd83yY*l6$DD!y literal 0 HcmV?d00001