From ce38ec10e6950bc7ca39bc44f47e571addf2e417 Mon Sep 17 00:00:00 2001 From: Aman Verma Date: Fri, 18 Oct 2024 15:24:31 +0530 Subject: [PATCH] Add Wikipedia clone (#928) * add wikipedia clone #852 * Update README.md #835 * Update README.md --- .../Intermediate/Wikipedia-Clone/README.md | 65 +++++ .../Intermediate/Wikipedia-Clone/index.html | 25 ++ .../Wikipedia-Clone/screenshot.webp | Bin 0 -> 25448 bytes .../Intermediate/Wikipedia-Clone/script.js | 82 ++++++ .../Intermediate/Wikipedia-Clone/style.css | 267 ++++++++++++++++++ Vanilla-JS-Projects/README.md | 4 +- 6 files changed, 441 insertions(+), 2 deletions(-) create mode 100644 Vanilla-JS-Projects/Intermediate/Wikipedia-Clone/README.md create mode 100644 Vanilla-JS-Projects/Intermediate/Wikipedia-Clone/index.html create mode 100644 Vanilla-JS-Projects/Intermediate/Wikipedia-Clone/screenshot.webp create mode 100644 Vanilla-JS-Projects/Intermediate/Wikipedia-Clone/script.js create mode 100644 Vanilla-JS-Projects/Intermediate/Wikipedia-Clone/style.css diff --git a/Vanilla-JS-Projects/Intermediate/Wikipedia-Clone/README.md b/Vanilla-JS-Projects/Intermediate/Wikipedia-Clone/README.md new file mode 100644 index 00000000..0a133c6d --- /dev/null +++ b/Vanilla-JS-Projects/Intermediate/Wikipedia-Clone/README.md @@ -0,0 +1,65 @@ +

๐Ÿ’ฅ Wikipedia Clone ๐Ÿ’ฅ

+ + + +

Tech Stack Used ๐ŸŽฎ

+ +
+ + ![HTML5](https://img.shields.io/badge/html5-%23E34F26.svg?style=for-the-badge&logo=html5&logoColor=white) + ![CSS3](https://img.shields.io/badge/css3-%231572B6.svg?style=for-the-badge&logo=css3&logoColor=white) + ![JavaScript](https://img.shields.io/badge/javascript-%23323330.svg?style=for-the-badge&logo=javascript&logoColor=%23F7DF1E) +
+ + +![Line](https://github.com/Avdhesh-Varshney/WebMasterLog/assets/114330097/4b78510f-a941-45f8-a9d5-80ed0705e847) + + + +## :zap: Description ๐Ÿ“ƒ + +
+

Wikipedia clone is a web platform that mimics Wikipediaโ€™s functionality, allowing users to create, edit, and manage articles /p> +

+ + + +## :zap: How to run it? ๐Ÿ•น๏ธ + +
+

To run this project locally, follow these steps: + +1. Fork the repository. + +2. Clone the repository to your local computer + +3. Open the project folder in your preferred code editor, now you can view website in live. + +

+
+ + + +## :zap: Screenshots ๐Ÿ“ธ + + +![image](screenshot.webp) + + +![Line](https://github.com/Avdhesh-Varshney/WebMasterLog/assets/114330097/4b78510f-a941-45f8-a9d5-80ed0705e847) + + + +

Developed By Aman Verma

+

+ + + + + + +

+ +

Happy Coding ๐Ÿง‘โ€๐Ÿ’ป

+ +

Show some  โค๏ธ  by  ๐ŸŒŸ  this repository!

diff --git a/Vanilla-JS-Projects/Intermediate/Wikipedia-Clone/index.html b/Vanilla-JS-Projects/Intermediate/Wikipedia-Clone/index.html new file mode 100644 index 00000000..50f1ccd9 --- /dev/null +++ b/Vanilla-JS-Projects/Intermediate/Wikipedia-Clone/index.html @@ -0,0 +1,25 @@ + + + + + Wiki Clone + + + +
+
+

Search Wikipedia

+ Light +
+ +
+ + +
+ +
+
+ + + + \ No newline at end of file diff --git a/Vanilla-JS-Projects/Intermediate/Wikipedia-Clone/screenshot.webp b/Vanilla-JS-Projects/Intermediate/Wikipedia-Clone/screenshot.webp new file mode 100644 index 0000000000000000000000000000000000000000..430c42fa050b42d7fed22ada26cc9b98b4b4abd8 GIT binary patch literal 25448 zcmeFZWsGE7jxL(a%*@Qp43*5x%*@QpT$zWW-Ms()P9d4l8s(|AMHfC^BfMT!y^ z5F<(33SohSHnsW-$bQzG1Iax|jZnWoTI?qK@4lB_1RQcs8E`+#-S#$n6#!D6_K)&Z z{8)WDUm4GKe*;>+?f_Y@k6*Qy8b=zB*N*~ygloO+0h1rCUq5gAf0MprUd+}Zo(rA{ zo(5DutA1^M4Zb~JuZ{tJ-A&rb3mQ}bKd@ESU_Pw@E7mL z^{2&Y>7>Kk?&t1Vz$O6jM)+0wl?Nz&13c}1eg*dy0XzZAUk;z606-$*GXMbi?aLSd z1h4}Dwys|wuX{TMWdPY0`pBU>#tq z_aR{T8T+&Kw)bT{b+qkxZQmM zbO!(cvoGcErLWgFd8dHwfB?Yz7vR9*#9*^`IUowa4UqUC1kAn$-_~jWDu1-g%3Be?)hXYs)2S7N~qRZaiU+=%1+b8 zV-IW}k65`X#Yi43{cen#_NZWWO->&KSq7#hmo2}x;4kJaBNA!#BY zyTy@lTi0a3WN+SACbQ;bx{k=N$L!;DGA=>dhd!JG8}!g1+{c7<2aRm0{FhtlNQ%{0 zVgw~?k?RUwQf$$u)j`&jfMqUP_!;!sT|VKsh0f&Wk3D%%UA^=XLbnMtLJBw~()Ru) zR1vb9U!9!20t)ZfgD;)>Smw|YC)KKoZ54&A-cHIAQ^q+~W;+s_O&u*OWq1D-Usg`m zAI?+IT|+~R<6qe6IJK9F@?xJ*0sH+d^K2oSp3NLuD+h+_!?T#i!*aAmAg;+@;{#{h zL^m?DK%>Z7a!5s}?Br{Yzxa4_4pZWK5iy>}H3SQXG*}%nx+iU6M`tKH<18RyVn|U# z7IiJP35&cUP~G6-Vmp*8&^Xvq2op%nSBI-w!%4Ka3kiA-c68##!yfo|=ClTRq+B%Z z8LpsE4fza+wGZ=~Fi?5;eH&=kVj^$8x@!}c2bE;M8#^$-E5iY#EG~udKzVXDB;9*- z)1TzY7iAJh6v{BYlh7X(F-RtP0DUA>BfB;yGBls~8CArO1U{PJYek5W_;Nw6E#EMZ z_sYC-E`vVkJqfKW+!4ngasTi>$yq(RJ*2Yb1?`%%P>=^KxsbKo?O8<(P@D$Z(ZqW28kx3Oce`Kz*a_|*yK2TcjU4)8SF zcYj`NlpofY=1gJk+t@Psd5BZDhi%z+C}>+!pyu);DrVlH%yEIIwNR(=AVhaDA-M!# z`b)KG7@9H^GoJD6;j9E}}kzua@?~%b}`NL?8h_i6h#h zDdGI7Xip1&*{no?MO(5mcCo_tTz4)SQEJ_7qDu(F^fFB`y#FD&`pa?;H^|g^_3@YG zZ?gZm`WU#L`pcbDtbeHdd&?hpFx(Qk_!4~{iO8HF)XGbB*k_ge>NskrI8Q#xD*2CP zf8eH9NVB#m&EBCTF?NPE_K@>l_ot8>fyiBiyaOv?ST!{HZVMt)x$b`9_PgOdOxg?% z{l6>N3!QxG4?HSV5HD3-L5hY8Auu<75^kItz6i1S5wi|4%Zk|mpKH!&ipw|kcQ~H> zMXfhQ>;IzhUv1QZB|!JrT=?rA|CPpn@u;b)2lu}>hL)NAL*1e(=ns}x$t(>cO3wX8 z7s0*kWdIJWnB|fFYDmR5`2r^S%`c!gm3~Y&A42uhP*^bZm_iJt9$O!-$m!lEBn`_oDo$1 z81ujv86UqLh!qR(gGep~viw8nM@0W>b^*;axT`we{H4L5Mnht@EzKwt~ zA%aB|>3fH|Z$a^KT0p|u3*_rLyC~atXbqE@f^f|#!*Xa4jEeH`ygkZAbk)@~-1)1? z!S@PmnZV;P><VLaZ^He~YA{T~Uq~YfOqRO+>a|pAGc3vs6~v2&35_i#W|c>Zu!tlI&G1 zmp5*AI&CZbO>WR*hVsJt{rnK;L$He7P>18Mz~{W&>K+6M7Zu)tN(=Ot0{4&})Bha? zQ~CpSjJJPs>8~kFke^A^o#2AQTJoXwzkU6u-2Q(nB|A6;O#%ucsPLgX_-Y|V>=S7F z=dy|>Zd@tO?z;X#s3gIr0EH;g&LER~NK<^%<8AYwVEo0vHFfZ>zpJ~u)3pomB1YNB z`7~;zFy|KqQU+s5S5EeZ5?av>hv99sE3&TE+8bZ9^3)qpMM5tKcy#B@l zIUkvSCh|XGiSqOWop6rvRX36i_7Zsx_osgRPfeQpqEAFesoli887i49ia0Pu%q<)- z=I=;_;I$eXg75##2P}&J$W3MzMJ@l?Uj8M*|3E25d;j3wzvQ?-+f!Es`|+nB{ykp* zk}Urnzy4f_|B;&*E?lc|3@!KIR^ikzoR`i z-~Q;l|6B`y-}wJDP5u=bmj2uSKFa??8-E__{)aaHoK*iq8-MO0|3e#pVwe9P&_*B7 z7ocnh@Y8$is*V6~HXo$yvu^`BrF`^c?xEO?QCV)p@l*@Ck%PxMtV#Q#rJCl(K%2tn z_bZqwC@J8o?X<|_Q082?tzwpzHeviI9TLZPDv!&t5i{ZIMis&tXk1hG*6wthFGpj^ zQQ_O|@zY4#Dv;lVBfn#5!8UUUxjF==)&hfgmP#Lu!0k=8m7+l3%ZP-fpj8h03)QW& zAlj?dm!3<~#&<8Itlkvi@SlVcRah0m!Bi%o!*tdJhK%~;xkAM)C)zebo(e23Ast^8 zl_lAf4Xj6-2@ zrT2hL=}q3X7B7F>aQSkXj_Z# z2^H$!+%Y7;%n43GkJ_0Q(H_h(gfG{0sxsWp-Nd~BZi8TEHZa=>x<7LnSG3Ge2$R5+ ziAolCy4F(%BB>t)aE~*xoK!1Fb$o@%dVn~6tEwI7`?9?(T*tf!iW$Ds?8(5gg!cOK zmyfIXU$Z#%I2{nwpNDAswqCpwr?enuvX-!?i9`El`t5@`{UG71+aDevgfnNWLfY%) zCviiVk3{veY81{PlcsF{e1W2KA*&9?2X@ zHypErHD%e9){qrem>?1*+X}NoSK4BmnXx;*A8q4jS{3j%FZko=Ho)5OmvL1E0e#UiDfM0bO6)VtnP{Mg54#rO z&)V%#B?Wj=W$)IZ6Y$bvl@i#cEVw!tCQ(5NFCn|}yV3itps2*KC<_buu|#fhh5-tl zb|*eZ7gNKuO#-sINitkE7i$YlH65siP8tlqDMsBj#6A>1LXld-9h;Lv z(=X>0R6cSR59N0t@?cG)yviT;6jm1(R)zZ`9t6(ca#WI#?(4N-L9LayDVYO!o*sLK z897};!6Qd>@RIsPEaiN@Uj$^eN~ruwvC_a>!x%<8KHM722QeCog20$HfT7>F|BgcX zoJCFs)%l}~M7@Q`W9Fu6yCy{blotez#9k5y=wj9a;XnX#mPPp5YkD{vCL`Nm#4_=- z*f;;>SbW3@fDvfN?q3i{Z2sDgg{Vgo``8cCwIAoSd<-PiJDP=1(Lqb;*qLq#B8H$Tf;69!3XW35a4$uwP6 zCDWN#haK1>qG&3p!NsfRYm#PiecK?Plgi)kF=_|M(tZuZthQYWBb7_O-!Jp!fTzLu z0{=jwv7bAtf8<%VGG@?wi$SHgG)dSVuUD+m9-_WPawpZOB@^#GvhOs77Y^VNf2O%l z53TEzTJX9>AHre;bF61q6HWL49AQJw4%0Cwvh9%V5In(Q&6ON=J-K0FMQ_o~WM8Gi zMn%@M)#skP2}d9ru@|aDf|)zvrYLGsCZk^iSeYz!cY_e5yqZgLO4l{Bo;ZO%sV%-? zPsCIHar_apIF=)Ix@&?Wq;Bb(=wyvG8o2|`ST42=wXIm`Gyb+}MI0=*e$H7U1(he| zgFoe8i2am<1jcn(z>Ua=US!;0Vard%mOr1y+C5G2_#)Nk^!9=KjgvFV$Y6xC30tXd zx+-2@X7br~eeJ2}B7k(ZK{zZ(Fr586r!`QulN&Sy{6iRneK=5$tpgZPo8))G0(9e} z*#J7;cGx{Nkf0LEtgL-Ry~{+i&&f+ay_1pqlaF#^OPJZ6Qv6H>d!xjLCPL?q0jhUi~3QyvQPJ??YraP(d2d2E^ zPgnL1LDQwhn1qw7#o!ry!FcpUne9Df0IiCULDx;6`zcIxaZ;F<+mBMzjHfxa*}8GF zi@YH!5SuD-Vq@}VeDOw$8T>n+Klf{>+ zuWNN{U`5^7ihdvpO(PRdg;p!q6Ma@{-7PWhoh;uBfEFueuxs`XG9C2^5ODg4f7a?& zphvuv!4SGyM#G&L+EQOk>S4Pam5J`2#MzFUv0Mo>_;hrIep-AVCqhHws#hghfr&qR z^z~F+svDaemRymCcY_@*D(M9_oGtwF3J?)v+2%ao1UOC$FoFs%DdRYtkLCK8i?Bz8 z{{+4CQOWP0+&*y`b{GihfZ5GTrg~=dz1~muUawD-F?aOb`4^{dgOQvdJAcJKGCx^Q z-19MtypvM_Kd1rdnqzW>K=2Z2`}IUa^y+aNSDMS2HsKH}#xUnb^gCQKb=JWUA%5+; zb=p*u_m@F~^bkSJgoV{-Kq5EaMuV#QUOU@)) z^HwAvAR~VRt4vhJC#8KfTt*nKz;!Fk5wP^4be7@5I%_MvGX6;Hn}YbQ4-FcIY!&F1 z*)JpnMDm$mEWOJ4&}syDZIhOX2I`u9N#^jT8EAEYfgc%^&sbS))_J^g63h%c(qYx} z>iEqVQw)9W`f3l?-t`N6cLgAax;Q)hMnv+7OXHxZo*++qvKb`}{^~un{d=!3B@Kbn z+fltEf3Jc=r@_dRTxwF0olKF$b*j?Ns^xkX&4-Dw#0!Yb4`9wh9ALb?VeQB`NK0*& z_#=w4esdaW+b1m6YEhlCBx6f_sQ$Y%r?$^>CncvU-~oM8EbBgwh(Cve>+|*AxKaQ7 z>;{uosS{@~Gc0}9Z{a|Yoa5jXCFNuU*FI0bOx3r)3nhW$TwTqeaz01hAxcENy6R$+ zf^)V;651ULw?t4$U~0%&Uwutx8thtiEdPC|9~%&bjUuf;)ZIQeLTnqKd>s;CfCTu6 z3P38j<;Jc;V3TNn+67MDejfay?hNXSwD&m#kzs1Io>Nm^*S}boCq#t|(14Mn<<(vI zuA}Rwk)+O{8$)u((NQ@_j%O`p2uYTNMykj%HDC?$aFFRme%yO{*{KKQ-b52P8Cm9= za%#Ru#^}V(sv;Xz)@!1`2CJrdO{ohTJMOc)oJ;M_cT^T~4%IscHTK##{=l+ zRF?>a{Z2UOx`8~5G$?EVCsVZiTSjBqCqO6tS|(9?i#Iw<@Qq6J(@`t?5x!i3Lb^G^ zXVl?mdpBN?5E4F}E(*bIp)7%$EFL}yb{-UcL-NfGprsQ>@7*A3atRW&i;1rR3`+S} zNk~iOg5=K*&=4Lriq{v7tQ z>#i!_m+^!A^E3D2A(<%T)6U(EFvkSIcTnzYX2om7fKZZdnqO1exF;W&S@ncs)L+;F!c>W*QG6tjht?Q0@#2i%gZbxfh zC_ssGP(0~GyI!XN2Q6IlW%?SE$>flqC2d23FN*tEs5iM}EuAFt{zG{a8Hap|_`k0P z7IJ%nkhp@7LRmoUEMJ?-e>_HeeM;$hfQc)+3s(+_gCs3R+vsa-*km z*-zD_aan$pm842k%yV_oQ~fZ{yUxeBb~Yt)-w!IW8uwE$lU-!hD-x4Rx{N`m#Lwk_ zcn!|4V*7rEg!onx0QJ)afhdIC{%sr&nE6qVbnNRmBfL}x|58f|Aj4_sHQrbk7TR~^ z++hCftj8cXC4f3WML>wxXdh2FJd=healZnyXg6PpZ{gC0aY_ya>W{UAE?z`3a7z zP)A^^{d8B=Hs!$BWFQuwTddJ_nmUZ7s!RL|x-FMDll?G9+bs$f3CH-0|&cgJzkpu5^Y9@MyZ z1?;OZbC<{s#XvSyjq7wx~zyN-4YW6C%3-wwdg@cWr<+@gO#y{KUDn%#| zK@VSQO{-$)4FpJ3#NYu>ym1Q6hf0W}`Uvmw(l9tRQAk%@<1A?w2p2?VV1SPJ3^3q? zk$1#Tp}&+~ZDZ96LfFvV2Oa5N%povO&uRqTJq=69P z@N1kWzfuKFV58l=d$M1f#MN}^4?tbz{#IkaXMz3o6Ej35Lk|DI#NH%WQhx2Han6Xf zM(N%*9h&#z>C_-y;i9HQCXi4O^{?niZvzfmII0x5mKC;aEw9-(05arH$_42tzE9?y zRU>L_CggIb-hvzMuUxGq+aGhvUlS;Czb^&5gDpsC$mfVmr_($=Q0UUUZz!(wNLmiA zDs?->v=rAP#qM|iR%co|Wq zp1j~|1GFrozdlOMyk0?z=IXsLoRhljBx}-se#|Uc&Ou=Zeg$Q$HV8f8U{|KjIt<6Z zqCqwJ*0#KEFa_b6Qo4(`IkqV1`VekNigby5Es`Ia>|wnrYXJ=f4kAfiYTr&;6vJC!FoE=Kz->oPe=*H_0!&QR&mMXv2bFt5|`$@2R4__ zD!Ca&Ce)3nsJr_L^=uYzaWY9_0|Eh6l{N*;g0=WP%Cfw`J46f_Hrl^6nw4cnW=&uK zKb;qgAzEQ9EtD1<=EWX-?_9DN9N98vAO?KTZsTUUb+(Mmn&r7S^>&G1_A4YPT6i3) zAxnmNcd)@I2-!eG&g0}Zv%a~o?iyxm$AS(;`wGtzA<^Hy!^}oAgjDI!gJVO?szlSw>Q)=Y_XnYY@b3Q6eX4F-f_Q zNNiF60cNiA8I^(~b}ly>>`69^1IEWeSPEwjOD|XmTi+IBLE5%=Nl&6M9ol8LFR^K* zb0yp4XI(Z#RosCs1wKYoT;ZD=8F(^TkRLr%XDLf{9mL5nB!S~TtfTGZ1PiCrNj=2> zo|?Jf|2|Px1oP4aOnhu!GTEwgLL9r?-g9%YdDM%==D@Sh;9T1J{HNguTWG6dse(I3GSE40YZb!HDzbI@B=A=b{CCZGH`V&!$q!ef-gKky+J zCN0jlS?%#LRXS%Sa-Nb%34N5(5Q?c8Hz5r!?2Sa6CtHfu?v_G{U2^w!uQwUOC2EOp=$G#t__CdAm&oALX;<75YK#CAS@ z_(~jiy45Ny4pT^|Ragrw-FN|$k?%>7aR=9KXxQLD#(nR$32H=n6+%@*BFc@frhD+} zEePrr!D6G!#Z}=_v!(f<4O_F)Y-0LAl z2ba)NRw&vXOPAv??Fjo9_0TNkRBIDZ3+Zv;Bz^fc|_emg)K zQA^1^A^@v9J2w>Ad{6%rPCq_H)p~n~uZt){7@xxFK7|HH&jeu48$X&@+1-+Tdh)}f-j0HYQLPpZf+M6b9c71?M0m)~gA^fWu^->Q=P`Dzev67PY>H!K zr40{jp=KX4vfm>HS9HD%63nC){bI+EwIQ02BhJ9Cjf1rFN_*!xcxWdUJ*|m)YJZ3s z9QT-vjDLY<&?)7FKy-{C77RHhP35s+6EHMaDIb$N50YxT+G+PAio`fj7+7<}Plv=T z9@20Q2fsP!45E^yFIX7d1pSE9czJB>P%-CO@Zd z2-~$ntZZo1I#ZH_S*$CS@NLd%(_(t!Xi7ba|7ML9e2_U+8o^L^eZh&ErycyMZC;kc za&K6aTTwBU!xP;=xIlwMfX>OY;;CY)DA&X$j5J?W{1ws$8#IkiS%8Rt8I_D@%wCjC z7S}NnE2&Yd?GcC!hD;yk>E1MDT?^B4tmC+iE8?^Wi83w{Qa_MTXFWS5fH9n)EW!xf z=BFOoga0@k=NF4rm8UP=8w4uOOI`2K{L`c!>s0(b=z)A^HC=wneswJup$q@mwo)vPBAGr zSJa`%gHv=3syomMSH8QwGX>gpU3_ z+D2{>C&(r#WH*-aCzsEr@=ZBqD$9H+gE#)<{4~Zc?}d@@={TW$)tc2RZU9I7NcZ*q zZm%Qa^hy07TdNP53wv+fxF>)*Q_c$tMr|oe8K2J&#Rfgjeg^tn(a@0dK(a&_%Ovzy zvRWWL#XjQJ>@nLB=oqF{?plG5p%@NCvz0iHNhcO2I?E(vBZIQ=1B1y^d)=|g;1&ZS zqLs*#Fu8_R@OtKYGg>4QE^K>_7-~>7p)H4^{($PK&`36o=_T1YHnqrAoTzX?K^c-2 z+cj)*^eQjyHl4+2`kgo=aIWn5qDzdW(kg|TSAY5!)q{-ve!TNgYZ1P5++4KqAOlG` z_V2R;!6Maoygv0;N{hq5Hfdjz9^(-(l30BduzXC9^8UnPN2q+J9DRC9b6=?HwAM$v zz+f@%YBb~Qi!PH0fFv^%y;8pt!1U`>J zH;X1MJ~OY8`vAC%xa)vWbm%ny*~CG5^+&FP1&v!PI! z+^J{QRKS>-r&!C18nVZG;2(cF>pUcFixp%WFyZip1*)sA`$xnvZ^gS1=L?hjS9km# zD8b*+?5tfZ=Y(9fZgDcoIhuvjbO#+pst|ZbJMgBdtY*AY8bpud2Tji9YRhUyS~Vsq zI_JH@)#pYLPLnKxtLlw*+%8hP7}v+~oE8{UZHR$-GfsQdQ)4r9(KZkD`Xsm{Ec$9H z90B1pu^$MUsGW#6uYtyGvK)y%7X!4?JaP;Fdm+dUa13%ZWxrbyzsSlIJv~ z05SH8O(jo#+C;18o-M!Yd-)dD=2oJ450HZ^ls2>@XWR-2;Nfhv6%}F3LnmyIKd8o7 zCSMf`FnY)Rqhzid2Uqq8Sg#AUP@!Y{MJ#tCkN|l5Xd^t(7(f@nUOEsb*k?&%d^kUM!LRSDWpl>g^oY{TO;Ea++8)P zN1wLxb!)8Q^i_TY8b=J<{50o;2_md-tNoeHF~R|lZ<0&6MP>K$_^nSglt-h=n`g3W zauo95Ci=VB2Zb0kc@im(a&#)K0_c^?A^J5brG9=V!jUW`?E zbLXcCTqpF`!8GRu%E_04u8`R$eQxM|7JohLbaVUNa&J^wmx^OB!{QljOO5ccP2F;H z_wj^<;k=NioAQFqGw!b1BW;U*XRCQ6;iSk7Y+E`h!v_gz9Pqlr;bNYB+{S37=^p~~ zC1K^>6QcFN<}JCk4(?C?B+IN-bAiUYS%n+3J;YddrS*z zKNCs~@8I!~xHm)x)rd5uZN7=9`$bF*H~5YZLfS!OTaQ=8?7(|B(vBnnd6f3@Xt?)5 zmvsIi75I|np~!ugFeH_#Ss-P+!|*uRU>N90qn$vIo>M6c>ck3bB;PRz?Qu)T4n}^B z27eqf$C-1P2fH0oXMxePHWL+@SQCg`#z<@((I#Y0Nu=yWGTVXN=k0ob6ZaMQjuq?* zLYgXJB7tBpZ_PjjKZ?bn%2wzNzuquQwTC1oOr(;Wq*geDv(8D6q=&^xeY#o>ID5kY z*M=62F)*4IsX$wHfNuU3XY*^R9i?(1Bay`=8L9Zvbgl7bP7(ysGW=ktl(5>0XbVMj zFtb0OCAf$=zO_{Xh?fPxngDKp7bBPn#f^btteX;(^~Iy=1Z-m)@Xj?KJ+LRKtS37V@}JE@4^ zyKtj5f&i<4!K;BL!5NwZEmFsfdmoOnMqgNqtR?r)bnraQP$FvqXqj7G(8eNhFhWXh zTHYK5>poxb^+g7F0EX2RDY&>P+b=`dxcVJ9BfJg=`_crIaKxL=%wLRSR^X-0a$TFH z7eLociR{DWPZ}9s`wBg!C`eDQ%xl;w|_W_u259O5=T-RX8iyR|b9Cv4qk-cPiPAb_8Hg225s|9oHF12pU~knMI4*XrPPO z=w$)Tn0$P%#!HbLH#Eja?|>X{B8aZG8&6E1BNg_wZ9uM}=DcKJbR5JrJLZ75 z6#5#`wcYn8Ms@INE4fEQYqN@^6C)wSkGK;NL|f?R)n^xe&hz0{bkLUfOaZ zKT(=#i=mrJb0qrOP?Ne$fTWR=4;qX7oa&UIzmw@)aT@`0L}!t5TMz(4he9$^x5>~| z8w+G=&}xJR0ps zx!kRdhmRj@#<@P3;H{$;*$XBnvo5^ls+pK>AEUMeX|pXFR?+%6@zMgNzRMqvRLyZq z79ta;G7iK{jy%@Q)ZZn|2_PL}ADW#5xmjeq&`-hw(heB@noz2At0Cr}(Ekolr7}Q9 zit$I&I`;F%lfb$$bVjcJ6%w0Z_~}Yh1^YlfE7>}#(E7ufQ*FSsEK|y?D;-1P>oLNl ztPGwCSP~C*)WBe0yCTSNR}#>ll5`5>@WF@1aLbUCh?Ne!V9EaayOFyAFXY5O!YZSP zdklB31PVH>u$CnEw9D&0K4}0fl}Jp|f3KP=P`AAfD3xUOr3sF|VtGrxF0E+_HMsYu zEqm=RQoE`gXkKef&q;R0ik1qciRUn}=3Tz1lPME=57=2c)72YE7tQJjpBoZa8wMUvkDW$^#QsTW%()mZP;OpKf3Z zw*;H-@@R}JCx=n;>yv;;z4}|#2CuY`)U3tl%lWM~xoQgCE-7rk?Bsk5foh1(Qni|^ zR>_7hA#8CJ6Ti@>)IG(H9b;nxB?&G9VgQ>u1Q8Tsns4EvLWUWU$E*d_slx-s$-7j( zyOvUX?dZAX8_QvWPPEuG+G_D=Y|%b4S!edA$xDgkzJ>!cD7RIUZiLDZ;_TGY(d`Lf zZhR-qYDep8kuygoNfsKf?`Ym3mV~3d42>{t7?El?nA0ZXEDx6>q=RYxz)cw1YZ^aP zZ5Np3tP$0JeuoEN{v=F4NHDCVP5d^>e5N(AzI{WNN)YtZ8!rT>^22jy)RT-;j07&cpoIgkx(;sEM88Rz^(Sbe{Qib7&Y7 zJ72w7Twule?D*L#Jdp@!^@aN;@k!bDf*jUI$sh6Uj;hPKbe zG2;z`SNUW-`3&D&N7a`E%J#X|7A3Z*9%isxrrWx!+6W}sv`NrKz7(LFT4Xk6!(CAK zLhjH80@cX;$y|jyQ?@c$c=br9IN51rgC@-RA>&?~nPPz6jplyW+G{D#=_mM`%R!q8 zW3-o;DWewj$Ph+!sy3Ew;qfSsvg_fTWiVLpgpnZ^x&XXs^=!T(}!=0EZ9@tig}I(^k+=h3m z@zf;nG*l|?fdb7vcNlh#;E7H#;$z}o0jj9?=FVc?OkK7L$A|{_!ZH+brmxj_-7(Be z=@dtX#x5#C+g3t+@&*%^TkQL~TTMDDPU(~jvEpY=W51s2DMN`HhkjsCj+E@HK29jO z_ibdMX)^tBxC@+J=pPxuhc{KlndwS_fJzpy@r_Q_{8%hdiFOtu~HYoBuyLm{p4yW>Th2(Y5XS26@ z{6^rnjLmY}4(K_v$)E%PEuVbI8FnB%F(#STaYy*Len~A6VY2KO{&vM_1D;L$-Y6yM zk@IZ?mn9gxfeZr>3TwirH+poOdAc(_vP9L{XSfuXN~z+Z0IYfIhjmRztfq^%`^l*v znBr`u{iC_(F!}KaL6&+fe3)MNz3cUbb$*sEQJ7{8#DzfjYLb|8aEysPb_x2nn7w&Z z0U4yV98b26N-$#JGPVTV+J8!O?G)r9nm7t)My;vS@EBA{e~PwSBz=K^@z}BKE?t^B zW<1Ch?Xh{(YuCCPzmE`moXRTP4nJJVC53_{+pSqiQ)!24Wq|Fo9nwZv`=U!c^t{Qz zjFxyRGK4cn9;DAyh$bg9@;uph*|DwA?<*mnT4l&vDFU%fpJ62bde81<<5N{fUr+y# z^%ghqr~yPdM*}7wOPU;e+kq(w?!{J_ZtFBUO-)gT1BToN7TOK{h%Dj$kB;IQB@b7< zD2&xq&;xQMA2e&W9-n}-vOxLbodz;SdUI7l6DBl@+tNTk;_$e1(ip-r3q*4C{2=$+EikA%(d#rwd3y^!vKro%T$~NnGEvBTUdHL1celcXk#iultpn_RsaA#y8e(P%h^Rcy3J%M+QIYZ+i{n=An+W>jvmZTI6@XjQF^F?sfQvh<$22TGV5$b}* z2bJh`P_OT6Tzxe`TiRQAbQ&^Z2iK@X5*zBCbx3o{1Eu|QIjotVXkERx51xZ=`}?-A zm29Vti@X&c(@K9&9jaxO8y$r2fb9cJaYH$st}GasG8r_^*KI4q0~~4RcWw&IQ-N@`~u#xw&_ns6C)H~CrOFhK;WSX@H0u_7U@UtooxV7i6m#D%X;19QY<`J#NL zN#9ZNaOBA>yw(5sF;T-(ona1}e)dGT%`a2bv-YVn^Pca*0x|y|32;i4w71l4e#t9F zMjXX|b`yizTQTWt4Gs^0LTM7}mh4uvr93lz<%s#atk6ojUzUckaKV^v4jiI23?D9p zyoc7YA?ISKKVGL#K+G8+0sZrbePp!v zHGCF$dEP!drR zjm@V0K2;85g9>Zd$!6EW+DJ=yh(qJMQm6yf=N1`8$i@n>z6_A)wA$sXZ}2}h7 zn8hm2^32+sD7a0}#C~sCsc<)g5vZ;?%Hmlja>ev0DKfL`2g}^QO-%7AGhRXu_Ykbj z&bl&FmZX}0)Lr`hAl-w!IoU*Md*W7|8)kT`u?DJC3cIk`@=P=z+W-kdY}Mf|M?a5x z;el!vo@B`05D4LkI#4LJJ#w>x5LBnL zbN&5H8m#IG{^OBoi~=nodTgI*LsbL57uU5rD;%4Q2{P>6)CewL50(9Q`YV67%u*fN z7)lEwIwG|Mds@@+wkRTu&u$ig=c0{kI2klRu(3tJ1Bm$BQJQQ=d8z(XgbSkNC7s3kzbaoqQBP>KZQSqIAK2!EoVH0(HwvmoQ;4&mTR%F zI)IYGpLA?%%1(+iM8hPSv{>PAfb$zlQ(gyo=o?ib;%15pk-W<2y~%+p)p%AcYA~kEt+;%Q zr%^FH$pwN$SroyXXi`JyM_td7r1tzM1<`SZGn?%ySg;~_oA6OB^g(D@cpJUBXd=Y-QOztqRw6tneZG`k~f^lVKuis3eEHt+R zp2WV2)r^y99vpx3n@eZ7wC3*?W(S|aUL^0rvJ_(*fE|m#j4{&nTi~M$3X7=pm*r;8 zBS*CWl2xC%J|dMoI2I^^J(V2Sq%9u!gnF{&xTe6ku=-wD>arSyAwH-AuJTF7d$fK< z!360WtT1_!$tJJJ&l~Sg2rtC3i`sW2{-ewG58eI*C0@8DF zD80}g$?ww*Z2XO?hK25vzs$>0uq?1fpUu)(UD9UOA%4cNf`*I(1w@`Hh%lLwmbwvi zifFVd^oi(;!Ox%BZS41{in!+fK3^jzG7FAko$4|bJleKXsF0Nz)vOC;^9vn!gD*~> z>a+2I)gg0Gt;fDc{+XsZuZfALGzcG6tYGG5vb`60OZCtVI7SV2SWk+Bk?-dXwOl_UBtV4HSHt@# zwJYBaw|w?{0X_$8>LcpBrMkw7PfdFp?FrykXe(l%@d6mE%X##hLN~-L&r}jadJeuN{ns>DucR8s&fZY3BiM`Ht^Bfsj!}%a5*AWkY_$$PgX@S z-DSDB0r15<18@NEMh{Sii-X8HO^|!}&!w_fsg26O5^an#WK}+(D87K{PZ)?|ef606 zQ3?`A>J{4(8t&pkyAxUMw5P&U82G35`DPrClf&}N!_4A`;6=Cqoj_sKo- zh?pEZ4C{7dGmkjgRel0rr%=aT6fhA^nJ2$*E%R1AZ}*{zF1#K}QJ`^?!`PrtsT4k> zC?xPI9E0GXw6#;Ow&Pthh4C{r-R}>Ws+{B?J-Y;_g0NHd>uA zKOcx$SwZ{lZ`>s^zWJqNaF1HdX5skpjwcKZf$?T9!iMKZ!zi%t5}iB_)nZiVMfC8g z@AVS0Ika~KT!VwjkoYa5?NMZ*V9-$|X_`~Pp%V{lc|z-2GdVGTJTtrGlaE5HEOXh07W1}=t*3?stxE6uw^o^Z+NU~FgRAgsuFeE zuy=6Xn+m*(X5}yfmA8#%{~)wjYc;FN9XJ3S3c*b+vl0{+Kh*F6cXlnWsv;g6KBs{H zZ2gt>?R3TwI~|q+Q_c_&9NtLU_z|)FdgK-x#ByaK+26q0SjGVBr3hND;9l+xzqFz zx&^XVK$?em&1HZ7Xzy!RH;3MvW&1gc?_^{i$#pfqg%5M`6($6MS0z6-CFbylF-cdnO;X^e3q6-0fte1~y7Q{cL~yD8wyD?U1)6 zq59(ZY1jD=tB26`%+nht(G!?}OSZs3)0a{dm9KFVf3*{wwb0~>aA8v3?p6LKjBzx7 zL)zIWFf>KUVoWx3`n?7DHQ|Tv2HacwzK51X3WTN#;~yz^G)i4UW9@GqtgZHKI1zRP zkda&62bT1~Z6Ee-Ez?o@t)@AOGjnGu>NGdriM_YOZN>uyq56_0Jt=YA#k*?I(y-R^ zO?2SOS!7cM8;)GL^aTE*lV(oP?7&Z4JDn28#|X(g%ZNoLwu0wzYcZQy z3Wv#y3HV7x+S=dLHdhpixn+e$+PLip!VZ*Pmk-i{8}Kq#2X&VrIhuVA#f^;W__^cC zC}PZAw<%ZXb0_QVhD)#fIPX7Pd(znlxkxJdUNjGlD`%DAUGP|#!sc$&rZa1=XgM?j zR@OLFHgig(LZ5Xroh8$QrjFHW-kp)@@Pwmc*V;qKhiHoFZL5}N;XiB{Dc?OxFJ6^n zQ7=@mxnedcD6!x2hCp+=9zJpOI;pxV=@)fC;|e9;AwAy({pNve6oM}+`0l$b1oZ$i z6XYdz940=6xEin0;v7$KUbEca41P>C%q}Hk$S#sgaS2^tulP$CeYxY8 zB~J!N$$f4fuR?UF@K_6ew_@jDbZNrxqQ!db@aWLMhKm7XkWVlfLj=bnsc?sMhKK&5 zdqH&c$4o94h3F_80ZJ<29_GdNTr_t8ehkp<`@9XmQV*%CP? zNAam&$N=p3h{bCbzK8pJINvFjlWu2Y31IXm6eafLumihrp2%I5T9gro=KU9e>^zmb zlRb4-ESOb;FKH0ep8mVtr^?Kjve)y}FO1Aa1=_Oc<-QMopw8D{U9}e#F$n=n6`YY$ zuv9|&@R4w1-q57p4MH6U2TbuE8-!BTf<6c9L8C!NJ=f;^>=bqOnjs*1C+sp0S!>U( z-g6B{ZhCe0ph`forhW>@X@m`#pruRnuAayyFC(uImZM=3@E)DWuQ?W5Hq!l~wokl- z9diR;mz-K_p#Li%7~khL-w}J;N325eFM6>gjAc-F^ztjaOs?JmAfmS&CE|O5JmTnf zHz?;tC^O4459x{h60Ug3zS3W;Y?2F0de{Z+ydd@;S2;8t)rJ>`nNH!wtSkBWh_o0d zvlsoBDDy;`T9eNm=aF_kvYOMd2jGle&V-@SU8$Rzdt{FccEHA$=GsmzJr*I8Tp1NU z&qTVn^#+#T_w5!z6gP}fUGRTvjT-$1f(D-&6u<%ziR=s|)pL$yj8n2^xMZQVNdk72 zO4Ml$*=X>$#D=82goVspYcX6P;8Wo3?E0%ULxb!2)BAHa!()FfGq zd;7T4dYu8FBA=&9^0vhXHDcmaG74E^y$!a;EL`pe&eF0Y9kx4bAV=ufv$k%ec`GIf z)!NuBd{w!BIT6-YkB!K|NIt5n)-=%jad&}D)BR3Rnc>qP(fUINw9D`cLn`ObQo%cl zX&J49Z?TWG?Nd~WKRa!D^j*iXRF9jF8YD?mDkk=hl1T+i|1BuUVA8-P$<%(XC>T(47H25sEjkBrvC3p-kb7x*;*Sjd2wwC#oj1XO&vYkEGnC zgMaUmxxDwS*bt2ShVQ&{(&_+Nl1_*mdjPB&iJs<=6F zq6_6SLl~q;?ZpT(@n^a%&{+S;lt@XPgBhl7p4GvJki-Pyb{?T@HSG7J+i?#Zo>PQdoFx{wWIJ%gYKJYq28k?7t zj_W0(8O&_8@jqk)qC$Gy*ee~gPxo~;v$B5{Z9qrF(UTj{lNT+9Vx!?sc{0DhUjis|VHUD9$xge(1( zvJ{}~*7QiGqdU%RRdKX0kZ3a`N^j7dr#Nb*nJjz3HSQVM(hene(I-f502}GB#m`{z zDouMg(!Ev{N||%F=;_=2lrl@k;wF(k9e8;x+rh9UcL}#}Kh#u`1G$QX=X%j{t!0Ay z_)&Qyr=!GJx6u7m7c_-$W6FUK53(z7WKkXxvq@&{4;pTg*X=6fzT5}Z*I+c6$^wfC zSt-|*KDf+`#Jn^qW+)ul=|hyh{cp9ssqvpX_RAzJ>TLU8r#N)KeRTlFMd_I+OV9xQ zYvb6DHJ9as-(iGDcSf}3EZJ#RmA|Zy7zi1Z2q+^IwDM42G3E4KaxxaPyJEGDY zCFCYW^lsg*MNbbckC(6F>z&#wO9_R$T7baGVgfaDD6TB#Mq)1VMUJv!YQ}Ez9lzqC zc(Eev&z^-_Y_G*2q-_07zS5i@ZhN%R@=B8C4*B{(XmFc_DL;nvP{ip^c0ysJFJOErTozc@yq>KteVMTwcQH5a-Jbak6c?cG62$gf@1yHMcqc8o6rqv zX%)aU=~QaTZ#s}j;+amJ<^WQA)hSTy8cVU}3-ae(=i@@(8fylic~B*LPR6^@wSC*=L+hTApZjwq81hK0wr50wkDU@ZU^mwt%(B9H&oU7~Y>I>!!gX z9WUuaAhRO2@_;;`D zM$jNg1_)&@)CDDI>r&6ATIKOEus$WbNYRcv)W*A#DRB1(u}R^wxqvmo`Y7kkh8KWcA=h zhucRrFG?G#$y`@4p;{YD_1Tov0ps00LAlLBeM;y=hFgk@4I45fkgj!lvB>3j+YDq) zhH!}f$S|^Kit&b2TjyCA`^=^8+a-Um8+>hlFN+@h2!o#m83ml@hFjV~Kz#-T8wi!E z?e(S}v;^OZrvTccEP1dLP<`Wgy+7FEflR|9;nqnOI3RXuxa% zzk0-6-tnvB*+M(7R!;JuK%aSrZOrWG{CBXKm;Ms3@KL~n#h+tVL;`<92Hx~^89*;O z<8@x$Z!e+jt=|sZC}&1~Lk!XHx-CW~c>{v?V*bi!?g?*ouvN#((_23|2UBGfHQs)Y zZ=iA~C1yLJ%F+gJp1$c*X6`_5P`hqN^13~Ws?9)zSdNcz=L#tI761qKkhthV&yFam zBD8PIc}ZqmQ=~L%x61ut1u{RJFl z6fFPKPeV18x8xC4{9UaF4K0BVD7J)-!@mHrf46_^(*+`6aS7X~8c(;sO<%@{ZjB-e z34V0_{M^alAYQ)uPuHY_$e~N#e3l za&|QI8h_39U~W~kBz)=sCIiRlLBjO2DriY4m&zWLx?qk#>(Q2WbFzT@Ryb+j$_E0D zpa5OBbVD=$+-F7Hmf@qBRtDlVf`hrgIx{`1D@ABOIy#4NEBFK?hj-3iV@djQ=a}UI zHG?E)4vFor1#SZxh~|F2VBjnMacn+xB+Xh{HX9lr$Q*fVB%A#a_FUF;B3G= zCg8joK(H_Zv{MT|C4pt@-{orTB-h?* zl%AeGKz82)wFN8coJT%w=8rJwZf!K-|^UELH0xho0C20lZ z2W$FeiMd~9DsZ=&^}CrzuGy~om6YT_E-k-5;KMMcq?BTVOAZm&tkBVuu?m;%LMmm>F=TNhgA4;0-A<;D#iGK?g1*DSdi1N9EwTu2n)QgA+% z)*9m8{1He42ODCgO^j@XB5_LaIrPvUOhhSFQ%;Yoj%nGzUIn3j_7=vv9K|%xb%m5# z!E&3a;l0x*k>V*TeOo__G?SB_+uwh8tV8K^FO`}VDQNvd7LO$z^_g&oP1uzCs9KY% zNQvdat%{*kN^R=u6Itc#YR{k&1cmdUe4o7_@TwiF49bl#&5`nXF60>_JKY!)`#swy zQ}mG;-}H1WQ=Q{ zNy1s;Y!6h94@V*ufTG^~T(z+V;W|T*V_-4$sT}DC3uhRCrnU|{vut@ANOqzq7ouD`AP}NVE?QdL!Ek(2k`u>o9Mtzx$t6g^ zMH3duf;LgcMBn|4ZI8#XMqfq3=4Ejjfbc$)&=qAvmN5{zcbUl;BqlRkw16I2h~Hp+geq`xdDNh^W}0_B`aTti$~bhFLvn{~Z#m@#IKI-N?dmUK z8_EurVIwahm#g?c%FOVxQjlmhd#$uh2VkE=3S9waj%8Pv*s0-Sgh&4>-8V@0pJ`-9 zQi=9=p@&q~mJ8LT!kXeu^A8K9FSM4TUaaei_i zv!`OPMrb2I=sKc(b!49W*NOqDnpXQ@O7rE^j}gqScf+c#;^S7?$RrYjtA?DZI{uou z^Qrpw-mSZ!D?dqXY30ib2a4et^pVEv5}~8|ZOfkwNkk)e{(eK&0>6-~j{lMIo#~-= zPF!XwK|tz%d2d*|+tGmRI-J9e6L_@^suPP|@{sY-*Nq=Q&(Y?=7xk*ULCAHJ`{~KP zxis@W0`MTlu*S3wSOi>I=57zbs)ucB?{@`pamkRWzb&xHQAZD^fT@l&;@bP8a6(aoA z5-=kVBs~lk4gGl||NEkX2xifx1QQU58_ZLJGqdI7&JMqh?5ZwQ-T-!O%VuD@Uqn($%)9q?>B=mGJ#$|emYVz+?vms}v>TmAzZ;=1cRsYOA?Q2^NoGhbeDtAsedZ$D4nn*F> zMX&y7x8aBPbwGL_!$AmUPhqB;%Gh|KwsAW#KHt&FB;l#|AA5M0sKN+9R)uwHMrZiJsjyWW<1I(T>{VUX5h7$n>1?Aw_&?seCwG%&}L|Y#6eWrwHyuG6^2& zR-razKZo4iiBcu=O>%oBa(6~_#BS=)?xC;WA*{Td0^fX|JRuQQF zcLyYc0$~&2wscZ0htw~&O-D3gpBK(aJtuK3vUTT&>|0w`FeBLZtm`SH23~8@9a3n= z7G62AGh^tR|FPl1vbNsgIpUvHQ^klL?Ku3oKLq)q=sZ>PDgdVgZs_8)z+(I?v>^|q zWU08%sFhfFb8$uuzBZ5$1xTK~?@Wkkzjk%b#PZNS4*0c4^-hz(vZ`8UGOO+ThPkvG3OWk-XusQ z#`yhMk2Lo%tJ->bGFhzIMUBwK1OBH~Vk?-~>K46M#zR~$g?~<004$jY&JisSAMMnK zK_L5HC67`oI59TP4OJ>F=4}O@k@-^(GT0bW*)5_ZTUHERNlZ+yvp$WApYE@(0^o@n z@?1BH`CkiE)hQ$~hxImGD)eNSQ&uSWoZJqNZaJZo)TwSNEI&XjMgqFcb z^&e^y$PkvJiCdNHk~vJNkciw5YKdA^qE|xyzX2wgWRK~22~U<3A3?sHQGQ`V9+dM? zaj(JSEJS|z?~O)JGkMD%_>Lh+O+DN`Ep}23Yk9KSyqnfTjN;3;1~FIJD{w>LB_aby za5^X<>LS_lR#A>to?~vRc@QTbs3jKOut%Pgy*fFZy(qp>563(cs7@vjrKvX97PQ)1 ziz)AJ{p|^j&7~JH^nR`lms8t*IMlC2VfjPR9DMyLhwy%mdh_(0E|0o!@S>Iu6e|w$ zPsPsWXSnNB-@f&yfvV#3`gpGcOz>Y6+^9a}dF*|f0?u3>LQ|KX2+^=EAA>jIb^nm& zu+TuW+hgE2#?_CaadOK{Qn0TN$nV;(xp|9hNHkq@kQUZ)oj*j$UDCe#eQ`jPbMA6j zW{!7hK`W@k=5ksUjt7RRI&bh)$OBBLYxW_gVeSD{0l<_HBxbJ}fTH+_UDA&nw2H?x z-@*ezs5ZUXK_BAj4n`z>(U~~F!`EXjnrCg3CL4`yaZD1V}Ia5LV zK;lYy>y0E-gK0ZtVtXF*2~Zg;ZeKyNwERp=hv*Gq3iELv0&yFjAjks+VUU}<5P0r? zY}ta{KdP#Ya^#h|s21g`j?|_F)ef+x6A_`PkJfjEQkE}5`5Ce~6DDt*3cHLwqG(H* zAeIvui!jig+tS-=8-%49;BN4SL|UL^?uU094yuBB&T>X@8g%ju&|N#0pi%*rhUO|i z{_jr@wfWC+_BQ;pqu>_?*JN?y&3kU8)Z3~Q9%rmfZZ}Hb+_!6CvJp*X6&j6)Z9r3WA)4g6KH3-sBs%;UO_L z&;e<4T>kXr$z~4pO?5W4Xb+OhbvTWjj-Sg4%FJpWA|)sIyjB?J(TI0Z$2L^1dlQj5 zXcqE&FJUUX``hkgIZJ9hxwHW~1@__FxN0TZ^=b|m`$Vu;zSJh`ZqQ7k)bxDn>&d`% zsU=NQuE6Nxlj{rt%OO<-9A}=)uP(tl+53CG$Z@4JU`)*WZE0^?&)q!3jak}9dWJyv9Bf2>UOu|$02zTY~ zuGg*zmHgF-ak3>o@6+D@?UZHzh}q%XmGlX3Vok(#&ch!F)@q2Srx$sDR?y^^a;7A; zMmtJ8WgvQmEp(QPORj%c&BlB%G`}u|G7hFn+~V|4PH{P_V#8r%Xp;g)zP6(ZOH&oW zVSW*!rbOWDz=M4j*UBYU6r~3jK-7G_m#Qp2*;w%vT6MGTQ1ItL^0HNL_wjjCXVQx@BO*DzT%q+{C++zTW-w6p=Rf~91{y?q z1cU=tuygP7NP*(y|NQ0BlXJ{Xc!C5!OuNP}LpTr3&jDl)Zv+o!DGVJzdYKKBv3ElL zH{IVVvDf%YR1f*|);ij00002>;M1&qW}N^B)|Xw2q*vm0nPvb0A_#y02ZJC z00jsD00ANZ002Nh000h90009V000250000eKmY&<5C8xI0ssI2a)1B;7~lW^1$Y1e z0YU%(07!rU01yxW00Wc&0074T001k%000UQ0006+0001hfB*m-pa1{{H~;_vUH||9 zP=Ejc5+DEo1Oxy80ObGx05QM-01EH`00M*n005By001B$000Ll0004w00012fB*mh G0001G4LRok literal 0 HcmV?d00001 diff --git a/Vanilla-JS-Projects/Intermediate/Wikipedia-Clone/script.js b/Vanilla-JS-Projects/Intermediate/Wikipedia-Clone/script.js new file mode 100644 index 00000000..65b9f6d3 --- /dev/null +++ b/Vanilla-JS-Projects/Intermediate/Wikipedia-Clone/script.js @@ -0,0 +1,82 @@ +const searchForm = document.getElementById("search-form"); +const searchInput = document.getElementById("search-input"); +const searchResults = document.getElementById("search-results"); + +// Theme toggler elements +const themeToggler = document.getElementById("theme-toggler"); +const body = document.body; + +async function searchWikipeida(query) { + const encodedQuery = encodeURIComponent(query); + const endpoint = `https://en.wikipedia.org/w/api.php?action=query&list=search&prop=info&inprop=url&utf8=&format=json&origin=*&srlimit=10&srsearch=${encodedQuery}`; + + const reponse = await fetch(endpoint); + + if (!reponse.ok) { + throw new Error("Faild to fetch search results form wikipedia API."); + } + + const json = await reponse.json(); + return json; +} + +function displayResults(results) { + // Remove the loading spinner + searchResults.innerHTML = ""; + + results.forEach((result) => { + const url = `https://en.wikipedia.org/?curid=${results.pageid}`; + const titleLink = `${result.title} `; + const urlLink = `${url}`; + + const resultItme = document.createElement("div"); + resultItme.className = "result-item"; + resultItme.innerHTML = ` +

${titleLink}

+ ${urlLink} +

${result.snippet}

+ `; + + searchResults.appendChild(resultItme); + }); +} + +searchForm.addEventListener("submit", async (e) => { + e.preventDefault(); + + const query = searchInput.value.trim(); + + if (!query) { + searchResults.innerHTML = "

Please enter a valid search term.

"; + return; + } + + searchResults.innerHTML = "
Loading ...
"; + + try { + const results = await searchWikipeida(query); + + if (results.query.searchinfo.totalhits === 0) { + searchResults.innerHTML = "

No results found.

"; + } else { + displayResults(results.query.search); + } + } catch (error) { + console.error(error); + searchResults.innerHTML = `

An error occured while searching. Please try again later.

`; + } +}); + +// Event listener for the theme toggler +themeToggler.addEventListener("click", () => { + body.classList.toggle("dark-theme"); + if (body.classList.contains("dark-theme")) { + themeToggler.textContent = "Dark"; + themeToggler.style.background = "#fff"; + themeToggler.style.color = "#333"; + } else { + themeToggler.textContent = "Light"; + themeToggler.style.border = "2px solid #ccc"; + themeToggler.style.color = "#333"; + } +}); \ No newline at end of file diff --git a/Vanilla-JS-Projects/Intermediate/Wikipedia-Clone/style.css b/Vanilla-JS-Projects/Intermediate/Wikipedia-Clone/style.css new file mode 100644 index 00000000..29dcda2c --- /dev/null +++ b/Vanilla-JS-Projects/Intermediate/Wikipedia-Clone/style.css @@ -0,0 +1,267 @@ +body +{ + background-image: url(bg.jpg); +}* { + box-sizing: border-box; + } + + body { + font-family: Arial, sans-serif; + margin: 0; + padding: 0; + } + + .container { + max-width: 800px; + margin: 0 auto; + padding: 2rem; + } + + h1 { + font-size: 3rem; + margin-bottom: 2rem; + } + + #search-form { + display: flex; + justify-content: center; + align-items: center; + margin-bottom: 2rem; + } + + #search-input { + font-size: 1.2rem; + padding: 0.5rem 1rem; + margin-right: 1rem; + border: 2px solid #ccc; + border-radius: 0.25rem; + flex-grow: 1; + } + + #search-input:focus { + outline: none; + border-color: #0074d9; + } + + button[type="submit"] { + font-size: 1.2rem; + padding: 0.5rem 1rem; + background-color: #0074d9; + color: #fff; + border: none; + border-radius: 0.25rem; + cursor: pointer; + } + + button[type="submit"]:hover { + background-color: #0063ad; + } + + #search-results { + margin-bottom: 2rem; + } + + .result-item { + margin-bottom: 1rem; + } + + .result-title { + font-size: 1.5rem; + margin-top: 0; + } + + .result-link { + display: block; + font-size: 1.2rem; + margin-bottom: 0.5rem; + color: #0074d9; + } + + .result-link:hover { + text-decoration: underline; + } + + .result-snippet { + margin-top: 0; + } + + .spinner { + display: flex; + justify-content: center; + align-items: center; + font-size: 2rem; + height: 10rem; + } + + /* Dark theme */ + .header-container { + display: flex; + justify-content: space-between; + align-items: center; + } + + #theme-toggler { + border: none; + background: transparent; + cursor: pointer; + background: #e2e2e2; + padding: 10px 20px; + border-radius: 100px; + } + + .dark-theme { + background-color: #282c34; + color: #fff; + } + + .dark-theme #search-input { + background-color: #454545; + color: #fff; + border-color: #fff; + } + + .dark-theme #search-input:focus { + border-color: #0074d9; + } + + .dark-theme button[type="submit"] { + background-color: #0074d9; + } + + .dark-theme .result-link, + .dark-theme .result-link:hover { + color: #90caf9; + }body + { + background-image: url(bg.jpg); + }* { + box-sizing: border-box; + } + + body { + font-family: Arial, sans-serif; + margin: 0; + padding: 0; + } + + .container { + max-width: 800px; + margin: 0 auto; + padding: 2rem; + } + + h1 { + font-size: 3rem; + margin-bottom: 2rem; + } + + #search-form { + display: flex; + justify-content: center; + align-items: center; + margin-bottom: 2rem; + } + + #search-input { + font-size: 1.2rem; + padding: 0.5rem 1rem; + margin-right: 1rem; + border: 2px solid #ccc; + border-radius: 0.25rem; + flex-grow: 1; + } + + #search-input:focus { + outline: none; + border-color: #0074d9; + } + + button[type="submit"] { + font-size: 1.2rem; + padding: 0.5rem 1rem; + background-color: #0074d9; + color: #fff; + border: none; + border-radius: 0.25rem; + cursor: pointer; + } + + button[type="submit"]:hover { + background-color: #0063ad; + } + + #search-results { + margin-bottom: 2rem; + } + + .result-item { + margin-bottom: 1rem; + } + + .result-title { + font-size: 1.5rem; + margin-top: 0; + } + + .result-link { + display: block; + font-size: 1.2rem; + margin-bottom: 0.5rem; + color: #0074d9; + } + + .result-link:hover { + text-decoration: underline; + } + + .result-snippet { + margin-top: 0; + } + + .spinner { + display: flex; + justify-content: center; + align-items: center; + font-size: 2rem; + height: 10rem; + } + + /* Dark theme */ + .header-container { + display: flex; + justify-content: space-between; + align-items: center; + } + + #theme-toggler { + border: none; + background: transparent; + cursor: pointer; + background: #e2e2e2; + padding: 10px 20px; + border-radius: 100px; + } + + .dark-theme { + background-color: #282c34; + color: #fff; + } + + .dark-theme #search-input { + background-color: #454545; + color: #fff; + border-color: #fff; + } + + .dark-theme #search-input:focus { + border-color: #0074d9; + } + + .dark-theme button[type="submit"] { + background-color: #0074d9; + } + + .dark-theme .result-link, + .dark-theme .result-link:hover { + color: #90caf9; + } \ No newline at end of file diff --git a/Vanilla-JS-Projects/README.md b/Vanilla-JS-Projects/README.md index 8219f400..c1413b72 100644 --- a/Vanilla-JS-Projects/README.md +++ b/Vanilla-JS-Projects/README.md @@ -220,9 +220,9 @@ #### :zap: Row 18 -| | | | +| | | | |:--:|:--:|:--:| -| [Zomato Clone](./Intermediate/Zomato-Clone) | | | +| [Zomato Clone](./Intermediate/Zomato-Clone) | [Wikipedia Clone](./Intermediate/Wikipedia-Clone) | | ---