From 8012527a6e112f23e9fd891e150e7848e3b716a9 Mon Sep 17 00:00:00 2001 From: Abdul Ali Noori Date: Sat, 23 Sep 2023 03:52:46 +0330 Subject: [PATCH 01/32] Update README.md --- README.md | 198 ++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 185 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 7db80e4..1aca82a 100644 --- a/README.md +++ b/README.md @@ -1,24 +1,196 @@ -# README +![](https://img.shields.io/badge/Microverse-blueviolet) -This README would normally document whatever steps are necessary to get the -application up and running. +> # Recipe Application -Things you may want to cover: +| Project Login Page | +|---------------------------------------| +|![image](https://github.com/baqar-abbas/recipe-app-capstone/assets/111179533/8178ab57-dbb2-40ad-9bdc-c5f605fb70e7)| -* Ruby version -* System dependencies + -* Configuration + -* Database creation +# 📗 Table of Contents -* Database initialization +- [📖 About the Project](#about-project) + - [🛠 Built With](#built-with) + - [Tech Stack](#tech-stack) + - [Key Features](#key-features) +- [💻 Getting Started](#getting-started) + - [Setup](#setup) + - [Prerequisites](#prerequisites) + - [Install](#install) + - [Usage](#usage) + - [Run tests](#run-tests) +- [👥 Authors](#authors) +- [🔭 Future Features](#future-features) +- [🤝 Contributing](#contributing) +- [⭐️ Show your support](#support) +- [🙏 Acknowledgements](#acknowledgements) +- [📝 License](#license) -* How to run the test suite + -* Services (job queues, cache servers, search engines, etc.) +# 📖 [Recipe Application] -* Deployment instructions +> **[Recipe-App]** The Recipe app keeps track of all your recipes, ingredients, and inventory. It allows you to save ingredients, keep track of what you have, create recipes, and generate a shopping list based on what you have and what you are missing from a recipe. +## 🛠 Built With + +### Tech Stack + +
+ Client + +
+ +
+ Server + +
+ +
+Database + +
+ + + +### Key Features + +- **[Design the Application]** +- **[Login page and registration page]** +- **[Authentication]** +- **[Navigation menu]** +- **[General Shopping List]** +- **[Food list]** +- **[Recipes list]** +- **[Recipe details]** +- **[Public recipe list]** +- **[Unit and integration tests]** +- **[RSpec and Capybara testing]** + +| Implemented Schema's ERD | +|---------------------------------------| +|![recipe_erd_2_members](https://github.com/baqar-abbas/recipe-app-capstone/assets/111179533/2200fd17-a5f5-4b47-895d-abc5e05f132f)| + +

(back to top)

+ + + +## 💻 Getting Started + +To get a local copy up and running, follow these steps. + +### Prerequisites + +In order to run this project you need: +- [Ruby on Rails](https://rubyonrails.org/) installed and running. To get more information, read the [installation guide](https://guides.rubyonrails.org/). + +- [PostgreSQL](https://www.postgresql.org/) installed and running + +

(back to top)

+ +## + +### Setup + +Clone this repository to your desired folder: + +```sh + cd my-folder + https://github.com/baqar-abbas/recipe-app-capstone.git +``` +

(back to top)

+ +### Install + +Install this project with: + +```sh + bundle install +``` +

(back to top)

+ +### Usage + +To run the project, execute the following command: + +```sh + rails server +``` +

(back to top)

+ +### Run tests + +To run tests, run the following command: + +```sh + rspec spec +``` +

(back to top)

+ + + +## 👥 Authors + +👤 **Abdul Ali Noori** + +- GitHub: [@ab-noori](https://github.com/ab-noori) +- Twitter: [@AbdulAliNoori4](https://twitter.com/AbdulAliNoori4) +- LinkedIn: [abdulali-noori](https://www.linkedin.com/in/abdulali-noori) + +

(back to top)

+ + + +## 🔭 Future Features +- [ ] **[Inventories list]** +- [ ] **[Inventory details]** +- [ ] **[Recipe details]** +- [ ] **[Inventory shopping list]** + +

(back to top)

+ + + +## 🤝 Contributing + + Contributions, issues, and feature requests are welcome! + + Feel free to check the [issues page](https://github.com/baqar-abbas/recipe-app-capstone/issues/new). + +

(back to top)

+ + + +## ⭐️ Show your support + + If you like this project, give it a star. + +

(back to top)

+ + + +## 🙏 Acknowledgments + + First, I would like to thank Microverse and my coding partners. + +

(back to top)

+ + +## 📝 License + +This project is [MIT](./LICENSE) licensed. + +

(back to top)

