From 7a07a8564aed4bbef2fa18b445a98215347f7208 Mon Sep 17 00:00:00 2001 From: Rishabh Varshney Date: Fri, 2 Oct 2020 19:16:44 +0530 Subject: [PATCH 1/4] added scraper for google --- .vscode/settings.json | 3 ++ joble/__pycache__/__init__.cpython-38.pyc | Bin 0 -> 135 bytes joble/__pycache__/settings.cpython-38.pyc | Bin 0 -> 239 bytes joble/scraper/google.py | 37 ++++++++++++++++++ .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 143 bytes .../spiders/__pycache__/google.cpython-38.pyc | Bin 0 -> 1445 bytes .../__pycache__/monsterindia.cpython-38.pyc | Bin 0 -> 1955 bytes .../spiders/__pycache__/naukri.cpython-38.pyc | Bin 0 -> 3371 bytes requirements.txt | 2 + 9 files changed, 42 insertions(+) create mode 100644 .vscode/settings.json create mode 100644 joble/__pycache__/__init__.cpython-38.pyc create mode 100644 joble/__pycache__/settings.cpython-38.pyc create mode 100644 joble/scraper/google.py create mode 100644 joble/spiders/__pycache__/__init__.cpython-38.pyc create mode 100644 joble/spiders/__pycache__/google.cpython-38.pyc create mode 100644 joble/spiders/__pycache__/monsterindia.cpython-38.pyc create mode 100644 joble/spiders/__pycache__/naukri.cpython-38.pyc diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..75f38d2 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "python.pythonPath": "D:\\open-source\\joble\\jobleenv\\Scripts\\python.exe" +} \ No newline at end of file diff --git a/joble/__pycache__/__init__.cpython-38.pyc b/joble/__pycache__/__init__.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..df8a1026f4c93c3a2fa994d979f69ca754cdcf60 GIT binary patch literal 135 zcmWIL<>g`kg4`>G@gVv!h(HF6K#l_t7qb9~6oz01O-8?!3`HPe1o2D9#VRJhAT>|7 wIKQ+gIW;CLKPe|Q#tTeB*zxh1d6^~g@p=W7w>WHa^HWN5Qtd#ddg`kg4`>G@sT_X439w^WWWgIH~?|67?4O|h+;@#OlOQ@Oks>-N@0p(PGJsa z&}4~X&B{;8Nv+}qQ+mY(nJKA7#UXy0EVnqE{6pgX9DQAH@dXEXy0`|#`}(_t`nU$) z67X{kM-jTk7vv9A9UKx767TQi8o838h!tolnE0jRVil8Lkea7koL^d$oEihRDaH$A pEtFlHT2hjkmtL$_PmcW literal 0 HcmV?d00001 diff --git a/joble/scraper/google.py b/joble/scraper/google.py new file mode 100644 index 0000000..72f167f --- /dev/null +++ b/joble/scraper/google.py @@ -0,0 +1,37 @@ +import argparse +import requests +from bs4 import BeautifulSoup + +# function to remove random characters from the end of the url if exists +def fix_url(url_list): + if len(url_list[-1]) > 8: + url_list[-1] = url_list[-1].split('&')[0] + return url_list + +# return the link for carrers page from google +def get_carrer_page(name): + query = name.replace(' ', '+') + URL = f"https://google.com/search?q={query}+carrers" + + resp = requests.get(URL) + if '.' in name: + name = name.split('.')[0] + + if resp.status_code == 200: + soup = BeautifulSoup(resp.content, "html.parser") + + for a in soup.find_all('a', href=True): + if 'url' in a['href']: + # removes '/url?q=' from the start of the url + url_list = a['href'][7:].split('/') + if name in url_list[2]: + return '/'.join(fix_url(url_list)) + break + +if __name__ == '__main__': + parser = argparse.ArgumentParser() + parser.add_argument("name", help="name of the company", type=str) + args = parser.parse_args() + + url = get_carrer_page(args.name) + print(url) diff --git a/joble/spiders/__pycache__/__init__.cpython-38.pyc b/joble/spiders/__pycache__/__init__.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..176d530c2457ba21431a84243d05eaca2a015875 GIT binary patch literal 143 zcmWIL<>g`kg4`>G@k@d9V-N=!FakLaKwQiMBvKfH88jLFRx%WUgb~Cq6BnzP{DRax z-QxVxqU6+=to)>$)EF-?31Jr(WTvDR701NKXXa&=#K-FuRNmsS$<0qG%}KQbnf4io F833)bB3l3e literal 0 HcmV?d00001 diff --git a/joble/spiders/__pycache__/google.cpython-38.pyc b/joble/spiders/__pycache__/google.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b04436700812e039f97b265a0303d5fbe1f9950f GIT binary patch literal 1445 zcmZ`&OKTiQ5bo;fnVns)B;z<%ObGarki~cffn0>+1ROBrAh1my41!^Hy0x11ywp9* zqG9$VodO|$K|1CyHNN?zzo0{usvetYO)^7QzpA_I`|7Kox3)$Mzu#Xr@mr6vcQm>E z37q_Z&FrI*OhV2g>Uj;;oT`sYmgiY@#zFA5~QW|QCw&$ELG zx5K5*Rhd>&*#Qn0RaQ>G4qmB~r7}%QZnr-Sst@294it+(vWQEFJjv$}3F)Er<+k)? za1Qv`K!)cm8pxp>VIRsna*X{@Zeb8RcKo8M=DB)ZXHw}X=x6O{?pCL1RkXXuO;elw zy}i|HHT`#e&kl<$)s?A^nv~xPkjB)WV>85M2OW!%5_}I15Sb{GLLqKpRDPrf=KR7;(z!$mdA)!|Rh_G9DXG>7lws84Me$61**aXhB?Tp-YX+T-X^ zO+R>~fG!_CqLG>l^C=D_tTE69y8y{AVa*%f@iUO#8==3J;==3PY8iH1`VZNfBP_nl zWUx!X1_$k<|KZ7~M5o8!pL}->kFF?!Yj~`wZwHUlL@T8y!m(g|Q|DP@Jye4gP6nP1 z(b0yp#Hbjx;rtv|y&-z-V6Gb4+`)+<78nQ^)6YX_?{84?-gScs;*3DUFk zWNT=kgEIiu@P$W7TnGt&@Lw3|8!>YduZIuYFirA&mZWbczWxL+uzszxvax|lbyA;d zx*gXNZ7}Z+lD>~i9|PGoO`@Av_rf=yp^FL7FbMH)Ki@#I>ARsoACHipTxzLGI&f)) zOH3`LPGT}2u(gLN_M|xDf8JY*j#3N@afyI`W#6)w>=pa12kIYO!`{{3H#ax!_Q|qp zlzH-{nI1PqZux44m>n3R-wKki^;bG;lohi|p5k_&L#<3*l}1IPPUgynM;YcBE5X9i zM?`2s{slHeCmGyD^kZo6ZQyroVmWDIXfmQYpxffuj^ene2QPCe)DLMyf!qp?NY$h{O%zk*nr$>8>MekPkGyag`fhJB t(7U)}$9QX=&899|O-j>LbiE>izCPW7|9ZuSPkSKG=%ABAh-8ete*nzGQ-%Nl literal 0 HcmV?d00001 diff --git a/joble/spiders/__pycache__/monsterindia.cpython-38.pyc b/joble/spiders/__pycache__/monsterindia.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..26968eae12ce64e295522987c2feae8eb105723d GIT binary patch literal 1955 zcmZuyOK;pZ5GE<=v77ayM%u>d%ZDDiKx+d53KWKsrf8ZXLA!^fX;Q(3Ad8G6TUxD2 zZ5=PPy*Q@={RcVN$NrNZik^DnwWs`rAVB(!c3n7uDR4OCkkZV@Z$|eQ7P<_r{O2I~ zJ7nx%nw)PElN;!E6GAb?3l`HT3SNp>lwRy{ntKH+Wh^=SmMN+Hr%d^p?fJ)E94LN| z^@Ha)&jx+rI%8AlVOA;aLa2LHKJ0TB-qi_3xAJ{8w6!+*Q03{pQLeO!d-Jv1 zv^H5T&+S;xs`AB^$8|m0+}L>2u<`sdTpDBq(ODy1pnr{S--l4VVF_ylByUI;jR)x| z27koB1lZG;&bxp2JLhNBcv!n|UmqP-M!Be{vb4^tAvQ>>i${j;%5+Fvg7|}(1q?5~ zxVgDqjr8y{Ta8VoxA&@@LT}$``!gh4ObJfsjjEBM+v|IV0CCYyYIQ;CPH(zbZd#3F47 zcXdtn6-?|q5R6M9xTNQ05OjGLv*6X_>IGoVk7o42vv!7Mh6TG0(XbPC%BG^`4M@KV zA}O)T-X&Uze2(q!-j9rO5ctV~c^jt;xq@J2sq555Sy~i3X||8Bu9B5V>O%12W?HBJ z$7-}4f%a22 z8Xxvs({QrV$P=##Pk9qG;TC(q4z?w$<$l+ka5jxNn=IG9T57^3Iz}0Lz&;0z)9Bae zA^Qn?AEMU*Xd5 zko8_m*1L0*om2on_F=fKoL}d4p<9l|o$&}Jt-eAfu;a2!%~2fK{k$k_dlr)skwIa%u`IB)c*NHch$e@P4HfpV_%&67-zsH!-B zggRIoBAub!?{`|-n-6K>V~99}d*r7JjLxVeh4cY!;0Y{=0=@FWI!UWe=qGRFhxq_6 z`2^jrK~QPw;fZ*cFZ0XDk%$Yv0(}j$h+mi`cjhb=27f2~Ke|-2h6q1NTsKL|N{tKB zdr5LIPK&uk(&(1J`|41uL{(*)53TFkIyG&=TC;@L&C=l`(#X?u-naB8rW-14^y!xO z5u8SS6x|?NjH1@o4_#n0lcJjTPzj2BXT7CKe zvzB(fOHmbHedXkXbfk(C2mTUHedUxtfGSE=N%*~zu{xQ;XZ&d1i4(SljmJPV8{@z-qZ)V64?i zNxu4XP`QJoIuOE&8Mk7aGt9C#S?qEL(&Ka7=fN`;`#j`R $5pN(5d6Q2gpW-uo z7J0-k@Yj$xxQjhs*Ue7S-;vpaUdDxt{kk@c3e&ojmb=4CTUFIlx7zLf{r#oW_Rbd< zah{ZJdh(;Pjr0p7bqQi*kF2gWVvua)K-%2GuB_8?w3n9sqSC>R80?plYd6iRLCe*y z68VPoFk8}k(uerFB|~J#*H>>nE__?`N$_05+~Mx~5KOn!8VCX%_(Ur^v|jLU2r10tug&E1m{)#MHC z9pb8W-;rHJ+^_3Lj0a?#7mcw^#v#M-nN4p@qoJ6cP*x*n)%t8^?2hb1cjO*1X6xjJp8sIKI?}fvCnv)T#0vsX4 z+@?0;L{Uf1VHf#2#PQm1%3+r0N&DwZ%kx+Ncv=Vv>RZ*lR7dilJR}<_!ONIg7U#{y+ zU?PR;l?7(`Qlwy;bHI=b*pcv{h|`E4LiUz1zx!q6`ON)#IClmB<_KrZPdFuxGUk7X z!iXJ$E{+%+dUb5Wp+Oo)jKFYc0}ucMTAWu}+{)R8)5Fl-2#^>}Ao1KGlkY{w=s{=r zPP@&sCx5z==7~}(SMpu?2k2>jAL7bq)b%nYL%$LS)z#L}yR!xJN}{%wQ|p+x6{^g$ zVy9&r?aLohx39f}UQ%so2fEars$|xaKSGcEG0g~}>TaH?YT|+N9cpFU+N-iE7d0eF z52s!yTd2N^q{!zjHpAxdL8&bIYWVgUwVpHI83mKSzf|yFQ5iAtF#PF|kz%=X8D0jZ zG7jG49%>G$@eRwcDdYZRjK_mR8^Oo}zdB>zDBV9Tn!4$=I zdKMU`{TB*k^$CgyRraI|98tLfzCLG!t3!u-M@;?`2m{jK;s-#P%YC5E%dD|K^3e9? zI2Z+o?veG_9*5(p(bUKvg&$gbYuE)Syli1cXylZU5lO7vIAZ8&nzrdl+YHb<`yw1i zSR?wIJ#LH|h8Es8NW9R|-bRvx-@H#u=2o&VwEGY;j&Su=@N$-`xY^5-RBV+w(RHoy z>$tY|FycJA3gD#F29PDeUesMBiF z>$HHfyImc1ySpXt=TvTXyLsbWVa$oQ+FL#ryP&!goBF%F~N&0U@QrI++ z%rLGbPcg3c%5@Ag(^E*&(}kWZiXIVk3!L4KyztGi5r*N6=|_Aw%>NS%(SH3 Date: Fri, 2 Oct 2020 19:17:46 +0530 Subject: [PATCH 2/4] added scraper for google --- .vscode/settings.json | 3 --- joble/__pycache__/__init__.cpython-38.pyc | Bin 135 -> 0 bytes joble/__pycache__/settings.cpython-38.pyc | Bin 239 -> 0 bytes 3 files changed, 3 deletions(-) delete mode 100644 .vscode/settings.json delete mode 100644 joble/__pycache__/__init__.cpython-38.pyc delete mode 100644 joble/__pycache__/settings.cpython-38.pyc diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index 75f38d2..0000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "python.pythonPath": "D:\\open-source\\joble\\jobleenv\\Scripts\\python.exe" -} \ No newline at end of file diff --git a/joble/__pycache__/__init__.cpython-38.pyc b/joble/__pycache__/__init__.cpython-38.pyc deleted file mode 100644 index df8a1026f4c93c3a2fa994d979f69ca754cdcf60..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 135 zcmWIL<>g`kg4`>G@gVv!h(HF6K#l_t7qb9~6oz01O-8?!3`HPe1o2D9#VRJhAT>|7 wIKQ+gIW;CLKPe|Q#tTeB*zxh1d6^~g@p=W7w>WHa^HWN5Qtd#ddg`kg4`>G@sT_X439w^WWWgIH~?|67?4O|h+;@#OlOQ@Oks>-N@0p(PGJsa z&}4~X&B{;8Nv+}qQ+mY(nJKA7#UXy0EVnqE{6pgX9DQAH@dXEXy0`|#`}(_t`nU$) z67X{kM-jTk7vv9A9UKx767TQi8o838h!tolnE0jRVil8Lkea7koL^d$oEihRDaH$A pEtFlHT2hjkmtL$_PmcW From 31c5992be05f9b5e24af48725cd41182836fc67c Mon Sep 17 00:00:00 2001 From: Rishabh Varshney Date: Sat, 3 Oct 2020 15:05:48 +0530 Subject: [PATCH 3/4] added pycache to gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ba0430d --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +__pycache__/ \ No newline at end of file From 1be5f51fbcd708af22b208665ba37b707751a6e2 Mon Sep 17 00:00:00 2001 From: Rishabh Varshney Date: Sat, 3 Oct 2020 15:13:41 +0530 Subject: [PATCH 4/4] added pycache to gitignore --- .gitignore | 3 ++- .../spiders/__pycache__/__init__.cpython-38.pyc | Bin 143 -> 0 bytes joble/spiders/__pycache__/google.cpython-38.pyc | Bin 1445 -> 0 bytes .../__pycache__/monsterindia.cpython-38.pyc | Bin 1955 -> 0 bytes joble/spiders/__pycache__/naukri.cpython-38.pyc | Bin 3371 -> 0 bytes 5 files changed, 2 insertions(+), 1 deletion(-) delete mode 100644 joble/spiders/__pycache__/__init__.cpython-38.pyc delete mode 100644 joble/spiders/__pycache__/google.cpython-38.pyc delete mode 100644 joble/spiders/__pycache__/monsterindia.cpython-38.pyc delete mode 100644 joble/spiders/__pycache__/naukri.cpython-38.pyc diff --git a/.gitignore b/.gitignore index ba0430d..3040d64 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ -__pycache__/ \ No newline at end of file +__pycache__/ +.vscode/ \ No newline at end of file diff --git a/joble/spiders/__pycache__/__init__.cpython-38.pyc b/joble/spiders/__pycache__/__init__.cpython-38.pyc deleted file mode 100644 index 176d530c2457ba21431a84243d05eaca2a015875..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 143 zcmWIL<>g`kg4`>G@k@d9V-N=!FakLaKwQiMBvKfH88jLFRx%WUgb~Cq6BnzP{DRax z-QxVxqU6+=to)>$)EF-?31Jr(WTvDR701NKXXa&=#K-FuRNmsS$<0qG%}KQbnf4io F833)bB3l3e diff --git a/joble/spiders/__pycache__/google.cpython-38.pyc b/joble/spiders/__pycache__/google.cpython-38.pyc deleted file mode 100644 index b04436700812e039f97b265a0303d5fbe1f9950f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1445 zcmZ`&OKTiQ5bo;fnVns)B;z<%ObGarki~cffn0>+1ROBrAh1my41!^Hy0x11ywp9* zqG9$VodO|$K|1CyHNN?zzo0{usvetYO)^7QzpA_I`|7Kox3)$Mzu#Xr@mr6vcQm>E z37q_Z&FrI*OhV2g>Uj;;oT`sYmgiY@#zFA5~QW|QCw&$ELG zx5K5*Rhd>&*#Qn0RaQ>G4qmB~r7}%QZnr-Sst@294it+(vWQEFJjv$}3F)Er<+k)? za1Qv`K!)cm8pxp>VIRsna*X{@Zeb8RcKo8M=DB)ZXHw}X=x6O{?pCL1RkXXuO;elw zy}i|HHT`#e&kl<$)s?A^nv~xPkjB)WV>85M2OW!%5_}I15Sb{GLLqKpRDPrf=KR7;(z!$mdA)!|Rh_G9DXG>7lws84Me$61**aXhB?Tp-YX+T-X^ zO+R>~fG!_CqLG>l^C=D_tTE69y8y{AVa*%f@iUO#8==3J;==3PY8iH1`VZNfBP_nl zWUx!X1_$k<|KZ7~M5o8!pL}->kFF?!Yj~`wZwHUlL@T8y!m(g|Q|DP@Jye4gP6nP1 z(b0yp#Hbjx;rtv|y&-z-V6Gb4+`)+<78nQ^)6YX_?{84?-gScs;*3DUFk zWNT=kgEIiu@P$W7TnGt&@Lw3|8!>YduZIuYFirA&mZWbczWxL+uzszxvax|lbyA;d zx*gXNZ7}Z+lD>~i9|PGoO`@Av_rf=yp^FL7FbMH)Ki@#I>ARsoACHipTxzLGI&f)) zOH3`LPGT}2u(gLN_M|xDf8JY*j#3N@afyI`W#6)w>=pa12kIYO!`{{3H#ax!_Q|qp zlzH-{nI1PqZux44m>n3R-wKki^;bG;lohi|p5k_&L#<3*l}1IPPUgynM;YcBE5X9i zM?`2s{slHeCmGyD^kZo6ZQyroVmWDIXfmQYpxffuj^ene2QPCe)DLMyf!qp?NY$h{O%zk*nr$>8>MekPkGyag`fhJB t(7U)}$9QX=&899|O-j>LbiE>izCPW7|9ZuSPkSKG=%ABAh-8ete*nzGQ-%Nl diff --git a/joble/spiders/__pycache__/monsterindia.cpython-38.pyc b/joble/spiders/__pycache__/monsterindia.cpython-38.pyc deleted file mode 100644 index 26968eae12ce64e295522987c2feae8eb105723d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1955 zcmZuyOK;pZ5GE<=v77ayM%u>d%ZDDiKx+d53KWKsrf8ZXLA!^fX;Q(3Ad8G6TUxD2 zZ5=PPy*Q@={RcVN$NrNZik^DnwWs`rAVB(!c3n7uDR4OCkkZV@Z$|eQ7P<_r{O2I~ zJ7nx%nw)PElN;!E6GAb?3l`HT3SNp>lwRy{ntKH+Wh^=SmMN+Hr%d^p?fJ)E94LN| z^@Ha)&jx+rI%8AlVOA;aLa2LHKJ0TB-qi_3xAJ{8w6!+*Q03{pQLeO!d-Jv1 zv^H5T&+S;xs`AB^$8|m0+}L>2u<`sdTpDBq(ODy1pnr{S--l4VVF_ylByUI;jR)x| z27koB1lZG;&bxp2JLhNBcv!n|UmqP-M!Be{vb4^tAvQ>>i${j;%5+Fvg7|}(1q?5~ zxVgDqjr8y{Ta8VoxA&@@LT}$``!gh4ObJfsjjEBM+v|IV0CCYyYIQ;CPH(zbZd#3F47 zcXdtn6-?|q5R6M9xTNQ05OjGLv*6X_>IGoVk7o42vv!7Mh6TG0(XbPC%BG^`4M@KV zA}O)T-X&Uze2(q!-j9rO5ctV~c^jt;xq@J2sq555Sy~i3X||8Bu9B5V>O%12W?HBJ z$7-}4f%a22 z8Xxvs({QrV$P=##Pk9qG;TC(q4z?w$<$l+ka5jxNn=IG9T57^3Iz}0Lz&;0z)9Bae zA^Qn?AEMU*Xd5 zko8_m*1L0*om2on_F=fKoL}d4p<9l|o$&}Jt-eAfu;a2!%~2fK{k$k_dlr)skwIa%u`IB)c*NHch$e@P4HfpV_%&67-zsH!-B zggRIoBAub!?{`|-n-6K>V~99}d*r7JjLxVeh4cY!;0Y{=0=@FWI!UWe=qGRFhxq_6 z`2^jrK~QPw;fZ*cFZ0XDk%$Yv0(}j$h+mi`cjhb=27f2~Ke|-2h6q1NTsKL|N{tKB zdr5LIPK&uk(&(1J`|41uL{(*)53TFkIyG&=TC;@L&C=l`(#X?u-naB8rW-14^y!xO z5u8SS6x|?NjH1@o4_#n0lcJjTPzj2BXT7CKe zvzB(fOHmbHedXkXbfk(C2mTUHedUxtfGSE=N%*~zu{xQ;XZ&d1i4(SljmJPV8{@z-qZ)V64?i zNxu4XP`QJoIuOE&8Mk7aGt9C#S?qEL(&Ka7=fN`;`#j`R $5pN(5d6Q2gpW-uo z7J0-k@Yj$xxQjhs*Ue7S-;vpaUdDxt{kk@c3e&ojmb=4CTUFIlx7zLf{r#oW_Rbd< zah{ZJdh(;Pjr0p7bqQi*kF2gWVvua)K-%2GuB_8?w3n9sqSC>R80?plYd6iRLCe*y z68VPoFk8}k(uerFB|~J#*H>>nE__?`N$_05+~Mx~5KOn!8VCX%_(Ur^v|jLU2r10tug&E1m{)#MHC z9pb8W-;rHJ+^_3Lj0a?#7mcw^#v#M-nN4p@qoJ6cP*x*n)%t8^?2hb1cjO*1X6xjJp8sIKI?}fvCnv)T#0vsX4 z+@?0;L{Uf1VHf#2#PQm1%3+r0N&DwZ%kx+Ncv=Vv>RZ*lR7dilJR}<_!ONIg7U#{y+ zU?PR;l?7(`Qlwy;bHI=b*pcv{h|`E4LiUz1zx!q6`ON)#IClmB<_KrZPdFuxGUk7X z!iXJ$E{+%+dUb5Wp+Oo)jKFYc0}ucMTAWu}+{)R8)5Fl-2#^>}Ao1KGlkY{w=s{=r zPP@&sCx5z==7~}(SMpu?2k2>jAL7bq)b%nYL%$LS)z#L}yR!xJN}{%wQ|p+x6{^g$ zVy9&r?aLohx39f}UQ%so2fEars$|xaKSGcEG0g~}>TaH?YT|+N9cpFU+N-iE7d0eF z52s!yTd2N^q{!zjHpAxdL8&bIYWVgUwVpHI83mKSzf|yFQ5iAtF#PF|kz%=X8D0jZ zG7jG49%>G$@eRwcDdYZRjK_mR8^Oo}zdB>zDBV9Tn!4$=I zdKMU`{TB*k^$CgyRraI|98tLfzCLG!t3!u-M@;?`2m{jK;s-#P%YC5E%dD|K^3e9? zI2Z+o?veG_9*5(p(bUKvg&$gbYuE)Syli1cXylZU5lO7vIAZ8&nzrdl+YHb<`yw1i zSR?wIJ#LH|h8Es8NW9R|-bRvx-@H#u=2o&VwEGY;j&Su=@N$-`xY^5-RBV+w(RHoy z>$tY|FycJA3gD#F29PDeUesMBiF z>$HHfyImc1ySpXt=TvTXyLsbWVa$oQ+FL#ryP&!goBF%F~N&0U@QrI++ z%rLGbPcg3c%5@Ag(^E*&(}kWZiXIVk3!L4KyztGi5r*N6=|_Aw%>NS%(SH3