-* ... From e94b1543af08d4699906e495d11b3f1a447a7dc6 Mon Sep 17 00:00:00 2001 From: Abdul Ali Noori Date: Sat, 23 Sep 2023 03:57:50 +0330 Subject: [PATCH 02/32] Update README.md --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 1aca82a..3701535 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ ![](https://img.shields.io/badge/Microverse-blueviolet) -> # Recipe Application +> # Finance Tracker | Project Login Page | |---------------------------------------| @@ -32,9 +32,9 @@ -# 📖 [Recipe Application] +# 📖 [Finance Tracker] -> **[Recipe-App]** The Recipe app keeps track of all your recipes, ingredients, and inventory. It allows you to save ingredients, keep track of what you have, create recipes, and generate a shopping list based on what you have and what you are missing from a recipe. +> **[Finance-Tracker]** The Ruby on Rails Budget-app project is aimed at creating a mobile web application that enables budget management, including user registration and login for data privacy, the introduction of new transactions linked to categories, and the display of expenditures per category. ## 🛠 Built With ### Tech Stack From ee8126cc41298140be7952ceb612937a8ecec5dd Mon Sep 17 00:00:00 2001 From: Abdul Ali Noori Date: Sat, 23 Sep 2023 04:11:22 +0330 Subject: [PATCH 03/32] Add schema ERD --- app/assets/images/erd_diagram.png | Bin 0 -> 37392 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 app/assets/images/erd_diagram.png diff --git a/app/assets/images/erd_diagram.png b/app/assets/images/erd_diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..f099512cc553045a2057ad8aef805c431ee2bd02 GIT binary patch literal 37392 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 xKZ&aFy?-9`kBt7ANB=C5|E)Ft$JGdSiwnV9a Date: Sat, 23 Sep 2023 04:13:41 +0330 Subject: [PATCH 04/32] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3701535..d380277 100644 --- a/README.md +++ b/README.md @@ -81,7 +81,7 @@ | Implemented Schema's ERD | |---------------------------------------| -|![recipe_erd_2_members](https://github.com/baqar-abbas/recipe-app-capstone/assets/111179533/2200fd17-a5f5-4b47-895d-abc5e05f132f)| +|erd_diagram|

(back to top)

From 5f4f1be5e43d22863b597634ec7e42ee94ce600e Mon Sep 17 00:00:00 2001 From: Abdul Ali Noori Date: Sat, 23 Sep 2023 04:15:10 +0330 Subject: [PATCH 05/32] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d380277..66246b0 100644 --- a/README.md +++ b/README.md @@ -81,7 +81,7 @@ | Implemented Schema's ERD | |---------------------------------------| -|erd_diagram| +|erd_diagram|

(back to top)

From bf41dbe2619ddcc23c6140e835b8775634171d7c Mon Sep 17 00:00:00 2001 From: Abdul Ali Noori Date: Sat, 23 Sep 2023 04:16:37 +0330 Subject: [PATCH 06/32] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 66246b0..cf76a8f 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ | Project Login Page | |---------------------------------------| -|![image](https://github.com/baqar-abbas/recipe-app-capstone/assets/111179533/8178ab57-dbb2-40ad-9bdc-c5f605fb70e7)| +|| @@ -81,7 +81,7 @@ | Implemented Schema's ERD | |---------------------------------------| -|erd_diagram| +|erd_diagram|

(back to top)

From af196f5d9f5c8412a8b18a2d81965bdf70d0a987 Mon Sep 17 00:00:00 2001 From: Abdul Ali Noori Date: Sat, 23 Sep 2023 12:01:57 +0330 Subject: [PATCH 07/32] Update README.md --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index cf76a8f..49c3048 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,8 @@ | Project Login Page | |---------------------------------------| -|| +|erd_diagram| +|erd_diagram| From 83bb9ab595380026c016e2e4260785e9a07eb0c5 Mon Sep 17 00:00:00 2001 From: Abdul Ali Noori Date: Sat, 23 Sep 2023 12:07:03 +0330 Subject: [PATCH 08/32] Add the project screen shot --- app/assets/images/Finance-Tracker login.PNG | Bin 0 -> 63489 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 app/assets/images/Finance-Tracker login.PNG diff --git a/app/assets/images/Finance-Tracker login.PNG b/app/assets/images/Finance-Tracker login.PNG new file mode 100644 index 0000000000000000000000000000000000000000..db5f27ae47c6931fcd9a9341d6a77b0de98108c0 GIT binary patch literal 63489 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

f3Tq z9ONsH3Eg!#A-Mkn2}3%xX@L*gcDFth6Y2D%6bxcobs_g(fU~O8>6ZcyO{s&q$fD@s zBBRM>U02Y~r8ov9(3wzM2cLAme(IQ1ST|EP*f8C>hYgGDA6-mAXoY427ML!|=+@<+ zRPO}_p!Svm#i{-8jd=zowBla<_a(HJ4l>M4zBw0#YL&xlN8bsO%1r6|Zr(zQ3YML(&m?fkj4IKIM3kJwN{?(N;JmHQ$#T`c3 zRhA*j!!0CbewqtHz3=99W1`uu%hFXt>57+#QX`k957L+ht;Afyef3&CleKtP`e68Q zok<8DDu$(JjPN|zDyiv*s%A}aoUI=m;@Oe_VGYIOzoBQDE!BXPo6fHF z+;j$E*Kmp}8JJ!@O-b_b4Vm&QsV2}MGOSBG4ddTYpu4y-nBWoienRk4+^Yzmu=f~P z=d@M1dxhXOE##2|@WBza@A0qMJ6^SPJm4ZV1$nRUxxu>|k$aZN2Qzcc>JRO%|Cwtc z^_^d#+3U{y^9x3qCaq*py6Lm0P1yHrAUXutqy~Hsq0SV~31kiUswHQW1$EG|pn7nN0VAqu!RBX&s)^Fql^dO~_!7PxFsyle z5~-M7SHy?)ym!nd0qKalskN*=#3M&(8vT~Ny>W)#`lv39^cwRspfE3qHhD7^6QO#* z@jmWbd5}~GJNGG0P?yv+O}$wh+s|S3q|})C28Is`PG0>BOJ#qDaVdZ_5tDc@=)k<5?p+@rpbz$Tl-`3Z_5dvI*i7BzIA!0M2@gz zy=reEZqt69=sToG)qw{92j__pC)OBaiLmTg&Ck(U+)slsMR0k6q_nG8DhKP%e9 zxC9I&{Z+!vw0DA1iq~WPYv-ahmOdGdnc_#e-VSF!{rT2-_Dx?XVzzSSzea&g=U6EpWd1Q>;M7rvIkzV4fcDYJgr^Agk|p z>kQJPU(;rJ{nWwrA1FNj(A$aT1;f0wD{f0_h;0C5h$XI_z4jy9wLLsM9TDXk2s-y#d=`P0N3VAHru-b z@;0C1$#GAQ8|$<1+s_QA4Ga4<^xX+s=r+HJ8BR(k87-(wYvijEUs%Ls)d`37Mi zn;H`Ug;yvy!l_bcT_0XtNxwE0-?tmlv;h^@Z%PFR7BQy!%uuYT0b83;F)XZU!E(Xo zv-Mv>O*f<{sD=`9oe9A6%UnxgHBbsD?+p+t&7du;S5_*437a>>?$|{lDLmvIM=QKP zQ|w=2gXj3*Rt7v9k7Nn!E`b^qb~GlD!Jj{`mbJ0wq@C{Nh$F__-2G>oLmcXneI0!Af?eeh+)BSiGPFyQbwFj-VX}67mOhe zm)@ExVJ9AjUFPN1)+Q!Bjf=kOqtT^J3-h5hLFV{kRQY#UNp?fEU--(tDPlCf?!}82 zOQ4%UT7*sRb<1!rx5=ND5ym~>YU#TNVPStx~42EYN@9U+U8Aw~CxlK|Q z)UgdAq=y=MdSkP@olKmk^Wr0A3wQ;yDIech-}8?$3lZo9JR49xfXGn^hw| zQH#0XV9|lRJRnl0>|Yot}CYo;b7GJY}dJ5dF& z{8)T8r7}rp*kpRQZN$BLwN;mIj^N>M`azgJ;`X(5&&>Q4g7wykX4XQv{LJ=)lA?(x z3{Du>yZsJpNBpf%zP6u_-gNgo!HiI#rBxTp?6;gU8fnvaLk=19cU>)f&(ZkOxtwHN3O*J`Edh^#}Q5wq7 zf0k+b{aK4BNmdKY(p#!(V>Fr&vHFEJDbXAnLo1M4LJp;afWb)^CV>=XO%4)xB5_;< z%$D6m8zV@Du>&Sk;schGGVb6IgO?f>Tc{&D7aolsX*j4X>oZE=Sn~0MoD8DaTYBxS z66Gt)&WnwsUPcsgp6;u|=7P>o<=$xs*XvUpluz>5#F`DvCEI5;c{mrKBvGT}(@>iP z_g(Jl`6DtHPnyT0;XVlQ*nG9SNIrr*<|D;(bH}7?Ap5$ID1Hix_ zUw{z)HL(02T`UZecP?vwZz#&mj~$NQ@^CN-3D)w#cTrz5SEI9XK_ z<<^;v{JN>mn8Lgok(PZ$vbXf|y?#y^^?>@*gt+2R)1g! zN}-98W-us9{7;H<%dVguw41*xq1eK1Yd%Q4gQc>&4PU{U`G{Z_ptRHPl1si#i<=Rw z?;id5guVRJP7-S=rd8I`{I(jbN>Xchs z5<3wrNZcXu+S7l#c4368vnH$E&Es+`#jvim(?&UnJDOyZqn}>>N!o68NAN8lgY6I4 zs>+9Oz2hq$O9yJmmbTVsxI4CtLhB+Nnkb|h7P}G{HW$FLzkSwZ^?>3FBll=e{Mgy! zZdG~V9>9wUANx2iX3IY*9A{iCI+cvW>lY&Pk1cD*=eG}&yYT${EB7WA5p_Zj<3=8` z7SxjO=Nl9Z72YaoocdXtCQmtH;VU@lkCz=jDXe5zd+Y*S^L^j<9qPFPP^%(R&P)i!WRicgVQjt=jwlA=0K7xsR35*do6-EIuU zO*~kPD{Qh0XO@a?I6K)K*zJ+maTOa*yf0C|RsV zoG?%Wd)WUit}}B#$RcAXh;1{x^e{(%61E!5T+>tLXDfxVkPeHhZ%oJ*NLKsFb1nN_ zsvossLHZrWbs*-_)4p1n787D|Y5G;&6{ z?(olmed*B$zu=vP4_W>0SMzMv{Y=cz*ovkFBo&y?Q-a%NxW5SK!U^CQijP(PNb}G2-E(eusz_Yz;ALiNcazse}3%ksZ zLOb(@Rxx=!36i?D^n?{pO_EL;2{j4CD9lYfj=CC?LH6-msxm(|6}eD_f20~Se!GM z*_Jj+DQ7vjiS#q!KaG}?nr=1$?1YD{@=IN7_oVPhihF3kKHj!4l}beNIpF%wOWdx| zj#a5GcbgK}mk4O@h*y?~uq(%r2>Jv$5=F5SYz`W|pkvcx)@g2UjphxWOs8^Z=)VmR zek2H)Step>`VUboi(?7wZMn2j7J^IJ;*9WN`!ts9df%E*XB{kfh2jxDFmvVu=&L%N z!qonS%U%BjBd)!84R%hvwnhY6wEzwmU`f9TSFMdsh+xki7BtzpHZC*;zf0czW306g zPP}otYP6>-rWwnRL%k7Hk4a4nU?t%2lXMvIPO1bYamGizCuUW;d-Qm9N^oF|fH}d{*4L0Y$N9plY$_KpV{C{tG-Nc$OZHWUZ8nic|(N4sVf2aHxA2ouIS?=$D ze+A7r=f&$&dh7B-3ky@Ft~YidHMakk8ZB8!QFO@ncd&>4c{rx2?B&^`x9peu!30jg zsqPNV~4#>d;n}EO0^%G_&rDf^G3I`r{f5%G{%fk3H z&kf>tK~$b-xLJlZPSuFq<{#=jG{kaUQt=*KRSuyG#t3rI&s}~Qcz@v%(NW4tQNE>G z!S%MCaS5{6^sN3HY04KM5Y1=@Dg~kqUv^OvV+)Wc7%&aW!N)Lfx z!K)bJO=sOEr?AU*R3zW!*?0fqQM*#9SD-5fUdR+z6l9*&v;h419_4;G(7?+~^$FNW zM)Ea^ApwqO;6rTxeMlS|eSeRZO8brhhQkW|{yC+`)S7E6yQ)4>55crlkf5vo3a2N5 z6{Upo@@tzU*V%mhLcc~5(d0aOKA0KI!Tz+sBsUU*jg=rOyOq)hZgJ}Tt3)~8%L6uHH6RFh8APzjewx9UPCC%j%(jLk(HEOgfizTv7;P8(&G}#T%ZKBb%R8XwlMc=+?{zI%R}L&4%4u?g#V9dm`3&Y4ogROv2*tJRDFGY+&5YYN^c%b2Ko zhpw)^r@@mM_F}cm+L{BGz|KL~SH6e*X8U;f$|Z_jm_(i`7$a(`WJ9B>{Sat%d6{Ny z=-V#`ZEuo!+6XeHwI}r=VVA*iH~_TX%o}x3LF9oW`GsBZCOZJ!-<~D0li>%GzmW}N zWwCh8t4wg?XQY4SRGWakv!i+}i#6h7fmr_UQ?*TTBoWE??nYtBJu+z43}iYTc7psE zC0AwlfdBQsjlZ&gH6>LQEGl;{k?nw%Y=?TQKol$5{+LiQ3tDlbdZJ)+F{|Vgq z3Odaz9w4c)1c$T!jUEwfUGx{nzaIa8mjsl81|Klaf^9#rzxE^WbY=fa8!S?|pWI{0 zH2n&cRO%c=_d964X`{M>Wil>-%kBT$FlY=NsQwr*BLGy^_qjMOjy?bN(l<$vu^@R- zUz@JsV4iLFfZLG*duqT*s`q?dKnFFL z1%ugkvc4NJWhKAdyMnF><>b9H6fCP+09*VL1Okf1C74-p7Y3eR$`jS1NV!Ge4x>OD z*Q0^S?*aoFmW~qLNyJ163&RHiO=P~M3!cORd+SSsGIt93KbtEA)tmCg-0PnqZNo$r zI8Z(2m!h3_6y!L`1t)R;%0vb-1)M0}|7$h=RKTkI=r>gY+YAZ0ag#ScmzK)K4lB=2JvyK2|}=M!N!z(FjL(d?!;S}Idw4h79qDaL`|_0f9n z9(F_AA0%b4i}))Zvk_9n-(&kfzZWfmwIi~|i#d6{L~q z{lxd_ieR^ClZ>m7Qd+6I< zf;?D<+b==p8_rY?r#^bb=+^xa)3or3`5mYy2% zRWcsY$eR_#UxBcHh$kYP_r&5y@pqy`V$o=mSOFSXnJ1K>u{Q-(vzUSj`bb$>8Q`Vg z+5_>EG;0{~8TokK@fpqy96htZ=j7IlZoT!6wmL#XjbG2x7`Pgiy=*Er-k*nl-W6^T z&*nRmJaVuK=Fjygm^s+I^bs1(Fn1YbCi%Y;JYooHNP>d`L;_UWpb9i^7L_)SE1Md` zzL_cw?=_|hEt_muR3M+5+-S3Dk?dJX$k+5@hLt+e+Lji0vAw?g!0D}cM$TLPyMeDX ze`f`;u+F^)wcn2fu+7|dpW_>e=^QYt*VyC=qbZ2=d$S`|h(XhntC&5I*5j(*3#_Wd zA7{xIxt6FPUx$vF>x`Vvhu$Skh^&cSS={g}@x4SUlT@zYo~QHHBBq%F+AeOvhn?UE zx&jgcxc7EIDpm?6uPFwffP4KUH7x<7pnl+=vf4&~<7S07>X$BiNx2vL%YM0082)R7=eJX2kts1qUhRgZBmA`Mx8);1RE5KIEa|Ur zhL9*RVOzS^daA^B%qe~Qq^eTd*4MfxZrO&G9}egrUu-Avv&lK_7?LQ@5BTKdo}<6? zv`Ju7t@Y!*fu}>mxs+{6%vs?|OmSr~v)vzd%3@-zgd%#wl|PXQ-S7Cw;dnsdG=z87 zx*Ovf)ovZaHU04?Z_lUZ27Al6)r-bm6SiybUBx8Zip!$7T>UpgJ3n%4mIWDj=XjR~Sdmu%tQz7I=RP}e@w=8O?x7LRxCjw*!W2vB(KTy^d}JJ5_j{%N zsk*0lj52P8E=F4h_6I(vc;x80@s=VnZC_wLt<8(cQO3V*N-Qm@&t1I&IC`Px;9*0S z_@PUUF(plAGm6rAF=tT3QKaL>GH5+Byp7XGhEN=PDL4C@Ce+Y+y9H+JRJ8-B<6KS-&f z31YP054si2b7#?Mai+Ko=7O%_505Ho=coD&QIJb~;z8_UVj>Ag z*9jS=VoN0bq@8CH!_;LPuCgM>%(ltJhPyrdR^`<#iPL5pV-)e1hZo+kE3>JNnMba& z|6Ci$&Lcm;u+DW;;|WDn#Lyz`7XnsM9Ag`BzcHmgmSBVfohNsbC9)fyVi zMTaF8d$ z5U3V8cK3BRFIVK4>G-2aTT{uzq4)K(`;OUWLlKwwW@tCfoFd!(k1nnYFOTbWR`dU0 zOt|~H>}cpTS$bIoLx;?q@v>W6Sbgm0;GI_X*jmcVmMnW;q^G`5$Z4qfrh&!Dx#u?i zkzBAuhG4RrYeYA{xgPeW%$KHmxz{cS#J^I|_nTtZ=o#dlUDT-O59zfk3k{}REN!f!54p>w zSm&IF59AXLX=~zt_ekB<*H--7Owj;^MZ%(ta)Oex+dQe*t0@LDQ~mo{hNFxQm+9>` zb074!Sm7ijUVGz9c78FmU#$8OGkQL%nM1- z;<4KCU)?WXr!RkLz~zVE_(eP07pjuHShV$ceQ^8W`uky0v2JVta`+-RM~Omk*z-7O zZh#IU9hr@#Q5I9kgPZ7$(CUecKE>sxvtHUfB=aq&I z&4!!hXKDQ`tK*C!$4rF1RzFdRAJMwwKC5@jiQe&JpPX{aJCdJ;mTl)n8}~YSFB9~c zv6-E|lAMAB->T8;L8;V~0*#bhkml0>Zb&TIYA$1KT3=;rfrP&_QYDrk3+K#6mc{uPz%e0F?O}uoRQ_R$(gCieD`~WsI?PU2H&|i?9*!;|^XHjXq z$g4$y@G1?GxKsaLlav}<6Ppn|xV2CRtC0@cP_8JW1ljq#7%!z1*Bi<)5Z-#mH)*azVR?VZRrILRx2Duj0|E`4+5%@tb?KfN+t`PccsOZfxC6IjB$0S`qohY)$aGEdah~>qP$ANs#*P}R}uoN+0yWn>N0#4d>6apo!C=NV4B(EI*z!)8~tOmplh zscNS?QJRZlbPPTic#9|64ty)y7ndF zr}0irskmG)Lwyd4JZL`u6vvcRukKu9{-UFdNg zRk}LBB%W49+9We0{2$&n}Tj&Zjh!6#I!af>y_=W)42ZkaW+JPATf~*u>M3tw$DD1kDQPT4F%M;bsems#^*n zc!+lmT5Dyy(rRDScBbshvAD0!#yjl>l z{O(tY;5{w{Iquv=+9kHB=+C*9kk3q-i?$!%^D}x4f|xgTT!nO#jNXiR88RfI5yXr3fc6cXbLOPitV0ss%d+Yj4 zJFml`7*qE2cZS~uUOOs z3;1$O2qou5_jE@UU3j-M1FyasPJzf&;`5jU;Q}To*sHnc~UbP5^t}bBeqc9fCXma~wP^tEv#AH!Z4kFeCbpU3{^uq}Bg#4|xE^;gVLL!8*k1C{n{7eE+MA*!L= zY=QWz543^u;S%|b)ZXWxV41WpR}HpbRpVwuG1?FJIJzYap--48sA?d9|nfgJV?!c5j3BEy*WH4Gb$pRnk!#poz z2KrUYN{}DL72bX*wUb!jl`){D^}_(b`_)c?xz5dY9-Cd{BTQN$8)O!q(k4Iu&F03G zft%&c+0y1JwUifl$)C$cIEJU>Er@Q@W#}3sD+9O$7ibd-Jg|m^2ws&r&tUobTH?yU zAJzGATS!NS%>`HVP=?eWRpetxP3d{Rcl};QT*YYB2a->QarPH%akseHilqaG>gyNK zFp>_-2vw(VD5H>w$AD3$GJqGzt1&$Ft32a6A^HKxwx5B_0IZbid=5D@jrXc__mAY~W$K)L%?I*_pz6ftspe{-CO*&Dn{x5?2%Kag#M%V^o8#zStgqev`s~tbSxPR@0I8X4CN;>q;y%{51 z*`-gLoPcyhTH-`De4(i+4YJ4n9K+O*a!Kw(iwx^PT)gX-zWC_5Wv zV@>O+yj-t(sQmh#a_90dzR8HAX%yE7X%e54mUfpk%G1UeS*|*M#~Z|X5TalAzZZVU z<)-12cd)FXvVx%d(J3fyHfh#kyzPzk!Jq_XHI46Q$TsWJwsRIi;~**? zmjjnR@>0wS2Nl!~pCRiqT;fV8E*X(`*VNHnj%`vu=(SbfD09`D+A^bm(zo8aFf{k) z(hx}y+y=cSH5Z(73cKYWph=_{ptYIW$p_(S_z#Nr|L@UC9G(UW;vT6k;G3B|~x!GURJ-Yl=hd-bYUJUPtd znA;#LM2HicdNQ}LHgH|X_xJJ8!l{iw!ql_J_Uz?J)@7~%x5u1cSk;E$7a{*g&Cv@I zl*OuKY+Q;H`d3fY0>BMP@^R^+>>aHMEEQ?f=Ky3&7HUrcHv~Yp(`(8 z_gp6J{4>Pt+2_;;q^ilc05ph{(Ty`L7H)qRajW1^x5y!BVwk-rpIK)1l~}PDsTUN> z$$FLxCJbK)og&HbtE1R3UAx&Z#ZDbbr?Y%DG%HSZHH<3L=(#$sOyMJvU4upk;_j>f z91b%_|L-co0cSr$&3O)Jvd*!SC{DJ;hws5Ly1d_{k!vVVH$U>=^6-+nKqK!}@%AT9 ze^dQD9p5J^5WjQaAf{*FO-4VT8V z#mu|!@hab)U-$#gFZAJ|%+Se=(uYeO84EuP9oLNpN-YyJ3>}`ZY9edSJwwvh&+P<+ z@@;8Q&hg~SE=Ssv831O3Cl#FpWDmV9WrWIjlI(@0Y|t5>em2~Rm>}Pv9C$w%XWqtG2D&oFPin9* z_k5xqg?|GauPxIIp^UZRE=o|-eod%}cAotUQyK=VJ76nNqnp=DA;7Q*dMMkbm4d#gr@i(l~DI(I9y-o#MLi zHzQof6s2(auWZx^%h9=BtfGDXcnfdDySDopzEZ}Htq9h$0y$wBIH;+@jIMR0Sg0 z8Z$Z;#NzpiIe0(eCKQ-8n{amZ-b`k_1DeE(6E_b3?5++XwRxP|a7&2bZ=BC5m|+~z zHQ-$MOTX3FDe>$ezkBn_Ug6U7osuJ@Vhp#t4GlCasDBpPDd@d+v?s@;kwqb3V^~i5 zJbrQ~`cF7V55nQXWy~xLhGlmU~0Q-;Th^{%h-$Z`_oPc3)`J( zF<`ikn6`e$@-7pAZKnkVBP|O3f!SCVI+BPl6Sa0l;>7eDQ()D?v5ZdG77Z3bLND|D z#jc(-_d=gz-X`RN4mh^3fe|jn*uMC=xEZ-~T!hC_SVn>Fca!Tw5ps+@FnCRf?xyS@ z{~(%=prjO{T$t^Ut+NC2O{fK5}x5;EyudI$kg#pFF+HWj~vP%C5D>sif4mgvi`Ed*%bK5klXW9 zV5)WSa)=j8B2I^X$~^z|j}NqZNCOQI!O zuiKx1&Ol^K3YX4xo_n4Hn6^(SLfjm(*DrPQSR#DLmEgnd6ev_9vlpzr?ECU6BeiK(LEI;NYQgq90=*3cf-!dd`7B* zsqDYsTnB6Lc!O}D6Fe9b>i>MbI(e~Ex?_P?%xDnIPJE3x?svfQ4aG99Q@;&H;wij2 z#)2Xr0@Q5^UAhQkDT*ZSk019XL(oGkPv}Soli8V?5=0qgq@oQza+?kvk6-*EuI zU@l8W(ZnjBQdB`*>$3Nf9A~Hgqz|Q>dHlWmCnSidOohxi_spjD% zMSRPNm2Rv}*2Du#T%wl!d+N8(kOJn=f3F}1Frag9MzBoQ)Ra;9*kn5N4E{B;#l6B# z0wm`^B9<>}ay2yPN<8#18UG>D%n%3k1-9ZUq>R_$O$KK`xyh!Ypoy*G$R`s+<9L;! z<(8yU9cVtV+ET9*`Lmw?TrHG>&;w_QYmp8V#Ojrsop1R&?iF}DH?(i}AhIFU=9)rq zrB?r0bXRYmfe5K042B(`JEjw{_3LweT|eHO)yAcib{c+TmA?`S{mX}eY$$fdO<5}@ zBdbpDKU;3*HX8_nD0^rHpvj7sU)7|sq?-5Wh7p@!=O0oykxMmidke(gA>z(zl>D>Z zZ9{Bx9=>Bu@@lya=a;^Orj1i5do+x={Id;0@77_J?XxTU!yo= zY>nE)?`3CFM5Kf>Di@;fq7h*}IvBGsK=lX#OLUQKj&NM*;ON2xDP@C4&KB_zAT=R6 z4HdG;>l7O9fyx9Fox|r2R|GWo%E%zAFm0QBU_lDd0$lbpYD$nZ1qinqYM312>5zBM z{O_M?kPgn{%|cpytWm_H z25uX0uPl%Vpbzck1uSEU?J#`~l9I2)OC!i0;5TMChIHon&s5re$6>3Oa3kT#=WXCc zFdz^BT+bAR0Td58BHuND(JvkNin43%5iHXGyEjpU*Wm?x!WgFmVGxPs@0Ydlf!c^d z@;nQX%t(1V^WLiRNf`*{+8G5+uWoPbC4j+a7^CoC4a zZT`JdXj^?{mPF=yjR6hpL~s$Zq*>)eKb#dHMC%GSHL}Xbo*D!=&CtWss{a(SAn5hU zVe>v^_}aB*N!;@PtU`Dn`3N_F8G0z=Vhn8I4J!!SLs%v?d@Iv*vCl^`hUe&G|6aB& z0@ML|`{6_T%bDNr#jKS|$)dFED`!-Q`-QoURLlro-(@Cbng8#Fiz1@Q^`d8ItArf> z3W!?QPsT6yyqg^f056`^8KSy=lUlAJ@HB_|iDB3%$v7Q|abzQxVwiunFzZ<2MnNhA zt_MUki*!c>A|m^DIl@Wn0OZzLq6_4M=_@gAed-*Bh-AyCYH*m&(mm z{9x1fgOdL22*YtUkOo9h8@ola$m#j_pVKcW74lKljs~Lqcnn0>_c?kB1s|0A$dNl$ z$4Or~?Y>J#;r!^h#8$0$R{if81Myp`db|9?tJ$vEI}d|mcWAS@9xjcr!{_VBsKXi! z9=`#LH2BNEs{;7E=x5E$^Ovwy^#H!^r9s~=9Ip?4H}m$j><P%13>$7E~|M$mXpsT)_#t$FSZgG_kLZf+P{IyeB`k# zkLs8$vmRoxP3lzg|l)aKml!bcsXqH8PX*PRdbtHLgENnZ;_ zOpxbj;$AwvxbjzW*<9fsiAZ@mj3%0R+R!mOxVp7_wDzw;5xJ$KNc&B!7 zA!pHXtx;|BlGwMDtBEdB=`4@lKiqWR^oSJ8CrD(x8*6zj&%`xQ=~m#Xj#h~kzU|Ji zMlm|M*tHlxsa5iEb08>Qj{%cDbtIq0j++f2svJDC=)O&f7sB-XStH-SGpiz}(j|Zy z|13*r9RY$325dl|iD1giDdr)w6_w1lYs(QR`Eb3CH=n5%-(vJDmYn7m%7?pRs>OGc zUDb~ZHY^~3Yd1y^^f0CsTs9;@X&6ma-ouPn1Pm23Nz%w zpsC-tvZxk{HmHc9@3k_K@YoM0Syan=_^|XH^FjZ)-a$W7A!emGCgH4R34hGSTO~gq z2w4AJ2+5E-gdF$Nf$8^V z%CnbqyW2)t!t={&_wS9X8Tlhi=^j>JKlR9F^44HJe9!h`>c<9HZXas2{dd#CqbWd6 z=p0C0+-i^oG+45{W1=>~<}%T+KD}r+oH&^@`HjqDi`A+0w?^he({-1mk_`2z$4;e2 z95&ipBOsT!ND`DPeFG0(0hE~97#EbWog=59j(D9#pg-tZ6$n)b85PTeDNVkobG4B{deco-(4#`q>tjV^gCj&dqW}1xq|)ZcF~iH0 z*u5ssxH5nO_IqPxvS`wBO@DX6Z|xI`xp0x@iNQuNjrZmI`<+WscgML5 zJ|>5Rb*}C6Wn}60N$sc&l$svpdp)g2V)}I&TX4)w#NPJFt=_$(QDf6k@Jzc#Vrl6~5NQNQ4>8%# z|8KG{aU0M9NaE%*kPezbO+0|`2lz~;)6Z-__E_XU8?hMcs*1bkm#On0Xl}(&mA=cv zKN6ofRa?d8FH*zO$D^%kCv_m`lr|_`WX8W|%s1=t^r^tn+h4p+YRpVJ(Cy4VnB7yb zbJ^QxzOxrQtBN(CO(5S|RIaEk@L2viF%l9wQyhcJRLho&|5`*^lE1tfU^?-TXLR{a z=+Vp4>wqxl$O0664=Dk;MC|>Jf4D=&>WU;(|0MfACO$RY)RqB%#0An|jwrB|uE*5V zNf5$QawoSerW*L$d4t$>f)aS7{Gts+nP1&HX{?#o;KVq^ENi7LCRkNGE>kJhdv9`A za)OGgjAnaWkELshtmf{Z!vamPBR67>tb^={^PrR4Ev68_#Sh@vQRy#Hb?y{r_%l-1 z!D5>XGO+|NrXqD0McR3Kqp9*3^`-f*g8o7*?tEh}Tn4!?cd@79-du}JnCvTj9CVUS zTc2$h!x+_@^Aw{oS<3Mp|Ndw!-HkT=?PzT!vz};;#n>}(^LsC~b%#4$785u<_LJ!O zPgqey`N8AprVpU$y_pQzWB*Hy{wW(x$Tz%MJfM9Y&<3RPCKc&Dgud#G`)Et;Z236n zEa#CZBON;dKiBZGH_eY38hj?%69O&2(`v`s^Dt1`^q07^*y!c;R8e~kN|cYTY7Z5k z0sg->fnt&ShVqXhG95cgx@ZR1VD^%7JSYwY|0#c<4u)!bv1X*iF77&^0<&<>*OvkV z2|oz%p{s_QZ4O$HpSB8jZL6fZLTl#BN9ZTYKS-mT_utf0me5FS!C=_-{dV&6&4ndw zEPgxbo3_JYJzQ+R<~diI*9*eL<>MB2)ZJ}ww2U_yuHFd@#0TnHm|f+5SQQSMPU^`c zy0qVSp!*^ZM$|y16G4>oPcN3Q9s9`j5Sy*qMbm?=QeVPjwCrX46y(M-uD5B}MAkzj zQ|D$HLbV*F`Yk~j^hnuTewfUU#^9kr{)oh7{?g^Du+hY7)s29Rzs$LG$LxN2r)Y+> zbe-!}*Exmzb9OedHeAfSB>@AiCc`Fp^%!85$ z>@@t!)?208*I{IWvng-2E>669uyxS-?S+F=WGcb0;oWUTw#8eHZ6%Aza9TVL`o$yG zyOb2K{90B*N`Gkbdo^}Zjg>(GeDG^X%L3xng3^7Nz_qBzpnwf&zmI-d^hPEE;6 z=){6sXG{53gAoQG4l$#@-J7{apz}804xYVYu;HGO>w>E6axoz&*pq~nd@<_kR30-{ zUOB=e{UWo!vQUhN!y%~n$_`(cq~cQHGjGinec8c2+tfsZ*Q7qN!Wb`1&ZunSU|@=t zt(&Z}K;x?2>J{#7HgQ&WXdUHoNS(RAYN&`R&TIF#L~2IHooCb+1F?|4suPpHf5aOo zWRQswgMy76aEwvd*WH^DI1(jcdv5ISUnv_ADf8p~xAnraq z^!5v7Lw;=ewB_ukdd-ci<)0V$7-;O0-e${*8Ypb1Kh$#RbG?=QS5q!K&#-=;Ayd(| z^;}w?Y@K38Ze#(yoLI{ReLRL7vlEOLbj4Mj20vOb${JBKpv&ifx|j^o+xz&)JIifh z-hQM8O7x16a9jVWwq7$8YsBnkL4Q+!=!#H2JxAtV#W69deNgCe9eTsQ3ts2TE8Q z&D@9o|75){P3P6HEk~bc@Dr^4AIdO7&yPG`hU-&32znDC5^)bGK2D1?$jotZ+ZPqj z=?$m3nU!h3VdQw*z4m&&&AEGf`^)`4v5Jl`Z(jD>85i#3b9620c?s5~UXYg^R~7kc zW5?K+0V>15Ev1m`2CZt7iL)?g=Ks<5Fj)^}*vLfWc=)j=F)g3>K7C8&DWSj7q3EQ4 zZ;A4?@_NXW)NNNmvfMV&hmu3T&i6=(6~my2?uMrfs)L#~_wTdXKB#=5zwMrOF}1cO zH^YDuWIbL&n*+&UcuElTJw!_87_NSr&(-(`1CwKacslf^A?|}4Y9XUS8h*=4^SqQCVu;obForcHo#d0_U=h+3wfm1iFLso13@rlT!|R{< zPejWEZJ?hm0qNMP&=$t5h3{w?;ZC^iy}6CITBN=Zkg(Y)#+NKWB@d9 z4w0t+(W?Fk+TRResoX;Juhh6Ul!ppxfBC#X45KPf*d=lIINP%}Kkjh1QBbgnxP5cBa;ofm7~OzDBS#h2y;&r<`b^bnznr9?9JRjJt%67@t*6r#P^)CH{m1QtkzgagoxEim&sQ>*H^snSjG;*_T zUtx29T`hfUl;LKwqM}CDyOV;WsW!pvfG4py7V~*=+p_9ox zmOr|*Oa@-Yl*ko4`*F6Xt+j^wv6yOATzBfGzH{5~sY)n%z%p^vk(q3cQ-)cVYWID= zUJhie5Pl7+7b4j!1cs*I1^;8d;K{e%9lLPeC*zADPY0<;U>KrvbTxewsyzG1{~`Lv zYay1m%d;=UZ@inb=v^{)shNo-Q;E%3W*i&J+;68t-S1z!{?z(H9EcMw%!1x2)gqzD z;X<~_V!wGP7uXtWH5Kp1*a;;4DXosAG0ejm$xX&1y*d1VHG z@n2nr-~MuEtX0Bhw;>w;4WfYk?<0Z6Cfz;X>jY>h1Gvv!X--Vy^8<%DeC5-rGS@w_ z8XhUJ{J4=w_j3X)JI1r3>rV?;LqaRPC8ahft19*}v&HkAcXUv#$>%r=GCxaZk2-36 znY7#zyxKo)OEOb$?dPLyQEx%{u*Rc`{(D-9&+?&$2jEK_{hy(9?P&Fd!?%wom_SoH zcRrwaru6dTy?sgSrS=jX{)~pRY+ID}@X@^(b z&5l0N=?5+Ay!m7mKyAIeOknZceWDI42ZWs~?qC#<4x-}34&@`QsfZ1H`^H(XOK`AI z!5D(*m%?ZJO`TSMOLHzGU2@^7OnzOIt{;2q`aTj%Q(Tz{?!Hgp= zICd?dr8WkNtN{uUBoreyBfw2aKEi?=IN^Bxch4^zQ-e?|()c7r5V9<&_&RF`oUKEj zm^tVjM9a@Wg;C*p`B5!5X|w=tjMcQcAmEn4V)9|x5_wu{&CK0`wAIfF_ieiBRZ~p$ zDvqPhFpZ#(NjNkWydM+^lKj1V?kP%vN|g!?sKd!(rH<4RpE^E5F*T(x%mO*|2lV>q z@ifBEYnV9LkDWZt$)F+%IwjzZ0Bm!!SsEJ!-F93mxpk_}AId|FiSwh7F~b z_sG(wV;Wyz1zMgo(4u0W@)XhTgdBGmw%>i&ZCO2hH_9b(_iV1M>baoHD_Jt08I*kNvGhEn(kDMeQ0J!pfe4W_4doD7C$0&WxBh4`N?Nb8} zt%ynQHn*1_l=V`Ivtuh>Z`clI?wdXP7-Nfb&aoB|9F7)#5{=Q!`Y7Etd^Ti4K`hC z{S+8z#Rn4ZG9kV8AQy7Vj^Whd#AXH*TKv~hXJON^tYC;Flm2f(lY#{s~fO|ABUX_7MBiK#Hh- z2$D9@vPl2DSB147(Im}oGj{JT4p0=-h%9CiS4bSJR*YNR<9Bn{YjSbYEq{a+T?o)h z8#ds2=!2H+ed#c=haNz^9#HO0|!$t=WY=%M#nT~;lT*`D8nQ*-om`0c^7~qq? zE^K}B&>13!+I%P%{AchNkDY~~Usy&FktYeA6quRFSNyKd(k9UQ(}2j?rlq-?*_=C< zjf-u53Kj*VzT{JmN`rLSqHV{u`^k(My6;2xtX0JefiIKgvTf5}i>yxZlJe)5*$R|* z$~5#Wvt&}At$H`y!aJ0qH(|Ho@CdnHUhCxb14>1`#rfHhvvmmnMr(;P1`k~F0F2o{ zECe{-eiulsvi?4F!wpe0{~%K{MCa`;@FksWpZENS`Wo5S6#K3wm2sJCA>aYj2B{=D zat<1i$`MKxPd7_$R`m+5R6`|kV_fuSX9v4{&&o`~aJJ{iu>HreJ)dTO6bDZp<+eFr z)^UF&{p-3|j0o(Ro~ zQiY%Fl+(oV`YC)}K3IzRz#jVd&acN7KkFM>Gt2wJzF^tep1y^KKfC)r9RMBt{{3{2GT|$zGP6 z@oR=jqT>+{@sp)f!2IR)a{Tiea3szjzyvnRN%m^-eR=LpIC?+geWu7ggwKFRr3czK z?o+FDYRhaV$X*C&o))Om6yuR+9~8gU5VPsxl;_d0y=*-)xn$F0#0SdTOuu4WVhjVO zO#T(2$`VzyCoi^M(_dv-Qb9#f04QuSXM&&?m7+=x0P7#$fP|!q3DqpAQzpbzqGsf z+bXJg{uh+biHQcXkvmjF_v{CT-}gCHR*(?DgzcTe1C0%{g943puNh)nNM1gWAQa@J7GNA+ml4cRFNy;EWupBEm8rN|SDOO9=uU;ug zG$N~VtL37U6O9$Ta;Ivv1Z}}UzxrLadunv*{@h$^B6Z)(?q9DR(pyfM-;XMm^1VA4 z=6RFJHSQLZYb=wdcVBBtao}%(AY~1nr{Yoi3u?cGv$SF*!n8}LM5fCQ+P$e1r$6-y zI0F3Suk*k5$Afn{YhIuQ06HJ$V@mhc`rMPCj zPG`2@#60Xn7`p)aZ2~CF#7xNqg=9(yFAv5eC(AxvXvkYh)57JcyVQU0q4$%g$~^33l%g!* ze7MAC-qG%@xM}UcOA5>x{))ZfMLtComw9fIt7?s^M!qRk%h3wd-SJF)+`hqsn1ike z$%8cqrz<}74t|X=0JGG{teKiJ&;aB+=suVO>srT6faHH1eJ()sW*{ z?R;f*ccuJ&a{Ff13ZcamkS@u!Q2Q#m} zsk`qMq}$@kW@~#`Kod!zfHcn5?|910w<|+r&8r3uTsH}IG1S__YL_$84`KBLR!5^$ zAuBno&1?Ot;??w4$2kATu}{a1x#@cy!?)2#!~kMlyvg_KXFMF7$QKjm&AA}#Av6gG z6A?IM>wvjk=+mg~?gB7LF|caIK4}QB!gu;0PQHkVN$@d}`V5pCWmX6Yc$wj*983G$ z&1SGQjpC47Tb)TfjZ$A&S6Eu+A-}G*F?O^^sNnV)WY-cu_A)fNhavLCnO(}R(!j) z$d}1{(z_MrEj*TGxZn+ALY@UD!ZGgh^DuAxq+)CEp?q7S6%Ob0dNH>QeQ$Ml&2?Kd6jKy+SIb)O$Q--d(?#$jw~ZR14Q{^1IS#s)I9{dqvnNb6q&yRl{^a!NheoKCi6!N z5S)W_6~JQDw#*T^V)}Vhg=Np&erm^xB@Jch z!3&EoETJk__n4TNwyTccvYDMO6!TR9oSp&r79--AtsDQ`u=}v#YO*b^HWz%tG_U2ljvw1oDP7iP$rfO#FUQs-Sh_bGr`T z{xCVZ`NYIF|7+bThPZ+dlgotvci+$)w$41AVI*h=}>GW(A2Oz`p~cB zpyPAB@7uwRhE%;YZTU50CA^_IXVV%HB=&?Bygx6tSUnfUl0aWzup`o|2-w?Q$X;;H z>5dvm*7XAU#JK~}pwsJuD-z!-3n1ap}!Fptsgpu%(YH}rZdx1EQmwgg_KF9(63^X(A~K|yWQqs zIS?Y1&`DFHIwuUbsWV!jK>{|cd-&=_9N9v!AXF^dN_D}|pBV*?Itg$UE zgZBM(#hJa&YK1PksBOmv(l!oOxGg`fe)gq`;F0omw^_Hnw)8G3qs&z)o+MswmM3u! zT_Og5(DvKh_5667VK5GWwT7p% z40#~32vk8@u+IS0_$k6Rc8l*yN#RVXlwD_*C{uz27Lsc^n$9&0vuAQxkVbK}^x#Wf zYW$x?cUJS1x;_VA0G$Pc25Z2$LNyOFte*P5ypi9u87QMLzcb2I&O9Q z9`qPI!WH-@#<3*)tTjj(+OFyJpZv1+&(O`J39c$Q#E$6CrklJhW2ayq21#s+SaizH28s>7rI@8m>iz?@jufc|Jl z8gdNBcgfk@)1G&{HU`dGXsFuo?3ol_ws$x@~pbl=*wRrWGbdI@; z4aMaB-rA#5cQS+>opU&A?z%)uvP$uZt?-4v%<4k44%i0dGN8T~YP zeAt3A-L`t`87dpv?XLTc$E7KcGyhKRe3|O0D9f~zdhuvvX9n-E#r?5MJ=LscJImDz zUmy6LAL6%88em50-*`2J`7pSpH#3W$+z1w7TJkGhS_v{(tV~%-a|bRHsmPDRu%tiX zFhT%fIz&abe@jP3J1Cc)Wl|M)8mgPxzj4t{TweY()7_<4Oo1of?)|37d6VPFkT!TF zLglxrKHZa14=T^Yx5;*dt_0AFfBovdrqvo2wdnYRpth;-JroJOFxQD#njnMCkhz!U zb%x$kh)*VZJDJmEbo=70B=v>|N2Sfe%aRO!(xJd#`|}+ceb0v2H5hi#z0q1r4sja4 zaL%#A`^-D*RkJ#7I2ndyXNGQ`3K1d{ z42;OdEsdt91dsQSIx}dcl(mUcO71*nu!#`+&>Og<%q92qE1OfV$zYrPM%7>h=1T0O zWYol%NIj?IxC#t`3~ZY0*D2*>epYKu0-GG^-6#9Ax7xyyyBH8DboCo%aS%Lb@R|S@Bf~zy!6Z&; z?P2o@Wz1w@z9E$OyC&;(>tCCeZ5AGhvtpBy^PL_%FEb(Gk4%Nhm3e`bL&dBHHe|jI zhI3Zy0|PF3PAfFwi4UG}JQDviw$Oc&}A$n+uE{aYou^(VN#tpkH@{-_*Uqtw&**I zB3qPHPu(wkzBU&*ynl7-7WHqJ7~zf3$XGkwD#dQrE{d)Z%;s~M6(gKOonaVsI3Q>= zF-rW6%|>`au|&q9GT)Qh!&&5`@1$GQJ&S491j+86D0%gM!}B(`Y@1@6s`LJU1$OUi zjAN&WiuvXnwgC-Ig`eyO$+z3~)LJ4aD#y~j_N**|+5fw?U*Z>+HsG8#r=2?3Y1(jl zKl=SnPchE=H~Oi3kK6Ai{mAZV)xs*rlg%#zSGAYBU3N1+?Yv6t<{{CU`kCIRB}6#o zD*1DSwQhyop#7z}hdhg&{tWF};@X!6*XWARJV*55o){_+-R000OnD$ihR=qm=A~R0 zoShdwhw>S3$i<`j38*_9Wja4rS3YQrS#H-$d6dx)O&4u5sc&e$&-l7NA?KO0#}Jlj zv%4KxkmFYBQa#Y{_=~H}J_G;ytD5gxFaAOXb3ls?3YiS|Pq51{goB)3Zm(usOUe15 zKBCq_JH%5aTy~L0|N2MY$iCm|lbLO(jQ*Qj0%Mk_&1{1oi}60v@ecY`LZ1~@X{c@4 zZ#UeVPZfh7X+cKGSRVzkp*nmbdhZ^QCNAN1cF3*DU-NC_= zvZxNGN9Gqs-34(H}EA;Q!Fmnyo{#r zD2_8Crm%5(w;EmI_H@Xpd5x}fJUW$r_EjGwrLmpmrt3@-GQohcnkx!G- z&f$ZI@;&#mJ?rwRr>}4Dmsk**g@`DVNOeY&D@Ak_s*Q+!1RnlLal=&WlPPW#-R^3R zSHI7jIh<+}YXy?Q!Itd(6vNQXoKL zL6Lcu-C>+RMde<#b4`h!fKrht&L~*-n&!`}X83-HTaeAnRXey}YNdl~&PrE{(mep7 zQaES?So~ci92J{lSMB;dr}7PA8|nPCGgS%$4xXkB)Do@GZO@bUsYax@P*dTmCeF4D zoV*By6M!=yyFAKCs8h5y$Ib!tW)c;+Uj3*z>DOGPVvcf>kFgx;wZPl0j!b^Oood5- zu?|KykJW`@CG)fOUaTdq>93f0CzJM11d?`lq{4BEU2pgKLiycO`gUy9_ayYja%_zH zd|YGe_>}}bc6*W+32HSf5eK!f%`*J|jzqip+-xn|EZ5ee5!C;DCj^e;Wyq^{A3E<{A zSZPSq8B?>~W3wQ*DW+p@b^-X8R)_@i_#nK^bS${<^EjwN(s3=qZZPytGW;Z9xSz3j zlhWadMZ`TJ!6haS!#nEwd+k@Rz(Y0amPeYUlYbxtIT)&LI<31nRF&zAt0qO6(7OyZ z44GfBjJUH{J#=r5e#&ZM*qAtn9yE`F9|iT6e`TS?)uAPV9Tbt#Hgk2-W@ctjoo_S_2Wda@~S*fkH`yKj~ zn&(>>bl%u6+44NTS8$L~vB^D}G@RUTwM(3+0m=fAm0ic_tLqJPxHs zVl4?q+8GHE4X|9>2aJ6=Z_8AL9*uN=EsSLF72u$h8Adz(GKksv@>_1((h)tyxDch$3q$h^>Su=+fs<^{W=>OZ=Xat__g3qZ zU5(JSFB0}pQ+Yc4R%Di{+ha!jD|K}LHnWW=pldJ>uI*L$RejBO?UlWDD1Z;ewD;pz z;I&|Cn`8lEZ9ZZOcQIfEU7I9GdgABp$ypf^R4>(q)FaKR(c_xVPddU6I>4yK(0Fi1 znT^k2tTEbDS5ro19 zPh+ANC{2C{pJ!*2@7U=zuT&jalF+Yk2cfa;PlV|Y*sV7cD)GO^^Dk=HSb}=}*`?^# z5mp`rrb+_729E-tU!_JSOolA0_}5&GOn>SE`Wa#Rz(kw^^& z(1KT<`U9q>|2_v8$8g9*qCSf=rVN>cGe-{ndAphT*q?6iX7c`n%NeP)r7b5n^>SXq z19WvQkcM|h$I)H8`c?Bx1377|BQ^V(PlxOk=_?JKunl&~0oqyHlR?27a>KSF9HEh? zPd^;Xa|5N>zijvMZ!^C^_>GAVB$jCQel|=4tl&*R@}HEJ^Q{#_Ey@9gmK&i{DU@Xb zduJ)CsX}Uz=X6)Z>hx4a^}nwv#f5$}%)E>}PmM5;L!Fu9N;Pf{hD9~db_!__@`LF% zKsS1{ye44S@I0(}*PyysJ=NgeQkyCmEPJ_m{|B;oNa@+9et&(-@^xGE-n3J$cBswb z?8lbQEUc|(7IkPKi&1s05@5LGDQt@#L`I+olnsOp418SME)!xUhdB~2fS%H2Ay9OK z{WWfowJNg;zj&?xD|guEEAG#?m+@a6zbX06q^oi^I>+08A3HncoR9;@NzY{o5!4wn zn%e|C{Ti5iwW)mkz+~MNIn5epNWVo{|Jjam(Y;d~Y8%rIb2tv32h@q}iQyE=d|FJ-ti- zQjP&6G(mVA8$(k87L8V2{^}?}&zSlAJzBv+0B=3#B~l3~m1OJ8FQ z2}(15$V;ONO0B(Vr1*Qex@qG{e#qD%zK=g*o9c%hpyYhKK&1rK&;J9AH|>aR0V$r& zb+jBEyqGXQEza+BW!LY@(A#qYfOR8}^-un3@);ijMh~|7XxEZ{uE7F1krp$v(3cNq zMt!>OSMR};+B>H*VpYt{V>jerNyh)!*t;yyKQnm9u0yc*WbCjO#d}3*+8Xyyd=3ybh4ltE_ zV))-;lRkdl`2IO4)E{Er<4`Zj3b@;4Q#2r%gHJS3#QDXo#FOB39?4pW2I8+*z~pnD z#Ho(;fBshNz(6sjaG3V>M-U%^8D6gBNIpaKsxbJ<7>MTJE+}k+7UuufsN|4zYFHD0 zXhQb-MP3Xb^%ob1DCQxqaj4Q3e?%ki4GvhV>oU>nm#=`&lmq3d7Bl?YCsLl+{W8;ojhWL%OA)avkr(4fCFvCdj_ph$P z)F{Km@YEv!8Qp&kT9)vS$BMx}0n{i5J$A|7^I{}u6K03i%yclr3 zop3sNbW8!M?A)_7#{z3&s4xR2+ac+Yn>k+Jft~>4->1q4ivs440e=dRY%qElNoWV= zG5)4i+_$edgOV$r90di`Z$R7DrnWky5pW#xZ#ZUVwGy9Tq5zZ`5Z6H&5JZ69joSDE z^>DB%RtrCnc%m*a5mlB76}%RKKm%9tQc_cfG=aB0Bzc>hf#y$C})woeFfCz@hkMM;GFGw2wR^y%%wr8;KZIA zzzthntq-_C^WtA$0w(hRD~BNTzZt+E(3^XY;KXBhJs7_ZFzml@1K-;S2I*H!fO^U! zh#8;bc!A%7ad?Cz@8C8E2r~EEuPNc_YFv)e8qhge@&(+^9a70W9D@~83gb+S{)(vJ z!Av)DFz1k#1kgy(+TrUepc(bwsz3l_)%EttTCw1O9~Zc!6f)JYZ-}vjHUx&54MiGH zr!*0AysTCMPyF7@V)6#|1^X?VyPOZ`iQXg~=oaR-43Zy4YVz;MmTh zTqvH!5sa`LYQjZRBL{=S%7@sOJJ!G1NCzi%uLPimg8SbI+_B1ts0i_(feAW;^xT2R z^FLh1(5a|l#R!L2YO%OS6T^M45g^r_p&9e1{t&(Ce}$ABfVH8&%XB2r&VNe!67&(4 zj_Q-qW$5U8+(_vSSQa(0{O1&aF_fmNtuIg+I$CdF97@u^p(XQkYWcaEbsr8UxTtMf zxFE{X7L@lLl6JdW`uEk$EeZo_tvbpR<(<`Rq_*;dW%md67j4H~u9hV}jLJz{)#z4m z^`ncx$vj#pW5e;Ts`hFSI&jGE+h3S&=`j-hxUagR%ab^eAUf=|8MIR3^bqhi;?3qz zEeQQjsqevPbPg^5T8eJZ{LP0pp*{weSMd!OItpG^Id`7swiHlBp4cr)ny=o~JXnThM-Vl=}L_ zyC(IQ#}aoC7b)$-!QW>+Q1EhgWiQjrSmL+^uG9NjFk$%!IKa@w4(*Xioka?B zmIFm7iaiG~Q(?x-iJ+QDc)Lxl$@}KU;)+6usk=F=jU0W4RNc5hFp#eEdBP1nM^v=& zwQa84p6gB`E9Ry{o-ifbiLxu#S}F@Qr{3;yi1n=n^}zR3X9MUR7}{X{I{xGPGC!L6 zf7Xw0m*hJ4;hyIOJlx~()8$dvKh3!dwa1GA0wTdL$S)4$Qvs!^`Zy-X@}F+>eN~vc@K%tpi?uC^y24pxX~* z&hH7$Jqj7A?Li|*R}C`he+&_wUp&$KE92W*MCz2DgWr~o9~JuyIk;Rq66pFXvIdCY zzyK+szV%PSpa7o6tF$T0E?ng`T(cr$O4njjBACA#`xm*sZ&IB&sAaW>9t*6l7^X_-QsQNGSCi2}B&G)l{25#sBHH0sTv3&nm!lP@ z%6R$f_Ko+Oa_~``Pk;;YU&FWx69neE*mZYV7^CuDH$+EC_n&26aJayXFvmT>hx!+d z#1q^4L^UNY4sv3;8eC#YPQTL{O>>KcK5~p@3{)Qi!n{N+CEA!?&OQDOniC(PE4C>- zJUIqfK)cT&X?+M44SeN`((e+d-i^2&T@sSK0R$WnSI{}giVjKdkD$dYN`wLe9P%6> zUw{g+e<2MuxcC6NHe=w$ARKoL%5;T6aUL+@R)wR?f5P}F(?bA#;ycoR;}}p@{SMyn zM4|?`AS)!Kg#yFzJ$4f1XE1N11F{4VHE8}!Q_bH&3dR7SaSRhARUg)D#s!sz3BqU( zxv97?V7@wu0eYCfCAJXMBKXl0k4a<>{p-1-C};9X7vTG2bstcRBz!k~{9qsyLo1MM zPyZ*86>rW!4F^(b6D5cEqFuWVu>(ZJ9E0!QfvBIM>)#eVyrvMKzfpzgd;XiY>t^l( z8ZA5}n;S1g$p$TL*>NcnNC!}XE)KuAc1RuwP}&Lsif2f=MDrLmg3H_8mnlPdAm|4c z6MDkG2p-VWt$~CMEHw%U|A_gEXUPkka5=8ObK*Da(|J7YGVR)b>cO8Gpq4ryTL$i( zPdxqzz7~+$jQ|ZD{FO%*1GFqB9$x@-t5c{&z;>ezVBPUELn4hpw>c8p;V&$JC9Q!A zLn3~t40n9>_*3E`xHQ27+7di%@QJ-6wLNZG6vMF0#vxFo02gWVRAGdmGX3wy0kxfJ z=tcy3DY?@?a}V$j{pLN|2ks*&I(iPMZv*<5W79swXb^yd7_z`bHp8LR&e7gVLL6@E z(AqQc0C)=F)W7hO_78>tTnq!wJ~>i2bU>93e~l6B!^mYo{PLep6j3?Q(0b(!82rRT zFwiyvB}d2a4RH1Y?%R&gaxw9Mj00H7q3+;cc&7;6?1S(9bP-gA!9+U)6u_PZtwGc?D3p!=rKFr+gTiKspF)K?b^!Iyu62WD9k84|AvnSNrnzJ?Pf; zuS)>3)sz?VS{ow)s02iHdYOa&>ldY-1IODdLC~718L^tTV z!F}O8h$kOfjDG>;Aji^e{mc$^lnY|(tiW0|`Ff-zkd{@soGTzkFd6w;v^NWq=sbrH zgpiUL{u}~h3M0XK5`J`PoBYY60wiQb_je|&Y33UeE%6$6(SV2xGV>dR{P8&wdZW86 zGXnB7fZ98X61Cw6 zL+Lgoa)U1=AP&`Iv%UhRvNb@z583Y)!O^dzO8iu^k_Wo5-bvQ9V5MvSRVu*;kI&~o z;iU7&qnzC5kd`NSh(16g4$}Ivqpt^9I=GI$eTD2)wX6UMT&4qk)Sh+xbU;^u9i&8L zr+O9Wk#xs84o6G-uXb%T&FtOrYtA+U`;YjShfDl6)B45NdoTQ88A^&$;PZihU{GTq zT@7d-LJo@L$_wBx-H*ORiqv)|_^BtV`8kQ^C9~HKw9iD(yGg~Bx-HxRv-MCl^k^lF zFU&w?kDuY0tx_Y^6edAtjHjyQc1Ucm&U!=H&+&$LGNBbqGv#-Zn9SQS8@Jk;oaZS_ ztwc3fZDOp6lICPrg2vI`6llKMZ?+T!QeG;wC?kdMpVTZEq)b+c>xZJg5T4BO?+=4& z4yX#|dPSVn(QSb7Dn{p-XI7t>qp%oi0jgY|b^jdbhU$f*4E`K!T@>!?O`0`2yy66c z82ByZ!Z;^w&q-@%$}m5v#-zgMU~0UT*_u*WpwCm+UM&@V2~cDP@GLRbGsF#Qr8r~? zLSy%~5b0LR)*T#zdhT6!?mc1zc^95eNh?)QbKB0M> z7tlZ|w+h$cHH`E%_ueM_NCqGQU!^-rX@Ca!U8u3no5LKa=tX+CrI{Q`Ctp7LfE?te zAH+9e$!a1LP6^n^1IjXd9qV{kpjx2^Q*C@p!5Q~ z*B0T?iHmmwvJ&(i>tbY=o*8Fol>_nT|2eCtY2CgnC!as8;~)JLH8)f`6njCZ@Ced~ zhMal%(R(&hgFe0wOgHn}O*6$i)@>NOp(=9p@hWUU!eqcznK52aALxrp1mfM%cg*Z6 z_N~!1&ra{U`?sXv;UQkc@Tf|e_Er!k=!c{W4Ij>BF#%3BE+;(ddwyUtJO(JS6cf*U zfMCM0acKiifl`VvLcu0jc%fbE6NNgkCeb_k{p6ijM7aoNLDqr~nSWhQw#2napv*`o zD3-fPc1q0U>*W#}JaBhCG9}PUv3k$hI0EeE>scUce6+Yn>Bu3BgMvjDAYxjeEn3sk zg~G}4Ee)8wO9G1MAoBrKC{Qui;s|Vl#9afQ$5aB%X4?Phew2e13lQ?(jdoh0J|!md z6#|LSH522pCEUJpq$w+1jB?T0Gqu)_W|^tyjef^e>$xKx4eQJ@`nmhjpA>l3QhaY*!Tgbs8yM|nv`Gx4kIJP0D zim+5@mt1zc7+mu_;=-pRu1A0Cizj(@`_A{&?zG@harE@j(Ute{0!ab* z;_p;XGw|$LnNVJH96%OO&&Q!!E7>J>;Ijw8)iJOz2m>8k7-;f?1kzXJLHsB_x>o+z z>)dt(mx3UTbz>@SH_sF-0%dG~NHmWR02L??d{BGH>GL=1e~R!W^Ayp$XTJBGdJT+^JTyw)pM-pv6}icQ$mH!3qfD zTXJ22{1X0tg&JIFgttlC4V^*K-?wz%$;l{t5uCqI_SLIhq!tjO{xib%Hynbr7MbD^ zIQ#znv;_&vHf1vJEh-DX_21`7 zF`@p$M-1gwL`Ms&2RNbaz(mQ5YFJR#hDtargrkr}jddt{_#S45%c(qzILiUY4&ur> zJjj0YtiDEQ2=cp15 z6aeq(p@jI~Ki$w`1LUCdauTnM4LTZv#Uuu?VEe^RBilZcqRR@^kp`B7eGAp93;(K`$L- zkx9#>m)Qz2_tN-WiMn}9X@4CJg0diX8Wxtpy`y{ADQQ@eas5nJD#+?bI>GH1{*uBB zT&|(-KW)tLH@7vLR3_%AMAv_H0)M$i2l{A{O+5}Pv|^%<5+}bsM>?x4sDAB;xnP5a z8XI9pjvib<0Fq&yk0h^c6a%ZZDqk38fEc993*|S*kQC(R;NGD6Q?6H4^7907pwp1C zP7BfL{w=IOfp}EC;tD)DciirFU8kC#R{{vEj~6tXfm@5CpK62}Q^4U%PCsWm>J5=D zY@Imzrz$PL_yS$G#ZaGd(@9nZy|7OqZr`nc{(b;lCP5j*DX}aCFfs=HIMAuXqdzX_ z$IrNpB?_<}O2r@j4IY~U#U%&Glf(f}0yOQRV0~OZmO2dy0*d)VpsL1CgXa7@7O%2|%Je%&|a$h(~>3SYKP* zR0)JW{W5JRpuN8#zA$ruK?j8P>BEgbfl>s-{{6eC z_oL!2G!PBQSUW+JLbQFSLA~j(m+83D9-vy@maPhk4kMkQR)KfY$4MG!xhw00+;lTY z;rKSdyv8IDu=t-wL(mF`hKvC8nSRM|wsA?41B0ffHzbovOg z$)T`ity1RZcj)@J&_GeIK1|)W;#OmsE4yz~s z{?SkUjL9g7XxoG7vC>^waew9==v$8~*#HTJ#V_3;g;ICsGwl;iAoI%eBAx+^Tql;# z9vx+Hv&I2URf?1SWb4Hb1O9!1REWeC$}FzmTDpD34{FB@IEo84)bnu-!L47n$&;+d zAJFhSpR%DHa5s0I7R7)5ItQ#6`z=_mUn4DPDMaL+T^Ay(wB+5>Aa;mI-v>xeLGA~9 z2}O!x>p(WYJoZ2~?4`grNojhqji|SvqUZMg=bvgV&Fyfuq~Ym;o37?}Zfj^h@L{EF zZ(ofAFR90M^!#5@48jZaREWfC~^koOd!9CXFmwHP77Tg9(!U2dyI#wS5cIA2H9^#vcoOeT5g9D?i2td0xIBP#&o}Ra|YZwAOCj^CC~xz5V6( zEm@|$a`wMfjOXgR?y$vlrJXhPZ*yLX`rhCe{S(*YJ?%=DQ`fca=P2HyKj`^rMtkbn zDGNjOzVU0qyeoVP^L2|;JBDaJQq7W-$$ zbE_cA_UuitvF_x?TU9aZt>mNzktmIYkfL_811?L%U6K8Dxw$eXFF$IfOtam+?>FQE zI*iRe3JA35cBRK!FRx`7#aY#vktdW()myuu3;%GCmh87))=V1Lh;)u9+dS9y>H19C zPQ2Veeqgyk*4kXbG}XT2!zP;fvVkkIe-tx&?f?^GYWUYguIoROf5Xta%10*@5-&r^4~LbfO>WR`>?g{20O`d?Q=ts z!bDAtuUw@_;vKcUT^sYfaHNQAUb8;E!6iaVpNEwn(Otj!or}}lnij5b2;dS3(Rz0J zyP2k$cCI?ZEjxh!1I^t!Fy46kTD~*S?LjRI+*ab-JG2A&!S;O)BZ z8AzaxE?b1sSVg@QNU)k#@_blDpqL>45LaG$6WloKKW5R-OyG!ug!zKN?Fod%fab?S zKcFoFHBg`mSt&#l0@OD)5T7Yv#YP=3_0t_VBhAXAuibFm-`ObR?&ZW__c<|Hkni~s z0jBuo@DuIvx{%JuLFzJxC|wGl!3@k1cK|+iqLbOCHBcS|ZtJtGzb|_4=`fv09l6yV{w$4S}e#WH`^_x{wXykOK9*u|G;9)4mK6 zE2&)^EC#(1E$v{*?oS?BvI3ZSR4qA|599}ZYTL7~-?N=8mLH>PTItQC3^qb*Ll_pDkRD?SiU417bJlWfn132mMQ0^KvOYtax&Q1rlZF zS){s)$x))@gE?m7msO1vh-MQIo_|P%;OYU3Di3@zgxa7X+c(-s=dI<@OjHoVyfVzO zcQx*wL5-2>uNY$Fq(&>pAXPMe@}`TygV$1UoTg%iMw*7zfo89N zog|QR$vTBpU)w?VvsB2bzU9G`TM}dMHC$%l0Biub9@qWL`|-^R>pD|4>pNcN_t0Dz zxy#Z&zr+!d!!e%c>19`*6X!eSg9hV7k)tq|2zYYA7&agtZN4I_SmrA!RX_s8E_{hNkh99Q!_=%#h? zXU~8+ns~5+nd!N`6}x(^O}cFwiZs@rbwn(!Zq-CO%~viqXssC%gBk9|BM%HF>v?;? z8o3J3bI73>T&Z1HPqT1s2)iUL9VNtnr7&L3C!aoUset7zJ8v7at0p&8{!)tpGA#x4O2J4O5Pp}7Fj}~oBGI;I>KY&;S)A>y*W!4U%@hL^ zuXy3$g>S=-$WD%`LcLl(bwSU-%q>K43=Q6I z5A*K}cKgHH$19V{7z1}@nEvqI;RQ@n&ky+K*x6T@4vt;8FpB^aK~5F)(1A% zKUb@nsP1i##tm-s_hQ3~zVAL^9SG@L8>8w>kYO|}Y2Db!aE(kaK2SAj-;kIUE+TAF z6ZE{%)RIuG9|vyJeRYscT!7q`u7|Je2`OCk23izAs$|APr{#m{_5%~{&rN^?nP`kR zYLWrL;BG-P&tuxtx_nl=i~Y(~!}CfM^Mp}l(a&*1GvJL)+J8QIc@{pHjIsLKJon~H znDm-V@fjS4eGOST$2XCpJ*s_8TG@s;O*Qu|s;FY8KdYUr-@9&eVU$WNzckwnDcJ=G zh)KsYBos$9L|Y3yDW7$az5UH4E(bT?%+iI8Z*~j_7&lqw&=5@uTHHjUCa3BZW_&bq za4ptQTvZ>N4y?rPK9%1~k#30+PFs0!nRecF=&dl%!okH-{&?OdP2S)elv8cltNOD& zJfLzoh01S&2D$wMz;XO}^x_FXgi*|2&~_fwN}lTo=?}E7h|8be9jy4=nJ;7dcB{~H zdRKI>jOSKZeN&U))6A|IQc@R*3BjD z7_Jp1Y5CX>FS40400w(7<$Bb<{HotVa0$c z^=JaLBp2o)hYdNs4A5^p%RBM)n6U!Zcq#)SWDO#<6MkY~u|> z40nq_2RKW9bo_U(6h0ucHt`v6X3Hqi0l#d|`Xb7zTt8s)o|cnnkJeOsa#zX~R&amX zRQ-=L12pID?@C9wP4^$qfgkbz(g|kpKR#MQ0o}9VP`-%Cv{3Q!DZf~yo%~pIxRB)3 z{+^Jj>^&Z%*6+*w_sLFKHX3)QhVp1k3+%6VbiJE}2s`@&VX}1|+xJ|We}RYrPA4ni zQ{lb}=sz~_DL^~XVbB1q40l^UlasK}rE8(@VqRSs8`6RU!sai$SA)G3n|^#GLd)$Q zaCCIsrfqdE|J4d!)iNV4g5Z=GS@_6Qlw&guhxPu5r|9=x+JTfBXX0=Hpt4tI#nL*< z6SF;LcKgbnX+)EjPaz;ff=c#tZ_dii0V|oi8un4v?N8vAtNWu#y|aB3qh{F?P1j3-;?9+O z81@S>C`sQy6y=8u#=DpY8p!uU968houX9wvUZBmN*$w5vDfXR7zEMlp+<sOM9fewWMH|Ab1pn|8?+&2^>%NB>J)tXlQ!`Sc@dtJ>_{?uEiQO%;%hT}bjgysB2eM3>) zc1z$&#ae1~lzyOwedpwDhq|YNKB+b`feHnReN)k{3_9dGmq_3+{;^vFT2CL6k=MN^ zhJQ98KgCQ!jbP3gB@m&eMX)npAWOuj{t4fA((WkBo0CmgWtF z-R0ftYEsAty92Z)eBDrzvL|4I41YpcFQAq>UQN|&ao1d2fgi8L);pPYEyqB>rOTer zap8$RC|Z8LunME4jP>Im zKrc}R1%*20(e213Cv^JO!o=uxZXd-G6Ov-nG;_yqJh@%&2`05#j!3^h_gRq(4dOv#&F~bj(WKH6CTQg3Kz5334 zfni@X%P=F1Ij*X0ZM{RLz|GA~Lz^7hk1T_>9}?gR_{|6Sibt_?W;e1z$*vL`k-vs6+B0n|4fJz|_dj)9Gcpmw1qFaWT`}!(6&VgWv>d zwy(@9Z~^Kk_OMnY)*w4Krnax#D8C|TL%X$2)Zk#SS!k~DC*NBJ$N4PnX0<3!unfUo zY@362ns*iL8LZ~HYTGrTx^8wJ~4BG-zEl;6joR1lUU=n}~r} zvou(9?FSX%h#KVzw2~Ov8@zRHy<_AC#l(+i?h24GSY&?Q*8cdoUQ4M!UZrDk=LHcz zF18T9F~NeUpdg2(Rvusr%FUG2Z4@}yg)YCmgl4#av|Su97TvD#6y^5sn|cz%wx28ZSHwI%Do-U+c)+t!@cLSrfdJw!g3|4 z%(ep!toKfNHIBh1Ws zf~LRJ(e9>NED9^P-lmmvK*M#u{A0)?q~97~GPR;MGH=LNC;K2$t3~7h?z&z9$!`?Q zI5QLlNc8WcxAZ|-J0jVlBj|a`^v#@fTy8(1`;z;kf=yA|=*ZV&XP>-Z7h0(zHyf>R zFP&oc9>ZK6tN-~V@C#Q3Ic#rsE+acZGt`6#$1|Ko@uTOH~nIHFZ_LTo;2Bq1H9Q1Z{0$Y$nu3$PmZ_oAxW6M6K26nSZQ1I zXEi+y^F}n_=5iJC8qAt^Tl!;j7_zLI1s#9;b~1a?>GZs^lHQ6`wgyYIU)8kVou;HpiMD zEE-08SE{^lvHpc&_3@Fk0RQpGS@-!=N+Q|a;|yP9I* zJ#wosGqVlW{*9S*7XrHdOU_>Ew~+KbTH~((xchl(Jb~%VE+O!6OJszu=N?F%gGmD` zKLvXrj`U-PSKVZoevE7?%vAAI@0Zn82yaL;wu>yyn%(%MU9@Xq*W31p@!O@RGMy$e z5qw;G@s~ATUV6lP!S02i^Y%nAi!PF7vb=1^BV}R6UCwcM1hcAwr0Ah=2lN#u&={@p zTXZDwxeP0y2V58g;>;+LIRBH~B2b?>I)>7P`B&wN=ImEXUwOCzWiyCwFgD?V;*KGd~6{ z&D|kYS@XzSG|sJ0&*sGOOpb37(8+OojTAV+!eQZ)G<3CEfnY~yA?G5_x@9$J5&Iha zGKfT&6?tcu?;tCj%lwRzgc+M{&vL43swh1PNnh&iiOLrpaH#w~G;5F1_Uv6K7-n$s z(P8l(o4!6qVv>OlV2t)X8+DVXcsiSC;iE%>oX^>ivt3YaQTy6dWrcce41R0rJ zj^*|uj)w^b7s5`9VR)fK<0-#9CD4D1inHh1snb7E&5E9prr)m)Ph+~f4C2xxwEI%+ zh=%f2ELzT}%;&hiwUxc68|AcGmv24O{+c0+%I61Pk(csaN9?>FyO+Z{*Q0)V(jidd zKS(VtLTHCrFYuy(}tv4v~P0uk#4u z^db5D520!1xB!A`UPg4k6W)DU86A9kG|hhv$KMlw`|XXA?ycIZ0aE7@ShD4zz*p;m z)?o*$z^p?AgS+B(hh=I`%6tt`f4#CD8op8P*`5>NElP}}eb(=tnpB!qa6kj=@6ntJ z6RRS9UA4{GMn;SHloe=s>C%56NBOPpLeDLBvd~w6%kBypyPk&;FigKkxtzT`O$v&| zY3-`mdmijqDD;ST92iVR*gcmO()Fk1ZC?B}?!UaR@d+3Q{f9y`bMt(nJHMEy33M1- z_f~BC2?{*Ea5ujAfbvT$*H9>`uwCrCFm}E{Tp4VRpWcc3KC%L`O0ovN-xsESuaZSw zCO68Gbr>ffiwqDW-Yjl-_t7>nYasO8==!k5(JA zg=`X=IkOI2zM5EvYIyM<3CGE7ppIZ+st(F?Zo%Zt>M?#Xz z{TsxyLrrU5)W}t25V>)30*ii0aPDMila{z1Ozy@QNq&n?&UsolB}FBjE;ZKFnVh$d zcKd3Bc^GcSETTJQS})dgkoJ}1B@Sy977p(zi$CH>_ZYpd1}5QhvYuCcjTE%&BOn#} zG{466l4iA%G18ozWzd3qILthQU0sVJ{8`$@nql!igk_(WVTC3G#%Wxhw8cByxr}VGcQBHdxlBsFa$E z!Yv_21|y|LXm>JE5^ykxAS3T$$gYHdfO?ht zR0k2Wc+Hs#58{g-&ckRq{EduK3bL^}b6d$>B6rkvILdHNHz^7iCruY>V_^)-j~M_A z#Lnlmz{r>8uA}d^@QwTaDgVZoZQpRa;2I8BL!*sQQ&X!fe>6LMtJ=bOPEA{D{3FQ^X-U_bQLa&hPy#l5= z4NOy#M8|R&Mk^JHI1|vKgVw(iA^iafoGClGnDDg^7Q6lnimx<{%pAi~Z5`uEvvxL^ zzJll7%JzY&vz{E24hXsGi1w!+b<+6<6bx2sXajN2$7;uNjXS>JTy@at{ zLWq%JNg?D?NhHQj7IhD!Rj(!ffl0DV>eP>k988%Mc+$}78r=c6qCD;2;~qgaa9lJ8 zAl-|~DHq!K9=V$n4P%x*i}3cOd*h}4rtZ4p%a<1#h21ULFY*d-8#HFt1+w^D{YrHC zj?}@hAH@}OCQ5dV5T6cX)cAf~ z;N1{$^b0?bcQ`Yqgh&^QVAEwJhWq8Q=v>!LI*OSYVgw64!lm}WfMw}&zI_Ca5}PvM z8K)4nPfkzLDp^(HuLA)!Y}jO=)R;}+1$rzw*U~>=~1VhZ%MZO(H41f&-wXpEl}0oe``8pbe?yiQ3GwIIaRNbBXo+3B&!KHd04n57lj~*d9F~*^HaXG zXLuLh1Ax8M88VRQNpWI;p{ief=&OIlB~zExXD};i@SNjhO?vN3V~cbZ1V;(4Ao1Ih z?V<2_LKd7>E4Pomj>bX*NBO{HbEN6*+qap+-L2fbWch&Scex_@JGY|qM|AMluNVL( z=fN?2j_rDHUv=RTCd1XvUHD+^r&jvqJyVyPY;%nvb7PYaQV@w}7yJshRlx&hi&8@AQj~&J(7kq4R1><-N~E$Jd#^`BYWiuboRTZk}um z)#c&g5nI>ZvW()xVVJyr@Yz@R{=mhSkKdq?Thv}2`+7@m{)f++2hJjcKBG&RFsL~Q|%uow&0xl>2fLvFWHD{gU~ZMnAB>II**a+xGS{+F}B(1 z*LAaLyHyM&`Bo~ts@X2P7vyM1^$X(Oct+YZtB9xfN?o{q4OC3h2c0(u^R-YXff&`f zfOPG3%R85hBcgA5?|)n+3bIFaR!9}(<@I_~uvKh%&SjJjJ?EeJsy9q~PCH#@=imu; zS1lt4JtcLH;QPvCPgfq>UBHoQlCPj@xggn}ZS$;F!!V_Ea-O+X<0=C)ocSzSk4A^q z)%-TC4&{zljx}5za%3Nzp`F?Ea{ui^P>rm35Geh?-YB!Q&VZ7(;`BeU(0>Dr$Nve4 z$R~YJ>b#3xPAtextA+0;4AvJvt=P-IdD#J*m$2~umg{+|VE`oV+^XFb_u95A-&Ge} zt-V_L?7qL~f&K2#X4z$!wD%88Q{Z!fTkAyYq@54P>&Oh2pKK)UGn@Zx*;*l82--Ez zPg;x4?6qhi4xQ_=VXLrq%Ii-?m~ETP^$m1o+`E=uDp|5J0lg2L%MtKC`ehXw`0CC7 z`EmqyVQTmD+q%MU7uFvOW_*)KSI?f+L^oPF}XGbec^{=(8z!b$K@J<;A;GrM=kh zuX4SYTG39ZX^?ew$ExKdS&&C2mWHdoM`O*Ht|^ZfbFVu}3eCkH_1*V=md0nsE=dQU|g`0B1F_x6HH)v1Ru-hifU*j3Ma3g#JLnae4 zKZ!M9OI5J|*;wV*SKq=LDqi)j9c;@=en{w-BZ|r;WQaCW(y-I#?5j8O(QzT8HZA$K zQt=GkukKn}d85UlF`greGD;rAdK)%`%4LoFT_wds=jMn~i?Z7D&HIaj3nk~h=F%_d zhLrk06Mwx1u%%YIT(4=EX_!enTJqEK+)<+RlEC}nowt@TsG7U*-XwPTDH2$Ju=j7h z@s%{*-dddwJ#;9dQ`J0?J@dyT33cEgW&EmI&##&x<-D6-E55wZM0sJP&z+e{yiQ8e z5@cZY7ZEQnk+LJRL{?4}|H<}QNG~5WmYaNjK29@dIMkRZxQuRSx^K%k&FrAu|Aj?q zGQvI2HrGS>UC0S5dQy`{1)7R^8$`Ml31S@pwN6_p6w( zB?tG;v1#N5i$st=d^_79gF(uOXyKfD80YtVK%29SFn`HU9lrQYP}`cW+S`DT=JVQ+ zSx`4Xrn8xu%)qOHA_dv;1U{n z%p1pVZIh|JAwkd~jL(qd2RMts-&RE*rG&BPHNaxo0~T6oV8c$7j+}Ulcq}^2)vVW{ zS74W~rXp$GqnMHH5y_)HBIj&Sm~7w>(!LZ&I*CawF#KS=&uO=aliJSNA5Etw7j0@%UR_a9(Od2wuhV6d0`Q)duTGpjWmp^L$8otNZ-$=#$y43f)KSl(rt7`;szYUbgDiaVUWda#MxWRAok~zw6`=o zVbRBsQd`(wHF zh5#envfUYr7Ts@i+4UUmlOVs7Yvp3=ABnB(sK|A-*BuyrL}%{FU~6PgO;Rs)U$6X$ z&=6&H)c87cPEcsBgH_9i3T2EqwMKLd}LV(+uw*-}!)2a9^{ftbqR_e-X!q-A9 zPY+m+MF7)+Jz8Ip%F{eRHf>STA{a@9WzCKc6$!_+C=JAY03)80v3gNX6AHykOW2wBtm)4?X?zw;=U&K%*?kqvz9-BGGEe}Q+_a7m1|z~ z&m^?6nZ4-NYr_!dovOw)EwbgVUnLv&Z$58oW|1`(c12AttKHi%yH6cwOd4v|7^^;{ zU}8F_l9=A_sDLe?!9!_?s?rpS5P-pQ|*IKEt@Dav_)+7a88fHeN?dz~qJ z)V`Q5_*u8}r_tTPSN%<-+!5P5R)f1uuI*6~ym6vaGIewTOZAyk#adfgX}ckd`9m#R zX~fa>PL~Tr`2!jjotGm^t;@%Iw$%|tb4Hux-$vy^*Uo{>8w}k2v|mOT9qU{%)o8bI zaHEfVmk>Koj$6&o3O-qjgQ$v}&;s=`EJ=5FQ>Zc9o$mCv?_G-@bS(R5}7Svv%)As!renK*(s16FagO46;k>JU&(E zSw$hdQh9rss;GYWW?#_D)y`*|V?#J^tFk4k7)~t2DHfOZsft+SHfN|3aBW;ZRsPo0 zp*G&k2*hJlNy)0F_K-Ria`W8KS;@VHJPVKBr<575F2Ur+{N6AT3;3QgdHhTbZXo3x z^X;Bt(CtwDmMOct=(22UG0aq#3?+7v(ZA{cYP$A#ruYAU%B9solo}?+Bz{pCn~J&n z>ae7BPIAd*W3jCzha)p`X^FYT>0qMJoa8=qV{+SEwj-C=2;n66h^Ds2@1yVUx5wv? z&tsp*w%6|zcl|j&QzvZ9nF}xPZbcY_4#!kHw^-b?z&iw`Q^;+shh;GfnqF6{4k83$OWp5ndyg zj;Ke{B4V$N`jR8^qzh(}Tb4|Ukk1yakcg?9i-bvvu;^?0R?Ej{-x}Fe@u#ttO0vxW z83yd(E`28MqiAPeTbyW#ql60Mnzz4gO10S4+kdPyPyAtIvsqat+ANZ=Uwz7D&qy2D z*q590TT2-qUv7KXOl%{?>8{j0E!;uv_K0n%^`bg}AHRh+^X`QugNSA!z*Amg0;%t{X01Z^QU zDs=qjwP;CLCRBw~ebZI%_}MQUy@NBDQoQ*HD*On9NUobvb15B_{clO2?4^AThL383&Xy=fMn=j{d;E@ZE&28B zrBP0gy|?$v(ck{6s`=3AO1iw(LUa-yo9d6S8}~X+^wFlD=Yb@PoHixr_51M-uw&7!4;Sf(7D9|Lp{WZ z(O$bI+ogxK%on1^Iy@gZlXLv1C%vhgc3lxy zrxP2d53!$T2`6w|ArWK(oLpu7-Z663;Z5@tP2lj=PVJg<@K40hkUB9l`YGw}+I(^7 z(~74xDWhh`dvj?6<@9cl(LST9jyi#c*COTeiF8Ixe@on*m$`iG9 zJPV(~7ouK5&+eyiBy$e(1s(C*h$r5-(zuxl!nI5*8jBgox3#s-MRFcW_l^@Dlt1Gr zp5iz3`EX}7YPo;WzAi-o${;l`*ZM~xI%cOBX>nt3ieG|islflEnb5zWn`UXRN9_i| zg<;(wNAUDw8X`$ucNsovK8j+Y+xbKd_&ZcDI@>l{X4k<&uT4^ME_q|*M0HTyGIvoA zZJuV%H@~~ZIiQ>$szKPeG<=!M(LfGpcFnok=QaR~bJMDfh6+a6yXl2|NR=I@jA}8G z0M)bvN=+qNFC1?#zvDudTJwp1C+tg>Swa(`vInSK`+L_tl_EY9px8rQN&Un`ld*~G z+~6}1jC?__&xX9C>VHm48y2g{S2n|J{29nW-nkOL{__+}+SW$^_`{m7yJ8D^yas*R zJrk1^Cw$<92WG&`R%F(VO!#EeNriv~QGf;5-L-$OvcO07T_DzUx8@R+VsZLse*KGo zPbHaDz!#~L@=1PW%lycKapvAt4x=>Sp^A1_Cbx92N@rHbP{Ts?^3dt~g-bB=0k(Gk z`N4}NlQ%JZqD7ho+Cpt7$+cBj@FPM^V1auBf9dg|VA0`<(HOM&tMh?1Kvl8RF>cFE z0)wj(Rhd5e4E54@x5%n{Sr-wIKspf&il6m&0U@=Jfa5{W&*tw|lhwFRX5X>bQ1;Ng z>*mXn>4#i(Co{1Q{FkA@<^9K`@12yT_tgm-AseKPFuwzBbc^KYuXzo9UKGG}p2f7v zOg8duA*wOnu^i~c{@`W7nP`8PeFr)X5keocY(=IUA`Kxsh-Zb=Q4tVz<6%6!L@_}0 z0Vd=j6#wY?J$oW1{OmzH*py9~8UrxH(9O3x@e%S(=_llp>jV%1I7V^cVo4F_G1Pn* zML>t6vCDjbQem-2@KwOlUVC@#f71N`3$%U|1%3p;?!+S;A6_41;lK_LG;Y>S(%lz=j8Qe;T-y|LF@xJ-we|kf+d@6 zEj$@h6kwy<{Dk?4`9u^1o$y@es7v!d04K1+wMCkzchw2?|4qqcPb)8y22j1_+4PM2=g|+>&*g!Rs-)Vc+GHaAa9J~$(K!F}a z4**+4yn}?jfuuxPgPTJ#6jKb8_H2I8aP@uF#I)|;A5-LS^XP7H+;lYY@9v9@`OMS* zcuD9H#0pFvq2o}|3uoTiZ2np|_qdVzpsbzca{!qfRj8HT)R@ajFQ`)*z}*C%(b?!n zbTp7!fvKoL+6V8VH}-{=DIn{{a6M6Y_!JcF6iS5-ltv}$rnEc7QGvaiQ>%Ti^yx`{ zlE`$UWW-yJ#YNwYEV{S4A=vy-n=>HRaBc0mJVJ04zy+b$?2JovJb(q@?_@t?m6V|a z?avagG~!}|I!BwzV6&}NOOD{{4VzR0_rY0y zJJ}B%P&TC>^1OLo#2Fi8Bnv#h_L*Y1$sx3mKEiyD?JkrNv`4GH_ zB-+fW4KDEK`F~gI@`q`e{-#2|^#6mZrTRGM{LKqPfsbI#{rVVZ$aD`8fsQ2B=Sho& z`ZG(7WylG0xe2`}nZiJ#Sq#HqR%V7U?8o)N$2|-YQIkkJuue1|&?6^fIQc>##pe?y zh}_vxMyNZvhN>A@pj)$I1Ne0vKoCg%d_iFR=VgDR8=eWOcJ9fr+k*@ux&AB}@XT=7 zd`zhD3^`uA#SgIyfNw%iCV>{R%=K1x=AzY8=IxT-T z-}IKL4nlyUnXohI4s>)987v!svjs#q(Y9GBw|kzIsii{aobEY~{alV5ogl&oo#KJV zRWnuu*C`whV?*A`iEK0->A?dttEPw>(nKmv%H1@aoNUSxQL{HV062pxs8$ba^#N2o zgo0pz*e>CH<^j{m`?{Sc4?6-K5*#ySdf&iR3>^sJhW$C#5jbMPrz~VuK4B5af3RZ9 zf!vqD;ifCvOGsQfS#kK{py&Fm5JJ#cPz|Y4LB?3EnaZom>ev9I4^lC})#iQ^<*K&l z@|-`IjjH;aA;wCAHxKe3ACnxFguW}f2}6swv>}8O7*l=b|Ain^&d@G( z>^nYxVdy2;BQx)KN)Gc3eGQ=rY@@JK^Jy+bTgNqjGd5yRI8{urW^cV%ktj-XK4F(A zY`=u1YCQ?-(@Y`ia3)>5Fswpnr;_H9Ns%R8kVWc z7x}xiPvwoetL~S_jFjOQa$7U0M_0TH=O~3sWnq(YGh54&SU1j|{o2UniwqzjK$A4V z1f-xB8cRW3aBTjY)3&%bK3&eLK^Ef-Wg^EUy*Z~;I;&Hk5N<%3V%v8db{p!01Uy3B zPVJ6OJu0dHwCE{Tdq1;#uC;MTc|<4f*oT51jb$5yu~}a>+7vi#XwGi!RGT?;JlVB@ zazopLhYx<$h#?6@d#Kto(dFd8d5OuKgc3R)CvppTxbrPPyhQ09jl3ee$Khn1&t{S* zx3q>5-`8jyOw(&zXEcNfyh3rT87gjQs1L_cWulu~yOTi|eFTwlwek$N14e zg?d0=mIY{+>;&!#dYM3II0;Kmr@@9BweLR$5;YvdDongvbTDJW`)Ofu=r8!pRT6s~ zHUe}6KFjO`R6)%}`NcTgo5IWSWbxtNugZ{0#g>Qj7Qlrs#FxsqACFSK>BMEnDl9N< zw09!5>lU~>$CKH(|IaJ`8ZLx+rx*_Eq+oA9K~3d7jqBt!8o#}-m?->@a?*F8?F7|? zMosaKK71mz)otLz8DF!_cNH6m@Z~L;4nibkPuqFXAz7W4odE0sU9qypxGeACxGcj` zrbk>eh9a*+6@vT#Q+LMxy7K$Zw{XY>iIxjTc*a9>-p!XQX@3;+2SOoO+fLc}7_LTc z3fh`l{n6It2wY7`?#YZ(SZTO{%MlypI|)?lbIM8myMRDhCa>yRshXZUf>f5Xn{zIY zQ=mDtvNd6#wmD!ug8sX!sjJNLor{!akdD)GDUI#JD9h^5eq6awykZDyi+3pRySXm` z+5xPeNmh2h2&@4uM{KD$ACQsR?*lA_f_4rQI&dA(O#??#KoaozAMZjHAiOP`&5L-$ U62&_ge*#`-oz6K{+50E_FJ71%U;qFB literal 0 HcmV?d00001 From a8d9ce8bfc9289c05ce41147076f979cf7cd2b68 Mon Sep 17 00:00:00 2001 From: Abdul Ali Noori Date: Sat, 23 Sep 2023 12:10:32 +0330 Subject: [PATCH 09/32] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 49c3048..7c909de 100644 --- a/README.md +++ b/README.md @@ -4,8 +4,8 @@ | Project Login Page | |---------------------------------------| -|erd_diagram| -|erd_diagram| +|Finance-Tracker login| + From 7a7c90eb510230f510ba3e2f7a09d5ee17763276 Mon Sep 17 00:00:00 2001 From: Abdul Ali Noori Date: Sat, 23 Sep 2023 12:19:46 +0330 Subject: [PATCH 10/32] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 7c909de..a64b8ed 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,7 @@ | Project Login Page | |---------------------------------------| |Finance-Tracker login| +|

Finance-Tracker login
| From c10d8d60d5e642d1a9fa78869e64177a2766a507 Mon Sep 17 00:00:00 2001 From: Abdul Ali Noori Date: Sat, 23 Sep 2023 12:25:10 +0330 Subject: [PATCH 11/32] Update README.md --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index a64b8ed..a69e665 100644 --- a/README.md +++ b/README.md @@ -4,8 +4,7 @@ | Project Login Page | |---------------------------------------| -|Finance-Tracker login| -|
Finance-Tracker login
| +|
Finance-Tracker login
| From cd1e540451ae389874dea3e11a247cab58378844 Mon Sep 17 00:00:00 2001 From: Abdul Ali Noori Date: Sat, 23 Sep 2023 12:27:09 +0330 Subject: [PATCH 12/32] Delete app/assets/images/Finance-Tracker login.PNG --- app/assets/images/Finance-Tracker login.PNG | Bin 63489 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 app/assets/images/Finance-Tracker login.PNG diff --git a/app/assets/images/Finance-Tracker login.PNG b/app/assets/images/Finance-Tracker login.PNG deleted file mode 100644 index db5f27ae47c6931fcd9a9341d6a77b0de98108c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 63489 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

f3Tq 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 U62&_ge*#`-oz6K{+50E_FJ71%U;qFB From 701be9bcc45d83144c78d1480eea91c676773b54 Mon Sep 17 00:00:00 2001 From: Abdul Ali Noori Date: Sat, 23 Sep 2023 12:27:37 +0330 Subject: [PATCH 13/32] Add files via upload --- app/assets/images/Finance-Tracker login.PNG | Bin 0 -> 53555 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 app/assets/images/Finance-Tracker login.PNG diff --git a/app/assets/images/Finance-Tracker login.PNG b/app/assets/images/Finance-Tracker login.PNG new file mode 100644 index 0000000000000000000000000000000000000000..be7b549b8877a79534f4446edba1351e3dedf4e9 GIT binary patch literal 53555 zcmafaXH-*L)NPQWsEEQvlxm?UMMQcB73rct2sJ3Z1*AktsDcd;5HR#6odgKIhN3j7 zp@q;vk%S^3gkIl?_kQ1d|DIzYW$c`@_u6aCHP>8whdz0%!E~16EC>W*($air00N!D z0$-MA7=XWUDWpXK-)OuHH130n`?wZ?U+5gv^wdD0(x`KX&*_2R8DD6cdVxR}TBu(% z9q#$IAW;8zt%qtxKG5H(rxT3kw@xSrf_rWGrLDK(93@8{vg+#YCI&yv5^rb8Ds2f1 z3wmpvw{z$0Ep0Y7`rA6DRbTJGOh@0^#ZO<#z8xH9tvug zDdKk$Q+?NlQ+@kh^`-3iH)#Mf0salMJcH6ue^4!=A+b?^01b2e|Nf-<{sMP!Mg=f@ zp&57TqNl4pP4J)|2y_kj?MZkEKl~Et8c&Kah>ke{0&-@o;wwA{y2#we1`0miBMhnp znV%Y&XPbas&#x+|%l@eh0xi-4e|LHakHrMw^rT%o)Skee+;Hs}|NL=@hZ!V`1fKgz zz(*@-UtA+Icl z@=0a>(uUVr#X9bGZqtCAd8jk`gpSG1;C)q7mUt=|?W;()Cwk=dd!AxSSg$&|U*<3W zcjRU2$TQf^r?vu9wxK37cRCj3U(BlBM<`tgcGli^xHsl7^fF~d@e{1fvgyu5&x&-+ z3N2`u>n;|w`yu{ef@UZS)-|??6-J3!Foi~iTx+rmxC|eQbQs$P!#OE_gVl?pRg7g~ z0|B6*KwyEhtWehU+e(S!$5mP^m3**)em?@|kW$ z;wJ3I*D5{DDrV3uFYw0f4``M|Sb9M6LoJk@fbEfc9G|;VZTF1G6x~95vk~~<`hugj za*N1OxqIwy_C@m3vZgIBgLp*aIQ0>qio&Y&BAW`%0(z6)=i$z|SjF~s-6irr>3D-h0i`7Bd8EVv(uSH%<1bL5`BY2E$I+iCH9NYVE5g<>;s??t7bsutd!Q=MiM)=cx z8zp-S11x3AJc}2}DTkuutboX{O^WGVtV9(I6m;`6i7lu_H6|u4VH1|S*(x~Li$1P) zGk`C4j!Nd&@vV2~EOd)CeXRZ5q;BQ6uHFM5V^9m|-mV?OPAFGzR39VQ*AdsOe(8?s z7N)rGZ=rPyR}|T4K!^0ebDgbq4ECiBV}9#ud47IaAow`WC|uX$)a6)ox9;zlU3hGX z13oQ5XV2Ug`aUD+^9se`0M|9MPc~Ox^W^!C_!3w;q*s)pZ*6PpXQ^_!4VNSk$4{;b zC^+}80~yhpdk$8YZobLYiAn!1S!mC~mL)XEgyC}pJSm#*2(NOYNLs@yABe0D4zEtt z&lwQ{&Y+89{Bt+`r5DqmNBi}edh#UL0}qW#Fq>)x%<|-X;q9T;C33?ZP>>4M!7rH` z08T&H>kMv}ihfSOs9T%xU!VAh=7U@2itla?>1XZ#iq*HiGw+^^9%oh~JT1e=HsZHs zbdRYGK29+GCk-I6=@W$1^8>-v||#SjMb4W z!+Mx2kg39@T(AtL?m3F?c)f#n=)Hn+w&;ZPPim43QJ}ns;hBSa$j`Xpkf= z6D5F8&@?R<7#OZKyoGJm+O?B2s`26IH8WE!k7qL&=rT3JIZOANE4?QbB|e}KFW*KL zrg9F{S(90U4~fBWO1`y?X-e0O`4u_))PqECNvneIdp$sO)E{0Y;WvKIOE~6I#?pTH zwdaX>Hhz#x-~0VjBqD%gB+>eLMPj{)~?$8z|vu+!d_h2rfhRO zi!caOKy_5U7e6mC?n_(NdDv;)XKfM61;>0zFcvQ~pudMHv^G)M+hj!sb_TLxFiIAQ#FJ!0EzaMz>a&yzw-*)5{>DFaEAZ)sd6Dm#g?q7%gOiMs&-+X` zRF*A~ui6zh-F_%YBKL10I|e3(raw9x9dq{0n@2Yhw!Yi-953QdM0ZBJ{L_9-^3Fh; zijZ7mSgk5`vDAr&$B~oJCcVkhq+eG?%t><_M}NFxV7M87|AFOIW&VKGeR$6IQjtpi zDd>zf7MX)TU=)ppfXnf#0EpPSv}Tu_k}};E^f-<3o(ca{VPfnp zjN?7F&t&0{E|fv>eKwK4yxSCk!7GBDQ9V45LnKZQG`~6+3eVa%n2|v~#a>d%Kj<$W zhH0`d$!ANz11f3ZJ~`ZQzZ|7X-u}38W>=jRhKes$v}PEctyh8Mwd3d}6oauFdE$?9 zW9t6I7*7LpW2&#^YKWL!eVr2T^0ZZQd>Ulu($uPJ?3_=!;_2Eu9q73V|9!7`a$Z&a z!7yx+EK)rW+qW@3=B`z;iketc7ElS?I!tMr_ZWWps;RDM+hX1T=9RARoqjMm(fG@v z>!?1Ai**d!itnyvp75V=H%DCc7xl!|>#gcQ(~-)n{sj{o(ks$_4K3X(!z-B`H3yrp zx=q;Ot7>9h|HN3Nmfd`f=P{4`^A|lw`DF43-Y9~{6W^tKHLP&X@wau%%i2mB-jH;U z<3eVxp>(L1^1;pA3x?!xzkcc_L8J2;zpvNcn-Q;&xU8R7;3YWp>zl4wh3oZ|@k*Uk z8^6Xy0b`-kx==P?+ptE@Si#m?vKbxcI76#wK`gYCvqALc-v$6QWJU3b#Ti+^htQl5 z@uC!woI#;nROL|%tio~cKH=;q!x(ihNS`qqf3c*;)?)7@(W$@Y_2xHof1?{~zY+|j zRq>kvVP@U|!AX@)+RQ3P7wsh7HFp#}Wv14f0~bbo-M?_29O&1r#x)H|$yh!Jtp6c| z4m`42#1fC*9(%5&qmK7?zUK@|jn8OpI@AtF>Tgy` zxA?e;AoK=^t5D+vhF)GCYC86}NjdhQY&kdW z^D4w2j{U+fNS)Lr71wXAZQ>`~Gt5))e^#!Ze5vQ0QD@?9O6NhAU6O(wosnAGtf7nr zj?0}+%X=ImpD*Upps}4DpDN~gm~+RgPj*WkYf{P6^946p@L9^21tn^pvEQmPb>w8h zZ`^29_L?AEYW)mOL8l+wP?CO8SaRKi4m8UR0IWy?qk3_&wyl|Is4fNy(=&2PwSwv< zzMV5t;oUh|*Uz-j;*ds^+{0KPergYU`KN!mY?+qvu6HfZe699v@gA9Aw6g&PC?LK2{Fxlck)O--#y=x{IAK9j)v)4T$#D_BV@H>3btTrmava_H$n2 z6WOPK>pc)?%>DQ~g-xQs+p=_tkz5s=$p5y&i};wp>mpHV@YZe-Mwc5Z6;bF0HT_G# zTB&aJj_;CE^umO0A_>LHE-2pcvn#YuvKX0zViFE#C6^JpZ{;}(&5M3FE~1f$f1Kwb z(a|q#bNWft^QmF|eEn@l^$0Wje!W*m;l;Z{Y(h>an|Uf=1{CY@PUDW!nX^T^T(Tq$ zmCRUu<-|U@9j<-LhM9seSUW3Iz8#T-=6)SmFgubYPVbJfy0^>Dv>Mf$Ch<0|(Cj{M zz~=K!oUW~PuMjZb*sCU?w*^=XK_KwoIVYixA_H&`B}n=z zd4`d9t(QTno&Xi@?`M6_#}duQGgMLLJtx%JBUzlXYchDFSw-K|)1nG_+pagQ(2On& zf;V2F!A1s}g5Uc*xwu1_^65}n3=YTV%|$9)c*hoe!O(B@aJNInxXIY!)iQkZj|B76 z1En#(rNii9&2CYXqqZkfrx7wEa7ld~M|G*Wh-BU(x~ zB7?LIIu518)w}0fr5v2ApjCYm)=Y-WJ=r>V!P9qN59sa zSD2~w+3Iti8FEvo(C?BIro?Yrhs_v`t$WSJ>Jlz0PbIn9fPG#>+g=ZC`Rr!Fe?8Pg zO1Rhnh6=+>&vb!Pm|yy-N|4x}xOEyyiOmo1#Tw1O&!hP{c52nlPtfw^o}F_EN_74H z#m^i^yB!_u!#?bE|c<64OOri4&tM0V3VO{ZF=cw z1Y4r`qq|sIkTum3YWmkg`4}~HU2Xt&u-KBO8R<*qeY*X-z`4~ab6ZRU zT|}JriCDsy^P8OsJ{&0R;L+JSIffu{b2dxy%*XU^e4mpQ$O}FELr#Ykr4kk#^Z7sg*}CK#tlHOE<8KeGWjIcPf3VLw{BQHLFCaPG5pyE!Xo z?SM`AGLG~N&mD{_GS6g?Hl>fV2{wJL2ZV|2&4oZ(kPxueFYR$64`Yn@zLvDsXsfHo z#P-&B-j59v7F6JANP&FTd8>HWrI!nNa|bT9W4p|ro>k8=Q-CxVzj7`(vawHbS$AK* zWn!V0J?$xZ;ZNZg=VCi4LD#QzTl}9PZTHe8vkz=zkUC5#&smJ8-fAku&? zJ%g$_mhv++x=9p?XvtecrCFF z3e&M(Ub+Xe>*I1QIZa1q%9~YbXVPo4ozuPl_gJ|T0S&IO>4?l9D=r=>w$v#yudY(& zp#wvJG0dW-Wv%?XX}x}RRr?7O?f zKzE~Xu0O7HH@RpP9OiWi_n+K#=kVVg&=6-cX?UxO#@e5I-Fi_Rdm~hxC2CX0UjcOO zRFCi(QG0`a*0*lP@I)}A+_Kr&WBy_Ni^cm%7M}|k96WfrIf>*0C7tT2K;fg`pA8Ec zhcSK12d>Dag1r2ak|*HTn|$fc4V!~HBV>>olu&3YvFsoW{wWq&Zr^KQH65^pu`1|L zoE(#{*-2rSomKmcoBYiwhsB7c%Te<36Ysk+j7SIR2$dkWqyUFzB*8%-pd>x3K?%{BzdicVR_q@hld=qJgVEM)D*aeb;yMZX( zByBgwb3MNQcWtZ_p$@#n6<_--=LGD2{gajbZms4)5Rah=vS(oKQ^pAsCA0c0PSnBk{*|P5XF6Gx*ecKJ(oDdGsp)!m*+=!Ommo~5F$Ega5BZXE) zeF){9oD-ByFl=8Wt`|4{QCJ56*^Bl-^xul+dnQ1ub+HaH&u1fnP5CSpts*ROe~ zpnSK|`(Cf5RB~=lO12qdbDPE=#2#+*?utpkZ(9aqnNoQm@V=b|;D9^kpUqzxCq)4F z##&o!y`*WtgFgyGpg!7YJ52n*FS$f#W#X6E)0mg91@JPtUVTa(N&mop-o{S*t~Dgs zCSMQ|7A{wwxfXhQF~zg%wsX+aRC)M;v`Tyf4LpJ` zJ1jW@FbLaRwmKQ#_k+oARTvihU}Z8oXvWN0eaQruJ36oPnN<|(rXFz7wl;UoiWW3` z{+<>sdqFYR1vUq2u(*hkqUjC8$J@u&Fwx{IS%6&l#P% zABbHWdt%|Y-iAhE1joEDH9em2x)9U1*EZIr8Ae0sUA|hZ1-1uo*9Ufch#bito6BGa zCTfWD0gsjUZ0)RJc&%2YB3G!sJmr4fF7wVHs>%0FU)_Sd{6W{rAU#paqi311%P((E z8z$k?PfXT2nb(Jc}&T(2?>V*&VYX)TS9qqN?1ctYN$tX}hhE zIXmE=VOLB-dDSmC%m3K48cJ-c4?W%;J?FjNl+@2Cn3CV) zQU`|W%l@EScDQZXN?v=*4t4Zj&8;c(*T|YEmid_@rH67J1Kxj^!-H1F^a zIV`Tw4jv@s@1r}e#kC68(t#cVp!-E#rnt_VBGisT6%xVd;>n#ju&n7;9qCRAn&dr? zUgka7IPJnB*~V7so$xe62#|=U_YXsEtS-)<&?i5XjupWMCJ$B%?wkLz%V2{XXG6Ak zWAWLnOBVO@Qhe!C5AqZi@*L8zABB^Jfso2|YdU%fOgpv0y6r6f=vzFY;j@{yQ*nT4 zqU5VnY}h2d*mHvDD;W?gyKS1GW`SjYpsZa#1Bm)S4Dsih68PIuZJlppbu-bzf&y2w z+t}jaoFjv8zLh$&r9Gcq-q-d;W~e{dA1mk#JbO8UTR~bN(b$<8Cc5x|x$1jnQQ1n! z+szTf>VamKBUuehdA>eY`I4R)r1mJ}2FIXq_{d_1kZ6_&{P(?`{l`Ka?bU(dmsdTa zOnGYY*S%h$m-+emN65^Ck2UaQgezpPEI8@J-zkl}6$Cl>O=TFdy__I0oN{v943&7pI-L!0xL z$~#Hb`785%bKYNW9GUFw%EQI-x|g@Vymg*1MlMGRFLpHze;J|o9TrzlE%x3HjB?|w zltR|K6xRx@N~ucSEI#iwAJ;1cF;ic3wy0%$hfiH_=)0jDXyTU!c8eD?D7jB9gP&3D}^?_Fjh9sS*=^Xv%K8jCSh<`JiTVLCXB_Q z%C7;koNxwEgrZk8+<8lSkIcYpm{tJ^^A{)mpD|r|vjW zA%Q>fX2p$34OrJ_d+;OzWU4ug&p32*mtNI`N?w{T@0ucGo_YLy7K)I<6sP!%){G-9 zYhxrDUx=Xos224=2+tyu*XlZlQu6f`*B@G(l0psRPH zm|R}5IJrDUkts%RtiMA{Nu-()_XL?lCbWhWEbqhR+2kf}k}A7*JvL`|%;ZQJQmM0_szGHeXOjVahO3b!$fI}1zk z@p4uR+xcRV3R8F`m(Cde&#|#K{yfs_2HmcThevAla1Ty5JN!w%X@9J zKZL7P|7@xFR=T0-X&apw0TLiGgcFb`2|ktqJ*OqHy*Z_{yFAGHhVOgC)OAcfnRR-Z^7! z(?t$FPJF)JoZoafFE)&|Y7**MHa3%m%iA%z`}CV$Kz)#|!2YKk!I4C`O$X&K(GD%MlXL+yXPW zha!s5JK!iC5hZ&X5WuoDKV@JAX)I&-WIX`p`sM}+fcyRPw1-|9MwW6<=ll9{$GYwN z0nM@UpWj(4$%9uN(w^)2)U7t194BNaYHIZ^pSIvvir@e2r*W=6RVV(iR~!v5e!0E) zZln;mn(e{t7gZdf#{d`2R)*K&;SDZOORweaZ{t0};WOdgV%YKQ2R{bK9MX#dBKlQ? zm3+6e%lqWRbM=yQBMZiHVQ~Y^O&ZFv=X~YTD;3`L%e#gCm|puQfe3UbIiuJIXqgqC zHKZ0(l`W1+q^juE?v?wBFyoProlBKouCrIZK&<56X>OscTr#P}r6~&r1Okx4cHtc= zNAR?GF~BWbzp=4AmP~meyRJzo9hv^TlQD7haf zl!X{RcKRnvyNzFwc%frFRaSYyr>OB1=teUx_{sAmNE{z9eIQd*od3RQGI+1Veu^VW z)+Trf;cNFB~!nOnYG4)J5w)On8eHPjv8U1N=xIFF5l8119tJ2_Wr3i zlsmAvC2eFCen|4!X1H_hs0Y1`BOwXZg&Q|JZ98k6IRd0PR?mR?md4VyJOU!Cv6XUYlN51w=1HXb4$?w6s7I_`tnTDqC%gGW^-UrxYAi09}b zM9Wv)q9!HH`-%Ct*X0x(`nZx*0viQOJ@ky=Y?W?PbzMu#^z3Q+y$UL7RK50F+umnD zvpy%JomE6@;Xj`c?Km6f^lU5Pa}RDQkoKYgwXpb+AqHj|s#yX<9t)*B+YEq|+Xdyd z-8L_K!ZbX)XX$%k?NL+}42?W+4Sh`9U7xdIvHR3&c(KxT?B2fei?>2`6}OFCa`ZdF zd5^iBM+y_~eXPQ(UNo|>u*gBo&-?Qt(a}qA{GHVM67iS&d-fz8DWu+k*XGD&P{$={ zto;^>p8yHftNXVC|3=jX6sug$&I zPrJ|Wcj}{8U)j;R3Upr!6ZX9M=wk*s%{S6VoFPq_5$*poeJfgD{=2t%^kN9Ft^cscG*I#oCg#I#x|aW{9aSZ-3;_LP_q-r{CJ1%Ki4tqSb!DKqY!AE0T0 z{cE?ah(=CO->oIKc)sgrv{jfmrF)PUmiL?XPc-m5zH#p!BlQxAT+&!hpzL4stz;T6 zt7Q6sU|R%U6Xyd&06?f;tDnMMowVZ=q!BL`d3-rV5x4o@n|hM6dzMQ&ALOs-6fNS3 zhXq|~Jgfq`AGAJQq|3>(?@Mt~dJiWYJ+MUP?iflsPO1voQRHQGz|gG`nuax0(|NBM z;f^a#+$CELVSLa;paXjM6y@xx@T;@)?qkJ(L;Yhvk75nmtk>=i0{#PjW);j|r(Z)W zR}%%!8xZ1!kG<7Vq{{4UzB^igG8$mkfUMl&8i9A(#pmDNVEBj#C1I0w48!yKfx`D^ z4`zBtD5PpPyet6{`oJ0rAL@$PI0NVK^1Iu=fH9!wAa+4R4SH_PHj=}xM1exg=P7*U`jrayB6A>iuF$t zyl%Oy^4UQV?KGC+|nV{>$1|oy7;X--NNs+)K{Rpb`w~dsA8Or)8`D%;_u#P456< z7{}8BI-@`()eEn!Y$dQFk9iCb1P6|b6rqsHR-9*WlEG&!iFmdr>Cp|t`tMa#4#*>P zdEIf>;QrfVW4PN6z!nwcc2L` z+G!eKsxsIOAFgmf+NbJM_h0kus&@)uQ#8FPXy%bY2aacyx)ST_c5M2YS9Nlqt`U6) z=eT)tB>EIvl4iZNV#=KGX=2tf!gOlKVdf#OYpriVqAa0M_5%iz(Uw9HBV(g|(2VSC31l5rN!J zs&rb`SQs|cuN08AL|PBGG4{ln0R4qxZUyDcL#0Bua3h^0mXc@vrbo89X>>v2LJ4Ai*P64$u8Qdc(C#^> znn2|Zs=*Cz7BCX3jTCKX46QZ$MnYi(U7>c7kjGDIbBYn%BT{!s@QJDw$!EVw*B=(6r>!MAx~nnzx;*?*cf?N093d`#~HFWxu4nsDo}K{O)NkS+aN7lw-PFtH1z5E1Di;l?3-Aebhg`r`iH$P9*dK2P!K21 z{9;69qS2VW+v#ihKos>~`)U~z#7^l_!XhU?5WQ9aXN>lx=Hn(7b1E%)Kd4W zcgAqVc_{%|1*4;let-0a_vM&#J3|EY({zDm0&HM8-olfy2-+Y(O8783`rXCz{Nv#Y z_49a_J}-lV)+c4pV|P@m3MS6K{P@b&ciE!WU3#vxD;QJgmWLo0DF7?)i2qjE%mjD25i3d^l7rR(t&K$$~3zQGeQ~96sb&JI1&AE@IyP0 zdtm4KhTqR=_eQZ}-S0+Z{??RRPs(=t}Cc!ta>hlR1x9%xe8Z`JRb3oY)fLQCie~ zFdueoY&t0_6mdR!8~M;LWm~0ONu%*(!C!7-jjI&BvCRXtua0aQz4-^fy|pv4P!w}J zxRgj_)z7%#KR&SgtyD4)EH3K(Q*AHClkKK0N^}(^Gr?fnYz!uWW%5N*A5PGm5dxq} zQuBoj0G4Nx5nJQZ7j2*pdKv8R_FSOd`;}h?Fb+@hs#u-ET^&NcfU8-Ogrdrd1U4sT zMk;wYZNj)(E{Q7@GkQlANGiEH3#}RU=;XZqd=MsO=E=KHc`EQeA}YX2ygJF5&yc?S~7I0 z|I35P?VD0qZf=VF^Y)s2M3ITvB^zkYMi;FLKscKIyyz)Sgou~aso5>^jbBiGLWM}R zVBZ@68F|nn3{h*vEx~B(5U8rxNkusM+{!jhvqm>1JLR2=4UIrIz**?0+p=XqB2lwa ztV|D!11Is;iZwPo7Xjj$Z)&nl`SgShg%Z}Fza#D1n7L!a@o1$c0hTmL=CCm)NM~)B z!6?o+u>tbc1HVENp=J3Kb=wcGRCQs#?+1GDU^r03g_W%)<`!JBW&LBOJ~MI(Z`Dy@ zZ*q0M>6x-}ubn{R3SvGH)cAy^gWc3F9Pb~gcId+u+uHmMIL>_zD2JF> zCgF2kT54#{l)JJXFHS{w2}9I%DMB#X?XG2?C7B9rAc>&0%DkPdnaIi=;rgJ+D6{%1 zSBtEXVL&3J@$*4_r}%R%rnq~0t8?`e-myIH2{*#HY_LM@N>#`-&-8X!3fa!s05$AY z@KY%g!J9InxbK>Cm2~j431b75qPE*_oZk!8Kkpd>;3^9p7 zP6etDu|BSl)*4`y&w#VK)VQZ=K=)%lk4ZNJi2E~^#$2lxgGCXGKJOXj4D2pssc#Op z92My5?-q}~Nti(2EY?lL6T9)H7riUmPz2=GQh}JcVXp2MFvfW39n;!V;}N5}m8yva z;OKo8o3OE&`?AJ7xJOvbIp#ZVNeP<|9FUj#-{8?KwAa44Q-X|C6D_*)9Khn zgmQw__at3RuQw>>swfc}P))Q|&Z^;;QA62Uu{Ny&%`Zjha+0S510}W=hvEY$$uke} z)e?QOA!z~oPIhjv>gU`A2-sMu98;=ng1zYN?4N92DWgv^t?71fo;|ZP=8F0i2}Cr5 z>(~El252uptL-R4N>~FxkTH_OW9k)uU%F$^9ObT4c#&>TSo#x{&*UJ$;s4mS_ELmM zD4TZ)5NtUUaIp7(YzgfV7G#;iB~jP19we&LBMdYyqly5ccI||(eLw(Df@|Us1YhWL zD2*&|&PL7g(<~H)n5Vk|oK?~(qcI0u=Xh`M?|BK0bpP$zEsK8;;@GRA90mYox!qy% zTt@~wNC7yJe-+LDgWd0KpmGCz93^b!iofr6;Hu=x=AWxuY*q4`o(VRI;b{|nN``4YE|^v&Y!!|9Vfcj(c4_RPB0!k`F#P+RBT1}MEi9uqx|&J#;%Df_ zIHe0lOT7#5UpVOJ_BxiGk~EM>gM`xL)BJ0~)pP`Wg5eqT`mGoD=h=cb zfqNWO&u&bFY~t=ec{V?WyYLP;G2{N<=ww8MF|?sqx|vdQ|DutC_oPRMDc&af9(MHx z{r@vx!{<;$^r^?1K=FFoRfcIy zLP5S>qI897^tfcwm_vJoK^fbBnt-D(BNUT=3UEN%^$de6&8*D#3~KsN;R1%fV~tDz zD2z${OPKD2Dm=IA6lj=7kvjKNPi|fdp^_P;Xh0XePTB$}o-yNF-zjg38NtZ33y0(? zp$FwF`AB0Ifc3rlq(*fpwmH|_&QLiTj~hSV*cwB9KQ27dGm`-9%&Ge>dIFayl~um`sTp@ zCJ1!W`E-Gd!4GIWT^K;v@WcxP%f9x)2gccKWD444zITi2nX!qGMa2BWZ;WqQ!xM-P zVYK2X;txw8cFtT&6T+H2KNrM7bM+tUR)Z5EX#&De=fS)smCsukvNn?RmEJuEE<6N( zAk&yrH}%55k8DVSq|Kp#tbIkC8t7?2*V{`cEE5Hh0$&!wg6J+_m9W&||II)TXh0H- z5rhc_plvl)rrx_=2hjAcv}pA#!6sITXXgw74M4G98l<`(bpGtAC^~P(RadjN<}#pj z34lQK3qb5RCzxPa|FYmsx&OgSJ0O*s)fFcQ^m15@N#DhBN<9D^w)scVMi`AbXqXOg zi$9uA*r`WhFH^-~py2Hl#;Tfk6_1yuE#H+?Y|5_us&IwRcS!u&#-#9^QXTVt8#xv1koZB?cG!f#)Y0~H~u9vXxR)}Z| z5(S-l&rTW7XCoo#|9S@SX(Sjxqj#o=`2dKir4AOSjbDxtotG3?TS@qfI>GM+DPiho zLHU<}{hW=?Nc#?Sx}+e)d%n=EE@8o&kF~`~m5TcO#R7Pn=F1?p77Stqi1aRiD>OrZ zk6arFsiA`p;mTY|C}Dtc+5)xIT?+twyHJqF_faUK`csNo1_`ke)+G$0X&nj@Ei9o| zji4I%{ngg_IzSQ$p0&L$N(&T@?wtMXw?1_(|LhHS^zJiHLa0xGKx(bA2v}%A87QBT zIz!FNlQ3#ep$X4vGx3mG3w?ViObJ^iDI&-XYzRQJpdG*JNN|r2KfWQ~AzZ<_?Ac@tfHtw%k%(C%?iUV%)I!pe) z1ogi|Tsckle%wn^RFG)@&$gYos*k!T6!p*&_J7u$)-k}A(#z76_|^?yy|Ky3KFxwco{t@ej{^Yc%=+rOl8wOid$Nh!}u^ut1vnyK{glt95Zu{#g=ns{WO^ zFI4WThXJ6v!gc2>$$#92MT&&57^i+h^-zAqDwy*$SL~Q%?8{on++ISvlAqkxtyfqi z1BoCew0{`ZSKnWJT0-Sz)VOAgdritJXLWDGg-ALq3ep4E?Bsvm2!KQqj26(;tf93V zW|D!A=YvGS2t8~XF-$q$G?S`I$4_LReGNyzhJ^r5Gs0NT1e&D^M}K`dnHuNT&|Vtzf8%_t3TDniS-NBJ z$==XzMRe&AS;aY~I?-hkcb7W1eHhD=grO8k4hmNACyf1Y%|K@CMnE~(%L z^9S&Q;0MO_6V}hYk}EuuKYdDqbo@>yo+e2-`m9hL6>#}xD}azt(P^wkKmrRcDrrLz zfu_k&djw||AmbzS@Caz^X5s4h?9;q`*_M8L=>rvCrz{wgCvqj--uqUXHRJZ_dt7?w zYJu{siW**QfLtWobL|eXttJdH-wh~9PMmlDs))5vVxcLk#6-|NENsXnbveh==;|_WMV;Uyi!z%(f;|!kN+A5_W&1?6 zMaOt)5QEZ7RstB?#ACU3i2td=d8eg z1fM2@*VSDv0F4Dn0f$k~@F6e8XRH!%o?8G6?gAI`9LasD)4eY8eUv)n8A~>Y`%M{6 z`o?_^n^$N=DUBa2JjP<#XC9Xj#Bp0@A9GRlQ%o0pyWaP6Z>8lpjZ0$?N+l6xW|I$h zn9Nko;dvFlQmDca9^ZN!I_}tE_i5>IOk%bYC->Z|<&{W}A$KnE$1M`4pLEllbByO| zdUZ3x#Vm>^1=ow{6J1d5R;FwX68pSJ2k8Y$#a^z)%gGD-bTBp#z5?8aFJvc;#;DBF z_c&5+Vm6^X*&RMD9QE$^_a2u^;PWre*RFFAd{It)x+QP+r^eGBpptV*m-K`2*ZIx#+`}?<)m}OjP=F#ni5QMEat_glgR#=59m# ztB>9}T*SwLyvyqu)H|1)lYkaV9;>Un{=6lZd2?Kc-_mC7CPSnD z$35{LOhOhNNpDmEFYaN%3vzq!%^1Q&30MV4V84_g4zDWqXT=p5T{T@}q~X-vE$!;NAz zS}2NWSmDFra6yDHapeX{SlF!VqtyGQ_0yw)kBOy~Vy%~K-i^xg-;=vc%g(>O=YbL% zz#n}ilHFynhtvFtI>empyz18`8b%1cC!M<6(3PpmXd!$1!9O(q1$J2zQ_8l$(HHR~ z@wL!BIjx{1{s#x1&odicnKW@KZ9p}_lq~b4yTuyd@YLJCbUchp)T0JKR}*#hv^P*Z zXjs|l#C^~^8Dp>*J+Dd7JCa-P;?pip}LCNrw?|?aIbCaEXIAC9#ZFA@jRf?yS9EE8ZRD{!T{Qr_iIj zrIeh=A}qqSY-j8`$)llxo$+*Y+xM2E>@)g*Gn{G!P@w|Ee`_g;Xo~{+g8&tx<3|x! z9}K-nBi?eoJGpd)c~*P)^tfd5%c~)^H(qR&h@p(u%LDn}$)!w6{;(*Me-A0rAoMy7(8eJNk5CXi31!ahmdTS-C13P+0$=Z9kCu#&p!s6vOcIq}%{AD?fO>QE zCxWUc{9*ssA0Zt$q!Z`t-@59;T3RCta(a<%UdK1;R&t@6WU|H-#nJ7R3tjRTy?0Na z+q7^=sCGr}BO1ffh$bP)J+k~04u}B8Km#m;aY#+P{i`}$SQ^BgA->=$g#!^-Xl1;8 zCnFNRWdn#*dtRSy)vIrP`WgQan(SU8SlDFjA!gwghG0-O}F7 zu+n*5a^Xj-fYW?Na(>6B>)s7*zy3T!FZ&9J$B94cxclB2)VIYbgy8Uvf6~Osb+cls z!7bCCbKw#HK)qHp0*n{yoZE1r7{I5~w02AxSXM0W1r@*QIT)ea`I_5+e(ii8=z|Bq zS4bYqHM!oM&y$JY$qO-jYi~>7n+==K%A9NBPc*{*SVIx$!r~CB)j0pP8qn&r1=uXW z_IuMH0LgNaPlgbdk#d&S$;R3*J~D{$Jj3>wk)~`LryudRq~|CwEVh4_e1Bo0yuj4o zh6ns!i8DOky4<(z`5HiEG>#rgeorC8)diFS$qmE!dw9&0EVu(F|L3r5%e?=V&FX-q za9M#ymIH>zw)F*gP@Gsk<&=>Uh3bZy$^C+&iH@3+idbQZi6QP+7xKR#pg`SP{9@)I z@s%h#g_r1GjCZ(mH?k-V0Zz}NsqW}y*Y&M_sy?vPg(tm+NftZ#J4=s`<@#UPUj6x& zkK<`~=lgQk^&dY9HpcG(r_6#lfRco|PXKG}p*REUmIZc;r!abiM0lOoqb>g;OvA$} z;WybOjSp(R{sHpT^W)T?M9v6sya?%&xN*r(FlyEJB_BA!D}UAO{+vh$s`YC2KS>aK zcI^JI1YLjnLghrG=fL>jm!h57JOga`0qSt~7rLV_U^Mj1 z!=ph(w7eRPpKDG+>SQWjG(P#`(4i#DGSr`HElry{Wk zVXWL-mk$~z-JwXWdjN_CRL#{_iRd0-Y#ErF!jTBO)_5mPqMws+SgM!wmwEU); zrA!e)9E*D>BFG^|swAJ`DWM)b>Hh<$RTLZ`i_VJuTZ7987Xw}#`hd42CmFH|NP=0( z#JBV39G5l=N4s1mHi5DZ^uh<2Lzg1fj;a_i0!0J>sLUNyl~bCM1f1G_WY+|U=R>am z5v2LY&mvf}IQD_OArC<0chCMi8fYxChCrxjCWFOke$9lRb9}V7`2k^>f+ZnfBmal1 zFOP?M|NbXMi>0ej*7n7c5F$(67Hy&!W69XEZ`lpm+9gyP*`g>rqZsSh5^9hTV_!34 z9Wj>dzw;jIbHBg8?&IEDGw*pV=RD8zJkRr;dlWDUa|O^RP@XgB6DYTjK^Gz`5Lmni z64y?4!r#3piVtcLf7AIQ#bHoZRT`yZz$i(&#qhJt27)q>k}qJQn$S{o z6gXmFcv;WoFp9Iap9g`Dn*~8CU+}4=^Tj^>BKM3ZJn*yLaYDs*aeB|OGs=-L1kv}N zijv270$1#Ix#4pwNeoyx_-kx-k@hU6m@opz?R2EdKLuZRJL1gEOtd*h!Q^)Tvy_jY ziKMA4fX#bB0Vd&|8-Svl)uyE)D-Og|1bJvG%e+krLA`^LWuTo%gl25pRd}dm;Xj`R zi5BKWrbu7!iQ$)IVlmjR0vF4isX{E>qCMX!A(eRSCaND{(!PXV#lfateUWLm$%f^T z0a6_X)rt8@T>!3SuR-$ub z77!NFF?PVFy!g{brpl|>5v=w+f4*ZObKvt#1#pc~vmHqket7X<2VaWCj z1>8hKbBsM*8^S#(V3uTz-(#D-Fpr!DdF)w+AJh?b96GXZ9Z=RSRcTH$3XL-N8>1a= zN5x)RjxByQ(j3hGE7hBteZuA|9}RPl#ppX}tmMa7%Ythl|8{qU=Avo^-7o0<%?3r^rTl}T$W8utjxk_73pRGq}O=fN4v~eQ+&Ybw$KK1!|a#Eqh zN9$KbBJaX0Qi!~DaXT`Q>uHCu98&lNe<0MH(?J38h8vFg$?4OXH9=U}4%SplAP7!- zz4%Pz4NkN$46-6Kdt~1X=Xw*}5uEsBJSwBJ*x#%3_6`pHaSR`)T|zpqe1p$D-tRhH z4`>+mgK37@0+yJ$8xPEGPVD-q*pgq^;Yicd#u~BBHa;AibzSB-YxQ19mCYPe&C`&~ z+hvtYl(Sd8D1oW9O$gup9E;&VHp4T-YGvkvD53$0(86JxInqOfsZ5($))qYGAhVHt zrt{Z8D1`@^4Q@*Hkpd&gvbHTp=!)2D7UqLI*&OfoLYOcUHhB6}>i%`^$kWyLTV&OT z{5yurYwc+>8$U;&OX`YUjbfY*wujA$H;-%Y%zLe;Fyv(uZm2hJPWPg}maxjVP7II~ zbf_1r-V(c`{RCbRop0~IIHJ&U5oAN#s}D$JL6rEscB#JT6e3%z2`{K z|1QK5uFF0m$L~fRKVg&L-F$1ns&M}6hV}srJXGw;O@F-S2o{IM)a;`Wv{pH%`voMw zlTczmJ{@j++N%c zF0|$}$@VE0h4iKp`2y=~L!IYRgIT<-$yEnWoN_rZGdeHcH5b>he;FTT(rNG`_?XjE zE8G!!p?_}3m0LH3kivi4;*AI1vLV1*e4zOc`I=+uRP=iVV%u5u%|ElZMxAs~LfMHX zJb6Dz0xDJmK^os_+**?lH(p zVJwFO&%r-}tTA=D%)?j--LWWi4#&IQ%_s2Qe45n)3+?KO)|kWc@6#T7S}8*NWmfSO z`P7`DNs(hFQLgq~2CX^OADf{^%tiWp-4W7vdDG+6cxps{JcUeAu;~&svgDrC5~C)s zX39+E-DKM{^k<*k>cr+=!}Pw`!6g@wxpXJ!zZh$Cwm#9uY&(w9iMpXqCtb*bGRMIC2+MwJ5t<5KfMjTFbv}?g^j%{5(0U<{~h_bNoxlbFYcV0=O zbcj%u=)@XnF(j3Jc(h1U5O%WTc1o8Xh`ed})3Jc_^ml~RJqtC~w>~dhH~NCvHPHU^Dgw8L2R~3y93Kl~y#@Wa`8(B&?&HBsnd``(#a6YY-{ znW@C6G&`q3=z@UkN*jrf;k$IAvF5d-OdEG2!STT3pj2DTOe|WG;x=U$Nd*)YVZVnX zB@t`xF7c+XzWa(>^PUth*JZP_$@fELlStgNSp{}y$Yd8bo#vuI23{O< z0v{&%1>y3cc^Y!v6r;{k^W`9u$%frKH*zZHXWuYEfdA;eO_>0@IF%VxD~{}NR|a3EEqc-ELOusw}}?Dg(=dRa|k2-*`VX}*uG767%KWY zD1|FNJT&8k=RE^ZR0_%22v2-_s0ufjht04P_;R)$;9;fhAgYe8AD)521X+W~DRqkU zp(35={B*KVlNsR@Hr?1w3+1Ct#7$L}J* z%HgKoN)*~GmpPV7kYF&@k`z>(obm3g_h<}QljL#ya@D(m#hoz_jMham$DhCD8%-Ya z&zJ&DCPK}ZBQ*c{dlBcidSZ3Eh*SS=QX-30bHk@dY8%Vo1rt8!k4#?e7hp2kh&=3; zk$t6g&`lXvA&SY`vM~U?HrAdek}3;a`;PtD94{q~1<8OI3|bD(V+~0)kn_usmY^W_ zkMk+gNH0ypLrbAvY>sGS&jQWVJT^j$U9a@3U8C^Z6=Pq_|1BH7b7;v zXNqr`ePoMKC84ebTyN7A>{`Cz#SYDzCwR};Z@CnTF!yW8%Ny8M`T&isLN2F>{?*Nejv@~Xj zRmW~@j}#Syf-;BWm!!NYW*#k6jC?N84!V{9=ZrudM7p#edL!L*{uE+7JXCKV!G2H4 zl)f?oFa82iu&F|kAr;=MOM~BNUdD?wd?JvB&qYNP3`9pM180u}NK--` zYl@LF-iAC86=Lg0PdMNA%pR#2U#U$~VW890^+isHECjO(fYUZe)xrN0b59koAaZ)t zia{TJ`$;7f2Fkr2In6c@^y32=l8$G)ka*=fKvD#ie>5WPHMhNd)Y4Zc2fho9)JB4s z4%YtK(ZW_}(Zgfzg~#M(`K@AI-aElg?;H22>!u3h9qZcA)P-sUwxi z>1IZ%6F`S=^xCrUVk4yZYr?REhk33YV>Bt7C_kININ_^vIEZNCjNbq>}#^Ey8QhI7FlrMv~%yf_`o=fNH)N{4A1=?#NFjfq&UvGQs0iyD|fwaK{ z3r(8ev-yU@^KwGr_z{5t?X{z+s5H?!G3fPg7Jt-52aUyP(%Ryu7fzSe2l`i{pi3Sj ze$pDY^ziO$axtziBFVA)3$EtN;)kL% z+X?gzL-~5hR-m_>A89QrfjC1r>j6YjhB)G+E8}q!f%n_X3ZE+L4OvDp@7)na;~+77 z-EoM~$Qh`!5VDM~*6=6v(%Kq<< z16#{b{}fYkVc!>KM#m`x*|oNyGM?g}aU+L=>6tSlwQ!^zQ~s4iB8H>H-;LcJ+eL5R z$db#nSrE=dyApo?p*K{X|1MpeC_PHng}YbXHVYh-0Vs6W5d9TS5K5LVffBDI7f`s4d zSJWhi=2i1_7Ihh4kV&knW1Q{vz=9kYBOG={5v9{MawF=-2`LMti(XFc4Y-$M{dIBr z^ZUBtZz4TB2}L1A(fqF`_jLIzDLXBm3pJd|_ttomtNEJQz!dZ06ED-sf7a(YmH>Uc zujl3QF?U4kYy&MY^pxty4nKY(Jy~YUmgwxEOtXm)nfDsYD@XNT7C)Ag@QK^1wzF!S zukMaZqPIq1U;UVekslSqq9)*oBeUAXk|Ri?{C}@7xH=98#O+{)K&fpA6%2RZt*POp zxGLl>PfcY#Cyl;KhCG-qCW-)?uzXIH`mzPB`YbS7}q9jG2Cp1EX!r$(Osk)7iAht z&Pk${dLILqWv^Og1Dt@$CfY<(w!bI)cOFoD6Ldkxlo)Q|1 z%~B9aMc?q?jw@XWf`UCCeEYn-l9sL7ODFto%(Ci?%L*6sy|vw5i52$v&P(8~iJ~lY zR39$ds;MkLTu8t7V}L-#)!B0Xp;{4`$35iMB-;OO4@<6YF2er6QGp4>jmr4vZLCo_ zRoZ%L0xN#?UbZ^5#^Su_OKtbJDt)=!Bk6_jS0=E?&6@IQb!aN> zV;WiRQEBmsf2+ZsFxBZy5>X0P#E=6EyM7q%*2i>~xf6$Qk60^f@BSKQi%Tsqts7|l z?qIaTmUzY{IRvydqnnY$v<->xAo{wLB_AvX>Yl?}!>s{DfG!SN_Gb11RxO-3azb6e zG8^}7j&o1yuQs)~hW%7j$OxbMu>AS)o*dU5vh(IzUi5-I?dC8`0na6}#%CeCZQl=R z!o>i4kA&RTnK{F>C1T;$DVnV<9KMioDewZET5ewbr_)MQT zOPsP}!Ge+s*wP<=QIRyhBhN8O!XWoEf#Ygy*ltkj*|7|>tloE!@i0>iaSGkD(BCAP zJm_dpB~(Grw&1GOamkx49^FKU4=cM(RhrtkBg>72Afw#^cVZv*qpoHT8iq5QM>cYS!lHFU{H3u^NP$Ptqy#=4VDG zO)<^;HUXKA(Q|)iZ@drLXXbS{-z1nI5SARK~ExdF+bbj#4Lph!`1H_cf~ ze@|cWuyv*c$5}21mNuy>7O9=9HKqzERtxPParHU8Fq`Jsl_1tv&l9anQ#EhnmFuO} zR%d;-YyE9eFR!iSAS|mSyPxvmQJ&yihr_pLW`b-ev!4OWU)Ud9Ko+`vNf6Thwd&e8|*oa%9NfO_|cEVLuRNANT!!Y-B1G6oC7wD)CQ$FKwZt z#42fA?&w^>lO>dj8Ii{LnDZwV#}#t!%sMx#vU7sA5oIBe{LNni^xEem>tI|Tipgh! z46p_@(oL9fY?Y>BK{`g;Y5;r~QW|P)UHx3Ye^R9Q*Y);~rrUfbzw%9AEw)Tx%~W5O zYY=YP6+`^ibmObjKDlD09cSzxCRLC|R8bkcRXlpWe)$BTgQSPXa~+#vL+8G0`FSeR z2-#I`A{s_MD>!eBGBH4*_Xg^0-5BMX<{H4Q!l4Y2M}gHjT<=cBKETd!$R*vp{&SUD z!&S^}Rz*`;iH$&IZ^ZnQ);1q{A#`9X?SAYID>B89_D{KgQh)p0xXQvtBA)QVrO;;yE#UOp-!aF z|Jt>`g|1p`)e&X?-1^yaq z&U9i8Ztj{$}A>T)RH5N13N{Uw|>x;^g!Zq4LM9gtVHgg#$wISmTw zMxgOM8~zhoJo7Cw>LFh4IQ@>w zgCmcWukMds7>V6MdoLwaoo^6Uv085;@vu7LgyGFd4qK7KbIZAe)P$QyyBuL9HLNX^FhY4ufV_XR*Qz{ao6bnWs4Y4 zVXm6^E%dd$@vdkfG}0=FPIS|!mPvlDH|Q^QDqC;{&GlUi_IgU8qqA-z`Dzcs24!9~ z`5f-TcZZs1hZh+Pv=v}2YrVgSw~%V7yRFniRoUzM5>rB6NAZC0^Ia=(oK`3I&~jNs?kG$* zsZM%VjBi--J+V@`e+#;$e-p>_T!>h2S%^Hn-M^4y_$t=CjYRwwbt+6J^Ja?arfT*~ zSW~9zopN}kS2+=ApDbwFh&lne_~)1dO$g%K`RB1{@f*F7g!iLED`ERB6UJL1q{e(ZJ!%BG9oq8WV^P-su6t!DBDk_#g`IK~ID;I>>;DxA|bS zX)taUvRL2|>3Z8c^XP=(d65@!d6bkiSy_Ea%>b5I~IQ>S&%5zE9*FA1|{v-XMbS7yciqY?Nqu}jlnSl`3 zk*x4dNE?lb(bEU&+3f&m7N9MJjdzm6Ls6c?k&h!MW;Dq4Zi?mT1*jVqSx#701^=*E8YU4x7G5oQ{81G=zWx6udMC3Bf_*8ghGvcq!Cuzlfyxf#3=0^`xD}LaA^p4L%{yo+A+Esey z3yOF=%e4@?z5VDnVx~dfH58EA(EN`az?p?$+-6KM=b7$vAgQ&s42Vfm;61;>>_~Dd zn_Yo2z8+?4X3D-Ksa>eEooqGrussOS<)5y4muDfvKkYenRTVscF%`?v4^^k@=-kwM zo%H&e4_{kwn$@R;#i6pji^;1|_g}RRuAnh0d}%h=Bt@7B_{0kYHKtfU60OItgC{y0 zynw?y3ykzYm;{dDO zmDi5PS_s_kU}Zp5RJp}WppiT}(RwoHpiKvm3QuAeo9GP+`ZaXu+nDhwUo)buNWcGz zb-S+OR=mPJ@;i^7?6d6hVzkgDc_z*BbA(QKYQ7C6hfI`7?s!TX_2E59-e#8evG`Ez zC7~4)Ec;oZ%!N(k%cMBpp1|V6ja}7UJAC}y%wuMmGGdBI%G{fgmc7pIAC*?X*TD}8 z5diZKlC3mdl(prlrSt3OrGtu0XJFD2noQ5Kq2ZQEbe=LsSm{02>uuj->nf(Qg!?Yh zv0Km>jv&7(i?2^KJE{8N#gA3m76J>qe-aZ@AMC-|VG5slbxs?kSwC%>p=w5}SXS*u zXZN>f|7N#2Rn<19BQ$cn&voR)psUT|x8V^lYK$&Rhs(6yk4c>xv)v0VY;=;5VC+(t zmej-MovTKkS%S$wZ;Jt~Uk4A(6Cx>SSsRNEQR9wA`dNRT7P@`*TIOHu3+{6xer*9y;1ycl5Oijy6a7hzS zm;xnZYVTz+w6=Fow*hJcolPT~|A-Fl%}v>6tyEn_vC#IFW(QugX|B9}#cxt^QBH$8 z%(j)yrn+XId0OofHY_?!ZA}-U%+L+v40cvl9njOs-o=ByX>>`wvROMxJYmDBy-u52 zxaftJWZ_ZoT6+Pawq*ULnkyvItojxCf;@KlZc+ShpfG?#2hKThie#@Qs0LN0pe6W4 zNI>Tr9ccU1H^mVe?8qzz2qD5ZE}a7pSbU7q$-q`tyS8@LC$GM}CBBH!r9a6H5LNK( z-J|S2IdGk>NPQi@tK!y<=(K=fOlC{t2f54DT<COP9M^qJhq_0f7z6vcqqm5$RWdzP4&iM-d|mM0j2K!EpX zGH1p}Zag{~LcM^f@L*uVZZ3KADGdIH%Cxe0Nak79i*+dMXUt;{?Q#4U~;pJMk~;Ge_hw=eg}&FLj^Vk*aC zV(w##{Sbw}$jB_14K)G_EA>)lIOE)a`Lz^km1y7)0lT&|>#sv7{9T%^L;50=&8?9^SN(WMOZDDK3-Q zdix+spIN6?@9l!IdbZ7zS1%2vydMqEX zBg3(wnB?z-ZC9rd-0KRmC0U zajUevY0YuwDV1v@r}R)IMmFE$N|w?alcz`)cRF)rQ{)>6!6WRgjouh@Yh7@T`MnPW zbAZp@oTH#ZEfwKS9&5SfJ4-<(XfF?Q@E+ctZC@5+@Bhl{C&~o@br*Jy+Oz1sD-&4K zng*IO=-VhMU0grKVsBQYjv>*%yziq=gDZc}uMO`T<}jx#CVn5}D5bxe_A*mbuMcYY zVnGF(O55h=z=uVxx6ebXRH_8jUsEgUzh1{Iu4=YrQLX#3sL6IiE;%kJn?yYS{Ev&~ zm(jfEDK5+X1Cl@7d>tng`YX2)C+R16qUnQ-kx!~7^wkU0>`;}2S0Y{qtI|hI!w7|* z1aH@wHVnoZV;k)pSJL9cqjsTT=whf-Lqq|MH@;z9&7j9o=j&(gx#VA0AAZ@0k*07zskN>pihOt%mXpn z00mJygr)58#6pHxik(LI`GDPZe{)}9h}ww-A&Tt3788M~=g)eD%o8J2()Un`Eu7wa z*F2FJi8$_(Pr;S`1Q|x|eksJ21xoKVr2#CqG@?rd6(V-f+RpP_7MTR&z?YSk8kbX4 zm4sxq#3<>mbArMhBpW=o&TrOh4kf5?)5qs`Ow|d;P9=cXmwXOizwr7?Ef>;fcql89 zNg3ogg{ZGS&l2HtJLN#5U)G1z5P=(=l#`<=vU-RrEyfr`lZ11kc%{CR8cGg2nEhJj z<-|n(SeKV|Khi>p?w_|5%0-i{>w9`jp6q|rQ{4yU1j5h&tZ3}w-+eL9dU(<1Yxm4H zay5JMHW@^7B8IPg@1l$}2rI`gOGC5&ANZkx2#!IC!zhk(hJ&TR&|%ug{jR zT8H%RfqW__E>yg!x|eL;rIX_`?(R|3r^>io%V8(O7 zj%8shGE41=G`>MS4n%9GoUsl@Vex~J{W$r?HsgTDRGGRoxjW~(~g4>oZWUMV9*!T$Q>_bh+m77k~fv{>) zpT-%-*W*Kf?ak2&BkKiIQB)m_d8#!mSwwN{?pyi{P8sx`#3R&Coo< z029mv$bVq4lH%H+1G)VPG%w0{@Z9}S1f$os`e6l?Ckb#e6{&(Dkw+!8}M$F8(ze2#|hsL`9bZ!9Dv=R1igKPlId2hzS;L=8jE-=v#+U)mK z+>Wi$Xb?>9_~-C}YgY?_^p{<3i#C+;`QgU$wpWdBH3D#nDDxx+318)>n&7{_1VUs_9@r znc%;=_GE_g_&dXu#HpM3Qy#RZu=vkR>(Wkv;AHLLehsxv&xpYU`m!FiDuT>1&-Xb3 zrG*I6$fPv#pb6m5lXsw)0+)qviO9gnFfyNim`@4-p)ELU^3tQ!l(ER5_hsA0N@7UC z>dp4~PfoapuB}cvek4h-t6xc>Hh5HohDxO+a+VQWj>Og>8u~vj3o!m$d1>EsWKbQh zTgTpvFet{2NLOb_~WiWD#@Uo(97g>i0Locr@6y(f*~~Vg*yON8FRNN z&4O9)=ZHG?82WzXKwGO9Ud7GOmiaWvw!UY=gq3i!?8z~1WkIvW^V<}s=e_250;0;Y zvFAalP_q6Zpt`}?t!bn)P9m@{=kRL^)@Ql2^j!%0^;tu_a&)5n;%*6RA8wz{iPrlI zcD3+!fGvf=`{oYTlYIx| z@y~Mu4nZPodDk(OwV(F;pj!cj??=gs!lmZncDnVi{dxKL{x1ryLwh8Ai^SADdrd{L z^IH^MjZ2HzT7TIgDk8=NKH_MBMyADMZo-w=!OhkBBn^7iWoXVja}qu!ZXCs`@?oOg zBj>KD&AqG7O?RKuQ7?={H)M7AU6Snf6rQ>AhHuqPrMRhI2T3oBC1Cy(w`4FqS)-Pl zaPN557HByk&3;)HXq~LNrjWGtws>P|y0CDLKf^O*6V z#wMay!*s5E0sMw}T3WsJzX@03=alE47fug*U+F3?`)pfp%ZGUf^EgaKkR;$&EIyAQ zzhlX5C8m-=sh=EK?ShBD528=U**~hJfd1Wbi(t4To;s zyqI0sbGFAfx29{`)jy6D$aw%eCwR>FQ%`c4SDjWuqp9kNU)BBiWZlD}Z(cJRZ>I=9 zi)aVKQ9?-rKo`MySiq7Nn+~y8E?BH}gs~dfyxbAs0T7`|56Z^2`s?b%JMY$WS;b~cW z6p(@ibUcg!eq`H>C$NGd8jm4ecdfa&Qack+EZTk&r+!G_4f5QZ| z6yG*fUZ%6DT&Ss@NyvELmSd~Fdwh9HW{&qaqBxWmY{)uMsRV%^yp!H82ksQOhy~Z@ zAE)`cyq=qiu6Hj~V-^5jp@PDJY$Kw+LDpQg&K7#=Lcns5_I)&)?>uRS!g+37>6TP^ zuOTmizL)FSaksqwX0&CJS9+u&?P*9po`d8^6QON8sidQ^`&O}0%MXfQVtt<3 z*S2%8tG8=GCi2(p1Ppw1g=fFCen?-S;0Qlo(@4)Ucdh>GDo`(~$)nWo8*0{?`-%@# zxmqu~C1cYMkee>hlfF|8TJr0cenm8o(<0{Tv|G$(hUoU)lo}5B4Px~O^7<2eyFBPm zm<=A)c^FN6h)TWHpAwso@_!}2OslCsLVs(NHvT}!F=4sKXP{fg*uAv$#bs8NYmrxz0N|6v6`gCw$QBNIrOt_3-cU7{zaL=of z)=3qgMXY(~XbgrUzFLC6p}lMC{j=YwK4<$*NlhdjU6KAZn3+M7U>f+}VBDIY%t|Er z%T|LStg^IcZopW$U$Bg}Qru{xhj#-6wX20MT1bJ*W)697%!zkDesDousue6K^rVrI zXcxNiX;LikJf@&#y2G~iall$9W_(Z@d;W2(ib=EtAGEI6s969J>LQQRqn7cgf+pux&$R60R-jt852_W4nU5gb(amf7V zzk@Sh`nsE~P{#-U_40E_EK0JG`^GO|SyeLc`lv`=X{=|F16SJc{E(8SLiDH4k0cX9 zbw1B#NAa{C4PAMz(v$nGYa8O%Ae@C;cQaZ`mR%Z1OJ(HuEIm|cz%5W(TVShNfk7H& zG&Ha2g-2mSdZq`AxOA8Nz8zL{SZQpLa)snG5|zBSxzgpQ;^DjAx9%I-@?My$ADWJP z7o>Eb2hWoG5>XZWiF8GH@Jt@Gc!$1AqEL!3)ra zyS%+uFNc3u>FB28N8f5$7DA3CJ4C?e_N;%dBZbg8j^L#CzgEWv2Pdx-(W-^MJ zIqT0IPg_(by)#$&Z7V9$7CY-he^4a<`_5E1chvMnL#W3T7a$2V%lR%ZyvP#48@$Vv zSu9$(#V<)p|LpF`) zT)br8`528mg|f?4E(`166-FmlwXRUM?hwwuXdl-+F6?pT=N(-Y+9ncqO4Qu+j5DZI zF(yG&Y~3Fl9sn`4BrNbMfN!=+-pIQBMaE{&3kQ9-K@}ekpB(2{?;zukmWvNbZfRI-D%K;%QCHHU+@yUiA5paYYSUKUm8W9ib>2XI9io{ z@P45yZuoga%yS7e*>NlM&gmTw=Q zHDE7=k0!WYl{CLW<+@W_aOS5h{Y~b_zKrG=d|WzSv*UC#ltbh2QdFqqRMzkj;zx$q zk&Q?O_0V`N8}0gcvmr^&;IfPMAgZUDjJ=I6)cip$kDwmb? ztQL%R?%$`Jx((y~!dc&tr_1PjUr(y6f3WpidY-SrKlR9CGDj_by7zK%nqXsa%SL?H z>yci_CU*`6puQ#J*#2r>4W~BMle)RCJ9uEyO8v{#i-`8)v zkO3vqo6LKlbt`jR!`6_-C90>gWVftpuY7%2`EsUJ1Se&nva*Tr&Te0BI3;<&!o4_1 zMIUo+an3g*H9YN5X*}iOU|jEf(wtrwE%BpCJ=w~jd@ogImzlJoy3LY-rO_=yR()<} zaGQKaU8!keK5`GOoSS+o1M>&V#Jv8)09e5Qyx8>C^eE z$w=8rN09$=+duk%S}khE+*v<-yc z6{-ocCMEc39@13J{9UPL744!L*uK-#b@kB|>i0rx$M1K`H5#5?^GJR&^!d>-lux>g zk>^E%*qvN+g7>x?+a!iU%T4Jd7J|E@eqyZJiVL}E;qLXE?t-31v_WI|ixjEmA3jEY zXNr1^-nMW5T_DsclG1*6f3?e?+h%ycKiRye4k3RGepCHuSXuRbLF$9lj+W|(Gs2Zd z-)X#~lj1)8eh=vLUVgN5grA~ZTL;Vl`@Xw+L;&5i@fC+pOYz>6-AvOy;w4>GZDuF} z&ar+Q*U-Hm&ic(s_|5`MB+m{^{G7#8cYJ_0kos~qyY+;50e$=ZO&iUKW0$P`yfZm> zm&=i;rHh6Oo`wb9+6Q~?EbKKu^{~NRKrYFqoaGhX-Ql{{jp6E_s&iZm=eqFpf{wgb zEw{K(hqPxW^t1Okn>_;X7g&&yoV8qPZSm?9p#R6aTPj`hX*W^-A{9oshUazly}1+7 zlAYcgQ^4sggYtaMt_~TqSiA7pABb(&L#V(WkZ0vN_Sm|IF2-vASWm1*wrgtoJ$4)y(&8&&kBH0ne( z6_c@@zAZnhS3^GS3kZ*FmM5qOo*TdN903KF;^uf_~k=zMws=b@%N_sj|Fu(%ho&D- zTqLRLGI8`%A(5O>{c(2&r_w$Dao-j`;`>?p3Ec17EZBXJMkqCdcuFEi{9{dCk(5>9gir zv9UkSX_?`OQ}?~obXx{F@`P3KepmPKEXcX~=YMu_9vYwSZG<}~*L|G6FfhW`q{ z>o-^yOSN!~_t<7r&a;%P{5;#P`I}SSmM$sVYC}puC!gOe_f0UNoljS3Q%h<(IxNaa zGaCtXuC=4au+2;V%O}F=4I6P}{ra~oi^ENG;f?JvZ*x4gp%6QD7ImxbJFoi^R~@a* zKb+Vlp{OysSQ#c*VH0;Fi0by5)+skPY>PWucc+(|u;<^lUo9iKGL}A`D$mo-nca`PWs}ZLF#pPltaVdZkuLFP&m%gZ+6Eet+4StP}B6 z|1mk288M7lr;NH(>HK={-W;v9P443jm?-H~?-^TpTrzK$#4q@eS%)A3fH1%YQNx1M z>H0T;fRJH@w3$EF3u9mmGbN0<1_T&6Fy@}hu4gbC{I!i(dpKn3EZI{Azk3(B9sa5M zAQ~crIf5{B{{Uw3{IRP<@B#3_2J0rCnGCW1AK)5Cfm6w} z{VHfPu~=P1J}28=zx5Ddd6 z0|BV@#KN^|ETCeIie36s^Q-{|WcbB)5QbQp83KCbuQUpZ{hVQ>_VH)6{!Rxi}YHgaq+AtLhT!=vC> z2_*tY&L@V$$Qo+}XdJv$5#Q0W0I=(PhYa!{Kd1&otNs~p4UfY_8&iKB5tOgxuc4Lx z3mKe69@HH3K}npc940k!4Da7xe1HE3YS2v=ZPUVwY|RNGN2|?a#JBPf9(aWfzJ^15 z4+AQqVPAkMaG`KbnkBa0Ze z!0Ft~kK6;qR&|YWvc(F|2zI}YLR^7+5eJ_K84mC#7``sZW5|QmCY5lsHtoR^6`zz( z%cnAqOkANF{uWcj*K>QE^}N`zdWpY3V=5{D>XiRD2XmD9X9z`3?-5YYI(poF*!rbP zq7xTd1^+~)G+ua+hI>;+xw+!^ZPg=YcEK1^JOH|FSeIVp#UyKo*}2{}tfhPi+l7ma zykQoWOCe|+8h6HT5{@8ORDp11&;)_De(UDLP;ueNOi^URNFSl50Uh%$QDOAa9Vm+# zA1({uF^9Ahmy4vMFXX8?JwgB5s^oxvU_+zN_tTCBdliG37x#0=))j|1&0kNwC zLfDM!F&(LkFXm81lGtw)+pGE}#W`*CZm%6X|sF}qs!jR7|7pdBGmeO3^io?~~B`fEK>RqsV?> zc6}x)5*@a&`BchOTd?hYU7163)=|*&sMayTghkMPQksuDH&D&uyB?WUiPni~6@UZK z`478(BoDjHT3h^hVzGVy1m49^`JsDh;h7&HmP(~nL(4ih=7p={qbaR(pWgD%g*hN_ z0$f-5|C&sbr@(4OllSOjTY=-jugqM3CiM^1R~BBE)bim#a{V20aa1eEwOWlPif@T(8+BJrvdPcI%P_jX>)PnRZpyQiJI6Q|=vRMddz+*3oQoQw zQ!5@e9B)c&z~8wxRT|hC=RqGS3*F%p67o}OhWvBM==aP8n%3gep;i33xr&Y*zK23o zV%h9WV0ib=-@}Ubz_$9=%H95PyY^Wz_m;8-WH7iD+(Qvctn@E*l)Y%rqQ;iV&fk2R zsgVf)GFb3{+2DG@u)x&Nlc|q;YvnWt@>Nw6Mz%Ko1Htm5$luC&FqYicg%HO~<>2o8 zH&@ytZLrh7U=ASTzi1ookkUxG{klPT1o3*pTW@HRCIvBqxdI%QaRHF1{-hHila=blAR92e1A_Iz`TY2Qsytw`-yt0drn?Wx zxdF%SokFaLW!Cd)$GZ1!9fDu}`!IJ#q@G$Ltz&Qt215ekMP|eoYu)!8fe(Ww2yFQN zOB)HhLi8xG0$|woA_>BS-p&tW+iwCG=VX079T@fow~=B0T3bCictVx+Jn2_wi?(^l zgAC1fw}WW%?y;Bu{WN)c;YlL~eAz6F3?={ZLPwAVVhXN}7%lGG^cR}J?NmaAk3eyc zJiHw89)w;*Qj6q}I$}8WJcaSUZUfbX^zqlN(t!za69ZPB7bfMQ>;KD+<=!d8Q~M7M z)l-Xf4>ya$r#(~oo2m7mbHOT{o@}QhKGMHL)_(1!~R_!Kuke9 zjbSdEk>FvH`0wM@6DeTmz_ej2tj_Ry`wL0av5Z-I1mYt4aKvU}4aC(Y(9Ra!V04F= zH}3+RA^RCl;@=|-s11i0(Zj)zWh?_SSh=k12Q#WdWA?uer(~C@;!aZAEzh{o1 z#}_C=EJe6AK>kDJfl2Pa*nKS^AcKV4&%x{&8`2n&-LO`Nz?ma{V%Rx6gQZ5m(w~|} z11$1Hw*i*E`w-AvH4$8=EB>=G3{b!BP<<0C1g>gGx$tKzkgwb)W{248GtA?&z&TxR zCk(GMytbj3f$wcd`M754ok~n)TuT3*{~gZ|sATRwfi4LKF;e(1v%b$L5~}k}r+@td zGmn22kX8Q!c2D3_ftNwd@|%hA;6ncAr^wR*n4TyHT)dGJmi2GI1L+illHPm(sliUX z`Tt@}6A`SnpnnM`w0W3ujwJJKL8|IDy+U_qMMOzQ^; z_Syuohj;?a$$ws%uxNvMdiMjT@`?L-BCSP#Hbll4sIXn0H3cPKrJqvql z&16}88yN7-7M*pB3UQG3(!xEG@i2p3ZwDHe9@i^=R7!JJm@7g?vCl(-( zH0eYNa#fLcY9oINcB`HBh75v7H#R@Lp@RhpDAKuHf3*lC8%DvsH(Bl|IN9(WMbt%q z5O)z)y#X;O*sd*eS#OYF&gv$_4*Srv{)`a!?#V{Inc8}WaQSE&aY_k)jeV_{|GSVh zCAk0FwbNco(@AUR{(o5=(x*baH;EU%Qk|=K<~hCo_s}!9p66fiiw{!qFK5?EaOkK5k;C!h-}6sLsiOqZp$(QD2bOmo z`Et3-UxG{wU%RL4%Th-?<_`V8j?)raU{E2QwnQ&+u!OhY^EK;52M zM9s}N>?NrCV>1=re9*Oh4wS%KdkWqq0u%eQm)KM4tU&g%>D!qe!T4O7O2KOf z%s}ShA=_XXJf|(+x!IJ__JPwYqVVDbMlkui%TIW6Z3wOK!t6u2jkhj{rkWn#{}GKz zSmek~6Z=LSIpoo}ccIf$_?h2j9M=9mf)bE7&aQJZsUvrx^Ivdthk)Zn`|(Yv2(;W= zc%jYfMZ^DB*_+2h{e6GnN>NeDk`yVCnz3Zho}#jEjj@h>Cn42fkXB2wGxqFeFtTP> z5oTzzjD4xZ82c{!?~Z!+{rrCa{raazrJ2`#-E+@*o^#K6KBrwkQxHd1F;(|vpGlq? z#=)gzKV9HO$tWuU&1EM8M8D0anx6Yv-8CoX4uKyd{(UI7<$+8u>-b({zUC`uzeH#{ z)ga%@tH64>ED+8Wz%`{k0u2q+_if%jU3A~!Tsb)4v0|@@pF8}>|{|O0UQEE5{ zbc)flqoS3x+yD1Z#c~4K_`tM*tb1rMb}YKj*747dpr9Aqd60GgSpDycM*+#?c_6Wq zdm7?JTYeVMO9Ckluo7Por>IvwyNSKs0H+$U`=r0PaHXs&_w&Wg6)5$LgZzuyZSmj9 z0^JtC#gu;P2~WSZLU{DYZ`>oJpRIgLq#rI35}~$WN-6`dxzDRk-EUFc;SMldEP`u$ zzI5xM?fkQc$ckG)X4VkCa{VqU+ege7`20+!zxGY2!2l*H2vh~UL*UuLeR15Y_GjR1 z|5ss%qfT330Llda2LKIfZ9wyH#h|_okU6b!jtq-XK?bO;pnK^e@{0e-P*8IgM+9lV zeefW)ra^ViRFYV#ktr@uX~o1?EpN{5&QE3tKfZM`+6uMn%C>Cn2r6_`1eE|{(f-Rq z_jVT+HOYndCkpvz9VMa0PXWy(0fmZPktL&n4U+vFN8A~p`?P<>@n0t0Hf_~glkE@@ z*qnVLQ_OpZJ@7)RSNrRnA?iD8a}Ie4p7?)k26S;=6~(~;S5JZi5JoBx@*h7nu-$)W z4sG8&7$69WmH)Z%^#L$j{BD3*@Q_j-$(EKoom5@^!9Ilx_rJIMe{J#cazZ+l_w{0~ z9dK+IgTATfRKUgYFM}GU#&F=esm2vL0m_sAj1o5i6J!d(17CbO3tuDYk%Rvu?($Dy zN$@S;3Us1o>qjsg;1o<1QfYSg^(X$+Y9PxswAB_D8NI5bT7R!s6<=TQ(=Z|r>eO82KbcfQvmwV0|EVbfL*6I*}upS z?aIw6o|R7qu9rsV(m$V-0J`>EJ0x|S#jOv|x{taw@r%tiD?K%U4AM~xRsVe%Xd{>a zxBX=XcR6}-xleA7my0CAb=ZMNW>rHYU7sQW^ga4--Cor4o^w!NjbCC*zQ3w_~bYXRKl888$MyPk=@akO=-;B*`q3 z2I!uJjHLf`OO_gN61Q&0#;f&ni^NqSyrBPq|J>Se|J%Mx zA*|v`;K8pNkB5qYKGru9#W7oN@L1if;gXGl$yGJvHQYIdM{6-=ZaO0PfNm%5YmHyk@y~q<9p-9ra z`s`bYYOp2dw9_5>-y*^n*l zVi>Nb@Y{Lln%_nLXz&35odVys&(=>}nkyplo$H0)YBKFTKY%I$%?2)dwWhqKfm-IJ z`4?7~0t!x1yT;GDs9=ix7}Eoh@-k}4$T$Bf!TdWyph4z4E5)6(&}#9i<~&!HOT+0z zYI4)?_+Pz`O2$LyqNF3J4+e*ZB*XW!$ba!*YOO}{ANH|BnAid&a^v`49}YbALySP_ z@f$j>dU&9rrx!rY=cxJ$)TQj>aB4(ipq>IpL^b38D*{R_8~=#!eK!e?@W5s8NdF=p zRZ9)1(y*2t-~K_e>rtknJy`EX`tOe^Z->Q*Vf_1Bv+QQ|x+H06?sChadt;C14TcLvoBY$- z`QuO$eu7jjVCAF9xWujf9O56)mRbhRhFVBy*vHer$Nej>Cn5`4a6LSSy*~jcUAvmW zz0=}-J_MK-6(Q06TT({JaX^6_FXM$#vjGdLP*Yc@d>9KWNonSxzSoJr@z`yGG>dfY zta{JCoDdh66Uhpcw+n0uu}G(LV6JvQqyB4P#2Nz}88ChZI=uojfhqg1@c*is@Cq`? zn%Xgbh;#x8CZPvusN!k=85C#{0Bz3i)(Yu;~h`XC_e8-17*Ai>mru`{%iRFzwUZFP3v3bciREm4?%W&1q|UxdC^rbRZJG zJdp3j;_Y}(5pso?)30u?<7h-B5K;JJpzHS%dzZ4t#r;)81P%3XqQ#oK7;bGf0MWgG zU#&GMPY!y`45nOW4a?eqhB&@sVZz5nQ`1b)ar76}YdvgpuD3*4B5tJ*o1^X|Dva0< z(;vP=#Q^Moe+U$Vmd>7-9a`ox8`wL!QzYLJ9kW%?eB)y{c(`}kvI*A!odcG7+rsj9 z!<-QIA8TGJrJ`23NIt74hkt)js#+?$wbE6nj3!uGINuz6JfG2=&6$RMd0s8oWK`yE ziBx7G5264MrVjTL-G3jXi#+}Uk>nHbGI}oOaokJ}JwIpW3zN00pKW9%hZ`qwzS9Z` zb&nL=hd;cn+syVD?H%>Ivn)BA;rO*qlq})8(=E+kI+*?J{2BjnI@$SJ*VNak>lAsW z4k@46Ei85l-Rn-R15xFRK$fFjhD@%1puiUETyp%O>}JVvU&@(CM9GOOVpfCxrA_l9 z{O*Hw1DPT~>v&dO3ROy$t+M;ABvZY9v1)$!*^0*80hsgz#=T3Gp0aqAe$s|KfA04A z%p8vs-*&8-I)yhm(+TDZ%JZ{osdXcXqbmlmaq{jW`x=S_19tR9>zwAY!D(Ge!Uolz z4*iLx`mPAulwP179HDY74A6_YnDz%eh}@G@iOIPa!m=_&!a9C_dAw(blDjRjMfv3S zYSMook{NE|wQT&@!e*2MEY)P3(t8t-ffb6KXoOu-{5>PP**r~8c^sxXTrS(gxoOzIn(`RaI!w6h#f^h`vqnLY+e+|QIQ%| z%8GjOnU)iv)QsgsEjL0=qGQj6A5E%ZGk)gDEy1i8wsUy{B$tW zdWTVMXY)*u-|$|z6MNC@w7KsMn7Qj#-R7F?rk^YzB|BTCB8KD2=1v_aV0I zjEjEt@O;B}Bie(z4^Oo@Z`WnKdq`CzX@?RFK(FPf3E%+Qbn$Ha-uF>NxovuGxEdA; z^twerjhg1~Qg%R3F#K*`&0OF6TYPCijtcv{^wF%bgatH*H{=+*wr9JuKE`uj{T&(u z8l48W?HVphTxl*>9B!K5SQ;k)PAyGf5EtTmf1~c)qBtS6Zw48g@IZ;{!fS$K#U~0#+teQ5`MsOfOl3kI%-QyyeSr|m4UeA{ViiQp_7u+ z`yR-?1IAXltW!*^36;AGQJyldp}HZb1@-2uUH3WwVd;|3$fJR$@va~{+lwxoSj~*m z@&LubDalfXabf&BO2|?);MRSY2&53dpXLSZvi9e}`se=|R0wisa~cQ430A1LC|iBk zMPh^?S$R!S4ilY}?yc37l_#(6P(sCsMbrn$uUUG%pkK{WFrq7aT%exF#>R%>|5mQZ zWdqnq4=qong8pHSId%!44zMHnR%A8jBgn3z{Jllxw^yElRz9f&gB0~HyhmJIDe;klZ*PC29(gAn zJ~0nxDZz~zRWl0k&ozaxV}IQrOce@5z8QTi-YCYn-7k{i+bTaou|jA|kLPs%M!(`* z9xy9A322eCBUSixsqFs1={NlNn-_Q0czAs0y%+@9SJmWmr5z%cJGgUbCdsGR;o_Bq zYx+&lz2-^l49t zz;N4io|jhEWujCz;!+h>xOjuX)4{SS5DYwg;A$1eZ68kHW&x$I#=n~Z6cv-M*)&iY zO9fiJfy}6&$@@@I`_PPZSV``v2`U#>5&Ljgg>1r-Bm~rU)fs29-*yc)EN!)wFg}3c zfl)T1qSVXbJ1NDLGFOkcPiKW83;N2nYy=Lahv9Ha_ ztW%BOy;*%G4s@OR9@LxZmI3DI^H4>(?d7NS7CQ^C6iZW@)4ParW~5JkM?Po(+%$kc7f{ci;r#-_JI&uqV(I`Bb5dreYXD0S0!$1|ugwlR5@H3NY~+aA zRo?ARXW`dgP86VT?Tk|HXsTB3u+bzY{#v1ZByu3Nng~Kd5PDtVue}81kC%>O0*Z-E5 z@1TgRPOEod(9vT4kOIR>p8E}eoKCuKvg9}wr;`4i88FTBLDY(xd6|{iy%EJN_nz(` zSkr$Kt4&QO_&r8bSJT!Osv4fxGxTQbXY4^u_C=qzf-~hP3S@U9DGpV}!E5$ReLZKK z=M*k(HYXxvt&9AHJ;6(MJ^Q@!0tj+-|BVkfSA?^*8p3~lLn*JoT+ zajbxmUKUb*K5#i#h0H(Mq>IXXvg(pxEN3M6v`yqDoeLnT<}Lz_nbu+bfVlc7FtI29 zcf|OV+py9WAuOlhKocNL_(_~vPkR=ezvd>fc7f4sF=w=EZ=1Mh7?m`c{CFftH5_2T zoF_Matk>_MrjY`hBsZaV{63|byBX%08(IP_39?2zRcVRT5m1rFX%|{6Q&47p4MeP{ z^@5-_C;^ajt0=pj``&0xr4&z=^W=#s6wZDZMW;WwTRZ?p?Ddxq1b*P5|G8`~&hJ14O8Vmh(MPT! zkcElZl?z88gZhU0`!TNHlPMXwI|NrsY_%Jvv!>j2P;&pP5LUOOJts7#rSqo~&f&7l zX^p!UuHJI|;j?^c!fVxu?b3CF2W{V=fSpmt46tYzP_Ivq13Y$&H&;DC3f$=&l{b11 z)OA5Y!{H-|WzMW?knUJ;PDc&N(_wq&eYc|yebw|2S<05;-H}V{3!joxZu_C68vJ7h|5edy*aUHLm*q}z3Kn~7u3(qx=U^()-wV!FW~u6Q3*m;pUJ z`1XS$1ywH8nYt!Jkf5X@GLu4BO6>W=w`$+eOpwN9!Z!~ z249B~*HtO3dE=@n}CLo%OCQ9 zeOvWAy5t0|Ce8t1$Qu78hA$|9&t`6+p zrLOv$8^kE#Q$GE+ae2o=1uenGp0^r94!Twt5iL6$bCPc}$?v3X{=}PG*b73_C@Nj| zT)qv`MZyqSfW;e0(!?GKxJFGEo}OP(i9890aa#kU==hnmc*^lu1+&v|g!KDGho8m4 zFQVa*nw|!2X?1QZ+5FWNndate&d%v9$v$(H_Y4isL|p+@D&fV>B6hQf5v!c1ll^~e zIDtWmOI5PwR?AlakO*dPdy@bUW7~caSO0s8f%SolYPaMCb4*ji)O&`2qCXGuTLmb- z^-HF~fvAkvVrNsd(RD;YvBU!nfA6}{l83WzdM|U8u9l?kgjPMCKfnK_-0qxLu3WiW zb>l$l7~q@dlOH5IdQ+19zOwhB#p^5>V}uczZO}a#YcTNsA|4FhTVL;4um+^%))Ang z2;@Yksip>~qyg8AK{_5=sq<99tOsa|IBKlPh9L#hdrMyFzls~|NM_oN3sY2ZADw>d zw{od!wa0{H-OtQ_Na+sTMI6kQy2$&hG;?|~4nORz&m9hs6u0Sgo?@7h?RV=~Vk2OI zj*7|kFOxBFq)V8}|M`c5@(cSq+gfK`5bbqT(sN=0U|Ra}H2+hpxP3n(Uf`^DvibDg zw`Fd(b5h-_Bz^=5RsLdLElKAUI1<=-$M^o;&b)s`N_9GmwoJs?vbHoW+@rL|_MzF8 zSi6o)3K~dA@4{{a!bLy$ptup0s|Jhk`k!^Xodqat~v zVa-ESaH!|#&qv5p&o|v7w{focH6aMfA zPAGFCIW-M{H=W&dPDp-BPXDrf9-7X^OAu8=jU!(kpog!HLh|A;-}8WcY;{( zira)bG~QJcOml>K-BdLBahP#aU>Im9fuU+UASqtT2T*oDpbBt1x2F*=<^zc-gl0cx z7=8B@_bBsKD)P0K?CL$|pDc^f#@5YYZ&Z`OGsrJ)D7uZv$&7`H<&*O#?GCSDa@c!mV6PJZkJ@8k1 zJYkK{$>G%nf06(#E|e>m&Pg*#I!ukAmM%yeWOo*b3zRaxMvjxg`-y08IC#>4`Y;hR zZgj~0%U@tZfT#_aQ2zt3XehraU{G*v4W)$|2yH2bz6q`ae|n}8$6p>lXH3*Li!<}%keJ`T?#0!KzT9?Jy$MU! znJ8VvOkvimm!#XxAGV|ER{VOE1p%P~X)JbIaFH>f2teh7A%~ubeIQ8YSv{}{xA_?K zjO9oooNC(?5SNuqCPHbGKAaXZzNAPywk~*o6bnt=;i2FCJ8RmS=m;>)J=EuYH>O8C>>flgB7Xv1?6y&%lxeMI{fY6~UZRgV?Y6$!9@+CL9@R+edd0|<07-m^s*F%x;S zDgLx4FM}QX{{HY|`HMx&=w2HXZZl1g;uF*J^k-+KI8y5}8!n|FyM1awP1gHYOMojK=D(V@lzQKbI4?Os9JaoaKeRk`2h>_$TR4Wpa>LC;Opx z-@1`ejy*N#siF1GdHnlK44|wV!;7{8kO$MC`U|BviJ3lZ3khg{t#O%eTH% zs`Xw?9}AP!s%6q?585gOVclsb^^lP-f=niN0oo=@d2TPRJ^GU;}k7K1Bp7 z0D^Zw@Q~-u^CL4|8_ich>w;h@JMm!rg$X?#ig#R^(J=n-{`p87%50~x4`aemRlFMm zD`#2|mot6Z-qyxw#x%3HJHKZ<%93kW>d?V6y~pPO-Xl?PH}VN3E6#Y7!OT~yr}k%s zQ@BAhe4wjH^_k=D08fIkc+iAke9l*7t!+U4w**02?|Nu6%dV9Rwq{DCHU9&iFJtfc zjd*HJ;$~!kP+mi^I~#=r*AgN*a#<{6FgQYNM`=IOsj>x4IM#hkZd>2FOHy+(-P|nt z;ke-Gc||}K?)WWD2~!1a6`ZX49>|bCPk&F$s>^n({*bCKVp+OrXPlhkQ@D!ymi4vC zJW2D7v7Ju!Q`gC?3iGtUU^$5#PlF#eq-m#e#+Dm`VW&2?3lYY2hE`M_W13ILz_znR z9#W3vG}J?C0>X4~4$I0;fWz2xfa60GskcLalo}27zXl3S$rtmNaeYfTEBA;y*{jE> zN7-@eIg3^r5a5Q2alVucjErQKfOVKX9zIM;o2%Qpe^%;#(yBi*>wDE-o(_vYo4Ntv zz06vlbpbi)>YQio^t(O1ME2Ai(Eik!nSNBeV#;<``loWsLvwcv6a$KXN65BzQ`lO0p;zc(gTIRevu zS!ICiKF+Fc3WLojqc!z zeO|Of73-B@@Q6kT4X8vPIa;Ml%HpS2J!6IFr)rBg=B(GM0ex()@TVq2^Vx9oI02)Z zU1W`n{K}|%oj&qDAJhU(n>N-_6`e%CSl?AaGsTTo?aAG(`5a1D4z}5nMG$uGNT5{{ zna;oem$`~vdqS4q#|2|o+eP0(sgYf6@9bWEDwsbjX?uhXhrU&rrSIru8H@Rz0E2s` z#r6Z|$7@6YzyN=c2ArAjGSEc78PL1zpLLnnbv-q1ry(BF6O6vg6_h9D4# z1Ae7d9HpCbHn~l;h~S*uJ!P`zxZozU6WWEHc}nuyUTp4qBQw0Ss)R_0U(NO#4T^V0hJOpmtk-yAZ7q!CnmW+-Km&Kg z2PazWInkzjGzPRjUr`kH3)}YHs9c^7NE;B6^xsBL2)nqP+)%%icxN}=(9~1|lxs6y zar+sz_gTuiVVG0(D-;*Fy~~MR-R?R*-nKJ05@yf9Q#S9r%$+eVdH}raDh8|Zwn^j$ zuFAvbl%n?TCnzm&^$qz|0}vcDR@r;|;Dvmu)3TuR5j#3b)h10cY?}g=bPCGW+QGoQ zU)khf2Kj zK9$(7uOaZfh9_Ee2M8smws z=Uu84gux{XNd;9NE)l}`D)({qAWggc&WZ#3c;iY(RKOYdaDy5f;F${nmAFlO44anT zL>sMX(2vY7BsfP+(=4rN*^k4Fb^_?a+X8R#{?DqIrZL&yk?CF54`=HOb)PA_w6XzrX;UGd5kl>Z`X;(*C&OcYwd>onYaBj>i3 zUlxO!LuaW5-aNeEvP|kVdx6>oJ8p@Mjjr01OrOM|TL9~zjUDl^)MkP=PnxPj{81vq ziw(0YHtVrdoHJXuh0n@bi?^G}Cmtg#J9>Onwl%FJ#t1zg4hGoKC`6i+wW`(RQ*tt$~Bk! zoix2|e8+oZc-Kjlta47>5kI6Vu3#?^BM8y|0!uY(;LPL;VV;~l=#2vq1yy%PmU z{WL-=578*^hpJG_ZiOZgYCm*|u4e`Xv`h`mS3jD_d7b8$((*`}xlU1`e<0l&etc%d zsLSDJ=uvTJqj$z_7DH_!E1iQo_jp`~=cSznHcwS8hWU3MW;aiRyeDyWA6C-I`XK*( zXqlKbeZMm7tm0PDloZ*qXtS;(@e6BBfp-U4AeE97HRd>w?`!ixN%D4D2)!dUOU3&eKR~WZBH=h7IRSV6m-49z4IrYfnP++ zE~(pQj%tpFW21QZnX~{kLCvP8nhu*K=8-2LJ z7Ke58^;>wx-OzGVhwZ25b9&LGq=LBJH9acKp}b#f&uv#HVy_l?hfQjIE_sPjGGa*b zbQ}1@c{WbgpzP>E96=@IvsXXf)>dI8^J6YE?++? z4qyGGg=@*E@VL{-;I^uJDRr=}J0WGJC-S^^@u{8Zul^lu{#Aircg8F6ZA$`&9fSiu z2}xq*oEuvCQ#Hs*K9W0yBlDA~kB4q>w4c)>6t>4Wj+;wt)^vp2wtJhlUCfzKVRxcE z_rcfNPe-GrF2PagZXoYG2AMrru4D`nFS7va=SHCVgm7IvN(1h7Zm@QJDCW(h>Rn}E z20#c-aG;61Z;?g+=wskvasOT4ge1kFFWUZa&ET&weMW?14jMlO#TSNmyR8kSU?NUZ zX>Sr<6(h;b$&Et+_iM?gt2SR^DNE3)PGRBeZ@*q&W^C?G(P-xKPZBM!X`Es5`%Mdb zKdu%nBw2eh`o5@Q&UU};qW#95=Iz&E@^gkVlwVQZJly1D|MNR*kL$Crg;;H=Q7w9Oh@gLJhRFYaAnO4_r)KysjqxpsmOiMDh@Ft)_b(29X&keV1>vQE$}^& zzy?Pf-Jo-zuz_=V(7Op13JwgfXd&|}R-b1P<(gDXKb9j4$M^jVM7Hrd8 zy5GI*rO6Ry4nwW@Bsq0;^}O6CC&s_FybF3U29rIY-TxWuIUZw+9jW<<#$h;)RWZ$~ zB_}nu*~M)mpam zq}yIiaN*`1)Fz?K-+jg2YXj#$dM3x&t>()xjxz6&sMuw`cYnrn)qZ^mxA}g~R@pzO zKW8m*-Rq6}Fi#y3zZK+xi(`CEuEm)Qa7qy_>5z98Mu)+h}J?u(wljZ<(oTbtI9p7P^=FLjJ5w>g=l& zCuL0&Dcw|LO5WH8dkTzvka)I1|Jy36q{5hMI@!@pcP>x>Vl1H!Gp_uJ&z1lQMZ5b~ ziIh)anozh&doZ?5AdTr;F-NbmXO&0(cj4MrOrb#HQ#PuQCH1OcWilv`@2GO*QS)G= zZ4eM5rq`f_mN3P$8B(6I(L$enxUL)gGzOB7X^d^l83M;MQ7j?54V@dCBVZ&255nG- z&eES8{?xIu*=;HAuuX6(V%J{%49mWMt6B%l-;s!!rUm0quW}*o-ZIr3I`vqj!)SbA^rR&eFR_2r$`Q!3X+ol^q9et6rBXU>ss6P>p^xv1 z|F75llf9{z%;Qk`lc?*>xr4HMv}Hu!xjCC{5` zk?i|*D=wNvd%u}fLfu|VXTP(Wr8I^xkk7Y1Hu^4anZKjWHexyJq1pQ>zEqjVqHkLL zUKM9+zC$ig_`yMHN*AjUOTq z5MSfvpDo!>bTm4mK}j>^GP^AXd4*h!Y}a&bU z>sQi0r*B=Z&E7r#Wvjcq7xFfFW~jo4bM$sOL1gODoU2t>V(xIxqZ*`aoxhhHp@wN) zFDznEd5)i_?5%K_tB3jL4B{}dEq+jT>$kj41+Io^r`*HzSLbkHSV7G_kNI13>hiH$ zkCnGMA@ksWh+Bb8aqggYvC_H+v-j3C33@cp(WGgt?=17K5q7%`en(oVc%3! zmA%+K%W;uYun|S`w>9&(92%qFO^M-a^S03_pMk_FF}eFa)zQ-SoVM+WnF?cv*^qNC zTqWJo4I%yuqc7OHt~k#rgL+f!Wz8|a9!@f+M;P=`-F8fL?sBk?$%g5eaF~^`?RhvF zcEj7W>BADz#lUnUiR@{fdOBnbOtQrqxyPu-p7&h2&I^Dz4Zz{A-}4=bh&RwrdXVYC zLuY_%@aQZ){=L)wLip)}l0~8n2ljX!4J<1U@?MT*5lA%D`Y^;oV7p}SF`p7G;VSxu z;1@U2&Y_70ZWceIffq!pbrF^vCL#~Qk_C-Lq9zK$c)bjQ?!q3Bbt#)ab5FaOvgQ=8 zbJEr-tbH(SRoIEQY37fdUGu#f39igHmpg>tDsQ5K+N?E@C{x@ze=!$yaD|}U%r{u5 zUY^)|yR@NJz=&)rld4(wi-_6n9~XAoe&M=Sj23rxyr^j&eW!9cr!!hQDoNOD%)xZz z%-QKAmLXZhHS7)4;@I*_B6sXI#?ruK14!FoOOLiZGz3>3AvtH@wLc-KLeU#g-D;X< zFlK0Fp!pfX+%`=^1Hhe?i|SLHx@bof13|o~3Tcbp!Aa6$i3gx`u~3(#fC~E$Cj6qo=v^G1naLF;wZ95vQV}V$hBjyVF{JJa9X51KEWmkYV-F#NxYtLEnk;skBu_*Y5JDIe`G^8f_L#Q50EM? zXPRU)j8$NGde2gtBf<5MH=BXfds8+HzU8uLNmXNCaOI1%hvAMlz0j$!jcq&`E$mg| zWB}Lv>||h^rE&vTzEs&l&Kw!Vo6Bqva)6C1fE@+Q>9LIr)CHEI4VCuJ?E_4j6Lw2Q zt@(AunFk3$c=4i58c@ekV>4jPU-_uU77LZPvXTx84vKknaJUiwT}TTrpxRl5W(&%T zQIFt7MZ}v9N*-C#FDIsMaF7(Mc{W0q$p~IMm{h)R-DEZlQs5i5$bMU4)JDgk*a>?E zzIzi>acn`_4f{cjM6xrE;(*iKumT-h4W@Dho@ zbnzUPe>d65@|O3KNKsOLB+R0z!Q9_L>%Sy*HXF%*=jM!4T$(JPY0`SG5(A1o4 z_wi*T+=qdI!;K#X+OUG1J_L7r%(Tu17Siuj*$kLdMs7D8 zjbOP1f5eP7qy&*nj$J>Xu3{inlKqavr)q}Lt*RvP!Ayr)`_`1c{b!krr zBr#|tZ(*WI;zv!JC$7vaj7qOA4ce>OY;i70CjKhP_y5wA8LVr&D9!VdPFd!Q?+??2Q%6(9d6APxl}GI`GIWw?5HYX93`>{^ zKb^u?nt~%p&|abn z8=!T`j^V2$g9eOk@8F=CMp82fB zN!HFY#K`U+O;)CdS?>xWw@WkTT$GVb2n+RNF1x2C{k6VnTVH*@Q4;6}A(Ul)({ox@ zXkQ@L{bI#duWFPf`Zx{9c6rWiAyn2xRm$>fiP{IQV6mT!m&IcY{CJ8W1$PK_(8YhmYZ`3h+IWd1J=bFHpj2T=@L@JFUug zqHT(vEl1jgOcUZgeot-9Eqm{<8NyISpE|@xk>GT?M*v$})KjCGRhC)0*3~0WAiWho zdVJMPRKpqt4PhasfZpECtd1d8Jl>fBP1|n7Oi#4uz{^?bHsDnTeffMDbIag zf-D_4r2kUCFh;)Z8o^mQ`O_NDAVGj%`MKNa0f91(z9E(gq+rg$aA%Bm|2lW7(U`)z zNbx!$DM*w6(KGh!@t`9lsB0N@Axu5z^iNgNgH^xM_z~@FcC%3ZBy+ft4dHyQkyW*k zgIK=LYnB;~1&+-=@E(T?*M>^(^jD+mhhB}te$i`O zjBz$QD9pzwcBZ7!F5W}?d+hTEr;R^VCH~OLCEMd~#0EN=t)5t4yGUH}oO4_ALlBZq zwSB_pTefqHwaAyWwu#nvC1t!G3IU&XNIqY*!N3kV+bc?2sy_Mio=wEU<(6uWC0_(O zOKBC7QyaU6LT{DL_;8^^ggigXi8x;sYmu7>wfZWyLToC%%tL-(6Py(A03U!alNURw zeo*X|__Nq8@er5O12se)Vz_yMmye@P?I%ZER+rBVeC<*Hy1!Yqw3vkYumEQ0F}lC% za+{}UK~ReX*h8(GcMAd`sbn9o*>`=krAdLO#lrPJRnh;3^j$rG(e{4GG~qKmM6O)d zx8t*a)sHtK7%AJuu5O!ZxyZ9bEQ3!F`rdVour5L?mV7g|EQVv~kk3o+La(>6bR_KX zpid>Pzj=r}LNvPKY3K2>Goj4!@|Lm8`&A9)!jDT3k5h_A%eE64)q>*6v$_(kGfS<6Fk&nP-MHnCGkx1*<<4Q zUvPCJ9nG9tj~DiPI||yBu^P?|B_z*Nm7vkA<<`s#GlkTdi?Z?ra^*`SfqSEqrMRx4 zy`h{g@4Z0}t7-IWIjV6et$jMRRC|fJPXF3E8MDWpQ|s4QTc1pQQlb@-4H;h>{@mAX zb$2CfYV>=@l8i|0D;5)?@-HNCDdwLL0jD><{z9`{-8EQEOj?`bsQA5tI<+ANUTfWJ z?OS4_qaJT5Zujb&f+)4E8A%%^r;ya+%n%v(Q@;#j`9fAviLL(Bn7wl zYlsE%EZqkmFKl(piZ#L?J#mRG;xX_sr%s)U=(YI&_j}yJbg$y|gr_IxPW!adfM2RA LTFQktEdu`^Vf%`p literal 0 HcmV?d00001 From cdfd57dd48d256380895d890d75fb011cc773d82 Mon Sep 17 00:00:00 2001 From: Abdul Ali Noori Date: Sat, 23 Sep 2023 12:28:23 +0330 Subject: [PATCH 14/32] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a69e665..992a92c 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ | Project Login Page | |---------------------------------------| -|

Finance-Tracker login
| +|
Finance-Tracker login
| From 54c25954d0e50d5b463ad11de4d7a9ec3897a86f Mon Sep 17 00:00:00 2001 From: Abdul Ali Noori Date: Sat, 23 Sep 2023 12:44:08 +0330 Subject: [PATCH 15/32] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 992a92c..cc4f1d9 100644 --- a/README.md +++ b/README.md @@ -109,7 +109,7 @@ Clone this repository to your desired folder: ```sh cd my-folder - https://github.com/baqar-abbas/recipe-app-capstone.git + https://github.com/ab-noori/Finance-Tracker.git ```

(back to top)

@@ -168,7 +168,7 @@ To run tests, run the following command: Contributions, issues, and feature requests are welcome! - Feel free to check the [issues page](https://github.com/baqar-abbas/recipe-app-capstone/issues/new). + Feel free to check the [issues page](https://github.com/ab-noori/Finance-Tracker/issues/new).

(back to top)

From 75b3ecbf9c60689f5db968f34d83bdeefdb2de42 Mon Sep 17 00:00:00 2001 From: Abdul Ali Noori Date: Sat, 23 Sep 2023 13:05:55 +0330 Subject: [PATCH 16/32] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index cc4f1d9..5466f1b 100644 --- a/README.md +++ b/README.md @@ -184,7 +184,7 @@ To run tests, run the following command: ## 🙏 Acknowledgments - First, I would like to thank Microverse and my coding partners. + First, I would like to thank Microverse and my coding partners, then I would like to give special credit to the creator of the design ([Gregoire Vella on Behance](https://www.behance.net/gregoirevella)) that I have used in my project.

(back to top)

From d002da4c3fa682974f6c81f943db10b77988a7d1 Mon Sep 17 00:00:00 2001 From: Abdul Ali Noori Date: Sat, 23 Sep 2023 13:08:12 +0330 Subject: [PATCH 17/32] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5466f1b..b0035b7 100644 --- a/README.md +++ b/README.md @@ -184,7 +184,7 @@ To run tests, run the following command: ## 🙏 Acknowledgments - First, I would like to thank Microverse and my coding partners, then I would like to give special credit to the creator of the design ([Gregoire Vella on Behance](https://www.behance.net/gregoirevella)) that I have used in my project. + First, I would like to thank Microverse and my coding partners, and then I would like to give special credit to the creator of the design ([Gregoire Vella on Behance](https://www.behance.net/gregoirevella)) that I have used in my project.

(back to top)

From d17c04b69ab69ca6bc3fbc12cf308ce5724d67c0 Mon Sep 17 00:00:00 2001 From: Abdul Ali Noori Date: Sat, 23 Sep 2023 13:23:46 +0330 Subject: [PATCH 18/32] Update README.md --- README.md | 23 ++++++++--------------- 1 file changed, 8 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index b0035b7..0460046 100644 --- a/README.md +++ b/README.md @@ -68,17 +68,12 @@ ### Key Features -- **[Design the Application]** -- **[Login page and registration page]** -- **[Authentication]** -- **[Navigation menu]** -- **[General Shopping List]** -- **[Food list]** -- **[Recipes list]** -- **[Recipe details]** -- **[Public recipe list]** -- **[Unit and integration tests]** -- **[RSpec and Capybara testing]** +- **[Splash screen]** +- **[Sign up and log in pages]** +- **[Home page (categories page)]** +- **[Details page (transactions page)]** +- **["Add a new category" page]** +- **["Add a new transaction" page]** | Implemented Schema's ERD | |---------------------------------------| @@ -155,10 +150,8 @@ To run tests, run the following command: ## 🔭 Future Features -- [ ] **[Inventories list]** -- [ ] **[Inventory details]** -- [ ] **[Recipe details]** -- [ ] **[Inventory shopping list]** +- [ ] **[Applying the edit and delete options for categories]** +- [ ] **[Optimizing the project style for longer screen sizes]**

(back to top)

From 681ff47a25793d480c944f0ebaeadc6488e16cd4 Mon Sep 17 00:00:00 2001 From: Abdul Ali Noori Date: Sat, 23 Sep 2023 13:29:49 +0330 Subject: [PATCH 19/32] Update README.md --- README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/README.md b/README.md index 0460046..c4a5675 100644 --- a/README.md +++ b/README.md @@ -18,6 +18,7 @@ - [🛠 Built With](#built-with) - [Tech Stack](#tech-stack) - [Key Features](#key-features) + - [🚀 Live Demo](#live-demo) - [💻 Getting Started](#getting-started) - [Setup](#setup) - [Prerequisites](#prerequisites) @@ -81,6 +82,12 @@

(back to top)

+## 🚀 Live Demo & Project intro +> - [Live Demo on Render](https://salsaldevgroup.onrender.com) +> - [Introduction to the project]() + +

(back to top)

+ ## 💻 Getting Started From 7d0d439ea4ebaf125a6c100bd4d0899a2a3368e6 Mon Sep 17 00:00:00 2001 From: Abdul Ali Noori Date: Sat, 23 Sep 2023 13:31:44 +0330 Subject: [PATCH 20/32] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c4a5675..89a7f61 100644 --- a/README.md +++ b/README.md @@ -83,7 +83,7 @@

(back to top)

## 🚀 Live Demo & Project intro -> - [Live Demo on Render](https://salsaldevgroup.onrender.com) +> - [Live Demo on Render](https://finance-tracker-kxhn.onrender.com/) > - [Introduction to the project]()

(back to top)

From 722d66fddc00f2a77a8cc1e0044940411d86b28e Mon Sep 17 00:00:00 2001 From: Abdul Ali Noori Date: Sat, 23 Sep 2023 15:49:38 +0330 Subject: [PATCH 21/32] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 89a7f61..f966f01 100644 --- a/README.md +++ b/README.md @@ -121,6 +121,8 @@ Install this project with: ```sh bundle install + rails db:create + rails db:migrate ```

(back to top)

From 1a4e78c3d5ace567b53b19d878be45dd58fe8fee Mon Sep 17 00:00:00 2001 From: Abdul Ali Noori Date: Sat, 23 Sep 2023 19:14:23 +0330 Subject: [PATCH 22/32] Add validation to the category model. --- app/models/category.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/models/category.rb b/app/models/category.rb index 0fbfb01..950b88e 100644 --- a/app/models/category.rb +++ b/app/models/category.rb @@ -3,4 +3,6 @@ class Category < ApplicationRecord has_many :expense_category_associations has_one_attached :icon, dependent: :destroy has_many :expenses, through: :expense_category_associations + + validates :name, presence: true end From d3936966e337a948f2c0242bf8e984be0a6ae71e Mon Sep 17 00:00:00 2001 From: Abdul Ali Noori Date: Sat, 23 Sep 2023 19:14:56 +0330 Subject: [PATCH 23/32] Add validation to the expense model --- app/models/expense.rb | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/models/expense.rb b/app/models/expense.rb index bdbeb8e..9e6bf16 100644 --- a/app/models/expense.rb +++ b/app/models/expense.rb @@ -2,4 +2,7 @@ class Expense < ApplicationRecord belongs_to :user has_many :expense_category_associations has_many :categories, through: :expense_category_associations + + validates :name, presence: true + validates :amount, presence: true, numericality: { greater_than: 0 } end From 02e525b97ab1230b6e5e3b41cefff07ddae8b14f Mon Sep 17 00:00:00 2001 From: Abdul Ali Noori Date: Sat, 23 Sep 2023 19:16:02 +0330 Subject: [PATCH 24/32] Add and install testing gems. --- Gemfile | 3 +++ Gemfile.lock | 30 ++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/Gemfile b/Gemfile index 0be9dee..a6fb29a 100644 --- a/Gemfile +++ b/Gemfile @@ -57,6 +57,8 @@ gem 'bootsnap', require: false group :development, :test do # See https://guides.rubyonrails.org/debugging_rails_applications.html#debugging-with-the-debug-gem gem 'debug', platforms: %i[mri mingw x64_mingw] + gem 'rspec-rails' + gem 'factory_bot_rails' end group :development do @@ -74,4 +76,5 @@ group :test do # Use system testing [https://guides.rubyonrails.org/testing.html#system-testing] gem 'capybara' gem 'selenium-webdriver' + gem 'rails-controller-testing' end diff --git a/Gemfile.lock b/Gemfile.lock index 81ac10c..32319d3 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -96,7 +96,13 @@ GEM railties (>= 4.1.0) responders warden (~> 1.2.3) + diff-lcs (1.5.0) erubi (1.12.0) + factory_bot (6.2.1) + activesupport (>= 5.0.0) + factory_bot_rails (6.2.0) + factory_bot (~> 6.2.0) + railties (>= 5.0.0) globalid (1.2.1) activesupport (>= 6.1) i18n (1.14.1) @@ -168,6 +174,10 @@ GEM activesupport (= 7.0.8) bundler (>= 1.15.0) railties (= 7.0.8) + rails-controller-testing (1.0.5) + actionpack (>= 5.0.1.rc1) + actionview (>= 5.0.1.rc1) + activesupport (>= 5.0.1.rc1) rails-dom-testing (2.2.0) activesupport (>= 5.0.0) minitest @@ -193,6 +203,23 @@ GEM actionpack (>= 5.2) railties (>= 5.2) rexml (3.2.6) + rspec-core (3.12.2) + rspec-support (~> 3.12.0) + rspec-expectations (3.12.3) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.12.0) + rspec-mocks (3.12.6) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.12.0) + rspec-rails (6.0.3) + actionpack (>= 6.1) + activesupport (>= 6.1) + railties (>= 6.1) + rspec-core (~> 3.12) + rspec-expectations (~> 3.12) + rspec-mocks (~> 3.12) + rspec-support (~> 3.12) + rspec-support (3.12.1) rubocop (1.56.3) base64 (~> 0.1.1) json (~> 2.3) @@ -257,11 +284,14 @@ DEPENDENCIES capybara debug devise + factory_bot_rails importmap-rails jbuilder pg (~> 1.1) puma (~> 5.0) rails (~> 7.0.8) + rails-controller-testing + rspec-rails rubocop (>= 1.0, < 2.0) selenium-webdriver sprockets-rails From 2a9bb4bda85faaabc92170b0327696edebc62f3c Mon Sep 17 00:00:00 2001 From: Abdul Ali Noori Date: Sat, 23 Sep 2023 19:17:50 +0330 Subject: [PATCH 25/32] Set up factoryBot for generating test data. --- spec/factories/categories.rb | 8 +++ spec/factories/expenses.rb | 9 ++++ spec/factories/users.rb | 10 ++++ spec/rails_helper.rb | 70 ++++++++++++++++++++++++++ spec/requests/splash_spec.rb | 17 +++++++ spec/spec_helper.rb | 98 ++++++++++++++++++++++++++++++++++++ spec/support/factory_bot.rb | 6 +++ 7 files changed, 218 insertions(+) create mode 100644 spec/factories/categories.rb create mode 100644 spec/factories/expenses.rb create mode 100644 spec/factories/users.rb create mode 100644 spec/rails_helper.rb create mode 100644 spec/requests/splash_spec.rb create mode 100644 spec/spec_helper.rb create mode 100644 spec/support/factory_bot.rb diff --git a/spec/factories/categories.rb b/spec/factories/categories.rb new file mode 100644 index 0000000..ba30aef --- /dev/null +++ b/spec/factories/categories.rb @@ -0,0 +1,8 @@ +# spec/factories/categories.rb + +FactoryBot.define do + factory :category, class: Category do + name { "Sample Category" } + association :user, factory: :user + end + end diff --git a/spec/factories/expenses.rb b/spec/factories/expenses.rb new file mode 100644 index 0000000..84b61c2 --- /dev/null +++ b/spec/factories/expenses.rb @@ -0,0 +1,9 @@ +# spec/factories/expenses.rb + +FactoryBot.define do + factory :expense, class: Expense do + name { "Sample Expense" } + amount { 50.0 } + association :user, factory: :user + end + end diff --git a/spec/factories/users.rb b/spec/factories/users.rb new file mode 100644 index 0000000..32445dd --- /dev/null +++ b/spec/factories/users.rb @@ -0,0 +1,10 @@ +# In spec/factories/users.rb + +FactoryBot.define do + factory :user do + email { "user@example.com" } + password { "password" } + name { "Example User" } + role { "User" } + end + end diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb new file mode 100644 index 0000000..2fc5223 --- /dev/null +++ b/spec/rails_helper.rb @@ -0,0 +1,70 @@ +# This file is copied to spec/ when you run 'rails generate rspec:install' +require 'spec_helper' +ENV['RAILS_ENV'] ||= 'test' +require_relative '../config/environment' +# Prevent database truncation if the environment is production +abort("The Rails environment is running in production mode!") if Rails.env.production? +require 'rspec/rails' +# Add additional requires below this line. Rails is not loaded until this point! + +# Requires supporting ruby files with custom matchers and macros, etc, in +# spec/support/ and its subdirectories. Files matching `spec/**/*_spec.rb` are +# run as spec files by default. This means that files in spec/support that end +# in _spec.rb will both be required and run as specs, causing the specs to be +# run twice. It is recommended that you do not name files matching this glob to +# end with _spec.rb. You can configure this pattern with the --pattern +# option on the command line or in ~/.rspec, .rspec or `.rspec-local`. +# +# The following line is provided for convenience purposes. It has the downside +# of increasing the boot-up time by auto-requiring all files in the support +# directory. Alternatively, in the individual `*_spec.rb` files, manually +# require only the support files necessary. +# +# Dir[Rails.root.join('spec', 'support', '**', '*.rb')].sort.each { |f| require f } + +# Checks for pending migrations and applies them before tests are run. +# If you are not using ActiveRecord, you can remove these lines. + +require 'devise' +require 'factory_bot_rails' + +begin + ActiveRecord::Migration.maintain_test_schema! +rescue ActiveRecord::PendingMigrationError => e + abort e.to_s.strip +end +RSpec.configure do |config| + # Remove this line if you're not using ActiveRecord or ActiveRecord fixtures + config.fixture_path = "#{::Rails.root}/spec/fixtures" + + # If you're not using ActiveRecord, or you'd prefer not to run each of your + # examples within a transaction, remove the following line or assign false + # instead of true. + config.use_transactional_fixtures = true + + config.include Devise::Test::IntegrationHelpers, type: :request + config.include FactoryBot::Syntax::Methods + + # You can uncomment this line to turn off ActiveRecord support entirely. + # config.use_active_record = false + + # RSpec Rails can automatically mix in different behaviours to your tests + # based on their file location, for example enabling you to call `get` and + # `post` in specs under `spec/controllers`. + # + # You can disable this behaviour by removing the line below, and instead + # explicitly tag your specs with their type, e.g.: + # + # RSpec.describe UsersController, type: :controller do + # # ... + # end + # + # The different available types are documented in the features, such as in + # https://rspec.info/features/6-0/rspec-rails + config.infer_spec_type_from_file_location! + + # Filter lines from Rails gems in backtraces. + config.filter_rails_from_backtrace! + # arbitrary gems may also be filtered via: + # config.filter_gems_from_backtrace("gem name") +end diff --git a/spec/requests/splash_spec.rb b/spec/requests/splash_spec.rb new file mode 100644 index 0000000..4c788e6 --- /dev/null +++ b/spec/requests/splash_spec.rb @@ -0,0 +1,17 @@ +require 'rails_helper' + +RSpec.describe "Splashes", type: :request do + describe "GET /index" do + it "returns a successful response for an authenticated user" do + user = FactoryBot.create(:user) + sign_in user + get root_path + expect(response).to have_http_status(200) + end + + it "returns a successful response for an unauthenticated user" do + get root_path + expect(response).to have_http_status(200) + end + end +end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb new file mode 100644 index 0000000..35de9f0 --- /dev/null +++ b/spec/spec_helper.rb @@ -0,0 +1,98 @@ +# This file was generated by the `rails generate rspec:install` command. Conventionally, all +# specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`. +# The generated `.rspec` file contains `--require spec_helper` which will cause +# this file to always be loaded, without a need to explicitly require it in any +# files. +# +# Given that it is always loaded, you are encouraged to keep this file as +# light-weight as possible. Requiring heavyweight dependencies from this file +# will add to the boot time of your test suite on EVERY test run, even for an +# individual file that may not need all of that loaded. Instead, consider making +# a separate helper file that requires the additional dependencies and performs +# the additional setup, and require it from the spec files that actually need +# it. +# +# See https://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration +RSpec.configure do |config| + # rspec-expectations config goes here. You can use an alternate + # assertion/expectation library such as wrong or the stdlib/minitest + # assertions if you prefer. + config.expect_with :rspec do |expectations| + # This option will default to `true` in RSpec 4. It makes the `description` + # and `failure_message` of custom matchers include text for helper methods + # defined using `chain`, e.g.: + # be_bigger_than(2).and_smaller_than(4).description + # # => "be bigger than 2 and smaller than 4" + # ...rather than: + # # => "be bigger than 2" + expectations.include_chain_clauses_in_custom_matcher_descriptions = true + end + + # rspec-mocks config goes here. You can use an alternate test double + # library (such as bogus or mocha) by changing the `mock_with` option here. + config.mock_with :rspec do |mocks| + # Prevents you from mocking or stubbing a method that does not exist on + # a real object. This is generally recommended, and will default to + # `true` in RSpec 4. + mocks.verify_partial_doubles = true + end + + # This option will default to `:apply_to_host_groups` in RSpec 4 (and will + # have no way to turn it off -- the option exists only for backwards + # compatibility in RSpec 3). It causes shared context metadata to be + # inherited by the metadata hash of host groups and examples, rather than + # triggering implicit auto-inclusion in groups with matching metadata. + config.shared_context_metadata_behavior = :apply_to_host_groups + +# The settings below are suggested to provide a good initial experience +# with RSpec, but feel free to customize to your heart's content. +=begin + # This allows you to limit a spec run to individual examples or groups + # you care about by tagging them with `:focus` metadata. When nothing + # is tagged with `:focus`, all examples get run. RSpec also provides + # aliases for `it`, `describe`, and `context` that include `:focus` + # metadata: `fit`, `fdescribe` and `fcontext`, respectively. + config.filter_run_when_matching :focus + + # Allows RSpec to persist some state between runs in order to support + # the `--only-failures` and `--next-failure` CLI options. We recommend + # you configure your source control system to ignore this file. + config.example_status_persistence_file_path = "spec/examples.txt" + + # Limits the available syntax to the non-monkey patched syntax that is + # recommended. For more details, see: + # https://rspec.info/features/3-12/rspec-core/configuration/zero-monkey-patching-mode/ + config.disable_monkey_patching! + + # This setting enables warnings. It's recommended, but in some cases may + # be too noisy due to issues in dependencies. + config.warnings = true + + # Many RSpec users commonly either run the entire suite or an individual + # file, and it's useful to allow more verbose output when running an + # individual spec file. + if config.files_to_run.one? + # Use the documentation formatter for detailed output, + # unless a formatter has already been configured + # (e.g. via a command-line flag). + config.default_formatter = "doc" + end + + # Print the 10 slowest examples and example groups at the + # end of the spec run, to help surface which specs are running + # particularly slow. + config.profile_examples = 10 + + # Run specs in random order to surface order dependencies. If you find an + # order dependency and want to debug it, you can fix the order by providing + # the seed, which is printed after each run. + # --seed 1234 + config.order = :random + + # Seed global randomization in this process using the `--seed` CLI option. + # Setting this allows you to use `--seed` to deterministically reproduce + # test failures related to randomization by passing the same `--seed` value + # as the one that triggered the failure. + Kernel.srand config.seed +=end +end diff --git a/spec/support/factory_bot.rb b/spec/support/factory_bot.rb new file mode 100644 index 0000000..7be78bc --- /dev/null +++ b/spec/support/factory_bot.rb @@ -0,0 +1,6 @@ +# spec/support/factory_bot.rb + +RSpec.configure do |config| + config.include FactoryBot::Syntax::Methods + end + \ No newline at end of file From d18283d5f98f106b0019531b346286acbf4f7d14 Mon Sep 17 00:00:00 2001 From: Abdul Ali Noori Date: Sat, 23 Sep 2023 19:18:46 +0330 Subject: [PATCH 26/32] Add Unit test files for models. --- spec/models/category_spec.rb | 28 +++++++++++++ .../expense_category_association_spec.rb | 31 ++++++++++++++ spec/models/expense_spec.rb | 41 +++++++++++++++++++ spec/models/user_spec.rb | 24 +++++++++++ 4 files changed, 124 insertions(+) create mode 100644 spec/models/category_spec.rb create mode 100644 spec/models/expense_category_association_spec.rb create mode 100644 spec/models/expense_spec.rb create mode 100644 spec/models/user_spec.rb diff --git a/spec/models/category_spec.rb b/spec/models/category_spec.rb new file mode 100644 index 0000000..6ee7295 --- /dev/null +++ b/spec/models/category_spec.rb @@ -0,0 +1,28 @@ +require 'rails_helper' + +RSpec.describe Category, type: :model do + context "validations" do + it "is valid with a name" do + category = FactoryBot.create(:category) + expect(category).to be_valid + end + + it "is invalid without a name" do + category = Category.new + expect(category).to_not be_valid + expect(category.errors[:name]).to include("can't be blank") + end + end + + context "associations" do + it "belongs to a user" do + association = Category.reflect_on_association(:user) + expect(association.macro).to eq(:belongs_to) + end + + it "has many expenses" do + association = Category.reflect_on_association(:expenses) + expect(association.macro).to eq(:has_many) + end + end +end diff --git a/spec/models/expense_category_association_spec.rb b/spec/models/expense_category_association_spec.rb new file mode 100644 index 0000000..34536db --- /dev/null +++ b/spec/models/expense_category_association_spec.rb @@ -0,0 +1,31 @@ +# spec/models/expense_category_association_spec.rb + +require 'rails_helper' + +RSpec.describe ExpenseCategoryAssociation, type: :model do + describe "associations" do + it "belongs to an expense" do + association = described_class.reflect_on_association(:expense) + expect(association.macro).to eq :belongs_to + end + + it "belongs to a category" do + association = described_class.reflect_on_association(:category) + expect(association.macro).to eq :belongs_to + end + end + + describe "validations" do + it "is not valid without an expense" do + category = FactoryBot.create(:category) + association = ExpenseCategoryAssociation.new(category: category) + expect(association).to_not be_valid + end + + it "is not valid without a category" do + expense = FactoryBot.create(:expense) + association = ExpenseCategoryAssociation.new(expense: expense) + expect(association).to_not be_valid + end + end +end diff --git a/spec/models/expense_spec.rb b/spec/models/expense_spec.rb new file mode 100644 index 0000000..98fe9fa --- /dev/null +++ b/spec/models/expense_spec.rb @@ -0,0 +1,41 @@ +require 'rails_helper' + +RSpec.describe Expense, type: :model do + describe "validations" do + it "is valid with valid attributes" do + user = FactoryBot.create(:user) + expense = Expense.new(name: "Groceries", amount: 50.0, user: user) + expect(expense).to be_valid + end + + it "is not valid without a name" do + user = FactoryBot.create(:user) + expense = Expense.new(amount: 50.0, user: user) + expect(expense).to_not be_valid + end + + it "is not valid without an amount" do + user = FactoryBot.create(:user) + expense = Expense.new(name: "Groceries", user: user) + expect(expense).to_not be_valid + end + + it "is not valid with a non-positive amount" do + user = FactoryBot.create(:user) + expense = Expense.new(name: "Groceries", amount: -10.0, user: user) + expect(expense).to_not be_valid + end + end + + describe "associations" do + it "belongs to a user" do + association = described_class.reflect_on_association(:user) + expect(association.macro).to eq :belongs_to + end + + it "has many expense category associations" do + association = described_class.reflect_on_association(:expense_category_associations) + expect(association.macro).to eq :has_many + end + end +end diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb new file mode 100644 index 0000000..6563da4 --- /dev/null +++ b/spec/models/user_spec.rb @@ -0,0 +1,24 @@ +require 'rails_helper' + +RSpec.describe User, type: :model do + # Test 1: Validation - User is valid with valid attributes + it "is valid with valid attributes" do + user = FactoryBot.build(:user, name: "exampleuser", email: "user@example.com", password: "password") + expect(user).to be_valid + end + + # Test 2: Validation - User is not valid without a username + it "is not valid without a username" do + user = FactoryBot.build(:user, name: nil, email: "user@example.com", password: "password") + expect(user).to_not be_valid + end + + # Test 3: Association - User has many categories + it "has many categories" do + user = FactoryBot.create(:user) + category1 = FactoryBot.create(:category, user: user) + category2 = FactoryBot.create(:category, user: user) + + expect(user.categories).to include(category1, category2) + end +end From 4150359c50d981e59308d8427240cba4bfbdba64 Mon Sep 17 00:00:00 2001 From: Abdul Ali Noori Date: Sat, 23 Sep 2023 19:19:13 +0330 Subject: [PATCH 27/32] Add integration test files for controllers. --- spec/requests/categories_spec.rb | 38 ++++++++++++++++++++++++++++++++ spec/requests/expenses_spec.rb | 27 +++++++++++++++++++++++ 2 files changed, 65 insertions(+) create mode 100644 spec/requests/categories_spec.rb create mode 100644 spec/requests/expenses_spec.rb diff --git a/spec/requests/categories_spec.rb b/spec/requests/categories_spec.rb new file mode 100644 index 0000000..20e234c --- /dev/null +++ b/spec/requests/categories_spec.rb @@ -0,0 +1,38 @@ +require 'rails_helper' + +RSpec.describe "Categories", type: :request do + let(:user) { create(:user) } # Create a user using FactoryBot + + before do + sign_in user # Assuming you have a sign_in helper method for Devise + end + + describe "GET /categories" do + it "displays the categories index page" do + get categories_path + expect(response).to have_http_status(200) + expect(response).to render_template(:index) + end + end + + describe "GET /categories/new" do + it "displays the new category form" do + get new_category_path + expect(response).to have_http_status(200) + expect(response).to render_template(:new) + end + end + + describe "POST /categories" do + it "creates a new category" do + category_attributes = attributes_for(:category, user: user) + + expect { + post categories_path, params: { category: category_attributes } + }.to change(Category, :count).by(1) + + expect(response).to have_http_status(302) + expect(response).to redirect_to(categories_path) + end + end +end diff --git a/spec/requests/expenses_spec.rb b/spec/requests/expenses_spec.rb new file mode 100644 index 0000000..402f63a --- /dev/null +++ b/spec/requests/expenses_spec.rb @@ -0,0 +1,27 @@ +require 'rails_helper' + +RSpec.describe ExpensesController, type: :request do + let(:user) { create(:user) } + let(:category) { create(:category, user: user) } + + before do + sign_in user + end + + describe "GET /new" do + it "returns a successful response" do + get new_category_expense_path(category) + expect(response).to be_successful + end + + it "renders the 'new' template" do + get new_category_expense_path(category) + expect(response).to render_template(:new) + end + + it "assigns a new expense" do + get new_category_expense_path(category) + expect(assigns(:expense)).to be_a_new(Expense) + end + end +end From edf1f9147d61c12ff3ee8e9d1c5959de69ebb675 Mon Sep 17 00:00:00 2001 From: Abdul Ali Noori Date: Sat, 23 Sep 2023 19:19:50 +0330 Subject: [PATCH 28/32] Add rspec --- .rspec | 1 + 1 file changed, 1 insertion(+) create mode 100644 .rspec diff --git a/.rspec b/.rspec new file mode 100644 index 0000000..c99d2e7 --- /dev/null +++ b/.rspec @@ -0,0 +1 @@ +--require spec_helper From b1d4a5a95acc3e0f6ce4693b35f986c139327c8d Mon Sep 17 00:00:00 2001 From: Abdul Ali Noori Date: Sat, 23 Sep 2023 19:34:51 +0330 Subject: [PATCH 29/32] Fix all the rubocop offenses. --- Gemfile | 4 +- spec/factories/categories.rb | 8 +- spec/factories/expenses.rb | 10 +- spec/factories/users.rb | 12 +-- spec/models/category_spec.rb | 12 +-- .../expense_category_association_spec.rb | 16 +-- spec/models/expense_spec.rb | 24 ++--- spec/models/user_spec.rb | 14 +-- spec/rails_helper.rb | 4 +- spec/requests/categories_spec.rb | 20 ++-- spec/requests/expenses_spec.rb | 10 +- spec/requests/splash_spec.rb | 8 +- spec/spec_helper.rb | 100 +++++++++--------- spec/support/factory_bot.rb | 5 +- 14 files changed, 122 insertions(+), 125 deletions(-) diff --git a/Gemfile b/Gemfile index a6fb29a..eb4b32c 100644 --- a/Gemfile +++ b/Gemfile @@ -57,8 +57,8 @@ gem 'bootsnap', require: false group :development, :test do # See https://guides.rubyonrails.org/debugging_rails_applications.html#debugging-with-the-debug-gem gem 'debug', platforms: %i[mri mingw x64_mingw] - gem 'rspec-rails' gem 'factory_bot_rails' + gem 'rspec-rails' end group :development do @@ -75,6 +75,6 @@ end group :test do # Use system testing [https://guides.rubyonrails.org/testing.html#system-testing] gem 'capybara' - gem 'selenium-webdriver' gem 'rails-controller-testing' + gem 'selenium-webdriver' end diff --git a/spec/factories/categories.rb b/spec/factories/categories.rb index ba30aef..9fa6943 100644 --- a/spec/factories/categories.rb +++ b/spec/factories/categories.rb @@ -1,8 +1,8 @@ # spec/factories/categories.rb FactoryBot.define do - factory :category, class: Category do - name { "Sample Category" } - association :user, factory: :user - end + factory :category, class: Category do + name { 'Sample Category' } + association :user, factory: :user end +end diff --git a/spec/factories/expenses.rb b/spec/factories/expenses.rb index 84b61c2..ff070f8 100644 --- a/spec/factories/expenses.rb +++ b/spec/factories/expenses.rb @@ -1,9 +1,9 @@ # spec/factories/expenses.rb FactoryBot.define do - factory :expense, class: Expense do - name { "Sample Expense" } - amount { 50.0 } - association :user, factory: :user - end + factory :expense, class: Expense do + name { 'Sample Expense' } + amount { 50.0 } + association :user, factory: :user end +end diff --git a/spec/factories/users.rb b/spec/factories/users.rb index 32445dd..4cf7400 100644 --- a/spec/factories/users.rb +++ b/spec/factories/users.rb @@ -1,10 +1,10 @@ # In spec/factories/users.rb FactoryBot.define do - factory :user do - email { "user@example.com" } - password { "password" } - name { "Example User" } - role { "User" } - end + factory :user do + email { 'user@example.com' } + password { 'password' } + name { 'Example User' } + role { 'User' } end +end diff --git a/spec/models/category_spec.rb b/spec/models/category_spec.rb index 6ee7295..1db4d8c 100644 --- a/spec/models/category_spec.rb +++ b/spec/models/category_spec.rb @@ -1,26 +1,26 @@ require 'rails_helper' RSpec.describe Category, type: :model do - context "validations" do - it "is valid with a name" do + context 'validations' do + it 'is valid with a name' do category = FactoryBot.create(:category) expect(category).to be_valid end - it "is invalid without a name" do + it 'is invalid without a name' do category = Category.new expect(category).to_not be_valid expect(category.errors[:name]).to include("can't be blank") end end - context "associations" do - it "belongs to a user" do + context 'associations' do + it 'belongs to a user' do association = Category.reflect_on_association(:user) expect(association.macro).to eq(:belongs_to) end - it "has many expenses" do + it 'has many expenses' do association = Category.reflect_on_association(:expenses) expect(association.macro).to eq(:has_many) end diff --git a/spec/models/expense_category_association_spec.rb b/spec/models/expense_category_association_spec.rb index 34536db..41af64b 100644 --- a/spec/models/expense_category_association_spec.rb +++ b/spec/models/expense_category_association_spec.rb @@ -3,28 +3,28 @@ require 'rails_helper' RSpec.describe ExpenseCategoryAssociation, type: :model do - describe "associations" do - it "belongs to an expense" do + describe 'associations' do + it 'belongs to an expense' do association = described_class.reflect_on_association(:expense) expect(association.macro).to eq :belongs_to end - it "belongs to a category" do + it 'belongs to a category' do association = described_class.reflect_on_association(:category) expect(association.macro).to eq :belongs_to end end - describe "validations" do - it "is not valid without an expense" do + describe 'validations' do + it 'is not valid without an expense' do category = FactoryBot.create(:category) - association = ExpenseCategoryAssociation.new(category: category) + association = ExpenseCategoryAssociation.new(category:) expect(association).to_not be_valid end - it "is not valid without a category" do + it 'is not valid without a category' do expense = FactoryBot.create(:expense) - association = ExpenseCategoryAssociation.new(expense: expense) + association = ExpenseCategoryAssociation.new(expense:) expect(association).to_not be_valid end end diff --git a/spec/models/expense_spec.rb b/spec/models/expense_spec.rb index 98fe9fa..789db68 100644 --- a/spec/models/expense_spec.rb +++ b/spec/models/expense_spec.rb @@ -1,39 +1,39 @@ require 'rails_helper' RSpec.describe Expense, type: :model do - describe "validations" do - it "is valid with valid attributes" do + describe 'validations' do + it 'is valid with valid attributes' do user = FactoryBot.create(:user) - expense = Expense.new(name: "Groceries", amount: 50.0, user: user) + expense = Expense.new(name: 'Groceries', amount: 50.0, user:) expect(expense).to be_valid end - it "is not valid without a name" do + it 'is not valid without a name' do user = FactoryBot.create(:user) - expense = Expense.new(amount: 50.0, user: user) + expense = Expense.new(amount: 50.0, user:) expect(expense).to_not be_valid end - it "is not valid without an amount" do + it 'is not valid without an amount' do user = FactoryBot.create(:user) - expense = Expense.new(name: "Groceries", user: user) + expense = Expense.new(name: 'Groceries', user:) expect(expense).to_not be_valid end - it "is not valid with a non-positive amount" do + it 'is not valid with a non-positive amount' do user = FactoryBot.create(:user) - expense = Expense.new(name: "Groceries", amount: -10.0, user: user) + expense = Expense.new(name: 'Groceries', amount: -10.0, user:) expect(expense).to_not be_valid end end - describe "associations" do - it "belongs to a user" do + describe 'associations' do + it 'belongs to a user' do association = described_class.reflect_on_association(:user) expect(association.macro).to eq :belongs_to end - it "has many expense category associations" do + it 'has many expense category associations' do association = described_class.reflect_on_association(:expense_category_associations) expect(association.macro).to eq :has_many end diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 6563da4..67ed715 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -2,22 +2,22 @@ RSpec.describe User, type: :model do # Test 1: Validation - User is valid with valid attributes - it "is valid with valid attributes" do - user = FactoryBot.build(:user, name: "exampleuser", email: "user@example.com", password: "password") + it 'is valid with valid attributes' do + user = FactoryBot.build(:user, name: 'exampleuser', email: 'user@example.com', password: 'password') expect(user).to be_valid end # Test 2: Validation - User is not valid without a username - it "is not valid without a username" do - user = FactoryBot.build(:user, name: nil, email: "user@example.com", password: "password") + it 'is not valid without a username' do + user = FactoryBot.build(:user, name: nil, email: 'user@example.com', password: 'password') expect(user).to_not be_valid end # Test 3: Association - User has many categories - it "has many categories" do + it 'has many categories' do user = FactoryBot.create(:user) - category1 = FactoryBot.create(:category, user: user) - category2 = FactoryBot.create(:category, user: user) + category1 = FactoryBot.create(:category, user:) + category2 = FactoryBot.create(:category, user:) expect(user.categories).to include(category1, category2) end diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb index 2fc5223..5fc149d 100644 --- a/spec/rails_helper.rb +++ b/spec/rails_helper.rb @@ -3,7 +3,7 @@ ENV['RAILS_ENV'] ||= 'test' require_relative '../config/environment' # Prevent database truncation if the environment is production -abort("The Rails environment is running in production mode!") if Rails.env.production? +abort('The Rails environment is running in production mode!') if Rails.env.production? require 'rspec/rails' # Add additional requires below this line. Rails is not loaded until this point! @@ -35,7 +35,7 @@ end RSpec.configure do |config| # Remove this line if you're not using ActiveRecord or ActiveRecord fixtures - config.fixture_path = "#{::Rails.root}/spec/fixtures" + config.fixture_path = "#{Rails.root}/spec/fixtures" # If you're not using ActiveRecord, or you'd prefer not to run each of your # examples within a transaction, remove the following line or assign false diff --git a/spec/requests/categories_spec.rb b/spec/requests/categories_spec.rb index 20e234c..4277832 100644 --- a/spec/requests/categories_spec.rb +++ b/spec/requests/categories_spec.rb @@ -1,35 +1,35 @@ require 'rails_helper' -RSpec.describe "Categories", type: :request do +RSpec.describe 'Categories', type: :request do let(:user) { create(:user) } # Create a user using FactoryBot before do sign_in user # Assuming you have a sign_in helper method for Devise end - describe "GET /categories" do - it "displays the categories index page" do + describe 'GET /categories' do + it 'displays the categories index page' do get categories_path expect(response).to have_http_status(200) expect(response).to render_template(:index) end end - describe "GET /categories/new" do - it "displays the new category form" do + describe 'GET /categories/new' do + it 'displays the new category form' do get new_category_path expect(response).to have_http_status(200) expect(response).to render_template(:new) end end - describe "POST /categories" do - it "creates a new category" do - category_attributes = attributes_for(:category, user: user) + describe 'POST /categories' do + it 'creates a new category' do + category_attributes = attributes_for(:category, user:) - expect { + expect do post categories_path, params: { category: category_attributes } - }.to change(Category, :count).by(1) + end.to change(Category, :count).by(1) expect(response).to have_http_status(302) expect(response).to redirect_to(categories_path) diff --git a/spec/requests/expenses_spec.rb b/spec/requests/expenses_spec.rb index 402f63a..ae4706b 100644 --- a/spec/requests/expenses_spec.rb +++ b/spec/requests/expenses_spec.rb @@ -2,14 +2,14 @@ RSpec.describe ExpensesController, type: :request do let(:user) { create(:user) } - let(:category) { create(:category, user: user) } - + let(:category) { create(:category, user:) } + before do sign_in user end - describe "GET /new" do - it "returns a successful response" do + describe 'GET /new' do + it 'returns a successful response' do get new_category_expense_path(category) expect(response).to be_successful end @@ -19,7 +19,7 @@ expect(response).to render_template(:new) end - it "assigns a new expense" do + it 'assigns a new expense' do get new_category_expense_path(category) expect(assigns(:expense)).to be_a_new(Expense) end diff --git a/spec/requests/splash_spec.rb b/spec/requests/splash_spec.rb index 4c788e6..2956954 100644 --- a/spec/requests/splash_spec.rb +++ b/spec/requests/splash_spec.rb @@ -1,15 +1,15 @@ require 'rails_helper' -RSpec.describe "Splashes", type: :request do - describe "GET /index" do - it "returns a successful response for an authenticated user" do +RSpec.describe 'Splashes', type: :request do + describe 'GET /index' do + it 'returns a successful response for an authenticated user' do user = FactoryBot.create(:user) sign_in user get root_path expect(response).to have_http_status(200) end - it "returns a successful response for an unauthenticated user" do + it 'returns a successful response for an unauthenticated user' do get root_path expect(response).to have_http_status(200) end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 35de9f0..dc50747 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -44,55 +44,53 @@ # triggering implicit auto-inclusion in groups with matching metadata. config.shared_context_metadata_behavior = :apply_to_host_groups -# The settings below are suggested to provide a good initial experience -# with RSpec, but feel free to customize to your heart's content. -=begin - # This allows you to limit a spec run to individual examples or groups - # you care about by tagging them with `:focus` metadata. When nothing - # is tagged with `:focus`, all examples get run. RSpec also provides - # aliases for `it`, `describe`, and `context` that include `:focus` - # metadata: `fit`, `fdescribe` and `fcontext`, respectively. - config.filter_run_when_matching :focus - - # Allows RSpec to persist some state between runs in order to support - # the `--only-failures` and `--next-failure` CLI options. We recommend - # you configure your source control system to ignore this file. - config.example_status_persistence_file_path = "spec/examples.txt" - - # Limits the available syntax to the non-monkey patched syntax that is - # recommended. For more details, see: - # https://rspec.info/features/3-12/rspec-core/configuration/zero-monkey-patching-mode/ - config.disable_monkey_patching! - - # This setting enables warnings. It's recommended, but in some cases may - # be too noisy due to issues in dependencies. - config.warnings = true - - # Many RSpec users commonly either run the entire suite or an individual - # file, and it's useful to allow more verbose output when running an - # individual spec file. - if config.files_to_run.one? - # Use the documentation formatter for detailed output, - # unless a formatter has already been configured - # (e.g. via a command-line flag). - config.default_formatter = "doc" - end - - # Print the 10 slowest examples and example groups at the - # end of the spec run, to help surface which specs are running - # particularly slow. - config.profile_examples = 10 - - # Run specs in random order to surface order dependencies. If you find an - # order dependency and want to debug it, you can fix the order by providing - # the seed, which is printed after each run. - # --seed 1234 - config.order = :random - - # Seed global randomization in this process using the `--seed` CLI option. - # Setting this allows you to use `--seed` to deterministically reproduce - # test failures related to randomization by passing the same `--seed` value - # as the one that triggered the failure. - Kernel.srand config.seed -=end + # The settings below are suggested to provide a good initial experience + # with RSpec, but feel free to customize to your heart's content. + # # This allows you to limit a spec run to individual examples or groups + # # you care about by tagging them with `:focus` metadata. When nothing + # # is tagged with `:focus`, all examples get run. RSpec also provides + # # aliases for `it`, `describe`, and `context` that include `:focus` + # # metadata: `fit`, `fdescribe` and `fcontext`, respectively. + # config.filter_run_when_matching :focus + # + # # Allows RSpec to persist some state between runs in order to support + # # the `--only-failures` and `--next-failure` CLI options. We recommend + # # you configure your source control system to ignore this file. + # config.example_status_persistence_file_path = "spec/examples.txt" + # + # # Limits the available syntax to the non-monkey patched syntax that is + # # recommended. For more details, see: + # # https://rspec.info/features/3-12/rspec-core/configuration/zero-monkey-patching-mode/ + # config.disable_monkey_patching! + # + # # This setting enables warnings. It's recommended, but in some cases may + # # be too noisy due to issues in dependencies. + # config.warnings = true + # + # # Many RSpec users commonly either run the entire suite or an individual + # # file, and it's useful to allow more verbose output when running an + # # individual spec file. + # if config.files_to_run.one? + # # Use the documentation formatter for detailed output, + # # unless a formatter has already been configured + # # (e.g. via a command-line flag). + # config.default_formatter = "doc" + # end + # + # # Print the 10 slowest examples and example groups at the + # # end of the spec run, to help surface which specs are running + # # particularly slow. + # config.profile_examples = 10 + # + # # Run specs in random order to surface order dependencies. If you find an + # # order dependency and want to debug it, you can fix the order by providing + # # the seed, which is printed after each run. + # # --seed 1234 + # config.order = :random + # + # # Seed global randomization in this process using the `--seed` CLI option. + # # Setting this allows you to use `--seed` to deterministically reproduce + # # test failures related to randomization by passing the same `--seed` value + # # as the one that triggered the failure. + # Kernel.srand config.seed end diff --git a/spec/support/factory_bot.rb b/spec/support/factory_bot.rb index 7be78bc..5860c6b 100644 --- a/spec/support/factory_bot.rb +++ b/spec/support/factory_bot.rb @@ -1,6 +1,5 @@ # spec/support/factory_bot.rb RSpec.configure do |config| - config.include FactoryBot::Syntax::Methods - end - \ No newline at end of file + config.include FactoryBot::Syntax::Methods +end From a72c15cf272cbce7376b1da05bc768cb70a2cb93 Mon Sep 17 00:00:00 2001 From: Abdul Ali Noori Date: Sat, 23 Sep 2023 21:18:33 +0330 Subject: [PATCH 30/32] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f966f01..398af6e 100644 --- a/README.md +++ b/README.md @@ -84,7 +84,7 @@ ## 🚀 Live Demo & Project intro > - [Live Demo on Render](https://finance-tracker-kxhn.onrender.com/) -> - [Introduction to the project]() +> - [Introduction to the project](https://www.loom.com/share/928b45d5bd4c45d4bc95497e9ccc442f?sid=4e1fcb03-dfd3-4891-b610-0ff3c4545693)

(back to top)

From 52ecebbde1ac5ea40f0e65d8fcc69d0ccd2caae1 Mon Sep 17 00:00:00 2001 From: Abdul Ali Noori Date: Sat, 23 Sep 2023 21:29:53 +0330 Subject: [PATCH 31/32] Update README.md --- README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 398af6e..88eed88 100644 --- a/README.md +++ b/README.md @@ -83,8 +83,10 @@

(back to top)

## 🚀 Live Demo & Project intro -> - [Live Demo on Render](https://finance-tracker-kxhn.onrender.com/) -> - [Introduction to the project](https://www.loom.com/share/928b45d5bd4c45d4bc95497e9ccc442f?sid=4e1fcb03-dfd3-4891-b610-0ff3c4545693) + - [Live Demo on Render](https://finance-tracker-kxhn.onrender.com/) + - [Introduction to the project](https://www.loom.com/share/928b45d5bd4c45d4bc95497e9ccc442f?sid=4e1fcb03-dfd3-4891-b610-0ff3c4545693) + + > In this video, I introduce you to the Ruby On Rails project, which is a budget application called the finance tracker. I walk you through the login page, the home page, and the transaction page, explaining the features and functionalities of each. I also demonstrate how to create a new category and add a new transaction. Finally, I show you the mobile version of the application. Watch this video to get an overview of the project and its key components.

(back to top)

From 03a84520bc81d1d1059e1c77b0e96088a4668bca Mon Sep 17 00:00:00 2001 From: Abdul Ali Noori Date: Sat, 23 Sep 2023 21:31:29 +0330 Subject: [PATCH 32/32] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 88eed88..b6a02ff 100644 --- a/README.md +++ b/README.md @@ -86,7 +86,7 @@ - [Live Demo on Render](https://finance-tracker-kxhn.onrender.com/) - [Introduction to the project](https://www.loom.com/share/928b45d5bd4c45d4bc95497e9ccc442f?sid=4e1fcb03-dfd3-4891-b610-0ff3c4545693) - > In this video, I introduce you to the Ruby On Rails project, which is a budget application called the finance tracker. I walk you through the login page, the home page, and the transaction page, explaining the features and functionalities of each. I also demonstrate how to create a new category and add a new transaction. Finally, I show you the mobile version of the application. Watch this video to get an overview of the project and its key components. + > In this video, I introduce you to the Ruby On Rails capstone project, which is a budget application called the finance tracker. I walk you through the login page, the home page, and the transaction page, explaining the features and functionalities of each. I also demonstrate how to create a new category and add a new transaction. Finally, I show you the mobile version of the application. Watch this video to get an overview of the project and its key components.

(back to top)